thedeemon: (Default)
[personal profile] thedeemon
Питер Норвиг зачем-то написал на Питоне интерпретатор небольшого подмножества Схемы в 90 строк кода. Дабы слегка посрамить этот гадкий питон, я перевел Норвиговский интерпретатор на Руби и заодно добавил туда поддержку продолжений, важной фичи Схемы, которую в питоний интепретатор должно быть вставить заметно сложнее. Такой вот пример
(begin
 (define fact (lambda (n) 
  (if (<= n 1) 1 (* n (fact (- n 1))))))
 
 (define f (lambda (return)
   (begin
    (return 2)
    1)))

 (display (f (lambda (x) x)))
 (display (callcc f))
 (fact 5)
)

выдает 1, 2, 120. Здесь return - не конструкция языка, а имя переменной, получающей текущее продолжение.
Выложил здесь.

Получилось всего 60 строк. Let the срачь begin! ;)

Date: 2010-10-06 04:44 am (UTC)
From: [identity profile] thedeemon.livejournal.com
Да, классический интерпретатор Руби (1.8) довольно тормозной. Сейчас есть 1.9, там новый движок, он пошустрее, но, например, тех же продолжений там уже нет. Есть еще jruby, совместимый с 1.8, он по скорости как Перл и РНР, т.е. пошустрее обычного Руби, но все еще медленнее Питона.

В любом случае, я считаю, что вопрос скорости в сравнении Руби и Питона не имеет значения, т.к. там где вообще встает вопрос скорости им обоим не место. Хороший пример:
http://users.livejournal.com/_winnie/254903.html

Книги:
Классика жанра - Programming Ruby из серии Pragmatic Programmers, автор Dave Thomas. К ней можно добавить Ruby Cookbook by Lucas Carlson, Leonard Richardson. В принципе, достаточно начать первую, поставить себе ruby и запустить fxri - это repl с интерактивной документацией по всем классам и методам, незаменимая вещь, которой так не хватает очень многим другим языкам.
Есть еще знаменитая сумасшедшая книжка why's poignant guide to ruby, но я ее не смог читать, количество шизы сильно превысило количество полезной информации. :) Но посмотреть на нее определенно стоит, это культурный артефакт.

Profile

thedeemon: (Default)
Dmitry Popov

December 2025

S M T W T F S
 12 3456
789101112 13
14151617181920
21222324252627
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 29th, 2026 04:44 am
Powered by Dreamwidth Studios