Является ли язык D надежной альтернативой Java и C ++? Что потребуется, чтобы стать надежной альтернативой? Должен ли я научиться этому? Это заслуживает евангелизации?
Основная причина, по которой я спрашиваю, состоит в том, что с новым стандартом C ++ (c ++ 0x) почти здесь, для меня ясно, что язык далеко прошел точку невозврата по отношению к любому, кто когда-либо его понимает. Я знаю, что C / C ++ никогда не умрет, но в какой-то момент нам нужно двигаться дальше. Даже у COBOL был свой день, а Java во многом отменила C ++. Ну и что дальше? D заполняет счет?
Ответы:
То, что определяет успех и популярность языка программирования для реальной разработки программного обеспечения, только частично связано с качеством самого языка. Как чистый язык, D, возможно, имеет много преимуществ по сравнению с C ++ и Java. По крайней мере, это надежная альтернатива как чистый язык, при прочих равных условиях.
Тем не менее, для разработки программного обеспечения важны другие вещи - больше, чем сам язык: переносимость (на скольких платформах он работает), поддержка отладчика, поддержка IDE, стандартное качество библиотеки, поддержка динамических библиотек, привязки для общих API, документация, разработчик сообщество, импульс и коммерческая поддержка, и это лишь некоторые из них. В каждом из этих аспектов D безнадежно отстает от Java, C ++ и C #. На самом деле, я бы сказал, что в этом отношении они даже стоят за так называемыми «скриптовыми» языками, такими как Python, Perl, PHP, Ruby и даже JavaScript.
Если говорить прямо, вы просто не можете создать крупномасштабное кроссплатформенное приложение с использованием D. С незрелой стандартной библиотекой,
без поддержки каких-либо современных IDE(есть плагины для Visual Studio и Xamarin Studio / MonoDevelop), ограничено поддержка динамических / разделяемых библиотек и несколько привязок к другим языкам, D сегодня просто не подходит.Если вам нравится то, что вы видите в D, обязательно изучите его - это не займет много времени, если вы уже знаете Java и C ++. Я не думаю, что евангелизация будет полезна - на данный момент, если D собирается добиться успеха, то на самом деле ему нужно больше людей, спокойно использующих его и устраняющих его основные недостатки, такие как поддержка стандартных библиотек и IDE.
Наконец, что касается C ++, хотя большинство согласны с тем, что язык слишком сложен, тысячи компаний успешно используют C ++ как часть здорового сочетания языков, допуская только меньшее, четко определенное подмножество языка. Все еще трудно победить C ++, когда требуются как высокая производительность, так и небольшое использование памяти.
источник
Просто чтобы добавить мой собственный опыт в смесь:
Около года назад я работал над небольшим игровым проектом (3 программиста) продолжительностью 3 месяца, где мы использовали D в качестве основного языка. Мы выбрали его частично в качестве эксперимента, частично потому, что в нем уже были привязки для SDL и некоторых других инструментов, которые мы использовали, и в основном для преимуществ, по-видимому, по сравнению с C ++.
Мы любили его использовать. Это было быстро учиться и легко писать. Многие из его функций оказались неоценимыми, и я скучаю по ним, вернувшись к C ++.
Тем не менее, следующие моменты сделали нашу жизнь сложнее:
В целом, мы любили писать D. Это действительно облегчало написание кода и быстро усваивалось. Упомянутые мною проблемы повторяют ответ, который был принят на этот вопрос, - это «лишние» биты, которые необходимо адресовать в D, ядро которого твердое.
источник
Я согласен с тем, что C ++ становится тупиковым языком - и мне больно говорить об этом после его использования в течение последних 17 лет.
Я думаю, что D - законный преемник C ++. С языковой точки зрения он «делает все правильно» (даже если я не согласен с каждым минутным решением). Я думаю, что с C и C ++ в упадке нет другого языка системного уровня, который действительно мог бы делать то, что они делают, удерживая себя в мире современных языков - кроме D! Мало того, что D исполняет эту роль - она превосходна в этом! Достаточно взглянуть на D1.x, чтобы убедить вас в этом, но когда вы посмотрите на D2.0, он вас унесет. По моему мнению, сегодня нет другого языка, который бы работал так же хорошо, как D2.0 в соединении парадигм императивного и функционального программирования, который станет более значимым в ближайшие годы.
Отсутствие принятия основного - или даже видимость - а также большого масштаба, пожилые, библиотеки - это препятствие конечно. Однако я не думаю, что вы можете списать это из-за этого. Я убежден, что D будет станет одним из самых важных языков в ближайшие несколько лет - и те, кто воспринимает его всерьез, хорошие возможности взять на себя инициативу, когда придет время.
Я думаю, что разница произойдет во многом благодаря участию Андрея Александреску. Это ни в коем случае не дискредитирует Уолтера Брайта, который проделал огромную работу по привлечению D в мир. Но Александреску - важная и неотразимая фигура в сообществе C ++, и именно здесь собирается появиться большинство потенциальных D-переключателей. И он также внес значительный и важный вклад в D2.0 в поддержку функционального программирования.
Может все еще оказаться, что D обречен быть Betamax языков системного уровня - но мои деньги на это развернутся в течение следующих двух лет.
источник
Мне нравится, что D - это работа гения, прежде всего одного ума - Уолтера Брайта, чей компилятор Zortech был фантастическим в свое время.
В отличие от C ++ слишком много дизайна комитетом, даже если Бьярне оказывает влияние. Слишком много дополнительных функций и странный новый синтаксис. Эта разница отражается в легкости обучения и простоте повседневного использования, уменьшении количества ошибок.
Более когерентные языки приводят к лучшей производительности и программатор радости - но это субъективно и спорно! (я думаю, я должен проголосовать за мой собственный ответ)
источник
D - хороший язык и довольно популярен , но, как и все языки, это просто еще один инструмент. Какой инструмент использовать, зависит от того, какой вы человек, как вы думаете, от среды, в которой вы работаете, какие ограничения языков применяются к программе и, самое главное, от самой программы. Если у вас есть время, я бы определенно рекомендовал изучить сценарий D. В худшем случае, вы никогда не будете его использовать. Скорее всего, вы узнаете, какие аспекты вам нравятся больше всего, и при каких условиях он светит ярче, и воспользуетесь этим для создания новых программ.
Я бы порекомендовал взглянуть на таблицу сравнения D, чтобы увидеть, какие функции есть у языка, и посмотреть, подходит ли он вам.
источник
Язык D современный. Ни один язык не идеален, и в этом нет никаких сомнений. Но языки рождаются, чтобы облегчить жизнь. Где язык D по сравнению с C ++ имеет много хороших возможностей с точки зрения сложности. Используется множество других языковых комбинаций, которые помогают кодерам быстрее кодировать, с ТОП-функциями, представленными другими языками. Пожалуйста, смотрите также: для более подробной информации о D и других языках
D против C ++ - это совместимость, в которой задействованы огромные языки C ++, и она требует совместимости с D. D обеспечивает уже 100% совместимость с C, что по-прежнему является хорошей победой.
D против C ++, C ++ - это, на мой взгляд, очень хороший язык, но его трудно кодировать, и он требует много времени, чтобы получить успех, но D позволяет делать то же самое с простотой
D против C ++, я не уверен, что это делает C ++, но D не разрешает присваивать переменные ограничения типа без использования «auto», что хорошо для динамической переменной, когда требуется сделать строгий тип
По сравнению с C ++, если у вас есть опыт работы с другими языками, вы можете сразу приступить к работе с ним, он имеет простую схему обучения и разрабатывается сильной опытной командой и поддержкой компании.
D против C ++, очень хорошая вещь, которую я нашел в D, это стиль кода, он выглядит и чувствует себя точно так же, как C / C ++, хотя кодирование напоминает, что я делаю действительно современный C / C ++, который называется D
Есть много более веских причин для языка D, нет причин недооценивать любой язык, его всегда выбирает пользователь.
источник
Это действительно зависит от ваших потребностей - крупномасштабные коммерческие приложения, написанные на D , существуют на стороне сервера, и для этого D (как правило, использующий Tango / Mango) идеально подходит, и вы, вероятно, сможете обслуживать больше запросов. чем с любым другим языком / платформой.
Для более специализированных решений с точки зрения протоколов и интерактивности (которых много) у вас будет больше проблем с поиском необходимых библиотек, и нехватка инструментов, скорее всего, повлияет на вас больше.
источник
D довольно впечатляет, и книга Андрея об этом хорошо написана. Но, как уже говорили другие, вам нужны инструменты и поддержка платформы. Со временем GDC может стать ответом на оба вопроса.
Вы видели это?
«Отладчик GNU добавляет поддержку языка D»: http://www.linux.com/news/enterprise/biz-enterprise/358956-gnu-debugger-adds-d-language-support
Кроме того, на сайте digitalmars есть страницы, посвященные взаимодействию с C и C ++ (для тех библиотек, без которых вы просто не можете жить). Интересно, есть ли какие-нибудь инструменты, которые, учитывая файл заголовка C, предпримут попытку написать прототипы D.
Лично я бы не стал настаивать на том, чтобы делать большой проект на D, но я бы использовал D для внутренних инструментов, чтобы получить опыт работы с ним и познакомить с ним других.
Первоначальный вопрос заключался в том, является ли D надежной альтернативой Java и C ++. Я не думаю, что D и Java действительно будут сильно конкурировать на практике; D конкурирует с C ++ и теперь Go. Другие вопросы касаются различий между D и Go, но обычно считается, что Go проще в использовании. Поэтому я подозреваю, что будущее D во многом зависит от того, сколько места у него есть, чтобы дышать между C ++, нынешним королем холма, и Go, гораздо более легкой альтернативой, которую поддерживает Google.
ОБНОВЛЕНИЕ: Я только что обнаружил, что моя любимая глава книги Андрея , посвященная параллелизму, доступна бесплатно онлайн. Определенно стоит прочитать!
А вот займет слишком много дискуссии о сравнительных достоинствах / задачах / подходах Go и D .
источник
Похоже, что вопрос был дан ответ. D - лучший язык по сравнению с C ++.
Вопрос о том, имеет ли для практических целей лучшую инфраструктуру вокруг, является вторичным.
Короче говоря, если они оба совершенно новые языки без какой-либо поддержки, то D - лучший язык, следовательно, это лучший язык.
источник
Как язык, я всегда чувствовал, что D ближе к C #, чем к C ++. Не в функциях и библиотеках, а в «ощущениях». Это намного чище, приятнее ... веселее (чем в C ++). ИМХО, самым большим препятствием в становлении надежной альтернативы являются инструменты, IDE и отладчик. Если D преодолеет некоторые препятствия для широкого использования / принятия, появятся другие инструменты и библиотеки. (Я сам вернусь к D, если будет полезная IDE и отладчик.)
источник
Прекрасно работает для моих любимых проектов. Я бы использовал его для проектов работодателей, но не знал, как трудно им будет найти кого-то, кто возьмет на себя источник после того, как я уйду дальше. Нет технических причин, чтобы этого избежать, по крайней мере на поддерживаемых платформах. (постучать по дереву)
источник
Один из подходов заключается в поиске работы в вашем районе. Найдите работу, которую вы хотели бы сделать, и посмотрите, какие навыки они просят. Если они просят C ++, Ruby, Oracle или D, то это навык, который в основном поможет вам получить работу, которую вы хотите.
источник
Это выглядит как очень хорошо разработанный язык; намного лучше, чем C - C ++ - Цель C. Некоторое время я могу жить без IDE или отладчика, но не без хорошей документированной библиотеки для D 2.0.
Я проверю через 6 месяцев ...
источник