Форум
Образование и наука
Тема
Как правильно задавать вопросы
B
I
abc
U
X
3
X
3
H1
H2
H3
H4
H5
H6
Asm
C/C++
C#
Erlang
Haskell
IDL
Java
Lisp
MSIL
Nemerle
ObjC
OCaml
Pascal
Perl
PHP
Prolog
Python
Ruby
Rust
SQL
VB
Здравствуйте, netch80, Вы писали: N>Здравствуйте, Mr.Delphist, Вы писали: C>>>И где тут строгость? Просто идиотское ограничение - оба массива идентичны. MD>>Похоже, насчёт строгой типизации нам говорить ещё рано :( N>Верно замечено - вам, похоже, таки рано. N>Там, где не рано, делают, например, так (близко к Ada) N>[code] N>type real = float; N>type temperature = new float; N>type altitude = new float; N>type foo = struct { N> bar: integer; N> baz: float; N>}; N>type buka = foo; N>type ziuka = new foo; N>[/code] N>и с этого момента buka - просто алиас для foo, а ziuka - намеренно отдельный тип, все имплицитные соответствия, конверсии и присвоения запрещены, то же для температуры (ей высоту просто так не присвоишь, матчинг функции не будет происходить, и так далее). N>А теперь сюрприииз - в том самом Go, в котором вы увидели только duck typing, то же самое: N>[code] N>type real = float N>type altitude float N>type temperature float N>type foo struct { N> bar int N> baz float N>} N>type buka = foo N>type ziuka foo N>[/code] N>с тем же результатом - buka идентичен foo (алиас для него), real = float во всём использовании, а вот ziuka, altitude и temperature отделены. N>А изображать "строгую типизацию" разделением типов просто из-за идентичного объявления массива в двух местах... ну да, Вирту в Модуле такое приснилось. Только повторять это на трезвую голову никто не хочет. MD>> Синтаксис JS строже чем у Pascal... Разрешите тогда упомянуть классику: https://www.destroyallsoftware.com/talks/wat N>Я не защищаю тут позицию Cyberaxʼа, но вы синтаксис от семантики не отличаете. N>С синтаксисом у JS, таки, есть проблемы, но в другом, например: N>[code] N> return N> 1; N>[/code] N>он вернёт null. N>В ролике про WAT про это ни слова, там другие хохмы (да, реальные и грустные). N>Кстати, ещё один из ваших мифов про Go: MD>> Go — основан на duck-typing (ещё бы, наследования-то не завезли) N>Завезли: N>[q]A field declared with a type but no explicit field name is called an embedded field. An embedded field must be specified as a type name T or as a pointer to a non-interface type name *T, and T itself may not be a pointer type.[/q] N>[q]A field or method f of an embedded field in a struct x is called promoted if x.f is a legal selector that denotes that field or method f.[/q] N>[q] Given a struct type S and a defined type T, promoted methods are included in the method set of the struct as follows: N> If S contains an embedded field T, the method sets of S and *S both include promoted methods with receiver T. The method set of *S also includes promoted methods with receiver *T. N> If S contains an embedded field *T, the method sets of S and *S both include promoted methods with receiver T or *T. N>[/q] N>И это наследование ещё и множественное. Вот виртуальных функций в нём, да, нет и не предвидится, поэтому по сравнению с традиционным наследованием типа C++/Java/etc. оно инвалидное.
Теги:
Введите теги разделенные пробелами. Обрамляйте в кавычки словосочетания с пробелами внутри, например:
"Visual Studio" .NET
Имя, пароль:
Загрузить
Нравится наш сайт?
Помогите его развитию!
Отключить смайлики
Получать ответы по e-mail
Проверить правописание
Параметры проверки …