LINUX.ORG.RU

Однако, на ЦеПП я напишу интерпретатор любого языка в одну строку.

Конечно, сторока может оказаться довольно длинной... :)

З.Ы.

Достали лисперы! Разводитесь возлюбленным Грэмом в интимной обстановке, pls.

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

Kill'em all! Хотя ИМХО лучше было бы начать с вендузятнегоф.

bugmaker ★★★★☆
()

а хочешь я сделаю тоже самое для яваскрипта?

var myJSprogram = "program text"; var arr = myJSprogram.split("\n"); for (var i in arr){ eval(arr[i]); }

Pi ★★★★★
()
Ответ на: комментарий от Die-Hard

>Однако, на ЦеПП я напишу интерпретатор любого языка в одну строку.

Не сможешь. Больше одного #include в одну строку не влезет, увы ;)

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

include, вроде-как, просто вставка файла... Сможет =))

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

>а хочешь я сделаю тоже самое для яваскрипта?

А хочешь для лиспа?

(let ((mylispcode '(program (in (lisp))))) (eval mylispcode))

или ruby?

"мояпрограмма".split("\n").map{|i| eval i }

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

> Однако, на ЦеПП я напишу интерпретатор любого языка в одну строку.

Уверен, что захочешь доказывать это? ;)

> Достали лисперы! Разводитесь возлюбленным Грэмом в интимной обстановке, pls.

Спасибо за пожелание, конечно. Мне тоже было приятно пообщаться...

eRazor ★★★
() автор топика
Ответ на: комментарий от ero-sennin

>eval(compile("мояпрограмма", "", "exec"))

(eval (compile "мояпрограмма"))

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

> Достали лисперы! Разводитесь возлюбленным Грэмом в интимной обстановке, pls.

У вас, помоему, какие-то скрытые комплексы по поводу лиспа и лисперов. Надеюсь это не опасно для окружающих.

CrazyPit ★★★
()

Можешь посмотртеь у финов (2-й том) или в sicp. В обоих источниках чуть более 15 строк, но очень на то похоже.

yyk ★★★★★
()
Ответ на: комментарий от Die-Hard

> Однако, на ЦеПП я напишу интерпретатор любого языка в одну строку.  Конечно, сторока может оказаться довольно длинной... :)

Implementation quantities                                 [limits]
1 Because computers are finite, C++ implementations are inevitably
  limited in the size of the programs they can successfully process...

--Characters in one logical source line [65536]

:)

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

CrazyPit:

> ...Надеюсь это не опасно для окружающих.

Пока не опасно. Когда в себе, не кидаюсь ни на людей, ни на лисперов :-)

Die-Hard ★★★★★
()
Ответ на: комментарий от dilmah

dilmah:

> Characters in one logical source line [65536]

Ну, для большинства программ этого хватит.

К тому же, я ж про чистую теорию речь веду! Что мне всякие implementations!

Die-Hard ★★★★★
()
Ответ на: комментарий от CrazyPit

>> Достали лисперы! Разводитесь возлюбленным Грэмом в интимной обстановке, pls.

>У вас, помоему, какие-то скрытые комплексы по поводу лиспа и лисперов.

Но лисперы и в самом деле достали ;)

tailgunner ★★★★★
()
Ответ на: комментарий от ero-sennin

>> Но лисперы и в самом деле достали ;)

> Хотите поговорить об этом?

Да, доктор! Объясните мне, что они нашли в этом Лиспе ?!

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

> Ну, хотя бы, расширение кругозора.

Не катит за отмазку 8) Что-то большее, иначе не употрблялись бы слова "императивщина" (с легким презрением) и "функциональщина" (с оттенком превосходства).

Лично я думаю, что упоминание знания Лиспа (Хаскеля, Окамла) - это просто способ выделиться, поэтому и раздражает. Нет?

tailgunner ★★★★★
()

(loop
  (princ (eval (read))))

Так устроит?

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

> Не сможешь. Больше одного #include в одну строку не влезет, увы ;)

