• 0
    Думаю стоит указать в статье, что функция son создаёт простую hash-table, это просто такой сахар.
    Использование mongo-cl-driver в качестве провайдера БД mongo на common-lisp
  • +1
    > И что внутри там появилось что-то, отличное от списокв.

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

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

    У вас всё в голове перемешалось.
    Lisp разработчик: две стороны одной медали
  • 0
    > Мда, я думал интереснее будет, чего нового про лисп узнаю
    > «да ти праграмиравать сам ни умииш и ничаво не знаиш!!!»

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

    > Посмотрите ради интереса создание класса на plain c, на common lisp
    > и на c++.

    Где в этом коде вы увидели создание класса на plain C? Когда он создаёт объект?

    > Ничего не напоминает?

    Определение класса? о_О
    Lisp разработчик: две стороны одной медали
  • +1
    > Все навороты — CLOS, globals, dispatch — это операции над списками.

    Ну что за невежество.
    Lisp разработчик: две стороны одной медали
  • +2
    > вы только что назвали 2000 незнакомых вам человек
    > говном только за знание РНР

    Вы что, читать не умеете?

    Во-первых, я не называл никого говно, я говорил только о коде. Во-вторых, я специально подчеркнул, что некомпетентность большинства ищущих работу не связана с фактом использования PHP. Есть процент разработчиков, которым бы лучше было наверное заниматься чем-то другим. Это приводит к тому, что они постоянно ищут работу (либо не имеют работы в данный момент, либо имеют проблемы на текущей). в итоге, 95% кандидатов на рынке труда принадлежат именно к таким, хотя их общий процент на фоне всех разработчиков совсем не велик. И сделать правильный выбор небольшой не-IT компании очень трудно.
    Lisp разработчик: две стороны одной медали
  • +4
    Очень идеализировано и бесконечно далеко от практики. Говорить о взаимозаменяемости программистов на PHP имеет смысл только для больших организаций, с развитым IT-подразделением, или даже только для IT-компаний.

    На деле оказывается, что когда PHP-программист увольняется, то надо делать выбор из 2000 кандидатов, большинство из которых совершенно не компетентны (не потому что, PHP, а потому что ищут работу). Кого в итоге возьмут — вопрос удачи (ведь контора не софтверная, с небольшим IT-подразделением).

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

    В итоге, с точки зрения бизнеса, риски связанные с выбором CL просто меркнут на фоне рисков, связанных с постоянной ротацией якобы взаимозаменяемы PHP-программистов. Да, они взаимозаменяемы, но только для перемешивания говна, а бизнесу то надо совсем другое.

    Теперь насчёт уникальных решений. Да, интернет-магазин задача типовая и можно использовать типовое решение. Только это вопрос вообще не имеет отношения к разработке, а исключительно к бизнесу. Если бизнес не хочет типового решения, а имеет амбиции и хочет развиваться, то он не будет делать ставку на типовое решение. У него есть набор своих требований, которые плохо ложатся на типовые решения.

    Касательно конкретно этого магазина. Насколько я понимаю, там и был php до прихода автора. И, очевидно, описанная выше ситуация «круговорота говна в природе» настолько достала владельцев, что они согласились с аргументацией и дали возможность использовать CL. Да, риски велики. Но это дало шансы на изменения развития в сторону реальных интересов бизнеса. Собственно, это и есть задача бизнеса — оценивать риски, а программисты пускай лучше пишут код.
    Lisp разработчик: две стороны одной медали
  • +1
    > Лисп — инструмент художника.

    Я не знаю про какой Лисп вы говорите, но CL это именно промышленная платформа, созданная по заказу МО США (финансированием проекта занималась DARPA). Я не знаю какой язык предпочитаю в Пентагоне сейчас, но в своё время для него было создана два языка — Ada (о чём все знают) для системного программирования, и CL (о чем знают уже не все) для всего остального. Т.е. CL изначально создавался именно как промышленный стандарт для широкого круга задач.
    Lisp разработчик: две стороны одной медали
  • 0
    Хм, не считал, я женат ) Много работаю, поздно ложусь и мало сплю, нет необходимого задора )
    Lisp разработчик: две стороны одной медали
  • 0
    > В таком случае аргументация посильней должна бы быть…

    Я сегодня не в духе ))
    Lisp разработчик: две стороны одной медали
  • 0
    > lisp vs pyhon.
    > Троллить западло

    Я сначал писал на Python, потом познакомился с CL и перешёл на него. При чём, это было в рамках задачи, для которой я работал на Python, но в итоге процесс разработки стал слишком тяжёлым: медленный язык и нет полноценного REPL. В итоге я полностью отказался от Python в пользу CL. Вот и вся моя аргументация )
    Lisp разработчик: две стороны одной медали
  • 0
    > Проблема в том, что в большинстве случаев код нужно еще и легко читать.

    Я регулярно читаю достаточно большие объёмы кода на разных языках и смею вас уверить, что код на CL читать и понимать гораздо проще. Правда, да, есть не совсем психически здоровые люди, которые налегают на мета и прочие амфитамины, и тут может быть засада. Но если код пишут вменяемые разработчики, то работать с ним очень и очень просто.
    Lisp разработчик: две стороны одной медали
  • +2
    > Чтож этот ваш ЛNSП не используется то нигде, кроме как в мокрых фантазиях этих умных парней?

    Вы не поверите, но используют.
    Lisp разработчик: две стороны одной медали
  • +1
    > наслаждайся своей илитарностью.

    О какой «илитарности» идёт речь? Вас кто-то обидел?
    Lisp разработчик: две стороны одной медали
  • +2
    > Ну я как бы не хочу на написание, отладку и комментирование тратить
    > больше нескольких часов.

    Я вас умаляю, вот код, который считает колличество разных тэгов на этой странице:

    (html:with-parse-html (doc #U"http://habrahabr.ru/blogs/lisp/114981/")
      (let ((map (make-hash-table :test 'equal)))
        (iter (for node in-xpath-result "//*" on doc)
              (incf (gethash (xtree:local-name node) map 0)))
        map))
    Lisp разработчик: две стороны одной медали
  • +1
    > В lisp как в язык кроме car и cdr вообще мало что входит :).

    Так было 50 лет назад.

    > CLOS и прочие радости жизни — это уже как бы «библиотеки», нэ?

    Нет.

    > Которые будут разные в common lisp, emacs lisp, autocad lisp, iron bank что-то-там
    > lisp и прочих

    Разные лиспы очень сильно между собой отличаются, схожесть между ними в основном за счёт «скобочек», да старых унаследованных команда. Они похожи между собой не больше, чем C/C++/Java/C#.
    Lisp разработчик: две стороны одной медали
  • 0
    > Предлагаю что-нибудь простое

    Ну что-то вы совсем просто предложили ))
    Lisp разработчик: две стороны одной медали
  • +1
    > а что если устроить такой поединок:

    Нет, спасибо, я такой ерундой не занимаюсь. Если что, то мой открытый код на CL здесь: github.com/archimag
    Lisp разработчик: две стороны одной медали
  • 0
    > Если вообще работаете с этим языком на дневной работе!

    Если бы не работал, то вообще бы ничего не говорил на эту тему.
    Lisp разработчик: две стороны одной медали
  • +4
    > Но для решения практических задач-то хватает?

    Отвечу только на это (не хочу сильно увлекаться дискуссией) — нет. То, что в CL делается легко и изящно в С++ приходится решать через боль и мучения. Вообще, аргументация про то, что «хватает», она ущербна по своей сути. Хватает для всех зада и ассемблера, ведь все языки тьюринг-полные.

    На эту тему могу порекомендовать вот эту статью: www.nestor.minsk.by/sr/2003/07/30710.html, там где про парадокса Блаба.
    Lisp разработчик: две стороны одной медали
  • +3
    Сори, ответ сорвался (

    > Большинство практических применений мультиметодов
    > в C++ решаются шаблонам

    Нет. Нормальной реализации мультиметодов для С++ даже Александреску не смог сделать.

    > Если для контроля ошибок и отладки, то как бы в C++ есть исключения.

    Рестарты намного круче исключений.

    >> динамических переменных
    > Если очень надо, то есть QVariant / boost::variant

    Это вообще не из той области.

    > Но практика показывает, что для большинства прикладных
    > задач это не так уж и важно :(.

    Я больше 7 лет писал C++ и около 3 на Python, плюс были ещё разные другие языки в меньших масштабах. Сейчас я пишу только на двух — JavaScript и Common Lisp. И по моим ощущения преимущества CL совершенно не оспоримые.

    > DSL писать так же удобно как на LISP

    А при чём тут DSL?
    Lisp разработчик: две стороны одной медали
  • 0
    >> динамических переменных
    > Если очень надо, то есть QVariant / boost::variant

    > Но практика показывает, что для большинства прикладных
    > задач это не так уж и важно :(.
    Lisp разработчик: две стороны одной медали
  • 0
    > Думаю, что AST (или макросы) и есть та вакуумная пушка

    Нет, макросы всего лишь один из элементов CL. Это делают жизнь лучше. Но даже без них CL был бы лучше больше современных языков.
    Lisp разработчик: две стороны одной медали
  • +6
    > ИМХО, преувеличение, вызванное недостаточным
    > знанием других языков программирования

    А у вас кажется не хватает знаний о CL ))

    > динственное отличие современного C++ от Lisp в плане встроенных в язык
    > функций — это отсутствие доступа к AST.

    Ну что вы такое говорите. Как насчёт мультиметодов, рестартов, динамических переменных, MOP? Поверьте, разница огромна.
    Lisp разработчик: две стороны одной медали
  • 0
    блин, куда-то не туда коммента пошёл (
    Пример сайта на Common Lisp
  • 0
    Что такое «массовые лиспы»? Какие у них общие недостатки.

    Ну да пустой разговор. Вряд ли кто-либо из программистов на CL согласится с тем, что Clojure хоть что-нибудь исправляет.
    Пример сайта на Common Lisp
  • 0
    Вряд ли можно говорить о том, что Clojure исправляет «слабости», скорей это просто несколько другой язык с заметно отличающейся идеологией.
    Пример сайта на Common Lisp
  • 0
    > написание собственной велосипедной реализации

    О чем речь?
    Пример сайта на Common Lisp
  • 0
    Думаю, что это удобная, но наивная точка зрения )
    Пример сайта на Common Lisp
  • 0
    Да Грэм это вообще отдельная история.

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

    Естественно, когда встал вопрос о другой нагрузке, то приложение надо было переписывать фактически полностью. На чём переписывать? Поскольку Грэма уже не было, то язык выбирали заново. Выбрали что знали лучше и что знали, что будет работать.

    Ну, конечно, Грэм подаёт эту историю несколько по другому.
    Пример сайта на Common Lisp
  • 0
    Да. Ну да они все примерно одинаковые )
    Пример сайта на Common Lisp
  • 0
    Я когда писал lisper.ru, то дизайнера у меня не было и я сначала делал именно на встроенном языке. По результатам этого опыта и я пришел к шаблонам, как к оптимальному решению )
    Пример сайта на Common Lisp
  • +1
    Ну так на шаблонах и получается же лаконичнее!

    У генерации контента с помощью встроенного eDSL фактически вообще нет никаких преимущества. Я только для демонстрационных приложений объёмом в 10 строк использую cl-who.
    Пример сайта на Common Lisp
  • +2
    Дизайнеру, как и самому программисту, проще и удобней редактировать код, максимально приближенный к целевой разметке.

    Кроме того, в данном приложении автор использует библиотеку cl-closure-template. которая имеет ещё и совсем другие преимущества (хотя это и не важно для данного приложения), я писал об этом здесь
    Пример сайта на Common Lisp
  • +1
    Ну так шаблоны же позволяют тоже самое, только они не забивают мусором основной код и их могу править дизайнеры.
    Пример сайта на Common Lisp
  • +1
    Я пробовал так. В итоге когда перешёл на шаблоны, то был просто счастлив от того, насколько всё стало проще и яснее.

    Вообще, с мнением, что контент надо генерировать через шаблоны я думаю согласится любой нормальный веб-разработчик, не зависимо от используемого им языка.
    Пример сайта на Common Lisp
  • +1
    > Можно было и шаблоны описывать лисповыми конструкциями

    На практике получается просто жуть.
    Пример сайта на Common Lisp
  • +1
    Безусловно. Только это другие языки. Не такие как CL. И сделано там метапрограммирование совсем по другому. Я говорю о том, что конкретно CL практически не реально сделать на основе другого синтаксиса.
    Пример сайта на Common Lisp
  • 0
    Гипотеза неверная, проверенно на опыте.
    Пример сайта на Common Lisp
  • +1
    Например, на этот основано метапрограммирование. Ньюансов много разных.
    Пример сайта на Common Lisp