LINUX.ORG.RU

Создатель Python разочарован в Scala

 , ,


2

0

Гвидо ван Россум, создатель Python, в своем блоге делится впечатлениями от изучения языка Scala: "К сожалению, я полностью разочарован в этом языке". Причиной является слишком сложная система типов Scala: "Если такая система необходима для корректной обработки разных типов данных во время компиляции, я однозначно предпочту динамическую типизацию".

>>> пост

anonymous

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

> Человеку который пишет на DSL не нужен дебаггер - если дошло до этого - это очень фиговый DSL.

Это не так. DSLи бывают и такими, что на них можно выражать сложную логику. А выражая сложную логику бледнотики часто ошибаются, и им нужен (необходим!) дебаггер для поиска своей ошибки. Это в природе бледнотиков, а ведь всё, что мы делаем, делается в первую очередь для них.

> но из этого не проистекает что написание DSL связано с написанием дебаггера

При правильном подходе никакого дебаггера писать не надо - он достаётся на халяву от используемого фреймворка.

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

дебаггер вообще редко когда нужен. Вот в "Why Programs Fai?l" пишут как находить failure-inducing inputs и failure-inducing changes . Без всякого дебаггера.
Просто если он есть, и есть "Language Workbench", найти причину проще.

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

> Человеку который пишет на DSL не нужен дебаггер - если дошло до этого - это очень фиговый DSL.

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

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

> раз нет дебаггера - значит DSL гавно.

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

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

>>возможности рефакторинга Лиспа _в рантайме_

>говорит о том, что Вы совершенно не представляете себе, что такое "рефакторинг".

интересно, почему это. Вот в смоллтоке, откуда "рефакторинг" и произошел, он и делался из code browser-а как раз в рантайме, на живом запущенном приложении(образе). Почему в запущенном лисп образе так нельзя сделать?

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

>Где компиляторы распространённых языков, написанные на Лисп?

MBase, Clojure и т.п.

>Где реализации виртуальных машин класса JVM?


а их тоже надо написать на лиспе? или можно взять другую готовую VM из LLVM, HLVM, Neko? или из JVM/.NET через reflection?

> Где СУБД, написанные на Лисп? Сервера приложений? Системы документооборота?


они есть. Про "сервера приложений" -- вот на одном плакатике Symbolics то ли Genera рекламировалась новая инновационная технология дешёвых нитей через передачу continuations.
А что до "систем документооборота" -- так это в совокупности с задачей планирования/составления сетевого графика классическая задача для Пролога, который можно сделать на том же лиспе. Например, простая учебная задача составления расписаний на прологе занимала что-то около 70 строк (см. сборник конференции в Переяславль-Залесском, статья Непейводы). Пример реализации на Java -- см. в той же JIRA (сравни по объёму исходников).
Странно, что ещё кто-то не написал этого на лиспе, давно пора было бы. А то вот RUNA/WFE, BPEL и т.п. на жабе есть, а сферических документооборотов на лиспе в вакууме нет, странно.

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

>А выражая сложную логику бледнотики часто ошибаются, и им нужен (необходим!) дебаггер для поиска своей ошибки

Как то с трудом я себе представляю тех кому нужен DSL - в дебаггере. Ровно с таким же трудом как и в дизассемблере. Собственно для этого и делается.

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

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

То есть DSL без дебаггеров не бывает - так. *посыпает голову пеплом* как же это они живут без дебаггера? Вот та простенька строчка что я приводил из DSL имеет биндинги в XSL(посредством document()), в жабу: возраты - списки org.w3c.Document, в жабаскрипт - списки нормальных жабоскриптовских объектов (посредством реализации hostObject, и в Velocity (похожим на жабаскрипт образом). XSL там такие сложные - что не все такие видели. Не помню вообще чтобы кто-либо включая меня при написании или при скриптовании посредством жабаскрипта или велосити испытывал необходимость в дебаггере. ЧЯДНТ? Есть и другие DSL - один например чем-то похож на смолтолк с поддержкой локализованных строк для написания инсталляционных скриптов - императивный. Ни разу необходимость в дебаггере не возникла.

Слова анонимного брата звучат о каких-то сферических DSLах в вакууме неимоверной сложности. Я говорю об опыте. И в обычных то языках шаговый дебаггер вещь редкая - а в DSL...

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

>Я этого не говорил.


Я и не говорил что ты говорил:) ТАм сверху анонимный брат утвержал что для написания DSL необходимо "рантайм, дебаггер, профайлер, компилятор...."..

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