Да вроде как cpp отдельно, сс отдельно. Пишешь свой препроцессор без такой баги и вперед.

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

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

ero-sennin ★★
()
Ответ на: комментарий от tailgunner

Во-первых, я бы не стал обобщать, навешивая ярлыки. Во-вторых, расширение кругозора, это не отмазка. За всех я никогда не брался говорить, а за себя скажу, у меня не стоит проблема выбора языка для изучения или что-то в подобном роде - я вполне себе спокойно работаю, не первый год, и уже не первый в России. Всю жизнь писал на С++, теперь же, на C#/Java. Постепенно интерес к языку, который мне больше всего нравился - С++ падает, а к функциональным языкам растёт. Интерес же к Лиспу, при том, что он не функциональный язык, обусловлен тем, что я прочитал о наличием в нём мощных средств метапрограммирования. Хочу ознакомиться.

> Лично я думаю, что упоминание знания Лиспа (Хаскеля, Окамла) - это просто способ выделиться, поэтому и раздражает. Нет?

Вероятно, для кого-то - да, после того как Луговской в наибезобразнейшей форме устроил пиар функциональным языкам здесь на ЛОРе, наверно, для кого-то это просто стало бессознательной модой. Как стало модным говорить о том, что С всегда лучше С++ теми, кто знает только один С. Я же от выступлений здесь воздерживаюсь, предпочитая более дружественную атмосферу. :)

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

> Объясните мне, что они нашли в этом Лиспе ?!

1. Ситаксис близок к идеала для метпрограмминга.

2. На нём написана большая часть емакса

CrazyPit ★★★
()
Ответ на: комментарий от ero-sennin

> мистическое двуединство кода и данных - дух Его,

Ну да, только в Lisp встроен его интерпретатор.

> божественная рекурсия - сердце Его.

Единственный язык с рекурсией, ага.

> Принявший же и постигший истинный свет Его подобен прямой и отточенной стреле

Маленькая железная головка и перья в заднице.

Ну а вообще - улыбнуло. Аффтар, пешы исчо.

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

> Интерес же к Лиспу, при том, что он не функциональный язык, обусловлен тем, что я прочитал о наличием в нём мощных средств метапрограммирования. Хочу ознакомиться.

То есть ты не лиспер пока, а интересующийся. Я тоже был интересующимся, прочитал все книги по Lisp в пределах досягаемости, потом попробовал программировать на нем (на guile). Оказалось, что это страшно неудобно. В результате вместо Lisp использовал Python и ни разу не пожалел. Однако червячок всё-таки грызет, поэтому и спрашиваю - что в нем другие нашли.

> Как стало модным говорить о том, что С всегда лучше С++ теми, кто знает только один С.

Да, эти достали хуже лисперов 8)

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

> 1. Ситаксис близок к идеала для метпрограмминга.

Синтаксис очень однообразен - глазу не за что зацепиться, а в нагромождении скобок без помощи редактора не разобраться.

> 2. На нём написана большая часть емакса

И многих других достойных программ. Но на Фортране или Си написано не меньше...

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

> Синтаксис очень однообразен - глазу не за что зацепиться, а в нагромождении скобок без помощи редактора не разобраться.

http://www.dwheeler.com/readable/sweet-expressions.html

> Но на Фортране или Си написано не меньше...

Ох, друг. Eсли бы те фортрановские быдлопрограммы, в которых мне приходилось ковыряться на прошлой работе, были написаны не на фортране, а на лиспе, может, я бы оттуда и не уволился. ;)

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

> http://www.dwheeler.com/readable/sweet-expressions.html

на python похоже... ;)

последние примеры смотрятся коряво, со скобками было лучше: код с таким уровней вложенности трудно читать -- именно поэтому на питоне так не пишут. парные скобки в редакторе хоть подсвечиваются..

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

> последние примеры смотрятся коряво, со скобками было лучше

Там можно совмещать скобки и отступы. :)

ero-sennin ★★
()
Ответ на: комментарий от tailgunner

> Но ведь это - не стандарт?

