
Aleh
04.09.2018
07:57:21
Обычно про утиную говорят в контексте отсутствия compile time проверок
Но вроде да, похоже

Артур Евгеньевич
04.09.2018
07:58:37
На инкапсуляцию болт не забивается
Как незабивается? Я говорю про структурную. Т.е нам чтобы заюзать объект в функции изначально нужно иметь к нему доступ, т.е он должен иметь публичные поля, доступные как минимум на чтение

Aleh
04.09.2018
07:58:56
Причем тут поля

Google

Aleh
04.09.2018
07:59:02
Он может иметь публичные методы
Ты описываешь интерфейс с полями и методами, как обычный интерфейс и дальше он проверяется не по явной иерархии наследования, а по сравнению типов
Реализации все также могут иметь свои приватные вещи

Артур Евгеньевич
04.09.2018
08:02:19
тогда не понял в чем отличие утиная vs структурная
и вообще не понял применимиоть этого, могут два разных объект с методами одинаково названными, но делающими совсем разные вещи заюзаться спокойно
имею ввиду многозначныые слова, например - ключ, побег, коса
ну и с глаголами такое тоже есть

Aleh
04.09.2018
08:05:05

Артур Евгеньевич
04.09.2018
08:10:12
а как его соблюдать, если я явно не могу указать что вот тип А является подтипом для Б? Или под "соблюдать" ты имеешь ввиду что в клиенском коде не передавать не подходящие объекты в функцию? так в чем вообще тогда смысл такой типизации, если я должен думать еще что туда передать?

Aleh
04.09.2018
08:47:09
У истории с lerna все-таки happy end: https://github.com/lerna/lerna/pull/1633


Nikita?️?
04.09.2018
09:59:46
У истории с lerna все-таки happy end: https://github.com/lerna/lerna/pull/1633
“наконец я доделал программу 3D-Brush. Но в последний момент возникло сомнение – ведь ее можно использовать как угодно, в том числе и для недобрых целей. Тогда решили написать ограничение в разделе загрузки и в лицензионном соглашении, сославшись на ответственность перед Богом за использование программы в плохих целях. Выпустить программу без такого ограничения было бы против совести, и мы сами мучились бы видя как используется наша программа. А ощущение мира со своей совестью и с Богом намного дороже любых денег. ”
https://dis.tinychan.org/read/prog/1536054813

Google

Aleh
04.09.2018
10:34:26
Ох уж это гипертрофированное чувство справедливости )

Sergey
04.09.2018
10:39:37
Ёбнутые

Uiiuviiw
04.09.2018
10:46:43

Aleh
04.09.2018
10:48:29
Потому что оно уже не ведет себя, как утка

Uiiuviiw
04.09.2018
10:49:43

Aleh
04.09.2018
10:50:06
Что в контексте функций?

Uiiuviiw
04.09.2018
10:50:41
{a: number} === {a: string}
это одно и тоже в контексте утиной

Aleh
04.09.2018
10:51:02
Нет

Uiiuviiw
04.09.2018
10:51:12
в контексте структурной - нет

Aleh
04.09.2018
10:51:21
Разница между утиной и структурной только в runtime vs compile time
И больше никакой

Uiiuviiw
04.09.2018
10:53:46
а причем сложение? Это сильная или слабая типизация...
Высравниваете разные вещи

Sergey
04.09.2018
10:55:47
ибо я вполне могу проверить и типы аргументов, а не только ключ
если у языка есть возможность делать интроспекцию кода - вообще никаких особо ограничений в том плане что именно я проверяю
важен факт что я вообще проверяю че там че умеет

Google

Uiiuviiw
04.09.2018
10:58:52
в структурной не пройдет

Sergey
04.09.2018
10:59:21
даже в ruby я могу это дело разрулить не только по ключу если аннотации с типами присутствуют

Uiiuviiw
04.09.2018
11:00:01
ну с дури можно дофига чего... еслитак, то типизации вообще не существует

Sergey
04.09.2018
11:00:49
но опять же в случае той же руби у тебя и структурная типизация только по ключу будет чекать

Uiiuviiw
04.09.2018
11:01:23
ну в рантайме разные типы в структурной не пройдут

Sergey
04.09.2018
11:01:28
следовательно единственная существенная разница - рантайм vs компайлтайм

