Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 26, 2009 15:30:45

balu
От:
Зарегистрирован: 2006-05-24
Сообщения: 521
Репутация: +  0  -
Профиль   Отправить e-mail  

vanished

george
Scheme долго использовался в MIT в качестве универсального языка, за последние 5 лет они от него полностью отказались в пользу Питон
1) В качестве учебного языка. Кстати, Sheme-вариант SICP читается и в Беркли - недавно они выпустили обновленные видеолекции.
2) Питон используется на курсах электроники и робототехники. Но 6.001 как был, так и остался.

george
А вообще, если сильно интересно, предложи компактную, но нетривиальную задачу, напиши ее на чем хошь, я на boo, сравним результат :-).
К сожалению сейчас особо времени нет. Но посмотреть на boo - посмотрю. Как там, кстати с умением менять все и вся на ходу, например пофиксить нужный код, перекомпилировать его прямо в выполняющейся программе? Каковы там анонимные функции - надеюсь ушли дальше, чем недолямбда в питон? Как там с макросами?
Но если отталкиваться от опыта питон то писать всякие там парсеры и DSL лучше на лиспе.

PS Впрочем, если вам особо нечего делать можете поиграться с чем-нибудь отсюда http://www.gigamonkeys.com/book/ , например с http://www.gigamonkeys.com/book/practical-an-id3-parser.html Учтите также, что в примере не используются какие-либо специализированные библиотеки.



Отредактировано (Янв. 26, 2009 15:31:27)

Офлайн

#2 Янв. 26, 2009 15:35:39

The gray Cardinal
От:
Зарегистрирован: 2007-03-07
Сообщения: 422
Репутация: +  0  -
Профиль   Отправить e-mail  

vanished

george
>> интерпретатор Boo получает в командной строке текстовый файл скрипта и исполняет его.
это да, только он предварительно любой скрипт компилирует в реальный код, и потом только его исполняет.
Кстати, Cobra, насколько я понял, делает то же самое. Только исполняемый файл cobra.exe там совмещает функции интерпретатора и компилятора. И, по ощущениям, в случае интерпретации текстового файла скрипта, Cobra как-то очень долго дуплится, по сравнению с Boo.



Офлайн

#3 Янв. 26, 2009 16:57:05

george
От:
Зарегистрирован: 2006-06-19
Сообщения: 55
Репутация: +  0  -
Профиль   Отправить e-mail  

vanished

>> Но если отталкиваться от опыта питон то писать всякие там парсеры и DSL лучше на лиспе.
boo в этом ушел от Питона далеко за горы. вот тебе пример динамического расширения/парсинга в boo:

namespace metaboo

import Boo.Lang.Compiler
import Boo.Lang.Compiler.Ast
import Boo.OMeta
import Boo.OMeta.Parser

syntax Units:
atom = mass | super
mass = (integer >> value as Expression, “kg”) ^

syntax Ranges:
atom = integer_range | super
integer_range = (integer >> begin as Expression, DOT, DOT, integer >> end as Expression) ^

def parse(code as string):
compiler = BooCompiler()
compiler.Parameters.References.Add(System.Reflection.Assembly.GetExecutingAssembly())
compiler.Parameters.Input.Add(IO.StringInput(“code”, code))
compiler.Parameters.Pipeline = CompilerPipeline()
compiler.Parameters.Pipeline.Add(BooParserStep())
return compiler.Run()

code = “”“
import metaboo.Units
import metaboo.Ranges

a = 3kg
print a
for i in 1..3:
print i
”“”

result = parse(code)
assert 0 == len(result.Errors), result.Errors.ToString()
assert 1 == len(result.CompileUnit.Modules)
print result.CompileUnit.Modules.ToCodeString()

вывод “import metaboo.Units
import metaboo.Ranges

a = Mass(3, ‘kg’)
print a
for i in range(1, 3):
print i”

чтоб было понятно: в стандарте boo нет конструкции 1..3, также как и 2м или 3kg,
и этот пример показывает, как расширить синтаксис, сводя его к стандартному.
все языки нервно курят..

