Разработчики языка программирования D представили релиз основного эталонного компилятора DMD 2.100.0, который поддерживает системы GNU/Linux, Windows, macOS и FreeBSD. Код компилятора распространяется под свободной лицензией BSL (Boost Software License)...Подробнее: https://www.opennet.me/opennews/art.shtml?num=57311
Есть кто использует этот язык?
Александреску вроде как юзал
Есть те, кто использовал и даже любил когда-то, но забил из-за упоротого управления проектом. Моему любимому багу с захватом стековых переменных по ссылке в замыканиях уже 14 лет, а у вечно занятого Уолтера Брайта есть время только на новые фичи типа -betterC, но не на багфиксы. Языку сильно не хватает научной базы, и он стремительно (для его-то темпов развития) движется в братскую могилу, где рано или поздно окажутся все ЯП, которые развивались по принципу "примотаем новую фичу скотчем". То, что есть, часто работает не совсем гладко или вообще реализовано только наполовину. Багов в "stable" компиляторе столько, что я с моим везением и любовью к метапрограммированию напарывался на них стабильно раз в месяц. Для сравнения, в случае горячо нелюбимого здешними экспертами Rust, компилятор у меня не падал ни разу даже на nightly.Короче, язык крайне неоднозначный. Годные фичи есть, но и мусора хватает. В продакшен я бы на нём побоялся писать.
Ты про этот?
https://issues.dlang.org/show_bug.cgi?id=2043
У меня в последние несколько недель впечатление, что в сообществе зашевелились решать проблемы
Про этот. Только ты почитай, как закрыли баг - RESOLVED MOVED. То есть, частный случай другого, ещё не исправленного. Мечтать не вредно же? :)
Но есть кто и в продакшене использует
И чувствует себя хорошо ;)
А вы используете D в продакшн?
Каким образом?
Есть такие, и я за них рад. Но мне нужна надёжность, т.к. у меня талант напарываться на баги, иногда просто нелепые. Когда-то работал над игрой Jane's Hotel 3 и там у нас компилятор Visual Studio "оптимизировал" цикл отрисовки, и пока я не полез смотреть ассемблерный код, мы с коллегами тщетно пытались понять, как это может быть. Когда нашли причину, помогла вставка в цикл:int a = 0;
То есть, просто кусок мусорного кода. И вот так у меня постоянно. Может, в тестировщики податься? :)
> компилятор Visual StudioТакого компилятора не существует.
Если бы ты имел опыт работы выше нуля, ты бы не придирался к словам, так как все называют микрософтовский компилятор так
У вас логическая ошибка. Все не могут быть.
У вас синдром зануды.
А ты спалился что не программист. Так, абизянка с зачатками кодинга.
Ваше авторитетное мнение без единого факта мне так ранило душу, что сейчас же пойду поплачу и напьюсь до беспамятства, а потом начну новую жизнь по заветам опеннетных экспертов, которые лучшие программисты на планете, если верить им на слово.
> Ваше авторитетное мнение без единого факта мне так ранило душу, что сейчас
> же пойду поплачу и напьюсь до беспамятства, а потом начну новую
> жизнь по заветам опеннетных экспертов, которые лучшие программисты на планете, если
> верить им на слово.Настоящие программисты все же слегка занудны. Специфика профессии такая.
Занудность я терплю без проблем, если человек предоставляет факты и даёт полезные советы. А когда он голословно называет кого-то "абизянкой с зачатками кодинга", остаётся только вполне искренне посочувствовать злому душевнобольному человеку, побитому жизнью, и дальше писать код. Когда-нибудь и он подрастёт, сходит к психотерапевту, попьёт лекарства, вылечит депрессию (или что у него там) и займётся делом, а не хамством на любимом сайтике с новостями. Главное, чтобы не довелось с таким работать над одним проектом до излечения его недуга.
1: это были 2 разых анона
2: первый анон нудил как настоящий программист - даже про логику задвинул
> 1: это были 2 разых анонаОк.
> 2: первый анон нудил как настоящий программист - даже про логику задвинул
Одно дело - нудить по делу (простите за тавтологию), а другое - просто потому, что сказать по теме нечего, но очень хочется показаться умным, что и смешно, и грустно одновременно.
> int a = 0;В релизной версии компилятор это выпиливает. Как это влияет на ассемблерный выхлоп?
Это sequence point, транслятор обязан учитывать. Оптимизатор может "выпилить" результирующий код.Начиная с какого-то размера тела функции оптимизатор отключался. Возможно, какое-то такое же ограничение было и с циклами.
Может быть, транслятор видел в исходнике совсем не то, что писал человек.
Может он что-то подзабыл. Мы обычно лечили MSVC при помощи __asm nop.
Знаю, что не должно влиять, но влияло: без этого компилятор не генерировал код цикла. Ну баг это.
Это не мусорный код.
> пока я не полез смотреть ассемблерный
> код, мы с коллегами тщетно пытались понять, как это может быть..
> И вот так у меня постоянно.
> Может, в тестировщики податься? :)Очень просто это может быть. Если из десяти человек один догадался посмотреть код, в следующий раз он опять посмотрит, а девять так и будут филонить.
Ну, в той конторе (Realore Studios) это было только один раз. Чаще я напарываюсь на баги в тех программах, которые использую дома, потому что их много, есть время в них разобраться и попытаться выжать максимум возможностей, что и приводит к неожиданным открытиям. А уж основной компилятор D (dmd) я так замучал своим метапрограммированием, что он меня неоднократно ругал сегфолтами и стектрейсами, некоторые из которых уже были в bugzilla, а какие-то пришлось туда вносить самому.
> я напарываюсь на баги в тех программах, которые использую дома, потому
> что их много, есть время в них разобраться и попытаться выжать
> максимум возможностей, что и приводит к неожиданным открытиям.Потому что разработчики этих программ не подумали, не предусмотрели, что кто-то попробует использовать программу "нестандартным" образом. Вот где неожиданное открытие. :)
Вот потому я и забил на D, что там я использую стандартные документированные функции, прагмы и прочий сахарок, а они не работают так, как должны, фронтенд компилятора багованый, а возможности самого языка слишком часто недоработаны или реализованы некорректно. И это продолжается годами, а чинить ни у кого в core team нет желания. Особенно бесит такое отношение от создателя языка, Уолтера Брайта. Уж если ему пофиг на то, что стандартные возможности языка не работают, а вместо этого он делает новые фичи, которые нужны от силы 10% пользователей, то мне такой язык нафиг не сдался.
Во-первых сдешними, а еще непонятно зачем Ё впихивать, ну и непомерное количество англицизмов, что проще сразу на инглише вшпрехивать да?
Баг - жук, можно перевести на русский (столь не родной по-видимому не носителю языка) как кривая работа программы, косяк, проблема, ошибка программы.
Стек - стопка (набор значений).
Фича - особенность (криво применяется иностранцами с кривыми мозгами как нечто относящееся в добавлению функционала (набора операций)).
Багфиксы - исправление ошибок программы.
Реализовано - сделано.
Stable - устоявшийся.
Компилятор - вычислятор (computation - вычисление, соответственно compilation - вычисление в определенное представление понятное главному вычислителю.
Метапрограммирование - препрограммирование/перепрограммирование (метаболизм - перенесение в обранизме, эмболизм - перенесение в теле (можно перевести как превнесение), метаморфоз - превращение).
Продакшен - производство.Садись, два.
Не могу понять, толсто или тонко.
Во-первых, "здешними", а не "сдешними", грамотей х-в. Во-вторых, есть профессиональный сленг (жаргон). В-третьих, в русском языке полно заимствованных слов. В-четвёртых, поработай на досуге над знаками препинания. Можешь не вставать. Кол.
В русском языке нет слова "здешними", а есть слово "здешним" во множ. числе.Садись два!
Неплохо, кое-что возьму на вооружение. Но аналоги слов "компилятор", "метапрограммирование" и "продакшен" не понравилось."Компилятор" я перевожу как "сборщик", а для "линкера" использую перевод "компоновщик".
Для "метапрограммирования" есть слова в том же смысловом поле "автопрограммирование" и "кодогенерация", они частично пересекаются по смыслу, но не совпадают друг с другом точно.
Для последнего использую слова "рабочая среда" или "рабочий сервер" в противоположность тестовым и отладочным.
Линкер (редактор связей) собирает или компонует из объектных файлов исполняемый. Он и есть и сборщик, и компоновщик. Транслятор переводит с одного языка (исходного) на другой (целевой).
- Семён, неси стопки с производства! Я давеча сделал одну особенность, но после пары косяков всё уже не кажется таким устоявшимся...
Пишу на нём с 2015-го. После C/C++ ощущается как глоток свежего воздуха. На нём легко писать, проекты на нём легко читать и поддерживать
Оно и понятно: хеллоу ворлды легко писать и поддерживать.
Зато мой хеллоу ворд со зведами на гитхабе и даже хранится где-то в вечной мерзлоте.
Выходит, что вы его выбросили на мороз.
В целом про Ди как "свежий С++" вполне согласен. Но вот templates... вот какой УРОД догадался делать это со стандартными скобками?!?!alias bar = Bar!(Foo)
Ведь очевидно, что круглые скобки - ВЫЗОВ чего-либо. И тода уже не так просто прочитать bar!(foo)(somevar)
Эти скобки Уолтеру надо на башке гвоздём нацарапать - из всех дурацких синтаксисов и скобок он выбрал круглые!! *фэйспалм*
Вы там поосторожнее с оценками. Андрей Александреску - общепризнанный бог метапрограммирования на С++. Вдруг, это он так сделал? ;)
Я юзал - для прокси-резальщика рекламы. Ох, сколько же он дерьма отфильтровал!! :)
Но это была консольная прога. Хотелось красивой ГУЙни, которая была бы написана на самом Ди, используя его мощь во весь рост. Такой нет до сих пор.
Tilix — уже гуйня или ещё нет?
Нафиг оно надо, если всё тоже самое есть в C++, только качество и выбор компиляторов и средств разработки намного больше, на любой вкус, и под все платформы.
тебе нужно больше книжек читать
Если есть Rust :-)
То тогда и C++ - идеал.
Разве что среди мазохистов.
Ну тогда для растаманов даже вид извращения трудно подобрать слёту.
Раст очень сложный язык ...
Довольно простой, если сравнивать с плюсами.
Канешна простой, у нас на нашей планете в него все владеют.
D кстати тоже очень сложный язык, вполне в одном ряду с C++ и rust.
А что на нем пишут, Вань?
Есть Vala — разумное сочетание производительности Си, высокоуровневости и возможностей для эстетов.
nim?
В nim акцент на выразительность, а не на скорость.
для общих задач он быстрый, для задач на скорость не пробовал. честно говоря, не представляю, как на нём что-то оптимизировать, взять хотя бы банальную задачу оптимизации цикла
Неплох, но под гномерами ходит и пока что прибит к glib гвоздями.
Глупо выставлять это недостатком, т. к. vala именно для этого и создавался.
Но с этим, он для этих и останется.
Но зачем? Полезнее было бы возродить д1, д2 ожидаемо не взлетел.
А Dv1 взлетел? И почему если именно его возродить, то взлетит?
1 не полагался во всём на рантайм, я, конечно, понимаю желание сделать такой язык, но эта ниша уже занята питоном и го.
Дело не в рантайме..
Можно выбирать минимальный рантайм, можно писать свой рантайм, можно вообще без рантайма писать :)
Метапрограммирование одно из лучшихОсновные потребители: люди, которые хотят достаточно производительного решения (быстрее Го и тем более питона), и не трогать больше C++ и Rust
У Ди есть много недостатков (а у какого языка их нет?), но есть один самый главный на мой взгляд..
После Ди на других языках писать просто неприятноТак что будьте аккуратнее!
> У Ди есть много недостатков (а у какого языка их нет?), но есть один самый главный на мой взгляд..
> После Ди на других языках писать просто неприятноПожалуй, не на всё так радужно и не на 100%, но на 90% соглашусь. Очень приятен D. Но малая распространённость... Не нашёл работы с на нём / с ним. А притягивать задачи под инструмент, а не инструмент под задачи - это фу.
В любой крупной конторе притягивают, а тебе значит фу... А кто ж тогда будет распространять, путан своим указом?
>а также некоторые библиотеки на C++В 2.092 добавили же полную поддержку C++ GNU ABI?
И, кстати, означает ли это, что теперь можно линковаться без всяких обёрток с, например, FLTK? С Qt непонятно, там метакомпиляция.
Самый поддерживаемый вариант - это GtkD
Для Qt5 есть работа. Но она в процессе: https://m.youtube.com/watch?v=TFN5P4eoS_oFLTKD - библиотека не обновлялась очень давно.
Полной поддержки C++ ABI вроде нет, но улучшали поддержку в одном из релизов.
>С Qt непонятно, там метакомпиляция.для Qt сделали решение, достаточная для работы сигналов "метакомпиляция" на родных шаблонах, бесшовно.
выглядит красиво, но пока не пробовал.
Увы, но D не хайпанул, и на этом для него практически всё закончилось:(
А он и не хайпанёт никогда. Там куча нормальных фич недоделаны, попутно пилятся сомнительные, багованый компилятор, абсолютно ненаучный подход к проектированию языка, маленькое сообщество и крошечная core team. Я на нём больше 10 лет писал. Молодой был, купился на фичи, а теперь мозга немного наросло и стало понятно, что это путь в никуда. В D есть много хорошего, но плохого там не меньше, и никто последнее чинить или не собирается, или не в состоянии.
А что, простить, там хорошего? Я писал на нём полгода, потом не выдержал и переписал проект на плюсах - и вот это действительно был глоток свежего воздуха. Ничего не могу назвать что из D мне бы не хватало. А вот отсутствие спорных вещей только радует.
Люди переходят на Ди только для того, чтобы больше не трогать кресты..Да для работы (плюсы, го) и современного хайпа (раст) - D не очень подходит
Потому что D - для Dуши
А что вы пишете Dля Dуши?
Все по разному) в телеграмм канале Dlang.ru у ребят много разных примеровПро себя использую D для:
* задачки на CodeForces
* надо было быстренько написать обработчик 100 гигабайт JSON файлов спарсенных с сайта (пригодился parallel и быстрый парсер)
* библиотека для Python со стат расчетами (в процессе)В планах ещё (где бы время только взять):
* игра для себя (пока правда не знаю что проще сделать wasm или godot)
* CLI для удобного поиска реп на гитхабе
* телеграмм бот, но там видимо проще питоновский взять. Они API как грибы выпускают
Короче питон но не питон, крутой язык...
Каждый использует язык как ему удобнее)
в DS - питон основной язык, но бывает надо ускорять. И тогда либо всякие cython, numba - а можно взять приятный Ди)
Хорошо, что есть люди, которые пишут библиотеки на крестах. Спасибо им - можно другим психику не ломать)
когда-то посматривал на D ... и перешел на Go. да и C++ сделал прогресс за столько лет
То есть вы не написали ни одной законченной программы и у вас много планов для души? Но у ребят на канале много примеров...Здорово что вы смогли написать замену конвейеру с find, jq и grep, не все же задачки на CodeForces решать.
Задачки на CF - класс)
Там внутри логика была с построением графа и связей среди этих файлов.
Я не исключаю, что через никсовые команды можно было, но слушайте AoC одни и те же задачи решаются на куче языков - каждому на каком удобнее и приятнее это делать)
Решить эту задачку на Ди - было норм, а лезть в grep и find не очень :) кому-то наверняка было бы наоборот
Дурочог, какие проекты ты хочешь? Ворд? Оперу? ОС?
Люди что могут - то и пишут. Есть мириад МАЛЕНЬКИЙХ проектов, каждый из которых - составная часть других. Если на Ди даже калькулятор написать - и то дело будет. И совершенно пофигу, что есть ещё тысяча калькуляторов - программы пишутся, чтобы стать лучше существующих. Чем твой дурацкий find может быть лучше специализированного инструмента???
> библиотека для Python со стат расчетами (в процессе)...
> телеграмм бот, но там видимо проще питоновский взять...Чё-то очень слабоощутимо криптовалютными ботами/оракулами пахнуло :) . Там вроде уже немало ботов на питоне.
Шаблоны и метапрограммирование там хороши. Впрочем, этого недостаточно, чтобы остаться на нём.
Если ты после плюсов не увидел в Ди ничего хорошего - извини, значит ты или тупой, или писал на каком-то Зю - самого Ди ты и в глаза не видел. Ди на голову превосходит все твои крестики.
> багованый компиляторКоторый из трёх?
> ненаучный подход к проектированию языкаКаковы научные критерии?
Все, т.к. у них общий фронтенд. Что до критериев, достаточно посмотреть на систему типов и как с ней интегрированы такие фичи, как shared, который скорее мешает, чем работает. Точнее сказать сложно, я не эксперт в теории типов и прочей computer science, но разница между D и тем же Rust в этом плане разительная и не в пользу первого. Про Haskell я вообще молчу - вот где научный подход во всей красе.
Хацкел - вон он как раз СЛИШКОМ научен! Настолько, что ни один РЕАЛЬНЫЙ погромизд не будет на нём писать. Хацкел только и хорош, что "фибаначи в одну строку" карябать.
Haskell хорош как плацдарм для отработки научных основ программирования. Никто не заставляет на нём писать крупные проекты.
> Хацкел - вон он как раз СЛИШКОМ научен! Настолько, что ни один
> РЕАЛЬНЫЙ погромизд не будет на нём писать. Хацкел только и хорош,
> что "фибаначи в одну строку" карябать.Некто на нем написал даже архиватор с кучей алгоритмов. Но получилось настолько заумно и математично что после выкладывания в опенсорс только автор в этом и копался. И радости с такого опенсорса?
>багованый компиляторда ладно
На этот баг, мой "любимый", я напарывался неоднократно:
https://issues.dlang.org/show_bug.cgi?id=2043Этот вылез в моих попытках метапрограммирования:
https://issues.dlang.org/show_bug.cgi?id=17974Это так, сходу вспомнилось, хотя давно на нём не пишу. А за всё время использования D я багов в dmd и иже с ними накопал десяток точно, и половину нельзя было обойти хитрыми трюками. Причём, многие не чинятся годами, а первый упомянутый скоро на пенсию пойдёт.
Я не совсем понимаю полезность завязываться в функции на внешнюю ИТЕРАЦИОННУЮ переменную! Это цикл, где переменная цикла - временное явление, причём с undefined величиной по окончании цикла. Пример явно искусственный, есть какой-то реальный пример, где прям вот нужно именно переменную цикла?
Я не совсем понимаю полезность завязываться в цикле на любой счётчик. Если его значение не используется за пределами цикла, м.б. оно вообще не нужно?
Да хрен с ним, со счётчиком. Баг касается любой переменной, которую захватывает замыкание - не важно, в цикле или нет. В D нельзя сказать "захвати по значению", он всегда захватывает по ссылке, даже если переменная стековая. Это же бред, ведь GC в язык засунули именно для того, чтобы сделать работу с памятью безопасной, а тут такой косяк на ровном месте, который в любом другом языке с GC не существует, потому что там или копируют захваченные переменные, или они все изначально выделяются в куче, поэтому проблем с обращением нет. А в нелюбимом мной, по другим причинам, C++ вообще можно указывать, как захватывать переменную. А в D ты 14 лет ждёшь, пока поправят очевидный баг. Вот тебе и "безопасная" работа с памятью: GC есть, а толку нет.
Это больше похоже на ошибку дизайна, если я правильно уловил суть. Показалось, что можно усидеть на двух стульях. Теперь надо принять кардинальное решение, отказаться от стека. Ну или ещё подождать, может найдётся простое и красивое решение.))
Решение найдётся, как только Уолтер займётся этим. Будет ли это решение оптимальным или даже хорошим - загадка. Но я буду ждать, так сказать, в фоновом процессе с наименьшим приоритетом. А пока все мои задачи решает Rust без всякого GC.
ну, "забагованность", это всё-таки "многолетнее игнорирование очевидных косяков".а тут, скорее, особенность базового дизайна. и понятно, зачем это было сделано.
то, что компилятор не ругается, это плохо, но и баг не из приоритетных.
Ну, почему же не хайпанул? Очень даже. Вот только компилятор не опенсурсный был на пике хайпа, да чехарда с версиями, а это чуть питон не убило.
>Увы, но D не хайпанул, и на этом для него практически всё закончилось:(В свое время вполне хайпанул, но разработчики языка не смогли этим воспользоваться.
А есть же языки: A, B, E, F?
F# есть, если нужно: https://fsharp.org/
A - APL если
B K&R разработали перед Си
Про В слышал что-то краем уха. Вот выучу языка A,B,C,D,E,F сдам на права этих же категорий и пойму что потратил жизнь на ерунду.
Нашел. Ну все, мир держись! Буду учить! А главное выкладывать на гитхаб результаты.
https://en.wikipedia.org/wiki/List_of_programming_languages
Если C овладел, то сразу дают категорию M =)
Всё ждал, как они выпилят сборщик мусора из стандартной библиотеки, так и забил
Не всегда всё быстро происходит - это верно..
Несмотря на то, что в браузерах GC нужны со спецификацией тоже пока не задалось сходу..
https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p21...Может потом додумают - как лучше это можно вставить :)
>Всё ждал, как они выпилят сборщик мусора из стандартной библиотеки, так и забила зачем?
D хорош тем, что на нём пишется со скоростью, не меньшей Питоновской. И ладненько, остальное неважно, -- забить.
Затем, что если мне нужен GC, я на сишарпе напишу спокойно
... и притащу 200 Мб рантайм. А так, ну да.
> а зачем?Для предсказуемой производительности. Хруст и пара убийц оного типа зига и прочих харе что-то такое пытаются изобразить. То-есть паттерн в принципе нащупан и не такой уж неудачный.
> D хорош тем, что на нём пишется со скоростью, не меньшей Питоновской.
> И ладненько, остальное неважно, -- забить.А зачем долбаться с разучиавнием мощного яп чтобы потом гомнякать как на питоне и это было потолком возможностей? С GC высокопроизводительные, предсказуемые вещи сразу резко в пролете.
непредсказуемость производительности сильно преувеличена.
да и движение в сторону @nogc имеет место, так-сказать, быть :)
> foo(ia.tupleof); // аналог foo(1, 2, 3);А почему бы не сделать например передачу параметров именованную и закончить с этим дрочевом позиционных параметров?
Если честно надоело помнить где там что в какой нотации вот до сих пор не помню куда чего в `memset` или `strtok` пихать.
В этом плане `"a,b,c".split(separator=",", max_count=2)` гораздо удобнее.
Ждут пока свой PR закинешь :)
Ну тут нужно свой язык делать тогда сразу что бы не связываться с непонятными людьми,
а на это нужно время, деньги и желаание, а так то совет сказать и желание высказать это
не тоже самое.Помню в универе писал какую-то лабудень Си- подобную, но дальше чем прототип и рисующий на OpenGL шары формулы химической на защите дальше не пошло...
А ну и конечно нужны структуры данных в стандартной библиотеке: списки, графы, деревья и алгоритмы к ним, а так же пакетный менеджер зависимостей и C ABI в обе стороны и это будет в целом залог успеха нового языка... А да еще нужна нормальная библиотека для построенрия GUI-ни и HTTP/WSS серверов и бует просто пушка =)
А чем он лучше swift? (ничем)
Swift под Windows или Linux — технически возможное, но неудобное и неполноценное решение.
((C) ) https://blog.skillfactory.ru/glossary/swift/
> Swift под Windows или Linux — технически возможное, но неудобное и неполноценное
> решение.
> ((C) ) https://blog.skillfactory.ru/glossary/swift/проблемы переносимости - временные. я о самом языке (синтаксис, стандартная библиотека, инструменты).
Хороший язык. Использую его в своем пет-проекте.
что такое пет-проект?
>что такое пет-проект?https://blog.skillfactory.ru/chto-takoe-pet-proekty-i-zachem.../
Просто проект-игрушка. Нравится программировать долгими зимними вечерами, теперь и не на С++.
Приятный язык. Хорошо, что жив.
Язык в целом хорош. Но не доведён до ума. Так и не появилось внятного GUI (а-ля Qt). Биндинги выглядят как попытка сделать из мыши ежа. По книжке Александреску вообще всё гладко. Когда начинаешь прогать сам, натыкаешься на всякие нелепости, типа захвата в лямбда только по ссылке (о чём burjui упоминал выше). Попытка обсудить это в сообществе, сводится к тому, что "сам дурак, не умеешь пользовать D". Ещё было пару аналогичных моментов, которые отталкивают. Лет 7 назад написал на нём аналог make для собственных проектов с полным отслеживанием зависимостей, параллельной компиляцией (получилось 2 файла на языке D по паре сотен строк). Но для чего-то более серьезного использовать просто побоялся. В этом плане C++ с его новыми стандартами 11,14, 17 мне нравится больше.
>[оверквотинг удален]
> появилось внятного GUI (а-ля Qt). Биндинги выглядят как попытка сделать из
> мыши ежа. По книжке Александреску вообще всё гладко. Когда начинаешь прогать
> сам, натыкаешься на всякие нелепости, типа захвата в лямбда только по
> ссылке (о чём burjui упоминал выше). Попытка обсудить это в сообществе,
> сводится к тому, что "сам дурак, не умеешь пользовать D". Ещё
> было пару аналогичных моментов, которые отталкивают. Лет 7 назад написал на
> нём аналог make для собственных проектов с полным отслеживанием зависимостей, параллельной
> компиляцией (получилось 2 файла на языке D по паре сотен строк).
> Но для чего-то более серьезного использовать просто побоялся. В этом плане
> C++ с его новыми стандартами 11,14, 17 мне нравится больше.А вот какой вы могли бы предложить приятный компилируемый язык? C++ — страшен (для меня). C — слишком низкоуровневый для типичных задач. Go — я попробовал: что-либо более дебильное трудно придумать.
Тут зависит от задачи, для чего вы собираетесь использовать этот язык. Нужен ли GUI, нужна ли удобная IDE? Собираетесь программировать только для заработка (тогда нужно выбирать по вакансиям)?. Для меня С++ наиболее универсальный язык. Если начал что-то делать на нём, то можно быть уверенным, что не упрешься в какое-либо ограничение самого языка. Плюс самый широкий спектр библиотек. Не понимаю тех, кто противопоставляет C и C++. Второй является расширением первого. Но на самом деле, за вас выбор никто не сделает. Надо набраться опыта, чтобы сделать осознанный выбор. Для этого надо потыкаться в разные языки и разные предметные области. Проникнуться основными концепциями (функциональное программирование, ООП, метапрограммирование, сети, WEB, Windows, Linux и т.д.). При такой постановке вполне можно начать и с D. Rust - высокий порог вхождения. Тут надо просто пробовать (как вы уже попробовали Go).
>[оверквотинг удален]
> Если начал что-то делать на нём, то можно быть уверенным, что
> не упрешься в какое-либо ограничение самого языка. Плюс самый широкий спектр
> библиотек. Не понимаю тех, кто противопоставляет C и C++. Второй является
> расширением первого. Но на самом деле, за вас выбор никто не
> сделает. Надо набраться опыта, чтобы сделать осознанный выбор. Для этого надо
> потыкаться в разные языки и разные предметные области. Проникнуться основными концепциями
> (функциональное программирование, ООП, метапрограммирование, сети, WEB, Windows, Linux
> и т.д.). При такой постановке вполне можно начать и с D.
> Rust - высокий порог вхождения. Тут надо просто пробовать (как вы
> уже попробовали Go).Для работы, понятно, нужно брать искать из популярного. Я имел ввиду выбор приятного языка для себя, что бы писать и наслаждаться. У меня сейчас в качестве такого — Raku, язык просто круть. Но он скриптовой, что-то очень быстрое на нём не попишешь. Но это я просто разглагольствую, вашу позицию я уже понял :)
> Попытка обсудить это в сообществе, сводится к тому, что "сам дурак, не умеешь пользовать D"не замечал, общение в .learn не кажется агрессивным.
>Но для чего-то более серьезного использовать просто побоялся.
Ну да. Необходимость привязок и дефицит библиотек...
>В этом плане C++ с его новыми стандартами 11,14, 17 мне нравится больше.
сколько нужно времени, чтобы написать одно и то же (просто алгоритм, не будем касаться доступности библиотек) на c++17 и D?
Писать и наслаждаться: Rust, Haskell. Для меня в данный момент, естественно. Раньше был фанатом C++, Go тоже очень нравился, но отказался от него по довольно забавной причине: общий культурный и профессиональный уровень коллег-гошников оказался существенно ниже того, к которому я привык.
дык ответа на вопрос не дано.
сколько надо времени?!если хочется, можно включить в сравнение и Раст (но не Хаскел)
для примера (не совсем честно, использована внешняя библиотека, но это тоже иллюстрация -- как можно писать за счёт средств языка):
import iopipe.textpipe;
import iopipe.zip;
import iopipe.bufpipe;
import std.io;
import std.typecons;// open a zipfile, decompress it, detect the text encoding inside, and process
// lines that contain "foo"
void main(string[] args)
{
File(args[1]) // open a file
.refCounted // File can't be copied
.bufd // buffer it
.unzip // decompress it
.runEncoded!((input) { // detect the text encoding and process it.
import std.algorithm: filter, canFind;
import std.stdio: writeln;
foreach(line; input.byLineRange!false.filter!(a => canFind(a, "foo")))
writeln("this line contains foo: ", line);
});
}
Язык занятный, но постоянно было ощущение - что-то с ним не так. Потом, когда попёрли малинки, апельсинки, и прочие армы, для которых dmd ещё не мог и не умел, пришлось оставить его в покое.
А потом дошло, отчего всё не так: D придумали упоротые плюсовики.
А где всё хорошо?