Конференция "Прочее" » Замыкания для методов классов в C++. Как?
 
  • Городской Шаман (13.12.08 22:43) [20]

    > lucy   (13.12.08 22:23) [18]


    И вообще стандарт в С++, это как работа по трём зелёным свисткам, а вот что это такое понимает по разному каждый из разработчиков компиляторов и библиотек.

    С++ настолько сложен, что про стандарт говорить уже нельзя, так как это абстракция которую нельзя полностью реализовать в компиляторе, можно реализовать близкую аналогию к стандарту.
  • lucy (13.12.08 22:45) [21]
    Городской Шаман   (13.12.08 22:39) [19]

    >А можно я сам решу что мне хорошо?

    Конечно, конечно. Только не ходите тогда по веткам с транспарантом "Я считаю, что это хорошо, потому, что гладиолус, а на то, как это принято в среде пользователей данного инструмента мне наплевать".
  • Городской Шаман (13.12.08 22:48) [22]

    > lucy   (13.12.08 22:45) [21]


    Вот поэтому серьёзные программисты обычно выбирают Delphi, так как он позволяет тупо решать проблемы, без всякой философии.

    Я в С++ одних реализаций делегатов уже 7 нашёл. НАФИГА СТОЛЬКО?
  • lucy (13.12.08 22:59) [23]
    lucy   (13.12.08 22:45) [21]
    >И вообще стандарт в С++, это как работа по трём зелёным свисткам

    В этом мире есть только один идеальный объект - сферический конь в вакууме :) Но попробуйте порассуждать, зачем вообще нужен этот стандарт, и что было бы, не будь его.

    >Я в С++ одних реализаций делегатов уже 7 нашёл. НАФИГА СТОЛЬКО?

    Реализаций калькулятора и открывателя cd-rom на дельфи на несколько порядков больше.

    >Вот поэтому серьёзные программисты обычно выбирают Delphi, так как он позволяет тупо решать проблемы, без всякой философии.

    Вот опять вы пытаетесь мерить все своими мерками. Это говорит о том, что вы не пытались писать серьезные ОО приложения на дельфи и расширять уже существующие. Когда вам доведется, вы вспомните эти слова.
    Я вижу также, что вы испытываете серьезный дефицит общения. Завтра непременно выйдите на улицу, подышите свежим возудухом, поспрашивайте у прохожих который сейчас час, как проехать в библиотеку, спросите у милиционера как дела. Удачи вам.
  • Alkid (13.12.08 23:11) [24]

    > Городской Шаман   (13.12.08 22:48) [22]
    > lucy   (13.12.08 22:59) [23]

    Ребята, давайте жить дружно!
    Серьёзные специалисты уже давно выбирают С# :)
    А Delphi и C++, при всех их достоинствах и несомненных заслугах для истории языков программирования, уходят со сцены в узкие экологические ниши.
  • Городской Шаман (13.12.08 23:49) [25]

    > Alkid   (13.12.08 23:11) [24]


    Покажите хоть одну продакшин игру на C#.
  • Городской Шаман (13.12.08 23:51) [26]
    Насчёт отмирания C++ не особо заметно
    http://www.indeed.com/jobtrends?q=delphi%2C+C%23%2C+C%2B%2B&l=
  • Alkid (14.12.08 09:37) [27]

    > Городской Шаман   (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:39) [28]
    Кстати, советую ознакомитья и с такой статистикой: http://www.indeed.com/jobtrends?q=Java%2C+C%23%2C+C%2B%2B&l=
  • Городской Шаман (14.12.08 17:00) [29]

    > Alkid   (14.12.08 09:37) [27]
    >
    > В чём основная сила С++? Она в эффективности. С++ оправдан
    > там, где необходимость экономить ресурсы машины важнее,
    > чем экономить время программиста. Там, где такого требования
    > нет, разумнее писать на более высокоуровневых языках.


    Ой не надо. Если использовать C++ с "магией" которая доступна через механизмы шаблонов и других хитростей, по типу создания объектов на стеке и перегрузке операторов то по эффективности он не уступает C#. Используя бесплатную GUI библиотеку wxWidgets разработка интерфейса будет отличатся от разработки на Delphi только тем что редактор форм не встроен в IDE. Но если купить более дорогую платную библиотеку QT(интеграция с VS) то разработка формочек не будет сложнее делфийской разработки. Забудьте ужасы MFC их нет уже как и использования MFC.

    Так что разработка ПО на C++ (не чистого С, там цугванг по части простоты) с использованием Платных!!! средств нисколько не отличается от разработки на Delphi или C#. Только в них не вбухивается столько рекламы.
  • Городской Шаман (14.12.08 17:31) [30]

    > Не надо думать, что я недооцениваю С++ или Delphi. Я очень
    > много работал и на том и на другом и знаю их достоинства
    > и недостатки. Сейчас, кстати, я программирую как раз на
    > С++, но даже у нас в проекте имеется тенденция к увеличению
    > доли .NET модулей по сравнению с C++-ными по мере развития
    > продукта. Сейчас начинаем делать новоую версию, почти всё
    > делаем на C#. Всё, что не можем на C# по техническим или
    > историческим причинам - на С++.


    Ну сейчас техника достигла такого уровня, что проблема памяти или эффективного использования процессора перед программистом вообще не стоит. Поэтому и увеличивается процент использования таких скриптовых как python или интерпретируемых из байт-кода языков как C#. Это видно по такому тренду:

    http://www.indeed.com/jobtrends?q=python%2C+C%23%2C+php%2C+perl&l=

    Ну а написать еще одну учетную программу даже на том же C# да так чтобы она тормозила на современном компьютере можно только специально. В некоторых программах заложена возможность к оптимизации в 100раз, но никому она не нужна, дешевле купить новый процессор и добавить еще два гига памяти на офисный компьютер.
  • Alkid (14.12.08 19:42) [31]

    > Городской Шаман   (14.12.08 17:00) [29]

    Я не силён в разработке GUI, так что этот аспект меня не очень волнует. Я говорю о более фундаментальных вещах. В частности, в С++ явно не хватает:
    1. Нормальной модульности. Это самый большой косяк С++. Система заголовочных файлов убога и порочна в самой своей сути. Количество глюков, накладок и банальных неудобств, возникающих из-за этого, неисчислимо.
    2. Автоматического управления памятью.
    3. Рефлексии.
    И это только самое насущное! Кроме того, С++ сильно перегружен тяжким наследием С. Это всё делает язык излишне сложным, заставляя иногда бороться не с проблемой, а с инструментом. Эта сложность приводит иногда к курьёзам в самом стандарте. Например, данный код с точки зрения стандарта некорректен:

    class Base
    {
    }
    ;

    class Derived : public Base
    {
    }
    ;

    struct SomeStruct
    {
     Derived a;
    }
    ;

    SomeClass::Derived* p = &SomeStruct::a;
    SomeClass::Base* p1 = p; // Compilation Error!


    Налицо явное нарушение принципа подстановки. Увы.

    При этом язык предоставляет больше свободы в выборе стиля, чем Дельфи или C#. Я, например, не пишу чисто объектно-ориентированные программы, предпочитая функционально-объектный стиль.


    > Ну сейчас техника достигла такого уровня, что проблема памяти
    > или эффективного использования процессора перед программистом
    > вообще не стоит.

    Вот именно! Точнее она не стоит в большинстве приложений. И для таких приложений надо использовать те средства, которые не заставляют думать программиста о таких вещах. А ещё лучше - дают ему пусть и не эффективный по ресурсам, но мощный инструментарий. Собственно, что и говорить - Lisp аж в 1958-ом году придумали. Требовательные байтодробительные задачи никуда не денутся и для них С++ будет нужен и сейчас и потом. Если только что-нибудь получше не придумают.
  • Городской Шаман (14.12.08 20:09) [32]

    > 2. Автоматического управления памятью.


    По части 2 уже давно  проблема решена "умными указателями" с подсчётом ссылок на объект. Это, конечно, не сборщик мусора, но проблему частично решает.

    По части 3, для внедрения в С++ рефлексии есть библиотеки макросов, которые ее позволяют сгенерировать по классу. Конечно простому смерному понять как работает эта библиотека не дано, но вы тоже же в компилятор С# не лезете.

    А вот 1 это да, неудобно, но решаемо.

    В общем идеология C# - все включено в стоимость билета. Идеология C++ - вы платите только за то, что заказываете. Какая из них лучше не скажу. Под проект и на любителя.

    А если смотреть по ресурсоёмкости современных программ(скорости, памяти) то на это критерий чаще всего влияет уже выбор алгоритма и стратегии, чем выбор языка.

    Ну а Java, .Net, Perl, Python - это конечно хорошо что у VB так много конкурентов, для некоторых задач они будут оставатся всегда недостаточно эффективны по причине "все включено в стоимость билета".

    Да тот же доунлоадер или messaging клиент на C#/Java проиграет С++/Delphi по ресурсоёмкости. Конечно когда это одна программа то разница не особо существенна, а если их 40, то это уже лишний гиг памяти. Хотя через 4-5 лет на новых компьютерах меньше 16 Гб памяти стоять не будет... Так что предсказывать наперёд не берусь.
  • Alkid (14.12.08 21:32) [33]

    > Городской Шаман   (14.12.08 20:09) [32]

    Да, всё верно. Идеология языков разная. И именно по-этому в С++ для управления памятью надо городить смарт-поинтеры - надо давать пользователю самые низкоуровневые средства. Но именно идеология обуславливает то, что С++ постепенно оставляет позиции в мэнстриме. Его аскетичная идеология не вписывается в мэйнстрим, лозунг которого - "даёшь максимальную производительность программиста!". Кстати, по этой же причине С++ не отомрёт окончательно - в его "коронных" областях ему просто нет нормальной замены (Ну разве что D допилят до кондиции, хотя мне он противен чисто эстетически :)).  Мэйнстрим "покупает" свои возможности именно за счёт щедрого расхода памяти и тактов на продвинутые фишки. У Пола Грэхэма есть занятное эссе на эту тему : http://paulgraham.com/hundred.html.
  • Городской Шаман (14.12.08 22:03) [34]

    > Alkid   (14.12.08 21:32) [33]


    Это по большей части рекламная лапша. Кривую архитектуру никакая rtti или сбор мусора не спасёт. Кроме того недостатков от сборки мусора часто больше чем преимуществ, особенно заметно в Java так как там нет C#-вского using, есть глюкавый "деструктор" finalize. При разработке нормального фреймворка под комплекс задач все равно какой использовать язык. Все упирается в возможности компилятора и существующие библиотеки.

    Хотя если нужно получить программиста за 24 дня на реальный проект, то здесь только C# или Java, так как этот программист хоть на AV не будет натыкаться. Ну и как-то этот проект потом даже будет работать. Так практикует EPAM - месяц самостоятельного обучения за "стипендию", месяц "помощи в проекте" и через два месяца уже вполне солидный программист среднего уровня (ну так они отчитаются перед заказчиками).
  • Alkid (14.12.08 22:55) [35]

    > Городской Шаман   (14.12.08 22:03) [34]

    Видал я таких "солидных программистов среднего уровня". Навык программиста - это не знание языков, всё же :) И программист "за 24 дня" напишет абсолютную лажу на любом языке, если только над ним с дубиной не стоять. Там как раз будет та самая кривая архитекторуа, которую ни RTTI, ни GC не спасёт. :)

    Вообщем, как и в любом конструктивноем споре о том, какой язык круче, дошли до того, что круче своей головы на плечах и опыта работы ничего нет :)
 
Конференция "Прочее" » Замыкания для методов классов в C++. Как?
Есть новые Нет новых   [134447   +40][b:0][p:0.001]