LINUX.ORG.RU

[D-lang] Итоги и небольшой обзор о состоянии языка


0

0

Не многим более часа спустя, после боя колоколов, мною был создан тред о языке D. В содержании я описал свой относительно поверхностный взгляд на его текущее состояние. Благодаря некоторым личностям мне удалось взглянуть ближе на «внутреннее» состояние проекта, коммьюнити, языка, реализаций. И да, мне есть что высказать отдельно, в данном треде.

Маленькое введение:
На данный момент язык D является успешно воскрешаемым системным языком программирования высокого уровня. Хочется подчеркнуть два слова: «Системный», «Высокоуровневый». Данные слова редко когда можно встретить рядом. Так получилось что что «Системный» стало синонимом слов: «сложный», «ручной», «быстрый», «низкоуровневый». А «Высокоуровневый»: «медленный», «лёгкий», «большой», «безопасный».

Язык D включает в себя самое лучшее:

  • он быстрый - компиляция идёт напрямую в бинарный код, как в c, cpp, pascal
  • он лёгкий - синтаксис не сложен. Поддерживаются все возможности CPP. Внешне синтаксис и семантика почти идентичны аналогам в C#.
  • он безопасный - за памятью следит сборщик мусора, более не нужно следить за памятью вручную. А сам GC очень быстр ибо его создателями были и являются мировые специалисты по оптимизации. Благодаря конструкциям try, можно легко отловить все проблемы и ошибки, при этом легко оперируя объектами{ом} ошибки.

За пруфами - http://www.digitalmars.com/

Я узнал о том что у нас есть русское коммьюнити, которое активно занимается D - d@conference.jabber.ru
Я пообщался с людьми и смог узнать много нового. И так, обо всём по порядку.

Сейчас есть 2 реализации, на которые стоит обратить внимание:

  • DMD - официальная реализация. Сейчас активно развивается D2.0, который сейчас очень даже жив и используется всеми. Последний релиз был несколько дней назад. Сейчас данную реализацию используют почти все, в т.ч. и я.
  • LDC - фронтэнд к LLVM. В данный момент слабо развивается, не поддерживает D2.0. Как говорят в коммьюнити, лучшим вариантом для ldc будет вовсе отказ от цели «поддержка D2.0». Увы, это охначает что половина последних проектов прост не запустится и не будет запускаться на LDC. Лично я, пока, забыл про LDC.

Развитие языка, в общем смысле этого слова, представляет из себя странный процесс: основные разработчики занимаются компилятором и стандартом, а всё остальное делают коммьюнити. Лично я пока не заметил чтобы хоть одна коммерческая компания приложила руку к развитию D.

По сему, всё что было и есть в D - творение рук человеческих, а не «лап коммерческих». Что удивительно, коммьюнити успело сделать уже многое:

  • Биндинг к GTK - gtkD. Развивается активно. Увы, сейчас есть пара багов из-за изменений в последнем DMD(ну не успели пока).
  • Биндинг к QT - qtD. Достаточно большая и сильная разработка. Заявлено что будет реализация биндингов ко всему функционалу QT - в т.ч. и DB, OGL etc.
  • Полноценный 3D-движок на opengl с поддержкой glsl - moonglide. Сейчас активно разрабатывается. О всех подробностях разработки всегда можно наблюдать на d@c.j.r.
  • Продвинутая система сборки - xfBuild. Сейчас всё больше и больше используется вместо dsss(ныне почти не развивается). Даёт действительно большие возможности. Отличная альтернатива make.
  • Интерпретатор+скриптовой язык - miniD. Уже вышел miniD2, который поддерживает D2.0!
  • Хорошая библиотека GUI для opengl-based приложений - hybrid. Сейчас используется в moonglide. Очень и очень хорошая либа.
  • 2D движок для игр с редактором - ArcLib. От создателя DreadMoon Linux!

И ещё десятки биндингов и хороших проектов: http://www.dsource.org/projects/ http://h3.team0xf.com/ http://talks.dprogramming.ru/

