Найти - Пользователи
Полная версия: vanished
Начало » Python для .Net » vanished
1 2 3 4 5 6
The gray Cardinal
Андрей Светлов
Скопируй clr.pyd и Python.Runtime.dll в с:\python25\DLLs
Дальше import clr
Все, готово
ImportError: dynamic module does not define init function (initclr)
У меня путь “C:\Program Files\Python25\DLLs\”.
ActivePython 2.5.2.2, WinXP SP3.
В дистрибе Python for .NET пытаюсь использовать “python2.5-UCS2” (впрочем, UCS4 — результат тот же).
The gray Cardinal
george
когда пробовал в Python-е одно просунуть - да какой там
Это понятно, Python популярнее в стопятьсот раз :). Там от этих предложений наверное отбою нет.
george
>> Это понятно, Python популярнее в стопятьсот раз smile. Там от этих предложений наверное отбою нет.
мне важно, чтобы то, что меня ограничивает, со временем исправлялось. Питон с 2.4 по 2.6 ничего существенного по моим критериям не прибавил.
balu
Это хороше, что вышел. Но вменяемая документация где? Как бы ни был хорош язык, но если он претендует на роль языка общего назначения, там должна быть документация, а не http://jira.codehaus.org/browse/BOO?report=com.atlassian.jira.plugin.system.project:roadmap-panel. Иначе повторит судьбу многих других ЯП.
george
долго уговаривать просто нет времени. я просто показываю направление, дальше сами решайте.
1) Чуть выше вы были готовы на примерах доказывать, что Boo лучше F#, Scheme, Nemerle каждого в отдельности и вместе взятых по важным параметрам. А это уже серьезное заявление. Однако доказательств пока не видно.
2) Вы даже не удосужились дать прямые ссылки на интересующие потенциального пользователя вопросы. Даже на тот черновик, который вы указали.
Все, что вы рассказали про Воо, действительно интересно. Настолько, что если я буду писать под .Net, то я обязательно уделю внимание этому ЯП. Может даже boo-mode для своего емакса напишу. Если будет того стоить. Потому, что все, что есть в Воо уже давно реализовано - из прочитанного я не увидел пока плюсов ни перед лиспом, ни перед окамлом, включая их .Net реализации.
george
я указал jira ресурс, где перечислены все фичи. к сожалению, чтобы понять все это, надо знать и инглиш, и запастись терпением.
прямые ссылки там же на любые темы. нормальный док обещан после 1.0 релиза. действительно был готов на деле доказать.
выбери боль-мень внятную задачу, чтоб заинтересовала и меня, докажу..
balu
george
я указал jira ресурс, где перечислены все фичи. к сожалению, чтобы понять все это, надо знать и инглиш, и запастись терпением.
Вот когда оно будет в официальном описании языка, тогда и запасемся терпением, а пока есть хорошо описанный f# ;).
george
выбери боль-мень внятную задачу, чтоб заинтересовала и меня, докажу..
Тут http://www.gigamonkeys.com/book/practical-a-simple-database.html есть хороше поставленная задача - простенькая база данных с простеньким языком запросов, напоминающем SQL. Замечу, что задача реализованная только средствами самого языка, без библиотек. Если есть желание - велкам.
И немного статистики. Вот здесь http://balancer.ru/tech/forum/2008/08/t63003–Proizvoditel~nost~-yazykov.Ob~ektnyj-Fib.html есть небольшая статистика на основе объектного варианта вычисления Фибоначи. Я специально сделал аналогичный тест на F# и Воо. Итак:
для Boo
import System

class Fib:
_value as uint

def constructor(n as uint):
_value = n

def value() as uint:
if(_value <= 2):
return 1

return Fib(_value - 1).value() + Fib(_value - 2).value()
print DateTime.Now
print Fib(40).value()
print DateTime.Now
На моей машине для .Net - 5 сек., для Mono/Windows - 33 сек., Mono/Linux - 11сек.

для F#:
 
open System

type test(i)= //Заметим, что тут тип вычисляется
let rec I = i
member x.value = match I with
1 | 2 -> 1
| I -> (new test(I-1)).value + (new test(I-2)).value
printfn "%a" output_any (DateTime.Now)
let v = test(40)
printfn "%i" (v.value)
printfn "%a" output_any (DateTime.Now)
Результат на моей машине для .Net - 4 сек., для Mono/Windows - 35 сек., Mono/Linux - 11 сек.

Несмотря на всю свою искусственность тесты показывают, что boo, F# и Nemerle по скорости на равных. Вот, кстати, еще в продолжение http://balancer.ru/tech/forum/2009/01/t63003,4–Proizvoditel~nost~-yazykov.Ob~ektnyj-Fib.363.html

