OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Вторник, 16 Апрель, 2024 07:10

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




Начать новую тему Ответить на тему  [ Сообщений: 57 ]  На страницу Пред.  1, 2, 3
Автор Сообщение
СообщениеДобавлено: Вторник, 03 Июнь, 2008 16:13 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 18:55
Сообщения: 2272
Откуда: Россия, Нижний Новгород
Vlad писал(а):
отказа от таких низкоуровневых сущностей как массив

От массивов никто не отказывался. Речь идёт об указателях на массивы, а не о массивах. В Виртовском Обероне (тот который Оберон 1) указателей на массивы и не было, а раз не было то говорить об отказе от того чего не было и нельзя. С чего Вы взяли, что массивовый тип низкоуровнев? Это не верно. В обероне массивовый тип, в отличие от Си, высокоуровневый. Указатели на массивы используются в случае когда нужно создать массив размер которого не известен на момент компиляции. Но если пойти дальше, то это нужно для реализации контейнеров переменной длины. Но контейнеры переменной длины лучше реализовывать по паттерну Carrier-Rider-Mapper. Очевидная реализация Carrier -- список блоков фиксированного размера. Но для блоков фиксированного размера указатели на массивы не нужны. Что касается передачи массива по ссылке, так от ссылок никто не и отказывался, а даже наоборот, в Оберон 07 добавлена константная ссылка. Массив по ссылке в процедуру передавать можно.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 03 Июнь, 2008 16:22 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 10:37
Сообщения: 875
Откуда: Россия, Владивосток
Сергей Губанов писал(а):
Указатели на массивы используются в случае когда нужно создать массив размер которого не известен на момент компиляции. Но если пойти дальше, то это нужно для реализации контейнеров переменной длины. Но контейнеры переменной длины лучше реализовывать по паттерну Carrier-Rider-Mapper. Очевидная реализация Carrier -- список блоков фиксированного размера. Но для блоков фиксированного размера указатели на массивы не нужны.


Сергей, очевидное применение массивов переменной длины - строки. Я понимаю, что и строку можно завернуть в Carrier-Rider-Mapper, реализовав её через блоки по 256 символов, но по-моему это уже черезчур.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 03 Июнь, 2008 16:29 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Это ещё вопрос... Насколько часты строки очень большой длины, которые не текст (и хранятся не в TextModels.Model)?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 03 Июнь, 2008 16:36 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Сергей Губанов писал(а):
С чего Вы взяли, что массивовый тип низкоуровнев? Это не верно. В обероне массивовый тип, в отличие от Си, высокоуровневый.


Массив - он и в Африке массив. Последовательность элементов строго определенной структуры (определенной вплоть до ячеек памяти). То, что в обероне нельзя выйти за его пределы и что он там снабжен какими-то тэгами - не делает его принципиально более высокоуровневым по сравнению с C. Более высокоуровневой абстракцией может выступать "последовательность" (заранее неизвестной структуры).

Сергей Губанов писал(а):
Указатели на массивы используются в случае когда нужно создать массив размер которого не известен на момент компиляции. Но если пойти дальше, то это нужно для реализации контейнеров переменной длины.


Т.е. в обеороне-1 и -07 нет массивов переменной длины? Тогда это действительно злобно :) Однако мой тезис остается в силе: это вынуждает создавать более высокоуровневые структуры данных. Глядишь и термин итератора не будет вызвать у оберонщиков удивления - а что это такое и зачем это нужно :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 03 Июнь, 2008 16:44 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 10:37
Сообщения: 875
Откуда: Россия, Владивосток
Евгений Темиргалеев писал(а):
Это ещё вопрос... Насколько часты строки очень большой длины, которые не текст (и хранятся не в TextModels.Model)?


А зачем обязательно очень большой длины? Если у меня обычно строки до 100 символов, но иногда может попасться (а может и не попасться) строка из тысячи - я что, должен под них всегда тысячу символов выделять? Или в TextModels.Model заворачивать? Нет, для высокоуровневой работы обёртки удобны конечно, но иногда и ниже спускаться приходится.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 03 Июнь, 2008 16:48 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Иван Горячев писал(а):
Сергей, очевидное применение массивов переменной длины - строки. Я понимаю, что и строку можно завернуть в Carrier-Rider-Mapper, реализовав её через блоки по 256 символов, но по-моему это уже черезчур.


Да ладно. Ну будет у вас Strings.String :) Хотя мне не понятно, как будет выглядеть функция создания строки из литерала, если литерал это массив заранее известной длины :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 03 Июнь, 2008 21:18 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1428
Сергей Губанов писал(а):
В Виртовском Обероне (тот который Оберон 1) указателей на массивы и не было, а раз не было то говорить об отказе от того чего не было и нельзя.


