Найти - Пользователи
Полная версия: MIT переходит со Scheme на Python
Начало » Флейм » MIT переходит со Scheme на Python
1 2 3
Dmitrey
Massachusetts Institute of Technology, провідний технічний ВНЗ США, починає використовувати Python замість Scheme
лінк
коментарі
balu
1) Сассман ничего не говорил о том, что новая программа сможет охватить все то, что охватывала старая. Например, питон не умеет продолжений (continuations), нет вменяемых анонимных функций, нет поддержки хвостовой рекурсии. Я не знаю, как они заменят scheme.
2) Питон уже используется в МИТ на курсе робототехники, о чем Сассман и упомянул.
3) И еще - основной посыл SICP, что можно сделать много используя минимум базовых примитивов. Как сюда ложится питон я не очень представляю.

И наконец. ЛИСП - концептуальнейшая вещь, без которой никак в Computer Science. Так что никуда он из MIT не денется. И в любом сколько-нибудь приличном ВУЗ-е ЛИСП преподавать будут. А все-таки жаль, что 6.001 уходит от нас.
cybergrind
ыыы….
продолжения - хм… а что, yield не подходит?
хвостовая рекурсия - опять же генераторы творят чудеса (но конечноэто уже не хвостовая рекурсия, но, как минимум замена)
нету крутых лямбд - ну и что, можно делать не анонимные + самое главное это наличие замыканий, а они есть.

Я конечно не спрорю, лисп классная штука, но на нем нельзя сделать чегото принципиально невозможного на питоне, другое дело сколько придется переписывать и на сколько разрастется код. Это я к тому, то бывают ограничения, которые делают невозможным использование какого-либо языка (ну там например: синтаксис основанный на скобках).

Но это все мое личное мнение.
balu
cybergrind
продолжения - хм… а что, yield не подходит?
Подходит. Не подумал.
cybergrind
хвостовая рекурсия
генераторы это уловка вместо прямого решения.
cybergrind
нету крутых лямбд - ну и что, можно делать не анонимные
Можно, но веселее с лямбдами. Я их очень много использую и хотелось бы нормальных а не того обрубка, который есть. Люблю, знаете-ли, прямые решения.

cybergrind
но на нем нельзя сделать чегото принципиально невозможного на питоне,
Макросов хочу, без них сложно язык под свои нужды подганять. Опять же в ЛИСПе все напрямую в АСТ пишется, что самое то для всяких eDSL.
PooH
balu
Макросов хочу, без них сложно язык под свои нужды подганять. Опять же в ЛИСПе все напрямую в АСТ пишется, что самое то для всяких eDSL.
Наткнулся на такое EasyExtend, сам не пробовал.
balu
PooH
Наткнулся на такое EasyExtend, сам не пробовал.
Посмотрю, но это не совсем то. Плюс есть lexx и yakk. Но все это стороннее и неудобное, а хотелось бы родного. Плюс я там не прочитал ничего про переопределение самого языка. И тормоз этот EasyExtend. Автор сам признает.

И совсем забыл. В Python нет REPL.
Ferroman
И совсем забыл. В Python нет REPL.
Как это нет???
cybergrind
balu
Макросов хочу, без них сложно язык под свои нужды подганять. Опять же в ЛИСПе все напрямую в АСТ пишется
мы можем манипулировать объектами.
базируясь на манипуляции объектами мы можем создавать свои объекты (да теже фабрики классов).
что же такого я не могу сделать умея это? написать программу которая мне напишет программу? У меня есть программа, в которой я динамически создаю классы (модели и таблицы для алхимии), а потом просто запускаю полученную кашу, и оно работает.
Фактически тут динамически создаются классы, а т.к. типичная моя программа состоит из классов, то фактически программа пишет программу.

Я не спорю что возможности у питона по манипуляции с объектами может не такие как у лиспа с макросами, но принципиально нереализуемых вещей изза этого я не вижу.
Добавлено: Хотя нет… вижу: я не могу модифицировать синтаксис самого питона. Но изза того что я не смогу использовать @@ или что-нибудь в таком роде, это не помешает использовать эту же фичу используя скобки =)

balu
И совсем забыл. В Python нет REPL.
REPL - не знаю что ты имел в виду, но посмотри http://ru.wikipedia.org/wiki/REPL, тут пишут что в питоне это есть…


p.s. не хочу раздувать спор по поводу того что лучше (мне самому нравиться лисп, как язык). но на питоне все можно реализовать не чуть не хуже, тут скорее вопрос в мастерстве тех кто будет реализовывать (ктото это напишет на лиспе лучше, а на питоне будет хез что, а кто-то на питоне сделает не хуже чем на лиспе… или одинаково плохо).
сори, чтото вышел пост в стиле “смотрите какой я умный и соглашайтесь со мной”. не специально ;) просто задела фраза что о том, что схему нельзя заменить питоном.
cybergrind
и вроде отсутствие хвостовой рекурсии и оптимизации хвостовой рекурсии - это тоже разные вещи.
balu
REPL - тут читать http://pcl.catap.ru/doku.php?id=pcl:%D1%82%D1%83%D1%80%D0%B2repl Это когда компилируешь по одной функции, строя, таким образом, программу. Таким образом можно постоянно работать в интерпретаторе, почти не выходя из лиспа. Профит ;)
Про макросы и прочие синтаксические деревья - они позволяют делать DSL и на них уже решать саму задачу. Генерация объектов - это, конечно, хорошо. Но питон только для себя в свое АСТ генерирует. А если не только питон-код на выходе? Например код на питоне генерируется лиспом ;)
Про рекурсию - питон ее вообще не держит. Только до определенного числа итераций. Может щас что-то поменялось.

Я тут, кстати, на питон не наезжаю. Я все свои инструменты могу покритиковать. Например, тот же Лисп - есть за что.
UPD. Про рекурсию - не, не поменялось. Не держит. для сравнения:
На питоне:
def rec(count):
if count==0: return count
count -= 1
try: return rec(count)
except: print "count", count

print rec(10000)

count 9001
И на Scheme, можно попробовать тут http://sisc-scheme.org/sisc-online.php , только жаба нужна.
#;> (define (rec count)
(if (= count 0) count
(rec (- count 1))))
#;> (rec 100)
0
#;> (rec 10000)
0
#;> (rec 100000000)
0
#;>
Кстати, вычисление прямо в теле параметра тоже зело полезная вещь
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB