Является ли D надежной альтернативой Java и С++?

Является ли язык D надежной альтернативой Java и С++? Что потребуется, чтобы стать надежной альтернативой? Должен ли я учиться этому? Это заслуживает евангелизации?

Основная причина, по которой я спрашиваю, заключается в том, что с новым стандартом С++ (С++ 0x) почти здесь, мне ясно, что язык прошел хорошо, не обращая внимания ни на кого, когда-либо понимающего его. Я знаю, что C/С++ никогда не умрет, но в какой-то момент нам нужно двигаться дальше. Даже у COBOL был свой день, и Java во многом отменил С++. Так, что дальше? Заполняет ли D счет?

Ответ 1

Что определяет успех и популярность языка программирования для разработки программного обеспечения реального мира, только частично связано с качеством самого языка. Как чистый язык, D, возможно, имеет много преимуществ перед С++ и Java. По крайней мере, это надежная альтернатива, как чистый язык, при прочих равных условиях.

Однако для разработки программного обеспечения важны и другие аспекты - почти больше, чем сам язык: переносимость (на сколько платформ он работает), поддержка отладчика, поддержка IDE, стандартное качество библиотеки, поддержка динамической библиотеки, привязки для общих API, документация, сообщество разработчиков, импульс и коммерческую поддержку, просто чтобы назвать несколько. В каждом из этих вопросов D безнадежно отстает от Java, С++ и С#. Фактически, я бы поспорил это даже за так называемыми "скриптовыми" языками, такими как Python, Perl, PHP, Ruby и даже JavaScript в этом отношении.

Чтобы быть тупым, вы просто не можете построить крупномасштабное кросс-платформенное приложение, используя D. С незрелой стандартной библиотекой нет поддержки в любых современных IDE (есть плагины для обоих Visual Studio и Xamarin Studio/MonoDevelop), ограниченная поддержка динамических/разделяемых библиотек и несколько привязок к другим языкам, D сейчас просто не вариант.

Если вам нравится то, что вы видите в D, обязательно изучите его - это не займет много времени, если вы уже знаете Java и С++. Я не думаю, что благовестие было бы полезно - на данном этапе, если D будет преуспевать, ему действительно нужно больше людей, которые тихо используют его и устраняют его основные недостатки, такие как стандартная библиотека и поддержка IDE.

Наконец, что касается С++, в то время как большинство согласны с тем, что язык слишком сложный, тысячи компаний успешно используют С++ как часть здорового сочетания языков, разрешая только меньшее, четко определенное подмножество языка. По-прежнему трудно превзойти С++, когда требуются как сырая производительность, так и малая память.

Ответ 2

Просто добавьте свой опыт в микс:

Примерно год назад я работал над небольшим игровым проектом (3 кодера), который длился 3 месяца, где мы использовали D как наш основной язык. Мы выбрали его частично как эксперимент, отчасти потому, что у него уже были привязки для SDL и некоторых других инструментов, которые мы использовали, и в основном для преимуществ, по-видимому, имеют более С++.

Мы любили его использовать. Это было быстро, чтобы учиться и легко писать. Многие из этих функций оказались неоценимыми, и я пропустил их, вернувшись на С++.

Однако следующие моменты усложнили жизнь:

  • В то время не было хорошей среды IDE, что было серьезной проблемой. Мы закончили свой собственный, настроив Scite. Это работало нормально, но не было идеальным.
  • В то время не было отладчика. Нам удалось заставить WINDBG работать на основе "промаха", но это было ненадежно. Отладочный код без отладчика иногда делал жизнь адской.
  • В то время было 2 стандартных библиотеки (Tango и Phobos). Мы начали с одного, переключились на другого и действительно нуждались в сочетании функций от обоих (Tangobos!). Это вызвало головные боли и некоторые перезаписи кода.
  • Привязки к другим инструментам недоступны. В итоге нам пришлось переключиться на DirectX (по причинам, по которым я не попаду). Для DirectX не было привязок, поэтому нам пришлось писать свои собственные на С++, строить его как .dll и связываться с ним. Это была довольно неприятная работа и потребовалось некоторое время.

