LINUX.ORG.RU
ФорумTalks

Серьезная разработка на лисп


1

2

Возьмем, скажем, обычного программиста на C++/java и лавсана. Скажем, некий заказчик хочет сделать прожект и для этого ищет разработчика. Обычный программист не может предложить ничего нового и инновационного, и тут вбегает лавсан и кричит: «Могу сделать на новейшем языке Common© Lisp© за сжатые сроки, с макросами и DSLями под конкретную задачу». Мы все знаем, как лавсан любит аббревиатуру DSL. Для каждой задачи он сразу кинется разрабатывать свой DSL со своим синтаксисом и даже без скобок. Прожект сдан, все довольны.

Но тут случается, что в прожект закралась ошибка или его нужно улучшить/дополнить. Открывают сырцы, а там лавсанин деэсэль. Никто не может понять, что за тарабарщина из макросов там поналеплена. Тем более, что и названия для своих DSL лавсан выбирает соответствующие. Например, hui - от средневерхнедревнекитайского «короткий». В итоге, вместо того, чтобы штатный программист поправил пару строк, как в случае написания прожекта c++/java кодером, зовут опять лавсана, который входит под фанфары весь в белом и молча всё исправляет.

В итоге лавсан становится богат и пишет саксесс стори на ЛОРе, а бедный заказчик жалеет, что с ним связался

Вопрос: вы всё ещё верите этому пакостнику?

Перемещено Pinkbyte из development



Последнее исправление: niemand (всего исправлений: 2)

Напрашивается вопрос «и что?»

Deleted
()

Спросить то что хотел? Как изощреннее наказать лавсана?

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

Какой-нибудь да клюнет, мне кажется.

niemand
() автор топика

В итоге, вместо того, чтобы штатный программист поправил пару строк, как в случае написания прожекта c++/java кодером

Да ладно! Java кодер также напишет систему бизнес-правил, конфигурируемую из XML, которую назовёт Enterprise Rules. Ждя редактирования этого XML напишет редактор, который назовёт Enterprise Rules List Manager. Документации на интерпрпетатор системы бизенс правил и формат XML не предоставит, так как это «детали реализации». В итоге для исправления позовут его, но так как доверия к слову Enterprise больше, то заработает он денег в 10 раз больше лавсана.

P.S. DSL на Common Lisp превосходно читается и расширяется. Доказано проектом hu.dwim, в котором почти весь код сплошной DSL, но для расширения DSL или его использования даже документация не требуется, всё самоочевидно.

monk ★★★★★
()
Последнее исправление: monk (всего исправлений: 1)
Ответ на: комментарий от monk

P.S. DSL на Common Lisp превосходно читается и расширяется. Доказано проектом hu.dwim, в котором почти весь код сплошной DSL, но для расширения DSL или его использования даже документация не требуется, всё самоочевидно.

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

niemand
() автор топика

а бедный заказчик жалеет, что с ним связался

кто-то же должен поддерживать своими деньгами немэйнстримные технологии :)

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

Fixed. :)

За что ты так венгров не любишь?

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

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

Внезапно. Он под SBCL и разрабатывался-то.

Видимо это настолько самоочевидно, что про этот двим и рассказывать не надо

CL-USER> (ql:quickload "hu.dwim.perec")

И всё работает. Зачем спрашивать?

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

Нагуглил только вопрос какого-то мужика

Странно гуглишь

google://hu.dwim.perec первой ссылкой выдаёт

http://dwim.hu/project/hu.dwim.perec , где ткнув в Content файлы под .../test можно увидеть кучу примеров использования.

И там же на первой странице https://github.com/MakarovAlexey/projects-managment/blob/master/src/task.lisp с примером использования «из жизни».

monk ★★★★★
()

быдлокод на любом языке можно написать

в чём вопрос?

anonymous
()

Так чей ты виртуал?

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

около 4х dsl на java, которые тоже хорошо читаются

К DSL на java у меня претензий нет. Они и расширяются неплохо.

Но топикстартер же про деньги и саксесс стори. А для этого нужен не DSL, а, например, Integrating Business Rules of Information Systems with Enterprise Architecture. И тогда заказчик от тебя уже никогда не денется до самой смерти этой информационной системы :-)

monk ★★★★★
()

Ну ну, штатный разработчик сразу возьмёт и поправит нужные места в крупном проекте. Из какой сказки вы? Любой крупный проект, на любом языке, чтобы поддерживать надо вникнуть. Знание языка чуть упрощает задачу, но лишь чуть чуть. Гораздо важнее качество кода и наличие хоть какой-то архитектуры. Если это всё на низком уровне, то хрена с два там что-то поправить за разумные сроки возможно.

ixrws ★★★
()

Знаю легенду о мастере, написавшем какому-то британскому заказчику код в категорном стиле на рефале.

И да, вроде же среди всяких погромистов доить и лочить считается годным занятием?

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

ЗЫ для Ъ - по ссылке тоже есть Hui.

anonymous
()

Штатный программист? А проджект отдан варягам? Т.е. веры в штатного программиста нету? Или чё?

Любой проект на любом языке можно отдать на саппорт другой конторе. В случае с лавсаном ещё есть нехилый вариант, что «другая контора» будет Clozure Associates, а не индусский бодишоп.

mv ★★★★★
()

