Является ли D надежной альтернативой Java и C++?[закрыто]

StackOverflow https://stackoverflow.com/questions/146850

  •  02-07-2019
  •  | 
  •  

Вопрос

Это язык Д надежная альтернатива 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++.

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

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

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

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

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

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

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

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

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

  • D против 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 — лучший язык, следовательно, это лучший язык.

Как язык, я всегда чувствовал, что D ближе к C#, чем к C++.Не в возможностях и библиотеках, а в «ощущении».Там намного чище, красивее...весело (чем C++).ИМХО, самое большое препятствие на пути к тому, чтобы стать надежной альтернативой, - это инструменты, IDE и отладчик.Если D преодолеет некоторые препятствия на пути широкого использования/принятия, появится больше инструментов и библиотек.(Сам вернусь к D, если будет годная IDE и отладчик.)

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

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

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

загляну через 6 месяцев...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top