LINUX.ORG.RU

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

 , ,


0

0

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

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

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

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

★★★★★

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

>>> Какая задумка - параметризованные типы?

Ну да - вся затея не работает.

«Я знал, что ты это скажешь»

С другой строны вся Loki:: это параметризованные типы - на каждый примитив там есть центральный класс который аггрегирует несколько ортогональных стратегий заданных шаблонными параметрами. Почему это зло, а DynArray<T> - это добро мне непонятно.

(с) Спорить не буду, ибо бесполезно.

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

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

hawai

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

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

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

Когда сложные вещи пытаются делать с помощью «концептуально примитивных и при этом бесконечно гибких» механизмов, получается Си++.

Ну не понимаю и все. Не может быть никаких приемуществ.

Вот поэтому с тобой и бесполезно спорить.

tailgunner ★★★★★
()

Мы, программисты, — странный народ.

Александреску конечно же не плохой человек
но не программист
а теоретик+писатель книг
да книги он пишет не плохие

ведь многие писатели фантасты и те кто пишет детективы и прочее
никогда не испытывали/познавали/использовали то о чем пишут

поэтому сдесь мнение Александреску о возможной пользе D и его приемуществах абсолютно не интересно

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

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

Когда сложные вещи пытаются делать с помощью «концептуально примитивных и при этом бесконечно гибких» механизмов, получается Си++.

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

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

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


вот это типичная ситуация безграммотного использования С++
увы таких примеров полно в большинстве ОпенСоурс проектах
и это печально что такие горе программисты портят репутацию С++ языка
типычный пример Boost
чуть меньше но туда же STL

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

> [hashmap] Он есть в СТЛе, который идёт «в комплекте» с VC++, gcc, mingw.

Матчасть: В VC++ свой stl, в mingw компилятор естественно gcc и stl тоже от gcc. Вообще, дайте код вашего теста :)

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

> Проблема в том, что кому-то эта акробатика понравится, и тут 2 выхода - либо связать ему руки, либо тоже пользоваться ей.

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

Вообще хочется рассмотреть случаи:

1. Тимлид внутри команды может решить волюнтаристски — проблем нет.

2. Библиотека с акробатикой внутри:

2.1. акробатика — проблема автора — проблем нет.

2.2. ты хочешь иметь возможность понять и фиксануть, но не акробат, ну так выучись; а еще обычно к акробатике просто так не прибегают, есть причины

3. Библиотека заставляет тебя применять акробатику при использовании... такое бывает?

_____________________________

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

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

> Когда сложные вещи пытаются делать с помощью «концептуально примитивных и при этом бесконечно гибких» механизмов, получается Си++.

Метапрограммирование на шаблонах (а о нем видимо идет речь) не попадает в эту категорию «концептуально примитивных и при этом бесконечно гибких».

Шаблоны — это скорее семантически минимальный довесок (к другому довеску), полный по тьюрингу во время компиляции.

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

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

>>Когда сложные вещи пытаются делать с помощью «концептуально примитивных и при этом бесконечно гибких» механизмов, получается Си++.

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

Когда ты поймешь, что я сказал то же самое, ты начнешь выздоравливать.

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

ну так это вопрос не ко мне я же не ректор этих консерваторий

а саму проблему когда то озвучили на opennet то что в программисты идут люди безграммотные и не прибитые к этому

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

ведь если на получение прав на вождения авто нужно сдать хоть какойто экзамен
то для программирования никакого экзамена никто не сдает - и это плохо(

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

>> Когда сложные вещи пытаются делать с помощью «концептуально примитивных и при этом бесконечно гибких» механизмов, получается Си++.

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

Absurd, что бы по пусту не чирикать - давайте примеры в студию!!!

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

> Absurd, что бы по пусту не чирикать - давайте примеры в студию!!!

можно я? простейшие: подсчитать факториал целой константы во время компиляции или выяснить, есть ли у данного класса член с данным именем

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

От ить какая дилемма...

Вроде как язык классный, но применять его почти никто не умеет :) Был похожий язык - PL/1

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

ну почему же
некоторые все же умеют и пишут

из большинства того что мне попадалось в google процентное соотношение хорошего кода где то 30%-35%

остальное напоминает
http://www.insidecpp.ru/art/1/

Американцы пишут в инструкциях к микроволновым печам «В печи нельзя

сушить кошку». Я бы предложил на всех книгах по C++ писать «В C++

нельзя программировать на C». Большинство программистов, считающих

себя «программистами на C++», к сожалению, постоянно сушат кошек в

микроволновке

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

>из большинства того что мне попадалось в google процентное соотношение хорошего кода где то 30%-35%

Везёт, блин. Мне и 5% хорошего года не попадается :)

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

В C++ >нельзя программировать на C

Вот сртсрструпу предложить бы выбросить из грядущего стандарта С++ подмножество С - чтобы наверняка! )

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

вы еще не видели проектов (больших) на языке С

которые хотят переписать на C++ но что бы красиво перейти с С
используют #define для _ВСЕХ_ операторов и типов C++ что бы это все компилиилось на С
а потом они будут пробовать менять #define на истенные операторы и типы С++ что бы пробовать это скомпилировать уже компиллером С++

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

