-
> lucy (13.12.08 22:23) [18]
И вообще стандарт в С++, это как работа по трём зелёным свисткам, а вот что это такое понимает по разному каждый из разработчиков компиляторов и библиотек.
С++ настолько сложен, что про стандарт говорить уже нельзя, так как это абстракция которую нельзя полностью реализовать в компиляторе, можно реализовать близкую аналогию к стандарту.
-
Городской Шаман (13.12.08 22:39) [19]
>А можно я сам решу что мне хорошо?
Конечно, конечно. Только не ходите тогда по веткам с транспарантом "Я считаю, что это хорошо, потому, что гладиолус, а на то, как это принято в среде пользователей данного инструмента мне наплевать".
-
> lucy (13.12.08 22:45) [21]
Вот поэтому серьёзные программисты обычно выбирают Delphi, так как он позволяет тупо решать проблемы, без всякой философии.
Я в С++ одних реализаций делегатов уже 7 нашёл. НАФИГА СТОЛЬКО?
-
lucy (13.12.08 22:45) [21] >И вообще стандарт в С++, это как работа по трём зелёным свисткам
В этом мире есть только один идеальный объект - сферический конь в вакууме :) Но попробуйте порассуждать, зачем вообще нужен этот стандарт, и что было бы, не будь его.
>Я в С++ одних реализаций делегатов уже 7 нашёл. НАФИГА СТОЛЬКО?
Реализаций калькулятора и открывателя cd-rom на дельфи на несколько порядков больше.
>Вот поэтому серьёзные программисты обычно выбирают Delphi, так как он позволяет тупо решать проблемы, без всякой философии.
Вот опять вы пытаетесь мерить все своими мерками. Это говорит о том, что вы не пытались писать серьезные ОО приложения на дельфи и расширять уже существующие. Когда вам доведется, вы вспомните эти слова. Я вижу также, что вы испытываете серьезный дефицит общения. Завтра непременно выйдите на улицу, подышите свежим возудухом, поспрашивайте у прохожих который сейчас час, как проехать в библиотеку, спросите у милиционера как дела. Удачи вам.
-
> Городской Шаман (13.12.08 22:48) [22] > lucy (13.12.08 22:59) [23]
Ребята, давайте жить дружно! Серьёзные специалисты уже давно выбирают С# :) А Delphi и C++, при всех их достоинствах и несомненных заслугах для истории языков программирования, уходят со сцены в узкие экологические ниши.
-
> Alkid (13.12.08 23:11) [24]
Покажите хоть одну продакшин игру на C#.
-
-
> Городской Шаман (13.12.08 23:49) [25] > Покажите хоть одну продакшин игру на C#.
Игры являются одной из экологических ниш, где С++ самое место.
> Насчёт отмирания C++ не особо заметно
На самом деле как раз заметно - количество С++ вакансий стабильно, в то время, как шарповых - растёт. Т.е. имеется увеличение количества вакансий при стабильном количестве вакансий С++ => доля С++ на рынке падает.
Если говорить серьёзно, то я не говорил об отмирании. Я говорил об уходе в свои ниши. Для С++ это: 1. High-performace-приложения, где надо драться за байты и такты. Игры - хороший пример. Real-time процессинг информации (аудио, видео и т.п.) - тоже. 2. Кросс-платформенная разработка, особенно околосистемных вещей. 3. Работа в устройствах с жёсткими ограничениями по ресурсам. Возможно я не всё перечислил.
В чём основная сила С++? Она в эффективности. С++ оправдан там, где необходимость экономить ресурсы машины важнее, чем экономить время программиста. Там, где такого требования нет, разумнее писать на более высокоуровневых языках.
Не надо думать, что я недооцениваю С++ или Delphi. Я очень много работал и на том и на другом и знаю их достоинства и недостатки. Сейчас, кстати, я программирую как раз на С++, но даже у нас в проекте имеется тенденция к увеличению доли .NET модулей по сравнению с C++-ными по мере развития продукта. Сейчас начинаем делать новоую версию, почти всё делаем на C#. Всё, что не можем на C# по техническим или историческим причинам - на С++.
-
-
> Alkid (14.12.08 09:37) [27] > > В чём основная сила С++? Она в эффективности. С++ оправдан > там, где необходимость экономить ресурсы машины важнее, > чем экономить время программиста. Там, где такого требования > нет, разумнее писать на более высокоуровневых языках.
Ой не надо. Если использовать C++ с "магией" которая доступна через механизмы шаблонов и других хитростей, по типу создания объектов на стеке и перегрузке операторов то по эффективности он не уступает C#. Используя бесплатную GUI библиотеку wxWidgets разработка интерфейса будет отличатся от разработки на Delphi только тем что редактор форм не встроен в IDE. Но если купить более дорогую платную библиотеку QT(интеграция с VS) то разработка формочек не будет сложнее делфийской разработки. Забудьте ужасы MFC их нет уже как и использования MFC.
Так что разработка ПО на C++ (не чистого С, там цугванг по части простоты) с использованием Платных!!! средств нисколько не отличается от разработки на Delphi или C#. Только в них не вбухивается столько рекламы.
-
> Не надо думать, что я недооцениваю С++ или Delphi. Я очень > много работал и на том и на другом и знаю их достоинства > и недостатки. Сейчас, кстати, я программирую как раз на > С++, но даже у нас в проекте имеется тенденция к увеличению > доли .NET модулей по сравнению с C++-ными по мере развития > продукта. Сейчас начинаем делать новоую версию, почти всё > делаем на C#. Всё, что не можем на C# по техническим или > историческим причинам - на С++.Ну сейчас техника достигла такого уровня, что проблема памяти или эффективного использования процессора перед программистом вообще не стоит. Поэтому и увеличивается процент использования таких скриптовых как python или интерпретируемых из байт-кода языков как C#. Это видно по такому тренду: http://www.indeed.com/jobtrends?q=python%2C+C%23%2C+php%2C+perl&l=Ну а написать еще одну учетную программу даже на том же C# да так чтобы она тормозила на современном компьютере можно только специально. В некоторых программах заложена возможность к оптимизации в 100раз, но никому она не нужна, дешевле купить новый процессор и добавить еще два гига памяти на офисный компьютер.
-
> Городской Шаман (14.12.08 17:00) [29]
Я не силён в разработке GUI, так что этот аспект меня не очень волнует. Я говорю о более фундаментальных вещах. В частности, в С++ явно не хватает: 1. Нормальной модульности. Это самый большой косяк С++. Система заголовочных файлов убога и порочна в самой своей сути. Количество глюков, накладок и банальных неудобств, возникающих из-за этого, неисчислимо. 2. Автоматического управления памятью. 3. Рефлексии. И это только самое насущное! Кроме того, С++ сильно перегружен тяжким наследием С. Это всё делает язык излишне сложным, заставляя иногда бороться не с проблемой, а с инструментом. Эта сложность приводит иногда к курьёзам в самом стандарте. Например, данный код с точки зрения стандарта некорректен:
class Base
;
class Derived : public Base
;
struct SomeStruct
;
SomeClass::Derived* p = &SomeStruct::a;
SomeClass::Base* p1 = p;
Налицо явное нарушение принципа подстановки. Увы. При этом язык предоставляет больше свободы в выборе стиля, чем Дельфи или C#. Я, например, не пишу чисто объектно-ориентированные программы, предпочитая функционально-объектный стиль. > Ну сейчас техника достигла такого уровня, что проблема памяти > или эффективного использования процессора перед программистом > вообще не стоит.
Вот именно! Точнее она не стоит в большинстве приложений. И для таких приложений надо использовать те средства, которые не заставляют думать программиста о таких вещах. А ещё лучше - дают ему пусть и не эффективный по ресурсам, но мощный инструментарий. Собственно, что и говорить - Lisp аж в 1958-ом году придумали. Требовательные байтодробительные задачи никуда не денутся и для них С++ будет нужен и сейчас и потом. Если только что-нибудь получше не придумают.
-
> 2. Автоматического управления памятью.
По части 2 уже давно проблема решена "умными указателями" с подсчётом ссылок на объект. Это, конечно, не сборщик мусора, но проблему частично решает.
По части 3, для внедрения в С++ рефлексии есть библиотеки макросов, которые ее позволяют сгенерировать по классу. Конечно простому смерному понять как работает эта библиотека не дано, но вы тоже же в компилятор С# не лезете.
А вот 1 это да, неудобно, но решаемо.
В общем идеология C# - все включено в стоимость билета. Идеология C++ - вы платите только за то, что заказываете. Какая из них лучше не скажу. Под проект и на любителя.
А если смотреть по ресурсоёмкости современных программ(скорости, памяти) то на это критерий чаще всего влияет уже выбор алгоритма и стратегии, чем выбор языка.
Ну а Java, .Net, Perl, Python - это конечно хорошо что у VB так много конкурентов, для некоторых задач они будут оставатся всегда недостаточно эффективны по причине "все включено в стоимость билета".
Да тот же доунлоадер или messaging клиент на C#/Java проиграет С++/Delphi по ресурсоёмкости. Конечно когда это одна программа то разница не особо существенна, а если их 40, то это уже лишний гиг памяти. Хотя через 4-5 лет на новых компьютерах меньше 16 Гб памяти стоять не будет... Так что предсказывать наперёд не берусь.
-
> Городской Шаман (14.12.08 20:09) [32]
Да, всё верно. Идеология языков разная. И именно по-этому в С++ для управления памятью надо городить смарт-поинтеры - надо давать пользователю самые низкоуровневые средства. Но именно идеология обуславливает то, что С++ постепенно оставляет позиции в мэнстриме. Его аскетичная идеология не вписывается в мэйнстрим, лозунг которого - "даёшь максимальную производительность программиста!". Кстати, по этой же причине С++ не отомрёт окончательно - в его "коронных" областях ему просто нет нормальной замены (Ну разве что D допилят до кондиции, хотя мне он противен чисто эстетически :)). Мэйнстрим "покупает" свои возможности именно за счёт щедрого расхода памяти и тактов на продвинутые фишки. У Пола Грэхэма есть занятное эссе на эту тему : http://paulgraham.com/hundred.html.
-
> Alkid (14.12.08 21:32) [33]
Это по большей части рекламная лапша. Кривую архитектуру никакая rtti или сбор мусора не спасёт. Кроме того недостатков от сборки мусора часто больше чем преимуществ, особенно заметно в Java так как там нет C#-вского using, есть глюкавый "деструктор" finalize. При разработке нормального фреймворка под комплекс задач все равно какой использовать язык. Все упирается в возможности компилятора и существующие библиотеки.
Хотя если нужно получить программиста за 24 дня на реальный проект, то здесь только C# или Java, так как этот программист хоть на AV не будет натыкаться. Ну и как-то этот проект потом даже будет работать. Так практикует EPAM - месяц самостоятельного обучения за "стипендию", месяц "помощи в проекте" и через два месяца уже вполне солидный программист среднего уровня (ну так они отчитаются перед заказчиками).
-
> Городской Шаман (14.12.08 22:03) [34]
Видал я таких "солидных программистов среднего уровня". Навык программиста - это не знание языков, всё же :) И программист "за 24 дня" напишет абсолютную лажу на любом языке, если только над ним с дубиной не стоять. Там как раз будет та самая кривая архитекторуа, которую ни RTTI, ни GC не спасёт. :)
Вообщем, как и в любом конструктивноем споре о том, какой язык круче, дошли до того, что круче своей головы на плечах и опыта работы ничего нет :)
|