LINUX.ORG.RU

Вышел Python 3.1

 ,


0

0

Новое в этой версии:

  • Класс для хранения упорядоченных словарных данных.
  • Разные оптимизации в целочисленном типе (int).
  • Новые возможности тестирования модулей, включая поддержку отключения определенных текстов и новые assert-методы.
  • Более быстрый модуль ввода/вывода (io). Быстрее в 2-20 раз, в зависимости от задачи.
  • Добавлена эталонная реализация оператора importlib, написанная целиком на Python.
  • Декодирование UTF-8, UTF-16 и LATIN-1 теперь в 2-4 раза быстрее.
  • Включение опции "--with-computed-gotos" позволяет добиться 20%го прироста в исполнении циклов.
  • Функция string.maketrans() больше не рекомендуется к использрованию, и она была заменена на статические методы bytes.maketrans() и bytearray.maketrans().

Что нового?

>>> Подробности

★★★★★

Проверено: boombick ()

Ответ на: комментарий от yk4ever

>Нельзя, если определён __slots__.

Но это же это, как его... ужоc с не? Или есть другой способ динамически сформировать класс?

r ★★★★★
()
Ответ на: комментарий от KRoN73

>В boo - она статическая :)

Динамическая. Статическая "утиная типизация" например в окамле или скале - где инферер генерирует или есть возможность задать структурный тип.

> При статической типизации все типы выводятся на этапе компиляции и связывание методов осуществляется прямое.


Так вот там генерятся рефлективные вызовы - то есть в рантайме можно получить хрен с маслом. А в статике такого не получишь - в этом смысл.

r ★★★★★
()
Ответ на: комментарий от yk4ever

>Типизация бывает статическая, выводимая (inference) и динамическая (она же утиная).

Вообщето не так. Дактайпинг обозначает только что валидная семантика использования определяется фактическим набором методов.

# class x = object method x = "x"; end;;
class x : object method x : string end
# class y = object method x = "y"; end;;
class y : object method x : string end
# let f x = x#x;;
val f : < x : 'a; .. > -> 'a = <fun>
# f new x;;
- : string = "x"
# f new y;;
- : string = "y"

Фактически дактайпинг. Статический.

r ★★★★★
()
Ответ на: комментарий от true_admin

>Что тебе в них не нравится?

БУдь я компилятором я бы последний тест вообще не имполнял а заэлиминейтил.

r ★★★★★
()
Ответ на: комментарий от r

Будь ты компилером пришлось бы искать пути решения этой проблемы(напр. не делать -O), иначе хрен время померяешь.

true_admin ★★★★★
()
Ответ на: комментарий от tailgunner

>Ну да, давайте вводить собственные термины - за умных сойдем.

А что такое дактайпинг по твоему?

c2.wiki: In a language that supports DuckTyping an object of a particular type is compatible with a method or function, if it supplies all the methods/method signatures asked of it by the method/function at run time.

Example1: If a method1 calls object.draw() then any object with a draw method is compatable with it.

OCamlLanguage: OCaml infers and enforces DuckTyping at compile time, with parametric polymorphism to boot.

r ★★★★★
()
Ответ на: комментарий от Fice

> Я бы сказал "мало подумав".

А может просто "быстрее чем маразматики из Sun"? Вы ведь не можете привести мне обоснованного примера "недостаточной продуманности", м?

> Есть конкретные претензии к Scala?

К ней уже есть IDE уровня Idea/ReSharper?

yk4ever
()
Ответ на: комментарий от r

Вот дактайпинг скалы.

scala> class X {
| def m = "x"
| }
defined class X

scala> class Y {
| def m = "y"
| }
defined class T

scala> def f[A<:{def m:String}](x:A) = x.m
f: [A <: AnyRef{def m: String}](A)String

scala> f(new X())
res0: String = x

scala> f(new Y())
res1: String = y

фактически то что сделал инферер окамла в скале пришлось объявить руками. Но X и Y не имеют никаких отношений между собой и с функцией f - то есть это эффективно то же самое что дает дактайпинг динамическим языкам.

r ★★★★★
()
Ответ на: комментарий от r

> Но это же это, как его... ужоc с не? Или есть другой способ динамически сформировать класс?

