Оберон-клуб «ВЄДАsoft» https://zx.oberon.org/forum/ |
|
Простые типы https://zx.oberon.org/forum/viewtopic.php?f=79&t=331 |
Страница 1 из 1 |
Автор: | Len [ 20 сен 2017, 16:32 ] |
Заголовок сообщения: | Простые типы |
Как объявить в КП тип вроде этого: Код: "OBERON"
|
Автор: | Zorko [ 20 сен 2017, 18:02 ] |
Заголовок сообщения: | Re: Простые типы |
Цитата: Почему из Оберона исключены перечисления?
Перечисление (enumeration) -- довольно удобный тип, введенный в языке Паскаль (1970) и сохраненный в Modula-2 (1979). Тем не менее, в Обероне он исключен. Причин несколько: во-первых, при введении в Обероне нового механизма расширения типов выясняется, что этот тип становится особым -- его нельзя расширять. Кроме того, поскольку тип перечисление определяется совокупностью идентификаторов констант, то при экспорте требуется передавать все значения (хотя наличие спецификаторов экспорта позволяет экспортировать значения на выбор). Это ввело бы ненужную путаницу. Вирт принял решение отказаться от перечислений, считая, что вполне достаточно в случае острой необходимости имитировать такой тип набором констант. Тип перечисление -- слишком простое средство, чтобы оно могло выйти из-под контроля. Однако, оно не позволяет распространять расширяемость за пределы модуля. И либо нужно ввести средство для расширения типа перечисление, либо же от типа перечисление надобно отказаться. Причина, по которой мы выбрали второй путь -- путь радикального решения -- кроется в том, что во все возрастающем числе программ непродуманное использование перечислений (и диапазонов) ведет к демографическому взрыву среди типов, что, в свою очередь, ведет не к ясности программ, а к их многословию. В связи с использованием экспорта и импорта перечисления приводят к исключению из правил, и согласно ему импорт идентификатора типа также приводит к автоматическому импорту всех связанных с типом идентификаторов констант. Это исключение нарушает концептуальную простоту и создает для реализаторов языка неприятные проблемы. Niklaus Wirth. From Modula to Oberon (1988) |
Автор: | vlad [ 21 сен 2017, 17:59 ] |
Заголовок сообщения: | Re: Простые типы |
Zorko писал(а): Цитата: Почему из Оберона исключены перечисления? Niklaus Wirth. From Modula to Oberon (1988) А что такого плохого в "демографическом взрыве среди типов" и почему это не ведет "к ясности программ"? По-моему опыту все ровно наоборот: детальная типизация повышает ясность программ и позволяет компилятору меня поправлять. |
Автор: | Wingtiger [ 21 сен 2017, 21:17 ] |
Заголовок сообщения: | Re: Простые типы |
будете спорить с создателем языка? В конце концов и транслятор со сборки дотнета в з80 можно написать (с тучей оговорок и подгонок, с нуля ллвм как бы не проще окажется) |
Автор: | Comdiv [ 22 сен 2017, 14:13 ] |
Заголовок сообщения: | Re: Простые типы |
Len писал(а): Как объявить в КП тип вроде этого: Код: "OBERON"
Например, так. Код: "OBERON"
С учётом того, что, скорее всего, перечисление Вам нужно не само по себе, а с некоторым кодом, то вполне возможно, что нужно именно что-то вроде этого. Также на примере видна проблема классических перечислений. Фигуры не исчерпываются перечисленными, и если в другом модуле захочется расширить список, то сделать это будет проблематичным без изменения 1-го модуля. |
Автор: | vlad [ 22 сен 2017, 15:21 ] |
Заголовок сообщения: | Re: Простые типы |
Wingtiger писал(а): будете спорить с создателем языка? А что, есть некое неписанное правило не спорить с создателями языка? Wingtiger писал(а): В конце концов и транслятор со сборки дотнета в з80 можно написать (с тучей оговорок и подгонок, с нуля ллвм как бы не проще окажется) Не понял к чему это... |
Автор: | Wingtiger [ 22 сен 2017, 21:01 ] |
Заголовок сообщения: | Re: Простые типы |
vlad писал(а): А что, есть некое неписанное правило не спорить с создателями языка? не нравится - не используй, есть множество других языков.vlad писал(а): Wingtiger писал(а): В конце концов и транслятор со сборки дотнета в з80 можно написать (с тучей оговорок и подгонок, с нуля ллвм как бы не проще окажется) Не понял к чему это... |
Автор: | vlad [ 23 сен 2017, 05:00 ] |
Заголовок сообщения: | Re: Простые типы |
Wingtiger писал(а): не нравится - не используй, есть множество других языков. Ну вот и поговорили... Wingtiger писал(а): сделать можно что угодно, но нужно ли? Применительно к перечислениям есть хороший пример Джавы. Там тоже твердили мантру про "ненужность" и придумывали всякие теоретические обоснования, а IDE в один клик генерили болванки для труЪ ООП перечислений (каждое значение - объект). Пока C# на пятки не стал наступать, в котором все было и отлично работало, потому что он "как Джава, только лучше". После чего мантры выкинули, а перечисления успешно добавили в язык ![]() |
Автор: | Wingtiger [ 23 сен 2017, 13:57 ] |
Заголовок сообщения: | Re: Простые типы |
а вы применение языков не путаете? |
Страница 1 из 1 | Часовой пояс: UTC + 2 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |