LINUX.ORG.RU

Lisp завтрашнего дня это Clojure

 , , ,


0

0

Daniel Weinreb, "один из пяти" авторов книги Common Lisp: The Language, высказал свой прогноз относительно развития своего любимого инструмента. Он считает, что в будущем диалект Clojure вытеснит Common Lisp

>>> Подробности

★★★★★

Проверено: maxcom ()
Ответ на: комментарий от bookvik

>люблю "лисп", как люблю сладкий торт, птичье молоко, жену, жареную картошку -- то есть всем сердцем. Пофигу мне на все это будущее, я не написал ничего коммерческого на лисп. Clojure для меня -- это подмена. В нем слишком много квадратов.

+500, всё выразил!

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

>сколько людей пользуется твоими программами?

Сперва добейся, да? ну-ну...

>П.С. вопрос снят

Бгы...

ЗЫ ты ж понимаешь, что лезешь со своими крестами туда, куда не следует. Темка про кложур. Опсуждают лиспы. Ты-то чего приперся? И главное о Лиспе ты ровным счетом не знаешь ничего. В крестах я тоже уверен, что плаваешь. Однако свое категоричное мнение имеешь.

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

> Сперва добейся, да? ну-ну...

причем тут это - я утверждал и буду утверждать, что вся "красота" Лиспа и реальность - разные вещи, наглядный пример - mv, который испугался решить простую задачу

> ЗЫ ты ж понимаешь, что лезешь со своими крестами туда, куда не следует


тебя не спросили

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

> У тебя комплекс неполноценности?

и откуда у людей привычка свои комплексы на других перевешивать, я всего лишь хотел сказать, что программы на Lisp никому не нужны( кроме емаксеров - но то уже клиника )

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

> и откуда у людей привычка свои комплексы на других перевешивать

У меня нет комплекса неполноценности. Зато вот ты постоянно пытаешься других в дерьме потопить, рука всё время дёргается за линейкой-членоизмерялкой и т.п.

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

> У меня нет комплекса неполноценности. Зато вот ты постоянно пытаешься других в дерьме потопить, рука всё время дёргается за линейкой-членоизмерялкой и т.п.

по другому тут просто скучно

lester ★★★★
()

>и откуда у людей привычка свои комплексы на других перевешивать, я всего лишь хотел сказать, что программы на Lisp никому не нужны( кроме емаксеров - но то уже клиника )

Фигасе. На лисп-планет частенько можно видеть лисп-вакансии. Спрос есть. Но конечно же он не такой большой как на PHP к примеру.

kristall ★★
()

понимаешь, программу на крестах можно почти строчка в строчку переписать на лисп. Обратное же совсем несправедливо.

>я утверждал и буду утверждать, что вся "красота" Лиспа и реальность - разные вещи

Ты не знаешь лисп. От куда такая уверенность? Из-за того, что mv отказался решать твою задачу? Заметь после того, как ты не решил его, а обещал.

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

>> сколько людей пользуется твоими программами? >У тебя комплекс неполноценности?

А чем ещё быдлокодеру "гордиться"?:)

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

>я всего лишь хотел сказать, что программы на Lisp никому не нужны( кроме емаксеров - но то уже клиника )

"Классическая музыка никому не нужна - Дима Билан рулит!"

С тобой всё ясно:)

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

> Фигасе. На лисп-планет частенько можно видеть лисп-вакансии. Спрос есть

http://planet.lisp.org - оно? где тут вакансии?

П.С. дизайн сайта ужасен, также как и идея вывалить десятки страниц текста на титульной

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

> Ты не знаешь лисп. От куда такая уверенность? Из-за того, что mv отказался решать твою задачу? Заметь после того, как ты не решил его, а обещал.

пруфлинк

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

>я всего лишь хотел сказать, что программы на Lisp никому не нужны( кроме емаксеров - но то уже клиника )
> "Классическая музыка никому не нужна - Дима Билан рулит!"

> С тобой всё ясно:)


классическая музыка много кому нужна, а попса - такая же мода как и Лисп ;)

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

>На лисп-планет частенько можно видеть лисп-вакансии. Спрос есть. Но конечно же он не такой большой как на PHP к примеру.

сегодня узнал интересный факт: наиболее продаваемые в мире вещи 1) масло, 2) "любовь".

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

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

>классическая музыка много кому нужна, а попса - такая же мода как и Лисп ;)

жалко выглядит... придумай что-нибудь ещё

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

> А чем ещё быдлокодеру "гордиться"?:)

у меня свой единственный долгосрочный проект - так что fail, и научитесь читать - я спросил про Lisp, по вашей логике, когда твоя программа кому-то пригодилась - это быдлокодерство, а лисперы - Ъ, потому-что их программы никому не надо?

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