> То есть DSL без дебаггеров не бывает - так. *посыпает голову пеплом* как же это они живут без дебаггера?

Никто не утверждал, что "не бывает".

> Я говорю об опыте.

И он явно разный.

> И в обычных то языках шаговый дебаггер вещь редкая

Ы. Для каких распространенных языков _нет_ пошагового отладчика?

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

Как приятно поставить точку останова в unit-тест и посмотреть? что же в нем не так %)

> ТАм сверху анонимный брат утвержал что для написания DSL необходимо "рантайм, дебаггер, профайлер, компилятор...."..

Блин, да здесь анонимных братьев целое братство, и у всех разные позиции O_o

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

>Ы. Для каких распространенных языков _нет_ пошагового отладчика?

Есть. Ты когда пошагово питон последний раз отлаживал? Я про то что это не такая уж необходимая вещь - особенно для высокоуровневых специализированных языков, тем более DSL. И отсутствие возможности чего-то там отдебагить - єто не всегда минус - если такая возможность не нужна.

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

> Ты когда пошагово питон последний раз отлаживал?

Вчера :)

> Я про то что это не такая уж необходимая вещь

Я согласен только с тем, что без него можно обойтись.

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

> правильный вопрос: когда ты SQL по-шагово отлаживал?

Ненене, это неправильный вопрос :) Я вообще с SQL дело редко имею (и только с sqlite последние годы). Правильный вопрос: когда я последний раз отлаживал пошаговым дебаггером Си? Ответ: кажется, года полтора назад, точно не помню.

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

> интересно, почему это. Вот в смоллтоке, откуда "рефакторинг" и произошел, он и делался из code browser-а как раз в рантайме, на живом запущенном приложении(образе). Почему в запущенном лисп образе так нельзя сделать?

Да можно. С некоторыми оговорками, типа "поменял инлайновую функцию - перекомпиль всё, что её использует". Собственно говоря, разработка на лиспе, обычно проходящая в repl'е, - это и есть рефакторинг :)

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

Кстати, был такой проект, назывался lispdebug. И у меня он даже запускался. Пошаговый дебаггер для лиспа (переносимый) с мордой на Tk (не понял, почему не в емаксе, как перловый дебаггер, но ладно). Не знаю, есть ли он ещё в сети, но у меня сохранился :)

Много интересного позволял. Показывать расширения макросов рядом с их исходным кодом и даже шагать в программе назад по времени. Также позволял определять методы отладки для своих DSL. Не знаю, почему не стал дальше развиваться. ХОтя я слышал про какую-то основанную на JVM среду разработки для лиспа, в которую его вроде бы встроили, но, по слухам, это оказалась кикимора. Впрочем, нужно проверять. А, вот, называлась оно JabberWocky.

В lispworks есть пошаговый дебаггер, хотя он не везде может ставить брекпойнты.

В общем, я должен сказать, что, в отличие от того же С, функции обычно перекомпилируются очень быстро (и без перезапуска приложения), поэтому дебажиться принтами очень легко.

Тем не менее, я не буду говорить, что я настолько Ъ, что мне всегда удобно без пошаговой отладки. И я не стану отрицать, что макропроцессор делает задачу отладки довольно сложной.

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

Камрад tailgunner, Вы ещё здесь? Это анонимус, заваривший кашу с бенчмаркингом C vs. LISP. Обращаюсь к Вам как к одному из наиболее активно поддерживающих мою точку зрения (плюс могучая кучка анонимусов).

Я бы хотел опубликовать результаты бенчмаркинга (табличные данные и графики). Но все три топика (собственно этот и два "Знатокам лиспа" в толксах), что называется, "ушли в бамплимит", и к ним нет притока читателей. А я полагаю, что народ должен знать своих героев :) Не могли бы Вы (или кто-нибудь ещё из читающих эту тему зарегистрированных пользователей) завести новый топик по теме в Толксах? Заголовок оставляю на Ваше усмотрение, но приветствуются заголовки яркие и броские :) скажу по секрету, Лисп проиграл с разгромным счётом.

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

Наиболее обсуждаемые темы этого месяца

* Создатель Python разочарован в Scala (стр. 14) (666)

Сотона пришла на эту землю))) ЗЫ Gorthauer (лень логиницо)

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

> скажу по секрету, Лисп проиграл с разгромным счётом.

А неожиданные результаты в бенчмарке есть? :-)

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

А Си++ разгромно проиграл Фортрану. Бежим теперь радостно переписывать Мозилку и ОО.орг на Фортран 77.

Короче, чувак, ты кретин. Редкостный.

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

>А Си++ разгромно проиграл Фортрану. Бежим теперь радостно переписывать Мозилку и ОО.орг на Фортран 77.

"Си++ проиграл Фортрану в одной области" => "Си++ проигрывает Фортрану везде"? Такое построение мог вывести только человек недалёкий или тролль, каковыми Вы определённо являетесь (одновременно). Не надо выдумывать и наделять сишников тем, что им не свойственно. Бойцы из лагеря Си никому ничего не навязывают, как Вы могли убедиться. Зато вот это...

>Бежим теперь радостно переписывать Мозилку и ОО.орг на Фортран 77.


...более свойственно лагерю Лиспа - это они грозились всё на Лиспе переписать, но не справились даже с простой задачкой. Заметьте, речь вовсе не идёт о том, чтобы доказать глобальное превосходство какого-то языка; это было бы нелепо. Речь идёт о том, чтобы развеять миф вокруг Лиспа как вокруг некого всемогущего мегаязыка. Это в своём роде такая урбанистическая легенда, вроде волос на ладонях, вырастающих от онанизма.

>Короче, чувак, ты кретин. Редкостный.


В некотором роде мне даже льстит, что мои изыскания заставляют вас захлёбываться слюной в бессильной злобе. Ведь с цифрами не поспоришь.

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

>Речь идёт о том, чтобы развеять миф вокруг Лиспа как вокруг некого всемогущего мегаязыка.

Я так понял статистика по памяти это нейкий универсальный тест для сравнения языков - да?

Поразительно.

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

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

Ну вот, ламерок, цифры ты уже освоил. Теперь постепенно попытайся понять что такое числа (это то, что из циферок складывается).

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

>Сейчас создам "Знатокам Лиспа (3): the final showdown"

Лучше книжку напишы: "Быдлокодерство как мировоззрение, или Пайтон наше фсё!":)

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

> книжку напишы: "Быдлокодерство как мировоззрение, или Пайтон наше фсё!":)

Не "мировоззрение", а "мировоззрение, призвание и стиль жизни". Но ты не сможешь ее прочитать :/ Если бы ты умел читать, ты бы прочитал, что я ненавижу все динамические языки скопом, в том числе - и Питон ;)

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

> Если бы ты умел читать, ты бы прочитал, что я ненавижу все динамические языки скопом, в том числе - и Питон ;)

Тогда прошу прощения, я думал ты питонофил:)

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

Оно - питонофаг. Или фоб. Или, скорее, всё вместе :)

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

> "Си++ проиграл Фортрану в одной области" => "Си++ проигрывает Фортрану везде"?

Не это ли ты делаешь с Лиспом, ничтожество?

> ...более свойственно лагерю Лиспа - это они грозились всё на Лиспе переписать, но не справились даже с простой задачкой.

В дыру в твоём черепе кто-то насрал. И этим говном ты теперь думаешь.

Тупица, никому в голову бы не пришло переписывать на Лиспе всё. У Лиспа узкая специализация - реализация DSL/eDSL.

> Ведь с цифрами не поспоришь.

Раздражают не цифры (абсолютно лишенные смысла), а наглость такой ничтожной шпаны, как ты. Ты ведь не человек, а так, отморозь, но при этом имеешь наглость разевать пасть и гнать. Таких всегда презирают.

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

> Много интересного позволял. Показывать расширения макросов рядом с их исходным кодом

это как (первое, про macroexpand-1 рядом с их исходным кодом)?
SLIME всё равно его скорее всего зарулит.

> и даже шагать в программе назад по времени.


вообще не хватает новых подходов в отладке -- визуализации, наглядного представления где что происходит. Чего-то вроде "Programming by example","debugging by example", того видео с прототипом, где рассказывается про то, что вместо поиска трассы ветки и условий вручную нужно просто нарисовать таблицу с разложением по функциям вроде ДНФ, КНФ (по горизонтали), нарисовать строки программы по вертикали, а дальше пусть по заданным строкам условия сам отладчик определяет. Если условия не существенны, колонку можно скрыть, как в экселе, при этом скрываются строки, которые участвуют в условии. Вот они, аспекты.

И на лисповые s-выражения эти schematic tables замечательно ложатся.

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

> вообще не хватает новых подходов в отладке -- визуализации, наглядного представления где что происходит.

Это как в Dr.Scheme?

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

> А теперь возьмем DSL, который определяет каким образом будет создавататься объекты бизнес-логики, например "ВЫБРАТЬ ПЛАТЕЖКИ СОКРАЩЕННОГО ФОРМАТА ЗА XX.XX.XXXX ОТ ФИРМЫ "РОГА И КОПЫТА"". Вот это уже "твой" DSL, он решает ТВОИ проблемы, потому что только ты знаешь что такое "платежки" и "сокращенного формата".

А это расширяемый язык или не? Потому что если не, то от навороченного SELECT 'а с обвязкой (вроде того, что тут r приводил) оно отличается только синтаксисом, не семантикой. Ещё один "интеграционный язык", просто в другом синтаксисе (я считаю языки с одной семантикой с разными алфавитами разными синтаксисами одного метаязыка). То есть, если тебе не придётся для ввода новых документов, а не только ПЛАТЕЖКИ, и новых справочников, а не только ФИРМЫ переписывать ядро языка -- в языке заложены сущности, которые подразумевают расширение.

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

>Тогда прошу прощения, я думал ты питонофил:)

Он йожик. Питонофоб на игле:)

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

SQL пошагово отлаживают разработчики СУБД. Я надеюсь. Точно также разработчики DSL должны вылизывать свои DSL, а потом уже отдавать их пользователям

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

>SQL пошагово обобрать любой юзер может - DESCRIBE <query> в постгресе, например

Еблан тупой - ты написал аналог cc -S -o analyse_it.as asholenanimouse.c может расскажешь как ты тут "шагаешь"?

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

>> Человеку который пишет на DSL не нужен дебаггер - если дошло до этого - это очень фиговый DSL.

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

Совершенно не похоже.

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

2. Вот допустим у тебя большая программа на DSL. Дает неверный результат.

Разумный подход: попытаться угадать, в каких местах она еще дает неправильный результат, и проверить догадку.

Если все функции чистые, то для проверки REPL подойдет.

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

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

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

Да.

Но достаточно много багов проявляется при тестировании именно *вне* изолированного окружения. Что прикажешь делать с ними?

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

> правильный вопрос: когда ты SQL по-шагово отлаживал?

Объясните, почему тогда в базах данных реализуют команду EXPLAIN? Не для того ли, чтобы отладить свою базу данных -- например, добавить еще один индекс?

