Опубликован релиз DMD 2.110, эталонного компилятора для языка D. Код компилятора распространяется под свободной лицензией BSL (Boost Software License). Поддерживаются системы Linux, Windows, macOS и FreeBSD...Подробнее: https://www.opennet.ru/opennews/art.shtml?num=62854
> При запуске с опцией "-preview=fixImmutableConv" запрещено копирование переменных с типом "const void[]" в переменные с типом "void[]", так как такое копирование в последствии может привести к использованию вне контекста "const".Опять придётся через memcpy() обходить дурные хотелки компелятора :)
static inline void *
deconst_ptr(const void *prt) {
void *ret;
memcpy(&ret, &ptr, sizeof(void*));
return (ret);
}
Или не использовать опцию -preview=fixImmutableConv.
каким местом результирующий массив должен быть immutable?
> Опять придётся через memcpy() обходить дурные хотелки компелятора :)Г*кодерам нет покоя...
Вот именно, мешают своими типами код писать :)
Тут важно различать программистов и кодеров.Когда первые с лёгкостью программы _пишут_, вторые неистово _кодят_.
Это закреплено в статье 1261 ГК РФ, где программа приравнивается к литературному произведению.
:)
> Тут важно различать программистов и кодеровэто важно только маленьким детям, которые любят это повторять
А можно мне для себя, как отличить программиста от кодера? Хочу понять, кем являюсь я.
Всё, на самом деле, просто.Если пишет он программу, значит это программист; ну, а если кодит код, значит это кодер.
:)
А если скриптует?
Наверное, скриптор.
>Опубликован релиз DMD 2.110, эталонного компилятора для языка D.Господа это единственный компилятор не основанный на LLVM.
>Код компилятора распространяется под свободной лицензией BSL (Boost Software License).
Не копилефт. Это разрешиловка-пермиссивка.
>Поддерживаются системы Linux, Windows, macOS и FreeBSD.
Windows в этом списке лишний.
> Господа это единственный компилятор не основанный на LLVM.Go, Ocaml, Haskel, FreePascal…
Спасибо тебе, дорогой
А раст то на llvm или нет ?!?
Да
FPC with an LLVM code generator backend is available on the git main branch
https://wiki.freepascal.org/LLVM
Зачем, если есть без LLVM?
> Will the FPC team, somewhere in the future, adopt the LLVM as the backend on all platforms?
> No, for various reasons
Ознакомься с Pascal-P5, который соответствует ISO стандарту языка.
Никлаус Вирт с того света смотрит на тебя одобрительно.
> Господа это единственный компилятор не основанный на LLVM.Если бы он еще умел оптимизировать хотя бы в половину как LLVM - цены бы ему не было.
> Не копилефт. Это разрешиловка-пермиссивка.
Ну так поэтому и написано "под свободной лицензией"
> Windows в этом списке лишний.
Без винды оно вообще бы загнулось из-за ненужности.
Для скорости есть LDC/GDC (с LLVM и GCC бэкендами)
>Господа это единственный компилятор не основанный на LLVM.Как бы, gdc тоже на нём не основан.
Здесь должна быть дискуссия почему D должен был не допустить такое явление как Раст! Именно Раст заполонил умы опеннетовцев, а должен был D!
Потому что у D не было достаточной поддержки со стороны корпораций.
Не очень убедительно пиарились.
Да и у Раст пока позиции крайне слабые. Хайп пройдёт и забудут.
Некоторые маститые кодеры попробовали Раст, и вот что говорят: долго компилируются большие проекты, тащится куча зависимостей, многие вещи слишком сложно выразить на Расте (тогда как на плюсах это делается элементарно).
> многие вещи слишком сложно выразить на Расте (тогда как на плюсах это делается элементарно).Ох, лол. Прямо многие? Хоть одну "маститые кодеры" могут привести в пример?
Говорили, что из-за требования постоянно угождать боров чекеру. Ломается производительность труда. Нужно изворачиваться, чтоб даже простые вещи реализовать.Но это не моё мнение.
А это и есть фатальный недостаток Rust-а т.к. код сразу пишется в продакшн (производство)
Что ещё говорят маститые кодеры (какой масти, кстати?)? Что-нибудь про удой кур известно стало?
гугли статью на хабре, как разработчик игр пытался на расте писать. в итоге его выбесило, что компилятор мешает работать, что язык - нелогичная каша, собранная по сусекам, и что фундаметальные баги висят по 10 лет и всем пофиг
Если ты про нытье этих неудачников:
Leaving Rust gamedev after 3 years
loglog.games/blog/leaving-rust-gamedev/
то неудивительно)Достаточно вчитаться в статью и подумать "а что же за проблемы привели к такой ситуации?".
This post isn't a scientific evaluation or an A/B study. It's my personal opinion after trying to make Rust gamedev work for us, a small indie developer (2 people), trying to make enough money to fund our development with it.Т.е 2 нищука без финансовой подушки решили делать игры.
I'm looking at things from the perspective of "I want to make a game in 3-12 months maximum and release it so that people can play it and I can make some money from it.".Хотели наовнячить код побыстячку и сразу заработать бабосиков.
Логично что оно не вышло.
Надо было брать юнити или какой-то годот.Я бы сказал, что на расте надо писать сам движок...
Но нафига играм какая-то надежность?
> Ох, лол. Прямо многие? Хоть одну "маститые кодеры" могут привести в пример?Реализовать, скажем, двунаправленный список.
Они бы привели примеры этих многих вещей, а то есть умельцы которые технологическими линиями на Перле управляют, а есть кто приложение из 5 окон делает бегемотом-)))
Видели мы код этих "умельцев" на перле…
Да вообще код на Перле...
Бегемот - что за ЯП такой?
Потому что D в сравнении с плюсами в итоге не давал значимых преимуществ и при этом был нужен полутора анонимусам. Плюс разные стдлиб и несовместимые, но поддерживаемые DMD1 и DMD2 окончательно убили смысл в D вкладывать усилия.
У них не было GUI библиотеки что ограничвало распространение. У Rust есть Slint, у C/C++ есть Qt, wxWidgets, MFC и пр., даже у Pascal есть, и у Go есть Fyne, Gio. А у D ничего не было.
D был хуже чем C++ т.к. в нем был GC, так что он встал куда-та на уровень с Go.
Для кроваво-ынтерпрайзного софта GC в преимущество.
Насчёт хайпа и забудут не уверен, стратегия раста - заразить как можно больше проэктов, пока хайп не прошёл. Вокруг Ди тоже хайп какой-никакой был, но на нём не было написано ничего важного, и он действительно помер после хайпа, тихо и незаметно.
> стратегия раста - заразить как можно больше проэктов, пока хайп не прошёлЁ-моё, вы посмотрите, "стратегия раста". Оказывается оно живое, у него ещё и какая-то стратегия есть. А ничего что тот раст о котором вы говорите это не раст, а ведущие разработчики этих самых проектов (да-да те самые пр которых выше аноним врём что они де жалуются на долгую компиляцию, зависимости и невыразительность), которые понимают что за языком будущее (на самом деле уже настоящее)?
> они де жалуются на долгую компиляциюДва ядра, два гига, посередине SATA (у мажоров, у остальных IDE).
У меня Рязань 2700, 32 гига рамочки и SSD в M.2. Не особо свежая сборка даже 5 лет назад.
Небольшая поделка на Bevy, требующая ~500 зависимостей:
Total lines: 18269497
(17515535 code, 274975 comments, 478987 blank lines)Холодный релизный билд:
Finished `release` profile [optimized] target(s) in 3m 42s
Горячий релизный билд:
Finished `release` profile [optimized] target(s) in 11.86s
И я не закрывал два инстанса Firefox и VScode, чтоб получить циферки получше. И проц/память не разогнанны ибо мне лень.
А что оно делает? У меня простенький привет мир (построчный разбор строк, фильтрация, форматирование вывода), тупо переписал простенький скрипт с питона (с ворохом сишных батареек) на раст, вышло по 50 гб на дебаг и релиз либы, сборка какое-то совершенно неприличное время.
Минусующие предлагают вам не верить своим глазам.
Смешно же.Чтоб ты понимал у нас на работе продукт за 3-4 минуты собирается, при прогретых кешах.
А продукт тот включает сборку ISO загрузочного, в процессе оно разворачивает в chroot фрибсд с кучей портов, потом там внутри компеляет фрирдп+ещё С кода раз в 10 больше, потом вот это всё пакует в архивы, подписывает пгп, пакует в исо и выгружает по сети на нфс.
И где то минута там тратится потому что один кусок проекта достаточно большой и собирается он в один поток.Тачка там не особо сильно быстрее твоей, ну проц 5950х да оперативы примерно столько же, естессно там браузер никто не запускает при этом, там просто ещё какие то виртуалки крутятся :)
Так что раст отстой.
> при прогретых кешахЧто кеши кешируют? У меня кешированная сборка занимает десяток секунд.
> Тачка там не особо сильно быстрее твоей, ну проц 5950х
Проц примерно вдвое быстрее.
> ещё С кода раз в 10 больше
Процедурный код на два порядка проще компилировать.
> И где то минута там тратится потому что один кусок проекта достаточно большой и собирается он в один поток.
Рекоменду пофиксить.
Но опять же, сравниваем несравнимое.
> Что кеши кешируют?Почти всё :)
собранная ос, исходники портов, собранные порты, ccache.
> Рекоменду пофиксить.Да всё как на той картинке с квадратными колёсами - некогда :)
Если честно то и не оч мешает.
> собранная ос, исходники портов, собранные порты, ccache.Холодная сборка за 3-4 минуты превращает 18 миллионов строк уже скачанного растокода в бинарник. Горячая сборка на десяток секунд использует встроенный аналог ccache.
Из забавного. Дебажная сборка собирается вдвое дольше. Возможно из-за особенностей того, как я это всё настроил и, возможно, из-за более дорогой линковки. Да и просто в IO упирается. Дебажный бинарник на 1.1 гигабайт как никак. Для сравнения релизный бинарник на ~100 мегабайт и вдвое меньше, если пытаться как-то оптимизировать это (strip/lto и прочие ништяки).
> Если честно то и не оч мешает.
Тут согласен.
Да ничего они не понимают, такие же тупари как и тут.Для примера могу привести пример дятла который сейчас sshfs рулит.
Оригинальному разрабу стало не интересно и он проект забросил. Появилась пара форков, один мой другой того дятла.
Дятел первым делом тупо замержил все PR а вторым написал что оно пока на С но скоро на раст перепишем.
Потом он пошёл задолбал основного автора и тот отдал ему проект, считай апстрим sshfs.
Уровень того что туда втащили - примерно такой же днищенский, но хотя кажется вреда пока нет.
А CVE вон пишут вообще люди с отрицательным IQ, как показывают новости за сегодня.
Именно те CVE на которые фапают растишки.
> Появилась пара форков, один мой другой того дятла.Ну да, ну да, а ты стоишь такой весь в белом пальто.
> Потом он пошёл задолбал основного автора и тот отдал ему проект, считай апстрим sshfs.
Это лучшее что могло случиться с проектом sshfs ever!
Потому что ты уже показал и как быdloкодишь на сишечке, и как знаешь алгоритмики, и как кладешь болт на стандарты, и как вертишь на том самом безопасность. Слава омнисиии что он тебе не отдал апстирим!Ну и писать Secure Shell FileSystem на древнем дырявом языке из прошлого столетия... так себе идея.
> Уровень того что туда втащили - примерно такой же днищенский,
Еще более днищенский чем твой? Не, ну не верю...
> А CVE вон пишут вообще люди с отрицательным IQ, как показывают новости за сегодня.
Зачем ты так про разрабов ядра линя. Люди просто устают.
>"стратегия раста"
>оно живое, у него ещё и какая-то стратегия естьРаст - это не только язык, но и сообщество, и политическая система. Раст всеобъемлющь.
>ведущие разработчики этих самых проектов
>понимают что за языком будущее (на самом деле уже настоящее)Всё верно, так и есть. Может быть не настоящее, но будущее - точно. Разработчиков с хорошей подготовкой и самодисциплиной на всех не хватит, а код писать надо. Да и мода теперь всё оутсорсить в Индию или Вьетнам какой-нибудь работникам после трехмесячных курсов.
Наверное, если бы у раста не было такой стратегии, то и людей бегающих по репозиториям и требующих срочно переписать всё или хотя бы частями на раст не было?
Только никто по репозиториями не бегает и не требует, свои репозитории переписывают сами авторы. Но да, этой движухи не было бы не будь rust революцией, а будь он посредственностью как какой-нибудь очередной D.
>свои репозитории переписывают сами авторыТорвальдс свой проект тоже сам переписывает?
Да. От него, как от менеджера, требуется только разрешение.
Грег (по сути второй человек в ядре) - тоже только "за".
> Да. От него, как от менеджера, требуется только разрешение.
> Грег (по сути второй человек в ядре) - тоже только "за".Значит Линус, как менеджер, видит качество будущих кодописателей и готовит проект к снижению их квалификации. Впрочем, ядро всегда притягивало не самых лучших, а самых идеологичных ( пока корпорации полностью контроль не захватили), стоит только взглянуть на ядерную архитектуру, чтобы это понять.
> Значит Линус, как менеджер, видит качество будущих кодописателей и готовит проект к снижению их квалификации.Снижению?
У нынешних ядропикателей уровень уже на дне.
Линус сам говорил
"You'd think that all the basics would have been fixed long ago, but they're not. We're still dealing with basic issues such as memory management."
Т.е за 30+ лет, до сих пор не осилили.Другой пример - Теодор "вы не заставите меня выучить раст" Тцо.
Процитирую анона из другой темы.
CVE-2022-1184 - ваще шикарная.
А теперь микрофон и все лавры передаются ox55ff с лора
"в 2013 году он закоммитил вот такую портянку github.com/torvalds/linux/commit/dc6982ff4db1f47da73b1967ef5302d6721e5b95Через 9 лет (2022 год) тысячи глаз наконец-то рассмотрели там уязвимость CVE-2022-1184.
Которую смогли исправить только со второй попытки:
первая github.com/torvalds/linux/commit/65f8ea4cd57dbd46ea13b41dc8bac03176b04233
вторая github.com/torvalds/linux/commit/61a1d87a324ad5e3ed27c6699dfc93218fcf3201ext4: check if directory block is within i_size
Бгг. Видимо Теодорчик решил, что в его коде всё within, ведь "индекс проверять надо если программист решил что тут есть шанс того, что он окажется некорректным", а оказалось, что не within. Это какое-то шанс-ориентированное программирование. Сишник к успеху шёл, не получилось, не фартануло.
Вот типичный уровень писаки в ядро. Гарантии уровня "мне кажется" и "мамой клянусь".> Впрочем, ядро всегда притягивало не самых лучших, а самых идеологичных ( пока корпорации полностью контроль не захватили), стоит только взглянуть на ядерную архитектуру, чтобы это понять.
И теперь корпам придется разбирать, что натворили эти "идеологические".
D для скриптинга использовали Remedy, те финны, которые Alan Wake и Control сделали.
я не стал его юзать из-за сборщика мусора. он как бы был опциональным всегда, но по факту все было завязано на него и ты не мог вроде даже стандартную либу использовать без сборщика мусора.
Вот и получается. Возможная замена для Rust. А по факту нужно отключать сборщик мусора и использовать malloc/free без которого возвращаемся к тому что с чего начали. Или читать 10 страница мануала про все режимы работы.
2 версия поворот не туда, но чего ещё ожидать от любителей додиеза.
Можете использовать его подмножество BetterC, как замену Сишки, но с более красивым синтаксисом. Совсем без GC.
1) D очень безидейный. Точнее, идея там такая: давайте натащим из всех языков и подходов побольше всего, чтобы и так можно было писать и сяк и наперекосяк. Оказывается, людям это не нравится. Хотя казалось бы.2) Сборщик мусора как родовое проклятие. Попытки так или иначе от него отвязаться продолжаются, но без него всё ешё плохо.
Вопрос к тем кто следит за этим языком: добавили ли в него поддержку борроу чекера уже или ещё нет?
А то читал несколько лет назад, что рассматривают такую возможность.
Для борроу чекера нужно вводить в синтаксис языка лайфтаймы, а значит ломать совместимость. Никакой из копроязыков на это не пойдёт, добавление борроу чекера останется на уровне балаболии.
>> Для борроу чекера нужно вводить в синтаксис языка лайфтаймыА для написания комментариев нужно вводить тест на слабоумие?
Пока что добавили очень простую штуку только и она экспериментальная так и осталась https://dlang.org/spec/ob.html
Годнота. Круче сишарпа. Жаль не майки
А где же их Verona?
> Круче сишарпа.В огороде бузина, в Киеве дядька.
в сад
с каких пор D это не майки? майки же его и закопали, взяв на работу Александреску
Он в Нвидиа ушел
Майки там ни при чем
перепутал майков с фейсбуком. нвидиа тут ни при чём.
Андрей использовал D в фейсбуке
Потом когда ушел оттуда просто занимался D
И только относительно недавно он отошел от D потому что ушел в нвидияТы опять не в курсе вообщеничего но зачем-то пишешь ересь
Вопрос - зачем ты это делаешь?
Если бы были майки, то было бы как ты ни пиши кроссплатформенно, а в результате получается под Винду.
А этот компилятор умеет в порты звонить и собирать под ХР ??? Вообще, мне нужен С подобный современный компилятор, который умеет в порты звонить и собирать под ХР!!!
Lazarus/FreePascal умеет. Делал такую программу для работы с параллельным портом
так Lazarus на Pascalе, а я спрашивал С подобный
Так Free Pascal и есть С-подобный, в нём есть все С-шные типы данных и способ вызова, из FP можно вызывать С-шные dll'ки для работы с портами.
Синтаксис у него несиподобный.
Ну, верни указатель в функции на Паскале. Ни как? А вот такие там тараканы. И так там везде. :(
Синоним типа сделай (а-ля type PChar = ^Char;) и массивы в функции передаются и указатели возвращаются.
Да Вы затейник. Всю проверку типов поделить на их приведение к PChar. ;)
Там предлагается через var возвращать.
Так решаемо, но не всегда, и начинается раздутие исходника, и тому подобные идеологические палки в колеса.
Попросили недавно дописать ПО на Delphi, точнее кусок кода с С++ переписать на него, типа ты же раньше писал на нем... Сделал, но поматерился и поржал от души.А уж про словесное недержание в синтаксисе опускаем, это так всем понятно. И не begin'измы, а просто раздутие исходника дубовыми конструкциями.
Конечно, в Паскале есть хорошие стороны, и нечаянно налажать сложнее, и тривиален для изучения. Но язык мало изменился с тех времен когда я на нем писал, и морально устарел.
По сути о Паскале бы и забыли уже, если б Lazarus и Embarcadero не были кроссплатформенными. Но это не заслуга языка, а заслуги IDE и библиотек.
Паскаль не забыт, он развивается. Вот современный Паскаль:
https://www.remobjects.com/elements/oxygene/language.aspx
> Да Вы затейник. Всю проверку типов поделить на их приведение к PChar. ;)Вы вообще не поняли, что вам написали. Речь не о приведении всех типов к PChar, а о том, чтобы сделать синоним (как сишный typedef) определенного типа на указатель. Это нужно чисто синтаксически, чтобы вернуть указатель из функции.
В общем, вы бы сперва в базовых аспектах Паскаля разобрались, прежде чем с него покровы срывать.
> Но язык мало изменился с тех времен когда я на нем писал, и морально устарел.Что вы там могли на нем писать, если даже не знаете, как вернуть указатель из функции? Hello world?
Вообще то, я и переписал, и закончил работу.
Но исходник стал толще и хуже читаемым. И не из за каких то атрибутов или конструкций безопасности, а именно из за дубовости языка.Если любопытно, это был рендеринг отображения на дисплее контроллера, перенесенный под SDL, затем перенесенный на CBuilder, а после того как в Embarcader C++ перестал быть кроссплатформенным, попросили переписать на Delphi. В итоге вместо дорогой панели можно использовать дешевый Андроид планшет, или запустить эмулятор на компе.
Всякую фигню по стольку раз не переписывают. ;)
> Ну, верни указатель в функции на Паскале. Ни как?В чем проблема?
type
TFn = function(): String;function Foo: String;
function Bar: TFn;
begin
Result := @Foo;
end;
Речь про указатели на объекты и структуры.
Про аналог костыля ***void с приведением чего угодно к PChar упомянуто, и про недостатки игнорирования типов при этом.Про возврат указателя через var параметры тоже сказано, и про недостатки способа.
Причем здесь ваш пример с обычной строкой? ;)
Вы точно читаете?
В FPC используйте {$TYPEDADDRESS ON} и ^ для указания указателя на конкретный тип.
> Причем здесь ваш пример с обычной строкой? ;)
> Вы точно читаете?Вы писали "верни указатель в функции". Я думал, была опечатка "в" и речь идет о возвращении указателя "на" функцию.
> Речь про указатели на объекты и структуры.
Указатель на что угодно возвращается так же, как и в моем примере. Или что вы имели в виду? Я не совсем понял, что вы такое невыполнимое обнаружили на Паскале.
> Про аналог костыля ***void с приведением чего угодно к PChar упомянуто, и про недостатки игнорирования типов при этом.Какие еще костыли с игнорированием типов и void**? То был пример использования синонима (как typedef в C) "указатель на Char". Вы аналогично вольны сделать синоним указателя на любой объект/структуру.
Для программирования портов на FP не нужно возвращать ничего из паскалевских функций. Нужно только импортировать пару С-шных функций из специальной dll-ки.
Ещё пять лет назад минимум семёрка нужна была.
Убрали поддержку XP достаточно давно
Но можно скачать старую версию компилятора попробовать
Вы в музее работаете что-ли?
У нас в универе хр стоит
На самом деле я этот вопрос задал, чтобы проверить квалификацию системного программирования здешней публики. Ответ очень простой - есть ультра современная IDE, которая умеет свистеть в порты и компилировать как в ХР так и даже в Win3.1 - это безусловный лидер в мультиплатформенном программировании - Embarcadero RAD Studio 12.2
у меня проги скомпилированные на 7ке в RAD Studio 12.2 отлично запускаются на ХР/98 (в проекте указываешь минимальную версию ОС и всё!)
Реклама - информация, распространенная любым способом, в любой форме и с использованием любых средств, адресованная неопределенному кругу лиц и направленная на привлечение внимания к объекту рекламирования, формирование или поддержание интереса к нему и его продвижение на рынке (Приказ ФАС России от 14.11.2023 N 821/23)
> отлично запускаются на ХР/98киллер фича в 2025 году
Что ты хочешь сказать этим приказом - так ваобще любую информацию можно назвать рекламой в том числе прогноз погоды на завтра или любую другую абсурдную информацию
С другой стороны, человека распространяющего информацию, но который НИКАКОЙ выгоды не получает от этого ни прямой, ни косвенной, ни моральной, ну ВАОБЩЕ НИКАКОЙ то такой чел не является рекламодателем, а следовательно ИНФОРМАЦИЯ НЕ ЯВЛЯЕТСЯ РЕКЛАМОЙ, а констатацией факта.
Реклмой можно назвать распространение информации только если есть материальная выгода (прямо или косвенно). В случае другой мотивации - применяются другие термины...
> констатацией фактаЭто ваша фантазия, а не констатация факта. Говорю, как человек, который прямо сейчас пилит клиент для телеграм под Windows 3.11 и перелопативший 1001 способ как это сделать и пришедший к выводу, что лучшее решение это нативный delphi первой версии в эмуляторе.
>клиент для телеграм под Windows 3.11Ух ты, актуальненько. Владельцы 80386 возрадуются.
> Embarcadero RAD Studio 12.2Новшество - похерили С++, везде, кроме Windows. ;)
В RAD Studio 12.2 C++ отлично работает под Android, iOS, так что не только под Windows
> В RAD Studio 12.2 C++ _отлично_ работает под Android, iOS, так что
> не только под WindowsЕсли Вас не смущает официальное заявление что в последнем C++Builder похерена поддержка всего, кроме windows, а 64х битных кроссплатформенных компиляторов и вовсе не было, то Вам точно виднее. Хоть разработчикам напишите, а то мужики то незнают.
Сферический С++ в ваккуме и так есть под любые платформы, в том числе и ещё непридуманные, а с библиотеками не под всё.
В всвязи с кончиной Builder'а и подкинули работку переписывать с Builder на Delphi.Вернемся к обсуждаемому языку D.
Язык, как бы не был хорош, или безопасен, без полноценного IDE, с конструкторами форм, останется нишевым. На этом взлетели Delphi и C#. Delphi во времена актуальности отличался очень высокой скоростью компиляции. И то и другое для меня это когда то послужило мотивом на переход на Delphi, несмотря на органическую неприязнь к Паскалю уже тогда. То есть, язык не влиял на выбор среды разработки, а сама IDE его сделала популярным.Ныне живые Embarcadero и Lazarus, не смотря на непопулярный Паскаль, имеют и IDE и кроссплатформенность. Не будь её, про них бы забыли.
В плане популяризации новых языков, нужно параллельно делать IDE.
Будь что то типа Lazarus, но с D или даже Rust под ккпотом, то пользовались бы и не жужжали.
При этом один крупный D shop переехал на него как раз с Паскаля
И их продукты это GUI приложения, там правда основная фишка коненчо в вычислениях которое приложение делает. Правда на чем сам GUI написан не знаю)
> и даже в Win3.1Простите, но вы написали глупость.
да ладна?
https://ibb.co/qMMbK27s
Это под Win32s, что ли? Ой, нет, лучше не надо.
А, ну OS Version осталась 6.0,всё понятно.
ну так я могу и OS Version понизить до 1.0 - тoгда ещё лучше будет работать на win 3.1
А вы вообще понимаете назначение этого списка? Впрочем, можете переключить на всё что угодно.
понимаете, не веришь - могу выслать скомпилированную прогу скомпиленную в RAD studio 12, которая запустится у тебя на windus 98 или 3.1
Это не то, совсем не то. Там можете хоть 0 указать. Важно то, где OS version, а там 6.0. Т.е. начиная от Vista.
Как оно свистит, когда запись в порт выполняется привилегированной командой?
ясный пень через драйвер портов PortTalk, а для этого нужно, чтобы компилятор поддерживал команды inport/outport
Команды в ассемблере, а это библиотечные функции. Если их нет, их можно написать.
>>Команды в ассемблере..Оно не обойдет ограничения OS на доступ к портам.
>> это библиотечные функции. Если их нет, их можно написать.
Нет. Можно "просто написать" драйвер, причем для каждой ОС и её вариантов свой драйвер, и работать через него.
А в остальном, всё хорошо как никогда.
Ну и каким боком это относится к компилятору? Как получить доступ к железу — это не его проблема. А писать в порты можно на любом языке, хоть при помощи инлайн-ассемблера.
> ясный пень через драйвер портов PortTalk, а для этого нужно, чтобы компилятор
> поддерживал команды inport/outportСпасибо, понял. Вместо чтения Уолтера Они и создания драйвера, судим о "квалификации системного программирования".
Вот вы смешной, судя по вашему совету вы ни разу в порты не свистели на ПК, потому-что не нужно создавать драйвер изобретая велосипед, а бери какой хош в свободном доступе и свисти в порты - хоть в 32, хоть в 64 бита
> А этот компилятор умеет в порты звонить и собирать под ХР ???Что мешает кодить под XP на том, что выходило во времена официальной поддержки XP?
то что выходило во времена официальной поддержки XP - не работало с портами, последняя версия Visual Studio умеющая свистеть в порты - 6.0. Но она кстати и под 7кой отлично работает и свистит в порты, но как бы не комфортно на ней...
__asm очень сложно использовать, да.
Зачем? Даже в Borland C++ для DOS были функции, которые читали из порта, писали в порт.
так он говорит про компиляторы у которых нет таких функций
Кстати https://learn.microsoft.com/ru-ru/cpp/c-runtime-library/outp...
То есть выпилили аж в 2015.
Но повторюсь — код там тривиален:
.text:00000000 public __inp
.text:00000000 __inp proc near
.text:00000000
.text:00000000 arg_0 = word ptr 4
.text:00000000
.text:00000000 xor eax, eax
.text:00000002 mov dx, [esp+arg_0]
.text:00000007 in al, dx
.text:00000008 retn
.text:00000008 __inp endp
На удивление один из самых быстрых языков - и даже ГЦ не мешает ему в этом
По многим бенчмаркам в топе находитсяhttps://github.com/attractivechaos/plb2 - C, Rust и D практически похожую производительность показывают
https://github.com/jinyus/related_post_gen - а тут вообще всех уделал
Что творится?!
>Что творится?!Обычные овнотесты. К реальности не имеющие...
А что имеет к реальности отношение?)
по первой ссылке чувак рассуждает о выносе переменных из внутренних циклов во внешние для эфемерной оптимизации этих вложенных циклов, но при этом не знает, в каком порядке эти циклы должны быть друг в друга вложены. дальше можно не читатьч, человек понятия не имеет об оптимизации кода
Там это в целом неважно ведь
все делают одинаковый алгоритм, а уж оптимальный он сам или нет..
Автор допустил ровно одну маленькую ошибку — сделал сборщик мусора встроенным по умолчанию.
А так это такой C++ на стероидах с человеческим синтаксисом классического сисярпа.
что именно там человеческого, хочешь так сделай, хочешь сяк, заранее заложили бомбу под код-стайл
> сборщик мусора встроенным по
> умолчанию.Вы думаете, если дергать освобождение памяти вручную на каждый чих, то будет быстрее? ;)
Когда грамотно пишется критичный код, не составит труда перейти на ручное управление.
Но, для подавляющего большинства кода автоматическая сборка мусора по умолчанию - уместнее.
> Вы думаете, если дергать освобождение памяти вручную на каждый чих, то будет быстрее? ;)Что значит "каждый чих"? А с GC не на каждый чих? Ничего что с GC деаллокаций меньше не станет, их будет ровно столько же, никакого выигрыша от батчевания не происходит, а оверхед на хождение по графам всегда появляется, и всегда больше потребление памяти, и всегда просадки производительности в непредсказуемые моменты, как бы там не изголялись чтобы избежать stop-the-world. Поэтому да, блин, будет быстрее.
Скорее наоборот, есть специфические кейсы где деаллокацию выгодно отложить. Но точно не до хрен знает когда как с GC, а до заранее известного момента.
Там же в критических секциях сборку мусора можно запретить.
Мне нравится когда люди не шарят, но "мнение имеют" =)
В Ди понятно когда сборка работает в отличие от Джавы
D нравится, правда, в его дебри сильно не лезу. Пишу на нем мелкие тулзы и игровой пет-проект.
Жаль, нет гуя.
Qt-биндинги есть.
Биндинги это фигня. Да и если я правильно понимаю, для Qt6 их нет, а он вышел 5 лет назад.
D может работать с обычными классами C++. Я так понял, что кроме шаблонов, Qt moc. Поэтому, наверное, можно использовать C++ную GUI-библиотеку не на шаблонах. FLTK ?
> Биндинги это фигня.А что значит с гуем, но не биндинги? Пару примеров можно?
Пример - это как Qt, но изначально написанный на D и сдизайненный под него, а не под "дергаем через костыли крестовый код".
Есть несколько нативных, но не все сейчас продолжают поддерживаться.
Из известных и более менее живых - это dlanguiКсати создатель и текущий мейнтенер русскоязычные
ГУЁв полно
Qt, GTK, FLTK, Tcl/Tk, Imgui/nanogui
Нативные некоторые тоже)
Гуёв полно, ты просто не в теме. Но у Ди нет такого ГУЯ, который был бы написан на самом Ди с учётом всех его возможностей - ООП, шаблоны, миксины, CTFE и т.п. В любом случае, если тебе нужен был бы ГУЙ, ты его давно нашёл бы. А ныть по форумам - ну такое себе.
Чего нет у D - армии фанатов в соцсетях и рекомендаций мануала по D вместе с чулками.Потому и не взлетел.
А еще у него нет внятного позиционирования.
Типа замена С++. Или С. Нипанятна.
В нем есть GC. Но можно отключить. Правда придется разбираться с кучей не очень явных проблем.Он вроде безопасный... но есть SafeD и Better C.
Который из них лучше? Зачему нужно два? Неужели нельзя сделать один раз, но хорошо?
Почему BetterС если D замена С++.. никто не знает.Вот поэтому и не взлетел)
Сборку мусора отключить нельзя, её можно только приостановитьBetter C - это про написание dll на D которые потом можно подключить в C с минимальными проблеммами.
SafeD - это набор "рекомендаций" для безопасно разработки.
> SafeD - это набор "рекомендаций" для безопасно разработки.Я бы не назвал это просто рекомендациями.
Как минимум там добавили @safe и @trusted.
Плюс лайфтамы в спецификацию.
Better C это про замену сишки, подмножество ди с фичами, которые не требуют его рантайма.
SafeD и Better C - это, как бы, противоположности в смысле безопасности.
>SafeD и Better C - это, как бы, противоположности в смысле безопасностиКороче, никто ничего не понимает — запутали, намудрили... А программисты люди простые, им подавай ясность и определённость. Например, если целый тип беззнаковый и 16-битный, то и называться он должен 'u16'. А не 'ushort'. Куда шорт, относительно чего шорт...
А если на архитектуре он не 16битный? Плодить u18, u6, u36?
Это где вы видели процессор с разрядностью не кратной байту, разработанный за последние лет 40 ? Байтовая организация памями уже давно, как само собой.
То это уже не про D, где ushort подразумевает 16 бит.По идее, для ясности можно использовать классический uint16_t из std.stdint[1], но современная запись поприятнее была бы (u16: Go, Zig, Rust).
alias u16 = ushort;:)
На нём написан неплохой эмульятор терминала Tilix.
>эмулятор терминала TilixДа, отличная программа, пользуюсь постоянно.
Тут писали анонимы про D, что там баги годами не чинятся, и вообще -- тухляк и бесперспективняк. А под этой новостью, смотрю, многие положительно отзываются. Что скажете в защиту D?
Ди не надо защищать, на Ди надо писать :) Забыть весь мусор про Раст и плотно начать изучать Ди (а там ДО___Я чего надо учить!). Там возможностей - море, неосиляторы подавятся на первой же странице.
> Ди не надо защищать, на Ди надо писать :) Забыть весь мусор
> про Раст и плотно начать изучать Ди (а там ДО___Я чего
> надо учить!). Там возможностей - море, неосиляторы подавятся на первой же
> странице.Короче, я понял: баги не чинят, тухляк, но писать надо, а ещё хрен выучишь его, сложный собака! :D
> Ди не надо защищать, на Ди надо писать :) Забыть весь мусор
> про Раст и плотно начать изучать Ди (а там ДО___Я чего
> надо учить!). Там возможностей - море, неосиляторы подавятся на первой же
> странице.Сборщик мусора ведь ставит D примерно против Go, а не Rust?
D привлекает доведёнными до ума compile-time возможностями по сравнению с C и C++.
- творимое на шаблонах в C++ выглядит героически, но это лишь борьба с невыразительностью языка
- если бы C++ мог просто взять и выполнить любую функцию на этапе компиляции, у него бы отвалилась задни... обратная совместимость!
- если бы он мог просто взять и отрефлексировать содержимое enum'а (отдать строковый литерал), то страшно представить, что у него отвалилось бы
- Страуструп был сильно против даже static if, он такую штуку в языке видеть не хотел ("fundamentally flawed, and its adoption would be a disaster for the language"[1])
- плюсовые шаблоны не во всём лучше сишных макросов (нет простых решений, чтобы увидеть какое-нибудь промежуточное представление, как после подстановки макросов через gcc -E)
- а сишный препроцессор изначально жертвовал возможностями в пользу простоты, его предшественник из 60-х был сильнее (PL/I)
- compile-time вычисления и рефлексия не очень модны. "Явное лучше неявного" -> иди кодогенерируй на питоне; "безопасное лучше небезопасного" -> иди AST-макросы в Rust пиши, а string mixin в Dlang сжечь запретить гроб гроб кладбище CVE[1] https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n36...
Вообще, там полно умных идей. Иметь возможность "нарезать" массивы и иметь алиас для последнего элемента массива полезно.
arr[-1] - питон (фича - не позднее 1995)
arr(end) - матлаб 5 (1996)
arr[$-1] - диЕсли с тех пор такую возможность не добавляют в язык, то это означает примерно "нечего на нашем языке векторы-матрицы считать".
D скорее в корзине с C++/Rust, чем с Go
> D скорее в корзине с C++/Rust, чем с GoИ как эту мысль увязать с наличием сборщика мусора как ключевого компонента языка (не будем про betterC-режим)?
D близок к C++ синтаксисом и совместимостью с C. Но сборщик мусора! Он означает примерно то же родство, что у Java и C++: Java вытеснила C++ в определённой сфере (а потом появился C#, который учился на ошибках Java, потом гугл под свои нужды Go сделал).
Увязать можно так
В Ди можно использовать сырые ссылки
А сборщик мусора там работает иначе чем в С# и Java
Он не вызывается когда ему вздумается
Поэтому управление памятью там более контролируемое (+native)
В каких-то кусках можно его отключать и включать позже (и это я не про betterC )
В Go для обуздания GC предлагают arena-аллокаторы, unsafe есть.
Баги чинятся
Активная разработка и коммунити
Со всего мира в Дискорд и есть русскоясичный чат в телегеА анонимусов лучше не слушать а попробовать самому
А почему не раст? Можно было бы написать на раст и использовать синтаксис и компиляцию раста.