> жалко выглядит... придумай что-нибудь ещё

да нет - сейчас твоя очередь

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

> Ну не совсем, но с натяжкой... =) Ну и + понятно, что если либы нет, то никуда не денешься =)

лисперы такое УГ... постоянно кричат, что C/C++ говно, но без него ничего не могут

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

>> Ты не знаешь лисп. От куда такая уверенность? Из-за того, что mv отказался решать твою задачу? Заметь после того, как ты не решил его, а обещал.

>пруфлинк

Ты нихрена не знаешь о лисп потому, что:

>>макросы

>я что-то упустил? макросы и шаблоны в С++ не подходят?

Далее в темке ты пишешь:

lester> предлагаю одну задачу на выбор ЛОР'ев

mv> Задача: есть орбитальный комплекс ...

lester> сейчас топик создам с предложением написать задание

Но решения твоего никто так и не видел... угу..

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

> Ты нихрена не знаешь о лисп потому, что:

я не о том спрашивал

> Но решения твоего никто так и не видел... угу..


лисперы все такие тупые, или мне так "везет"? еще раз - нужно было задание, в результате сошлись на том, что задания мы с jtootf придумываем сами

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

>лисперы все такие тупые, или мне так "везет"? еще раз - нужно было задание, в результате сошлись на том, что задания мы с jtootf придумываем сами

Ну и скажи, кто это сошлись? Вот твоя темка:

http://www.linux.org.ru/view-message.jsp?msgid=3855459

Почитай, что-ли. mv дал задачу. Ты сперва начал съезжать с неё. Какие-то опенсорсные проекты патчить собрался. (Интересно, как ты хотел показывать, чем язык А лучше языка Б, на примере патчинга проги на языке Б? =)

Потом почему-то посчитал, что "все" решили, мол надо новую задачу. И родил свое унылое нечто.

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

>>> программу на крестах можно почти строчка в строчку переписать на лисп

>>Пруфлинк или GTFO.

> Ну не совсем, но с натяжкой... =)

С натяжкой можно и программу на Лиспе переписать на Си++.

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

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

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

> Ходил по ссылке, результатов не нашел, вернулся. Где табличко?

У тебя в консоли. Запускаешь окамловский вариант, потом лисповый, радуешься.

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

>> Ходил по ссылке, результатов не нашел, вернулся. Где табличко?

> У тебя в консоли. Запускаешь окамловский вариант, потом лисповый, радуешься.

Если вкратце, то вот так:

$ time ./ray > 1.pgm

real    0m3.913s
user    0m3.874s
sys     0m0.013s

$ sbcl --load ray.lisp  --eval '(time (main 9 "image.pgm" 512))' --eval '(quit)'

Evaluation took:
  4.090 seconds of real time
  4.037387 seconds of total run time (3.990394 user, 0.046993 system)
  [ Run times consist of 0.159 seconds GC time, and 3.879 seconds non-GC time. ]
  98.70% CPU
  8,973,724,122 processor cycles
  462,330,704 bytes consed

mv ★★★★★
()

И это новость? Где Daniel Weinreb комментарует запись в блоге? Вы уже совсем приехали? :-)

smh ★★★
()

Эпичный срач такой эпичный... Я когда-то лиспу учился. Люблю его нежно, всем сердцем, хотя он моей профессией так и не стал.

<troll color="green" width="9000">LISP завтрашнего дня это python вчерашнего. </troll>

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

> И это новость? Где Daniel Weinreb комментарует запись в блоге? Вы уже совсем приехали? :-)

Народ мечтает повторить "фразу о лиспе"!

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

$ g++ -O3 -ffast-math ray.cpp -o ray
$ time ./ray 9 512 > image.pgm

real    0m3.755s
user    0m3.740s
sys     0m0.012s

$ sbcl --noinform --eval '(load "ray.fasl")' --eval '(time (main 9 "image.pgm" 512))' --eval '(quit)'

Evaluation took:
  5.266 seconds of real time
  5.265199 seconds of total run time (5.238203 user, 0.026996 system)
  [ Run times consist of 0.131 seconds GC time, and 5.135 seconds non-GC time. ]
  99.98% CPU
  15,878,622,320 processor cycles
  222,493,520 bytes consed

Впечатляет. CL медленее C++ на моём компьютере _всего_ в 1.5 раза.

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

Вдогонку любителям камла:
$ ocaml -version
The Objective Caml toplevel, version 3.11.0

$ ocamlopt -rectypes -inline 100 -ffast-math ray.ml -o ray
$ ocamlopt -rectypes -inline 100 ray.ml -o ray
$ time ./run > image.pgm