В целом мы любили писать D. Это делало на самом деле простой код и быстро учился. Вопросы, о которых я упомянул, повторяют ответ, который был принят для этого вопроса - это "лишние" биты, которые нуждаются в адресации в D, ядро ​​его твердое.

Ответ 3

Я согласен с тем, что С++ становится тупиковым языком, и мне больно говорить, что после использования его в течение последних 17 лет.

Я думаю, что D является законным преемником С++. С точки зрения языка он "делает все правильно" (даже если я не согласен с решением каждой минуты). Я думаю, что с C и С++ при упадке нет других языков системного уровня, которые действительно могут делать то, что они делают, удерживаясь в мире современных языков, за исключением D! Эта роль не только выполняет D, но и превосходит ее! Взгляда на D1.x должно быть достаточно, чтобы убедить вас в этом, но когда вы смотрите на D2.0, он сбрасывает вас. По моему мнению, сегодня нет другого языка, который бы работал так же, как и D2.0, в преодолении парадигм императивного и функционального программирования, которые только собираются стать более значительными в ближайшие годы.

Отсутствие господствующего признания - или даже видимости - а также крупномасштабных, зрелых, библиотек - является, конечно, препятствием. Однако я не думаю, что вы можете это списать. Я убежден, что D будет расти, чтобы стать одним из самых важных языков в течение ближайших нескольких лет - и те, кто воспринимает это серьезно сейчас, будут в хорошем положении, чтобы взять на себя инициативу, когда наступит это время.

Я думаю, что разница будет вызвана, в основном, участием Андрея Александреску. Чтобы не дискредитировать Уолтера Брайка каким-либо образом, который проделал важную работу, чтобы довести D до мира. Но Alexandrescu - важная и неотразимая фигура в сообществе С++, и там, где большинство потенциальных переключателей D собираются. И он также внес значительный и важный вклад в D2.0 в поддержку функционального программирования.

Возможно, все-таки окажется, что D обречен быть бетамакс языков системного уровня, но мои деньги идут на него в течение следующих двух лет.

Ответ 4

Мне нравится, что D - это работа гения, в первую очередь одного ума - Уолтера Брайта, чей компилятор Zortech был фантастическим в свое время.

В отличие от С++ слишком много дизайна комитетом, даже если Bjarne - это влияние. Слишком много дополнительных функций и странный новый синтаксис. Эта разница отражает легкость обучения и легкость повседневного использования, меньше ошибок.

Более когерентные языки приводят к лучшей производительности и программатор радости - но это субъективно и спорно! (я думаю, я должен проголосовать за собственный ответ)

Ответ 5

D - хороший язык и прилично популярный, но, как и все языки, это еще один инструмент. Какой инструмент использовать зависит от того, кем вы являетесь, как вы думаете, о среде, в которой вы работаете, какие ограничения используют языки программы, и, самое главное, сама программа. Если у вас есть время, я определенно рекомендую изучить D. В худшем случае, вы никогда не будете его использовать. Скорее всего, вы узнаете, какие аспекты этого вам больше всего нравятся, и при каких условиях он сияет ярче, и воспользуйтесь этим для создания новых программ.

Я бы порекомендовал посмотреть сравнительную таблицу, чтобы узнать, какие функции для этого языка и посмотреть, подходит ли это вам.

Ответ 6

Язык D является современным. Ни один язык не идеален, и в этом нет никаких сомнений. Но языки рождаются, чтобы облегчить жизнь. Где D-язык по сравнению с С++ имеет множество хороших функций, с точки зрения сложности. В нем задействована другая специальность сочетания языков, которая помогает кодировщикам быстрее кодироваться, причем функции TOP доступны на других языках. См. Также: для более подробной информации о D и других языках

  • D vs С++ - совместимость, в которой задействованы огромные языки С++ и требуется совместимость с D. D, позволяющая уже на 100% совместимость с C, что является хорошей победой.

  • D vs С++, С++ - мое мнение, очень хороший язык, но его сложный код и требующий много времени, требует все больше опыта для успеха, но D позволяет делать то же самое с простотой

  • D vs С++, я не уверен, что С++ делает, но D не разрешает присвоение переменной ограничения типа без использования "auto", что полезно иметь переменную динамику, когда требуется, чтобы вы могли сделать строгий тип

  • D vs С++, если у вас есть опыт других языков, вы можете начать с этого, он имеет легкую обучающую дорожную карту, а ее разработка спроектирована благодаря сильной опытной команде и поддержке компании.

  • D vs С++, очень приятная вещь, которую я нашел из D, - это стиль кода, он придает внешний вид и выглядит точно так же, как C/С++, в то время как кодирование напоминает, что я делаю действительно современный C/С++ который называется D