Всё это делает коммьюнити, при этом не просто как «лисперы» и «хаскелеводы», ибо оно нужно и иначе никак, а так, ради забавы. Всё это развивается, несколько людей думают заняться хорошим ORM, кто-то хочет сделать нормальный биндинг python, кто-то переписывает свой проект на D. Язык имеет большой потенциал и развитие идёт. Одна проблема - люди. Цель данного треда - призвать новых людей, заинтересовать всех кого можно. Лично я сейчас прекратил разработку редактора на python и начинаю изучать глубже сам язык D чтобы помочь gtkD в написании биндингов.

Если у вас есть лишнее время, вам надоело считать байты на сях, вы уже погрязли в скобках лиспа и не знаете как из них выбраться, если вы осознали что до релиза(а не промежуточных отчётов-сырцов) UnladenSwallow ждать ещё не мало, если вам надоело что очередной билд вашего приложения течёт из-за того что вы забыли добавить ещё 2-3 звезды(разыменование) в начало переменной, то

присоединяйтесь к нам: d@conference.jabber.ru.

Надпись на этикетке: жир - 0%, бЕлки - ни одной, ккал - овер9к



Последнее исправление: tia (всего исправлений: 5)

> мировые специалисты по оптимизации

premature optimization is the root of all evil (c)

anonymous
()

что мне нового даст Д по сравнению с кошерным и вездесущим АНСИ Си и недоязычком цепепе? А ничего.

anonymous
()
Ответ на: комментарий от tailgunner

Пофиксил, дада.

что мне нового даст Д по сравнению с кошерным и вездесущим АНСИ Си и недоязычком цепепе? А ничего.

Судя по вашему сообщению, вам и АНСИ Си ничего не дал.

tia
() автор топика
Ответ на: комментарий от tia

Блин вот точно, как разберусь с универом, попробую написать одного консольного демона на D, как там дела, кстати, с парсерами json'а?

Gorthauer ★★★★★
()

Преимущества такие же как у какого-нибудь oberon'а/modul'ы. А компилятор есть для него? Под какие платформы?

ostin ★★★★★
()
Ответ на: комментарий от ostin

Не думал что следовало делать полноценный обзор по языку.
DMD - кроссплатформенный компилятор.
Преимуществ в разы больше чем у ваших мудулоберонов.

как там дела, кстати, с парсерами json'а

Советую глянуть форум. Увы, не в курсе json'а, но xml парсят на раз-два - http://www.dsource.org/projects/xmlp

tia
() автор топика

Количество пользователей: 0 Количество проектов: 0 Востребованность в RL: отсутствует Комюнити: отсутствует Поддержка: отсутствует Литература: отсутствует

Ну выводы я думаю сделаете сами.

bibi
()
Ответ на: комментарий от bibi

Вы забавны. Написали «от балды» и говорите что вы Иисус.
Проектов - сотни.
Востребованность - маленькая.
Коммьюнити - не самое большое, но сильное.
Поддержка - слабовата.
Литература - мало.
Потенциал - больше всех языков что сейчас есть.

tia
() автор топика
Ответ на: комментарий от tia

Потенциал - больше всех языков что сейчас есть.

Сотни проектов - это тождественно тому, что их нет. Сотни тысяч - уже теоретически можно о чем то разговаривать. Но все равно чрезвычайно слабо и мало распространено. Потенциал же - много их молодых да горячих. Все давно уже на кладбище.

'It's good enough' (tm) побеждал, побеждает и будет побеждать. Всегда. Идеальные вещи ровным счетом никому не нужны.

bibi
()
Ответ на: комментарий от bibi

>Идеальные вещи ровным счетом никому не нужны.
Грустно слышать что кроме мегакорпораций и «продавшихся людей» такое могут говорить обычные люди.

tia
() автор топика
Ответ на: комментарий от tia

Грустно слышать что кроме мегакорпораций и «продавшихся людей» такое могут говорить обычные люди.

Это смотря что понимать под термином 'обычные люди'. При этом не будучи в курсе о собеседнике. В любом случае, здоровый реализм не помешает. И обычным людям и необычным.

bibi
()

