Подтвердить что ты не робот

Является ли язык D2 готовым к производству?

Я с нетерпением изучаю язык D в эти последние дни. Это похоже на сон для меня, как сторонник нескольких миллионов строк кода на С++. Мы поддерживаем высокую производительность с низкой задержкой, и ясно, что С++ был единственным вариантом за последние десять лет. Теперь я вижу D.

Итак, мои вопросы довольно очевидны. Могу ли я начать думать о миграции коммерческого программного продукта на язык D? Есть ли какой-либо пример такой миграции или существующий большой коммерческий программный продукт, написанный на D с нуля?

Как безопасно инвестировать в этот язык сейчас? У нас есть компилятор качества производства и отладчик? Можно ли предположить, что они будут поддерживаться и развиваться?

Если у вас есть опыт перехода с С++ на D, было бы здорово услышать об этом от вас.

PS. Под D я имею в виду D2

Спасибо

4b9b3361

Ответ 1

Я бы не подумал, что D2 уже готов к производству, но он приближается. Определение языка довольно стабильно. На данный момент должно произойти очень небольшое изменение (хотя некоторые аддитивные изменения, предназначенные для устранения ключевых проблем на языке, могут возникать). Разработка на компиляторе движется вперед очень быстро, и многие ошибки исправляются. Но на данный момент, если вы сильно используете D2, вы столкнетесь с ошибками компилятора, особенно если используете более новые языковые функции. И не все эти функции были полностью реализованы (например, alias this и inout), поэтому, когда TDPL в основном верен, dmd еще немного позади.

Кроме того, хотя стандартная библиотека, Phobos, очень хороша в целом, и большая ее часть стабильна, она все еще очень продвигается. Мы стараемся избегать немедленного изменения изменений, помещая вещи, которые мы удаляем с помощью надлежащего пути устаревания (обычно 6 месяцев, как запланировано, для отсрочки и 6 месяцев как устаревшие до полного удаления), но иногда происходят немедленные нарушения (и иногда компилятор вызывает нарушения во время работы). В некоторых случаях все модули будут переработаны (например, std.xml и std.stream). Возможно, самым большим раздражением в этом отношении является std.container, который является довольно новым, в нем еще не так много, и он может иметь значительную редизайн, так как Андрей Александреску разбирает, как мы будем заниматься управлением памятью в Это. Таким образом, поддержка контейнеров улучшается, но в целом отсутствует. В целом, многие Phobos довольно стабильны, но определенно не установлены в камне.

Определенная поддержка как dmd, так и phobos в том, что если вы отправляете вещи в bugzilla или обсуждаете их на в группе новостей, люди обычно будут очень полезны, и разработчики будут своевременно исправлять ошибки, но большинство людей, работающих над этим, делают это в свободное время, поэтому иногда это может занять некоторое время. Однако переход на github определенно улучшил ситуацию. Я знаю, что Digital Mars предоставляет дополнительную поддержку для dmc, если вы платите за нее, но я не знаю, будут ли они делать то же самое для dmd, Я ожидаю, что у них будет хороший шанс, хотя они (хотя, если они и не сейчас, я ожидаю, что они сделают это в будущем).

Что касается качества компилятора, dmd использует dmc Digital Mars в качестве своего backend, а dmc - это новейшее воплощение первого компилятора С++ для компиляции кода изначально (в отличие от перевода его на C сначала), а Walter Bright, создатель D, работал над этим с тех пор, как создал его. Он один из лучших компиляторов и создал ряд оптимизаций, которые стали стандартными в компиляторах на С++ (например, Оптимизация возвращаемого значения) но на dmc не так много людей, которые работают над ним, и есть некоторые области, в которых он отстает (например, оптимизация с плавающей запятой), а D является достаточно новым, что предстоит много работы по его оптимизации, Поскольку ошибки исправлены, я уверен, что больше внимания в конечном итоге сдвинется в сторону оптимизации языка, и в большинстве случаев он будет наравне с С++ в большинстве случаев (и лучше в некоторых), но сейчас это действительно зависит от вашего кода. Иногда D находится на одном уровне; иногда это не так.

Некоторые люди используют D2 в производственном коде (в частности, я знаю, что Адам Д. Руппе использует его для веб-разработки с компаниями, с которыми он работает - он часто выступает в группе новостей D), но я не думаю, что их очень много, и они обычно избегают новых, более привлекательных особенностей языка (обычно это худшие ошибки). Как стабильно это будет, действительно будет зависеть от того, что вы делаете с языком.

В вики есть хорошая информация о работе, которую предстоит выполнить, и этот недавний поток в новостной группе также имеет хорошую информацию.

D определенно подходит к тому моменту, когда я буду считать его готовым к производству, но на данный момент определенно существует определенный риск. Это здорово для вещей для хобби, но если ваш жизненный уровень зависит от него, я не знаю, стоит ли еще этого риска. Тем не менее, он приближается. Вероятно, стоит потратить ваше время, чтобы изучить его, попробовать, поэкспериментировать с ним и т.д. Но я бы не просто погрузился в ваш производственный код и преобразовал все это в D. Это может сработать отлично, но это может не сработать. Я ожидаю, что через год я смогу сказать, что D2 является готовым к производству, но я не знаю, насколько скоро я буду чувствовать себя комфортно в этом.

Ответ 2

Есть ли какой-либо пример такой миграции или существующего большого коммерческого программного обеспечения продукт написан на D с нуля?

Я не верю, что в D были большие коммерческие миграции, хотя существует несколько компаний, использующих D1. Я еще не знаю, какие компании используют D2.

Как безопасно инвестировать в это язык сейчас?

Есть ли у нас компилятор качества продукции и отладчик?

Компилятор DMD очень силен и постоянно совершенствуется, но по-прежнему не хватает некоторых ключевых областей. Например, его генерация кода для операций с плавающей запятой довольно не хватает, а поддержка 64-битных данных является шероховатой (хотя и улучшается). Существует также GDC, который я не использовал, но у меня создается впечатление, что он слабее DMD.

Можно ли предположить, что они будут поддерживается и развивается?

Я думаю, что очень безопасно предположить, что компиляторы будут поддерживаться и развиваться. Просто просмотрите страницу github для D. Активность сильна и растет. Количество исправлений ошибок происходит быстрыми темпами, и я не вижу признаков его замедления.

Ответ 3

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

Быстрый и грязный повтор: если вам нужно спросить, вы не должны использовать D в процессе производства.

Некоторые не считают D улучшением, а другие считают, что он останется в "сферах нерелевантности". Взгляд на его историю показывает, что у нее есть все, что нужно, чтобы выжить.

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

  • Размер команды. Сколько разработчиков необходимо получить на D на ранних этапах до его завершения.
  • Какие библиотеки понадобятся, и у нас будет время и силы для создания или переноса библиотеки.
  • Можем ли мы обрабатывать исправления ошибок в используемых библиотеках.
  • Нужна ли архитектура, которая не поддерживается DMD

Это проблемы, которые будут частью обсуждения, особенно для молодого языка, такого как D, который даже нарушил совместимость с существующими библиотеками, что делает его всего около 4 лет (и до сих пор сохранилось). Я не использую другие компиляторы, поэтому не будет иметь поддержки от DMD, история других компиляторов не является звездной, и хорошо иметь знания, что может быть другой компилятор, чтобы отступить. Конечно, если у вас есть экипаж, который может поддерживать компилятор...

Я думаю, D может быть использован в производстве, но это то, что, вероятно, должно быть очень контролируемым. Хотелось бы, чтобы кто-то, кто знаком с D в команде, собирался создать с ним производственный продукт, пока.