LINUX.ORG.RU

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

У тебя оторванная от контекста функция, у меня она помещена в контекст из которого видно, что вывод в питоне «заранее» невозможен.

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

ВНЕЗАПНО, нормальные доки и их осиляторство, вместе с тестами, могут вполне заменить стат. типизацию.

Типизация это доки + тесты в одном флаконе. Причём в очень кратком и в то же время читабельном виде.

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

У тебя оторванная от контекста функция

Конечно. Учебный пример.

у меня она помещена в контекст из которого видно, что вывод в питоне «заранее» невозможен.

100% точный вывод, как в Ocaml, невозможен. Ну и что? Это не делает gradual typing бесполезным.

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

Типизация это доки + тесты в одном флаконе. Причём в очень кратком и в то же время читабельном виде.

Именно. А еще эти «тесты» можно пускать хоть при каждой компиляции.

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

тайпхинты? Как в похапе?

В похапе нет тайпхинтов. Они есть в Hack и, насколько я могу судить, там они гораздо строже предлагаемых для Python.

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

Конечно. Учебный пример.

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

Ну и что? Это не делает gradual typing бесполезным.

Это делает невозможным прикручивание статической типизации хоть в каком-то виде и даже делает проблематичным прикручивание линтеров к питону вроде топика.

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

Учебный пример.

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

ЩИТО?

Это делает невозможным прикручивание статической типизации хоть в каком-то виде

Ну да. А когда ее прикрутят, ты будешь ныть, что это неправильная статическая типизация и ее прикрутили к неправильному Python. Отчасти ты будешь прав, но это никого не будет волновать.

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

Типизация это доки + тесты в одном флаконе

Неа, наоборот никак не выйдет — т.е типизация не заменит нормальных доков и тем более тестов ;)

Например — работа с файлами/сокетами. Хоть как типизируй, а нюансы при вызове описать все таки придется.

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

Т.е по сабжу сказать нечего, да? Лиспо-илита решила питонистов потроллить и слилась, да? =)

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

Ну да. А когда ее прикрутят, ты будешь...

Это не статическая типизация. И тот костыль просто не взлетит, ещё одна мёртворождённая «фича».

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

Это не статическая типизация.

Да назови ее как сам захочешь. Вон, авторы предложения называют ее gradual typing.

И тот костыль просто не взлетит

Время покажет. То, что потребность в статической проверке существует, вполне очевидно.

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

Товарищ иксперт

Я не замарался знанием похапе.

а это что http://php.net/manual/ru/language.oop5.typehinting.php

Насколько я понимаю, это работает во время исполнения и, следовательно, не имеет отношения к обсуждаемой теме.

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

Можно подумать до этого type hinting'а не было, угу. Что сказать-то хотел?

Покажи, что именно ты называешь type hinting-ом в Python.

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

Неа, наоборот никак не выйдет — т.е типизация не заменит нормальных доков и тем более тестов ;)

Типизация заменит те участки в доках, которые указывают входные/выходные типы для метода. То же самое для тестов (или ассертов). Что не относится к типам, естественно не заменит.

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

Типизация заменит те участки в доках, которые указывают входные/выходные типы для метода

Это уже можно делать через аннотации.

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

работает во время исполнения и, следовательно, не имеет отношения к обсуждаемой теме

А тут что, предлагают хинтинг во время компиляции? Ага, крутяк, а как решается вопрос:

if some_test():
    def lal(x):
        print 'LAL!',x
else:
    def lal(x):
        print 'LOL!',x

Вывод типа в динамическом языке до исполнения - хачкель отдыхает.

no-such-file ★★★★★
()
Ответ на: комментарий от mashina

Типизация заменит те участки в доках, которые указывают входные/выходные типы для метода

Это уже можно делать через аннотации.

Только вот аннотации не проверяются при компиляции.

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

Только вот аннотации не проверяются при компиляции.

Вы тут еще о питоне?

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

Всякие type checker'ы, которые далеко не новость

Новость в том, что сейчас похожее решение хотят интегрировать в язык.

Шутка ли, синтаксическому сахарку для них уже 8 лет!

Нерелевантно.

Вы тут еще о питоне?

Да. А ты учи матчасть и тоже присоединяйся.

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

8 лет хотят, а судя по тексту по ссылке, воз и ныне там. Чего гудим-то?..

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

Только вот аннотации не проверяются при компиляции.

Очень, кстати, мудрое решение не пытаться делать невозможное.

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

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

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

Только вот аннотации не проверяются при компиляции.

