Зачем обычному программисту знать языки, на которых...
-
Upload
yaevents -
Category
Technology
-
view
10.987 -
download
5
description
Transcript of Зачем обычному программисту знать языки, на которых...
YaC, Москва, 19 сентября 2011 года
разработчик-экспертАлексей Воинов
Зачем изучать языки,на которых почти не пишут
clojure(def N (atom 0))(defn foo [] (dotimes [i 100000] (swap! N inc)))(defn start-threads [] (let [t1 (Thread. foo) t2 (Thread. foo)] (do (.start t1) (.start t2) (.join t1) (.join t2))))
(defn main [] (start-threads) @N)
11
gambit-c(define fifo (open-vector))
(define (suspend-and-die!) (call-with-current-continuation (lambda (k) (write (call-with-output-string '() (lambda (p) (output-port-readtable-set! p (readtable-sharing-allowed?-set (output-port-readtable p) 'serialize)) (write obj p))) fifo) (newline fifo) (force-output fifo) (thread-terminate! (current-thread)))))
(scheme)
13
whitespace ......».».$...»».»»»»$...»».»»..$...»».»»..$...»»..».»$...»..»...$»$..»$..»$..»$..»$..»$..$$$ 14
(define (factorial n) (letrec ((helper (lambda (n a) (if (<= n 1) a (helper (- n 1) (* a n)))))) (helper n 1)))
Первый взгляд
17
(define (factorial n) (letrec ((helper (lambda (n a) (if (<= n 1) a (helper (- n 1) (* a n)))))) (helper n 1)))
Что видят лисперы
18
С + Assembly
printf("%d\n", (int *)2 + 3));
movl $2, %eax addl $12, %eax movl %eax, 4(%esp) movl $.LC0, (%esp) call printf
19
С++ / Scheme
std::for_each(str.begin(), str.end(), phx::if_(phx::bind(std::isalpha<char>, _1, phx::construct<std::locale>())) [ phx::let(_a = phx::ref(char_counts)[_1]) [ ++_a ] ]);
22
Scheme + Erlang
(let ((me (self))) (spawn (lambda () (! me "Hello, world!"))))
(?)
= Termite
Hello, world!
27
…?key=value&...
string::size_type s = 0;string::size_type e = src.find("=");while(e != string::npos) { string::size_type a = src.find("&"); if(a != string::npos) { ...
28
…?key=value&...
typedef iterator_range<string::iterator> Ir;std::vector<Ir> params;split(params, make_iterator_range(src.begin(), src.end()), _1 == '&');BOOST_FOREACH(Ir& ir, params) { ...
29
Зачем учить?Спокойный сонБольше информацииТренировка умаХорошие решенияЧистый кодПризнание и авторитет
40