OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 18:29

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 234 ]  На страницу Пред.  1 ... 4, 5, 6, 7, 8, 9, 10 ... 12  След.
Автор Сообщение
 Заголовок сообщения: Re: Оберон-07
СообщениеДобавлено: Понедельник, 27 Октябрь, 2008 11:18 
Аватара пользователя

Зарегистрирован: Суббота, 19 Ноябрь, 2005 15:59
Сообщения: 803
Откуда: Зеленоград
Trurl писал(а):
Наличие SHORTINT и т.п. все равно не спасает от необходимости использовать искусственные приёмы.
Какие именно?
Допустим, я получаю из ОС (скажем, Windows) некую структуру, в которой есть поле типа short int.
Если в языке нет типа SHORTINT, то у меня проблема.
Если в языке есть тип SHORTINT, то проблемы нет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон-07
СообщениеДобавлено: Понедельник, 27 Октябрь, 2008 11:30 

Зарегистрирован: Понедельник, 19 Март, 2007 09:40
Сообщения: 142
Откуда: USA, Israel, Belarus
Подключаем SYSTEM и используем SHORTINT, в чем проблема то?
Ведь данные приходят с ОС, значит системность "налицо"!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон-07
СообщениеДобавлено: Понедельник, 27 Октябрь, 2008 12:29 
Аватара пользователя

Зарегистрирован: Суббота, 19 Ноябрь, 2005 15:59
Сообщения: 803
Откуда: Зеленоград
slava писал(а):
Подключаем SYSTEM и используем SHORTINT, в чем проблема то?
Ведь данные приходят с ОС, значит системность "налицо"!
Ну, проблем две. :)
Во-первых, в модуле SYSTEM нет SHORTINT (согласно описанию языка).
Во-вторых, не хотелось бы использовать SYSTEM при всяком пустяковом затруднении.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон-07
СообщениеДобавлено: Понедельник, 27 Октябрь, 2008 12:47 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1428
AVC писал(а):
Допустим, я получаю из ОС (скажем, Windows) некую структуру, в которой есть поле типа short int.
Если в языке нет типа SHORTINT, то у меня проблема.
Если в языке есть тип SHORTINT, то проблемы нет.

Совсем нет? А выравнивание?
А если этот short int - unsigned?
А если он :12?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон-07
СообщениеДобавлено: Понедельник, 27 Октябрь, 2008 13:03 
Аватара пользователя

Зарегистрирован: Суббота, 19 Ноябрь, 2005 15:59
Сообщения: 803
Откуда: Зеленоград
Trurl писал(а):
AVC писал(а):
Допустим, я получаю из ОС (скажем, Windows) некую структуру, в которой есть поле типа short int.
Если в языке нет типа SHORTINT, то у меня проблема.
Если в языке есть тип SHORTINT, то проблемы нет.

Совсем нет? А выравнивание?
А если этот short int - unsigned?
А если он :12?
Да, какие-то проблемы остаются. :roll:
(Они, вероятно, решаются с помощью сдвигов и/или MOD.)
Но при отсутствии SHORTINT у нас порой даже не будет возможности описать структуру.
Например:
Код:
struct stupid {
    short int n; /* занимает 2 байта */
    char a[16];
};


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон-07
СообщениеДобавлено: Понедельник, 27 Октябрь, 2008 13:25 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
AVC писал(а):
slava писал(а):
Подключаем SYSTEM и используем SHORTINT, в чем проблема то?
Ведь данные приходят с ОС, значит системность "налицо"!
Ну, проблем две. :)
Во-первых, в модуле SYSTEM нет SHORTINT (согласно описанию языка).
Во-вторых, не хотелось бы использовать SYSTEM при всяком пустяковом затруднении.
А я бы согласился со slava. На "во-первых": SYSTEM не обязан включать только то, что описано в языке, он может содержать средства для поддержки любых особенности реализации языка или целевой платформы. Например, при отсутствии сборки мусора там может быть SYSTEM.DISPOSE (см. Oakwood Guidelines).
На "во-вторых": интерфейс к ОС (или к железу!) должен быть инкапсулирован в низкоуровневые модули, использующие SYSTEM, а вся остальная программа уже должна быть максимально от него свободна. Таким образом, в данном случае SYSTEM используется по прямому назначению, а не по пустяковым затруднениям.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон-07
СообщениеДобавлено: Понедельник, 27 Октябрь, 2008 13:30 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
AVC писал(а):
Да, какие-то проблемы остаются. :roll:
(Они, вероятно, решаются с помощью сдвигов и/или MOD.)
Но при отсутствии SHORTINT у нас порой даже не будет возможности описать структуру.
Это всё задачи конвертации данных из низкоуровневого представления в удобное для работы на языке высокого уровня (и наоборот). Эта задача должна выполняться в модуле-прослойке, чтобы "наверху" ни у кого голова не болела по поводу выравнивания, диапазонов при вычислениях и т.п.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон-07
СообщениеДобавлено: Понедельник, 27 Октябрь, 2008 13:59 
Аватара пользователя