Очень, кстати, мудрое решение

Кому-то нужны мудрые решения, кому-то - полезные.

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

Я знаю, что в питоне может быть компиляция, а вот ты не понимаешь, что несешь

Пойду поплачу в уголке.

Проверки типов до исполнения никто не родил, не обещал и еще долго не родит, псевдоумник.

Учи матчасть, не дай себе еще и умереть дураком.

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

В этом конкретном примере решать нечего

Это потому, что ты «не замарался знанием». Допустим в первом случае я узказал хинт int, а во втором хинт string. Теперь питон встретив где-то в программе lal('wow') должен определить подходит аргумент под хинт или нет. И ты утверждаешь, что это можно сделать не в рантайме, при том что some_test() возвращает какой-то «рандомный» результат? Признай уже, что сморозил глупость не подумав, с кем не бывает.

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

Ссылку пожалуйста, непонятно куда смиренно ползти просвещаться. Особенно когда речь идет о языке, который ошибки синтаксиса в рантайме кидает.

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

<Цитирует только полфразы>
Старый быдлокодер и тролль. Характер скверный. Не женат.

Черт, а мы тебя кормим... Но ссыль все же дай.

t184256 ★★★★★
()
Ответ на: комментарий от no-such-file

В этом конкретном примере решать нечего

Это потому, что ты «не замарался знанием»

Это потому, что код эквивалентен вызову some_test без параметров.

Допустим в первом случае я

Допускай, разрешаю. Когда напишешь - будет предмет для обсуждения.

Теперь питон встретив где-то в программе lal('wow') должен определить подходит аргумент под хинт или нет

Кому он это должен? Почему он это должен? Если ты решил, что gradual typing сделает Ocaml из Python, это твоя ошибка. Признай, что сморозил глупость, с кем не бывает.

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

Кому-то нужны мудрые решения, кому-то - полезные.

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

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

ЯП с кучей полезностей уже давно цветёт и пахнет, пых называется.

К сожалению (и правда к сожалению, после появления Hack), он мне не подходит.

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

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

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

который ошибки синтаксиса в рантайме кидает.

Ну вот опять пиздеж. Там же есть компиляция в pyc, которая наверняка это словит

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

Кому он это должен? Почему он это должен?

Мне должен, т.к. я указал хинт, а питон должен его проверить.

Когда напишешь - будет предмет для обсуждения

Я уже написал тебе пример выше. Т.к. конкретный синтаксис для хинтов я пока не увидел, то описал тебе на словах, что в первом случае указываем для lal(x) хинт int, во втором string.

Если ты решил, что gradual typing сделает Ocaml из Python, это твоя ошибка

Это ты утверждаешь. Причём не просто ocaml, а ocaml+libastral

Ещё раз специально для тебя: хинты работают только в рантайме, что в похапе, что в питоне, что в любом динамическом языке.

no-such-file ★★★★★
()
Ответ на: комментарий от niemand

Вот то что if должен возвращать результат одного типа с разных веток - это да, ограничение

if может возвращать sum type. Впрочем, в приведенном фрагменте обе ветки возвращали бы None, если бы if был выражением.

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

Кому он это должен? Почему он это должен? Если ты решил, что gradual typing сделает Ocaml из Python, это твоя ошибка. Признай, что сморозил глупость, с кем не бывает.

Ну вот теперь и понятно, что gradual typing не сделает из Python ничего. Ну максимум C. Расходимся, мужики!

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

Я против приведенного примера ничего и не имею, там всё ОК

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

Тут без всяких условий понятно, подходит или нет

Ну так подходит или нет? Определи. some_test() возвращает рандомно True/False

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

Кому он это должен? Почему он это должен?

Мне должен,

А он это знает?

Если ты решил, что gradual typing сделает Ocaml из Python, это твоя ошибка

Это ты утверждаешь.

Зачем ты лжешь?

Ещё раз специально для тебя: хинты работают только в рантайме, что в похапе, что в питоне, что в любом динамическом языке.

Не надо бравировать тут своим невежеством.

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

Там же есть компиляция в pyc, которая наверняка это словит

О да, необязательная компиляция ОБЯЗАТЕЛЬНО словит.

#!/usr/bin/python
print eval('def:')

Ну вот опять

Где остальные?

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

Ну вот теперь и понятно, что gradual typing не сделает из Python ничего. Ну максимум C.

Если уровень статических проверок в Python будет хотя бы такой же, как в Си, это буде щастье.

Расходимся, мужики!

А приходили-то зачем?

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