Гм, а можно кратенькое сравнение с, скажем, Си? Не тролинга ради, а ты меня заинтересовал :-). В плане как синтаксиса, так и возможностей. :-)

alg0rythm
()
Ответ на: комментарий от bibi

Не знаю, но осуждаю, если вы не против.
Хотел добавить что-то вроде «ну вы же ещё не продались, я надеюсь», но наивно полагал что... Забудьте.

tia
() автор топика
Ответ на: комментарий от tia

Не знаю, но осуждаю, если вы не против. Хотел добавить что-то вроде «ну вы же ещё не продались, я надеюсь», но наивно полагал что... Забудьте.

Безумству храбрых поём мы песню. Удачи в бою. Может, и у вас получится. Гугл вон и тот не сразу строился. Питон опять же как пример: если бы не гугл кто бы сегодня вообще знал об этом поделии? А ведь нет, вытянули. За уши. И ничего, впереди планеты всей. Глядишь, может и на D кто-то из высоких обратит свой взор.

bibi
()
Ответ на: комментарий от alg0rythm

Я бы это хотел подготовить отдельной статьёй, но не сейчас ибо сам в синтаксисе особо не профи.
Чтобы не врать, дам ссылки:
Список фич, которые приводятся в большинстве сравнений - http://www.digitalmars.com/d/2.0/comparison.html
Сравнение препроцессоров - http://www.digitalmars.com/d/2.0/pretod.html
Старое сравнение(вроде, ещё D1.0) - http://prowiki.org/wiki4d/wiki.cgi?LanguagesVersusD

Лично мне нравится то что синтаксис очень похож на C#, да и то что есть «родной» GC - великолепно.

tia
() автор топика

Твроему потсу не хватет слов: и это действительно работает!

а по теме компилер запукаеся под архитектурами отличными от x86? Сорцы компилера открыты?

wfrr ★★☆
()
Ответ на: комментарий от bibi

>Глядишь, может и на D кто-то из высоких обратит свой взор.
Да, я тоже хочу в это верить, вот пытаюсь продвигать :)

tia
() автор топика

Несколько уточнений:

он лёгкий - синтаксис не сложен.

Только по сравнению с другими мейнстримными языками.

Поддерживаются все возможности CPP.

Кроме множественного наследования реализации (не нужно. Достаточно множественного наследования интерфейса, а когда нужно - можно использовать mixin) и текстового препроцессора (просто не нужно).

Я узнал о том что у нас есть русское коммьюнити, которое активно занимается D - d@conference.jabber.ru

Лучше ##d-ru @ Freenode. А ещё лучше и туда и туда, т.к. к некоторым сетям у некоторых членов коммьюнити по разным причинам нет доступа.

Хорошая библиотека GUI для opengl-based приложений - hybrid.

Для любых приложений. Рисовалка сменяемая. Можно и Xlib и GDI прикрутить. Но разработчик - геймдев, поэтому пока только OpenGL.

2D движок для игр с редактором - ArcLib. От создателя DreadMoon Linux!

Скорее наоборот :) DreadMoon Linux - дистр от разработчика ArcLib, содержащий её из коробки.

вы уже погрязли в скобках лиспа

Скобки - мелочь. На самом деле синтаксис - скорее плюс. У Лиспа другие проблемы ;)

naryl ★★★★★
()

а по теме компилер запукаеся под архитектурами отличными от x86?

DMD - нет. wfrr, по-моему я уже лично тебе эту ссылку пятый раз даю: http://www.dsource.org/projects/ldc/wiki/PlatformSupport

Сорцы компилера открыты?

Да. DMD GDC LDC

anonymous
()
Ответ на: комментарий от naryl

Тебе же виднее ;) Проблем то хватает, а какие - не цель данного треда.

tia
() автор топика
Ответ на: комментарий от wfrr

>>нет

Втопку.


Сходите по ссылке.

Да


Ой ли? «The compiler back-end source code is available but not under an open source license.»