Зарегистрирован: Суббота, 19 Ноябрь, 2005 15:59
Сообщения: 803
Откуда: Зеленоград
Info21 писал(а):
Известно, как много проблем в программировании возникает из-за преждевременных попиток оптимизации ... etc.

Дублирование тут (и в огромном большинстве других случаев) ничтожно.
Зато гарантия постусловия -- железная.
Вопрос в том, хотим ли мы сделать Оберон практичным языком (конечно, не в ущерб его основным достоинствам)?
То мне рекомендуют использовать SYSTEM при всяком затруднении, а то припоминают, что Вирт жалел, что оставил его в языке. :roll:
IMHO, с таким подходом (равно как с достойным лучшего применения упорством в отношении самых застарелых догм структурного программирования) мы далеко не уедем.
IMHO, мы не должны уклоняться от обсуждения неудобных вопросов. Оберон, применительно ко многим (конечно, не ко всем) задачам, - весьма перспективный язык. Но у нас почему-то нет желания признать и исправить некоторые (легко исправимые!) недостатки.
Характерен пример исключений.
IMHO, не Оберон здесь плох, а наше упрямство (включая самого :roll: ).

Что касается преждевременной оптимизации, давайте посмотрим: неоптимизированные циклы Дейкстры (т.е. неокультуренная математическая нотация), неоптимизированный доступ к элементам массивов, да всё это помножить на однопроходный компилятор... Этак мы и Яве проиграем.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон-07
СообщениеДобавлено: Понедельник, 27 Октябрь, 2008 14:01 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Я знаю только один пример, где, вроде бы, полезны SHORTINT и BYTE: представление данных в символической алгебре. Отдельные члены в мономах кодируются степенями переменных. Скажем, 10 переменных, степени небольшие, достаточно байта. Совокупный объем выражений в интересных задачах -- в гигабайтах.
Фактор 4 (из-за выравнивания чуть меньше) кажется чрезмерно большим. (40 <> 12).

С другой стороны, там много чего еще есть.
На каждый такой 10-байтовый блок -- минимум три указателя (12 байт), какие-то коэффициенты -- целые числа во много слов (пусть 10=40 байт).
Уже пропорция гораздо менее страшная: 40+52 <> 12+52 или 92 <> 64.

Предположим, что мы пакуем эти байты прямо в программе.
Тогда, во-первых, упаковка может быть и более плотной (показатели скорее в пределах 10, чем 127).
Во-вторых, затраты CPU тут ничтожны по ср. с арифметикой длинных коэффициентов и прочими сортировками и вводом-выводом, притом спрятаны в паре маленьких процедурок.

Так что даже в этом примере получается, что овчинка не очень выделки стоит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон-07
СообщениеДобавлено: Понедельник, 27 Октябрь, 2008 14:14 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
AVC писал(а):
Вопрос в том, хотим ли мы сделать Оберон практичным языком (конечно, не в ущерб его основным достоинствам)?
Что значит практичный. Практичность значит (по крайней мере как цель, в моем понимании) поддержка техничного программера. Который быстро и технично выдает железно-надежный код (и никогда не выдает процедуры вроде NeedOut, что привел Штирлиц).

AVC писал(а):
Характерен пример исключений.
IMHO, не Оберон здесь плох, а наше упрямство (включая самого :roll: ).
Характерен, но в другом отношении. Давайте всё-таки включим в картину соображение, что удалить из языка что-то практически невозможно. Обязательно нужно на уровне языка реализовывать?

AVC писал(а):
Что касается преждевременной оптимизации, давайте посмотрим: неоптимизированные циклы Дейкстры (т.е. неокультуренная математическая нотация), неоптимизированный доступ к элементам массивов, да всё это помножить на однопроходный компилятор... Этак мы и Яве проиграем.

Каким образом. Всё это мелкие мелочи. Сколько раз проверялось, давно надоело уже про это говорить.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон-07
СообщениеДобавлено: Понедельник, 27 Октябрь, 2008 14:26 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1428
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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон-07
СообщениеДобавлено: Понедельник, 27 Октябрь, 2008 15:31 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
Info21 писал(а):
Я знаю только один пример, где, вроде бы, полезны SHORTINT и BYTE