Прекрасный пример необходимости отладчика для DSL!!! (да, оно конечно и без этого дает правильный результат, но с ним возможно ускорится в десятки раз)

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

>Но достаточно много багов проявляется при тестировании именно *вне* изолированного окружения. Что прикажешь делать с ними?

Я не говорю что совсем никогда не нужен - я о том что заявления о том раз DSL то без отладчика никуда несколько....преувеличены. И отсутсвие отладчика не есть фатальным фактором для DSL.

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

>Объясните, почему тогда в базах данных реализуют команду EXPLAIN?

Я бы сказал что explain больше поход на функцию REPL чем отладчик - даже скорее функция компилятора.

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

>А это расширяемый язык или не?

Так это и есть навороченный select с обвязкой. Только обвязка реализована не через тонну стремного кода, по сути дела embedded DSL на языке, который для такого не предназначен, а через простой, быстрый и понятный (тем, кто в теме конечно) парсер.

Расширяемость - вопрос интересный. С теоретической точки зрения - да. Язык не расширяемый. А с практической? Так сложно добавить еще одно ключевое слово и соответствующий action при разборе синтаксического дерева? Кроме того, достаточно большое количество кода при таком подходе будет использовано повторно.

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

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

Согласен, я мудак, херню спорол.

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

> правильный вопрос: когда ты SQL по-шагово отлаживал?
>Объясните, почему тогда в базах данных реализуют команду EXPLAIN?

>Не для того ли, чтобы отладить свою базу данных -- например,

>добавить еще один индекс?


1) Если твой селект возвращает не то что ты ожидал - это тебе не поможет.

>Прекрасный пример необходимости отладчика для DSL!!!


2) Это Ъуёвый пример, жто пример скорее профайлера чем отладчика. Впрочем догадываюсь что разница м\у ними тебе не ведома.

>(да, оно конечно и без этого дает правильный результат,


3) А если нет - тебе нужен отладчик. И эксплэйн тут бесполезен!

>но с ним возможно ускорится в десятки раз)


4) Кого Ъбут скорости впада в корку?! Профилируют _только_ _уже_ _корректно_ _работающее_ !!!

>www_linux_org_ru


Глядя на 1, 2, 3 и 4 - остаётся сказать изыди на юхЪ уже :(

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

> жто пример скорее профайлера чем отладчика.

Да.

> А если нет - тебе нужен отладчик. И эксплэйн тут бесполезен!

Нет.

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

>давайте нормальную статейку прочитаем?

Давайте.

А ещё давайте прочитаем ту же статейку в оригинале, с авторским добавлением от 2003 года:

"In January 2003, Yahoo released a new version of the editor written in C++ and Perl."

А теперь сухая выжимка для Ъ. В далёком 1995 году Пол Грэм со своим подельником налабали хостинг для веб-магазинов, где клиент мог настраивать и кастомизировать веб-магазин под себя. Собственно редактор-кастомайзер был выполнен как веб-приложение на LISP, тогда это было новаторством, о чём Пол с упоением пишет.
В 2001 году шарашка была куплена Yahoo. Яхушкики заглянули в код, представлявший собой месиво из овсянки и обрезков ногтей, прихренели, сказали "мать их ёб!", и уже в 2003 году тот единственный лисповый модуль системы был переписан на более-менее человеческих языках (С++ и Perl).

Where is your God now?

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

Забыл ссылку на оригинал статьи: http://www.paulgraham.com/avg.html

Та же судьба была и у PostgreSQL. Изначально склёпанная на LISP версия была переписана на С, и это как раз тот PostgreSQL, который мы знаем сейчас и который получил распространение.

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

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

> Яхушкики заглянули в код, представлявший собой _месиво из овсянки и обрезков ногтей_, прихренели, сказали "мать их ёб!", и уже в 2003 году тот единственный лисповый модуль системы был переписан на более-менее _человеческих языках_ (_С++_ и _Perl_).

Это через чур толсто и несмешно.

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