Питон - динамический язык для быстрого прототипирования и скриптования. Он динамический по умолчанию. __slots__ - это просто небольшая оптимизация по памяти.

yk4ever
()
Ответ на: комментарий от r

>> Ну да, давайте вводить собственные термины - за умных сойдем.

> А что такое дактайпинг по твоему?

А по-моему, duck typing - это реализация динамической типизации. А для "статического ducktyping" уж лет 30 есть название - вывод типов.

tailgunner ★★★★★
()
Ответ на: комментарий от r

> X и Y не имеют никаких отношений между собой и с функцией f - то есть это эффективно то же самое что дает дактайпинг динамическим языкам.

Ну да, назови еще шаблоны Си++ дактайпингом, чего стесняться :D

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

>А по-моему, duck typing - это реализация динамической типизации.

Но в чем это выражается?

>А для "статического ducktyping" уж лет 30 есть название - вывод типов.


Статический дактайпинг возможен только ести есть структурный параметрический полиморфизм.

В примере на скале вывод не задействован, задействована статическая проверка структурному соответствию.

r ★★★★★
()
Ответ на: комментарий от tailgunner

>Ну да, назови еще шаблоны Си++ дактайпингом, чего стесняться :D

Есть и такое мнение с с2.wiki.

Откуда такое название дактайпинг - зачем вообще понадобилось его придумывать в дополнение к динамической типизации?

r ★★★★★
()
Ответ на: комментарий от r

>> Ну да, назови еще шаблоны Си++ дактайпингом, чего стесняться :D

> Есть и такое мнение с с2.wiki.

А мнения, что вообще вся типизация - это дактайпинг, там нет? Я не удивлюсь.

> Откуда такое название дактайпинг - зачем вообще понадобилось его придумывать в дополнение к динамической типизации?

Да ХЗ. Я его встречал в обсуждении Питона с жабакодерами - видно, они технических терминов не понимают, для них изобрели лайт-терминологию.

tailgunner ★★★★★
()
Ответ на: комментарий от r

в идее всё неплохо с Groovy, со Scala сильно хуже. Но yole достаточно активно занимается этим...

thevery ★★★★
()
Ответ на: комментарий от tailgunner

>Да ХЗ. Я его встречал в обсуждении Питона с жабакодерами - видно, они технических терминов не понимают, для них изобрели лайт-терминологию.

The name derives from the colloquial saying, "If it Walks Like a Duck and talks like a duck, it must be a duck".

Поэтому.....?:)

r ★★★★★
()
Ответ на: комментарий от r

> The name derives from the colloquial saying, "If it Walks Like a Duck and talks like a duck, it must be a duck".

Ну фразу я знаю, но почему ее применили к динамической типизации, и почему только в последние годы - ХЗ.

tailgunner ★★★★★
()
Ответ на: комментарий от r

> Эта фраза применима по смыслу и к сктруктурным типам скалы и окамла.

Только вот применяют ее к позднему связыванию динамических языков. А так да, применима. А "вывод типов" можно при желании применить к позднему связыванию.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

>Только вот применяют ее к позднему связыванию динамических языков.

"Не согласен. Погулять мог..." (C).

Как раз позднее связывание - а правильнее будет поиск символа в рантайме - это как раз _механизм_ обоеспечения дактайпинга в динамических языках. В статических он другой. Но и там и там - утка.

Поведение противоположное дактайпингу - реализация объявленного интерфеса.

r ★★★★★
()
Ответ на: комментарий от r

> Как раз позднее связывание - а правильнее будет поиск символа в рантайме - это как раз _механизм_ обоеспечения дактайпинга

Не-а. Это такая проверка дактайпинга, перенсенная на рантайм :D

> Поведение противоположное дактайпингу - реализация объявленного интерфеса.

Вывод о реализации интерфейса может делаться в рантайме - вот тебе и вывод типов.

Но всё это игра в слова. Есть термины, они общеприняты, и нечего делать умное лицо и выдумывать свои.

</thread>

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

<thread>

>Есть термины, они общеприняты, и нечего делать умное лицо и выдумывать свои.


Я кагбэ их не выдумаю - я тебе С2 процитировал (там Ocaml отнесен к системам с зактайпингом). Тамошним гикам вполне можно более менее доверять - у них там по типизации целый зоопарк статей.

r ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.