LINUX.ORG.RU

Более лучшие типы

 


0

2

Одна из известнейших персон CS, американский учёный в области вычислительной техники, директор по исследованиям корпорации Google,член Совета Американской ассоциации искусственного интеллекта, Питер Норвиг отмечает бесспорные преимущества первоклассных динамических типов:

Первоклассность: могут быть использованы точно также, как и любой другой объект или значение.

Типы или классы являются объектами времени исполнения (не только времени компиляции)

Переменные могут иметь типы в качестве своих значений

Типы и классы могут быть созданы/изменены в рантайме

Мы имеем функции для манипуляции типами/классами, а также выражения для создания безымянных типов.

Нет необходимости в создании дополнительных динамических объектов для хранения типов, так как это делают сами объкты типов.

http://norvig.com/design-patterns/design-patterns.pdf стр 11



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

собрав схему ты не проверишь там типы все всплывет в рантайме

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

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

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

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

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

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

Ладно, напросился, взорву таки твой малюсенький мозг. Нарисовал ты какую-то схему, допустим, она у тебя на бумаге, не в железе. Может быть в голове. Как ты ее чекнешь, если не реализуешь в железе и не запустишь? Че ты тут про схемы тут рассказываешь, ты знаешь что это такое, вообще, школяр? Или ты про отверточников, которые на конвейре типовые схемы собирают? Так то не электрики. Электрики — это которые думают и делают.

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

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

В углу рыдают Ом, Кирхгоф, миллионы инженеров-электриков и разработчиков САПР.

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

То есть, Ом, Кирхгоф и миллионны инженров прибегают и изучают твою схему? Потом устраивают совещание и выносят вердикт, да сладенький? Какое это имеет отношение к тайпчекингу?

А твой тайпчекер, наверное зовет духов тьюринга, черча, а порой и дейкстры?

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

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

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

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

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

логических схемах

Это вообще единички и нули, и с динамической типизацией это ничего общего не имеет.

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

Описываю данные, входящие и исходящие. Потом пишу код, который преобразует одно в другое.

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

под логическими схемами в электротехнике понимаются, не нули и единицы(которые, BTW, к понятию схема вообще не имеют отношения), а реализацию управления и защиты, например РЗА

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

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

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

То есть, Ом, Кирхгоф и миллионны инженров прибегают и изучают твою схему?

То есть Ом и Кирхгоф уже умели проверять схемы без «реализации в железе», а уж САПР... впрочем, откуда тебе, монтеру, об этом знать.

Какое это имеет отношение к тайпчекингу?

А статический тайпчекинг - это проверка правильности программ без запуска. Не видишь аналогии с проверкой схем при помощи закона Кирхгофа? Ну да, ты же тупой и невежественный.

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

эмуляторов схемотехники - хоть жопой ешь

скажу тебе по секрету, эмуляторам доверяют только дебилы. И эмулятор — это интерпретатор[схемы], по сути, никакого отношения к статике они не имеют.

это просто ты программировать не умеешь

Расскажи это Алану Кею, Карлу Хьюитту, можешь даже потявкать на Маккарти, земля ему пухом. Это весело.

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

Не видишь аналогии с проверкой схем при помощи закона Кирхгофа?

Примерно такая же как между контролером отк и технологом.

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

умели проверять схемы без «реализации в железе

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

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

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

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

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

Расскажи нам, как ты это делаешь?

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

тормоза, тормоза и ещё раз тормоза

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

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

Ну так и прогер на динамике умеет проверять программы без тайпчекинга, дебилушка

Читать научись, кретин. Я написал «проверка правильности программ без запуска». И, кстати, в программе на динамике тоже есть тайпчекинг, только в рантайме и постоянно.

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

Я написал «проверка правильности программ без запуска»

А ты просто бредишь. Ты не понимаешь даже, что твой тайпчекер — это тоже программа.

И, кстати, в программе на динамике тоже есть тайпчекинг, только в рантайме и постоянно.

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

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

Ты не понимаешь даже, что твой тайпчекер — это тоже программа.

Ну да, только ты один и понимаешь такие глубокие истины.

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

Ну так кто тебе мешает написать свой собственный чекер? С блекджеком и шлюхами? Чо ты тут доказываешь то тогда? Прога с интроспекцией на этапе старта может проверить сама себя, разница в том, что она может проверить себя вообще в любой момент, а в твоей говностатике — лишь однажды.