И для кого только Вирт писал(а):
Variables of a pointer type P assume as values pointers to variables of some type T.
T must be a record or array type.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 05 Июнь, 2008 15:53 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Borg писал(а):
Цитата:
Зуев:
Оберон: одноранговый набор модулей-«синглтонов» (то есть, каждый модуль присутствует в работающей программе в единственном числе). Каждый модуль может хранить собственное состояние (контекст). "Активные" компоненты модуля - процедуры. Гораздо лучше, чем в Си, никто не спорит. Но вот достаточно ли простого набора одинаковых сущностей (и опять, как и в Си, ЛИНЕЙНОГО), чтобы адекватно отражать многообразные отношения между частями создаваемой системы? Тем более, что, собственно, какой-либо ассортимент этих сущностей отсутствует: есть только модули.
...расширяемые записи (аналог классов в более распространенных языках) не являются средством структурирования программы в целом. Они существуют, по сути для того же, для чего предназначены были обычные записи: для представления данных. Добавились просто более продвинутые средства организации работы с этими данными и средства наращивания этой функциональности. Для целей организации программы служат те же модули, и только они. Записи остаются сущностями "второго сорта" - их можно экспортировать в другие модули и там расширять, но это не меняет общей ситуации: "объектные" записи всегда заключены внутри модулей и, тем самым, никак не помогают строить программу.
(Вообще, у меня создалось отчетливое ощущение, что и автор Оберона, и авторы Ады не разделяли тогдашние некритические восторги по поводу ООП и расширили свои языки не по внутреннему убеждению в важности и необходимости новых средств, а, скорее, против собственного желания, подчиняясь общей тенденции. Неудобство ООП в этих языках - прямое следствие и такой "вынужденности" тоже).

Упрощение вещь хорошая, но если грубо говоря умножение заменить сложением теоретически вполне и возможно, но для практики это будет совсем неудобно. Когда-то упрощения необходимо и остановить. Вирт конечно имеет огромный и заслуженный авторитет, но в данном случае может стоит применить поговорку Аристотеля "Платон мне друг, но истина дороже." и доработать Оберон в рамках Rosa-R?

Дело тут в том, что Зуев (будучи большим спецом по компиляторам), тем не менее, не имеет опыта работы на Оберонах. Поэтому в данном случае его мнение списано с потолка | высосано из пальца, это уж как будет угодно :-) Т.е. здесь мнение не из разряда "я считаю", а из разряда "мне кажется". Про ограниченность средств организации программы - полная ерунда.

Архитектурные средства Оберонов я раскрывал подробно в двух статьях:
http://oberoncore.ru/index.php?option=c ... &Itemid=22

По поводу ООП... не стоит по нём копья ломать, ибо не пора ли ему на пенсию... а смена... смена есть. :-)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 05 Июнь, 2008 17:41 

Зарегистрирован: Понедельник, 02 Июнь, 2008 19:35
Сообщения: 305
Илья Ермаков
Цитата:
По поводу ООП... не стоит по нём копья ломать, ибо не пора ли ему на пенсию... а смена... смена есть.

А не поделитесь что за смена то? Функциональные парадигма или еще что?
И еще мне интересно почему Rosa-M (Модула-2) и Rosa-R (Оберон-2) оба включены в проект Rosa. Они ведь не ортогональны по сути. А ведь это явно тянет на избыточность - уже не в языке, а в самом базовом наборе - но какая разница то - избыточность и есть избыточность. Зачем она при общем векторе к аскетизму? С учетом того, что базовые языки все равно будут дорабатываться не лучше ли, если чего в Обероне от Модулы ДЕЙСТВИТЕЛЬНО не хватает каким то образом модифицировать сам Оберон? Или это будет уже святотайством? Но вроде как я понял из статей Богатырева изменения могут быть и существенными с учетом всех существенных реализаций Оберона?
И еще один вопрос - были ли попытки создать в рамках оберонных технологий что-то вроде Java с промежуточным языком?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 05 Июнь, 2008 18:34 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4695
Откуда: Россия, Орёл
Borg писал(а):
И еще один вопрос - были ли попытки создать в рамках оберонных технологий что-то вроде Java с промежуточным языком?

