Последняя безнадежная попытка достучаться до некоторых

Oct 07, 2012 13:37


Почему "все языки делятся на две группы: Лисп и все прочие" ((ц) не помню кто)? А вот почему:

Определим пару функций:

(define (two-op a b c )
(* (+ a b) c))

(define (swap-ops , new-head)
(setq new-head (nth '(1 1 0) two-op))
(setf (nth '(1 1 0) two-op) (nth '(1 0) two-op))
(setf (nth '(1 0) two-op) new-head))
Пощупаем:

> two-op
(lambda (a ( Read more... )

newlisp, lisp, научпоп, программизЬм

Leave a comment

Comments 51

yury_finkel October 7 2012, 06:47:08 UTC
По пункту 2 (самому главному, насколько я понимаю): ЗАЧЕМ???!!!

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

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

Reply

rexy_craxy October 7 2012, 07:18:09 UTC
Странный вопрос. Лисп создавали люди [первой] эпохи "бури и натиска" в ИИ, каковой в общем, на уровне ИКР, и до сих понимается как некая "самопишущаяся программа". Это "раз".

А про "два" я уже высказывался в комментах к прошлому посту -- в том смысле, что "обедом по телефону" сыт не будешь. Нужен личный опыт "побега" из "синтаксической тюрьмы" и от бесконечного отупляющего старт-стопа edit-compile-debug-edit-..., чтобы оценить всю душеполезность Лиспа, а не уподобляться лисе-"виноградному критику".

Reply

rexy_craxy October 7 2012, 07:29:48 UTC
> Писывал я когда-то самомодифицирующиеся программы на ассемблере для сверхоптимизации кода

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

Reply


mustashriq October 7 2012, 08:20:12 UTC
Э-э, а ты вот можешь объяснить, зачем в этой ситуации до кого-то «достукиваться»? Тем более, в среде «пролетариев от программирования», которых к какому инструменту приставили, на том и пашут.

Reply

rexy_craxy October 7 2012, 08:28:19 UTC
А зачем вообще до кого-то "достукиваться" в любой области? "Дерусь, потому что дерусь" -- говорил в таких случаях Портос.

Reply

mustashriq October 7 2012, 08:33:29 UTC
Тогда почему «последняя»? ;)

> зачем вообще до кого-то "достукиваться" в любой области?

В любой и до кого угодно и не надо

Reply

rexy_craxy October 7 2012, 08:47:59 UTC
> Тогда почему «последняя»? ;)

Мною -- впервые! На данном этапе -- последняя. Ну, не ракетчики мы :)

Reply


caliban_upon October 7 2012, 08:45:09 UTC
РКС и ФБ - наше всё!!!

Reply

mustashriq October 7 2012, 08:46:28 UTC
Фейсбук я понял. А что такое РКС?

Reply

caliban_upon October 7 2012, 08:57:18 UTC
РКС - релейно-контакторные схемы. :D
ФБ - функциональные блоки (используются в цифровой схемотехнике). :D
А вот Фейсбук - это Fb. :D

Reply


udpn October 7 2012, 10:16:44 UTC
>> 1. Нет никакой принципиальной разницы между кодом (инструкциями) и данными. Причем не в "голой" лишь теории, а в самой что ни на есть практической практике, прямо в рантайме и прямо на уровне самого языка, а не "подлежащих" машинных кодов. И код, и данные суть просто s-выражения, сиречь списки ( ... )

Reply

rexy_craxy October 7 2012, 10:40:52 UTC
> И производительность - полное говно.

За скоростью можно и в Си-либу слазить, пусть жужжит, делов-то.

> Гоните, батенька. quote, unquote, quasiquotation, не? Или скажешь, что в eval они не рассматриваются как специальный случай?

Написано же: у нас. То есть у тех, кто руками расставляет скобочки, а не у маленького железного человечка, который бегает по веткам eval'овского cond и отыскивает значения :) Но даже и тот железный человечек разбирает все формы, включая "специальные", как случаи единого синтаксиса -- разница тут в семантике, а не в синтаксисе.

> Ты хотел сказать...

Не помню, чтобы мы пили на брудершафт. Красная карточка.

Reply

udpn October 7 2012, 11:29:46 UTC
>> Не помню, чтобы мы пили на брудершафт. Красная карточка.
Полноте, батенька, переходили же на "ты" ещё в бородатом году. Впрочем, как пожелаете :)

Завалялся у меня ещё один аргумент, для прожжёных лисперов. Как насчёт того, что описанная схема относится к антипаттерну action at a distance?

Reply

rexy_craxy October 7 2012, 11:32:26 UTC
Мы что, лично знакомы? Последней строки вообще не понял.

Reply


sharpc October 7 2012, 11:54:43 UTC
Скажите, пожалуйста, чисто ради статистики, сколько в вашей самой большой программе строк кода и что она в общих чертах делает?

Reply

rexy_craxy October 7 2012, 12:19:12 UTC
Не особенно большая. Строки не считал. Управляла когда-то "умными" контроллерами по сбору информации с приборов учета и общалась с головным серваком.

И in advance: только не надо заводить тут любимую песню про "большие проекты", про "паттерны" и "шаблоны", про "скорость разработки" и т.п. -- на эти темы Вам есть где душу отвести ;)

Reply

sharpc October 7 2012, 12:36:54 UTC
Ну хотя бы объем исходного кода

Reply

rexy_craxy October 7 2012, 12:53:18 UTC
Да хз. Меньше мегабайта, это точно. Я, знаете ли, не "профессионал", т.е. никогда не стремился вырыть самую глубокую яму или настрочить больше всех строчек кода.

Reply


Leave a comment

Up