Нет, не стандарт, но никто не запрещает этим пользоваться, если не нравятся скобки. Простенькая реализация на scheme занимает 25 килобайт (http://www.dwheeler.com/readable/sweet.scm). Ну и чужой код, если сильно хочется, очень просто перегоняется в такую форму и обратно.

> Быдлопрограммы можно написать на любом языке, увы...

Твоя правда, брат. Вот только быдлопрограмм на Лиспе значительно меньше, чем на Фортране. :D

ero-sennin ★★
()
Ответ на: комментарий от tailgunner

> Но лисперы и в самом деле достали ;)

Чем же это? Вы случайно не путаете с вендузятнегами?

> Да, доктор! Объясните мне, что они нашли в этом Лиспе ?!

спокойно, без паники. Бригада уже выехала.

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

Во-вторых, весьма универсален. Может быть есть такие задачи, решать которые на другом наречии было бы проще или результат получался бы лучше, но для лиспа круг задач, которые можно было бы решать с приемлемым качеством и за более чем приемлемое время, ИМХО наиболее широк.

В третьих, весьма читабелен. Вместо зверинца из всяких разнообразных : ; {} () :: . -> = используется (), и только там, где логически необходимо выделить определённую последовательность, из-за чего как число служебных элементов, требуемых синтаксисом языка а не описанием логики, так и их ассортимент, сведены к минимуму.

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

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

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

получение всехъ перестановок заданного множества 
из произвольного числа элементов.

