LINUX.ORG.RU

Вышел Mypy 0.4

 ,


2

2

5 мая тихо и незаметно вышел Mypy 0.4. Mypy — это экспериментальный статический тайпчекер, проверяющий программы на Python 2 или Python 3, аннотированные в соответствии с PEP 484. Деятельное участие участие в разработке Mypy принимает Dropbox (в частности, над проектом работает Гвидо ван Россум).

Новое в Mypy 0.4:

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

★★★★★

Последнее исправление: tailgunner (всего исправлений: 4)

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

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

Всё верно!

Статика это плата , которую нужно заплатить, чтобы получить быстрый код..

А ипользование статики лишь формально (поверх анотаций динамического языка) это только для удовлетворения садомазаистических потребностей — это не увеличивает производительность (ни программы, ни процесса программирования) , разумеется , а только нужна для получения удовольствия садомазахистам

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

Добавлю, что PyPy 5.1.1 уже вышел

Пусть обратно заходит :-) . Старое говно совместимое только с устаревшим CPython-2.X — уже как несколько лет ни кому не нужно...

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

PySonar 2 вроде бы не от Гугла же, в том смысле, что китаец, который его писал, написал его во время стажировки, а потом нашел работу где-то ещё? Или он, в итоге, в Гугле работает и дальше PySonar 2 пилит?

anonymous
()
Ответ на: комментарий от user_id_68054

Статика это плата , которую нужно заплатить, чтобы получить быстрый код..

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

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

Или он, в итоге, в Гугле работает и дальше PySonar 2 пилит?

Я понял именно так. По крайней мере, я не нашел другого опенсорсного чекера, который можно приписать гуглу.

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

это не увеличивает производительность (ни программы, ни процесса программирования)

За то очень помогает когда разработчиков больше двух-трех. Или когда возвращаешься к проекту через год или два

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

Статика - это проверяемые автоматически утверждения о программе.

Да есть языки с автоматическим доказательством правильности кода. Но Статика не дает это сама по себе. C к таким не относится например.

Но я тут смотрю уже спор гурманов пошел. Собственно мне кажется все, всё поняли.

dmxrand
()
Ответ на: комментарий от cab

Ну получает функция строку и что? Что это за строка имя файла или его содержимое? Тут и Польскую нотацию вспомним которую Спольски так любит и показал как можно используя её неправильно обделаться...

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

Ну получает функция строку и что?

Бывает важно, что бі туда не попал другой итератор. А вместо строки лучше сразу передавать правильный тип, File, например.

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

Ты как всегда категоричен. Ну считай, что сразу пьян и безумен. В чем я не прав? В том, что в ЯП с статическими типами можно ввести например координаты которых нет на планете земля? Или возраст -30 лет или рост 0.000001 метра?

dmxrand
()

Кто-нибудь может привести доводы почему не сделать как допустим в Erlang dialyzer?

Another0s
()
Ответ на: комментарий от dmxrand

В чем я не прав?

Ты несешь какую-то мутную чушь, в которой настолько мало смысла, что трудно сказать, в чем именно ты неправ. Похоже, что ты ждешь от статики каких-то чудес, не получаешь их, и выплескиваешь обиду дикаря на идола, который ему не помог.

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

Эх. Еще раз «Может» тут мы и приходим к тому, что или всё или ничего.

Шото я тебя не понял, ну да ладно. Если єто присобачат в основную ветку то в новіх проектах я с удовольствием вікину свои костіли на декораторах, которіе у меня еще с 2.4.

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

Совсем наоборот. Поборники статики дико радуются, что в синус на момент компиляции не попадет строка. Я довожу их мысль до абсурда. Я собственно не поборник статики, но в js 2+«2» меня убивает. В Python я вижу некий баланс. и если можно аннотировать, то это еще лучше. Я по пьяне не передам строку в синус.

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

В том, что в ЯП с статическими типами можно ввести например координаты которых нет на планете земля?

Для этого придумали объекты и декораторы.

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

Короче, я проверил, и ты понял неправильно. Он действительно написал прототип этого чекер когда был на стажировке в Гугле, но с тех пор Гугл к этому никакого отношения не имеет и пилит он его совершенно независимо. После той стажировки он работал в Sourcegraph, а недавно перешел в Shape Security: https://www.linkedin.com/in/yinwang .

