Оберон-технология: особенности и перспективы |
Тематика обсуждения: Оберон-технология. Особенности, перспективы, практическое применение.
Всего в теме 6256 сообщений
Добавить свое сообщение
Отслеживать это обсуждение  Обсуждение из раздела Школа ОБЕРОНА
№ 5876 30-10-2007 02:02 |  |
Ответ на »сообщение 5873« (Jack Of Shadows)
___________________________
Вывод типов уже признан как полезное качество языков программирования.
А в чём его польза вообще? Только в том, что можно писать на один идентификатор меньше, или ещё в чём-то? Пока мне это напоминает то, что в Delphi, объявив функцию в разделе interface, при её реализации в implementation я могу не писать все параметры заново, а ограничиться именем функции. Раньше я так и делал, но потом оказалось, что для самоконтроля лучше продублировать объявление. Примерно такое же отношение у меня и к выводу типов.
Предположим, что в каком-то сложном выражении я ошибочно предположил, что тип результата будет A, а на самом деле он будет B. Если я явно написал тип результата, компилятор меня сразу поправит. А если положился на вывод типов, то функция в итогне будет иметь не тот тип, который я ожидаю. Таким образом, явное указание типа - это что-то вроде доказательства кода, и я не понимаю, какие преимущества даёт отказ от него (ну, кроме того, что надо нажимать меньше кнопок).
№ 5875 30-10-2007 01:16 |  |
Ответ на »сообщение 5873« (Jack Of Shadows)
___________________________
... уже признан как полезное качество языков программирования. Так например в сишарп 3.5 будет автовывод типов. ...
Хорошая рекомендация, ничего не скажешь.
Эдак получится, что любой язык должен быть расширением сишарп ***.
№ 5874 30-10-2007 01:06 |  |
Ответ на »сообщение 5873« (Jack Of Shadows)
___________________________
Ответ на »сообщение 5872« (Антон Григорьев)
___________________________
Как-то вы странно перескочили с проблемы автовывода типов
А проблемы нет. Есть непринятие и надуманные страхи.
Надуманные?? Ни хрена себе...
№ 5873 30-10-2007 01:00 |  |
Ответ на »сообщение 5872« (Антон Григорьев)
___________________________
Как-то вы странно перескочили с проблемы автовывода типов
А проблемы нет. Есть непринятие и надуманные страхи.
Что касается перескока на другую тему, да тут это сплошь и рядом происходит. :))
а компилятор сам бы догадался
Правильно. И не только догадался бы, но и нам бы подсказал красивой всплывающей подсказкой в IDE.
Вывод типов уже признан как полезное качество языков программирования. Так например в сишарп 3.5 будет автовывод типов. Он неизбежно проникнет в mainstream так же как в свое время и сборщик мусора перекочевал из функциональных языков во все основные императивные языки.
Так что я думаю спорить на эту тему уже поздно. Разве что закрытым сообществам типа оберонистов :))
№ 5872 30-10-2007 00:51 |  |
Как-то вы странно перескочили с проблемы автовывода типов на сравнение способов типизации. ИМХО, это разные вещи. Автовывод это примерно следующее. Пусть у нас есть функция Add, описанная так:
function Add(A, B: Integer): Integer;
begin
Result := A + B
end;
Если бы у нас был автоматический вывод типов, мы могли бы вообще не указывать тип функции, а компилятор сам бы догадался, что при сложении двух целых результат тоже будет целым. Или наоборот - указать только тип функции и тип одного параметра, а компилятор догадался бы, что для того, чтобы при сложении с целым получилось бы целое, второй параметр тоже должен быть целым. Насколько я понимаю, это теоретически может быть реализовано при любом способе типизации.
№ 5871 29-10-2007 19:10 |  |
Ответ на »сообщение 5870« (Jack Of Shadows)
___________________________
>>>Охохохо :)) Чрезвычайная переоценка с "большей безопасностью" (что я только что обьяснил) и чрезвычайная же недооценка потери гибкости. Колоссальная потеря гибкости. Приводящая к созданию громоздких механизмов интерфейсов и наследования (со своими болячками) для решения этой проблемы.
Дело в сравнительной значимости "безопасности" и "гибкости".
Мне кажется, что -- резюмируя сегодняший "раунд" :) -- какая-то подвижка имела место.
До этого мы просто не понимали друг друга в отношении автовывода и т.п.
№ 5870 29-10-2007 18:55 |  |
Ответ на »сообщение 5867« (AVC)
___________________________
However this may not be desirable where the programmer wishes to create closed abstractions.
Проблема я считаю надуманная. Потому что для того чтобы создавать subtypes вам все таки придется явно их описывать как принадлежащими к основному типу. Да еще и дать реализацию ВСЕХ необходимых функций, входящих в состав типа класса. Случайно сделать вы это в принципе не сможете. По дури выполнить СТОЛЬКО ЛИШНЕЙ работы тоже. Ну а если уж вы умудритесь найти такого настойчивого дурака который избрал бы такой тяжелый в исполнении метод расшибания своего лба, то уж извините, это не является недостатком ни хаскеля, ни оберона.
(Я подчеркнул места о большей безопасности типов в номинативной системе по сравнению со структурной -- ценой некоторой потери гибкости.)
Охохохо :)) Чрезвычайная переоценка с "большей безопасностью" (что я только что обьяснил) и чрезвычайная же недооценка потери гибкости. Колоссальная потеря гибкости. Приводящая к созданию громоздких механизмов интерфейсов и наследования (со своими болячками) для решения этой проблемы.
Считается, что языки вроде Хаскеля и ML обладают структурной системой типов. В чем именно это проявляется?
В хаскеле это type classes и GADT. Ocaml я не знаю.
Или Хаскелю удается получить от структурной типизации одни плюсы, без каких-либо минусов?
Какие минусы ? Пресловутая "потеря безопасности" ? Это даже не стоит обсуждать. Беспочвенные домыслы.
Что нибудь еще ? Есть ли система типов еще более мощная ?
Да есть. Dependent types.
Сейчас ведутся работы некоторыми членами хаскель сообщества над реализацией dependent types в хаскеле.
Посмотрим к чему это приведет.
№ 5869 29-10-2007 18:32 |  |
Ответ на »сообщение 5857« (Дядя .СЭМ)
___________________________
... Умных людей нужно читать и перечитывать ...
Точно!!
Дозволял бы форум, поставил бы Вас в "друзья"!
№ 5868 29-10-2007 18:30 |  |
Ответ на »сообщение 5866« (Jack Of Shadows)
___________________________
>>>Ах вот вы о чем. Как инструмент полиморфизма конечно, результат достигается один и тот же. А вот механика принципиально разная.
Совершенно верно. Я сконцентрировался на результате, а механизмы его достижения намеренно игнорировал, чтобы выделить общее.
№ 5867 29-10-2007 18:26 |  |
Ответ на »сообщение 5865« (Jack Of Shadows)
___________________________
AVC >>>Это очень похоже на принцип размерности в физике: килограммы нельзя складывать с секундами, хотя структурно и те, и другие выражаются через значение с плавающей точкой.
Немного о номинативной системе типов:
http://en.wikipedia.org/wiki/Nominative_type_system
Nominal typing is useful at preventing accidental type equivalence, and is considered to have better type-safety than structural typing. The cost is a reduced flexibility, as, for example, nominal typing does not allow new super-types to be created without modification of the existing subtypes.
http://en.wikipedia.org/wiki/Structural_typing:
Structural subtyping is arguably more flexible than nominative subtyping, as it permits the creation of ad hoc types and interfaces; in particular, it permits creation of a type which is a supertype of an existing type T, without modifying the definition of T. However this may not be desirable where the programmer wishes to create closed abstractions.
(Я подчеркнул места о большей безопасности типов в номинативной системе по сравнению со структурной -- ценой некоторой потери гибкости.)
Случайно наткнулся также на сравнение разных систем типов:
http://www.c2.com/cgi/wiki?NominativeAndStructuralTyping
>>>Простите но в очередной раз сталкиваюсь с суждениями о том чего вы не пробовали.
Возможно, Вы правы.
Поэтому я спрошу об этом Вас.
Проясните, пожалуйста, один момент. Считается, что языки вроде Хаскеля и ML обладают структурной системой типов. В чем именно это проявляется?
Или Хаскелю удается получить от структурной типизации одни плюсы, без каких-либо минусов?
Добавить свое сообщение
Отслеживать это обсуждение 
Дополнительная навигация: |
|