A64m
в чем разница между программированием и скриптованием?
в одном случае типизированный код пишут, в другом нет
𝙱𝚎𝚒𝚉𝚎𝚛𝚘
в одном случае типизированный код пишут, в другом нет
Вы с такими определениями проойдите вон из профессии, пожалуйста.
Anonymous
в википедии и не такое напишут
https://www.ibm.com/developerworks/library/os-erlang1/index.html
Anonymous
так предельной типизированности еще никто не добился. валидные программы на хаскеле все равно не работают валидно
Слава
я 88-го года, просто не старпер как кое-кто
Просто термин-то ничем не плох. Запустил, компилятор молчит, а оно сломалось в рантайме - отличительный признак скриптоты.
Anonymous
разница не сказать что велика
Anonymous
Просто термин-то ничем не плох. Запустил, компилятор молчит, а оно сломалось в рантайме - отличительный признак скриптоты.
ну на мой взгляд скриптота это встраиваемые языки. а всякие руби и ерланги плохо встраиваются, это самостоятельные рантаймы
Anonymous
Опять срачик начинаеццо
😄 да, поздновато, правда "проснулись". Сегодня долго не протянем
Aλexander
давайте еще вброшу
Aλexander
джс > хаскелл 😂
Anonymous
при чем тут валидность-то?
при том, что типизируемость это не слишком принципиальный момент, чтобы одно называть программированием, а другое им не называть. более того, сама практика написания программы мало чем отличается
𝙱𝚎𝚒𝚉𝚎𝚛𝚘
так предельной типизированности еще никто не добился. валидные программы на хаскеле все равно не работают валидно
"Предельной типизированности"? Шта? Можете погуглить Agda, Coq там всякие. Где исчисление конструкций реализовано... Не знаю, что имеется ввиду под предельной типизированностью, но там типо компилятся только валидные программы(если уж совсем не пытаешься себе в колено выстрелить).
A64m
"скрипты" - короткая, удобная и понятная альтернатива сомнительному словосочетанию "динамические языки", то что у кого-то может еще и бомбануть от него - это только плюс
𝙱𝚎𝚒𝚉𝚎𝚛𝚘
я писал на них, лол
Ну просто тогда очень странное утверждение было.
Anonymous
https://www.britannica.com/technology/computer-programming-language
Anonymous
Computer programming language, any of various languages for expressing a set of detailed instructions for a digital computer. 
𝙱𝚎𝚒𝚉𝚎𝚛𝚘
"скрипты" - короткая, удобная и понятная альтернатива сомнительному словосочетанию "динамические языки", то что у кого-то может еще и бомбануть от него - это только плюс
Интересно, а как вы объясните тот факт, что на том же эрланге сложнее писать лапшу, чем на, например, статически типизированных плюсах?
𝙱𝚎𝚒𝚉𝚎𝚛𝚘
В эрланге строгость системы типов таки повыше будет, чем в плюсах.
𝙱𝚎𝚒𝚉𝚎𝚛𝚘
Но первый всё ещё по вашему лапша для скриптоов, а второй серьёзный промышленный язык, так получается?
Слава
Интересно, а как вы объясните тот факт, что на том же эрланге сложнее писать лапшу, чем на, например, статически типизированных плюсах?
Очень просто. На плюсах пишет всякий вася, а до эрланга еще добраться надо, и потом еще и суметь написать не-мутабельно.
A64m
Интересно, а как вы объясните тот факт, что на том же эрланге сложнее писать лапшу, чем на, например, статически типизированных плюсах?
тем что эрланг специально спроектирован так и имеет ряд ограничений чтоб код писали более менее. а плюсы так не спроектированы. какое это отношение имеет к тому что плюсы типизированы, а эрланг - нет?
A64m
нет, нельзя
𝙱𝚎𝚒𝚉𝚎𝚛𝚘
A64m
Я это просто к тому, что мощь системы типов не обязательно соседствует с их статической проверкой.
типы это то, что проверяется статически, то что проверяется в рантайме не имеет к типам никакого отношения.
𝙱𝚎𝚒𝚉𝚎𝚛𝚘
И вообще функциональный от слова "функция", работать декларативно с функциями без строгой статической типизации нельзя или как это работает?
Слава
нет, нельзя
Как это нельзя. Тоже динамическая типизация, тоже бдсм в коде, без хитровывертов с вариадическими темплейтами.
𝙱𝚎𝚒𝚉𝚎𝚛𝚘
типы это то, что проверяется статически, то что проверяется в рантайме не имеет к типам никакого отношения.
Здрасти. А вы пробовали литературу вообще читать какую-нибудь о типизации, о языках программирования?
A64m
Как это нельзя. Тоже динамическая типизация, тоже бдсм в коде, без хитровывертов с вариадическими темплейтами.
никаких элементов в дизайне го, которые способствовали бы написанию более-менее сносного кода нет. го просто (идейно) старый
𝙱𝚎𝚒𝚉𝚎𝚛𝚘
типы это то, что проверяется статически, то что проверяется в рантайме не имеет к типам никакого отношения.
"abc" перестаёт иметь тип строки если ты это статически не проверяешь что-ли или как это работает?
𝙱𝚎𝚒𝚉𝚎𝚛𝚘
конечно. фактически это в TAPL и написано
А под каким углом нужно читать TAPL, чтобы там что-то подобное вычитать?
A64m
в книжке Харпера другой подход (который дана скотт придумал) излагается, что в "динамических" "языках" тип один
Aliester
Everything e?
Кабачок
Кто-нибудь уже написал что Erlang это ООП, ибо message passing?
Кабачок
Одмены, спасите от китайского спама, он вернулся.
Cheese
Кто-нибудь уже написал что Erlang это ООП, ибо message passing?
Армстронг (главный в Эрланге) такое любит говорить
A64m
А под каким углом нужно читать TAPL, чтобы там что-то подобное вычитать?
> A type system is a tractable _syntactic_ method for proving the absence of certain program behaviors by classifying phrases according to the kinds of values they compute. выделено мной > Terms like “dynamically typed” are arguably misnomers and should probably be replaced by “dynamically checked,” but the usage is standard.
Евгений
Здрасти. А вы пробовали литературу вообще читать какую-нибудь о типизации, о языках программирования?
Тапл почитайте, он начинается с определения типа. Всё-таки логично предоставить определять понятия не абы кому, а соответствующим специалистам
Евгений
Я даже цитату найду
A64m
Там есть отсутствие богатых возможностей и линтер, который по рукам бьёт.
для написания плохого кода богатство возможностей не требуется
Евгений
http://newstar.rinet.ru/~goga/tapl/tapl003.html#toc1 Система типов — это гибко управляемый синтаксический метод доказательства отсутствия в программе определенных видов поведения при помощи классификации выражений языка по разновидностям вычисляемых ими значений.
Евгений
Иногда слово <<статический>> добавляется явным образом — например, говорят о <<языках программирования со статической типизацией>>, — чтобы отличить тот анализ, который производится при компиляции, и который мы рассматриваем здесь, от динамической (dynamic) илилатентной (latent) типизации в языках вроде Scheme (Sussman and Steele, 1975, Kelsey, Clinger, and Rees, 1998, Dybvig, 1996), в которых теги типов (type tags) используются для различения видов объектов, находящихся в куче. Термин <<динамически типизированный>>, по нашему мнению, неверен (его следовало бы заменить на <<динамически проверяемый>>), но такое употребление уже общепринято. Т.е. Пирс подчёркивает, что "динамическая типизация" это фразеологизм, не оч. связанный с типами собственно
Viacheslav
А подскажите кто-нибудь по либе streaming. Мне нужно написать след стрим, типа: retrierStream :: Monad m => (a -> HandleResult) ->Stream (Of a) m () -> Stream (Of a) m () Он работает так: 1. Ждет значение переданного стрима 2. Запускает на нем функию handle 3. Если handle возвращает ok, то он просто делает yield этого значения 4. Если handle возвращает not_ok, то я жду n секунд и ухожу в рекурсию
Viacheslav
я так понял что использовать конструкторы из Streaming.Inernal плохо, но как без них это сделать (да и с ними честно говоря) не понимаю
A64m
Иногда слово <<статический>> добавляется явным образом — например, говорят о <<языках программирования со статической типизацией>>, — чтобы отличить тот анализ, который производится при компиляции, и который мы рассматриваем здесь, от динамической (dynamic) илилатентной (latent) типизации в языках вроде Scheme (Sussman and Steele, 1975, Kelsey, Clinger, and Rees, 1998, Dybvig, 1996), в которых теги типов (type tags) используются для различения видов объектов, находящихся в куче. Термин <<динамически типизированный>>, по нашему мнению, неверен (его следовало бы заменить на <<динамически проверяемый>>), но такое употребление уже общепринято. Т.е. Пирс подчёркивает, что "динамическая типизация" это фразеологизм, не оч. связанный с типами собственно
легаси термин вроде "электродвижущая сила", которая вовсе не сила
Viacheslav
ну пусть будет MonadIO, вместо Monad)
Viacheslav
в pipes есть await, а как тут? потому что next тебя сразу уводит из стримов
𝙱𝚎𝚒𝚉𝚎𝚛𝚘
тэгов
Я всё ещё не вижу принципиальной разницы. Т.е. звучит просто так будто хотят на языки с тайпчекерами навесить дополнительный налёт элитарности сказав что "Нет тайпчекера и типов тогда у вас тоже нет". Да типы служат для того, чтобы гарантировать с какой-то точностью корректность валидной программы. Но если в условном Erlang ты пытаешься сложить слона с звездолётом и он тебе выйдёт ошибку о несоответствии типов во время выполнения, то это тоже проверка и тоже гарантия того, что у тебя не будет выполняться откровенная лапша.
Cheese
в pipes есть await, а как тут? потому что next тебя сразу уводит из стримов
боюсь, в стриминге нет втстроенной рекурсии, и именно next надо использовать retrierStream :: MonadIO m => (a -> HandleResult) -> Stream (Of a) m () -> Stream (Of a) m () retrierStream handle input = do e <- lift $ next input case e of Left () -> pure () Right (a, input') -> do case handle a of Ok -> yield a NotOk -> liftIO $ threadDelay $ 2 * 1000 * 1000 retrierStream handle input'
𝙱𝚎𝚒𝚉𝚎𝚛𝚘
вопрос терминологический, разница есть, вот я и называю по-разному. я человек простой, пирс пишет "Terms like “dynamically typed” are arguably misnomers and should probably be replaced by “dynamically checked,”" - я заменяю
Ещё раз. Я полностью согласен с тем, что динамически типизированный это очень странный термин, он непонятный, он легаси и т.д., но чекаются динамически таки типы и более менее пофиг называешь ты их типами или тегами типов(если есть теги типов то логично, что должны быть где-то типы, нет?)
A64m
совсем не логично. у АлгТД есть теги конструкторов которые в рантайме чекаются, никакого отношения к типам не имеют, например. точно так же и в скриптах
Ilya
Можно обобщить наверное. Интерпретируемый ЯП -- не язык вовсе.
Ilya
Как дин типы не типы
Ilya
Стикеры тут не приветствутся, выражайте эмоции буковами
A64m
Подскажите, где прочитать о (Of a)
это просто пара строгая слева data Of a b = !a :> b
Евгений
"Динамические типы" и "Статические типы" только тем общи, что это CS аналоги множества
Евгений
Но интенсионального, определяемого в рамках CS, единства между ними нет
A64m
вместо нее и соотвествующих инстансов можно было бы использовать тупл и инстанс функтора для него, который многие сейчас так ненавидят
A64m
он в streaming и объявлен