на мой вопрос - «а почему вы сразу не перепишите все на С++»
на меня посмотрели буд-то я предложил всем им голышом побегать по улицам города

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

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

это да. мой преподаватель, к сожалению, далеко не джедай.

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

какие минусы у stl. не ради флейма, а для собственного развития.

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

> в деле разбора багрепортов от ошеломленных пользюков.

Термин понравился.

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

> и покажешь свой первый великий проект на этом могучем D языке

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

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

>Для начинающих очень важно видеть результаты в виде работающих программ. В явке это достигается за счет большого числа библиотек.

Поинтерисуйся, сколько библиотек есть для фортрана. или для кобола. да и для лиспа. джавка отдыхает:)

И хороших библиотек, которые охватывают практически весь спектр прикладных задач.

Посмотри сколько «библиотек» для перла.

А именно ХОРОШИХ для джавки - не так уж много:)

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

> Для начинающих очень важно видеть результаты в виде работающих программ.

Тогда первым языком должен быть Лого.

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

>Везёт, блин. Мне и 5% хорошего года не попадается :)

А ты попробуй не только свой код смотреть:)

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

критерии великого проекта. чисто поржать. мне вообще делать

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

вообще ничего не доказываю. сообщаю интересующимся.


ты не программер
С++ значит не знаешь
веришь на слово токо всяким дядькам
так зачем тогда в эту ветку зашел? чисто поддержать Александреску?

а ты никогда не задумывался что люди по типу Александреску которые в своей жизни токо книги писали и учили других как что делать
теперь думаю куда девать все эти знания
и хотят куда то их выплеснуть
вот Александреску и голосует ЗА - D

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

повторюсь еще раз
язык D - мне видиться как смесь C++ и C#/java
зачем такое извращение?

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

>язык D - мне видиться как смесь C++ и C#/java зачем такое извращение?

вы таки Ъ? в статье тов. Aлександреску так и говорит:

Ничто не обязано быть объектом,

функцией, списком, хеш-таблицей, или Зубной Феей. Всё зависит от того, что вы с ним делаете.

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

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

У меня Слака, я подправил (например, добавил const, == в фильтры C/c++) и собрал фильтры на icon и перевёл noweb.sty на русский язык.

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

>> Absurd, что бы по пусту не чирикать - давайте примеры в студию!!!

можно я? простейшие: подсчитать факториал целой константы во время компиляции или выяснить, есть ли у данного класса член с данным именем

Можно, но убеди для начала в полезности данных фич (да и не заявлялись они в возможностях языка). Каков профит от них? Если васек вставил в код вычиление чего-то от константы каждые две минуты, то причем здесь компилятор? Второе сильно зависит от конкрентной реализации, а полезность приведенного примера тоже весьма сомнительна. В этих случаях проще код ДНК кодера сменить. )))

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

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

И? Что ж в этом такого плохого? На этом практически вся наука построена, не знали? :SURPRISE:

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

Александреску [убрано цензурой] теоретик

Простите, но не согласен. Всё что сделал ув. г-н А. так это применил стиль программирования stl к объектам реального мира и паттернам проектирования. Посмотрите сами на исходный код stl - все приёмы которые описывает А. уже там применялись. Что было сделано - так это расширена область применения данных примеров на объекты которые программисты используют в повседневной работе ну и показана миру мощь шаблонов на понятных примерах.

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

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

выяснить, есть ли у данного класса член с данным именем

use key_sequence_for_finding_substring (f.ex. C-F) in your favorite editor, Luke... truly yours, Capt.

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

мораль такова:

1) всё таки за дело его уволили

2) юзать редактор кода с переносом строк - это есть добро

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

и покажешь свой первый великий проект на этом могучем D языке

критерии великого проекта. чисто поржать.

да ты любой покажи, чисто поржать :)

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

сливоотмаз засчитан наполовину, в части слива

но сам по себе александреску не тупее многих.

оба-на! а я то думаю, в чём секрет? пойду с мужиками поделюсь

и хаять то, что он делает просто потому что есть неуклюжий С++ - это моветон.

но и обратное (радоваться тому что он делает новый язык потому что есть С++ сложный (!) для освоения) не меньший, а может ещё больший, моветон

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

Посмотри сколько «библиотек» для перла [...] именно ХОРОШИХ

когда будешь смотреть, не забудь посмотреть сколько из них БЫСТРЫЕ

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

Тогда первым языком должен быть Лого.

и первым педагогом: логопед

shty ★★★★★
()

Интересная статья. Похоже, что в D2 учитывался опыт функциональных языков. А лямбда там есть? Может быть, и монады есть? Последнее - такая мегавещь. Например, в мультипарадигменном F# есть и то, и другое.

dave ★★★★★
()

(тред не читал)

доколе еще будут процветать авторы, с ослиным упорством не замечающие прекрасный и мощный язык PHP? этот даже javascript и perl упомянул, хотя уж что может быть примитивнее и косячнее

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