(defparameter seq '("а" "з" "д" "и" "п"))

(defun permutations (x)
    (if (null x)
        '(nil)
        (mapcan (lambda (e) (mapcar (lambda (p) (cons e p)) (permutations (remove e x :count 1 :test 'eq)))) x)))

(dolist (x (permutations seq)) (format t "~S~%" x))



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

(defun read-socks (socks stat data)
    (if (null stat) nil
        (let (
            (so (first socks))
            (st (first stat))
            (da (first data))
            (rso (rest socks))
            (rst (rest stat))
            (rda (rest data)))

            (cond
                ((null st) (cons so (read-socks rso rst rda)))
                ((eq st ':input)
                    (progn
                        (perform-data (first so) da)
                        (cons so (read-socks rso rst rda))))
                ((eq st ':eof) 
                    (progn
                        (close (first so))
                        (read-socks rso rst rda)))))))

(defun listen-sockets (s d)
    (let (
        (stat (socket-status s))
        (server (first s)))
        (let (
            (ss (read-socks (rest s) (rest stat) (rest d))))
            (if (first stat)
                (listen-sockets
                    (cons
                        server
                        (cons
                            (cons (perform-neg (socket-accept server :element-type '(unsigned-byte 8) :buffered n
                            ss))
                    (cons (first d) (cons nil (rest s))))
                (listen-sockets (cons server ss) d)))))

(listen-sockets (list (socket-server 7777)) (list nil))
(quit)

bugmaker ★★★★☆
()
Ответ на: комментарий от ero-sennin

> Хотите поговорить об этом?

Да, да!!! (аж пена с зубов капает... Буен, sorry!!! Дайте мне лиспера с румяной попой! Как я в него направлю свой медный зуб!!! Ш-ш-ш-ш)

Покажите мне, пожалуйста, что ЛИСП стоИт бОльшего, чем ГЕНИАЛЬНЫЕ извращения наподобие Емакса, Редьюса и Байесрвских фильтров... (Во ВСЕХ вышеперечисленных случаях ЛИСП сыграл ТОРМОЗЯЩУЮ роль!! На любом другом языке оно б круче проканало ИМХО :-) )

Я в прострации, честно говоря... Вас Дядя Грэм на бабки развел, и вы смеете нас учить, как на эти самые бабки не залететь... Что ж, каждый выбирает по себе!

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

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

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

Чтобы данное обсуждение вышло за рамки пустого трёпа, предлагаю отрешать хотя бы приведённое выше <на чём тебе понравится> и сравнить, а ещё лучше произвести функциональный аналог того же емакса, только круче.

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

>Всякие дельфи, васики и сиглюки тормозят гораздо круче. ...

Ты об этом моей жене скажи, а также тем трем сотням леммингов, что наш универ ежегодно выпускает с факультета информатики (считается одним из самых крутых в Европе!)... Уже пару лет они по выпуске не Жабу (как раньше) боготворят, а ВыжуалВасик в дотНет инкарнации:(

Замечу, про Лисп никто и не вспоминает...

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

BTW, при всей моей нелюбви к Лиспу, он (Лисп) все же, язык.

В отличие от Васика.

Васик же ИМХО -- редуцированный диалект жестов для интеллектуальных инвалидов, предназначенный для адаптации свежих жертв лоботомии.

Die-Hard ★★★★★
()
Ответ на: комментарий от grob

2grob:

> мда-ааа

А чего "мда-ааа"? Разумеется, в MIT'е Грэма боготворят... Воплощенная Американская Мечта!

Sorry, я отдаю себе отчет в том, что _очень_ многие со мной не согласны. В том числе и очень уважаемый мною grob...

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

>> Всякие дельфи, васики и сиглюки тормозят гораздо круче. ...

> Ты об этом моей жене скажи,

А ты сам скажи, твоя же жена. Я своей сказал уже.

> а также тем трем сотням леммингов,

Вот им и нужно лисп вместо, чтобы отличали жабу от дотнетиненады. Иначе, на другом форуме обсуждали с моим участием, получается, что всякие варварские наречия-однодневки от подлых мсей и их друга и соратника багланда типо Революционный Шаг В Развитии, а чем он лучше того же лиспа, никто не знает. Начали выяснять - оказалось что всем хуже, несмотря на более чем солидную разницу в возрасте этих наречий. Ато млина, устроили из прикладной науки информатики сексуально-богословскую дисциплину с пророком-мелкосовтом и апологетами, возжелавшими розовой попки :E Всё от безграмотности. Ты вот тож на лисп крысишся, и (сполгода помойму назад) мы с тобой этот вопрос обсуждали. А чем именно не угодил - не сказал и сейчас не говориш. Пёс с им, Грэмом, ну ненравицо он тебе, девушку там увёл или трёшку занял не отдаёт, это ваше с ним личное дело, но зачем на лисп крыситься? Это ведь неодушевлённое и такова всплеска эмоций ну никак не заслуживает. Если уж знаеш чем он так плох, говори, не томи. Не забудь примеры привесть какие сыщутся.

bugmaker ★★★★☆
()
Ответ на: комментарий от Die-Hard

Я просто против крайностей. Я не бросаюсь в ноги Sussman'у и не молюсь на икону Graham'а. Тем не менее подход к обучению, когда первым выбирается язык, предрасполагающий к метапрограммированию, считаю весьма эффективным. Конечно он должен быть простым. Как scheme. На нем можно написать с нуля простенькую объектно-ориентированную систему или, как уже заметили, интерпретатор себя же. После этого понимание объектно-ориентированной, функциональной и других парадигм и обучение другим языкам становится гораздо проще.

grob ★★★★★
()
Ответ на: комментарий от Die-Hard

> На любом другом языке оно б круче проканало ИМХО :-) )

тогда бы были редакторы лучше емакса, но увы. Так что наоборот

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

>> Но лисперы и в самом деле достали ;)

> спокойно, без паники. Бригада уже выехала.

ну когда же он приедет, добрый доктор? 8)

>Чем же это? Вы случайно не путаете с вендузятнегами?

Не путаю. Виндузятнегов я понимаю, а лисперов - нет. Это меня беспокоит. Вроде все умные люди, а так носятся с этой игрушкой.

> Во-первых, он весьма прост.

Описание Common Lisp - это толстенный том (или 2?), о какой простоте речь?! Или ты имеешь в виду Маккартниевский Lisp 1.5 50-летней давности? Или Scheme?

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

Так о каком Лиспе мы говорим? Что именно включаем в базовые концепции - пару, список? А навороты Common Lisp? А так - в ассемблере, Си, Паскале базовых концепций тоже не особо много.

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

На _каких именно_ задачах? Я занимаюсь системами реального времени, куда там Лисп с его сборкой мусора воткунть? Если задача сводится к обработке списков - тогда Лисп рулит, поскольку для этого и сделан.

> весьма читабелен. Вместо зверинца из всяких разнообразных : ; {} () :: . -> = используется ()

Я уже писал - всё слишком однообразно, глазу не за что зацепиться. Вспоминается brainfuck ;)

> допускает весьма высокий уровень абстракции данных

Настолько субъективно, что...

> В пятых, нунах, запарилсо. Вот некоторые экзамплы

При всем уважении, это сферические кони в вакууме. В реальных задачах Лисп за 50 лет распространения не получил - это говорит о многом.

[ждем ударной фразы о миллионах мух]

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

> тогда бы были редакторы лучше емакса, но увы

Даешь холивор Emacs vs vi! 8)

А вообще, хороших редакторов много (мой фаворит - MultiEdit, хотя я вне уже лет 10 не работал). Emacs - он не лучший, просто за счет почтенного возраста и открытости он накопил огромное количество модулей расширения.

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

> Виндузятнегов я понимаю, а лисперов - нет. Это меня беспокоит.

Первых понять проще, чем вторых? ;)

> Вроде все умные люди, а так носятся с этой игрушкой.

1. Выс забыли спросить, с чем носиться. 2. У Вас какие игрушки?

> Описание Common Lisp - это толстенный том (или 2?), о какой простоте речь?!

Описание какого языка (с описанием всех библиотек, необходимых для покрытия аналогичной функциональности) займёт меньше? А прост, потому как код есть список и ничего более.

> Я занимаюсь системами реального времени, куда там Лисп с его сборкой мусора воткунть?

Написать свой для "систем реального времени" :)

> Я уже писал - всё слишком однообразно, глазу не за что зацепиться. Вспоминается brainfuck ;)

"Настолько субъективно, что..." :)

> В реальных задачах Лисп за 50 лет распространения не получил - это говорит о многом.

Ни о чём не говорит.

Даже если мух и не вспоминать, Вы же не будете настаивать, что всю историю человечества побеждали только лучшие идеи... ;)

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

> А вообще, хороших редакторов много (мой фаворит - MultiEdit, хотя я вне уже лет 10 не работал). Emacs - он не лучший, просто за счет почтенного возраста и открытости он накопил огромное количество модулей расширения.

И я лет ...надцать тому был "без ума" от ME. Так вот, если представить его OS + более приятный язык макросов - получим emacs ;) (ну а кто-то получит vi :)

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

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

io ;-)

Но вообще говоря, концептуальная простота нафик не сдалась на практике. Тот же CL, при том, что он весь на себе же, нихрена не простой; а весьма простой Scheme за пределами кампусов никто не использует.

> Во-вторых, весьма универсален. Может быть есть такие задачи, решать которые на другом наречии было бы проще или результат получался бы лучше, но для лиспа круг задач, которые можно было бы решать с приемлемым качеством и за более чем приемлемое время, ИМХО наиболее широк.

Эээ. Про C++ или Java можно сказать то же самое теми же словами. "Можно сделать что угодно, ну и что, что перректально" - это не аргумент.

> В третьих, весьма читабелен. Вместо зверинца из всяких разнообразных : ; {} () :: . -> = используется (), и только там, где логически необходимо выделить определённую последовательность, из-за чего как число служебных элементов, требуемых синтаксисом языка а не описанием логики, так и их ассортимент, сведены к минимуму.

Это дело вкуса. Имхо, как раз наоборот, синтаксическая бедность затрудняет чтение. После Perl или C++ смотреть в прогу на CL - как читать по-русски без знаков препинания и заглавных букв. Для метопрограммирования это плюс, но оно всегда будет уделом подавляющего меньшинства, которое пишет библиотеки и трансляторы.

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

И какие же абстрактные структуры данных нельзя сформулировать на C++ или Python? Ну, в плюсах синтаксис корявый - но и только; ну бедт треугольных скобочек столько же, сколько в лиспе прямых ;)

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