Pull to refresh
1
0
Send message
Думаю стоит указать в статье, что функция son создаёт простую hash-table, это просто такой сахар.
> И что внутри там появилось что-то, отличное от списокв.

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

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

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

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

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

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

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

Определение класса? о_О
> Все навороты — CLOS, globals, dispatch — это операции над списками.

Ну что за невежество.
> вы только что назвали 2000 незнакомых вам человек
> говном только за знание РНР

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

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

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

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

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

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

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

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

Я сегодня не в духе ))
> lisp vs pyhon.
> Троллить западло

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

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

Вы не поверите, но используют.
> наслаждайся своей илитарностью.

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

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

(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 как в язык кроме car и cdr вообще мало что входит :).

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

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

Нет.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

А при чём тут DSL?

Information

Rating
Does not participate
Registered
Activity