Если Вы о сборщике мусора (по ссылке по крайней мере про него), то в D можно его не использовать. Хоть обширная часть стандартной библиотеки и написана с его применением, но все же никто не мешает программировать без этого, и более того, доступен специальный атрибут @nogc, который заставит компилятор ругаться каждый раз когда происходит выделение памяти через GC.
То есть формально D в настоящее время — это универсальный инструмент и для низкого уровня, и для абстрактной логики, поэтому неудивительно что автор использует его для обучения концепциям программирования.
Так что не вижу ни теоретической, ни практической невозможности, тем более что код генерируется одними и теми же бэкендами (GCC и LLVM)
Хороший вопрос! Но все мы видим что программирование точно так же автоматизируется как и автоматизирует другие области, поэтому появления "вайтишников" неизбежно. И наша задача, как опытных профессионалов, помогать им, а не противопоставлтять себя им. А мы сами, уходим в другие области, недоступные для "пионеров".
Тем не менее, все еще считаю что один отличный эксперт может заменить 5-10 "вайтишников", так что работа всегда найдется :)
Вы знаете, я тут напился, и все равно думаю что статья весьма неплоха. Однако я бы не стал приковывать внимание ко многим мелким функциональным вещам. Все-таки профессия программист, какой-бы разнообразной она не была, состоит из того что всеми нами движет мотивация творения, создания новых вещей, и программирование в этом смысле — это в перую очередь творческая профессия, но для тех, у кого нет возможности творить используя значительные материальные ресурсы. Допустим будь Вы более обеспечены, Вы бы Творили будучи хирургом, строителем, или другим инженером. Эта профессия привлекает в первую очередь тем, что полет мысли неограничен: Вы как-будто делаете все "из ничего", и Ваша способность к творчеству в основном ограничивается знанием алгоритмов и условностями предметной области.
В этом смысле, те, кто хочет созидать в новой эпохе, должны понимать что программирование это Ваш "one-stop shop", будь Вы хирург, инженер, маркетолог, дизайнер и много чего еще.
Программирование, так или иначе, в ближайшие 20-30 лет, коснется каждой профессии, и здесь кроется Ваш зведный час. Пользуйтесь пока это востребовано, автоматизация — это будущее, хотите ли Вы того или нет.
Предложу все-таки более честно указывать что в цифрах по "Median income" вы приводите именно median disposable income, что является доходом после уплаты всех налогов и страховых взносов, в то время как зарплаты в вашей табличке указаны до налогов (поправьте если не так). Т.е. с указанных $132К в Швейцарии в зависимости от кантона вы реально на руки получите от $93К до $108К. Посчитайте сами: https://neuvoo.ch/tax-calculator/
Под богатством я имею в виду вот это определение:
Богатство — изобилие у человека или общества нематериальных и материальных ценностей (таких, как деньги, средства производства, недвижимость или личное имущество), превышающее жизненные потребности человека (достаток)
Иными словами, богатым можно назвать того, у кого активов больше чем нужно для обеспечения его жизнедеятельности. Например: два дома/квартиры, две машины и т.д.
И здесь было бы очень интересно узнать, как работающему человеку на зарплату в $93K — $108K купить в Швейцарии хотя бы два дома, учитывая что ему нужно еще платить ренту каждый месяц (если от родителей не досталось) и нести прочие расходы (Швейцария, к слову, одна из самых дорогих стран для жизни)?
Как мне кажется, эти цифры cкорее относятся к рынку труда, чем к рынку предпринимательства (о чем я и говорил — если хотите работать на рынке труда, ВО вредным не будет, если же хотите делать деньги — делайте не откладывая).
Приведенные в таблице зарплаты никак нельзя назвать "богатством". Например те же $132K для Швейцарии это не более чем средний класс, да и то с большой натяжкой, особенно если человек живет там в первом поколении (эмигрант).
Помимо этого, в такие статистические данные принципиально не включается криминальный бизнес, который также является предпринимательством. С интересом бы посмотрел статистику по Ivy League education среди глав наркокартелей и боссов мафии.
Несмотря на то что статистика что вы привели несомненно была очень интересной для меня, все же мой месседж был о том что на рынке труда, где ВО — неотъемлемый этап успешной карьерной лестницы, стать богатым вряд ли получится, просто из-за того что это не предусмотрено капиталистической системой. Богатыми в текущей экономике становятся именно предприниматели, и вот важность традиционного ВО (именно ВО) как раз в таких случаях — это большой вопрос.
Имеется различная статистика по этому вопросу, и однозначного ответа, судя по-всему, нет. Но, как мне кажется, в этих рассуждениях стоит начать с того что богатые люди появились задолго до возникновения современной системы ВО.
Более того, если углубиться непосредственно в IT cферу, можно заметить что довольно заметное количество знаковых компаний и продуктов было создано людьми не то что не имеющими (или бросившими) высшего образования, но иногда даже и колледж не закончившими: Microsoft, Facebook, Apple.
Наиболее интересна здесь компания Apple: если бы Возняк и Джобс таки честно получили ВО, они уже врядли бы стали основателями такой успешной компании, потому что время для их предприятия было бы упущено.
И я даже не углубляюсь в особенности Российского ВО: когда меня чуть не отчислили из-за хвоста по физкультуре на факультете прикладной информатики, уже тогда я окончательно убедился в том что с этой системой что-то не так и что она скорее вредит, особенно тем кто решил связать свою жизнь с предпринимательством, где каждая минута на счету и где ценится именно действие и реальные знания, а не формальное соответствие каким-либо стандартам.
Чтобы быть здоровым и богатым, высшее образование на ранних этапах не просто необязательно, но еще и нежелательно. А вот если вы хотите стать специалистом и работать на рынке труда — тогда да, вредным не будет, но богатым при этом вы вряд ли станете.
Простите, но зачем отождествлять Москву с Россией и при этом сравнивать всё с Америкой?
Похоже на манипуляцию. Я уже и не говорю про человеческий капитал и возможности для развития. Многие люди не только и не столько из-за денег переезжают.
Огромное значение имеют еще и люди вокруг, как один из показателей комфорта. Из моего опыта в России — у людей друг к другу просто скотское отношение, начиная от бытового уровня и заканчивая государственным. Высокий уровень токсичности социальной среды.
Почему-то все этот момент упускают из виду. Разница есть — и она очень большая. А деньги — приложатся, уж в Америке-то не заработать, это я даже не знаю кем надо быть. Инвалидом разве что. Да и то, отношение к инвалидам в России и Америке думаю тоже вряд ли сравнимо.
Вкратце: D разрабатывался хардкорными инженерами, но в команде не было менеджеров с сильными навыками маркетологов, из-за этого также допускались ошибки в позиционировании языка.
В добавок, проект изначально не финансировался крупными корпорациями, а был больше хобби-проектом и попыткой исправить ошибки С++, вместо предоставления какого-то кардинально нового опыта как в других языках (типа Rust).
Сейчас язык выглядит очень неплохо, но основная проблема — отсутствие инфраструктуры, которая является следствием отсутствия популярности.
Тем не менее, программировать на D очень здорово, и после такого опыта обратно на другие языки уже не хочется, особенно на скриптовые. Крутость D в том что он потенциально дает возможность писать одновременно и на низком (вплоть до ASM) и на высоком уровне, давая возможность использовать продвинутые абстракции высокоуровневых/функциональных языков.
Согласно последнему статусу, автор сейчас работает над прохождением юнит-тестов в стандартной библиотеке. С релизом должны решиться проблемы и с потреблением памяти, и со скоростью компиляции
Подтверждаю что async/await действительно НЕ нужен в языке. Он при желании делается на шаблонах. Проблема в том что теоретически, программа может использовать разные библиотеки для асинхронности, поэтому и планировщик с обработкой ошибок будет разный, и поэтому async/await потенциально будет везде по-разному реализован.
Что можно сделать: дать интерфейсы в стандартной библиотеке, чтобы их можно было реализовать, тем самым потенциально подключив любую существующую библиотеку. Но, честно говоря, я бы лучше вынес это как внешнюю зависимость.
D все-таки системный язык, позволяющий делать очень многое, и насильно привязывать его к таким конструкциям как async/await смысла нет
Может для профессионала в сфере журналистики упомянутые "акулы" в виде "Банки, налоговая, бухгалтерия, документооборот, юристы" и представляют проблему, но для "лучшего разработчика", который обладает всеми перечисленными в статье качествами, это не является чем-то сверхсложным.
Разработчики постоянно работают с новыми знаниями, потому что программирование — это прикладная дисциплина, в которой надо еще и предметной областью владеть. Нередки случаи, когда один программист на предприятии может делать работу сразу нескольких специалистов разных департаментов.
Так что в этом контексте вопрос "зачем такому разработчику вообще работать на кого-то" актуальности, отнюдь, не теряет.
P.S. Если Ваша предпринимательская деятельность дает Вам всего-лишь на 20% больше чем зарплата, скорее всего Вы что-то делаете не так
Да не за что! =)
D очень интересный язык с той точки зрения, что пытается исправить неудачные решения в C и C++ при этом не сдвигая целиком всю парадигму, как это делает, например, Rust.
Смотрю что Ваше предыдущее сообщение (да и мои тоже) уже успели заминусовать добрые посетители Хабра. Если что, то это не я. Обычно таким не занимаюсь =)
Всеми руками и ногами поддерживаю Ваше начинание! Сейчас в этой нише очень уж мало легковесных встраиваемых решений для рендеринга HTML. В приципе есть Sciter (его вроде уже упоминали), но он совсем не опен сорс и является платным для коммерческого использования.
Так что было бы здорово, если бы у Вас все получилось!
На мой взгляд скорость компиляции важна для программиста: чем меньше времени уходит на цикл разработки, тем лучше. Среди двух языков с одинаковой скоростью исполнения и примерно одинаковыми характеристиками я бы выбрал тот, который быстрее компилируется. Мне кажется это логичным.
Скорость точно такая же как и в C/C++, так как бэкенды те же. Однако референсный компилятор оптимизирует хуже чем два других — LDC и GDC (с GCC бэкендом), а также не умеет в кросс-компиляцию, поэтому если нужны крутые оптимизации и микроволновки с чайниками, то собирать нужно через LDC, т.к. это компилятор на основе LLVM бэкенда (уже WASM даже работает). Но с ним и сама сборка будет медленнее, поэтому LDC в основном используют для продакшн билдов.
Вот вводная справка по компиляторам D: https://wiki.dlang.org/Compilers
Основатель и создатель языка — Уолтер Брайт: https://en.wikipedia.org/wiki/Walter_Bright
, он же создатель одного из самых первых полноценных компиляторов C++. С ним в паре работает Андрей Александреску — очень известный товарищ из мира C++. Также существует некоммерческая организация D Foundation, которая используется как раз для организации спонсорской помощи. С корпоративным уровнем у них там все достаточно серьезно, но все-таки сказывается отсутствие крупных спонсоров типа Google, Microsoft и т.д., но некоторые считают что это даже к лучшему.
Самому языку на самом деле уже больше 10 лет, но у него сложная история. Популярным его не назовешь, но и умирать он точно не собирается (в виду наличия достаточно большой кодовой базы в некоторых крупных коммерческих проектах) и постепенно развивается, конечно не такими темпами как более попсовые Go и Rust.
Если надо собирать под какие-то специфические микроконтроллеры, то тут вы правы — лучше взять С, так как его компиляторы есть практически везде.
По эффективности же (для программиста) D превосходит оба языка из-за наличия в нем современных языковых средств, которые, кстати, C++ активно тащит в свои новые стандарты копируя их с D.
Тем не менее, в режиме BetterC у вас не будет замыканий, т.к. они требуют сборщика мусора, а также классов с их наследованием. Но т.к. у вас ручное управление памятью и в целом минимализм, то они вам и не нужны =D
Еще из недостатков можно отметить пока что слабую поддержку IDE, хотя она есть.
В общем рекомендую просто потратить пару дней и попробовать написать что-то что у вас уже написано на C, но только на подмножестве BetterC. Порог входа для вас будет нулевой (в виду практически полной совместимости с C), а приятных бонусов гораздо больше.
Одно могу точно сказать — попробовав D (даже в урезанном виде) потом будет очень больно слезать назад на C и C++.
Но если у вас есть какие-то специфические требования, то тут конечно лучше вам смотреть предметно самостоятельно, описать все в одном комментарии сложно. Может C в вашем случае действительно более подходящий выбор.
C++ ооочень медленно компилируется, поэтому я даже не представляю как можно собирать проекты уровня Blink на домашней машине средней руки. D в режиме BetterC (это ключевой момент) как раз-таки очень хорошо должен вам подойти, просто гляньте на спеку: https://dlang.org/spec/betterc.html, там вообще нет рантайма кроме libc.
По сути это и есть C, только без заголовочных файлов (с модулями) и с разными очень удобными плюшками типа ranges, удобного foreach, array slices, RAII и т.д. Для ручного управления памятью никто не запрещает вызывать привычные malloc и free, либо подключить какие-то другие аллокаторы.
Сам D очень хорошо (полностью совместим) интерфейсится с C и чуть похуже с C++ (в основном из-за премудростей с интерфейсами и наследованием в классах), так что встраиваемость будет на отличном уровне.
Причина по которой я рекомендую именно D — в скорости компиляции оного референсным компилятором. Ни C, ни особенно C++, не смогут в такое просто из-за особенностей языка — наличие заголовочных файлов само по себе усложняет компиляцию.
Еще как вариант есть Rust, но у него со скоростью компиляции тоже вроде бы не все так хорошо (знатоки, поправьте, если что-то изменилось). Да и порог входа там тоже никто не отменял.
Не пробовали смотреть в сторону какого-нибудь другого языка вместо C? Например D в режиме BetterC. Бонусом должно быть ускорение времени компиляции проекта (к линковке, конечно, не относится).
Если Вы о сборщике мусора (по ссылке по крайней мере про него), то в D можно его не использовать. Хоть обширная часть стандартной библиотеки и написана с его применением, но все же никто не мешает программировать без этого, и более того, доступен специальный атрибут @nogc, который заставит компилятор ругаться каждый раз когда происходит выделение памяти через GC.
То есть формально D в настоящее время — это универсальный инструмент и для низкого уровня, и для абстрактной логики, поэтому неудивительно что автор использует его для обучения концепциям программирования.
Так что не вижу ни теоретической, ни практической невозможности, тем более что код генерируется одними и теми же бэкендами (GCC и LLVM)
Хороший вопрос! Но все мы видим что программирование точно так же автоматизируется как и автоматизирует другие области, поэтому появления "вайтишников" неизбежно. И наша задача, как опытных профессионалов, помогать им, а не противопоставлтять себя им. А мы сами, уходим в другие области, недоступные для "пионеров".
Тем не менее, все еще считаю что один отличный эксперт может заменить 5-10 "вайтишников", так что работа всегда найдется :)
Вы знаете, я тут напился, и все равно думаю что статья весьма неплоха. Однако я бы не стал приковывать внимание ко многим мелким функциональным вещам. Все-таки профессия программист, какой-бы разнообразной она не была, состоит из того что всеми нами движет мотивация творения, создания новых вещей, и программирование в этом смысле — это в перую очередь творческая профессия, но для тех, у кого нет возможности творить используя значительные материальные ресурсы. Допустим будь Вы более обеспечены, Вы бы Творили будучи хирургом, строителем, или другим инженером. Эта профессия привлекает в первую очередь тем, что полет мысли неограничен: Вы как-будто делаете все "из ничего", и Ваша способность к творчеству в основном ограничивается знанием алгоритмов и условностями предметной области.
В этом смысле, те, кто хочет созидать в новой эпохе, должны понимать что программирование это Ваш "one-stop shop", будь Вы хирург, инженер, маркетолог, дизайнер и много чего еще.
Программирование, так или иначе, в ближайшие 20-30 лет, коснется каждой профессии, и здесь кроется Ваш зведный час. Пользуйтесь пока это востребовано, автоматизация — это будущее, хотите ли Вы того или нет.
Предложу все-таки более честно указывать что в цифрах по "Median income" вы приводите именно median disposable income, что является доходом после уплаты всех налогов и страховых взносов, в то время как зарплаты в вашей табличке указаны до налогов (поправьте если не так). Т.е. с указанных $132К в Швейцарии в зависимости от кантона вы реально на руки получите от $93К до $108К. Посчитайте сами: https://neuvoo.ch/tax-calculator/
Под богатством я имею в виду вот это определение:
Иными словами, богатым можно назвать того, у кого активов больше чем нужно для обеспечения его жизнедеятельности. Например: два дома/квартиры, две машины и т.д.
И здесь было бы очень интересно узнать, как работающему человеку на зарплату в $93K — $108K купить в Швейцарии хотя бы два дома, учитывая что ему нужно еще платить ренту каждый месяц (если от родителей не досталось) и нести прочие расходы (Швейцария, к слову, одна из самых дорогих стран для жизни)?
Как мне кажется, эти цифры cкорее относятся к рынку труда, чем к рынку предпринимательства (о чем я и говорил — если хотите работать на рынке труда, ВО вредным не будет, если же хотите делать деньги — делайте не откладывая).
Приведенные в таблице зарплаты никак нельзя назвать "богатством". Например те же $132K для Швейцарии это не более чем средний класс, да и то с большой натяжкой, особенно если человек живет там в первом поколении (эмигрант).
Помимо этого, в такие статистические данные принципиально не включается криминальный бизнес, который также является предпринимательством. С интересом бы посмотрел статистику по Ivy League education среди глав наркокартелей и боссов мафии.
Несмотря на то что статистика что вы привели несомненно была очень интересной для меня, все же мой месседж был о том что на рынке труда, где ВО — неотъемлемый этап успешной карьерной лестницы, стать богатым вряд ли получится, просто из-за того что это не предусмотрено капиталистической системой. Богатыми в текущей экономике становятся именно предприниматели, и вот важность традиционного ВО (именно ВО) как раз в таких случаях — это большой вопрос.
Имеется различная статистика по этому вопросу, и однозначного ответа, судя по-всему, нет. Но, как мне кажется, в этих рассуждениях стоит начать с того что богатые люди появились задолго до возникновения современной системы ВО.
Более того, если углубиться непосредственно в IT cферу, можно заметить что довольно заметное количество знаковых компаний и продуктов было создано людьми не то что не имеющими (или бросившими) высшего образования, но иногда даже и колледж не закончившими: Microsoft, Facebook, Apple.
Наиболее интересна здесь компания Apple: если бы Возняк и Джобс таки честно получили ВО, они уже врядли бы стали основателями такой успешной компании, потому что время для их предприятия было бы упущено.
И я даже не углубляюсь в особенности Российского ВО: когда меня чуть не отчислили из-за хвоста по физкультуре на факультете прикладной информатики, уже тогда я окончательно убедился в том что с этой системой что-то не так и что она скорее вредит, особенно тем кто решил связать свою жизнь с предпринимательством, где каждая минута на счету и где ценится именно действие и реальные знания, а не формальное соответствие каким-либо стандартам.
Кстати, у Пола Грэма есть на эту тему интересная заметка: http://www.paulgraham.com/lesson.html
Чтобы быть здоровым и богатым, высшее образование на ранних этапах не просто необязательно, но еще и нежелательно. А вот если вы хотите стать специалистом и работать на рынке труда — тогда да, вредным не будет, но богатым при этом вы вряд ли станете.
Простите, но зачем отождествлять Москву с Россией и при этом сравнивать всё с Америкой?
Похоже на манипуляцию. Я уже и не говорю про человеческий капитал и возможности для развития. Многие люди не только и не столько из-за денег переезжают.
Огромное значение имеют еще и люди вокруг, как один из показателей комфорта. Из моего опыта в России — у людей друг к другу просто скотское отношение, начиная от бытового уровня и заканчивая государственным. Высокий уровень токсичности социальной среды.
Почему-то все этот момент упускают из виду. Разница есть — и она очень большая. А деньги — приложатся, уж в Америке-то не заработать, это я даже не знаю кем надо быть. Инвалидом разве что. Да и то, отношение к инвалидам в России и Америке думаю тоже вряд ли сравнимо.
Вот тут описано почему: https://www.quora.com/Which-language-has-the-brightest-future-in-replacement-of-C-between-D-Go-and-Rust-And-Why/answer/Andrei-Alexandrescu
Вкратце: D разрабатывался хардкорными инженерами, но в команде не было менеджеров с сильными навыками маркетологов, из-за этого также допускались ошибки в позиционировании языка.
В добавок, проект изначально не финансировался крупными корпорациями, а был больше хобби-проектом и попыткой исправить ошибки С++, вместо предоставления какого-то кардинально нового опыта как в других языках (типа Rust).
Сейчас язык выглядит очень неплохо, но основная проблема — отсутствие инфраструктуры, которая является следствием отсутствия популярности.
Тем не менее, программировать на D очень здорово, и после такого опыта обратно на другие языки уже не хочется, особенно на скриптовые. Крутость D в том что он потенциально дает возможность писать одновременно и на низком (вплоть до ASM) и на высоком уровне, давая возможность использовать продвинутые абстракции высокоуровневых/функциональных языков.
Вот открытый проект. Популярный, если мерить популярность по звездочкам: https://github.com/gnunn1/tilix
Вот библиотека для машинного обучения от Netflix:
https://github.com/Netflix/vectorflow
Вас какая-то конкретная сфера интересует?
Кстати проблемы с ctRegex должны будут решиться с релизом проекта
newCTFE: https://dlang.org/blog/2017/04/10/the-new-ctfe-engine/Согласно последнему статусу, автор сейчас работает над прохождением юнит-тестов в стандартной библиотеке. С релизом должны решиться проблемы и с потреблением памяти, и со скоростью компиляции
Подтверждаю что async/await действительно НЕ нужен в языке. Он при желании делается на шаблонах. Проблема в том что теоретически, программа может использовать разные библиотеки для асинхронности, поэтому и планировщик с обработкой ошибок будет разный, и поэтому async/await потенциально будет везде по-разному реализован.
Что можно сделать: дать интерфейсы в стандартной библиотеке, чтобы их можно было реализовать, тем самым потенциально подключив любую существующую библиотеку. Но, честно говоря, я бы лучше вынес это как внешнюю зависимость.
D все-таки системный язык, позволяющий делать очень многое, и насильно привязывать его к таким конструкциям как async/await смысла нет
От https://dlang.org/phobos/std_typecons.html#Nullable толку как от козла капусты.
Да, он есть, но в компайл тайме все равно не ограничивает от неправильного использования.
Лучше уж тогда Optional брать из другой библиотеки.
Может для профессионала в сфере журналистики упомянутые "акулы" в виде "Банки, налоговая, бухгалтерия, документооборот, юристы" и представляют проблему, но для "лучшего разработчика", который обладает всеми перечисленными в статье качествами, это не является чем-то сверхсложным.
Разработчики постоянно работают с новыми знаниями, потому что программирование — это прикладная дисциплина, в которой надо еще и предметной областью владеть. Нередки случаи, когда один программист на предприятии может делать работу сразу нескольких специалистов разных департаментов.
Так что в этом контексте вопрос "зачем такому разработчику вообще работать на кого-то" актуальности, отнюдь, не теряет.
P.S. Если Ваша предпринимательская деятельность дает Вам всего-лишь на 20% больше чем зарплата, скорее всего Вы что-то делаете не так
Да не за что! =)
D очень интересный язык с той точки зрения, что пытается исправить неудачные решения в C и C++ при этом не сдвигая целиком всю парадигму, как это делает, например, Rust.
Смотрю что Ваше предыдущее сообщение (да и мои тоже) уже успели заминусовать добрые посетители Хабра. Если что, то это не я. Обычно таким не занимаюсь =)
Всеми руками и ногами поддерживаю Ваше начинание! Сейчас в этой нише очень уж мало легковесных встраиваемых решений для рендеринга HTML. В приципе есть Sciter (его вроде уже упоминали), но он совсем не опен сорс и является платным для коммерческого использования.
Так что было бы здорово, если бы у Вас все получилось!
На мой взгляд скорость компиляции важна для программиста: чем меньше времени уходит на цикл разработки, тем лучше. Среди двух языков с одинаковой скоростью исполнения и примерно одинаковыми характеристиками я бы выбрал тот, который быстрее компилируется. Мне кажется это логичным.
Не совсем понимаю при чем здесь Delphi.
Скорость точно такая же как и в C/C++, так как бэкенды те же. Однако референсный компилятор оптимизирует хуже чем два других — LDC и GDC (с GCC бэкендом), а также не умеет в кросс-компиляцию, поэтому если нужны крутые оптимизации и микроволновки с чайниками, то собирать нужно через LDC, т.к. это компилятор на основе LLVM бэкенда (уже WASM даже работает). Но с ним и сама сборка будет медленнее, поэтому LDC в основном используют для продакшн билдов.
Вот вводная справка по компиляторам D: https://wiki.dlang.org/Compilers
Сам язык относительно недавно включили в состав GCC: https://www.opennet.ru/opennews/art.shtml?num=49546
Основатель и создатель языка — Уолтер Брайт: https://en.wikipedia.org/wiki/Walter_Bright
, он же создатель одного из самых первых полноценных компиляторов C++. С ним в паре работает Андрей Александреску — очень известный товарищ из мира C++. Также существует некоммерческая организация D Foundation, которая используется как раз для организации спонсорской помощи. С корпоративным уровнем у них там все достаточно серьезно, но все-таки сказывается отсутствие крупных спонсоров типа Google, Microsoft и т.д., но некоторые считают что это даже к лучшему.
Вот список организаций которые использовали или используют D: https://dlang.org/orgs-using-d.html
Самому языку на самом деле уже больше 10 лет, но у него сложная история. Популярным его не назовешь, но и умирать он точно не собирается (в виду наличия достаточно большой кодовой базы в некоторых крупных коммерческих проектах) и постепенно развивается, конечно не такими темпами как более попсовые Go и Rust.
Если надо собирать под какие-то специфические микроконтроллеры, то тут вы правы — лучше взять С, так как его компиляторы есть практически везде.
По эффективности же (для программиста) D превосходит оба языка из-за наличия в нем современных языковых средств, которые, кстати, C++ активно тащит в свои новые стандарты копируя их с D.
Тем не менее, в режиме BetterC у вас не будет замыканий, т.к. они требуют сборщика мусора, а также классов с их наследованием. Но т.к. у вас ручное управление памятью и в целом минимализм, то они вам и не нужны =D
Еще из недостатков можно отметить пока что слабую поддержку IDE, хотя она есть.
В общем рекомендую просто потратить пару дней и попробовать написать что-то что у вас уже написано на C, но только на подмножестве BetterC. Порог входа для вас будет нулевой (в виду практически полной совместимости с C), а приятных бонусов гораздо больше.
Можете пройти небольшой тур для ознакомления с общими принципами языка: https://tour.dlang.org/tour/ru/welcome/welcome-to-d
Одно могу точно сказать — попробовав D (даже в урезанном виде) потом будет очень больно слезать назад на C и C++.
Но если у вас есть какие-то специфические требования, то тут конечно лучше вам смотреть предметно самостоятельно, описать все в одном комментарии сложно. Может C в вашем случае действительно более подходящий выбор.
C++ ооочень медленно компилируется, поэтому я даже не представляю как можно собирать проекты уровня Blink на домашней машине средней руки. D в режиме BetterC (это ключевой момент) как раз-таки очень хорошо должен вам подойти, просто гляньте на спеку: https://dlang.org/spec/betterc.html, там вообще нет рантайма кроме libc.
По сути это и есть C, только без заголовочных файлов (с модулями) и с разными очень удобными плюшками типа ranges, удобного foreach, array slices, RAII и т.д. Для ручного управления памятью никто не запрещает вызывать привычные malloc и free, либо подключить какие-то другие аллокаторы.
Сам D очень хорошо (полностью совместим) интерфейсится с C и чуть похуже с C++ (в основном из-за премудростей с интерфейсами и наследованием в классах), так что встраиваемость будет на отличном уровне.
Причина по которой я рекомендую именно D — в скорости компиляции оного референсным компилятором. Ни C, ни особенно C++, не смогут в такое просто из-за особенностей языка — наличие заголовочных файлов само по себе усложняет компиляцию.
Еще как вариант есть Rust, но у него со скоростью компиляции тоже вроде бы не все так хорошо (знатоки, поправьте, если что-то изменилось). Да и порог входа там тоже никто не отменял.
Не пробовали смотреть в сторону какого-нибудь другого языка вместо C? Например D в режиме BetterC. Бонусом должно быть ускорение времени компиляции проекта (к линковке, конечно, не относится).
DELETED