Язабан. Не надо тащить всякое говно в этот мой девелопмент.

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

Уже страшно, хоть и не пишу на лиспе :))

Когда представителю ЛГБТ страшно - это нормально. ;)

А нормальные венгры не считают венгерский недоязыком.

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

Не-не, раз венгер писал, то все ок. Я уж думал, что писал как раз русский лавесан из стори ТС :)

gh0stwizard ★★★★★
()

Если ты что-то не знаешь, не понимаешь, это ещё не значит что оно плохое. Поди ещё и systemd-хейтер?

Debasher ★★★★★
()

Я вообще удивлён - неужели кто-то ещё кодит на лиспе и хаскеле, что-то серьёзнее хелловордов?

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

Я вообще удивлён - неужели кто-то ещё кодит на лиспе и хаскеле, что-то серьёзнее хелловордов?

Ну, естественно, а почему нет?

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

Большие риски: мало программистов, мало библиотек, слабое развитие коммьюнити.

Библиотеки есть, с комьюнити все ок, а то, что мало программистов - главный плюс, а не минус.

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

Большие риски:

не сильно зависят от языка

мало программистов,

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

мало библиотек,

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

слабое развитие коммьюнити.

Это вообще каким боком? Проект не коммьюнити писать будет.

P.S. На Informix-4GL пишутся (или писались) очень серьезные проекты. Хотя все вышеперечисленные пункты относятся к нему гораздо в большей степени, чем к Лиспу и Хаскелу.

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

мало программистов

Вообще не проблема, за бабло любой выучит любой хачкель

мало библиотек

Главное чтобы были нужные, к тому же не говори за всех

слабое развитие коммьюнити

Ну а это фантазии

Debasher ★★★★★
()

DSL, enterprise, серьезная разработка - все это звучит очень круто, но по сути все довольно просто. Есть самоочевидная идея - функции. Берем код и чтобы не повторять его множество раз даем ему имя и потом обращаемся по этому имени. Можно, конечно, смотреть на это так: функции расширяют язык (т.е. образуют DSL). Теперь следующий момент. Есть в Лиспе такая категория - специальные операторы. Эта категория присутствует неявно и в Алголоподобных языках, но она там зашита в синтаксис - ветвления, циклы и т.п. Лисп абстрагирует специальные операторы от синтаксиса и вот тут начинается интересное. Может ли программист добавлять в язык свои специальные операторы как это он делает для функций? Было придумано несколько способов это делать - макросы один из них. Специальные операторы определенные программистом образуют новый язык (DSL) не больше чем новые функции. Во-первых, основная часть работы выполняется функциями, расширять список специальных операторов нужно в редких случаях. Во-вторых присутствие сторонних (библиотечных) спец. операторов воспринимается программистом так же естественно, как присутствие сторонних функций. Говорить, что каждый лиспер создает свой собственный язык можно в той же степени, что и любой программист создает новый язык на основе своих функций. Лисперы говорят о DSL лишь для того, чтобы донести идею Лиспа до окружающих, но это не совсем корректно. Есть еще так называемые макросы чтения, но их используют совсем уж в редких случаях.

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

Можно, конечно, смотреть на это так: функции расширяют язык (т.е. образуют DSL).

Не совсем так. DSL имеет обычно слегка другую семантику. Причём изменение синтаксиса в общем случае не обязательно (даже в Лиспе DSL как правило оставляет скобочный синтаксис)

Вот пример DSL на Java:

public class MyRouteBuilder extends RouteBuilder {
 
    /**
     * Let's configure the Camel routing rules using Java code...
     */
    public void configure() {
 
        // here is a sample which processes the input files
        // (leaving them in place - see the 'noop' flag)
        // then performs content based routing on the message using XPath
        from("file:src/data?noop=true")
            .choice()
                .when(xpath("/person/city = 'London'"))
                    .to("file:target/messages/uk")
                .otherwise()
                    .to("file:target/messages/others");
    }
 
}

Это DSL, потому что пользователь бибитоеки должен думать не в терминах функций (что вернёт choice(), что вернёт otherwise()), а в терминах структуры некоего языка (from (choice (when ... to ...) (otherwise ... to ...)).

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

Вывалил в дерьме с ног до головы основываясь на своем субъективном мнении. Не надо так делать.

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

сейчас набегут скобочники с ленивостью наперевес

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

Поскольку факториал серьезнее хеллоуворлда - да, кодят.

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

про деньги и саксесс стори

а чотакого... Саксец стори про освоение денег :) Некоторые SAP внедряют - и ничего.

slackwarrior ★★★★★
()
Последнее исправление: slackwarrior (всего исправлений: 1)
Ответ на: комментарий от anonymous

А нормальные венгры не считают венгерский недоязыком.

На ум тут приходит «Венгерская нотация»

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

Большие риски: мало программистов, мало библиотек, слабое развитие коммьюнити.

Получается, что PHP - просто офигенный язык.

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

«Офигенность» как всегда привязана к целям узкого круга ограниченных людей (сферической в вакууме не бывает).

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

соглашусь, но уточню: есть ещё питон и яваскрипт. остальные — маргинальные интеграторы местечкового масштаба.

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

Кривые сишные модули имеют самое прямое отношение к языку, да.

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

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

PHP - просто офигенный язык.

Еще один задрот начинает прозревать?

anonymous
()

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

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