Кстати, стоит отметить более быструю компиляцию Воо.
george
моя функция получилась быстрее раз в 100 :-)
def fib(i as int):
sum = i + 1
while –i > 2: sum += i
return sum
задачи, предложенные тобой, тоскливые, как по мне. вот подумал, как на счет каталогизатора музыки. то бишь запускаешь прогу, она
сканит муз. каталоги, и выдает приятный глазу список, который может редактировать, отослать, сравнить с другим на предмет разницы и пр.
по меньшей мере это полезно. прога будет небольшая, однако есть где развернуться. и чтоб норм. вид имела ( не консоль и не др. чушь). е
balu
george
моя функция получилась быстрее раз в 100 :-)
Гы. Вы хотели сделать простую числодробильню. А тест по ссылке измеряет генерацию объектов и скорость доступа к методам, проверяет язык на умение держать рекурсию. Числодробильные тесты не интересны в виду узости решаемых задач. К примеру, такой код на f#
let rec fib i =  
match i with
| 1 | 2 -> 1
| i -> fib(i-1) + fib(i-2);;
посчитал за 1.6 сек. и выдал результат 102334155, а ваш код
george
def fib(i as int):   
sum = i + 1
while --i > 2: sum += i
return sum
выдал 818, что ошибка - числа Фибоначчи, это последовательность, в которой каждое последующее число равно сумме двух предыдущих чисел. Причем Фибонначи растет очень быстро, быстрее только Аккерман. Правильней будет так:
def fib(i):   
if(i <= 2):
return 1
return fib(i-1)+fib(i-2)
Правда, мой Воо отказался его посчитать :(, выдав такое :
Boo Compiler version 0.9.0.3203 (CLR v2.0.50727.3053)
fib1.boo(6,12): BCE0070: Definition of 'Fib1Module.fib' depends on 'Fib1Module.fib' whose type could not be resolved because of a cycle. Explicitly declare the type of either one to break the cycle.
fib1.boo(6,12): BCE0070: Definition of 'Fib1Module.fib' depends on 'Fib1Module.fib' whose type could not be resolved because of a cycle. Explicitly declare the type of either one to break the cycle.
fib1.boo(6,21): BCE0070: Definition of 'Fib1Module.fib' depends on 'Fib1Module.fib' whose type could not be resolved because of a cycle. Explicitly declare the type of either one to break the cycle.
fib1.boo(6,21): BCE0070: Definition of 'Fib1Module.fib' depends on 'Fib1Module.fib' whose type could not be resolved because of a cycle. Explicitly declare the type of either one to break the cycle.
fib1.boo(10,7): BCE0070: Definition of 'Fib1Module.Main' depends on 'Fib1Module.fib' whose type could not be resolved because of a cycle. Explicitly declare the type of either one to break the cycle.
fib1.boo(10,7): BCE0070: Definition of 'Fib1Module.Main' depends on 'Fib1Module.fib' whose type could not be resolved because of a cycle. Explicitly declare the type of either one to break the cycle.
fib1.boo(10,1): BCE0023: No appropriate version of 'System.Console.WriteLine' for the argument list '(unknown)' was found.
7 error(s).
Судя по всему не держит Воо рекурсии. А Python посчитал ;). Так что я вам тут не советчик.

george
задачи, предложенные тобой, тоскливые, как по мне. вот подумал, как на счет каталогизатора музыки.
Как знаешь. Каталогизатор музыки у меня есть :)
george
>> Судя по всему не держит Воо рекурсии.
это компилятор требует явный тип, держит или не держит - дальше проблема .net машины. я предлагал автору boo исключить данную ошибку (реально это элементарно) он однако не захотел.
действительно протупил с функцией - написал, как сумма ряда. ну да, тогда
struct fib:
val as int
result as int:
get:
return (val if(val <= 2) else fib(val-1).result +fib(val-2).result)
def constructor(i):
val = i

>>Как знаешь. Каталогизатор музыки у меня есть
при чем тут. ты говоришь, что к примеру F# лучше и пишешь код, я тогда тоже напишу, и результат сравним, а питонеры, если шо, нас рассудят.
критерии:
компактность
понятность
скорость программы
удобство
тогда вот можно приколоться..
balu
george
это компилятор требует явный тип…я предлагал автору boo исключить данную ошибку
Я ему указал явный тип, как формальный параметр. Но не считает. Так и запишем. Можете привести пример с Фибоначчи автору Воо. Мож попустит. Кстати, этот глюк (или фича) описаны? Ибо делает язык слабо пригодным на серьезных задачах с рекурсивными алгоритмами.
george
struct fib:
Результат вызова на моей машине 9.26 сек. на .Net и 35.65 на Mono. Но это уже не чистая числодробильня.
george
ты говоришь, что к примеру F# лучше
Ты что-то путаешь. Прочитай тред и напиши, где я сказал, что F# лучше, наоборот ты сказал:
george
а меня могут конечно тюкать - мол, F#, Scheme, Haskell, Nemerle, - где то лучше. Могу доказать каждому на примерах, что все они и каждый в отдельно значительно проигрывают этим двум и в объеме кода и в его понятности при написании любой задачи.
что меня удивило. Как показали приведенные мной тесты для F# твое утверждение не верно. Для лиспа - надо смотреть на реализацию лиспа. Что касается задачи, то я привел вам уже решенную задачу на лиспе , которая должна работать на .Net реализациях, в надежде увидеть сопоставимый код на Воо, реализующий сопоставимый результат.
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