anonymous
()
Ответ на: комментарий от dmxrand

Я по пьяне не передам строку в синус.

может прилететь похожий тип, а ты в результате будешь долго искать ошибку. Но основной профит от статики, что это - часть контракта между разработчиками.

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

Декоратор работает на этапе выполнения и тратит время.

Ну чем хата богата. Лучших средств на сейчас из коробки нет.

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

Да. Но кстати не надо контракты путать с статикой. Эйфель не зря появился. Тайлганнер мужик не глупый, но чета или белое или черное. А что насчет Zope Interfaces? это ведь уровень выше. все эти int или float... А Инварианты? Поборники статических типов должны тут уже и задушить себя галстуками... но это все инструменты которые едят процессор при выполнении.

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

Я довожу их мысль до абсурда

И этот абсурд несешь в треде, как будто он что-то доказывает

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

Ну, если ты уверен, что ещё один есть, то найди, пожалуйста, и сообщи в треде, мне тоже интересно.

anonymous
()
Ответ на: комментарий от dmxrand

но в js 2+«2» меня убивает

это не имеет ничего общего с static vs dynamic typing. это про strict vs loose typing. ну сколько можно уже

Я по пьяне не передам строку в синус.

значит ты либо бог, либо написал слишком мало кода, и при этом никогда не работал над большим проектом в команде. да сплошь и рядом это, даже в статически типизированных языках часто не то пихают, или не придерживаются constraints на параметры.

val-amart ★★★★★
()
Ответ на: комментарий от anonymous

а могли бы использовать Go. тогда и костыли в виде этого вашего Mypy не нужны были бы.

зато были бы нужны костыли для проверки ошибок и отловки утечек горутин. нет уж, спасибо. метапрограммирование anyone?

val-amart ★★★★★
()

Не нужно

Питон тормозной и глюченный, а еще на нем пишет всякая хипстота, а так как хипстота не нужна, то и питон не нужен

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

No description or website provided.

Посоны к успеху идут.

Да там из README всё ясно.

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

это не имеет ничего общего с static vs dynamic typing. это про strict vs loose typing. ну сколько можно уже

Да и это невозможно в статически типизированных языках (или я не прав?).

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

это две абсолютно ортогональные концепции.

static loose typing [c]:

$ cat a.c
#include<stdio.h>

int main(const int argc, const char* argv[]) {
    int n = 4;
    char s[] = "s";
    printf("%s\n", n + s);
    n = n + s;
    printf("%d\n", &n);
}
$ gcc a.c
$ ./a.out
�
-131638500


dynamic loose typing [js]:

$ jsc -e 'print("s" + 4)'
s4


static strict typing [haskell]:

$ cat a.hs
main = print (4 * "s")
$ ghc a.hs
[1 of 1] Compiling Main             ( a.hs, a.o )

a.hs:1:17:
    No instance for (Num [Char]) arising from a use of ‘*’
    In the first argument of ‘print’, namely ‘(4 * "s")’
    In the expression: print (4 * "s")
    In an equation for ‘main’: main = print (4 * "s")


dynamic strict typing [python]:

$ python -c '4 + "s"'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'

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

ой. ну неявное приведение типов. Не надо мухлевать. Если его дальше развить получим в статике динамику. Ну зачем тогда вообще спор статик vs динамика если мы выводим типы? я еще в перле это ненавидел. Я там выше писал, что в статических языках пихают костыли. Что

int n = 4; char s[] = «s»; printf(«%s\n», n + s); n = n + s; printf(«%d\n», &n);

не костыль? Язык считает, что это не строка, а байт. Ну чар ладно, а то есть и 32-х битные байты.

В C вообще многие говорят вся жизнь это изобретение строк. Так вы и с поинтером можете сложить.

dmxrand
()
Ответ на: комментарий от val-amart

Это... Там и выведения типов нет. Я с испугу сказал. C вообще не видит разницы. Мы можем сделать dword как массив и все такое.

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

> Статика это плата , которую нужно заплатить, чтобы получить быстрый код..

