|
|
|
Канал Игры Мечты: «Common Lisp» |
|
|
Zachesa
151 EGP
  Рейтинг канала: 4(95) Репутация: 13 Сообщения: 1420 Откуда: Хабаровск Зарегистрирован: 12.11.2007
 |
|
Есть такой язык программирования, который, несмотря на славную историю, незаслуженно обходят вниманием как в школе так и в институтах.
Читаем перевод хорошей книги по Лиспу. http://lisper.ru/pcl/
Ставим ЛиспКабинет. http://lispcabinet.sourceforge.net/ Советую устанавливать реализацию SBCL. Впрочем, может кому будет интересна Clojure на JVM. Установщик позволяет закачать и использовать сразу несколько реализаций.
В состав ЛиспКабинета входит Emacs и Slime, образующие удобную среду программирования для Лиспа, достаточно выучить несколько комбинаций клавиш и можно вполне комфортно работать.
Далее вместе изучаем Common Lisp.
_________________ Язык Образов, для ситуационного моделирования, программирования и как язык мысли, думающей машины. |
|
|
Magistr_AVSH
605 EGP
     Рейтинг канала: 2(16) Репутация: 119 Сообщения: 2705 Откуда: Росс 154 - планета Мерлин. Зарегистрирован: 26.12.2009
 |
|
Zachesa : |
Далее вместе изучаем Common Lisp.
|
Зачем?
_________________ Добрый и сытый кот. |
|
|
Тир-Азан-Гил
240 EGP
   Репутация: 27 Сообщения: 1178 Заблокирован Откуда: UMMM/UMMS Зарегистрирован: 27.11.2005
 |
|
Just for Fun (C) Linus Torvalds
_________________ Good bye, everybody.
I've got to go...(C) |
|
|
pommaniulo
61 EGP
 Репутация: -10 Сообщения: 40
Зарегистрирован: 12.07.2011
 |
|
В универе так и не понял что это за Lisp и зачем это нужно.
Нет, оно понятно было конечно, что функциональный язык, но эти СКОБКИ!..
Книжку читал из любопытства, чтобы восполнить пробелы универа. Рекомендую.
Больше всего понравилось, как автор предлагает ставить скобки.
Я теперь в с++ так же их расставляю. Если бы в университете ктонить бы показал этот замечательный способ, скорее всего лисп бы я смотрел не так поверхностно (сдал лабу и забыл. При этом почти все писали в привычном процедурном стиле.)
|
|
|
Zachesa
151 EGP
  Рейтинг канала: 4(95) Репутация: 13 Сообщения: 1420 Откуда: Хабаровск Зарегистрирован: 12.11.2007
 |
|
Лисп -- мультипарадигменный язык программирования, как C#, к примеру. Поэтому можно писать код как в функциональном так и императивном стиле. ООП также поддерживается.
Скобок и правду много, но в редакторе парные скобки подсвечиваются и не запутаешься. Главная особенность такого синтаксиса однообразие представления кода и данных, для метапрограммирования очень полезное свойство.
_________________ Язык Образов, для ситуационного моделирования, программирования и как язык мысли, думающей машины. |
|
|
Варсик
545 EGP
    Рейтинг канала: 4(81) Репутация: 117 Сообщения: 4041 Откуда: Москва Зарегистрирован: 22.12.2002
 |
|
Zachesa : |
Главная особенность такого синтаксиса однообразие представления кода и данных
|
Он в любом unmanaged языке такой. На этом построен перехват АПИ, допустим.
_________________ WARNING: By reading this post you accept that this post is genius. |
|
|
Аксолотль
87 EGP
 Рейтинг канала: 1(6) Репутация: 21 Сообщения: 278 Откуда: Мир Зарегистрирован: 11.08.2008
 |
|
Здесь скорее имеется в виду более высокоуровневый смысл — код есть то же самое, что данные и подобно данным может быть сгенерирован или отредактирован программой, потому на лиспе легче писать программы, которые пишут программы, которые пишут программы, которые… (et cetera ). Достигается оно тем, что у лиспа, на самом деле, нет синтаксиса — фактически ты программируешь на чистых AST’ах (на самом деле, синтаксис собирались прикрутить ещё на начальных этапах, но когда таки собрались, все уже привыкли тому, что был).
Это даёт языку невиданную гибкость и расширяемость и очень удобно для написания всяких DSL’ей — тот же стандартный коммонлисповый LOOP с кучей параметров и красивым (спорно, да) алголоподобным синтаксисом реализован именно в виде лиспового макро:
Код: |
;;; Проходимся по хеш таблице, собирая в список имена ключей, значения которых —
;;; нечётные числа
;;; (не представляю, для чего кому-то это может понадобиться, но~)
(loop for key being each hash-key of *table* using (hash-value val)
when (and (numberp val) (oddp val)) collect key) |
На макросах в лиспе реализованы также все остальные варианты лупов, обёртки для работы с внешними ресурсами (вроде файлов или сокетов), обработка исключений и даже ООП, довольно своеобразное, но красивое — создатели Go, видимо, довольно таки сильно смотрели в его сторону при проектировке своего языка.
По-моему Лисп — хороший язык для быстрого прототипирования, скриптинга и всяких бэкендов, но не столь гож для отдельных приложений и, в частности, игрушек — современные имплементации (кроме, разве что, ECL, компилирующего в Си, у которого хватает своих проблем) не способны создать стэнд-элоновый экзешник без пакования внутрь него ~девяностамегабайтного образа памяти со своим рантаймом и всеми прибинденными дээлэлками, да и из действительно рабочих и поддерживаемых игровых библиотек, которые можно всерьёз использовать есть разве что „cl-opengl“.
Ещё это хороший язык для того, чтоб начать программировать: когда начинаешь с языка, не слишком обременённого синтаксисом, приучиваешься больше обращать внимание на семантику, понимать то, как оно всё работает, что в будущем позволяет ускорить знакомство с другими языками. Я сам, пусть сейчас по большей части пишу на Си, начинал с Лиспа, и довольно таки не жалуюсь, ибо вполне могу при необходимости с той же эффективностью писать на D, OCaml’е или джаве.
Уже написав эту простыню, я посмотрел на дату последнего сообщения в теме. Вупс , надеюсь это не сочтут археологией
_________________ „Меня зовут Мэйлинь, я китаянка.“ |
|
|
Zachesa
151 EGP
  Рейтинг канала: 4(95) Репутация: 13 Сообщения: 1420 Откуда: Хабаровск Зарегистрирован: 12.11.2007
 |
|
Аксолотль : |
не столь гож для отдельных приложений и, в частности, игрушек — современные имплементации не способны создать стэнд-элоновый экзешник без пакования внутрь него ~девяностамегабайтного образа памяти со своим рантаймом и всеми прибинденными дээлэлками
|
вот есть платный вариант Bee Lisp вроде бы не страдающий этим.
добавлено спустя 18 минут:
Вообще-то меня Common Lisp заинтересовал в качестве языка для сервера. Можно веб приложения на нём делать и прочее помаленьку. http://rigidus.ru/articles/restas
_________________ Язык Образов, для ситуационного моделирования, программирования и как язык мысли, думающей машины.
Последний раз редактировалось: Zachesa (10:41 16-06-2013), всего редактировалось 1 раз |
|
|
Aerton
70 EGP
 Рейтинг канала: 1(8) Репутация: 4 Сообщения: 67 Откуда: Новосибирск Зарегистрирован: 20.08.2004
 |
|
Аксолотль : |
Лисп — хороший язык для быстрого прототипирования, скриптинга и всяких бэкендов, но не столь гож для отдельных приложений и, в частности, игрушек
|
http://en.wikipedia.org/wiki/Game_Oriented_Assembly_Lisp но, к сожалению, это единственный такой пример.
Никакого "девяностамегабайтного образа памяти" на консоли с 32Mb ОЗУ быть не могло.
|
|
|
Sh.Tac.
151 EGP
  Рейтинг канала: 5(108) Репутация: 14 Сообщения: 1426
Зарегистрирован: 27.07.2005
 |
|
ИМХО если хочется экзотики, то лучче взять какой-нибудь современный язык, благо их расплодилось большое количество, мне вот случайно попалась книга по Go
_________________ This is what you get ...
(c) Radiohead |
|
|
|
|
|
Канал Игры Мечты: «Common Lisp» |
|