LINUX.ORG.RU

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

> Теперь поясните мне в чём удобство использования языков с динамической типизацией.

это для тех программистов и особенно авторов языков, что не осилили вывод типов

_______________________________________

математики любят, чтобы формулы оставались прежними независимо от типов фигурурующих в них переменных; это опять не аргумент в пользу динамической типизации, а намек

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

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

а где можно почитать Style Guide for Haskell Code, эдакий haskell pep8?

В хаскеле жесткие требования к инденту и к названиям функций и типов, поэтому аналог пеп8 ему не нужен. Есть куча статей типа «бест практисес» и «топ бегиннер хаскелл мистакес», но это не свод правил, а скорее советы.

provaton ★★★★★
()

Кстати говоря, я очень люблю приводить в пример встроенный язык 1С. Там вообще отсутствуют языковые средства для описания непримитивных типов!!! Зато они отлично описываются с помощью встроенного редактора метаданных как экземпляр одного из (предопределенных) метаклассов.

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

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

> Не впечатлило.

Так и запишем: принципы, методы и приёмы, успешно используемые человечеством для построения сложнейших программных систем — всего-навсего суть кучка баззвордов. Все просто не понимают, что это кучка баззвордов. Используют, но не понимают. Успешно используют. Но не понимают, тёмные. Кучка баззвордов.

Кластеры метапарадигм неплохо покупают.


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

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

Теперь поясните мне в чём удобство использования языков с динамической типизацией.

Например, duck typing. Хотя, он заменяется в хаскеле классами типов.

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

Ну, забыл ты поставить with-lock перед вызовом чего-то, кто и как это обнаружит?

Может я туплю, но чем здесь поможет статическая типизация?

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

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

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

>Система типов хаскела заменяет довольно большое кол-во тривиальных тестов.

И опять неправильно! Система типов хаскеля ВЫНУЖДАЕТ использовать различные уровни логики целевой программы. В противном случае - лапша. Поэтому и рефакторинг производится несколько легче.

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

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

Система типов хаскеля ВЫНУЖДАЕТ использовать различные уровни логики целевой программы. В противном случае - лапша. Поэтому и рефакторинг производится несколько легче.

что-то ты сказал такое странное, я не понял. Объясни для дебила.

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

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

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

Хаскеллеводы за свою типизацию так хватаются, как безногий за костыль. Каждая книжка по Хаскеллю: типы, типы, типы, типы...

Может быть Haskell — язык про типы?

KblCb ★★★★★
()

Haskell круче Lisp'ов по следующим причинам:

  • Легче читается (кто бы что ни говорил, а от лисповых скобок в глазах рябит);
  • Имеет оffициальный сайт;
  • Эталонная реализация в виде GHC;
  • Статическая типизация;
  • Свободный доступ к спецификации языка (HyperSpec suxx, если что);
  • Есть логотипчик;
  • Паттернматчинггуардымонадыфункторыстрелкиалгебраическиетипыбыщьбыщьбыщь;
  • Более активное(?) и дружелюбное(!) сообщество;
  • Моднее в конце концов!
CARS ★★★★
()
Ответ на: комментарий от anonymous

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

Я в данный момент работаю со сканером сетчатки глаза, и смею заметить что его создатели про OOP best practices знают чуть более чем нифуа. Хотя судя по тому что тождество сетчатки он детектирует надежно, математический аппарат в данный продукт заложен неплохой, я думаю.

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

> Лично я не помню ни одного языка, который предоставлял бы из коробки средства для описания контрактов.

D, Eiffel. Но мне не кажется, что __attribute__((context)) - это контракт, потому что context принципиально предназначен для статической проверки. Это скорее близко к проталкиваемой маскотом идее о том, что типы - это предикаты над данными.

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

>всего-навсего суть кучка баззвордов

Задание на лето: почитать Blue Book (это такая книжка по Smalltalk'у) и найти там термин объектно-ориентированный.

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

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

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

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

> D

P_P

Про типы и контракты: можно фантазировать и расширять семантику типов до чего угодно, но стандарты об этом не знают

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

> Про типы и контракты: можно фантазировать и расширять семантику типов до чего угодно, но стандарты об этом не знают

Стандарты чего (и причем тут вообще стандарты)?

tailgunner ★★★★★
()

Потому, что синтаксис лиспов создавался не для людей.
А Factor ну уж очень малоизвестен.

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

Стандарты языков. Стандарты тут при том, что приведенная фича никак не связана с способом типизации в С, и не может быть аргументом в дискуссии про типизацию :]

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

>что-то ты сказал такое странное, я не понял.

Вот смотри: есть у тебя некий тип Identity a. Тогда все возможные вычисления распадутся на два больших класса: а) выполняющие операции для Identity a, б) выполняющие операции для типа «a».

Допустим, есть функция fmap :: (a -> b) -> Identity a -> Indentity b она позволяет, находясь на уровне Identity, «прыгнуть» на уровень «a». Причем, уровень «a» ничего не будет знать об уровне «Identity» и наоборот.

Собственно и любая программа на хаскеле состоит из массы таких вот переходов между логическими «уровнями». И система типов как раз следит чтобы не было нарушений.

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

> Стандарты языков.