Нет. Какая чушь. Статика - это проверяемые автоматически утверждения о программе.

.. Проверка утверждений — для того чтобы компилятор был бы уверен, что он может скомпилировать быстрый код

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

Нет. Это прямое назначение статики..

...а вот побочный эффект — это садомазаистических удовольствие от нагромождения статических иерархий типов/интерфейсов/анонимных_классов :-)

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

Проверка утверждений — для того чтобы компилятор был бы уверен, что он может скомпилировать быстрый код

Снова чушь.

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

Проверка утверждений — для того чтобы компилятор был бы уверен, что он может скомпилировать быстрый код

Что ты несёшь? Чтобы скомпилировать быстрый код, типизация вообще не нужна.

Нет. Это прямое назначение статики..

Нет. Назначение статики - это избавление от садомазаистических удовольствий ловить TypeError и AttributeError в рантайме.

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

Чтобы скомпилировать быстрый код, типизация вообще не нужна

Ты имеешь ввиду «статическая типизация не является *единственным* и необходимым условием для компилирования быстрого кода?» .. Ну вобщем , наверное да .

Однако это наиболее прямой путь для успешного достижения этой цели (разумеется и в савакупности и с применением +других дополняющих техник)..

избавление от садомазаистических удовольствий ловить TypeError и AttributeError в рантайме

Этот названный тобой садамазахизм — это плата за утиную типизацию. И она совсем мизирная по сравнению с садомаза-платой за построение набора типов и интерфейсов в статической типизации..

Другими словами:

Ошибки подставления в аргументы функций не тех типов — крайне крайне КРАЙНЕ редки , и когда они (эти ошибки) совершаются — то довольно быстро обнаруживаются. (Это тебе не какая-нибудь там гонка параллельных нитей)

А вот заниматься сексом с продумывпнием системы промежуточных типов в статической типизаци — приходится постоянно (не зависимо от количества ошибок, будь их хоть даже нуль :))

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

вобщем

савакупности

садамазахизм

садомаза

Верни клавиатуру папе.

tailgunner ★★★★★
() автор топика
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от user_id_68054

Ты имеешь ввиду «статическая типизация не является *единственным* и необходимым условием для компилирования быстрого кода

Зачем ты «единственным» выделил? Я говорил, что она не является необходимой. Посмотри всякие брэйнфаки и ассемблеры - там никакой типизации нет, но компилировать их это не мешает.

Этот названный тобой садамазахизм — это плата за утиную типизацию.

Она ничем не заслужила такой платы.

Ошибки подставления в аргументы функций не тех типов — крайне крайне КРАЙНЕ редки

Кроме них есть ещё опечатки. В совокупности - тот ещё гемор.

А вот заниматься сексом с продумывпнием системы промежуточных типов в статической типизаци — приходится постоянно

man structural typing

не зависимо от количества ошибок, будь их хоть даже нуль
будь их хоть даже нуль

Бог программирования в треде!

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

Статика - это проверяемые автоматически утверждения о программе.

Давайте не будем выдумывать определения. Количество строк кода, превышающее или не превышающее 42 — это алгоритмически проверяемое утверждение о программе. Относится ли оно к типизации?

Цитируя классиков, типизация — это инструмент проверки того, что программа НЕ содержит определённого рода поведений.

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

Статика - это проверяемые автоматически утверждения о программе.

Давайте не будем выдумывать определения.

Давайте я буду говорить языком, который считаю понятным.

Количество строк кода, превышающее или не превышающее 42 — это алгоритмически проверяемое утверждение о программе. Относится ли оно к типизации?

Если проверяется системой типов - да, относится.

типизация — это инструмент проверки того, что программа НЕ содержит определённого рода поведений.

Это более наукообразная форма того, что сказал я.

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

Давайте я буду говорить языком, который считаю понятным.

Давайте вы не будете притворяться шлангом.

Статика - это проверяемые автоматически утверждения о программе.
Если проверяется системой типов - да, относится.

Упрощая оба утверждения в одно предложение: «Статика» (статическая система типов) — это проверяемые автоматически системой типов утверждения о программе.

Это уже сепульки.

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