real    0m7.048s
user    0m6.989s
sys     0m0.021s

p.s. я тут вспомнил, говорят что sbcl хорошо затюнен под x86_64, есть у кого возможность затестить там ray?

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

> понимаешь, программу на крестах можно почти строчка в строчку переписать на лисп. Обратное же совсем несправедливо.

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

Метапрограммирование в стиле лиспа без учета типов спокойно делается на той же яве под эклипсом/нетбинсом (там доступно AST). Для плюсов я (грязно конечно) делал подобные фенечки препроцессором (не стандартным, а перлом).

З.Ы. Как у лиспа с поддержкой компилятором аналогов с/с++ const/volatile?

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

> Обратное же совсем несправедливо.

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

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

>не думаю что elisp сильно от clisp отличается.

Немного, но все-таки отличается. По крайней мере перевод с одного на другое затратен. См., к примеру rlx.

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

> p.s. я тут вспомнил, говорят что sbcl хорошо затюнен под x86_64, есть у кого возможность затестить там ray?

У меня x86-64, результаты см. выше.

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

>понимаешь, программу на крестах можно почти строчка в строчку переписать на лисп.

Даже есди бы это и было так (а это ещё доказать надо), то очевидный фикс:

понимаешь, программу на лиспе можно почти строчка в строчку переписать на ассемблере.

И что, теперь ВНЕЗАПНО узнав это все побегут писать на ассемблере?

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

> программу на лиспе можно почти строчка в строчку переписать на ассемблере.
Ви таки увеrены в спrаведливости данного утвеrждения?

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

>Даже есди бы это и было так (а это ещё доказать надо)

Я в общем признаю, что не совсем. Но сделать из лиса этакий квазиСи++ можно. Обратное несправедливо.

>понимаешь, программу на лиспе можно почти строчка в строчку переписать на ассемблере.

А вот это уже нереально. Неизбежна реализация собственно самого лиспа =)

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

>Где Daniel Weinreb комментарует запись в блоге? Вы уже совсем приехали? :-)

"Руки прочь!"© Сам maxcom™ одобряе®, а это уже высокая оценка новости. :) А если бы RMS такой коммент сделал, ты бы не запостил такую новость? Уверен, запостил бы

Еще он тут http://www.newartisans.com/2009/03/hello-haskell-goodbye-lisp.html#comment-325 отметился Привожу для Ъ

<quote>

I’ve been using Lisp for 33 years, since I wrote system software for the Lisp Machine at MIT, and later as a co-founder of Symbolics. I’m using Common Lisp again now, as part of a big team writing a high-performance, highly-available, commercial airline reservation system, at ITA Software. Recently, I started learning Haskell. It’s fascinating and extremely impressive. It’s so different from the Lisp family that it’s extremely hard to see how they could converge. However, you can make a Lisp that is mostly-functional and gets many of the parallelism advantages you discuss. We now have one that I think is extremely promising, namely Rich Hickey’s Clojure.

If you want to program in Common Lisp, read Practical Common Lisp by Peter Seibel, without question the best book on learning Common Lisp ever written. For Haskell, I’ve been reading Real World Haskell by Bryan O’Sullivan et. al. It’s excellent and I highly recommend it.

All of the comments that I was going to make have been made very well already, particularly about the power of Lisp macros for language extension and making domain-specific languages.

Sam, above, wonders whether we’ll see reasonable macro systems for complex syntax. I presume he means macro systems that can match the power of Lisp’s macros. There is some progress being made in this area. At the International Lisp Conference next week, there will be an invited talk called “Genuine, full-power, hygienic macro system for a language with syntax”. This is by David Moon, my long-time colleague, who among many other things was one of the designers of Dylan. He has been inventing a new programming language, roughly along the lines of Dylan in some ways, and he’ll be talking about it for the first time. I’m pretty sure he does not claim to have brought the full power of Lisp macros to an infix-syntax language, but I think we’ll find out that it’s another important step in that direction.

By the way, the conference also features a tutorial called “Clojure in Depth”, by Rich Hickey himself, running five hours (in three parts), “The Great Macro Debate” about the virtues and vices of Lisp macros, and all kinds of other great stuff. We’ve closed online registration but you can still register at the door. It’s at MIT (Cambridge MA). See ilc09.org.

Clojure’s being written in terms of the JVM has an extremely important advantage: it lets the Lisp programmer access a huge range of libraries. Although there are a lot more great Common Lisp libraries than most people know about (we’ll be addressing this!), there’s no way Common Lisp can ever keep up with all the specialized libraries being developed for the JVM.