>>Только исполняемый файл cobra.exe там совмещает функции интерпретатора и компилятора.
он переводит кобра-исходник в шарп-исходник и после его уже компилит и исполняет.
boo напрямую генерит IL-ассемблер.

>> Питон используется на курсах электроники и робототехники. Но 6.001 как был, так и остался.
сообщение оттуда проскакивало, вот я его так понял.



Офлайн

#4 Янв. 26, 2009 17:20:24

The gray Cardinal
От:
Зарегистрирован: 2007-03-07
Сообщения: 422
Репутация: +  0  -
Профиль   Отправить e-mail  

vanished

Так есть кто живой, кому удавалось поставить Python for .NET?



Офлайн

#5 Янв. 26, 2009 17:44:26

balu
От:
Зарегистрирован: 2006-05-24
Сообщения: 521
Репутация: +  0  -
Профиль   Отправить e-mail  

vanished

george
и этот пример показывает, как расширить синтаксис, сводя его к стандартному.
Это много где есть, см., например, лисповские макросы. Но будет время, посмотрю на boo внимательней - действительно интересно.



Офлайн

#6 Янв. 26, 2009 18:05:35

george
От:
Зарегистрирован: 2006-06-19
Сообщения: 55
Репутация: +  0  -
Профиль   Отправить e-mail  

vanished

> balu
ессно много где, а вот так чтоб просто написать, опять же это тривиальный пример, но.. обрати внимание что здесь можно одинаково оперировать и на синтаксическом уровне, и на лексическом, и смешанном совершенно одинаково. это весьма непросто!



Офлайн

#7 Янв. 27, 2009 10:09:29

balu
От:
Зарегистрирован: 2006-05-24
Сообщения: 521
Репутация: +  0  -
Профиль   Отправить e-mail  

vanished

2george
Из руководства к языку не ясно есть ли там генерики и анонимные функции.
Плюс хочется умения менять все и вся на ходу, например пофиксить нужный код, перекомпилировать его прямо в выполняющейся программе.

Так же не раскрыта тема boo vs F#, LISP-семейство. Замечу, что F# и LISP умеют как метапрограммирование, так и многопарадигменность.



Офлайн

#8 Янв. 27, 2009 15:26:23

george
От:
Зарегистрирован: 2006-06-19
Сообщения: 55
Репутация: +  0  -
Профиль   Отправить e-mail  

vanished

я писал в другом месте, что там доки недоделаны. все там есть, тока смотри в http://jira.codehaus.org/browse/BOO?report=com.atlassian.jira.plugin.system.project:roadmap-panel
начиная с 0.6.0. док от 0.5.
>>Так же не раскрыта тема boo vs F#, LISP-семейство.
долго уговаривать просто нет времени. я просто показываю направление, дальше сами решайте.



Офлайн

#9 Янв. 27, 2009 15:45:25

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

vanished

The gray Cardinal
Так есть кто живой, кому удавалось поставить Python for .NET?
Скопируй clr.pyd и Python.Runtime.dll в с:\python25\DLLs
Дальше import clr
Все, готово



Офлайн

#10 Янв. 27, 2009 17:11:30

george
От:
Зарегистрирован: 2006-06-19
Сообщения: 55
Репутация: +  0  -
Профиль   Отправить e-mail  

vanished

вот boo 0.9 вышел - более 20 новых серьезных фич добавилось. даже поддержка вложенных макросов - наворачивают ребята..
http://boolang.googlegroups.com/web/ChangeLog-v0.9.html?gda=jCHq4kUAAAAkQtDacSqt3NZb-oEqEpqG_sEWxeG3t7X4-DJDqWhcS6HFINThPSAmR8mxUYmyTqMc1NQncoRVHsyyOXJp_EWnGu1iLHeqhw4ZZRj3RjJ_-A
еще не без гордости скажу что, штук 5 усовершенствований в языке прошли по моим предложениям, еще столько же стоят в очереди, когда пробовал в Python-е одно просунуть - да какой там.
а тут - пожалуйста - пиши чего не хватает хоть в jira, хоть в форум, если предложение нормальное - в очередь на добавку.



Отредактировано (Янв. 27, 2009 17:43:33)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version