LINUX.ORG.RU

D


0

0

Привет. Объясните что такое D. Насколько я понял это нормально сделанный C++, который еще сильно нестабилен. Есть сейчас смысл его учить и использовать? Как там обстоят дела с производительностью? Много рантайма тащат за собой программы?


Ну, судя по тому, что Александреску перешел на D, учить и использовать стоит, хотя сам я его толком не ковырял. Самый известный из проектов, которые на нем сейчас пишут, это OpenMW, наверное.

rexadecimal
()
Ответ на: комментарий от lester

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

alex4
() автор топика
Ответ на: комментарий от rexadecimal

я еще не дочитал описание языка, но выглядит интересно. меня больше волнует то что он еще нестабилен. что если со временем он превратится во второй C++ или его вообще забросят?

alex4
() автор топика
Ответ на: комментарий от alex4

> я еще не дочитал описание языка, но выглядит интересно. меня больше волнует то что он еще нестабилен. что если со временем он превратится во второй C++ или его вообще забросят?

пока трудно что сказать - но быстрого роста популярности этого языка ожидать точно не стоит

П.С. я лично продолжаю ждать новый стандарт С++ - 201х, а также его реализацию в gcc, icc, msvc.

lester ★★★★
()

Так а зачем он, собственно? Если бы массово заменили им плюсы, то еще куда ни шло. А так, средненький язычок без нормальных development tools. Есть языки гораздо интересней и развитей, чем subj. Используйте, конечно, если хотите.

a3
()
Ответ на: комментарий от a3

есть какойто язык для империативного программирования с нормальной реализацией, достаточно мощный и не являющийся кровавым месивом?

alex4
() автор топика
Ответ на: комментарий от alex4

похоже D не так хорош как написано у википедиков. 
ad hoc перегрузка процедур и статические конструкторы модулей это хреново.

alex4
() автор топика
Ответ на: комментарий от Nagwal

Java и C# не имеют нормальной реализации. У Java - байт код, а C# вдобавок работает только под виндой. Не знаю как Java, а в C# что то многовато стали всего встраивать.

alex4
() автор топика
Ответ на: комментарий от alex4

Ну джава вполне себе компиляется в нативный бинарник, есть http://gcc.gnu.org/java/ но это имхо редкостное извращение. А вообще с нормальными компилируемыми языками все далеко не так хорошо, как хотелось бы. Только вот нафиг оно нужно сейчас, когда интернет быстрый, и даже в секретарской машинке гиг памяти и пара ядер стоит? Разве что для embedded.

Nagwal ★★★★
()

> Есть сейчас смысл его учить и использовать?

IMHO невыгодно, если только потратить недельку вечеров на туториальные примеры, чтобы быть в курсе.

Из экзотики лучше уж учить Haskell (для обучения как минимум), Objective-C (вместе с MacOSX).

> Насколько я понял это нормально сделанный C++

Это не C++, так что термин "нормальность" тут не к месту; к тому же модель ООП относится скорее к Java, но никак не к C++.

Spectr ★★★
()
Ответ на: комментарий от Spectr

>Из экзотики лучше уж учить Haskell

Хаскел это круто, но я про империативные языки.

>Это не C++, так что термин "нормальность" тут не к месту

Ну прообразом послужил наверное всетаки C++

alex4
() автор топика
Ответ на: комментарий от alex4

>а тормоза и совместимость?

Какие в моно тормоза? Отличие от нативного кода даже не в разы, если писать хоть более-менее грамотно. Ты высоконагруженный сервер что-ли писать собрался, чтобы тебя волновали 20-50% ???

Nagwal ★★★★
()
Ответ на: комментарий от Nagwal

> Ты высоконагруженный сервер что-ли писать собрался, чтобы тебя волновали 20-50% ???

20-50% - огромная цифра, волновать должны даже 1-2%

lester ★★★★
()
Ответ на: комментарий от Nagwal

Ну вообще да, а иначе какой смысл в империативном языке.
В хаскелях то с абстракцией получше.

alex4
() автор топика
Ответ на: комментарий от lester

> 20-50% - огромная цифра, волновать должны даже 1-2%

1-2% - погрешность оптимизации компилятора :)

Есть задачи где 20-50% важны, есть - где без разницы. Если видео обрабатываешь - то 20% уже делает погоду (хотя там уже не 20% будет, да и либу на C/C++ при необходимости можно написать).

И таки да, профайлеры ещё никто не отменял :)

Spectr ★★★
()

приятный язык с туманным будущим и большим разбродом в реализациях. смысл рассмотреть для общего развития есть - уже хотя бы за эйфелевский design by contract и специфические возможности метапрограммирования

производительность хорошая, рантайм (при использовании gc) немаленький - ~400Kb на hello world (во всяком случае ещё недавно было где-то так). если допилят нормальный binding к Qt - будет очень неплохой заменой плюсам в этой области

jtootf ★★★★★
()
Ответ на: комментарий от alex4

>Ну прообразом послужил наверное всетаки C++

не только и не столько на самом деле

jtootf ★★★★★
()
Ответ на: комментарий от jtootf

>если допилят нормальный binding к Qt

А как это возможно, если Qt на C++, а D с C++ не линкуется? Обёртка на C вокруг C++?

Davidov ★★★★
()
Ответ на: комментарий от Spectr

ну вообщем да, конечно небольшая потеря производительности не так важна, и часть кода можно написать на C, но до диез мне не нравится.
чем то он смахивает на дельфи - дохрена человек его юзает, но ни о каких серьезных проектах на нем я не слышал. и стандарта нет, и переносимости и даже обратной совместимости. закроет мелкософт лавочку и будут все эти делфисты учить очередной C#@^$

alex4
() автор топика
Ответ на: комментарий от Begemoth

>OCaml как ни странно

OCaml это интересно

alex4
() автор топика
Ответ на: комментарий от alex4

GObject из glib, GTK для самого языка не нужен.

Люди пишут, что одного из создателей Delphi (по идее, основного архитектора) позвали в MS работать над .NET - как раз он и сделал .NET либы :)

Spectr ★★★
()
Ответ на: комментарий от jtootf

ха ха. я нашел то боянистое интервью со страуструпом. класс

alex4
() автор топика
Ответ на: комментарий от alex4

Scala? Даже некоторое подобие функциональщины имеется.

bose
()
Ответ на: комментарий от alex4

Тут еще не упоминали Common Lisp? Ну, тогда я упомяну.

>И требование таскать за собой рантайм.

Рантайм за собой таскает даже Си. И этот рантайм широко известен в узких кругах под названием "операционная система"(исключения, вроде компиляторов, генерирующих код для микроконтроллеров, в расчет не берем). А у плюсов - куда вы уедете без того же Qt? А оно пожирнее многих рантаймов будет.

И, да - ну вот кого сейчас заботят какие-то там 20-30 лишних мегабайт, когда приложения жрут память и место *сотнями* мб и гигабайтами? Вы что, ембеддед пишите? Сомневаюсь.

guest-3484-2009
()
Ответ на: комментарий от bose

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

alex4
() автор топика
Ответ на: комментарий от guest-3484-2009

>И требование таскать за собой рантайм

это конечно не важно, мне просто не нравится mono

>>Common Lisp

динамическая типизация это не круто

alex4
() автор топика
Ответ на: комментарий от alex4

>динамическая типизация это не круто
Почему? Value typing дает больше, чем отнимает, уверяю.

К тому же, там не чисто динамическая.
Декларации типов, плюс - современные компиляторы умеют частичный вывод типов - ругнутся если увидят ошибку.

Эстеты могут на макросах создать прослойку со статической типизацией.

Ну и вот, макросы - таких ни в одном другом языке нет. Императивщина на высшем уровне(плюшки вроде перезапусков, динамических переменных, динамических "goto", unwind-protect, loop). ОО-система одна из лучших вообще. Функциональщина в умеренных количествах. Можно и другие парадигмы добавлять - макросами, да.

guest-3484-2009
()
Ответ на: комментарий от Begemoth

> OCaml как ни странно. На нём в императивном стиле ни что писать не мешает.

OCaml императивный стиль хоть и допускает, но отнюдь не поощряет. Удобно сочетает оба подхода (функциональный и императивный) к примеру та же Scala. Но та опять таки либо под JVM, либо под Net.

Burbaka ★★
()
Ответ на: комментарий от guest-3484-2009

Это не наезд а констатация факта - то что ты написал прямо указывает на это - кроме lisp ты ничего не видел.

monika
()
Ответ на: комментарий от alex4

>статические конструкторы плохи тем, что они вызываются неявно.

т.к используются для инициализации (иногда с довольно сложным кодом) исключительно до main()


> ad hoc перегрузка это вообще не перегрузка. просто несколько процедур, у которых даже параметры разные. даже, если они отличаются только типами - у нас будет несколько процедур которые похоже вызываются, но на самом деле различны.


Но выполняют схожую работу, тогда, почему бы и нет?.

bose
()
Ответ на: комментарий от guest-3484-2009

>А у плюсов - куда вы уедете без того же Qt?

вот только при необходимости написать Qt-powered приложение рантайм CL не только не заменит Qt, он к нему приложится сам - вместе с прослойкой-binding'ом. и работать оно в результате будет не очень хорошо

>И, да - ну вот кого сейчас заботят какие-то там 20-30 лишних мегабайт

как раз тех, кому и может быть интересен язык D

jtootf ★★★★★
()
Ответ на: комментарий от guest-3484-2009

>Ну и вот, макросы - таких ни в одном другом языке нет

есть мнение что их там не просто так нет :)

jtootf ★★★★★
()
Ответ на: комментарий от jtootf

>вот только при необходимости написать Qt-powered приложение рантайм CL не только не заменит Qt, он к нему приложится сам - вместе с прослойкой-binding'ом. и работать оно в результате будет не очень хорошо
Не писал никогда на CL что-то, связанное с Qt. И не вижу смысла.
Может, укажете мне, неразумному, что ж я пропустил то?
Для гуя есть средства получше.

На всякий случай - при необходимости встроить в приложение на плюсах рантайм лиспа... и далее по тексту.
И, да - с плюсами вообще мало чего хорошо работает.

>как раз тех, кому и может быть интересен язык D

Конкретнее!
Области применения D - ?

>Это не наезд а констатация факта - то что ты написал прямо указывает на это - кроме lisp ты ничего не видел.

О, мудрейшая, а может поведаете, что ж я такого сказал то?

Но, на самом деле, это я факт констатировал; с троллием общаться желания нет.

guest-3484-2009
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.