javaQest
() автор топика

Тред не читал, но сразу заявляю: динамическая типизация - зло! Только статика, только хардкор.

StReLoK ☆☆
()
Ответ на: комментарий от javaQest

Ну так кто тебе мешает написать свой собственный чекер? С блекджеком и шлюхами?

И сделать из динамического языка статический? Никто.

Чо ты тут доказываешь то тогда?

Я ничего не доказываю - на случай того, что «нас читают дети», я просто показываю твои глупость и некомпетентность.

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

Он не будет статическим. Еще раз. Любой динамический язык с интроспекцией обладает такими свойствами искаропки. Статическое говно, в этом смысле — частный случай, ограниченный компилтаймом.

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

То есть статистики хотя бы примерной у тебя нет?

Например ты мог бы заявить: путаюсь при рефакторинге модуля от 700 строк в динамике. А мы такие: ум, неплохо, парень, неплохо, держи в пределах 500-600. Но ты теоретик-кукаретик, садли.

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

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

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

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

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

но пользовать это - нах надо: тормоза, тормоза и ещё раз тормоза. вся эта интерпретаторная хрень не годится для серьёзных приложений

вот в дебаге jit применим

Емае, я-то думал с умных человеком говорю, но басист - он и есть басист.

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

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

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

А почему ты убежал от тысячи строк к порождению абстракции? Надеешься, что эти тысячу кто-то за тебя напишет? Тогда твоя правда, алерт через хттп показать много ума не надо.

Ты давай эти 1000 напиши, через месяц-другой добавь туда фич, и выкати в «продакшен», где тебя выеб*т за простой. Этого говна я лично еще в начале века нажрался, когда такой бекофисный гений выкатывал «илитный запил», который при установке у клиента валился в первые две минуты, снося часть базы.

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

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

это смотря в каком яп. В Io, например, вообще вся информация доступна прямо в рантайме, вплоть до исходного кода.

И чо толку от этого, если у тебя на для вызова функции нужна переменная $argument непонятного типа и непонятного назначения? Ты что ей подсовывать будешь? Рандомный класс? Или у тебя юзер в рантайме будет определять какую функцию как вызывать что-ли?

А при чем тут динамика? Это приведение типов.

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

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

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

Это слишком жирно. Ты или трололо или некомпетентный идиот, раз ядра ос для тебя не сложнее hw.

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

если ты о юниксе, то первые версии, BTW, были написаны отнюдь не на сишке. То на чем они были впоследствии переписаны, к делц отношения не имеет. Все рано или поздно переписывается, как правило.

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

Там сказано, почему они не хотят запиливать это. Конкретно: из-за того, что сигнатуры типов после этого станут менее информативными, и из-за того, что после этого нельзя будет делать type erasure.

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

Если что, лучше всего к дисциплине приучает компилятор со статическими типами.

Ну это ложь. Как показывает практика, единственное, к чему приучает статика - это лепить костыли для обхода системы типов. Посмотри на код, который пишет большая часть статикодебилов - они же возможностями тайпчекера не пользуются и на 10%. Больше всего меня веселят хаскиебы в этом плане - сперва кукарекают в бложике про ВЕРИФИКАЦИЮ, а потом идут и пишут в своем уютненьком проектике такой пиздец, что хочется развидеть.

Я после этого всего полностью убедился, что если человек не писал несколько лет на динамике плотно - то к статике его подпускать нельзя. Просто нельзя. Потому что это обезьяна и очки.

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

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

Динамикокодер дисциплинирован и прекрасно понимает, что нихуяшеньки он не помнит. А потому быстро-быстро на уровне рефлекса приучается к правильным практикам, которые позволяют исключать целые классы ошибок. Потому что иначе адъ и погибель, иначе просто нельзя. Статикокодер же надеется на типы и гарантии, продолжая генерировать говно. Ну а чо, действительно - кое-что типы дают, в итоге даже обезьянним методом написанная программа не разваливается как склеенный моментом тарантас на первом ухабе.

«1»+2 - это что, сложение или склеевание строк? А если «с»+2?

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

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

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

Но что характерно: программы на рубях действительно рассыпаются, не смотря на чудеса ДИСЦИПЛИНЫ, когда же программы на хаскеле работают, не смотря на всеобщий разброд и шатание.

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