There are also two huge implementation advantages: Clojure’s implementation can ride on the excellent JIT compilers and the excellent garbage collectors of the various JVM implementations (have you tried out JRockit?) rather than having to do this work all over again.

Because your post showed so much depth of understanding, I was very interested to hear how you felt about Clojure. I don’t understand it, though.

It’s always been unclear to me precisely what people mean by “scripts” and “scripting languages” The terms are used widely, but with very different meanings. For example, to some people, it seems that a “scripting language” is one with dynamic typing!

As far as I’m concerned, nobody has a broader and deeper knowledge of computer languages than Guy Steele. (I can back up that claim, if anyone wants me to.) So I asked him, and here’s what he said:

“By me, the term ‘scripting language’ is not intrinsic, but extrinsic: it describes the context and application for the language. That context is typically some large mechanism or collection of facilities or operations that may usefully be used one after another, or in combination with one another, to achieve some larger operation or effect. A scripting language provides the means to glue the individual operations together to make one big compound operation, which is typically carried out by an interpreter that simply ‘follows the script’ a step at a time. Typically scripting languages will need to provide at least sequencing, conditional choice, and repetition; perhaps also parallelism, abstraction, and naming. Anything beyond that is gravy, which is why you can put a rudimentary scripting language together quickly.”

Steele’s answer seems in line with John Hennessey’s explanation of what Tcl was meant for. The idea is that you have two languages. At the lower level, you have something like C: suitable for writing programs that are very fast and work with the operating system, but hard to use for anyone but a professional. At the higher level, you have something like Tcl, which is easy to learn and use and very flexible, and which can easily invoke functionality at the lower level. The higher level acts as “glue” for the lower level. Another example like this is Visual Basic, and the way that you can write C programs that fit into VB’s framework.

In my own opinion, this kind of dichotomy isn’t needed in Lisp, where the same language is perfectly suitable for both levels. Common Lisp, as it is used in practice, is not so dynamic that it cannot be compiled into excellent code, but is easy to write for the kind of simple purposes to which Tcl is typically put. (Particularly for inexperienced programmers who are not already wedded to a C/C++/Java-style surface syntax.)

In your own case, you mention “tiny” and “fast-running” executables. I am not sure why “tiny” matters these days: disk space is very cheap, and the byte code used by the JVM is compact. Common Lisp programs compiled with one of the major implementations, and programs written for the Java Virtual Machine, execute at very high speed.

The fact that you distinguish between server-side and client-side applications suggests to me that what you’re really talking about is start-up latency: you’re saying that a very small program written for the JVM nevertheless has a significant fixed overhead that causes perceived latency to the user. Is that what you have in mind?

The last time this question came up, I did my own very quick and dirty test. I tried running a simple program in Clozure Common Lisp, from the command line, and I saw about 40ms of start-up latency on a not-particularly-fast desktop running an old Linux release. A trivial Python program took about 7ms. That’s better, but 40ms is not very noticeable. (I suppose if you’re writing a long command line piping together many “scripts” or running them in a loop, it would start to add up.)

As a hypothetical question just to clarify your meaning: if there were a JVM implementation that started up instantly, so that the speed of execution of a small program would be the same as the speed of the same code appearing in the middle of a long-running server process, would that answer your objections? </quote>

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

>Ви таки увеrены в спrаведливости данного утвеrждения?

Для каждой целевой платформы - да.

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

>Но сделать из лиса этакий квазиСи++ можно.

С той же эффективностью? А то x86 вон на джаве написали - все языки теперь можно в джаву транслировать таким образом.

>Я в общем признаю, что не совсем. Но сделать из лиса этакий квазиСи++ можно. Обратное несправедливо.

Я не понимаю, вы считаете это достоинством?

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

>Я не понимаю, вы считаете это достоинством?

То, что из лиспа можно вылепить все что душе угодно - да, достоинство.

>С той же эффективностью?

Скорость далеко не всегда важна. Скорее даже важна лишь в очень исключительных случаях. Удобство и гибкость приоритетней.

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

>Скорость далеко не всегда важна.

Ну, это то не многое, что может привлеч к С++. Так что такие да.

>То, что из лиспа можно вылепить все что душе угодно - да, достоинство.

Только вот читабельно будет только роботам.

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

>Ну, это то не многое, что может привлеч к С++. Так что такие да.

Те небольшие части, что должны работать быстро, скорее всего ленко пишутся на Си. А вот сложную логику программы на Си++ все-равно неудобно писать.

>Только вот читабельно будет только роботам.

Вызывающе неверная информация. Лепить из лиспа квазиСи++ - да плохая идея. Но в лиспе легко оперировать абстракциями, порожденными непосредственно задачей, а не языком.

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