Uiiuviiw
04.09.2018
11:01:57
в утиной пожалуйста, а в структурной нет. это правило. если есть языки нарушающие это, это это их проблема, значит они не чисто структурные

Sergey
04.09.2018
11:03:38
"не чисто структурные" - что за определения такие и откуда ты их родил
правила - дай формулировку правила
нихера не понятно
и главный вопрос - что именно дает тебе твоя версия различий?
ибо наша с Олегом - вполне себе понятно объясняет что есть что и плюсы и минусы. А твоя - ничего не проясняет вообще и только усложняет

Uiiuviiw
04.09.2018
11:06:24
я же дал, что в структурной типы учитываются, а в утиной нет. Неучитываются в утиной типы параметров, и возвращаемые типы. а в структурной, различиетипов, в рантайме должно ошибку вызвать. Если не вызывает, то значит реализация языка.Даже рантайм должен значения сверять
как модно говорить, она не ваша? чего она усложняет-то? Она отличает структурную от утиной.

Sergey
04.09.2018
11:08:06

Google

Sergey
04.09.2018
11:08:25
могу ли я делать структурный тайпинг в рантайме? могу ли я делать дак тайпинг в компайлтайме?

Uiiuviiw
04.09.2018
11:09:24
второй - частично. вывод типов, но без описания кастомных типов, он не осилит полностью. вариантов слишком много
сруктурный в рантайме - обязаны.

Sergey
04.09.2018
11:10:36

Uiiuviiw
04.09.2018
11:10:45
структурный не отличается от номинативной.

Sergey
04.09.2018
11:10:52
ловите наркомана

Uiiuviiw
04.09.2018
11:11:06
только сопастовляется другими способами.

F01134H
04.09.2018
11:11:21
?

Uiiuviiw
04.09.2018
11:12:01
ну если до вас туго доходит то, чего нет на вики, в чем моя проблема?

Olexandr
04.09.2018
11:12:04
что можно по архитектуре почитать?

Uiiuviiw
04.09.2018
11:12:18
как работает номинативныйтайпинг в рантайме?

Sergey
04.09.2018
11:12:21

Uiiuviiw
04.09.2018
11:12:38
точно также и структурный, только в струкурном стиле.
вы пока только mvc задолбили в подкорку, типизация пока тяжело?

F01134H
04.09.2018
11:13:28
еще рестфул

Uiiuviiw
04.09.2018
11:13:40
без упреков, я просто давно завами наблюдаю и канал постоянно читаю.
Вы столько языков озвучиваете, а Вы на них реально пишите? или просто книги читаете для общего представления?

F01134H
04.09.2018
11:15:47
а зачем прогать, если можно просто читать книги

Google

Uiiuviiw
04.09.2018
11:16:38
Вы просто мозги включите и подумайте, что когдавы собирете данные о типе в рантайме утиной типизации, то правила к ним будут применяться утиные. по ним f():void будет равной f():boolean. а в структурной такое недопустимо!
в структурной правила как в номинативной, только без иерархии.
нет, это просто обычные умозаключения, окоторых пока книги не пишут. просто нужно знать как компиляторы работают.

Дмитрий
04.09.2018
11:19:23
О, трип репорты в реалтайме пошли

F01134H
04.09.2018
11:21:22

Uiiuviiw
04.09.2018
11:22:32
и говоря о типизации, мы не говорим только о приведениитипов, туда входят множество других факторов. и поэтому нельзя рассматривать только приведение.
да, с параметрическим полиморфизмом, чтоб весело было

F01134H
04.09.2018
11:24:02
И из этого следует, что я не прав?)
пардонъ, иногда слова из гугла совпадают со словами, которые я произношу
так уж вышло, что у нас одна словарная база

Uiiuviiw
04.09.2018
11:30:28
ну я могу казаться странным, но после того, как я уидел на что способны настоящие боты, явсех чуваков, которые контекст разговора не понимают, сразу к ботам причисляю. тем более в чатах программистов. ведь дляпрогера это верхкрутости сделать бота, которого другие прогеры не вычислят.

Артур Евгеньевич
04.09.2018
11:34:31
@invariance можешь поздравить создателя с достижением верха крутости, я за два года не разгадал в тебе бота

F01134H
04.09.2018
11:36:39
?
ты таблеточки сегодня выпил?