D и другие малопулярные языки

Тема в разделе "WASM.ZEN", создана пользователем _220, 3 май 2010.

  1. _220

    _220 New Member

    Публикаций:
    0
    Регистрация:
    23 мар 2006
    Сообщения:
    111
    Давненько я не изучал новых языков. Чувствую себя динозавром.
    Решил потыкаься и посмотреть, чего понапридумывали безумные головы со времен Кернигана.

    Я вижу 2 "основных" языка - это плюсы и жаба. Плюсы мне не нравятся тем, что кое-где в них проглядывают дыры, шаблоны реально применяются редко, типизация слабая, неуклюжий препроцессор и еще вагон и маленькая тележка атавизмов. Жаба, в свою очередь, интерпретируема (всякие JET не в счет), нужно таскать виртуальную машину, кое-чего не позволяет. Нет, я конечно и эти языки люблю, но чем дальше поле, тем оно зеленее.

    Посему, случайно наткнувшись на D, решил почитать про него, а заодно подумать и про другое направления.Прошу вас изложить свои мысли и опыт, если таковой имеется в отношениее нижеизложенных подходов к повышению эффективности программинга:

    1) Копать D. Как я понял, это такой франкенштейн, сшитый из лучших кусков других языков. Поддержка-то слабовата пока, но компилятор есть - пока хватит. Из плюсов я для себя отметил удачный микс фунционала, нет множественного наследования, мое любимое засилье интерфесов, да еще кучка приятных фенечек типа отсутсвия необходимости объявления классов в h (как в жабе).

    2) Посетила меня идея и покруче - взять что-нибудь инородное. Например Haskell. Фунциональное программирования для меня - непаханная целина. Но примеры выглядят очень привлекательными. Просто красота неописуемая!

    Ясно конечно, что у каждого своя ниша. И все же, мне хотелось бы узнать ваше мнение касательно возможности замены плюсов Dшкой, а также о пользе копошения во всяких Haskell'ах и Lisp'ах.
     
  2. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    D - очень хороший язык. У него замечательный синтаксис, у него есть более-менее неплохая библиотека, он нативный.
    Но есть одно но - у него нет хорошей ИДЕ. Это в разы сильно процесс разработки, и получается что на С++ с его плохим синтаксисом, но хорошими либами и хорошей ИДЕ кодить быстрее и удобнее чем на Д.

    Выбор языка должен отвечать задачам.
    Если надо распространять проги, то надо чтобы прога не зависела от экзотических рантаймов, как например у Питона.
    С учетом того, что в начиная с xpsp3 в винде есть .NET, можно считать что проги на C# будут работать везде. При этом размер прог весьма мал, а язык гораздо удобнее того же С++.
    Если надо инжектить код в чужой процесс, то язык должен компилиться в нативный код.

    ИМХО:
    если писать небольшие проги для себя - то лучший язык - это чтото вроде Python'а. Удобный мощный синтаксис и встроенные средства, большой набор готовых либ, большая популярность.
     
  3. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    GoldFinch
    IDE это ерунда. Для текущей версии нет продакшн компилятора, да и для предыдущей не густо. Не верю в этот язык, хотя всё возможно.
    А плюсы развиваются потихоньку, поддержка мощнейшая.
     
  4. _220

    _220 New Member

    Публикаций:
    0
    Регистрация:
    23 мар 2006
    Сообщения:
    111
    Добавлю несколько предпочтительных положений:

    1) Винде - в топку. Во-первых я под никсами всегда, а во-вторых ни за что не привяжу себя к платформе, ни за какие коврижки. После того, как я познакомился с жабой, Qt и прочими вкусняшками, никакими пирогами не заставишь меня писать виндозный код.
    2) Я понимаю, что либ под D мало. Меня интересует в первую очердь язык. Т.е. писать окошечки и менюшечки я могу и на жабе, или Qt, но хотелось бы тяжелый код (движок там какой-нибудь, в общем без сторонних либ) писать на чем-нибудь мощном и приятном.
    3) Язык должен быть нативным. Рантаймы еще куда ни шли, но интерпретация мне не подходит.

    Да, кстати, может еще есть какой язык интересеный?
     
  5. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    Booster
    Все же синтаксис и возможности D лучше чем у C++0x, и во много сопоставимы с C#.

    Плюсы не могут нормально развиваться из за совместимости с Cи - разделения на .h и .cpp, архаизмов типа
    T1 this_is_function_declaration(T2());

    _220
    дотнет есть и в никсах - моно.
     
  6. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    _220
    Посмотрите лисп, по возможностям он опережает все существующие языки. Есть компиляторы, интерпретаторы. Но есть один для меня минус, это заточка под emacs. Хотя чем чёрт не шутит, язык действительно мощнейший, может и я переберусь не него.
     
  7. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    GoldFinch
    По-моему D лучше С#, но только как язык, не считая поддержки компиляторов, библиотек и пр.

    А что значит нормально развиваться?
     
  8. _220

    _220 New Member

    Публикаций:
    0
    Регистрация:
    23 мар 2006
    Сообщения:
    111
    IDE - это вообще не проблема.
    Я вообще супер-умными штуками редко пользуюсь, мне достаточно колонки файлов слева и редактора справа - а у ж это вам обеспечит чуть ли не gedit.

    Lisp - он функциональный ведь? Как и Haskell. Надо будет попробовать, что за звери такие, хотя бы для того, чтобы знать.
     
  9. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    _220
    Мультипарадигменный.
    http://ru.wikipedia.org/wiki/%D0%A1%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F
    Сравните Lisp с другими и всё станет ясно.
     
  10. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Здесь тоже красиво: http://www.prowiki.org/wiki4d/wiki.cgi?LanguagesVersusD
     
  11. _220

    _220 New Member

    Публикаций:
    0
    Регистрация:
    23 мар 2006
    Сообщения:
    111
    Это заговор какой-то! :)
    Что-то там лисп самый крутой. Чего ж мы такие глупые плюсами играемся?
     
  12. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Типо того ^)
     
  13. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    лисп появился фиг знает когда. есть ряд уклонений/расширений/потомков. не одна книга об ем писана. не одна реализация. но не взлетает. наверно, птица нелетная.

    а вот чем бы я заинтересовался, так это го. особенно с учетом растущей заюзаности андроида. ланг активно комитится. лучшие кадры белов на него брошены. совместим по линкеру с остальной кен-сс линейкой. яз простой, красивый, изначально многопоточный, умеет оперировать множествами. (дальше не скажу, ибо)
     
  14. Monogen

    Monogen New Member

    Публикаций:
    0
    Регистрация:
    5 сен 2008
    Сообщения:
    90
    CodeBlocks вроде поддерживает D. Сам не пробовал, но там про создании проекта можно
    выбрать тип D Application. Есть поддержка двух компиляторов: GCC D Compiler и Digital Mars D.
    CodeBlocks вроде ничего, так что среда есть.
     
  15. r90

    r90 New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2005
    Сообщения:
    898
    Booster
    Лисп очень специфичный язык. Программа на лиспе будет заметно медленнее и больше, чем программа на C или C++. Основной плюс лиспа -- это скорость разработки, возможность создать язык для решения конкретной задачи, и решать задачу в терминах задачи. Я слышал, что в этом с ним может сравниться разве что Smalltalk, но я не знаю smalltalk'а, чтобы утверждать определённо.
    qqwe
    Что ты подразумеваешь под "взлетает"? Приходит на смену C и C++? Lisp не может заменить C или C++.
    Я бы обратил внимание на другой факт: lisp появился уже фиг знает когда, и уже довольно давно удерживает к себе достаточно константный интерес. Если глянуть на фортран и васик -- два языка которые могут сравнится с lisp'ом по возрасту, -- где сейчас фортран, и где сейчас васик? А лисп остаётся.
    _220
    Все сходятся на том, что в хаскеллах и лиспах копошиться полезно для программерских мозгов. Для общего развития. Насколько же полезно выбирать хаскелл или лисп для решения конкретной задачи -- это уже зависит от задачи и программиста. Про хаскелл, честно говоря не скажу зачем он нужен, но он достаточно популярен: его список рассылки вечно набит сообщениями. Но мне он не понравился своим синтаксисом и теорией категорий, поэтому моё знакомство с ним завершилось вебботом для автоматизированного скачивания mp3 с одного из mp3-хранилищ. И в силу ограниченности знакомства я не могу говорить о хаскелле определённо. Он крут несомненно, алгебраическая запись рулит, краткость и мощность в одном флаконе. Может если разобраться с теорией категорий, и научится использовать эту краткость и мощность для ввода-вывода, то станешь Богом, но у меня не хватило Силы для этого.
     
  16. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    r90
    Не верно. Когда не было хороших компиляторов, то возможно так и было. Сейчас же компиляторы для лиспа сильно продвинулись, и генерят очень быстрый код. Хотя конечно есть вещи которые в гём будут тормозить, но и на С++ тоже можно написать тормоза. Вообще проблема таких языков как лисп или хаскел, это довольно высокий порог вхождения, необычность синтаксиса. Лисп с его скобочками уж очень непривычен. ^) Ещё проблема в том, что документации на великом и могучем маловато. Страуструп писал, что C++ не является полноценным OOП языком, как Smaltalk или лисп. И его можно рассматривать как переходный, к более полноценным. В общем С++ для быдла, лисп для Элиты. ^)
     
  17. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    За популярными языками стоят мощные корпорации, вот собственно и вся причина.
     
  18. r90

    r90 New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2005
    Сообщения:
    898
    Booster
    Да, продвинулись, но не догнали C/C++. Возьмём к примеру sbcl, я не пытался сравнивать его код по скорости с кодом C++, поэтому цифр не могу привести*, но меня ужасает размер его core -- 70+ метров, это без дополнительных подгруженных библиотек. Недавно я открыл для себя Clozure-CL -- вроде бегает быстро, компиляет в нативный код, стартует достаточно резко, чтобы я не задумывался бы о core. Но пока я не пытался запустить в нём opengl часики и замерить fps.
    Проблема ещё и в том, что программы на lisp сложнее оптимизировать. Есть общие рекомендации, типа декларировать типы везде где только можно, чтобы типизация по-возможности была бы статической. Но у лиспа есть фичи заложенные фундаментально, которые не позволяют создать код столь же эффективный как и код C++. Компиляция с safety 0 отчасти может помочь, но лишь если код написан _правильно_. Не, лиспу далеко до C/C++ по производительности.

    *) цифры можно посмотреть на http://shootout.alioth.debian.org/
     
  19. Bioworm

    Bioworm New Member

    Публикаций:
    0
    Регистрация:
    20 янв 2006
    Сообщения:
    7
    Адрес:
    Botswana
    Из "нестандартных" языков могу посоветовать взглянуть на Forth. Вот там, кстати, можно добиться скорости, сравнимой с C и C++. Да и вообще он всем хорош, единственный минус -- библиотек под него немного.

    http://www.forth.org.ru/~ac/rationale/forth.txt
     
  20. _220

    _220 New Member

    Публикаций:
    0
    Регистрация:
    23 мар 2006
    Сообщения:
    111
    Да, производительность у плюсов недостижимая. Просто демон какой-то.
    Недавно (перед тем, как начать кодить проект) все же решил выбрать язык и сделал самопальный тест производительности ("чистый" код, работа с памятью, виртуальные и обычные вызовы и т.д.). По результатам теста С++ обходит D в разы, а Java кое-где в десятки раз. Начал писать на плюсах :lol: . Сила древних, мать ее....