Есть много более веских оснований для языка D, нет оснований недооценивать любой язык, его всегда выбор пользователя.

Ответ 7

Это действительно зависит от ваших потребностей: на стороне сервера существуют крупные коммерческие приложения, написанные на D do, и для этого D (как правило, с использованием Tango/Mango) идеально подходит, и вы, скорее всего, сможете подавать больше запросов, чем на любой другой язык/платформу.

Для более специализированных решений с точки зрения протоколов и интерактивности (многие из них) у вас будет больше проблем с поиском нужных библиотек, а отсутствие инструментов скорее всего повлияет на вас.

Ответ 8

D довольно впечатляет, и книга Андрея о нем написана хорошо. Но, как говорили другие, вам нужны инструменты и поддержка платформы. GDC может со временем быть ответом на оба.

Вы видели это?

"Отладчик GNU добавляет поддержку языка D": http://www.linux.com/news/enterprise/biz-enterprise/358956-gnu-debugger-adds-d-language-support

Кроме того, на сайте digitalmars есть страницы, обсуждающие взаимодействие с C и С++ (для тех библиотек, с которыми вы просто не можете жить). Интересно, есть ли какие-либо инструменты, которые, учитывая заголовочный файл C, начнут записывать прототипы D.

Лично я бы сейчас не стал настаивать на том, чтобы сделать большой проект в D, но я бы использовал D для собственных инструментов, познакомился с ним и познакомил других с ним.

Исходный вопрос заключался в том, является ли D надежной альтернативой Java и С++. Я не думаю, что D и Java действительно будут много конкурировать на практике; D конкурирует с С++ и теперь Go. Другие вопросы касаются различий между D и Go, но Go обычно считается более простым в использовании. Поэтому я подозреваю, что будущее D зависит от того, сколько места для него дышит между С++, нынешним королем холма и Go, гораздо более простой альтернативой, которая поддерживает Google.

UPDATE: я только что обнаружил, что моя любимая глава книги Андрея, одна из concurrency, доступна бесплатно в Интернете. Определенно стоит прочитать!

И здесь loooong обсуждение относительных достоинств/целей/подходов Go и D.

Ответ 9

Похоже, на вопрос был дан ответ. D - лучший язык по сравнению с С++.

Вопрос о том, является ли для практических целей D лучшей инфраструктурой вокруг, является вторичной.

Короче, если они оба совершенно новые языки без поддержки вокруг них, D - лучший язык, эрго - лучший язык.

Ответ 10

Отлично работает для моих домашних проектов. Я бы использовал его для проектов работодателей, но не знал, как трудно было бы найти кого-то, кто возьмет на себя исходный код после того, как я перейду. Нет никаких технических причин, чтобы избежать этого, по крайней мере, на поддерживаемых платформах. (стук по дереву)

Ответ 11

Как язык, я всегда чувствовал, что D ближе к С#, чем С++. Не в функциях и библиотеках, а в "чувстве". Это намного чище, приятнее... весело (чем С++). IMHO самым большим препятствием в становлении надежной альтернативой являются инструменты, IDE и отладчик. Если D преодолеет некоторые препятствия для широкого использования/принятия, проявятся больше инструментов и библиотек. (Я сам вернусь к D, если будет полезная среда IDE и отладчик.)

Ответ 12

Один из подходов - поиск заданий в вашем регионе. Найдите работу, которую вы хотели бы сделать, и посмотрите, какие навыки они просят. Если они запрашивают С++ или Ruby или Oracle или D, то это умение, которое в основном поможет вам получить нужную работу.

Ответ 13

Это выглядит очень хорошо разработанный язык; намного лучше, чем C - С++ - Цель C. Я могу жить без IDE или отладчика на некоторое время, но не без хорошей, документированной библиотеки для D 2.0.

Я вернусь через 6 месяцев...