Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Базарная площадь
  
О разделе

Основная страница

Группы обсуждений


Тематический каталог обсуждений

Архив

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
  
 
Во Флориде и в Королевстве сейчас  01:37[Войти] | [Зарегистрироваться]
Обсуждение темы:
Оберон-технология: особенности и перспективы


Тематика обсуждения: Оберон-технология. Особенности, перспективы, практическое применение. 

Количество сообщений на странице

Порядок сортировки сообщений
Новое сообщение вверху списка (сетевая хронология)
Первое сообщение вверху списка (обычная хронология)

Перейти на конкретную страницу по номеру


Всего в теме 6256 сообщений

Добавить свое сообщение

Отслеживать это обсуждение

Обсуждение из раздела
Школа ОБЕРОНА

<<<... | 5896—5887 | 5886—5877 | 5876—5867 | ...>>>
Всего сообщений в теме: 6256; страниц: 626; текущая страница: 38


№ 5886   30-10-2007 05:28 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5873« (Jack Of Shadows)
___________________________

>>>А проблемы нет. Есть непринятие и надуманные страхи.

Мы так скачем по веткам :) , что я уже забыл, где говорил, что человек может утратить контроль над системой типов.
Вот пример из книги Карделли, ссылку на которую дал Geniepro (за что спасибо! :) ):
Algol 68 has carefully defined rules for coercion, using dereferencing, deproceduring, widening, rowing, uniting, and voiding to transform values to the type required for further computation. Type checking in Algol 68 is decidable, but the type-checking algorithm is so complex that questions of type equivalence and coercion cannot always be checked by the user. This complexity was felt by some to be a flaw, resulting in a reaction against complex type systems. Thus, later languages, like Ada, had simpler notion of type equivalence with severely restricted coercion.
 AVC


№ 5885   30-10-2007 04:50 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5883« (Geniepro)
___________________________

... у консервативных оберонщиков почему-то очень нестандартные точки зрения на многие общепринятые вещи...
Почему так? 8-о


Потому что они серьезные, ответственные люди, решающие серьезные задачи.


№ 5884   30-10-2007 04:47 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5876« (Антон Григорьев)
___________________________

А в чём его польза вообще? ...
для самоконтроля лучше продублировать объявление. Примерно такое же отношение у меня и к выводу типов.


Это здравое, ответственное отношение серьезного, ответственного человека.

Береженого Бог бережет (С) Мудрость Веков


№ 5883   30-10-2007 03:51 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5864« (AVC)
___________________________

Просто с определенной (а не вообще) точки зрения (обероновской) между между структурной и утиной типизацией нет принципиального различия.
Конечно -- IMHO.

Да, я давно уже заметил, что у консервативных оберонщиков почему-то очень нестандартные точки зрения на многие общепринятые вещи...
Почему так? 8-о


№ 5882   30-10-2007 03:39 Ответить на это сообщение Ответить на это сообщение с цитированием
По поводу сортировки в Хаскелле.

В Хаскелле есть класс типов Ord, у которого есть методы <, <=, >, >= и некоторые другие...
Когда Вы определяете сортировку на Хаскелле, например, вот так:

qsort  [ ]  = [ ]
qsort (x:xs) = qsort (filter (<=x) xs) ++ [x] ++ qsort (filter (>x) xs)

то в этой функции используются два метода из класса Ord: <= и >, а также несколько операций над списками: разделение списка на две части (x:xs), создание нового списка [x], конкатенация списков ++ и фильтрация списков.
Таким образом, компилятор понимает, что на вход этой функции qsort подаётся список элементов, тип которых принадлежит к классу типов Ord и накладывает ограничение на тип функции:

qsort :: Ord a => [a] -> [a]

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

Ну где здесь динамическая утиная типизация??? Тут самая обыкновенная статическая полиморфная типизация!!!
(Всем, кто не знает, какие бывают виды типизации, срочно читать Люку Карделли, "О понимании типов, абстракций данных и полиморфизма")


№ 5881   30-10-2007 03:37 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5876« (Антон Григорьев)
___________________________
>>>Насколько я понимаю, это теоретически может быть реализовано при любом способе типизации.
Не при любом. В ML это работает всегда, а вот в Haskell с его перегрузками - нет.


a=5
b= [2,4..100]!!3 -- 8
c= [2,4..100]!!a -- Type error in application




№ 5880   30-10-2007 03:16 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5878« (Jack Of Shadows)
___________________________

Вай, как многа букафф... Вот как надо:

[2,4..100]



№ 5879   30-10-2007 03:00 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5867« (AVC)
___________________________
>>> Считается, что языки вроде Хаскеля и ML обладают структурной системой типов.

Не совсем так. В этих языках есть и то, и другое. Можно объявлять новые типы и синонимы для старых.


type IntPair = int*int;
datatype IntPair = Pair of int*int;


В первом случае IntPair - просто пара целых, во втором - новый тип данных.


№ 5878   30-10-2007 02:15 Ответить на это сообщение Ответить на это сообщение с цитированием
Приведу пример для наглядности:

filter even [1..100]


Думаю вам даже не надо обьснять смысл данного кода. Видите, и без типов все ясно.
А теперь с типами:

filter (\x::Integer even x)::Boolean [1..100]


Что, сильно лучше стало ? Или все таки хуже ?



№ 5877   30-10-2007 02:11 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5876« (Антон Григорьев)
___________________________
А я уже обьяснял чуть раньше. Для императивных языков действительно разницы мало. Все равно даже для хаскеля рекомендуется все интерфейсные функции модуля снабжать явно прописанными типами. Для повышения читабельности.

Вот если бы вы имели практический опыт работы с функциональными языками, то знали бы что анонимные функции используются сплошь и рядом. Анонимная функция это по существу один из основных строительных блоков в программе. Особенно в качестве замены циклам - map + анонимная функция. filter + анонимная функция. fold + анонимная функция.

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

Вот для ФЯ - автовывод типов, большое подспорье.


<<<... | 5896—5887 | 5886—5877 | 5876—5867 | ...>>>
Всего сообщений в теме: 6256; страниц: 626; текущая страница: 38


Добавить свое сообщение

Отслеживать это обсуждение

Дополнительная навигация:
Количество сообщений на странице

Порядок сортировки сообщений
Новое сообщение вверху списка (сетевая хронология)
Первое сообщение вверху списка (обычная хронология)

Перейти на конкретную страницу по номеру
  
Время на сайте: GMT минус 5 часов

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

Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

 
© При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
Все используемые на сайте торговые марки являются собственностью их производителей.

Яндекс цитирования