Alexander
и если быть толерантным к чужому мнению, то они не будут видеть опровержений
Alexander
пусть считает как хочет, жалко что-ли
𝙱𝚎𝚒𝚉𝚎𝚛𝚘
Я не знаю, когда программист на динамическом языке пишет код он не думает о каких-то мифических тегах, он думает о типах, он работает с типами и ему пофиг как это реализовано.
Alexander
потому, что он называет тег типом
Alexander
т.к. не знает что такое тип
A64m
не думает он о типах, он думает о тегах. что такое типы он чаще всего вообще не знает
Anonymous
На самом деле, интересный вопрос, как отделить статические проверки от степени функциональности. То что системы типов и тайпчекеры наиболее развиты в тех языках, которые считаются провославными в отношении ФП - это можно рассматривать как совпадение (помимо очевидного набора свойств благприятствующих реализации проверок)
𝙱𝚎𝚒𝚉𝚎𝚛𝚘
В статических языках вы тоже называете тег типом, мы чуть выше уже это выяснили.
Alexander
ничего страшного, но мы то тут знаем, так что давайте придерживаться академической и принятой терминологии
A64m
(последнее сраведливо и для большинства программистов)
Alexander
в чате js никто этого требовать не будет
Andrey
(читают, и тоже имеют свое нетолерантно воспринимаемое чужое мнение)
Alexander
ну разве если они не начнут доказывать, что статический тип и динамический это одно и тоже
Anonymous
Предлагаю считать ФП - те языки, у которых существует простая и компактная денотация в абстрактные математические функции (лямбда исчисление)
Vladislav
тип: компайл-тайм тег для тёрма
"динамический тип": рантайм тег для значения
Anonymous
Чем с большим скрипом дается описание денотационной семантики - тем меньше язык ФП
Ilya
Vladislav
специально в кавычках, потому что термин противоречивый
Vladislav
а поэтому проще назвать это просто тегом
Vladislav
ну да, тогда кодогенерация добавляется
Anonymous
*статического, лол
Leonid 🦇
вот у вас подгорело то. развели как детей
Vladislav
Alexander
не уверен, что подогрело
Alexander
Мысленный эксперимент. Возьмем компилятор хаскелля. Проапдейтим таким образом, чтобы типы игнорировались. Оставим недоопределенный код как "недопарсенный санк". Начнем выполнять те участки, которые можно выполнить. При наступлении на переменную будем допарсивать тип, доопределять словари, догенерировать код. и тайпчекать. Это возможно? Если да, то будет ли это типами?
Vladislav
у меня горит
Alexander
это "в интернете кто-то не прав"
Vladislav
Alexander
у Haskell есть defer-type-errorz
Vladislav
нет, это не типы уже
Vladislav
-fdefer-type-errors отключает типы
Alexander
с другой стороны он все равно все чекает при компиляции
Alexander
и вставляет error "bububu"
Alexander
где не чекнулось, с ошибкой тайпчеккера
A64m
Vladislav
типы от имплементации не зависят, но описанная система не является имплементацией типов
𝙱𝚎𝚒𝚉𝚎𝚛𝚘
И вот у слова Т И П в computer science тоже есть класс явлений, которые им называются, и те, которые им не называются. Даже если похожи. Если в рантайме — всё, не тип
В CS работая с типами мы вообще игнорируем существование и рантайма, и компайлтайма, у нас их нет, у нас есть сущность для которой верно единственное условие "Тип это то, что может в себе что-то содержать" и потом уже вводим необходимый нам перечень типов, операции над ними и т.д. CS вообще не про рантайм и компайлтайм, это когда вы CS прекладываете к чему-то, там к разработке компиляторов, к проектированию программ вот тогда у вас всё это появляется до этого этого нет, а типы всё ещё есть. Компиляции нет, а типы есть.
A64m
потому, кстати, есть такие ошибки типов, с которыми он не справится, и не сможет ничего выполняющегося нагенерить
A64m
> Тип это то, что может в себе что-то содержать
вообще-то нет
Cheese
A64m
тип - это то что справа от :
A64m
это множество - "может в себе что-то содержать"
саша
Vladislav
не знаю какой бекграунд, но явно больше, чем мой
я не смог читать дальше интродакшена в теорию типов, но зато из интродакшена узнал что такое пи и сигма типы
Vladislav
это было несколько лет назад, мой бекграунд был на уровне "умею на хаскеле писать" (наверное там же он и остался)
Andrey
“умею на хаскель писать” имхо дофига какой бэкграунд. не думаю, что во всем чатике более нескольких человек имеют такой
Cheese
A64m
Vladislav
из того же TAPL только ту же первую главу прочитал, которую скинул, а дальше распечатка так и валяется
по теории категорий я понял, что такие категории и функторы, дальше уже не разобрался (всякие limits colimits не осилил)
по HoTT прочитал только первую главу
на Agda написал пару игрушечных программ
на C++ писал в школе и из этого имею отдаленное представление о том, какова жизнь без GC
и т.д.
Vladislav
то есть единственный реальный бэкграунд у меня в том, что я на Haskell пишу достаточно долго
Алексей
Alexander
Alexander
js
A64m
Alexander
и теги могут по факту отличаться от типов
Alexander
Что есть рантайм?
Alexander
С точки зрения включенного компьютера - все рантайм
𝙱𝚎𝚒𝚉𝚎𝚛𝚘
Что есть рантайм?
С точки зрения работы тайпчекера он проверяет типы в своём рантайме.
A64m
поэтому для определения типов и не используются слова рантайм и компайл тайм
A64m
они используются тут для иллюстрации более-менее типичных случаев
Vladislav
я не знаю как их можно спутать
Vladislav
т.е. компайл-тайм это рантайм компилятора
Anonymous
Давайте уже каждый обозначит свою позицию на диаграмме и закончим на этом
Alexander
Anonymous
A64m
ну, рантайм кодогенератора и программы иной раз перепутать можно еще как
Danila Matveev
A64m