2008-09-28 8 views
155

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

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

+20

COBOL возвращается, но продолжайте изучать D, если он щекочет вашу фантазию. Чтение чайных листьев имеет такой же шанс, как и все, что предсказывает следующий большой язык. – Shog9 2008-09-28 22:14:04

+4

Меня не интересует, что такое следующий большой язык, я больше обеспокоен тем, что, если я расскажу своему более работодателю, что я хотел использовать D в своем следующем проекте, я бы не воспринимал всерьез, потому что язык не является Еще нет. – 2008-09-29 11:17:10

+1

См. Также http://stackoverflow.com/questions/56315/d-programming-language-in-the-real-world. – 2008-09-30 13:42:21

ответ

124

Что определяет успех и популярность языка программирования для разработки программного обеспечения реального мира, только частично связано с качеством самого языка. Как чистый язык, 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

Вы можете создавать крупномасштабные кросс-платформенные приложения, проблема связана с тем, насколько она должна быть специализированной (и как эзотерическая ваша платформа). – larsivi 2008-09-30 12:21:28

+0

larsivi правильно, если вы не думаете, что можете писать крупномасштабные кросс-платформенные приложения, вы, к сожалению, ошибаетесь. – Rayne 2008-10-30 19:43:31

+7

говорит, что у него «нет поддержки в каких-либо современных IDE» немного завышено. В затмении есть поддержка. Это еще не первый класс, но он там и становится лучше. – BCS 2008-11-04 18:50:31

14

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

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

3

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

21

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

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

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

+9

Теперь к нему еще работает гений - Андрей Александреску. То, что он сделал с D2.0, - это ИМХО, по крайней мере столь же удивительно, как и Уолтер с D1.x. Между двумя из них (не дисконтируя многочисленных других участников) D становится языком, с которым нужно считаться. Посмотрите это пространство – philsquared 2008-10-30 15:20:26

+5

сделайте это 3 (или более) чертовски хороших программистов: Bartosz Milewski – BCS 2008-11-04 18:52:48

7

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

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

60

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

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

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

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

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

103

Просто, чтобы добавить свои собственные переживания в смеси:

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

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

Однако, следующие пункты сделали нашу жизнь более трудной:

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

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

3

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

2

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

Я проверю еще в 6 месяцев ...

3

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

6

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

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

"GNU Debugger добавляет поддержку языка 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.

UPDATE: Я только что обнаружил, что my favorite chapter of Andrei's book, один на параллелизм, доступен для свободного онлайн. Определенно стоит прочитать!

И вот loooong discussion about the relative merits/objectives/approaches of Go and D.

4

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

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

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

9

D язык современный. Ни один язык не идеален, и в этом нет никаких сомнений. Но языки рождаются, чтобы облегчить жизнь. Где D-язык по сравнению с C++ имеет множество хороших функций, с точки зрения сложности. В нем задействована другая специальность сочетания языков, которая помогает кодировщикам быстрее кодироваться, причем функции TOP доступны на других языках. Пожалуйста, смотрите также: for more details about D and other languages

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

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

  • D vs C++, я не уверен, что C++ делает, но D не разрешает присвоение переменной ограничения типа без использования функции «auto», которая хороша для динамического изменения, если требуется, вы можете сделать строгий тип

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

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

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

Смежные вопросы