LINUX.ORG.RU

Андрей Александреску, The Case for D

 , ,


0

0

Перевод статьи The Case for D, выполненный сообществом сайта http://dprogramming.ru/d/

Мы, программисты, — странный народ. Достатчно взглянуть на то, как мы выбираем любимые языки и придерживаемся этих предпочтений в дальнейшем. Ожидаемая реакция программиста, заметившего на полке книжного магазинаиздание “Язык программирования XYZ” — “Даю себе ровно 30 секунд, чтобы найти в нём что-нибудь, что мне не понравится”. Изучение языка программирования требует времени и усилий, а результаты появляются не сразу. Попытка избежать этого — проявление инстинкта выживания. Ставки высоки, вложения рискованны, так что лучше уметь принимать быстрое решение “против”.

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

>>> Перевод (pdf)

★★★★★

Проверено: maxcom ()
Ответ на: комментарий от Sun-ch

> Показательный пример - 1С как было изначально в клиенте все заточено под венду, так все и осталось. И про линакс с ней можно забыть.

Под wine оно работает. Можно так же поднять сервер БД на постгрес (вместо M$ SQL). Единственное что — если сервер на постгрес подняли, не забудьте оттюнить его. Впрочем, в Сети есть информация по этому поводу.

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

Скорость C. Удобство пайтона. Привычность идиом для тех, кто хорошо знаком с С++. Объектная совместимость с С и даже немного с С++. Мне в последнее время пришлось писать на С#, и многими вещами я был приятно удивлён, а-ля а в джаве это есть, но через одно место, а тут они реализовали как надо, молодцы. Такое же чувство когда программируешь на D, после С++.

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

> Вас комрят с рук вместо того, чтобы научить добывать еду самому.

в общем-то, это недостаток Д, который его полностью инвалидирует как замену с++

т.е. да, в Д исправлена куча косяков с++, добавлено кое-что полезное, и сам по себе он лучше с++

однако сделано это недостаточно модульно — в частности, наследование *должно* выражаться через шаблоны, и для объяснения ABI нужно не таблички рисовать, а иметь соотв. классы

короче: Д — это слишком малый шаг вперед от с++, чтобы на него перейти

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

>Сборку кучи?

Конструкторы/деструкторы?

Многопоточность?

Ексепшены ввода/вывода?

Классы?

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

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

> Что нового? Чем D круче, хотя бы Оберона, которому сто лет в обед?

Прочитайте таки перевод. Там Александреску чёрным по белому сказал, что ничего нового со времён Лиспа не было.

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

> 1) the whole C++ exception handling thing is fundamentally broken. It's _especially_ broken for kernels.

Тут Линус видимо прав, я офигел, когда реально померил скорость плюсовых исключений. А ведь раньше не верил.

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

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

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

> Прочитайте таки перевод. Там Александреску чёрным по белому сказал, что ничего нового со времён Лиспа не было.

Почитаем. Но это видимо неправда. Появился параметрический полиморфизм вместе с зависимыми типами.

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

> однако сделано это недостаточно модульно — в частности, наследование *должно* выражаться через шаблоны, и для объяснения ABI нужно не таблички рисовать, а иметь соотв. классы

опять же, кто мешает? Вперед! В результате мир вряд ли увидит новый шедевр, но зато в процессе можно в теме глубже разобраться, то есть все не зря.

короче: Д — это слишком малый шаг вперед от с++, чтобы на него перейти

Почему-то вспоминается поговорка про собаку и караван.

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

не, это только серверная часть, а весь интерес в клиенте. Без него все будут вынужденно ставить венду, а если у всех винда, то придется ставить виндовый сервер с АД, и линакс вообще нахрен не сдался, только нищету в зоопарке плодить.

Sun-ch
()
Ответ на: комментарий от Sun-ch

> Java -> Common Lisp -> Haskell

хаскель — отстой. он недостаточно абстрактен, и системы эффектов лучше, чем его костыли в виде монад IO или State

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

ничего нового со времён Лиспа не было.


Ну и зачем тогда он нужен? Как замена С++? Ну так то что С++ угробище было понятно еще тогда когда он появился.

vada ★★★★★
()
Ответ на: комментарий от Sun-ch

Ну, не совсем так:

(На самом деле большинство языков обязаны своим стилем Lisp’у, просто некоторые не хотят этого признавать.)

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

> хаскель — отстой. он недостаточно абстрактен, и системы эффектов лучше, чем его костыли в виде монад IO или State

тролль, такой тролль

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

Монады? И логическое программирование.


Во, сейчас сюда подтянутся фанаты Haskell и будет совсем весело!


Пролог забыли! Пролог наше фсе!!!!

vada ★★★★★
()

сколько уже на D чего написано? А то и поклонников вагон, и половина ждёт пока допилят, а кто на нём пишет? Где-то проскакивало на ЛОРе, что, мол, отцы русской демо^W^W программирования пишут в своих конторах куски кода на нём.

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

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

Проблемы возникают, когда язык программирования не позволяет сказать «всегда протирай стол, за которым я работал, после окончания моей работы», и требует каждый раз говорить «протри сейчас вот этот стол».

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

По отдельности они не работают.


JAVA, C# Тоже самое по своей сути.

ЗЫ. А вот меня интересует вот что. В Ди есть низкоуровневая работа с указателями. Интересно, а как они будут кучу при этом всем собирать? Не напорятся на программера?

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

>>> Монады? И логическое программирование.

>> Во, сейчас сюда подтянутся фанаты Haskell и будет совсем весело!


> Пролог забыли! Пролог наше фсе!!!!


Программируемое программирование - единственное Ъ программирование, а хороших языков нет, кроме Lisp и Tcl.

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

Уже началось! :) Срачь про Си заплющенный будет отдыхать.

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

Ну вот, вам смешно, а кому-то лабы приходилось на этом чуде сдавать...


Всем приходилось. А что! Чем пролог плох? Борьбой с бесконечной рекурсией? :)

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

> а хороших языков нет, кроме Lisp и Tcl.

Я б даже сильнее сказал: «хороших языков нет». Надо же на мажорной ноте закончить мысль!

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

> ЗЫ. А вот меня интересует вот что. В Ди есть низкоуровневая работа с указателями. Интересно, а как они будут кучу при этом всем собирать? Не напорятся на программера?

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

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

> Надо же на мажорной ноте закончить мысль!

Ну тогда... Кроме Lisp и Tcl, *хороших языков нет*!

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

Ээээээ... ребяты! Вы со СНОБОЛом не знакомы! Вот где изврата можно дыло налепить!
Например, там можно во время работы программы нагенерить кода, который запустить выполняться. Тот, в сою очередь, будет генерить другой код.... «У попа была собака...» ВЕЩЬ!!!!!!!!!!

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

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


Вот я и говорю! Программер!!!!! Вобщем, сборщик никогда не заработает, если программеру дать глумиться над указателями. :)

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

> Я б даже сильнее сказал: «хороших языков нет».

хороших языков общего назначения нет. // FIXED

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

Не, я хотел сказать, что со времен лиспа (лямбда исчисление) 50 г., появились языки основанные на других формализмах ( теоркат, исчисление предикатов).

Sun-ch
()
Ответ на: комментарий от www_linux_org_ru

Кстати да, про CTFE забылось совсем. Сейчас, если это возможно, функция будет запускаться на этапе компиляции.

В природе есть такие монструозные вещи как compile-time трассировщик лучей и компилятор регулярных выражений

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

А что там у D c производительностью?


До производительности пока не дошло. Библиотеки пишем... :)

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

>Проблемы возникают, когда язык программирования не позволяет сказать «всегда протирай стол, за которым я работал, после окончания моей работы»

Нормальные столы протираются сразу после работы сами, об этом даже говорить не должно быть нужно.

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

Нормальные столы протираются сразу после работы сами, об этом даже говорить не должно быть нужно.

+1

AVATAR
()

че только не делают, только что бы лисп не учить. не нужно.

CL-USER
()
Ответ на: комментарий от x4DA

> А что там у D c производительностью?

http://shootout.alioth.debian.org/debian/benchmark.php?test=all&lang=gdc&...

Устарели. Новый компилер, ldc, рулит с быстродействием. Но это всё, что у нас есть, т.к. админ shootout отказывается включить D в свои бенчмарки. Особенно странно это решение выглядит на фоне включения Go, который был анонсирован пару дней назад и на котором никто не пишет. Ох уж это волшебное слово "Google".

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

>Новый компилер, ldc, рулит с быстродействием.

Ну и с быстродействием и заканчивает рулить... Плюшек D2.0 - с гулькин нос. Кросс... нет никакого "кросс" - офтопиком там и не пахнет

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

>Официальный компилятор D для всех популярных платформ (Windows, Linux и Mac) бесплатно доступен на digitalmars.com.

Особо стоит отметить порт на .NET

Более новая разработка — обвязка для использования необычайно популярной библиотеки от Qt Software для использования в D.

есть и офтоп и кроссплатформенность, видимо

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

> Проблемы возникают, когда язык программирования не позволяет сказать «всегда протирай стол, за которым я работал, после окончания моей работы»

К сожалёнию вы проигноривали проблему множественности, взаимозаменяемости, и дискретности 'столов'. Языки с gc вместо своевременной чистки моего стола просто предлагают мне в любой момент другой такой-же стол.

и требует каждый раз говорить «протри сейчас вот этот стол».

неправда, он позволяет сказать 'я закончил работать, можно его протирать'. А в иначе gc поварёнок тратит вычислительный ресурс на то чтобы сообразить закончил ли я свою работу, нужны ли мне те остатки на столе, при этом язык оптимизируется таким образом, чтобы не мне было удобно сконцентрироваться на оформлении пирожного а поварёнку было удобно убирать со стола ;)

Впрочем к D всё это не относится т.к. в нём поддерживаются обе концепции исходя из описания в статье.

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

>есть и офтоп и кроссплатформенность, видимо

я конкретно про ldc

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

> Тут Линус видимо прав, я офигел, когда реально померил скорость плюсовых исключений. А ведь раньше не верил.

да что там может быть со скоростью - он ведь просто стек разворачивает.

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