Lispy and Rispy
Oct. 5th, 2010 01:40 amПитер Норвиг зачем-то написал на Питоне интерпретатор небольшого подмножества Схемы в 90 строк кода. Дабы слегка посрамить этот гадкий питон, я перевел Норвиговский интерпретатор на Руби и заодно добавил туда поддержку продолжений, важной фичи Схемы, которую в питоний интепретатор должно быть вставить заметно сложнее. Такой вот пример
выдает 1, 2, 120. Здесь return - не конструкция языка, а имя переменной, получающей текущее продолжение.
Выложил здесь.
Получилось всего 60 строк. Let the срачь begin! ;)
(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! ;)
no subject
Date: 2010-10-04 08:19 pm (UTC)no subject
Date: 2010-10-04 10:10 pm (UTC)no subject
Date: 2010-10-05 02:21 am (UTC)no subject
Date: 2010-10-06 02:09 am (UTC)Когда-то давно админы его патчили под свои нужды хостинга. Возможно, там еще та патченная версия, а может уже другая, просто давно не обновлявшаяся.
И почему это питон гадкий?
Так вышло, что с Руби я познакомился раньше, и на его фоне Питон выглядит ограниченным неконсистентным набором хаков. В объектно-ориентированном языке длина строки это s.length, а не length(s), отсортированный массив это a.sort, а не sorted(a). Еще эти вездесущие __подчеркивания. И синтаксис завязанный на отступы, причем даже это сделано наихудшим образом (сравни с Haskell). И фиговые лямбды.
Руби, на мой взгляд, намного более красивый и консистентный язык. С очень гибким синтаксисом (хорошо для DSLей), хорошим ООП и метапрограммированием.
no subject
Date: 2010-10-06 04:44 am (UTC)В любом случае, я считаю, что вопрос скорости в сравнении Руби и Питона не имеет значения, т.к. там где вообще встает вопрос скорости им обоим не место. Хороший пример:
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, но я ее не смог читать, количество шизы сильно превысило количество полезной информации. :) Но посмотреть на нее определенно стоит, это культурный артефакт.
no subject
Date: 2014-12-08 07:43 pm (UTC)no subject
Date: 2011-03-10 09:46 am (UTC)Это что-ли? http://pastebin.com/EMb7sQe0
no subject
Date: 2011-03-10 10:37 am (UTC)no subject
Date: 2011-03-10 09:50 am (UTC)Питоновский исходник даже не соответствует http://www.python.org/dev/peps/pep-0008/
no subject
Date: 2011-03-10 10:37 am (UTC)Совершенно верно.