| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Религиозные войны > C++ vs C# |
| Автор: Mazanakisicq 13.9.2011, 15:35 |
| Привет всем! Все метаюсь перед выбором изучения языка программирования. Просто хочется не тупо выучить а выучить что бы затем развиваться как то а затем что бы была основа для изучения других языков. C++ начал учить узнал самые банальные основы понравилось очень. C# тоже не хуже. Не знаю за что браться. Прозьба не холиварить а расписать свое мнение по существу. Спасибо всем! |
| Автор: newbee 13.9.2011, 15:42 |
| За C# лежит .NET. Это с одной стороны и его плюс, и минус. Это понимание придет тебе позже. А для начала лучше учи Scheme. |
| Автор: Mazanakisicq 13.9.2011, 16:09 | ||
Спасибо за ответ, но я имею небольшой опыт по программированию на PHP а Pascal вообще наизусть знаю. Так что мне нужен обоснованный ответ на вопрос "Что выбрать C++ или C#" |
| Автор: Mazanakisicq 13.9.2011, 16:22 | ||
Ну я хочу учить серьезный прикладной язык. На котором смогу писать кросс-платформенные приложения. И который послужит основой для изучения других языков и технологий. От Паскаля отказался по причине его старости и просто бессмысленности его дальнейшего изучения и т.д А PHP просто изучал и знаю достаточно что бы создать сайт. А потом смогу вернуться. Если буду знать какой нибудь огромный язык. |
| Автор: newbee 13.9.2011, 16:23 |
| Тогда выбирай С++. Кроссплатформенность C# под очень большим вопросом. |
| Автор: Mazanakisicq 13.9.2011, 16:25 | ||
Спасибо за совет. Но хочу послушать других пользователей))) |
| Автор: newbee 13.9.2011, 16:26 |
| Пожалуйста. Я не против ;) |
| Автор: voral 13.9.2011, 16:39 | ||
C++ Простой пример из личного опыта: есть у меня несколько проектов разной сложности. Без всяких исправлений компилируются для Linux, MacOS, Windows. Они с легкими изменениями, связанными с размерами экрана, так же компилируются для Symbian. (Правда это с использованием фреймворка Qt). К тому же если придётся заниматься системным программирование - не знаю как это на шарпе получится ЗЫ Сегодня 0x100 день в году. С днем программиста! |
| Автор: 502 13.9.2011, 16:47 | ||
ну раз вы может делать такие выводы, то и советы вам не нужны Паскаль появился в: 1970 C++ появился в: 1983 C# появился в: 2001 |
| Автор: Mazanakisicq 13.9.2011, 16:50 | ||||
Возможно я не так выразился. Я имел в виду то что на паскале не чего не зделаешь путного. Да и не кому он не нужен для работы. А C++ будет жить вечно. C# на мой взгляд большое будущее. |
| Автор: Фантом 13.9.2011, 16:57 | ||||
| Ну что же, поехали по пунктам: Тогда годятся оба. Все, о C# можно забыть. Это язык одной платформы (и то не всей - без .NET не обойтись, так что на старых версиях Windows тоже будут проблемы). Проекты портирования .NET под что-то еще (Mono, DotGNU и т.п.) развиваются с большими проблемами (как техническими, так и юридическими), и в целом очень популярно мнение, что овчинка не стоит выделки. C++ годится.
Вообще говоря, как базовые языки для обучения плохи оба. Чрезмерно сложный синтаксис, громадное количество возможностей, не лучшим образом состыкованных друг с другом... в общем, не стоит. C# немного лучше, но только по сравнению с C++ (где в этом отношении совсем "ужас-ужас").
Современные диалекты особой "старостью" не отличаются. При этом Паскаль как учебная база лучше и C+, и C#, и он более переносим, чем C#. К тому же у него тоже есть потомки, по многим параметрам весьма неплохие. Так что насчет "бессмысленности" - это еще очень большой вопрос. |
| Автор: 502 13.9.2011, 16:58 | ||
на Pascal(ну почти, Delphi) написан skype, можно еще нагуглить C++http://forum.vingrad.ru/forum/topic-270712.html у C# возможно и есть будущее, но http://forum.vingrad.ru/forum/topic-324743.html Добавлено через 6 минут и 12 секунд http://forum.vingrad.ru/forum/topic-283805/unread-1.html |
| Автор: Mazanakisicq 13.9.2011, 17:04 | ||||
Ну с какой стороны посмотреть. Для Win на Delphi для Mac на Objective-C для Linux на C++/Qt но мне кажется что если бы они отказались от делфи и зделали его на C++ для win было бы еще лучше. |
| Автор: 502 13.9.2011, 17:06 | ||
почему, какие аргументы? |
| Автор: Mazanakisicq 13.9.2011, 17:08 | ||||||||
Последний пост полноя фигня. Сравнивать C++ с Делфи(по хорошему это даже не язык (Turbo Pascal)) это просто тупизм это тоже самое что сравнить запорожец(Делфи) с бугати(C++)))))))))))) Добавлено через 2 минуты и 25 секунд
Думаю что ты не будешь отрецать того что C++ быстрей работает и мне кажется что можно было бы избедать написания для каждой операционнки своей версии Skype на разных языках. |
| Автор: kemiisto 13.9.2011, 17:14 |
| Mazanakisicq, ты уроки все сделал? Так Лиспы уже были. В тред врывается Оберон и Смолток. |
| Автор: 502 13.9.2011, 17:16 | ||||
тесты встудию
если ты думаешь что написал и оно сразу запустилось на всех платформах, то ты сильно заблуждаешься, даже с java есть проблемы |
| Автор: Severyanin 13.9.2011, 17:16 |
| Mazanakisicq, чаще всего скорость работы языка не является узким местом в производительности системы. Чаще смотрят на скорость разработки на нем. Вспомни проекты на пхп. Чаще всего, узким местом в большом проекте является не он, а неоптимизированная работа с БД. И для каждой области есть свои узкие места |
| Автор: 502 13.9.2011, 17:17 |
а это я в рамочку поставлю и на стену |
| Автор: Mazanakisicq 13.9.2011, 17:19 | ||||||
Тю, java то там нужно тоже ставить JRE что бы java работала да и на нем реальные крупные проекты я имею ввиду не для малого среднего бизнеса а например такие компашки как Microsoft, Apple и т.д. не пишут. А C++ а точнее C он внутри каждой системы и не требует ни каких надстроек. |
| Автор: newbee 13.9.2011, 17:19 | ||
Таки дельфи - это язык. Когда у людей нет аргументов, они начинают проводить идиотские, ничем не подкрепленые аналогии с машинами. Но для меня тоже остается странным такой выбор языков. Это ж поддерживать и развивать программу нужо сразу на трех языках. Возможно вначале жизненного пути скайпа у qt были проблемы с нативным отображением на разных системах, и было принято решение использовать по одному нативному средству на каждую систему. |
| Автор: Mazanakisicq 13.9.2011, 17:23 | ||
Поставь, поставь так как это правда. Просто не будут такие крупные проекты как например Photoshop переписывать на другие языки. Да и зачем нет достойного языка для таких проектов кроме C++/C. А сейчас еще пишутся проекты на нем так что посмотрим. Даже если работу искать для C++ много работы как в малых так и в больших компаниях. А Java только маленькие компашки и средние бирут так как им требуется какие нибудь проекты осуществить. |
| Автор: borisbn 13.9.2011, 17:33 |
Выучи сначала русский. |
| Автор: Mazanakisicq 13.9.2011, 17:37 | ||
Спасибо за совет)))) |
| Автор: borisbn 13.9.2011, 17:42 |
А по теме:![]() Это, конечно, ни о чём не говорит, но задуматься заставляет |
| Автор: 502 13.9.2011, 17:47 | ||
а что для C# .NET(CLR) не нужен? я думаю ты свой выбор сделал это разные ЯП Добавлено @ 17:48
Google, Oracle достаточно крупные? |
| Автор: Mazanakisicq 13.9.2011, 18:08 | ||||
C++ и C это разные языки но код на C работает и в C++ программе. А насчет Google ок согласен а вот Oracle это и понятно они ж его разрабатывают. |
| Автор: borisbn 13.9.2011, 18:16 |
код на Си: http://liveworkspace.org/code/119a19c50c057b2ccb0af5a1f911a477 тот же код на Си++: http://liveworkspace.org/code/b0551a84f5af8089e83766e94703e312 |
| Автор: spyswamp 13.9.2011, 18:38 |
| Да С/C++ всегда будет рулить, как минимум, для embedded systems, а так же серверных технологий и всего, что требует высокой производительности и плотной работы с системой. Уж явно эту нишу не захватят языки, которые в анальном рабстве у виртуальных машин и мегатонных фреймворков. И новый плюсовый стандарт нам как бы намекает, что жить это все будет еще очень долго. Поэтому при выборе ЯП в первую очередь надо руководствоваться сферой, в которой будешь работать. |
| Автор: LSD 13.9.2011, 19:20 | ||
Как человек который имеет некоторое отношение, к разработке высоко нагруженной системы, я вам имею сказать следующее: для высоко нагруженных систем, давно важна scalability, а не производительность на такт процессора. Да и можно подумать, что Boost маленький фреймовк |
| Автор: A5uKa 14.9.2011, 07:57 |
| C# вообще учить не надо. |
| Автор: spyswamp 14.9.2011, 08:40 |
| LSD, а что, большой? P.S. Я пока не понял, вы с пеной у рта что отстаиваете? Java или C#? Добавлено через 2 минуты и 24 секунды Да и boost, кстати, это не фреймворк. ;) |
| Автор: RastaDja 14.9.2011, 09:28 |
| Что учить с начала? Ели выбирать из этих двух (С++, С#), учитывая то, что ты хочешь писать кросс-платформенные приложения, - однозначно С++. Если в плане понимания работы программы (выделение памяти, освобождение ресурсов ...) - тоже С++. Из своего опыта скажу, что я вначале программировал на С++, Довольно таки недавно перешел на С#. Сравнение по скорости разработки на С# и С++ очень большие. Программы на С# пишутся быстрее (хотя это заслуга скорее всего .NET), особенно с хорошим пользовательским интерфейсом. Относительно того, что программирование на C# привязывает программиста к одной платформе - это да, но чем это плохо? Если компания разрабатывает десктоп приложения для Windows, то тут никаких проблем. |
| Автор: k0rvin 14.9.2011, 11:46 | ||
а также Хаскелл! =) |
| Автор: LSD 14.9.2011, 11:56 |
Ну как можно назвать большим, фреймворк с сотней библиотек |
| Автор: kemiisto 14.9.2011, 12:15 |
Мы в курсе, что это помойная яма! |
| Автор: newbee 14.9.2011, 13:27 |
| Бусткодера на тебя нет! |
| Автор: spyswamp 14.9.2011, 23:48 |
| LSD, это не фреймворк, еще раз повторяюсь. kemiisto, вероятно, вы забыли дописать в своем сообщении лучшие альтернативы. |
| Автор: newbee 15.9.2011, 02:21 | ||
|
| Автор: LSD 15.9.2011, 09:36 |
Почему это? |
| Автор: alexSl 15.9.2011, 10:11 |
Boost provides free peer-reviewed portable C++ source http://www.boost.org/ |
| Автор: LSD 15.9.2011, 10:36 | ||
http://en.wikipedia.org/wiki/Software_framework
|
| Автор: spyswamp 15.9.2011, 10:44 | ||
LSD, ну вы бы хоть вдумались на секунду в то, что там написано. Разница между фреймворком и библиотекой в том, что модули пишутся для фреймворка
А библиотека включается в модуль. Сами же и подтвердили цитатой то, что, в связи с этим определением, boost не является фреймворком. |
| Автор: LSD 15.9.2011, 11:07 | ||||
Рекомендую обратить более пристальное внимание на свой уровень английского. В моей цитете ни слова про модуль нет.
1. Я на С++ не пишу. 2. Как возможность дописывать модули, к какому-то каркасу, влияет на определение фреймворка, я не понимаю. |
| Автор: alexSl 15.9.2011, 11:22 |
а чего тогда умничаеш? P.S. Вася - человек. Ты - человек. Ты Вася? |
| Автор: spyswamp 15.9.2011, 11:42 |
| alexSl, забей на него. У него и STL, видимо, тоже фреймворк. LSD, ![]() |
| Автор: LSD 15.9.2011, 11:49 |
По существу ответить нечего, решил нахамить? Определение фреймовка я привел, никто с определением спорить не стал. Начали мне рассказывать, про мой английский, предложили написать какой-то левый каркас. Все это вместо того, чтобы внятно объяснить или чем это определение плохо, или почему буст под него не попадает. |
| Автор: spyswamp 15.9.2011, 11:59 |
| LSD, http://en.wikipedia.org/wiki/Boost_C%2B%2B_Libraries почитай внимательно. Или, лучше, зайди на http://ru.wikipedia.org/wiki/Boost. С определением фреймворка никто спорить не стал, потому что ты его из вики скопировал, и оно правильное. Тебе всего лишь говорят, что boost - это не фреймворк. Потому что он не попадает под определение фреймворка (которое ты, к слову, так и не понял). Добавлено через 6 минут и 31 секунду А для сравнения тебе вот чтиво еще: http://ru.wikipedia.org/wiki/Hibernate_(%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B0) Просто мне хочется верить, что есть все же в мире джависты, которые могут думать. |
| Автор: alexSl 15.9.2011, 12:08 |
По существу я тебе дал ссылку на официальный сайт Boost, где четко написано что это библиотеки. По существу я тебе привел некоторые логические выкладки (про человека Васю и тебя). Что еще надо здравомыслящему |
| Автор: LSD 15.9.2011, 13:48 | ||||||||
Ну то что ты единственный, кто верно понимает определения это я понял. Я только не могу понять, отчего ты никак не соизволишь пролить свет своего знания на нас, простых смертных? Как нам отделить фреймворки от библиотек, о великий гуру?
Кстати очень показательное чтиво, которое наглядно показывает что нет четкой границы между фреймворком и библиотекой
А неуемная гордыня, это врожденное или приобретенное качество С++-ников?
Ну разве что еще немного кругозора, чтобы вспомнить про .NET Framework или Java Collections Framework, которые очень разительно друг от друга отличаются. .NET Framework явно больше чем просто фремворк. А Java Collections Framework это скорее библиотека классов. Не все что называется XXX Framework, является фреймворком и наоборот. |
| Автор: alexSl 15.9.2011, 14:32 | ||
Ага, понял. Это значит что не каждый вася - Вася, а только тот вася, которого ты окрестил васей, согласно определения на википедии, даже если он думает, что он Петя. И даже есть некоторые васи, которые не васи. Ужос |
| Автор: newbee 15.9.2011, 14:39 |
| LSD, просто смирись, что в С++ не принято boost считать фреймворком. Просто в твоей яве набор библиотек называть фреймворком, а в С++ - нет. Какой смысл спорить и грызться вокруг определений, которые весьма условны? |
| Автор: Earnest 15.9.2011, 15:35 | ||
Причем здесь "принято - не принято". Буст никакой не фрейворк. Фрейворк - это базовый костюм, который можно дополнять аксессуарами, но который задает общий каркас. А буст - это скорее магазин одежды. Причем есть ряд библиотек, которые делают примерно одно и то же - выбирай, что больше нравится. В этом смысле определение химика - "помойка" - подходит лучше. Типа как весь Интернет - помойка информации. Или наш форум. MFC - фреймворк, QT - тоже, Дельфи - тоже фрейворк с встроенным языком. Или язык со встроенным фрейворком. С# - тоже в этом роде. Да и Джава, наверное. А С++ - язык свободный. Т.е. позволяет построить каркас приложения на пустом месте, любой. Автору темы: да изучай оба, если ты не новичок в программировании. Со временем сам куда-нибудь да склонишься. |
| Автор: LSD 15.9.2011, 17:06 | ||||
Я отстаиваю свое право называть буст фреймворком
Java Collections Framework никакого общего каркаса не задает, и вокруг него приложение не выстроишь, да и Hibernate то же. Более менее под это определение попадают, Web фреймворки, да пожалуй и все. Боюсь, если я буду использовать выражение "помойка буст" эти двое, меня совсем загрызут |
| Автор: Earnest 15.9.2011, 17:19 | ||
Кто, химик? Да он тебе 100500 плюсов поставит... А что касается определений... слово не запатентовано еще, вот и используют, кто как хочет, с полным на то правом. "Java Collections Framework" круче звучит, чем "Set" или "Library". Framework переводится как "каркас"... С другой стороны, они же сказали, не вообще каркас, а каркас коллекций, так что, типа отмазались |
| Автор: newbee 15.9.2011, 17:24 | ||
|
| Автор: spyswamp 15.9.2011, 18:43 |
| Вот так друзья, на примере тролля-переростка LSD мы все вместе поняли, что Java размягчает мозги. |
| Автор: kemiisto 15.9.2011, 18:53 | ||
Опять же - зависит от определения. Если речь идёт об Application Framework, то я бы называл им http://forum.vingrad.ru/index.php?showtopic=305986&view=findpost&p=2186544. MFC не видел, но ни Qt, ни Delphi - не фреймворки, если следовать определению выше. spyswamp, учись троллить толсто. Бери пример с наших передовиков. |
| Автор: bems 15.9.2011, 20:00 | ||
| spyswamp, не слушай его, будь тоньше Добавлено через 2 минуты и 56 секунд
Вообще нет, в дельфи ничего не мешает выкинуть VCL и использовать только язык |
| Автор: LSD 16.9.2011, 09:36 | ||
Вот и я о чем |
| Автор: alexSl 16.9.2011, 09:53 |
Спасибо, что оценили мой вклад в ваше перевоспитание. |
| Автор: Lazin 17.9.2011, 22:46 |
| Итак, я сейчас немного не в себе, но все же попытаюсь ответить максимально объективно. На мой взгляд, сравнивать Java/C# и С/C++ - глупая затея. Это просто разные вещи. Мало того, любой компетентный программист обязан знать что нибудь из первой пары и что нибудь из второй. С/C++ это единственный возможный выбор в некоторых ситуациях, таких ситуаций, мягко говоря - не много. Это как правило системы, требующие очень низкой латентности, HFT например, очень и очень высоко нагруженные системы и тд. Помимо этого, такие низкоуровневые языки позволяют программисту приобрести очень неплохие навыки программирования. Любой адекватный программист на С/C++, который участвовал в разработке сложных систем, учится очень рациональному, прагматичному подходу к программированию, помимо этого, эти языки немного ближе к железу, по крайней мере создают такую иллюзию. Главное отличие второй пары языков от первой - ручное управление памятью. Запомним это, мы к этому еще вернемся. Java/C#, в свою очередь, нацелены на продуктивность разработчика, это кстати не значит, что они не позволяют писать высокопроизводительный код. За счет чего это достигается? Главным образом - за счет сборщика мусора, сборщик мусора - это такая штука, которая призвана создать у программиста иллюзию работы на компьютере с бесконечным объемом памяти, на котором естественно не нужно писать код для освобождения памяти. Это приводит к тому, что очень больше количество кода просто не нужно писать, мало того, необходимость освобождения памяти не нужно учитывать при разработке архитектуры приложения. Это очень сильно увеличивает скорость разработки. Помимо этого, в java/C# нет указателей(ну или почти нет). Это означает, что испортить память просто невозможно. Для этих языков(точнее для этих платформ) существуют куда более развитые средства разработки, IDE, отладчики, инстументы рефакторинга и тд. Недостатки же как всегда следуют из достоинств, если вам нужен высокопроизводительный код, вам нужно знать как работает GC, если вы скажем хотите создать свою структуру данных, то вам нужно сделать ее GC-friendly и тд. В общем, мой вывод - знать С или С++ нужно, но писать лучше на java или C#, это позволит вам быть более продуктивным и достигнуть большего. |