А я знаю МНОГО примеров. Особливо, как начинаешь с железками работать... И никто меня не убедит, что король в ярких, и красочных одеждах, если у него явно ягодицы на солнышке блестять...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон-07
СообщениеДобавлено: Понедельник, 27 Октябрь, 2008 15:48 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Владимир Лось писал(а):
Info21 писал(а):
Я знаю только один пример, где, вроде бы, полезны SHORTINT и BYTE

А я знаю МНОГО примеров. Особливо, как начинаешь с железками работать...

Так то с железом. Кто ж спорит.
А ЯВУ должен, вроде, изолировать от железа.
А если нельзя изолироваться, то -- SYSTEM.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон-07
СообщениеДобавлено: Понедельник, 27 Октябрь, 2008 16:01 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
Info21 писал(а):
Владимир Лось писал(а):
Info21 писал(а):
Я знаю только один пример, где, вроде бы, полезны SHORTINT и BYTE

А я знаю МНОГО примеров. Особливо, как начинаешь с железками работать...

Так то с железом. Кто ж спорит.
А ЯВУ должен, вроде, изолировать от железа.
А если нельзя изолироваться, то -- SYSTEM.

Да я не спорю. Я как раз подтверждаю: раньше и мне казалось, что: выбирай Си и буде табе ЩАСТЯ! Ан-нет, до определённого уровня (типа три функции из одного лупа) - всё гут, а вот СИСТЕМЫ писать - абстрагирование - самое то! На самом деле, НАСТОЛЬКО низкоуровневый код составляет проценты в наших встроенных системах. Чисто по закону "10/90". Те десять процентов я вполне сознательно напишу на асме или том же Си за милую душу и без зазрения совести. Но вот остальные 90 я буду вынужден реализовывать на неадекватном инструменте! А мне хочется именно "отвлекаться" на 10 процентов с 90, а не наоборот! И что бы именно - в рамках языка, используемого для 90!!!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон-07
СообщениеДобавлено: Понедельник, 27 Октябрь, 2008 19:34 

Зарегистрирован: Понедельник, 19 Март, 2007 09:40
Сообщения: 142
Откуда: USA, Israel, Belarus
Info21 писал(а):
По крайней мере он пишет, что в компиляторе у него было "только четыре цикла LOOP" (цитирую по памяти), которые он и заменил.
Может есть какая статья о реальном использовании и о мотивации введения этих нововведений?
Как то все сухо и кратко, вот вам Technical Report и все.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон-07
СообщениеДобавлено: Понедельник, 27 Октябрь, 2008 20:24 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
slava писал(а):
Может есть какая статья о реальном использовании и о мотивации введения этих нововведений?
Как то все сухо и кратко, вот вам Technical Report и все.

Вот тут еще чуть-чуть:
www.inf.ethz.ch/personal/wirth/Articles ... Oberon.pdf

Ему же 74 года, за здоровьем приходится следить .....


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон-07
СообщениеДобавлено: Понедельник, 27 Октябрь, 2008 22:26 
Аватара пользователя

Зарегистрирован: Суббота, 19 Ноябрь, 2005 15:59
Сообщения: 803
Откуда: Зеленоград
Info21 писал(а):
Вот тут еще чуть-чуть:
http://www.inf.ethz.ch/personal/wirth/A ... Oberon.pdf
Спасибо.
А почему Вирт решил отказаться от forward-деклараций процедур?
В борьбе с LOOP и RETURN в середине процедуры намерения понятны (один вход - один выход; самый убойный довод - код, представленный Штирлицем), а вот с отказом от упреждающего объявления непонятно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон-07
СообщениеДобавлено: Понедельник, 27 Октябрь, 2008 23:06 
Аватара пользователя

Зарегистрирован: Суббота, 19 Ноябрь, 2005 15:59
Сообщения: 803
Откуда: Зеленоград
Trurl писал(а):
А при наличии SHORTINT она есть?
Остается вполне разрешимый вопрос о выравнивании.
А вот при отсутствии SHORTINT вообще никакой надежды нет. :(


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон-07
СообщениеДобавлено: Понедельник, 27 Октябрь, 2008 23:18 

Зарегистрирован: Понедельник, 19 Март, 2007 09:40
Сообщения: 142
Откуда: USA, Israel, Belarus
AVC писал(а):
А вот при отсутствии SHORTINT вообще никакой надежды нет. :(
Ищите SHORTINT в конкретной реализации (под конкретную систему) модуля SYSTEM. :wink:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон-07
СообщениеДобавлено: Вторник, 28 Октябрь, 2008 09:01 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1428
AVC писал(а):
А вот при отсутствии SHORTINT вообще никакой надежды нет. :(

Код:
TYPE  stupid = ARRAY 18 OF BYTE;

А разрешимость вопроса о выравнивании зависит от компилятора.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 234 ]  На страницу Пред.  1 ... 4, 5, 6, 7, 8, 9, 10 ... 12  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB