tag:blogger.com,1999:blog-29561155.post7900488464466731147..comments2022-03-27T13:12:25.926+03:00Comments on Веб-дневник Владимира Шабанова: Корректность, типизация и ErlangVladimir Shabanovhttp://www.blogger.com/profile/14322574042735481057noreply@blogger.comBlogger8125tag:blogger.com,1999:blog-29561155.post-58798552391832044532007-06-15T17:19:00.000+04:002007-06-15T17:19:00.000+04:00Что-то мне не хочется тут же в 3 часа ночи апдейти...Что-то мне не хочется тут же в 3 часа ночи апдейтить упавший модуль, который мог вообще не упасть.<BR/><BR/>Разницы между BSOD и падением из-за рантайм ошибки никакой нет. Программа (или ее часть) все равно не работает.Vladimir Shabanovhttps://www.blogger.com/profile/14322574042735481057noreply@blogger.comtag:blogger.com,1999:blog-29561155.post-80302245875721790792007-06-15T16:45:00.000+04:002007-06-15T16:45:00.000+04:00Типобезопасность гаранитируется рантаймом, никакой...Типобезопасность гаранитируется рантаймом, никакой ручной работы, но ошибка прогера сгенерирует рантайм-ошибку, умрёт один процесс, система останется жить, а не упадёт с BSOD, модуль можно будет тут же проапдейтить и вуаля...Qrilkahttps://www.blogger.com/profile/14856370078919907461noreply@blogger.comtag:blogger.com,1999:blog-29561155.post-41868144507687581202007-05-09T15:09:00.000+04:002007-05-09T15:09:00.000+04:00На мой взгляд, противоречия нет. Если не лениться,...<I>На мой взгляд, противоречия нет. Если не лениться, и везде где тип существенен писать "охраны", то dialyser нормально проверит типизацию.</I><BR/>В том то все и дело, что лениво писать типы. И необязательно это. А человек — такое существо, что если чего-то можно не делать, то это обязательно будет не сделано.<BR/><BR/><I>То есть Erlang динамически типизован, но "типобезопасен".</I><BR/>К сожалению, только при условии дополнительной ручной работы.Vladimir Shabanovhttps://www.blogger.com/profile/14322574042735481057noreply@blogger.comtag:blogger.com,1999:blog-29561155.post-12153520082647661452007-05-09T12:22:00.000+04:002007-05-09T12:22:00.000+04:00С другой стороны — это язык с динамической типзаци...<I>С другой стороны — это язык с динамической типзацией, что, по моему мнению, противоречит написанию корректных программ.</I><BR/><BR/>На мой взгляд, противоречия нет. Если не лениться, и везде <B>где тип существенен</B> писать "охраны", то dialyser нормально проверит типизацию.<BR/>То есть Erlang динамически типизован, но "типобезопасен".Alexhttps://www.blogger.com/profile/07484231209489648802noreply@blogger.comtag:blogger.com,1999:blog-29561155.post-17899343669535803582007-04-22T16:58:00.000+04:002007-04-22T16:58:00.000+04:00Ну Erlang же очень распределенный, соответственно ...<I>Ну Erlang же очень распределенный, соответственно сложно статически проверить корректность посылки сообщений (типов там итп), поэтому толку от статической типизации маловато будет.</I><BR/><BR/>Не уверен, что очень сложно проверить.<BR/><BR/><I>Ну и в случае питона и др., бесспорный плюс динамической типизации, вызовов методов через посылку сообщений, duck typing -- слабое связывание компонентов системы.</I><BR/><BR/>Ну да, это можно и структурным полиморфизмом на окемле или даже темплейтами на С++. Другое дело, что это не в рантайме. Но связывание в рантайме и так слишком опасно, чтобы его юзать.<BR/><BR/><I>...И ребята объясняют, что это специально -- в большинстве случаев пусть лучше юзер увидит не совсем правильную страничку чем Internal Server Error.</I><BR/><BR/>Я все-таки считаю, что лучше разработчик сразу увидит, что облажался, чем юзер потом.Vladimir Shabanovhttps://www.blogger.com/profile/14322574042735481057noreply@blogger.comtag:blogger.com,1999:blog-29561155.post-28402075731281239042007-04-22T13:59:00.000+04:002007-04-22T13:59:00.000+04:00Ну Erlang же очень распределенный, соответственно ...Ну Erlang же очень распределенный, соответственно сложно статически проверить корректность посылки сообщений (типов там итп), поэтому толку от статической типизации маловато будет. <BR/><BR/>Ну и в случае питона и др., бесспорный плюс динамической типизации, вызовов методов через посылку сообщений, duck typing -- слабое связывание компонентов системы.<BR/><BR/>Щас вот книжку читаю про питоновый веб-фреймворк django, там вот например если в шаблоне страницы неопределенная переменная используется, эксепшен не кидается, а вместо нее вставляется ''. И ребята объясняют, что это специально -- в большинстве случаев пусть лучше юзер увидит не совсем правильную страничку чем Internal Server Error. Таким образом засчет динамической типизации приложение получается существенно более "непотопляемым" :)lrrrhttps://www.blogger.com/profile/12742106367384624657noreply@blogger.comtag:blogger.com,1999:blog-29561155.post-55439556909778488302007-04-21T15:23:00.000+04:002007-04-21T15:23:00.000+04:00Конечно там есть типизация. Динамическая :)Всякие(...Конечно там есть типизация. Динамическая :)<BR/><BR/>Всякие<BR/>(declare (type fixnum foo-bar))<BR/>не в счет. Они служат для оптимизации специфичных участков кода и, если ничего не путаю, даже не обязательно проверяются.<BR/><BR/>Конечно, сама система типов у common lisp побогаче, чем у erlang. Хотя... Алгебраических типов данных все равно нет :). И хотя они там легко делаются, без статической типизации в лиспе работать с ними практически невозможно. pattern matching не отладишь никогда (из-за этого, в свое время, полностью отказался от лиспа).Vladimir Shabanovhttps://www.blogger.com/profile/14322574042735481057noreply@blogger.comtag:blogger.com,1999:blog-29561155.post-43584012392899294632007-04-21T07:52:00.000+04:002007-04-21T07:52:00.000+04:00В common lisp есть типизация.В common lisp есть типизация.Anonymousnoreply@blogger.com