Вопрос был про открытость? Фронтенд свободен. DMD - открыт, но не свободен. Symantec'овский бэкенд ничего особенного из себя всё-равно не представляет. Я пользуюсь LDC, чего и вам желаю. Если охота поэкспериментировать с нестабильной веткой, то несвободность не должна стать препятствием. Главное - исходники читать можно.

naryl ★★★★★
()
Ответ на: комментарий от tia

Спасибо, интересно. Побыдлокодю на досуге :-).

И еще вопрос: можно из D вызывать системные вызовы Unix? Поискал по сайту, но ничего не нашел :-(

alg0rythm
()
Ответ на: комментарий от wfrr

язык с несвободной реализацией - уг

Не так давно, каких то лет десять чуть больше назад, всеми любимый язык C в подавляющем своём большинстве был языком с несвободной реализацией. И ничего, как-то да выжил.

bibi
()

а где описание киллер-апсов? Супер-синтаксического сахара? Бенчмарков на shootout?

thevery ★★★★
()
Ответ на: комментарий от bibi

> Не так давно, каких то лет десять чуть больше назад, всеми любимый язык C в подавляющем своём большинстве был языком с несвободной реализацией.

«Был»? Он и сейчас такой.

tailgunner ★★★★★
()
Ответ на: комментарий от wfrr

> язык с несвободной реализацией - уг

У C тоже есть несвободные реализации и ничто не мешает компилить linux gcc.

Почему тот факт, что у D есть несвободные (но открытые) реализации должно быть проблемой?

naryl ★★★★★
()
Ответ на: комментарий от tailgunner

«Был»? Он и сейчас такой.

Ну не скажи. Все-таки GCC, бесспорно, составил серьезную конкуренцию закрытым аналогам. А есть ещё OpenWatcom который даже как-то работает а так же кучка мелких маргинальных реализаций. Нет, C сегодня уже нельзя назвать закрытым языком. Да, MSVC закрыт, но это уже не решает до такой степени, как тогда.

bibi
()
Ответ на: комментарий от naryl

Почему тот факт, что у D есть несвободные (но открытые) реализации должно быть проблемой?

Это не является проблемой. Если бы D сегодня был закрытым но при этом с таким бакендом и коммюнити, как скажем имел Watcom C во времена своего расцвета - может и не было бы ему цены. А так... Хоть тысячу раз открытый от этого ничего ровным счетом не поменяется.

bibi
()
Ответ на: комментарий от bibi

>>> лет десять чуть больше назад, всеми любимый язык C в подавляющем своём большинстве был языком с несвободной реализацией.

«Был»? Он и сейчас такой.

Ну не скажи

Ты сомневаешься, что MSVS популярнее всех реализаций GCC? OpenWatcom и прочее можно не учитывать.

tailgunner ★★★★★
()
Ответ на: комментарий от alg0rythm

> можно из D вызывать системные вызовы Unix? Поискал по сайту, но ничего не нашел :-(

Либо объявляем сами (если в stdlib'ах нет):
extern(C) int printf (char *format, ...);

Либо используем либы. std.linux и std.c.linux в Phobos и tango.stdc.posix и tango.sys.linux в Tango.

naryl ★★★★★
()
Ответ на: комментарий от tailgunner

Ты сомневаешься, что MSVS популярнее всех реализаций GCC?

Смотря где. На десктопе - несомненно. Лишь сумасшедший будет использовать в Windows среде GCC или вообще что-то, отличное от MSVC. В серверной же стихии - это ещё большой вопрос.

OpenWatcom и прочее можно не учитывать.

Согласен.

bibi
()
Ответ на: комментарий от Gorthauer

Только хотел написать про это. Да, можно использовать сишные либы без проблем.

а где описание киллер-апсов? Супер-синтаксического сахара? Бенчмарков на shootout?

Слепым бесполезно что-то показывать.

tia
() автор топика
Ответ на: комментарий от bibi

Проблема в том, что D это нисколько не идеальная вещь(не MIT design(в противоположность worse is better) т.е, если ты это имел ввиду). D это просто говно, высер сбрендивших идиотов вроде александреску и пр.

Love5an
()
Ответ на: комментарий от bibi

>Лишь сумасшедший будет использовать в Windows среде GCC или вообще что-то, отличное от MSVC.
С чего это вдруг?

anonymous
()
Ответ на: комментарий от bibi

>В серверной же стихии - это ещё большой вопрос.

а что подразумевается под «серверной стихией»?

thevery ★★★★
()
Ответ на: комментарий от thevery

> т.е. нету?

Есть. Но зачем? Если вы этим оцениваете языки, могу только посочувствовать. В любом случае - в гугл.

Автор shootout при переходе на новую систему половину языков выкинул. Например, tcl и prolog.

naryl ★★★★★
()
Ответ на: комментарий от Love5an

Проблема в том, что D это нисколько не идеальная вещь(не MIT design(в противоположность worse is better) т.е, если ты это имел ввиду). D это просто говно, высер сбрендивших идиотов вроде александреску и пр.

Ну для кого-то он может быть и вполне идеален. И, охотно верю, что люди не лукавят но действительно так считают. Не вижу в этом никаких противоречий. Ибо идеальность сама по себе вещь чрезвычайно субъективная.

Ниша универсальных языков давно и крепко занята. Тем же С* Python, PHP, you name. Это железобетонный мейнстрим. У каждого из них есть свои плюсы и недостатки - конечно, у кого их нет. Но вот что совершенно точно так это то, что больше там в этой нише никого нафик не нужно. И D не является серебряной пулей. Я не вижу в нем ни одного принципиально нового или прорывного решения, которое бы смогло перевернуть мир. Это все уже в той или иной мере есть - или там или там. Или же без его фич можно прекрасненько обойтись. Зато есть масса естественных недостатков, связанных с низкой распространенностью. Они не являются чем то особенным для D - это проблема любого мелкого проекта, ограниченного в ресурсах. И пока они есть, эти недостатки, каким бы на взгляд некоторых, не был язык хорошим - он никому ровным счётом не нужен.

*Сперва* ищите образно говоря бабло и уже *потом* проталкивайте какую то идею. Тем более в мировом масштабе.

bibi
()
Ответ на: комментарий от naryl

Однако, тут товарищ выше написал, а Вы с ним вроде по этому поводу не спорили

LDC - фронтэнд к LLVM. В данный момент слабо развивается, не поддерживает D2.0. Как говорят в коммьюнити, лучшим вариантом для ldc будет вовсе отказ от цели «поддержка D2.0». Увы, это охначает что половина последних проектов прост не запустится и не будет запускаться на LDC. Лично я, пока, забыл про LDC.

и какой смысл, после этого в Вашем совете, если в реале получается, что поддержки архитектур отличных от х86 у Д2 нет и не предвидится. У меня, например ни дома ни на работе, ни одной 32 битной машины уже года как два нет. ИМХО, пока эта ситуация не изменится, а она похоже не изменится, у этого языка будущего НЕТ.

SLiDER
()
Ответ на: комментарий от bibi

>Ну для кого-то он может быть и вполне идеален. И, охотно верю, что люди не лукавят но действительно так считают. Не вижу в этом никаких противоречий. Ибо идеальность сама по себе вещь чрезвычайно субъективная.
Субъективная то субъективная, но вот идеальность какого-нибудь D это просто-напросто признак невежественности.

Универсальный язык, вообще, один, насколько я знаю. Common Lisp. И то, не совсем, покуда мы не на лисп-машинах пишем. Говорить об универсальности Cей, Плюсов, Додиеза, Похапэ или Питона это настолько глупо, что даже не смешно. У большинства из них столько недостатков, что никак кроме как говном их назвать язык не поворачивается.

Распространенность это конечно проблема, иногда, она ограничивает приминение в некоторых областях, но ставить ее во главу угла это признак долбоебизма, уж извините.

*Сперва* ищите образно говоря бабло и уже *потом* проталкивайте какую то идею.

Вообще-то, сперва надо как бы найти идею и убедиться в ее вменяемости, а то нахер ее проталкивать то, и, тем более, бабло для нее собирать?

Love5an
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.