Автор Тема: Опыт с D.  (Прочитано 8792 раз)

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Опыт с D.
« Ответ #15 : Декабрь 10, 2011, 11:10:02 pm »
Пощупал IDE (DDT) - вполне вменяемо. Основной минус - нет поддержки дебеггера. А так - навигация по коду на уровне. AST есть. Автокомплит есть. Расцветка синтаксиса есть. Инкрементальный билд и подсветка ошибок на лету (без запуска компилятора вручную) - есть.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Опыт с D.
« Ответ #16 : Декабрь 11, 2011, 12:05:18 am »
Зарисовка на полях:

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

В D у enum'a есть понятие базового типа. Если у двух типов-енумов базовый тип одинаков, то их можно сравнивать, а вот присваивать нельзя. Пример:
enum A : int {A, B, C} // int -- базовый тип
enum B : int {A, B, C} // но его можно было и не писать, ибо int базовый тип по умолчанию

A a; // a == A.a -- по умолчанию инициализируется первым значением
B b;

a == b; // можно
a = b; // нельзя
Причем в переменной типа enum (в примере - a, либо b) не содержится каких-либо дополнительных тэгов. То есть там по честному просто int Будет лежать (или какой там у нас базовый тип). Никакого дополнительного оверхеда.

В качестве базового типа может быть любой тип данных. лишь бы там была определена операция <. То есть мы можем определить какой-нибудь свой тип (структуру, класс) и подсунуть его в виде базового типа данных в enum.

Ну, например можно строку:
enum  Strings : string {A = "A", B="B"}
Strings s = Strings.B;

Как и все остальное в D у меня здешние enum'ы не вызывают wow-эффекта. Например искаропки у enum'a нельзя на этапе компиляции (вроде бы) и на этапе исполнения узнать какие у него вообще есть компоненты-константы. По крайней мере нет простого способа это узнать. С другой стороны, через свой базовый тип это делается довольно таки просто.

В общем, смешанные чувства, как и от всего остального в D. И, возможно, это и есть правильно. (wow-эффект всегда настораживает, по крайней мере лично меня).
« Последнее редактирование: Декабрь 11, 2011, 12:07:33 am от valexey »
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Опыт с D.
« Ответ #17 : Январь 09, 2012, 01:06:02 pm »
update: Попробовал IDE на базе eclipse (ddt) - вполне себе ничего. По исходникам ходить умеет (то есть ctrl+click на интересной функции или типе и оно показывает то место где оно было объявлено, в том числе и по стандартным либам ходит), автокомплит есть, фолдинг есть, есть замашки "структурного редактора" - буду отучать, а то оно считает что лучше знает как мне форматировать код. Работает с любой системой сборки.

Из минусов - нет дебагера.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Опыт с D.
« Ответ #18 : Январь 14, 2013, 08:58:55 pm »
Оставлю ка я тут вот эту штучку: http://vibed.org
http://habrahabr.ru/post/142964/

Вдруг кому-то пригодится. :-)
Y = λf.(λx.f (x x)) (λx.f (x x))

kkk

  • Гость

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Опыт с D.
« Ответ #20 : Январь 15, 2013, 05:56:14 pm »
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Опыт с D.
« Ответ #21 : Март 01, 2013, 10:55:59 am »
Основной компилятор D будет переписан на D (сейчас он на С++ писан):
http://www.linux.org.ru/news/opensource/8906434
Цитировать
Проект набирающего популярность языка D стал достаточно зрелым чтобы отказаться от использования С++. Как сообщает один из его авторов, Андрей Александреску (Andrei Alexandrescu), в ближайшее время будет начат проект по переписыванию компилятора языка D с С++ на D. Это позволит не только более полно использовать весь потенциал самого D, но и решить ряд проблем местами не слишком красивой архитектуры компилятора.

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

http://dlang.ru/d-budet-perepisan-s-s-na-sam-d
Y = λf.(λx.f (x x)) (λx.f (x x))