Ну да. И ещё до Java: Juice (http://wiki.oberoncore.ru/index.php/Juice).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 05 Июнь, 2008 18:36 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Borg писал(а):
Илья Ермаков
Цитата:
По поводу ООП... не стоит по нём копья ломать, ибо не пора ли ему на пенсию... а смена... смена есть.

А не поделитесь что за смена то? Функциональные парадигма или еще что?

Если бы даже и своевременно было "поделицца"... То пришлось бы заводить тут отдельный раздел... В общих и первых приближениях - есть такая штука, как теория(и) систем. (Буква И в скобках существенна - ибо не попсовым системным анализом и Берталанфи-Мессаровичем единым...). Здесь пока стоп - всё это упомянуто с целью поднять полёт мысли повыше, нежели проблемы декларации методов и виртуализации вызовов...

Цитата:
И еще мне интересно почему Rosa-M (Модула-2) и Rosa-R (Оберон-2) оба включены в проект Rosa. Они ведь не ортогональны по сути.

Ответ прост - то, что было названо, это пример, а не проект. Понимайте как "например, можно было бы... " Опять же, цель документа была - затравка мысли. И здесь я снова умолкаю.

(Пояснил, дабы избежать тут накручивания догадок, которые потом всё равно придётся разгребать).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 05 Июнь, 2008 23:03 

Зарегистрирован: Понедельник, 02 Июнь, 2008 19:35
Сообщения: 305
Илья Ермаков
Цитата:
В общих и первых приближениях - есть такая штука, как теория(и) систем.
Это будет все иметь отношение к Росе или нет? Я видел на форуме Ваши размышления на счет абстрагирования и других операций. Я так понимаю будет подвергнуто анализу сами операции мышления - анализ, синтез, абстрагирование, индукция, дедукция. И будет попытка перенести это наиболее естественным образом на программирование. Если это так, то классиков можно не читать - тут самому думать нужно. Но вообще то уже был язык Пролог :shock:
Цитата:
Ответ прост - то, что было названо, это пример, а не проект. Понимайте как "например, можно было бы... " Опять же, цель документа была - затравка мысли. И здесь я снова умолкаю.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 05 Июнь, 2008 23:14 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Нет, на форуме ничего особо не упоминалось... То, что Вы имеете в виду - так, ерунда была частная.
Я и мои коллеги воздержимся от обсуждений, всё хорошо в свое время - сейчас не та стадия, нужна сосредоточенность, а не распыление вовне.

===

Пролог - ничего особенного. Весьма частная модель (Хорновские дизъюнкты) была реализована с несколькими грубыми ляпами (можно по этому поводу посмотреть книги Н.Н. Непейводы "Основания программирования" и "Прикладная логика"). В итоге был тихий провал японской программы "Пятого поколения"...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 06 Июнь, 2008 15:10 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 18:55
Сообщения: 2272
Откуда: Россия, Нижний Новгород
Trurl писал(а):
И для кого только Вирт писал(а):
Variables of a pointer type P assume as values pointers to variables of some type T.
T must be a record or array type.

Хм, действительно. С чем-то я его перепутал.

Иван Горячев писал(а):
Сергей, очевидное применение массивов переменной длины - строки.

Ну не знаю, может быть Оберон-07 позиционируется как язык "системного программирования", а для таких задач строки переменной длины не нужны?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 06 Июнь, 2008 18:03 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Сергей Губанов писал(а):
Ну не знаю, может быть Оберон-07 позиционируется как язык "системного программирования", а для таких задач строки переменной длины не нужны?

(Тогда уж сказать "низкоуровневого", а то "системного" - слишком широко...)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 06 Июнь, 2008 18:12 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Сергей Губанов писал(а):
Ну не знаю, может быть Оберон-07 позиционируется как язык "системного программирования", а для таких задач строки переменной длины не нужны?


Ага. Нафиг нужно. Вон C всю жизнь обходился, пишешь char buffer[300]; - и вперед. Правда недавно популисты протащили таки возможность указывать переменный размер, но это не наш путь :)

P.S. Я некоторое время общался с высококлассным хардкорным "системщиком"... Упоминание "универсальных динамаческих массивов переменной длины" у него вызывает презрительно-снисходитиельную улыбку :) Прежде всего именно в силу "универсальности". Потому что расслабляет. А вот для каждого случая свой буфер самого правильного размера (или какая другая структура данных) - это путь к эффективным решениям.

P.S.S. Да, стоимость его решений соответствующая - эксклюзивная.

P.S.S.S. К чему приводит попытка использовать те же подходы "среднестатистическими" кодерами для "среднестатистических" задач мы тоже знаем. Достаточно посмотреть на горы опенсоурсного "гавнокода" с этими самыми "char buffer[300]". Думать, что в случае оберона-07 "index out of bounds" вместо "segmentation fault" сделает подобные программы более работающими - по меньшей мере наивно.

P.S.S.S.S. Извиняюсь за лишнюю эмоциональность, навеяно недавним ковырянием в таком коде.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 13 Июль, 2008 15:48 
Аватара пользователя

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

Вот, к примеру, старая статья "On the Composition of Well-Structured Programs", датированная ажъ 1974 годомъ. :)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 57 ]  На страницу Пред.  1, 2, 3

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


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

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


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

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