Свежая версия компилятора DMD, 1.050 и 2.035, содержит ключ –X – генерация JSON-файла вместе с компиляцией объектного кода.
Допустим, у нас есть простая программка:
module hello_world;
import std.c.stdio;
class HelloWorld {
public void sayHello() {
printf( "Hello, World!\n" );
}
}
int main() {
auto greeter = new HelloWorld();
greeter.sayHello();
return 0;
}
Запускаем dmd с ключиком –X и получаем JSON-файл следующего содержания:
{
"name" : "hello_world",
"kind" : "module",
"file" : "my_hello_world.d",
"members" :
[
{
"name" : "HelloWorld",
"kind" : "class",
"line" : 5,
"base" : "Object",
"members" :
[
{
"name" : "sayHello",
"kind" : "function",
"type" : "void()",
"line" : 6
}
]
},
{
"name" : "main",
"kind" : "function",
"type" : "int()",
"line" : 11
}
]
}
(форматирование я чуть подправил, чтобы лучше воспринималось).
Имхо, очень полезная штука для разных инструментов – начиная от IDE и заканчивая всякими анализаторами и генераторами кода (например, для сериализации/десериализации). Штука эта пока не законченная, сам Брайт признается, что пока не знает точно, что именно нужно помещать в JSON описание. Плюс есть маленький баг – компилятор с ключом –X падает, если в файле нет директивы module. Но это явно временные недостатки.
В общем, в очередной раз возникает вопрос – неужели из D так ничего хорошего и не получится?
Это да, из "новых" ЯП последних лет мне его жаль, хотя от программирования на нативе далек. The TIBE Index History D
ОтветитьУдалитьНужно сказать, что такие языки, как Eiffel, OCaml и D -- они ближе к управляемым языкам. Сборка мусора, контроль за границами массивов и пр. Писать на них практически так же безопасно, как и на Java.
ОтветитьУдалитьА вот индекс TIOBE для D -- явно незаслужен. Говорят о D много. Гораздо больше, чем реально используют.
Будем посмотреть, что из него выйдет. Все-таки сейчас порты на LLVM и GCC должны служить сдерживающим фактором развития языка.
Да D скоро со всеми фишками из управляемых языков будет :)
ОтветитьУдалить2Rustam: хочу тебя спросить -- ты сам как думаешь, есть у D перспективы на какое-то время устаканиться или же он таким "перекати поле" и останется?
ОтветитьУдалитьТиобовский график вполне повторяет мои настроения по D :(
ОтветитьУдалитьНе знаю у меня только надежды уже остались. Но остановится просто необходимо.
Мне кажется пока у D все еще есть шансы. Но релиз в ближайший год необходим.
У меня в последнее время надежды даже не на DMD, а на его порт на LLVM. Если в течении ближайшего времени выйдут версии D2 на LLVM и DMD (скажем, в течении следующего года), тогда еще можно будет что-нибудь экспериментальное замутить на D (все-таки иммутабельность (пусть даже вирусная) и высокая скорость компиляции -- очень привлекательные штуки).
ОтветитьУдалитьПо моему сначала нужен стабильный релиз двойки. Я вот даже в одиночку ни хочу что-то начинать на D без релиза.
ОтветитьУдалитьА вот индекс TIOBE для D -- явно незаслужен.
ОтветитьУдалитьНу вот смотрите, свежее:
OOC для C, — это как Scala для Java
На момент когда я писал этот пост - ни один из комментаторов не упомянул D. А даже наоборот - "... я все равно в шоке. Почему никто не придумал этого раньше?"
D -- они ближе к управляемым языкам.
Того и жалко. Но лично ни появление, ни исчезновение современного ЯП и компилятора к нему в нативный код - не почувствую.
2Skynin
ОтветитьУдалитьНа момент когда я писал этот пост - ни один из комментаторов не упомянул D.
Да там, судя по комментариям, вообще ламеры какие-то малолетние пособирались :) Я и саму заметку с трудом прочел -- пацанский стиль хорош в байках типа "закидываю я ее ноги себе на плечи...", но не при обзоре языка программирования.
На момент когда я писал этот пост - ни один из комментаторов не упомянул D.
Я поясню почему мне интересен D. Поскольку он очень похож на C и C++. И перенос старого кода из C++ в D, во многом, всего лишь дело техники (если нет извращений на тему Modern C++ Design, а у меня нет такого). Т.е. пару лет назад была у меня надежда, что вот-вот D стабилизируется, я начну процесс портирования имеющегося софта на него и года через три-четыре буду программировать на современном, безопасном языке со сборкой мусора и супербыстрой компиляцией. Но не вышло, к сожалению.
Смена C++ на D выглядела тогда (да и сейчас) гораздо более простой и дешовой, чем смена C++ на Java или C#. Поскольку в последнем случае возможен только big rewriting, а это самоубийство.
И перенос старого кода из C++ в D, во многом, всего лишь дело техники (если нет извращений на тему Modern C++ Design, а у меня нет такого).
ОтветитьУдалитьНаоборот Modern извращения на C++ превращаются на D в красивый читабельный код :)
У D все-таки в отличии от майнстримных управляемых языков присутствует очень мощное (мощнее чем на С++) метапрограммирование на шаблонах.
ОтветитьУдалитьНаоборот Modern извращения на C++ превращаются на D в красивый читабельный код :)
ОтветитьУдалитьНу это ж еще превращать нужно :) А обычный код чуть ли не 1 в 1 переносится :)
Это да :)
ОтветитьУдалить