Кэп, спасибо за напоминание, что любой __attribute__ нестандартен.

приведенная фича никак не связана с способом типизации в С

Со способомаи типизации в стандартном Си. Но ядро не написано на стандартном Си, сюрприз?

и не может быть аргументом в дискуссии про типизацию :]

Сам пошутил, сам посмеялся.

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

> Я в данный момент работаю со сканером сетчатки глаза, и смею заметить что его создатели про OOP best practices знают чуть более чем нифуа. Хотя судя по тому что тождество сетчатки он детектирует надежно, математический аппарат в данный продукт заложен неплохой, я думаю.

У наших геофизиков тоже математический аппарат заложен неплохой. Но материализован он в виде кучи окаменелого говнокода на Фортране. И вот они теперь хотят своё хозяйство распараллелить на CUDA, суются то туда, то сюда — а им везде руками разводят.

Это я к тому, что методология и code maintainability являются залогом развития проекта. Если код write-only и write-once, то ты хоть обпрограммируйся вне методологий и парадигм. Собственно, таковы 99% лиспового кода.

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

> Задание на лето: почитать Blue Book

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

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

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

vasily_pupkin ★★★★★
()
Ответ на: комментарий от ander-skirnir

>И всё это называется полиморфизм.

Все это называется system F-omega ...

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

Можно взять какой-нибудь PyChecker, и сказать что пыхтон статически типизирован

Ну и что он напроверяет? Он ведь все равно не сможет узнать перед исполнением программы, какие типы у переменных. Все питоновские чекеры в 99% случаев бесполезны. Выдают всякую хрень типа «у вас докстринг в функции не на 3 строчки а на одну» или «название переменной должно быть длиннее 2 символов».

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

>И вот они теперь хотят своё хозяйство распараллелить на CUDA, суются то туда, то сюда — а им везде руками разводят.

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

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

> Можно взять какой-нибудь PyChecker, и сказать что пыхтон статически типизирован

Нельзя. Все статические чекеры для Питона, которые я видел, очень слабые.

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

Да, наверное (Qi?). Но, полагаю, это будет новый язык.

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

Это посыл к концепту, а не решению. Ничего не мешает реализовать PyBlahBah чекер, который будет считать переменные с называением dwBlah целочисленными, итд.

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

> Да, наверное (Qi?). Но, полагаю, это будет новый язык.

Не в большей степени новый, чем C с атрибутами. Даже в меньшей :]

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

>Спасибо, на лето у меня есть чтиво поинтереснее религиозной литературы.

Какая же это религиозная литература? Религиозная литература это GoF и труды Буча и Александреску.

не у всех, как у Вас, каникулы в течение трёх летних месяцев.


Неужели все так плохо? Я, конечно за давностью лет успел забыть, но «отработка» в школе вроде бы больше пары недель не занимает. Да и «положить» на нее не составляло труда. Значит есть такие школы, в которых контингент гребет лопатами все 3 месяца школьных каникул? Позитивненько!

Macil ★★★★★
()

> почему гуглевый тренд показывает стабильный рост интереса к Хаскеллю
Откуда вообще интерес к этим языкам?

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

> Откуда вообще интерес к этим языкам?

Сезонное, наверное, во время сессии.

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

> Откуда вообще интерес к этим языкам?

Оттуда же, откуда и интерес к айфонам, инди-року, винилу и винтажным ломографам.

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

> Давайте уж определяться к чему возник рост интереса, к Схеме, Коммон Лиспу или Clojure.

По-большому счёту, это пофиг. Идея за всеми ними, в принципе, одна, а отличие идёт в количестве и форме батареек.

думаю, Вам не надо пояснять в какую сторону Clojure отличается от прочих платформ, так что вопрос в такой постановке, имхо, риторический

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

Тем не менее, в метапрограммирование добавили ложку массы, благодаря Руби

//fixed

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

> Религиозная литература это GoF и труды Буча

Почему труды Буча — религиозная литература? Сам Буч, вроде бы, возможную пользу других парадигм под сомнение в них не ставит.

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

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

меня тут «копетан» подёгивает за рукав и нетерпеливым шёпотом настаивает, дабы я Вас известил, о том, что попытка выполнить «сложение испуганных ворон с письменными столами» и есть логическая ошибка, что с ним делать не пойму

shty ★★★★★
()

mv попробуй и Haskell, у тебя к нему интерес, похоже, уже давно. Хотя думаю, применять тебе его пока негде. Ну хз, может новый стартап, но теперь со ставкой на суровую статическую типизацию?

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

> Тип описывает характер и способ хранения данных, а контракт характеризует способ их обработки.

Ты всё перепутал. Выучи наизусть: тип определяет множество допустимых значений и множество операций над ними.

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

> А на котором из них написано больше полезных программ?

То-о-олсто...

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

> Почему труды Буча — религиозная литература?

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

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

> множество операций над ними

=> множество возможных операций над ними

Это я понимаю под характером данных. Твоя формулировка точнее в этом аспекте, ок. И что?

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

>Сам Буч, вроде бы, возможную пользу других парадигм под сомнение в них не ставит.

Не спорю. Но по сравнению с Blue Book, где нет термина «объектно-ориентированный»

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