Самые редкие профессии на рынке труда по итогам 2013 г.
№ Позиция Количество вакансий в России (шт.)
1 Lisp-программист 0
4 Haskell-программист 2
5 IT-евангелист 2
http://vk.com/topic-1111_29782781
LISP▼
Небольшой свод правил.
Запрещено:
1) Мат;
2) Сочувствие, поддержка, и всё что связано с геями.
Нежелательно:
1) Заувалированый мат;
2) оскорбления прямым текстом.
Не преветствуется:
1) холливар на тему лиспов.
Интересная нынче лиспошколота.
Теперь заживем:
/Yalo is a Lisp OS running on bare metal x86-64 hardware. The system programming language is Ink, a new Lisp dialect which combines the elegance of Scheme and powerfulness of Common Lisp/
Вот, думаю начать младшего брата постепенно учить программированию. Решил начать со схемы (заодно и сам поучу), поставил Racket. Изначально думал взять SICP (который я уже прочёл и знаю, что он крут), но на сайте Racket увидел рекоммендацию взять "How to Design Programs, Second Edition". Решил пока что с неё и начать, но что-то мне подсказало, что на английском будет учить крайне сложно, и всё-таки лучше начать учить по-русски.
Собственно, вопросы:
1. что делать?
2. есть ли "How to Design Programs" на русском?
3. насколько сумасшедшей считается идея попробовать перевести эту книгу на русский постепенно?
Спасибо!
О, очередной пылкий вьюноша со «скобочным вебом»!
Ну, попробуй реализуй скобочный веб, чо. Только сперва тебе придется написать свой валидирующий pull-парсер для S-выражений. Стандартный лисповый ридер не вернет AST, пока не распарсит все до последней скобки, а в вебе надо начинать интерпретировать по возможности сразу же.
Затем ты напишешь разборщик и валидатор своих DSL-аналогов HTML и CSS и начнешь реализовывать рендерер. В этот момент обнаружится, что для лиспа нет качественных биндингов к современным GUI-тулкитам. Сперва ты возьмешься за cffi-cairo и cl-cairo2, но выяснится, что они заточены под старые версии Cairo и не работают.
Ты станешь допиливать Cairo-биндинги, но однажды решишь, что Cairo семантически чужд лисп-парадигме и возьмешься писать свою кросс-платформенную библиотеку для поддержки высокопроизводительной векторной графики. Затем ты реализуешь аналог протокола HTTP, только на S-выражениях (назовем его SXTP), потому что HTTP с его убогими URL'ами и методами семантически чужд лисп-парадигме.
После этого встанет вопрос о написании веб-сервера, поддерживающего SXTP. Попутно ты напишешь template engine, аналоги XPath, XSLT, а также ORM и MVC-фреймворк. В этот момент выяснится, что традиционные SQL-базы данных семантически чужды лисп-парадигме, и ты начнешь разрабатывать собственную лисп-ориентированную БД.
В этот момент ты поймешь, что Common Lisp перегружен и недостаточно выразителен, его стандарт раздут, а макросы негигиеничны; что Scheme слишком минималистична и академична; что остальные диалекты лиспа либо маргинальны, либо требуют .NET/JVM. Тут тебе в голову придет идея создать собственный лисп. Ты потратишь несколько лет на разработку стандарта, реализацию языка и переписывание всего вышеперечисленного на твоем новом языке. После этого окажется, что все ужасно тормозит. И это, разумеется, исключительно по той причине, что операционные системы стандарта POSIX семантически чужды лисп-парадигме. Ты начнешь разрабатывать LISP OS.
В процессе разработки выяснится, что эффективная LISP OS для x86/ARM/MIPS не может быть создана в принципе, так как их семантика чужда лисп-парадигме. Ты возьмешься за изучение System C, Verilog, VHDL и в один прекрасный день создашь лисп-машину на FPGA.
В этот момент мозаика чудесным образом сложится. У тебя будут лисп-машина, лисп-OS, лисп-сервер и лисп-браузер. Ты восторженно оглянешься вокруг, и обнаружишь, что половина человечества уже переселилась на Gliese 581, а оставшаяся половина забыла про HTML/CSS/etc., как про страшный сон, и давно пользуется квантовыми компьютерами и квантовыми сетями. Но все это уже будет не важно. У тебя ведь будет лисп-браузер и полноценная замена HTML/CSS на S-выражениях.
Да и жить тебе останется не так и долго, потому что к этому моменту ты уже будешь дряхлым стариком.
Какой умалишенный будет делать сайт на CL или clojure с полурабочими либами, когда есть похапы, руби и ASP.NET?
Не понимаю это быдлофанатсво, хотя сам лиспоблядь.
http://2ch.hk/pr/src/1374324172759.jpg
кагбе вся сущность
Fear of Macros.
Неплохой туториал по макросам.
Кто принимает участие -> http://lispinsummerprojects.org/ ?
Хочу начать костылять интерпретатор elisp на racket.
Дальше в планах - реализация недоемакса.
Чят, отговори.
General Parser Combinators in Racket
https://github.com/epsil/gll
На лоре спросили:
/можно ли написать на Racket такую функцию, чтобы внутри неё (в её динамическом окружении) делений на 0 возвращало 0, а не прерывало вычисления/
Короче, да:
(define-syntax-rule (try-or-zero body ...)
(let/cc k (with-handlers ([exn? (λ _ (k 0))])
body ...)))
(define (testl l)
(if (null? l)
'()
(cons (try-or-zero (/ 1 (car l)))
(testl (cdr l)))))
(testl '(1 2 3 0 5))
мемоизация на ракете.
nothing special.
; replace define with a memoized version
(define-syntax define-memoized
(syntax-rules ()
[(_ (f args ...) bodies ...)
(define f
; store the cache as a hash of args => result
(let ([results (make-hash)])
; need to do this to capture both the names and the values
(lambda (args ...)
((lambda vals
; if we haven't calculated it before, do so now
(when (not (hash-has-key? results vals))
(hash-set! results vals (begin bodies ...)))
; return the cached result
(hash-ref results vals))
args ...))))]))
; example, fibonacci with memoization
(define-memoized (mfib n)
(cond
[(< n 1) 1]
[else (+ (mfib (- n 1)) (mfib (- n 2)))]))