OberonCore https://forum.oberoncore.ru/ |
|
Оберон-07 https://forum.oberoncore.ru/viewtopic.php?f=115&t=615 |
Страница 7 из 12 |
Автор: | AVC [ Понедельник, 27 Октябрь, 2008 11:18 ] |
Заголовок сообщения: | Re: Оберон-07 |
Trurl писал(а): Наличие SHORTINT и т.п. все равно не спасает от необходимости использовать искусственные приёмы. Какие именно?Допустим, я получаю из ОС (скажем, Windows) некую структуру, в которой есть поле типа short int. Если в языке нет типа SHORTINT, то у меня проблема. Если в языке есть тип SHORTINT, то проблемы нет. |
Автор: | slava [ Понедельник, 27 Октябрь, 2008 11:30 ] |
Заголовок сообщения: | Re: Оберон-07 |
Подключаем SYSTEM и используем SHORTINT, в чем проблема то? Ведь данные приходят с ОС, значит системность "налицо"! |
Автор: | AVC [ Понедельник, 27 Октябрь, 2008 12:29 ] |
Заголовок сообщения: | Re: Оберон-07 |
slava писал(а): Подключаем SYSTEM и используем SHORTINT, в чем проблема то? Ну, проблем две. Ведь данные приходят с ОС, значит системность "налицо"! Во-первых, в модуле SYSTEM нет SHORTINT (согласно описанию языка). Во-вторых, не хотелось бы использовать SYSTEM при всяком пустяковом затруднении. |
Автор: | Trurl [ Понедельник, 27 Октябрь, 2008 12:47 ] |
Заголовок сообщения: | Re: Оберон-07 |
AVC писал(а): Допустим, я получаю из ОС (скажем, Windows) некую структуру, в которой есть поле типа short int. Если в языке нет типа SHORTINT, то у меня проблема. Если в языке есть тип SHORTINT, то проблемы нет. Совсем нет? А выравнивание? А если этот short int - unsigned? А если он :12? |
Автор: | AVC [ Понедельник, 27 Октябрь, 2008 13:03 ] |
Заголовок сообщения: | Re: Оберон-07 |
Trurl писал(а): AVC писал(а): Допустим, я получаю из ОС (скажем, Windows) некую структуру, в которой есть поле типа short int. Если в языке нет типа SHORTINT, то у меня проблема. Если в языке есть тип SHORTINT, то проблемы нет. Совсем нет? А выравнивание? А если этот short int - unsigned? А если он :12? (Они, вероятно, решаются с помощью сдвигов и/или MOD.) Но при отсутствии SHORTINT у нас порой даже не будет возможности описать структуру. Например: Код: struct stupid {
short int n; /* занимает 2 байта */ char a[16]; }; |
Автор: | Александр Ильин [ Понедельник, 27 Октябрь, 2008 13:25 ] |
Заголовок сообщения: | Re: Оберон-07 |
AVC писал(а): slava писал(а): Подключаем SYSTEM и используем SHORTINT, в чем проблема то? Ну, проблем две. :) Ведь данные приходят с ОС, значит системность "налицо"! Во-первых, в модуле SYSTEM нет SHORTINT (согласно описанию языка). Во-вторых, не хотелось бы использовать SYSTEM при всяком пустяковом затруднении. На "во-вторых": интерфейс к ОС (или к железу!) должен быть инкапсулирован в низкоуровневые модули, использующие SYSTEM, а вся остальная программа уже должна быть максимально от него свободна. Таким образом, в данном случае SYSTEM используется по прямому назначению, а не по пустяковым затруднениям. В целом предлагаю вспомнить, что Оберон призван быть языком высокого уровня. Вирт жалел, что дал слабину и оставил SYSTEM в языке. В идеале все низкоуровневые модули должны быть написаны на чём-то более подходящем к случаю, а не на Обероне. |
Автор: | Александр Ильин [ Понедельник, 27 Октябрь, 2008 13:30 ] |
Заголовок сообщения: | Re: Оберон-07 |
AVC писал(а): Да, какие-то проблемы остаются. :roll: Это всё задачи конвертации данных из низкоуровневого представления в удобное для работы на языке высокого уровня (и наоборот). Эта задача должна выполняться в модуле-прослойке, чтобы "наверху" ни у кого голова не болела по поводу выравнивания, диапазонов при вычислениях и т.п.
(Они, вероятно, решаются с помощью сдвигов и/или MOD.) Но при отсутствии SHORTINT у нас порой даже не будет возможности описать структуру. |
Автор: | AVC [ Понедельник, 27 Октябрь, 2008 13:59 ] |
Заголовок сообщения: | Re: Оберон-07 |
Info21 писал(а): Известно, как много проблем в программировании возникает из-за преждевременных попиток оптимизации ... etc. Вопрос в том, хотим ли мы сделать Оберон практичным языком (конечно, не в ущерб его основным достоинствам)?Дублирование тут (и в огромном большинстве других случаев) ничтожно. Зато гарантия постусловия -- железная. То мне рекомендуют использовать SYSTEM при всяком затруднении, а то припоминают, что Вирт жалел, что оставил его в языке. IMHO, с таким подходом (равно как с достойным лучшего применения упорством в отношении самых застарелых догм структурного программирования) мы далеко не уедем. IMHO, мы не должны уклоняться от обсуждения неудобных вопросов. Оберон, применительно ко многим (конечно, не ко всем) задачам, - весьма перспективный язык. Но у нас почему-то нет желания признать и исправить некоторые (легко исправимые!) недостатки. Характерен пример исключений. IMHO, не Оберон здесь плох, а наше упрямство (включая самого ). Что касается преждевременной оптимизации, давайте посмотрим: неоптимизированные циклы Дейкстры (т.е. неокультуренная математическая нотация), неоптимизированный доступ к элементам массивов, да всё это помножить на однопроходный компилятор... Этак мы и Яве проиграем. |
Автор: | Info21 [ Понедельник, 27 Октябрь, 2008 14:01 ] |
Заголовок сообщения: | Re: Оберон-07 |
Я знаю только один пример, где, вроде бы, полезны SHORTINT и BYTE: представление данных в символической алгебре. Отдельные члены в мономах кодируются степенями переменных. Скажем, 10 переменных, степени небольшие, достаточно байта. Совокупный объем выражений в интересных задачах -- в гигабайтах. Фактор 4 (из-за выравнивания чуть меньше) кажется чрезмерно большим. (40 <> 12). С другой стороны, там много чего еще есть. На каждый такой 10-байтовый блок -- минимум три указателя (12 байт), какие-то коэффициенты -- целые числа во много слов (пусть 10=40 байт). Уже пропорция гораздо менее страшная: 40+52 <> 12+52 или 92 <> 64. Предположим, что мы пакуем эти байты прямо в программе. Тогда, во-первых, упаковка может быть и более плотной (показатели скорее в пределах 10, чем 127). Во-вторых, затраты CPU тут ничтожны по ср. с арифметикой длинных коэффициентов и прочими сортировками и вводом-выводом, притом спрятаны в паре маленьких процедурок. Так что даже в этом примере получается, что овчинка не очень выделки стоит. |
Автор: | Info21 [ Понедельник, 27 Октябрь, 2008 14:14 ] |
Заголовок сообщения: | Re: Оберон-07 |
AVC писал(а): Вопрос в том, хотим ли мы сделать Оберон практичным языком (конечно, не в ущерб его основным достоинствам)? Что значит практичный. Практичность значит (по крайней мере как цель, в моем понимании) поддержка техничного программера. Который быстро и технично выдает железно-надежный код (и никогда не выдает процедуры вроде NeedOut, что привел Штирлиц).AVC писал(а): Характерен пример исключений. Характерен, но в другом отношении. Давайте всё-таки включим в картину соображение, что удалить из языка что-то практически невозможно. Обязательно нужно на уровне языка реализовывать?IMHO, не Оберон здесь плох, а наше упрямство (включая самого ). AVC писал(а): Что касается преждевременной оптимизации, давайте посмотрим: неоптимизированные циклы Дейкстры (т.е. неокультуренная математическая нотация), неоптимизированный доступ к элементам массивов, да всё это помножить на однопроходный компилятор... Этак мы и Яве проиграем. Каким образом. Всё это мелкие мелочи. Сколько раз проверялось, давно надоело уже про это говорить. |
Автор: | Trurl [ Понедельник, 27 Октябрь, 2008 14:26 ] |
Заголовок сообщения: | Re: Оберон-07 |
AVC писал(а): Но при отсутствии SHORTINT у нас порой даже не будет возможности описать структуру. Например: Код: struct stupid { short int n; /* занимает 2 байта */ char a[16]; }; А при наличии SHORTINT она есть? Код: TYPE stupid = RECORD
n:SHORTINT; (* занимает 2 байта *) a: ARRAY 16 OF CHAR; (* влипли, на самом деле 2 байта пропущено *) END |
Автор: | Wlad [ Понедельник, 27 Октябрь, 2008 15:31 ] |
Заголовок сообщения: | Re: Оберон-07 |
Info21 писал(а): Я знаю только один пример, где, вроде бы, полезны SHORTINT и BYTE А я знаю МНОГО примеров. Особливо, как начинаешь с железками работать... И никто меня не убедит, что король в ярких, и красочных одеждах, если у него явно ягодицы на солнышке блестять... |
Автор: | Info21 [ Понедельник, 27 Октябрь, 2008 15:48 ] |
Заголовок сообщения: | Re: Оберон-07 |
Владимир Лось писал(а): Info21 писал(а): Я знаю только один пример, где, вроде бы, полезны SHORTINT и BYTE А я знаю МНОГО примеров. Особливо, как начинаешь с железками работать... Так то с железом. Кто ж спорит. А ЯВУ должен, вроде, изолировать от железа. А если нельзя изолироваться, то -- SYSTEM. |
Автор: | Wlad [ Понедельник, 27 Октябрь, 2008 16:01 ] |
Заголовок сообщения: | Re: Оберон-07 |
Info21 писал(а): Владимир Лось писал(а): Info21 писал(а): Я знаю только один пример, где, вроде бы, полезны SHORTINT и BYTE А я знаю МНОГО примеров. Особливо, как начинаешь с железками работать... Так то с железом. Кто ж спорит. А ЯВУ должен, вроде, изолировать от железа. А если нельзя изолироваться, то -- SYSTEM. Да я не спорю. Я как раз подтверждаю: раньше и мне казалось, что: выбирай Си и буде табе ЩАСТЯ! Ан-нет, до определённого уровня (типа три функции из одного лупа) - всё гут, а вот СИСТЕМЫ писать - абстрагирование - самое то! На самом деле, НАСТОЛЬКО низкоуровневый код составляет проценты в наших встроенных системах. Чисто по закону "10/90". Те десять процентов я вполне сознательно напишу на асме или том же Си за милую душу и без зазрения совести. Но вот остальные 90 я буду вынужден реализовывать на неадекватном инструменте! А мне хочется именно "отвлекаться" на 10 процентов с 90, а не наоборот! И что бы именно - в рамках языка, используемого для 90!!! |
Автор: | slava [ Понедельник, 27 Октябрь, 2008 19:34 ] |
Заголовок сообщения: | Re: Оберон-07 |
Info21 писал(а): По крайней мере он пишет, что в компиляторе у него было "только четыре цикла LOOP" (цитирую по памяти), которые он и заменил. Может есть какая статья о реальном использовании и о мотивации введения этих нововведений?Как то все сухо и кратко, вот вам Technical Report и все. |
Автор: | Info21 [ Понедельник, 27 Октябрь, 2008 20:24 ] |
Заголовок сообщения: | Re: Оберон-07 |
slava писал(а): Может есть какая статья о реальном использовании и о мотивации введения этих нововведений? Как то все сухо и кратко, вот вам Technical Report и все. Вот тут еще чуть-чуть: www.inf.ethz.ch/personal/wirth/Articles ... Oberon.pdf Ему же 74 года, за здоровьем приходится следить ..... |
Автор: | AVC [ Понедельник, 27 Октябрь, 2008 22:26 ] |
Заголовок сообщения: | Re: Оберон-07 |
Info21 писал(а): Вот тут еще чуть-чуть: Спасибо.http://www.inf.ethz.ch/personal/wirth/A ... Oberon.pdf А почему Вирт решил отказаться от forward-деклараций процедур? В борьбе с LOOP и RETURN в середине процедуры намерения понятны (один вход - один выход; самый убойный довод - код, представленный Штирлицем), а вот с отказом от упреждающего объявления непонятно. |
Автор: | AVC [ Понедельник, 27 Октябрь, 2008 23:06 ] |
Заголовок сообщения: | Re: Оберон-07 |
Trurl писал(а): А при наличии SHORTINT она есть? Остается вполне разрешимый вопрос о выравнивании.А вот при отсутствии SHORTINT вообще никакой надежды нет. |
Автор: | slava [ Понедельник, 27 Октябрь, 2008 23:18 ] |
Заголовок сообщения: | Re: Оберон-07 |
AVC писал(а): А вот при отсутствии SHORTINT вообще никакой надежды нет. Ищите SHORTINT в конкретной реализации (под конкретную систему) модуля SYSTEM.
|
Автор: | Trurl [ Вторник, 28 Октябрь, 2008 09:01 ] |
Заголовок сообщения: | Re: Оберон-07 |
AVC писал(а): А вот при отсутствии SHORTINT вообще никакой надежды нет. Код: TYPE stupid = ARRAY 18 OF BYTE; А разрешимость вопроса о выравнивании зависит от компилятора. |
Страница 7 из 12 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |