|
Модераторы: LSD |
|
TP@MB@Y |
|
|||
Опытный Профиль Группа: Участник Сообщений: 370 Регистрация: 18.12.2004 Где: Москва Репутация: 1 Всего: 4 |
Сорри если не туда запостил топик
Вобщем мне жутко интересно, чем лучше C++ того же паскаля? Думаю всем здесь известно, что настоящий программист составляет и реализует свои алгоритмы, и в зависимости от специфики задачи выбирает удобную в плане реализации среду программирования. Конечно, существует такой сильный фактор, как "к чему в детстве приучили". Я например начинал с паскаля и сейчас отдаю ему предпочтение (читай Delphi). Кто то начинал с Си и сейчас например предпочитает Билдер Дельфям. А ктооо тооо (тут полагается сделать зловещую паузу ) учил в детстве бэйсик.... Так вот. Вопрос заключается в следущем: ЧЕМ кардинально отличается С++ от паскаля? Конкретные примеры есть? |
|||
|
||||
Domestic Cat |
|
|||
Эксперт Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 4 Всего: 172 |
Это в религиозные войны. Кстати, к примеру, я жутко не люблю С++, так что слово "все" лишнее...
-------------------- |
|||
|
||||
Void |
|
||||||
λcat.lolcat Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 11 Всего: 173 |
Во-первых, как правильно заметил Domestic Cat, этот провокационный вопрос надо в Религиозные войны
В принципе, это так. Но, во-первых, число языков, которые можно знать на высоком профессиональном уровне, довольно ограничено. Во-вторых, большую, подчас решающую роль играет наличие поддержки этой среды для данной платформы, готовых библиотек, квалификация остальных разработчиков в команде... Все не так просто.
Ну я учил К счастью, прогноз Дейкстры не оправдался Я полностью излечился
Отличий масса... На мой взгляд, наиболее существенное отличие языка - наличие шаблонов и автоматических объектов. Именно из этого проистекают наиболее важные на мой взгляд практические различия. Ну и некоторый синтаксический сахар в виде перегрузки операторов. Это из преимуществ. А из недостатков (опять же на языковом уровне) - отсутствие модульности. Кстати, "все" его действительно не любят. Сейчас, пожалуй, даже больше тех, кто его не любит. Правда, C++ они чаще противопоставляют Java и .NET, а не Паскаль/Delphi. -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
||||||
|
|||||||
TP@MB@Y |
|
|||
Опытный Профиль Группа: Участник Сообщений: 370 Регистрация: 18.12.2004 Где: Москва Репутация: 1 Всего: 4 |
Со словом "все" я действительно поторопился. Я хотел сказать, что большинство программистов (особенно продвинутых) восхваляют Си.
По поводу шаблонов и перегрузки операторов: действительно это делает Си более мощным языком, но мне например кажется, что эти "вкусности" мало испоьзуются и являются экзотикой (хотя это конечно же ИМХО) А вообще мне лично Си ненравится из-за его "закорючности" в синтаксисе: фигурные скобки, амперсенты, звездочки... =) Вобщем если сравнивать с тем же паскалем (хотя он создавался как учебный язык программирования для студентов), то у первого код намного читабельнее чем у Си. PS я не против переноса темы в "Религиозные войны" |
|||
|
||||
Domestic Cat |
|
|||
Эксперт Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 4 Всего: 172 |
Не путай Си и С++ - в С нет шаблонов и это вообще чисто процедурный язык.
-------------------- |
|||
|
||||
Mayk |
|
||||
^аВаТаР^ сообщение>> Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 2 Всего: 134 |
Паскаль vs C? Усё. Счас начнется(а кончится всё фразой, что каждой задаче - свои инструменты).
В паскале нет шаблонов. Это раз. В паскале нет циклов. Это два(for i := 10 downto 0 это не цикл, while(*i++=*j++) - вот пример цикла. for(iter i = collection->begin(); i->value != desired_value && i != collection->end(); ++i) - вот пример цикла) В паскале очень длинный, запутанный, я б даже сказал, дурацкий синтаксис. Это три(integer вместо int, begin вместо { и end вместо }, then вместо <тут пусто>). В паскале указатели просто смешны. Мне НУЖЕН указатель на статическую переменную. Я НЕ хочу вызывать операции по удалению объектов в ручную. Я НЕ хочу обращаться к тормознутому менеджеру памяти(выделение в стеке гораздо быстре). И если компилятор имеет на этот счёт иное мнение, то я имею топку в которую полетит шибко умный компилятор. Это четыре. И это приговор. В паскале нет препроцессора. Это пять(кстати за это я не люблю яву, с#) В паскале очень тупые ветвления(then, наличие ';', отсутствие ';') это пять с копейками В паскале нет оператара присваивания. Это шесть с копейками(a:=b это операция присваивания. a=b=c=d=e=f=g=someFunction(h) - вот это оператор присваивания в своей красе). В паскале синтаксис очень похож на basic'овский. Это шесть с копейками. С ОЧЕНЬ ВЕСОМЫМИ копейками В паскале очень тупая библиотека. На си создания дубликата участка памяти я запишу в одно выражение memcpy(malloc(len),src,len); В паскале getmem НЕ возвращает значение. А устанавливает переданный ей pointer. В си есть циклы, операторы присваивания, препроцессор, stdlib функции которой возвращают то что им положено возвращать. В си++ есть классы. Паскалевскому stringу в пору бится в конвульсиях. Кстати, сколько операционных систем написано на паскале?
Ну, например, я. Это был единственный нормальный ЯВУ на ZX спеки 48кб. Все остальные не могли быть нормальными, так как им негде было размещать свое толстое тело. Бейсик был просто вшит. ЗЫ. МОДЕРАТОРЫ, перенесите тему в религиозные войны. -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
||||
|
|||||
Void |
|
||||||
λcat.lolcat Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 11 Всего: 173 |
Я сейчас буду занудой... Не Си, а C++. Это разные языки. Без шаблонов современный C++ невозможен в принципе. На шаблонах держится практически вся стандартная библиотека C++. Без перегрузки операторов невозможно прозрачно сэмулировать числовые, векторные и матричные типы, умные указатели.
Синтаксис - исключительно дело вкуса. Когда вы найдете у языка существенные практические преимущества, вы быстро забудете про эстетические качества синтаксиса
Для новичка - да. А для опытного программиста поддержка кода на них одинакова по сложности, имхо. P.S. Как и многим здесь присутствующим, мне наперед известны почти все аргументы и контраргументы, которые сейчас пойдут в дело. И все-таки мне почему-то еще интересны язковые войны Это сообщение отредактировал(а) Void - 11.7.2005, 21:02 -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
||||||
|
|||||||
Earnest |
|
|||
Эксперт Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: нет Всего: 183 |
Mayk, полностью поддерживаю!
И еще добавлю: шаблоны С++ сделали возможным реализацию концепций обобщенного программирования. Да, в С++ нет объектов типа "метакласс", порождающих классы. Но с помощью шаблонов это прекрасно эмулируется - достаточно почитать Александреску или посмотреть в boost. Причем, все это (в отличие от супер-высокоуровневых языков типа Smalltalk) абсолютно бесплатно (в смысле производительности)! Потому что все навороты кода беследно исчезают в момент компиляции. Таким образом, ИМХО, наиболее мощное свойсво С++, отличающее его от всех существующих языков программирования, это то, что он позволяет писать очень высокоуровневые и выразительные программы, и при этом получать очень производительный код. -------------------- ... |
|||
|
||||
simanyay |
|
|||
Антон Ковалёв Профиль Группа: Участник Сообщений: 2053 Регистрация: 22.8.2002 Репутация: 0 Всего: 36 |
Но лучше всего Java
-------------------- «It's better to be a pirate than to join the Navy» — Steve Jobs. |
|||
|
||||
TP@MB@Y |
|
|||
Опытный Профиль Группа: Участник Сообщений: 370 Регистрация: 18.12.2004 Где: Москва Репутация: 1 Всего: 4 |
Mayk
Сдаюсь! Вы просто разбомбили меня аргументами Теперь я кажется получил довольно полный ответ на мой вопрос. PS Говоря "Си" я подразумевал С++ PSS Ну на самом деле я "войны" не хотел, а просто удовлетворил свой интерес Хеппи энд |
|||
|
||||
chipset |
|
|||
Эксперт Профиль Группа: Экс. модератор Сообщений: 4067 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 4 Всего: 164 |
Эй, эй! Ну я люблю C++
А почему? А патамушта и свобода и удобно программировать! Хочешь, на чисто Сишных функциях дрова кодь, а не хочешь, с GC и мета-программированием высокоуровневую хрень программируй. Если стоит выбор .NET или C++, тут и думать не надо, C++ конечно. Ни под .NET ни под Java нету такого хорошего ассортимента, к примеру GUI либ.. Я думаю все фичи Джавы уже давно реализованы в виде многочисленных бустов, и прочего барахла, а в Джава нету тех фич которые есть C++, и не будет, ибо это ограниченный язык, не универсальный, и сравнивать их нехорошо. Джаву я признаю только в веб-программировании. PS. c.l.c++.moderated: Why do you program on C++? --------------------
|
|||
|
||||
TP@MB@Y |
|
|||
Опытный Профиль Группа: Участник Сообщений: 370 Регистрация: 18.12.2004 Где: Москва Репутация: 1 Всего: 4 |
Ну ладно. Тогда задам такой дурацкий вопрос: что можно сделать на С++, чего нельзя сделать на дельфи? Я про конкретную задачу, а не про внутреннее описание всяких там шаблонов и перегрузку оперторов.
|
|||
|
||||
Ch0bits |
|
|||
Python Dev. Профиль Группа: Завсегдатай Сообщений: 2124 Регистрация: 21.2.2005 Где: Казань Репутация: 1 Всего: 62 |
А чё на Delphi можно OSь написать?
Это сообщение отредактировал(а) Vadim999 - 12.7.2005, 00:14 |
|||
|
||||
TP@MB@Y |
|
|||
Опытный Профиль Группа: Участник Сообщений: 370 Регистрация: 18.12.2004 Где: Москва Репутация: 1 Всего: 4 |
Vadim999
1) Я конечно не компетентен в этом вопросе (программирование осей), но почему нет? 2) Допустим нельзя написать ось на дельфи (в чем я сомневаюсь). Но разве это ОГРОМНЫЙ МИНУС Ведь оси пишутся не каждым вторым программистом. Абсолютное большинство программистов пишут программы под оси, а не оси. (Хотя я могу узко понимать этот вопрос, ведь оси пишутся не только под ПиСи, но и под всякие мобилы...). С осями разобрались. Что еще нельзя на дельфи? |
|||
|
||||
Kurt |
|
|||
Увлеченный Профиль Группа: Участник Клуба Сообщений: 1662 Регистрация: 22.8.2003 Где: Краснодар Репутация: нет Всего: 36 |
Писать под не-Windows системы. Kylix не в счет - он тока под *.nix и уже не развивается. -------------------- Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед) ... Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн) |
|||
|
||||
Правила ведения Религиозных войн | |
|
1. Уважайте собеседника 2. Собеседник != враг 3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez" С уважением, Smartov. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Религиозные войны | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |