Re[22]: Нужна ли Оберон-ОС защита памяти?
От: RailRoadMan  
Дата: 15.02.05 10:02
Оценка:
Честно говоря, дальше с вам спорить не считаю нужным. Если вы помните, этот спор начался с того, что мне было интересно узнать про трудности с указателями. Я узнал, но не проникся, видимо мне они пока серьезных проблем не доставляли.

Если вам по какой-то причине нужен оберон, хорошо, что он есть, мне Оберон не нужен, может пока, может вообще.

P.S. Просто раздражает, когда Оберон (и иже с ними) выставляют в виде некой панацеи от всего. Но это не к вам.
Re[23]: Нужна ли Оберон-ОС защита памяти?
От: AVC Россия  
Дата: 15.02.05 10:38
Оценка:
Здравствуйте, RailRoadMan, Вы писали:

RRM>Честно говоря, дальше с вам спорить не считаю нужным. Если вы помните, этот спор начался с того, что мне было интересно узнать про трудности с указателями. Я узнал, но не проникся, видимо мне они пока серьезных проблем не доставляли.


Это совершенно нормально.
На самом деле, дискуссии должны просто вести к лучшему взаимопониманию.
(И нет никакой нужды доводить их до утрированных выводов вроде — X абсолютно прав, а Y окончательно и безнадежно неправ! Зачастую сам предмет и не допускает таких выводов.)

RRM>Если вам по какой-то причине нужен оберон, хорошо, что он есть, мне Оберон не нужен, может пока, может вообще.


OK.
Я с самого начала говорил, что и не собираюсь лишать программистов их любимых инструментов.

RRM>P.S. Просто раздражает, когда Оберон (и иже с ними) выставляют в виде некой панацеи от всего. Но это не к вам.


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

Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.

Хоар
Re[19]: Нужна ли Оберон-ОС защита памяти?
От: AVC Россия  
Дата: 15.02.05 11:37
Оценка: 3 (1) :)
Здравствуйте, Кодт, Вы писали:

К>Здравствуйте, AVC, Вы писали:


AVC>>Правда, в Обероне таких проблем вообще нет. (Он просто грамотно сделан.)

AVC>>Но ведь это такой скучный язык.
AVC>>А вот Си++ — это романтика.
К>На самом деле, указатели в Си — с одной стороны, крайне небезопасный, а с другой — очень выразительный механизм, в том числе — механизм абстракции.
К>Как в языках со слабой типизацией абстрагируются от типа данных, так в Си (ещё не С++) — от размещения данных.
К>В обоих случаях — это паттерн "простота (хуже воровства)", для слабо типизированных языков — получается более простой транслятор, для Си — облегчённый рантайм.

Мысль понятна.
Но согласиться с ней трудно.
Действительно, рантайм в Си "облегченный" (и "облегчается" он, похоже, в самых неожиданных местах оперативной памяти. ).
Но вот только компиляторы Си "весят" больше, чем компиляторы Оберона, и код в них — запутаннее. (Си++ я, по понятным причинам, вообще не упоминаю.)

К>Красивое развитие идеи указателей — это итераторы STL. Хотя с таким же, а то и с большим успехом можно было вместо итераторов ввести понятие "диапазон", и такие попытки делаются.


Согласен.
Вероятно, именно STL дала новую жизнь Си++.
На удивление, именно адресная арифметика и перегрузка операторов хорошо вписываются в STL.
(Здесь сишный синтаксис отпразновал незапланированный успех.)
Но, с другой стороны, это означает, что все соответствующие дефекты Си/Си++ проникли (как этакие синтаксические вирусы ) в STL, boost и т.д.

К>Оберон — да, действительно скучный язык. Типизацией по пальцам надавал, размещением по пальцам надавал, а средств абстракции — не надавал


Сорока-ворона кашу варила...
Почему же это вдруг не надавал?
Модули и расширение типов позволяют реализовать любую абстракцию.
Причем инкапсуляция не в пример лучше, чем в Си++.
(Дискуссию о плюсах и минусах перегрузки операторов пока разворачивать не будем. Я знаю диалекты Оберона, где такая перегрузка есть. Но вот хорошо ли это?)
Вообще, для меня в языках программирования очень важна возможность введения абстрактных типов данных.
Даже мое первый пост на RSDN был именно об АТД (и их связи с математическими моделями; я же все-таки прикладной математик).
Многие программисты почему-то думают, что настоящая абстракция возможна только на Си++.
Побывал недавно в своей старой конторе. (Там где все сидели в отладчике Watcom C++. ) Сказал, что увлекся Обероном. До драки дело не дошло (я всерьез опасался ). Но народ удивлялся и ссылался как раз на мою страсть к АТД и математизированному подходу. А я отвечал: в Обероне все есть (как в Греции ).

Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.

Хоар
Re[46]: Нужна ли Оберон-ОС защита памяти?
От: AVC Россия  
Дата: 15.02.05 14:51
Оценка:
Здравствуйте, Дарней, Вы писали:

AVC>>Возможно. Важны факторы, принимаемые во внимание.

Д>и как ни странно, в число этих факторов никогда не входили такие параметры, как "чистота", "стройность" языка, и прочие спорные вещи

А также такие спорные вещи как "простота" и "корректность".

AVC>>И какая, пардон, связь?

AVC>>Вас же не удивляет компиляция в машинный код?
AVC>>А теперь представьте себе, что какой-нибудь компьютер "понимает" Си++, Си или даже (вот ужас! ) Оберон.
Д>Связь в том, что просто перевод с одного языка на другой не даст тебе работающую программу. Это — ничтожно малая часть работы, а дьявол — он совсем в другом.
Д>Например, перенос программы с C++ под Windows на тот же C++, но под Linux — это очень большой объем работы. Странно, не правда ли?

В свое время я писал приличное по размерам графическое приложение под Windows.
Чтобы проверить, насколько я хорошо отделил представление от собственно модели, попросил товарища помочь с переносом под X-Windows (Linux).
Весь перенос заключался в замене реализации нескольких графических классов и занял 2 часа.
Странно, не правда ли?

AVC>>Т.к. я многодетный отец , то этот вопрос для меня не праздный.

AVC>>Плюс — у моей жены есть медицинское образование.
Д>А это уже смахивает на паранойю.

Что именно смахивает на паранойю? Дети? Медицинское образование? Образование в принципе?

AVC>>"Тешь себя, тешь себя" (поглаживает) (с) "Ирония судьбы"

Д>Не смешите мои тапочки. Эта тема уже десять раз тут обсасывалась. Ключевые слова для поиска — "мощность языка"

Или "глюкавость".

Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.

Хоар
Re[18]: Нужна ли Оберон-ОС защита памяти?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 15.02.05 15:18
Оценка:
Здравствуйте, AVC, Вы писали:

Я тебя умоляю — выкидывай лишнее цитирование.
... << RSDN@Home 1.1.4 beta 4 rev. 326>>
AVK Blog
Re[19]: Нужна ли Оберон-ОС защита памяти?
От: AVC Россия  
Дата: 15.02.05 15:26
Оценка:
Здравствуйте, AndrewVK, Вы писали:

OK.

Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.

Хоар
Re[47]: Нужна ли Оберон-ОС защита памяти?
От: Дарней Россия  
Дата: 16.02.05 04:39
Оценка:
Здравствуйте, AVC, Вы писали:

AVC>А также такие спорные вещи как "простота" и "корректность".


Простота — она нередко хуже воровства. А "корректность" в случае ЯП... приведите ка определение этого термина, пожалуйста

AVC>В свое время я писал приличное по размерам графическое приложение под Windows.

AVC>Чтобы проверить, насколько я хорошо отделил представление от собственно модели, попросил товарища помочь с переносом под X-Windows (Linux).
AVC>Весь перенос заключался в замене реализации нескольких графических классов и занял 2 часа.
AVC>Странно, не правда ли?

Единственный вариант, который здесь есть — это написание собственной кроссплатформенной оболочки, и написание программы поверх нее.
Поэтому уточни еще — сколько времени ты затратил на разработку этой оболочки ДО этих двух часов?

AVC>Что именно смахивает на паранойю? Дети? Медицинское образование? Образование в принципе?


Утверждение, что некие большие компании намеренно портят людям здоровье. В нашей стране конечно всякое возможно, но не до такой степени. Пока что

AVC>Или "глюкавость".


Если ты говоришь про Оберон, то спорить не буду.
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[48]: Нужна ли Оберон-ОС защита памяти?
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 16.02.05 09:05
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>А ты простестируй


Может еще и рабочий код приведете?
А то, знаете-ли, Ваш код:
SomeObject *obj = new SomeObject();
static int ref = (int)obj;

в оберонах не компилируется.
Re[49]: Нужна ли Оберон-ОС защита памяти?
От: Cyberax Марс  
Дата: 16.02.05 09:08
Оценка:
Сергей Губанов пишет:

> C>А ты простестируй

> Может еще и рабочий код приведете?
> А то, знаете-ли, Ваш код:
>
>SomeObject *obj = new SomeObject();
>static int ref = (int)obj;
>
> в оберонах не компилируется.

А с помощью System.Move разве передвинуть 4 байта из указателя в int нельзя?

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[19]: Нужна ли Оберон-ОС защита памяти?
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 16.02.05 09:35
Оценка: -3 :)
Здравствуйте, Кодт, Вы писали:

К>На самом деле, указатели в Си — с одной стороны, крайне небезопасный, а с другой — очень выразительный механизм, в том числе — механизм абстракции.

К>Как в языках со слабой типизацией абстрагируются от типа данных, так в Си (ещё не С++) — от размещения данных.
К>В обоих случаях — это паттерн "простота (хуже воровства)", для слабо типизированных языков — получается более простой транслятор, для Си — облегчённый рантайм.

В Обероне указатели есть (POINTER TO), но адресов и адресной арифметики нет. И именно из-за отсутствия адресов механизм абстракции не очень выразительный. Странно...




С другой стороны в оберонах есть элементарный тип "множество", которого нет в Си/Си++/Java/C#, а в языке Си даже нет булевского типа. А выразительность значит меньше. Опять странно...

Кстати про множества, а почему элементарный тип bool в языки C++/Java/C# все-таки ввели, а элементарный тип "множество" проигнорировали?

Как интересно в Си/Си++/Java/C# работают с битами? Наверное там битовые операции применяют прямо к числам? Вот несчастные программисты, как они там мучаются — ведь в Си/Си++/Java/C# множество битов и числа — это одно и тоже, хотя спроси любого математика так он ответит, что число — это одна математическая абстракция (теория чисел), а множество — совсем другая (теория множеств).



VAR s1, s2, s3: SET;
    n, m: INTEGER;
BEGIN
  s1 := {0,1,2,3}; (* Первые четыре бита = 1, остальные 32-4 = 28 битов равны 0 *)
  s2 := s1;
  n := 13;
  m := 2;
  INCL(s2, n); (* n-тый бит теперь равен 1 *)
  EXCL(s2, m); (* m-тый бит теперь равен 0 *)
  s3 := s1 + s2 + {25, 26}; (* Объединение трех множеств. В объединеном множестве присутсвуют все элементы присутсвующие во всех объединяемых множествах *)
  s3 := s1 * s2; (* Пересечение множеств - остаются только элементы присутсвующие и в первом и во втором множестве *)
  s3 := s1 - s2; (* Разность множеств. Из вычистаемого множества удаляются элементы присутсвующие в вычитаемом множестве *)
  s3 := s1 / s2; (* Симметричная разность множеств. Объединение разностей множеств s1 / s2 = (s1 - s2) + (s2 - s1) *)
  m := ORD(s3);  (* Sum i IN s3: 2^i *)
  s1 := BITS(n); (* {i | ODD(n DIV 2^i)} *)
Re[20]: Нужна ли Оберон-ОС защита памяти?
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 16.02.05 10:01
Оценка: -2
Здравствуйте, Сергей Губанов, Вы писали:

СГ>Как интересно в Си/Си++/Java/C# работают с битами? Наверное там битовые операции применяют прямо к числам? Вот несчастные программисты, как они там мучаются — ведь в Си/Си++/Java/C# множество битов и числа — это одно и тоже, хотя спроси любого математика так он ответит, что число — это одна математическая абстракция (теория чисел), а множество — совсем другая (теория множеств).


К тому же еще если для битовых операций использовать числа, то программа будет не переносимой между big и little endian архитектурами процессоров.
Re[21]: Нужна ли Оберон-ОС защита памяти?
От: Кодт Россия  
Дата: 16.02.05 10:21
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:

СГ>К тому же еще если для битовых операций использовать числа, то программа будет не переносимой между big и little endian архитектурами процессоров.


Неправда. Логическая нумерация битов не зависит от xz-endian; операции "сдвиг вправо/влево" подразумевают логический порядок арабской записи чисел: старшие разряды слева, младшие справа.

Сложности переноса между платформами возникают из-за того, что различается байтовое представление длинных чисел.

Ну а если бы некоторый процессор использовал не IEEE-шный формат float и double, тогда что, по-твоему, и от плавающей арифметики откажемся?
Перекуём баги на фичи!
Re[20]: Нужна ли Оберон-ОС защита памяти?
От: Кодт Россия  
Дата: 16.02.05 10:23
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:

К>>На самом деле, указатели в Си — с одной стороны, крайне небезопасный, а с другой — очень выразительный механизм, в том числе — механизм абстракции.

К>>Как в языках со слабой типизацией абстрагируются от типа данных, так в Си (ещё не С++) — от размещения данных.
К>>В обоих случаях — это паттерн "простота (хуже воровства)", для слабо типизированных языков — получается более простой транслятор, для Си — облегчённый рантайм.

СГ>В Обероне указатели есть (POINTER TO), но адресов и адресной арифметики нет. И именно из-за отсутствия адресов механизм абстракции не очень выразительный. Странно...


<>

И к чему этот выстрел в воздух?..
Перекуём баги на фичи!
Re[20]: Нужна ли Оберон-ОС защита памяти?
От: Костя Ещенко Россия  
Дата: 16.02.05 11:42
Оценка:
Сергей Губанов wrote:

> С другой стороны в оберонах есть элементарный тип "множество", которого нет в Си/Си++/Java/C#, а в языке Си даже нет булевского типа. А выразительность значит меньше. Опять странно...

>
> Кстати про множества, а почему элементарный тип bool в языки C++/Java/C# все-таки ввели, а элементарный тип "множество" проигнорировали?

Не такой уж он элементарный. В С++ есть куча шаблонов множеств для разных сценариев использования: std::bitset, boost::dynamic_bitset, std::vector<bool>, std::set и до кучи std::multiset — множество с повторениями.

> Как интересно в Си/Си++/Java/C# работают с битами? Наверное там битовые операции применяют прямо к числам?


По всякому. Иногда действительно битовыми операциями с числами, иногда с bitset, иногда с bit fields.

> Вот несчастные программисты, как они там мучаются — ведь в Си/Си++/Java/C# множество битов и числа — это одно и тоже, хотя спроси любого математика так он ответит, что число — это одна математическая абстракция (теория чисел), а множество — совсем другая (теория множеств).

>
>
> VAR s1, s2, s3: SET;

Эээ, а что, в Обероне множества не типизированы?

>     n, m: INTEGER;
> BEGIN
>   s1 := {0,1,2,3}; (* Первые четыре бита = 1, остальные 32-4 = 28 битов равны 0 *)
>   s2 := s1;
>   n := 13;
>   m := 2;
>   INCL(s2, n); (* n-тый бит теперь равен 1 *)

Эээ, а если написать INCL(s2, 4000000000), то будет поднят бит № четыре миллиарда?

>   EXCL(s2, m); (* m-тый бит теперь равен 0 *)
>   s3 := s1 + s2 + {25, 26}; (* Объединение трех множеств. В объединеном множестве присутсвуют все элементы присутсвующие во всех объединяемых множествах *)
>   s3 := s1 * s2; (* Пересечение множеств - остаются только элементы присутсвующие и в первом и во втором множестве *)
>   s3 := s1 - s2; (* Разность множеств. Из вычистаемого множества удаляются элементы присутсвующие в вычитаемом множестве *)
>   s3 := s1 / s2; (* Симметричная разность множеств. Объединение разностей множеств s1 / s2 = (s1 - s2) + (s2 - s1) *)
>   m := ORD(s3);  (* Sum i IN s3: 2^i *)
>   s1 := BITS(n); (* {i | ODD(n DIV 2^i)} *)
>
Posted via RSDN NNTP Server 1.9
На самом деле, люди не читают газеты, они принимают их каждое утро, так же как ванну. ©Маршалл Мак-Льюэн
Re[20]: Нужна ли Оберон-ОС защита памяти?
От: Кодт Россия  
Дата: 16.02.05 12:19
Оценка: +2 :))) :)))
Здравствуйте, Сергей Губанов, Вы писали:

СГ>Как интересно в Си/Си++/Java/C# работают с битами? Наверное там битовые операции применяют прямо к числам? Вот несчастные программисты, как они там мучаются — ведь в Си/Си++/Java/C# множество битов и числа — это одно и тоже, хотя спроси любого математика так он ответит, что число — это одна математическая абстракция (теория чисел), а множество — совсем другая (теория множеств).


Вот ты для разнообразия и спроси математика, какими способами можно представить множества...
Навскидку:
— предикат как чёрный ящик
— предикат как формула
— булев вектор (элементы универсума пронумерованы)
— упорядоченная последовательность (над элементами определено отношение порядка)
— неупорядоченная последовательность (над элементами определено отношение эквивалентности)

Паскалевское (sic! ещё паскалевское, а не обероновское) множество — это булев вектор размерности не более чем 256.

А теперь вопрос, почему нужно тащить в язык такую абстракцию, как множества (пусть даже в каком-то фиксированном виде), но забить на другие абстракции.
К примеру, матрицы. Не просто "двумерный массив", а именно матрицы со всей их алгеброй. Почему в Обероне нет матричной алгебры?
А между прочим, она уже давным-давно реализована на уровне языка: смотри APL, MatLab.
Я даже не прошу тензорную алгебру, бог с ней, она не часто нужна, да и размерности там офигительные. Хотя в минимальном виде (аффиноры) можно было бы.
А куда делись столь нужные 3D-моделистам кватернионы?
И после этого ты ещё осмеливаешься хвалить Оберон?
Перекуём баги на фичи!
Re[21]: Нужна ли Оберон-ОС защита памяти?
От: Костя Ещенко Россия  
Дата: 16.02.05 12:56
Оценка:
Кодт wrote:

> СГ>Как интересно в Си/Си++/Java/C# работают с битами? Наверное там битовые операции применяют прямо к числам? Вот несчастные программисты, как они там мучаются — ведь в Си/Си++/Java/C# множество битов и числа — это одно и тоже, хотя спроси любого математика так он ответит, что число — это одна математическая абстракция (теория чисел), а множество — совсем другая (теория множеств).

>
> Вот ты для разнообразия и спроси математика, какими способами можно представить множества...
> Навскидку:
> — предикат как чёрный ящик
> — предикат как формула
> — булев вектор (элементы универсума пронумерованы)
> — упорядоченная последовательность (над элементами определено отношение порядка)
> — неупорядоченная последовательность (над элементами определено отношение эквивалентности)

— еще порождающая функция — yield'ещая все элементы множества или выставляющая наружу итератор по элементам
Posted via RSDN NNTP Server 1.9
На самом деле, люди не читают газеты, они принимают их каждое утро, так же как ванну. ©Маршалл Мак-Льюэн
Re[22]: Нужна ли Оберон-ОС защита памяти?
От: Кодт Россия  
Дата: 16.02.05 13:14
Оценка: +1
Здравствуйте, Костя Ещенко, Вы писали:

>> Вот ты для разнообразия и спроси математика, какими способами можно представить множества...

>> Навскидку:
>> — предикат как чёрный ящик
>> — предикат как формула
>> — булев вектор (элементы универсума пронумерованы)
>> — упорядоченная последовательность (над элементами определено отношение порядка)
>> — неупорядоченная последовательность (над элементами определено отношение эквивалентности)

КЕ>- еще порождающая функция — yield'ещая все элементы множества или выставляющая наружу итератор по элементам


Это уже реализация (в общем случае неупорядоченной) последовательности... Из неё можно тоже наветвить разновидностей. По классификации STL, например
— разрушающее чтение (output iterator) — yield
— последовательный доступ (forward и bidirectional)
— произвольный доступ
Перекуём баги на фичи!
Re[21]: Нужна ли Оберон-ОС защита памяти?
От: AVC Россия  
Дата: 16.02.05 14:48
Оценка:
Здравствуйте, Кодт, Вы писали:

К>А теперь вопрос, почему нужно тащить в язык такую абстракцию, как множества (пусть даже в каком-то фиксированном виде), но забить на другие абстракции.

К>К примеру, матрицы. Не просто "двумерный массив", а именно матрицы со всей их алгеброй. Почему в Обероне нет матричной алгебры?


Справедливости ради, матричная алгебра на Обероне реализуется проще, чем на Си++.
Причина: отсутствие в Си++ многомерных гибких массивов.
В Обероне даже не требуются классы (записи), достаточно массивов.
Я и обратил впервые внимание на Оберон из-за того, что там легко было обобщить методы линейной алгебры для матриц разных размерностей.
Потом уже стало "доходить", что разница между Обероном и Си++ глубже, чем наличие или отсутствие тех или иных фич. Тогда заинтересовался всерьез.

К>А между прочим, она уже давным-давно реализована на уровне языка: смотри APL, MatLab.

К>Я даже не прошу тензорную алгебру, бог с ней, она не часто нужна, да и размерности там офигительные. Хотя в минимальном виде (аффиноры) можно было бы.
К>А куда делись столь нужные 3D-моделистам кватернионы?
К>И после этого ты ещё осмеливаешься хвалить Оберон?

Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.

Хоар
Re[22]: Нужна ли Оберон-ОС защита памяти?
От: Cyberax Марс  
Дата: 16.02.05 15:15
Оценка: +1 :)
AVC пишет:

> Справедливости ради, матричная алгебра на Обероне реализуется проще,

> чем на Си++.

Агащаз... А как насчет разреженных матриц, например? Причем с прозрачным
для пользователя механизмом переключения представления матрицы
(мультисписок->jagged array->flat array). Чего-то не вижу никакой особой
поддержки языка в этом.

> Причина: отсутствие в Си++ многомерных гибких массивов.


Нафиг они не нужны для библиотеки лин. алгебры.

> К>А между прочим, она уже давным-давно реализована на уровне языка:

> смотри APL, MatLab.
> К>Я даже не прошу тензорную алгебру, бог с ней, она не часто нужна, да
> и размерности там офигительные. Хотя в минимальном виде (аффиноры)
> можно было бы.

Еще один частный случай очень редко используемой фичи добавлять в язык?
Ну-ну...

> К>А куда делись столь нужные 3D-моделистам кватернионы?

> К>И после этого ты ещё осмеливаешься хвалить Оберон?
>
А в С++ это все можно

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[22]: Нужна ли Оберон-ОС защита памяти?
От: Кодт Россия  
Дата: 16.02.05 15:29
Оценка:
Здравствуйте, AVC, Вы писали:

AVC>Справедливости ради, матричная алгебра на Обероне реализуется проще, чем на Си++.

AVC>Причина: отсутствие в Си++ многомерных гибких массивов.
AVC>В Обероне даже не требуются классы (записи), достаточно массивов.
AVC>Я и обратил впервые внимание на Оберон из-за того, что там легко было обобщить методы линейной алгебры для матриц разных размерностей.
AVC>Потом уже стало "доходить", что разница между Обероном и Си++ глубже, чем наличие или отсутствие тех или иных фич. Тогда заинтересовался всерьез.

В С++, благодаря шаблонам, есть возможность контролировать размеры матриц на стадии компиляции

Кстати, я всё-таки не понял: ARRAY OF ARRAY (без фиксированного размера) — это прямоугольник или рваный край?
Если рваный край, то просто массивов недостаточно, потребуется обвеска хотя бы в виде функций инициалазации. Как и в случае vector<vector<>>.
А если прямоугольник — то действительно, раз — и готово!

Но опять же, в С++ можно сделать код, эквивалентный Обероновскому.
Введём только, с помощью шаблона, тип "двумерный массив".
template<class T>
class array2d
{
public:
  int xsize() const;
  int ysize() const;

  array2d(); // 1*1
  array2d(int x, int y);
  array2d(const array2d& src);
  array2d& operator=(const array2d& src);

  T& at(int x, int y);
  const T& at(int x, int y) const;
};

Минимально, этого достаточно. Дальше — вагон и маленькая тележка функций, таких же, как в Обероне.
Перекуём баги на фичи!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.