> И что внутри там появилось что-то, отличное от списокв.
Структуры, массивы, хэш-таблицы, FFI. Посмотрите ассембленый код, который генерирует SBCL. Списки используются для синтаксиса и являются часто используемым типом данных, но не более того.
> что расширял себя сам, «вводя новые ключевые слова» через
> задание новых операций над списками
> Мда, я думал интереснее будет, чего нового про лисп узнаю
> «да ти праграмиравать сам ни умииш и ничаво не знаиш!!!»
Я не знаю, чего у вас там за обычная аргументация, но говорить, что в лисп есть только списки списки, а всё остальное это операции над списками, это абсолютно полное невежество. Так было 50 лет назад. С тех пор лисп очень сильно изменился.
> Посмотрите ради интереса создание класса на plain c, на common lisp
> и на c++.
Где в этом коде вы увидели создание класса на plain C? Когда он создаёт объект?
> вы только что назвали 2000 незнакомых вам человек
> говном только за знание РНР
Вы что, читать не умеете?
Во-первых, я не называл никого говно, я говорил только о коде. Во-вторых, я специально подчеркнул, что некомпетентность большинства ищущих работу не связана с фактом использования PHP. Есть процент разработчиков, которым бы лучше было наверное заниматься чем-то другим. Это приводит к тому, что они постоянно ищут работу (либо не имеют работы в данный момент, либо имеют проблемы на текущей). в итоге, 95% кандидатов на рынке труда принадлежат именно к таким, хотя их общий процент на фоне всех разработчиков совсем не велик. И сделать правильный выбор небольшой не-IT компании очень трудно.
Очень идеализировано и бесконечно далеко от практики. Говорить о взаимозаменяемости программистов на PHP имеет смысл только для больших организаций, с развитым IT-подразделением, или даже только для IT-компаний.
На деле оказывается, что когда PHP-программист увольняется, то надо делать выбор из 2000 кандидатов, большинство из которых совершенно не компетентны (не потому что, PHP, а потому что ищут работу). Кого в итоге возьмут — вопрос удачи (ведь контора не софтверная, с небольшим IT-подразделением).
Новый разработчик обнаруживает, что проект это куча говна. И начинает это говно разребать, но обычно лучше не становится, просто одно говно заменяется на другое. Ну ему-то в своем говне сидеть приятней, чем в чужом. А потом он увольняется и на его место приходит другой, и всё по новой.
В итоге, с точки зрения бизнеса, риски связанные с выбором CL просто меркнут на фоне рисков, связанных с постоянной ротацией якобы взаимозаменяемы PHP-программистов. Да, они взаимозаменяемы, но только для перемешивания говна, а бизнесу то надо совсем другое.
Теперь насчёт уникальных решений. Да, интернет-магазин задача типовая и можно использовать типовое решение. Только это вопрос вообще не имеет отношения к разработке, а исключительно к бизнесу. Если бизнес не хочет типового решения, а имеет амбиции и хочет развиваться, то он не будет делать ставку на типовое решение. У него есть набор своих требований, которые плохо ложатся на типовые решения.
Касательно конкретно этого магазина. Насколько я понимаю, там и был php до прихода автора. И, очевидно, описанная выше ситуация «круговорота говна в природе» настолько достала владельцев, что они согласились с аргументацией и дали возможность использовать CL. Да, риски велики. Но это дало шансы на изменения развития в сторону реальных интересов бизнеса. Собственно, это и есть задача бизнеса — оценивать риски, а программисты пускай лучше пишут код.
Я не знаю про какой Лисп вы говорите, но CL это именно промышленная платформа, созданная по заказу МО США (финансированием проекта занималась DARPA). Я не знаю какой язык предпочитаю в Пентагоне сейчас, но в своё время для него было создана два языка — Ada (о чём все знают) для системного программирования, и CL (о чем знают уже не все) для всего остального. Т.е. CL изначально создавался именно как промышленный стандарт для широкого круга задач.
Я сначал писал на Python, потом познакомился с CL и перешёл на него. При чём, это было в рамках задачи, для которой я работал на Python, но в итоге процесс разработки стал слишком тяжёлым: медленный язык и нет полноценного REPL. В итоге я полностью отказался от Python в пользу CL. Вот и вся моя аргументация )
> Проблема в том, что в большинстве случаев код нужно еще и легко читать.
Я регулярно читаю достаточно большие объёмы кода на разных языках и смею вас уверить, что код на CL читать и понимать гораздо проще. Правда, да, есть не совсем психически здоровые люди, которые налегают на мета и прочие амфитамины, и тут может быть засада. Но если код пишут вменяемые разработчики, то работать с ним очень и очень просто.
> В lisp как в язык кроме car и cdr вообще мало что входит :).
Так было 50 лет назад.
> CLOS и прочие радости жизни — это уже как бы «библиотеки», нэ?
Нет.
> Которые будут разные в common lisp, emacs lisp, autocad lisp, iron bank что-то-там
> lisp и прочих
Разные лиспы очень сильно между собой отличаются, схожесть между ними в основном за счёт «скобочек», да старых унаследованных команда. Они похожи между собой не больше, чем C/C++/Java/C#.
Отвечу только на это (не хочу сильно увлекаться дискуссией) — нет. То, что в CL делается легко и изящно в С++ приходится решать через боль и мучения. Вообще, аргументация про то, что «хватает», она ущербна по своей сути. Хватает для всех зада и ассемблера, ведь все языки тьюринг-полные.
> Большинство практических применений мультиметодов
> в C++ решаются шаблонам
Нет. Нормальной реализации мультиметодов для С++ даже Александреску не смог сделать.
> Если для контроля ошибок и отладки, то как бы в C++ есть исключения.
Рестарты намного круче исключений.
>> динамических переменных
> Если очень надо, то есть QVariant / boost::variant
Это вообще не из той области.
> Но практика показывает, что для большинства прикладных
> задач это не так уж и важно :(.
Я больше 7 лет писал C++ и около 3 на Python, плюс были ещё разные другие языки в меньших масштабах. Сейчас я пишу только на двух — JavaScript и Common Lisp. И по моим ощущения преимущества CL совершенно не оспоримые.
Структуры, массивы, хэш-таблицы, FFI. Посмотрите ассембленый код, который генерирует SBCL. Списки используются для синтаксиса и являются часто используемым типом данных, но не более того.
> что расширял себя сам, «вводя новые ключевые слова» через
> задание новых операций над списками
У вас всё в голове перемешалось.
> «да ти праграмиравать сам ни умииш и ничаво не знаиш!!!»
Я не знаю, чего у вас там за обычная аргументация, но говорить, что в лисп есть только списки списки, а всё остальное это операции над списками, это абсолютно полное невежество. Так было 50 лет назад. С тех пор лисп очень сильно изменился.
> Посмотрите ради интереса создание класса на plain c, на common lisp
> и на c++.
Где в этом коде вы увидели создание класса на plain C? Когда он создаёт объект?
> Ничего не напоминает?
Определение класса? о_О
Ну что за невежество.
> говном только за знание РНР
Вы что, читать не умеете?
Во-первых, я не называл никого говно, я говорил только о коде. Во-вторых, я специально подчеркнул, что некомпетентность большинства ищущих работу не связана с фактом использования PHP. Есть процент разработчиков, которым бы лучше было наверное заниматься чем-то другим. Это приводит к тому, что они постоянно ищут работу (либо не имеют работы в данный момент, либо имеют проблемы на текущей). в итоге, 95% кандидатов на рынке труда принадлежат именно к таким, хотя их общий процент на фоне всех разработчиков совсем не велик. И сделать правильный выбор небольшой не-IT компании очень трудно.
На деле оказывается, что когда PHP-программист увольняется, то надо делать выбор из 2000 кандидатов, большинство из которых совершенно не компетентны (не потому что, PHP, а потому что ищут работу). Кого в итоге возьмут — вопрос удачи (ведь контора не софтверная, с небольшим IT-подразделением).
Новый разработчик обнаруживает, что проект это куча говна. И начинает это говно разребать, но обычно лучше не становится, просто одно говно заменяется на другое. Ну ему-то в своем говне сидеть приятней, чем в чужом. А потом он увольняется и на его место приходит другой, и всё по новой.
В итоге, с точки зрения бизнеса, риски связанные с выбором CL просто меркнут на фоне рисков, связанных с постоянной ротацией якобы взаимозаменяемы PHP-программистов. Да, они взаимозаменяемы, но только для перемешивания говна, а бизнесу то надо совсем другое.
Теперь насчёт уникальных решений. Да, интернет-магазин задача типовая и можно использовать типовое решение. Только это вопрос вообще не имеет отношения к разработке, а исключительно к бизнесу. Если бизнес не хочет типового решения, а имеет амбиции и хочет развиваться, то он не будет делать ставку на типовое решение. У него есть набор своих требований, которые плохо ложатся на типовые решения.
Касательно конкретно этого магазина. Насколько я понимаю, там и был php до прихода автора. И, очевидно, описанная выше ситуация «круговорота говна в природе» настолько достала владельцев, что они согласились с аргументацией и дали возможность использовать CL. Да, риски велики. Но это дало шансы на изменения развития в сторону реальных интересов бизнеса. Собственно, это и есть задача бизнеса — оценивать риски, а программисты пускай лучше пишут код.
Я не знаю про какой Лисп вы говорите, но CL это именно промышленная платформа, созданная по заказу МО США (финансированием проекта занималась DARPA). Я не знаю какой язык предпочитаю в Пентагоне сейчас, но в своё время для него было создана два языка — Ada (о чём все знают) для системного программирования, и CL (о чем знают уже не все) для всего остального. Т.е. CL изначально создавался именно как промышленный стандарт для широкого круга задач.
Я сегодня не в духе ))
> Троллить западло
Я сначал писал на Python, потом познакомился с CL и перешёл на него. При чём, это было в рамках задачи, для которой я работал на Python, но в итоге процесс разработки стал слишком тяжёлым: медленный язык и нет полноценного REPL. В итоге я полностью отказался от Python в пользу CL. Вот и вся моя аргументация )
Я регулярно читаю достаточно большие объёмы кода на разных языках и смею вас уверить, что код на CL читать и понимать гораздо проще. Правда, да, есть не совсем психически здоровые люди, которые налегают на мета и прочие амфитамины, и тут может быть засада. Но если код пишут вменяемые разработчики, то работать с ним очень и очень просто.
Вы не поверите, но используют.
О какой «илитарности» идёт речь? Вас кто-то обидел?
> больше нескольких часов.
Я вас умаляю, вот код, который считает колличество разных тэгов на этой странице:
Так было 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?