Автор Тема: Динамические (открытые) массивы в Оберонах.  (Прочитано 21307 раз)

kemiisto

  • Jr. Member
  • **
  • Сообщений: 64
    • Просмотр профиля
    • kemiisto.ru
Вот, нашёл Comment on a note on dynamic arrays in PASCAL от Отца-основателя. Мотивировочка для введения открытых массивов. Компромисс... Идея обрела реализацию в Oberon-2.

Внимание вопрос! А почему из Oberon-07 открытые массивы выпилили? Никто не встречал обоснования Самого?

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re:Динамические (открытые) массивы в Оберонах.
« Ответ #1 : Март 30, 2011, 12:44:52 pm »
Вирт же как-то заявил, что он пытался в древности реализовать динамические массивы и за час с этим не справился, поэтому в его языках таких массивов не будет.
Однако в оберон всё таки добавил их (не знаю, как там с модулой-2).
А в обероне-07 ему такие массивы в микроконтроллерах, видимо, не понадобились, вот он их и выкинул за ненадобностью -- зуб-то у него на них давно уже...
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

DIzer

  • Гость
Re:Динамические (открытые) массивы в Оберонах.
« Ответ #2 : Март 30, 2011, 01:58:49 pm »
Было бы интересно  узнать, зачем ЕМУ это все было нужно вообще... Однако , выдержка интересная - стоит обратить внимание на то, что Вирт индексирует  эти гипотетические (в те времена) массивы с 1 -т.е. в то время на эффективность реализации ему было пофиг.

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re:Динамические (открытые) массивы в Оберона&
« Ответ #3 : Март 30, 2011, 02:13:46 pm »
Было бы интересно  узнать, зачем ЕМУ это все было нужно вообще... Однако , выдержка интересная - стоит обратить внимание на то, что Вирт индексирует  эти гипотетические (в те времена) массивы с 1 -т.е. в то время на эффективность реализации ему было пофиг.

Эффективность тут постольку поскольку. Ну вот смотрите, свежайший пример из задачки про электронные таблицы. Как перейти от буквенного индекса к целочисленному? "alpha - 'A'". Ну или на обероне: "alpha - ORD('A')". А если у вас индексирование с единицы, то начинает лезть "ненужная" 1: "alpha - ORD('A') + 1". И таких примеров - тыща. Можно индексировать с 1, но неудобно.

DIzer

  • Гость
Re:Динамические (открытые) массивы в Оберона&
« Ответ #4 : Март 30, 2011, 02:27:09 pm »


Эффективность тут постольку поскольку. Ну вот смотрите, свежайший пример из задачки про электронные таблицы. Как перейти от буквенного индекса к целочисленному? "alpha - 'A'". Ну или на обероне: "alpha - ORD('A')". А если у вас индексирование с единицы, то начинает лезть "ненужная" 1: "alpha - ORD('A') + 1". И таких примеров - тыща. Можно индексировать с 1, но неудобно.
К сожалению , а что мешает буквенный индекс нумеровать с 1 - впрочем  ответ понятен- тяжелое наследие прошлого, но в конкретном замкнутом на себя  языке этого можно избежать . (vlad - я ПРЕКРАСНО понимаю про что вы говорите - просто подчеркиваю, что в те временя Вирт это не считал проблемой).
« Последнее редактирование: Март 30, 2011, 02:29:28 pm от DIzer »

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re:Динамические (открытые) массивы в Оберонах.
« Ответ #5 : Март 30, 2011, 02:51:31 pm »
Вот, нашёл Comment on a note on dynamic arrays in PASCAL от Отца-основателя. Мотивировочка для введения открытых массивов. Компромисс... Идея обрела реализацию в Oberon-2.
Следует учитывать, что к Оберону-2 Вирт имеет отношение постольку поскольку.
Чисто виртовские языки – это Оберон и Оберон-07.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

DIzer

  • Гость
Re:Динамические (открытые) массивы в Оберонах.
« Ответ #6 : Март 30, 2011, 03:15:10 pm »
Следует учитывать, что к Оберону-2 Вирт имеет отношение постольку поскольку.
Чисто виртовские языки – это Оберон и Оберон-07.
Раз уж такой разговор, то следует учитывать что концепт открытых массивов (соглашений по которому в подпрограмму передаются массивы ОДИНАКОВЫХ типов РАЗЛИЧНЫХ размерностей) отличается от оного в случае динамических массивов  :)

DIzer

  • Гость
Re:Динамические (открытые) массивы в Оберонах.
« Ответ #7 : Март 30, 2011, 07:10:46 pm »
Следует учитывать, что к Оберону-2 Вирт имеет отношение постольку поскольку.
Чисто виртовские языки – это Оберон и Оберон-07.
Раз уж такой разговор, то следует учитывать что концепт открытых массивов (соглашений по которому в подпрограмму передаются массивы ОДИНАКОВЫХ типов РАЗЛИЧНЫХ размерностей) отличается от оного в случае динамических массивов  :)
Ох , конечно же моя ляпа - я имел ввиду различные размеры (количество элементов массива ) а не размерности, сорри.

Илья Ермаков

  • Full Member
  • ***
  • Сообщений: 177
    • Просмотр профиля
    • OberonCore
Re:Динамические (открытые) массивы в Оберонах.
« Ответ #8 : Март 30, 2011, 08:01:24 pm »
2 Dizer:

Вы же математик - вот Вам пояснение, почему нумерация с нуля соответствует "природе задач". Арифметика вычетов по какому-то модулю включает числа от 0 до этого числа - 1. Любая n-ричная система счисления включает знаки от 0 до n-1. Как следствие, во многих случаях арифметика с массивами от 0 выполняется естественным образом. Пример я приводил, например, - кольцевой буфер.

DIzer

  • Гость
Re:Динамические (открытые) массивы в Оберонах.
« Ответ #9 : Март 30, 2011, 08:14:24 pm »
2 Dizer:

Вы же математик - вот Вам пояснение, почему нумерация с нуля соответствует "природе задач". Арифметика вычетов по какому-то модулю включает числа от 0 до этого числа - 1. Любая n-ричная система счисления включает знаки от 0 до n-1. Как следствие, во многих случаях арифметика с массивами от 0 выполняется естественным образом. Пример я приводил, например, - кольцевой буфер.
Как "математик" я это прекрасно знаю (не заставляйте меня повторятся). Арифметика арифметикой, но  я говорю про сущности вещей - в данном случае о массиве - как о наборе одинаковых контейнеров - индивидуальное обращение к которому производится по номеру (только не надо здесь уточнять это определение (эти уточнения я тоже знаю)). Я веду речь о том, что ЧЕЛОВЕКУ естественно отсчитывать сущности с 1 (одно яблоко, два яблока) - 0 яблок означает у него отсутствие оных. Насчет буфера - не вижу проблемы , заменяйте везде a mod b на
а mod b +1 - и будет вам счастье...И  ваш идол Вирт судя по этой статье прекрасно об этом знал.
« Последнее редактирование: Март 30, 2011, 08:16:12 pm от DIzer »

igor

  • Sr. Member
  • ****
  • Сообщений: 438
    • Просмотр профиля
Re:Динамические (открытые) массивы в Оберонах.
« Ответ #10 : Март 31, 2011, 08:00:49 am »
массивы ОДИНАКОВЫХ типов
Массивы РАЗЛИЧНЫХ типов - это и не массивы вовсе, а записи. Так что в Вашем выражении слова "ОДИНАКОВЫХ типов" не несут полезной информации.  ;)

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re:Динамические (открытые) массивы в Оберонах.
« Ответ #11 : Март 31, 2011, 08:08:50 am »
массивы ОДИНАКОВЫХ типов
Массивы РАЗЛИЧНЫХ типов - это и не массивы вовсе, а записи. Так что в Вашем выражении слова "ОДИНАКОВЫХ типов" не несут полезной информации.  ;)

массивы ОДИНАКОВЫХ типов:
ARRAY 10 OF INTEGER
ARRAY 10 OF INTEGER

Массивы РАЗЛИЧНЫХ типов:
ARRAY 10 OF INTEGER
ARRAY 11 OF INTEGER
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

igor

  • Sr. Member
  • ****
  • Сообщений: 438
    • Просмотр профиля
Re:Динамические (открытые) массивы в Оберонах.
« Ответ #12 : Март 31, 2011, 08:10:13 am »
ЧЕЛОВЕКУ естественно отсчитывать сущности с 1 (одно яблоко, два яблока) - 0 яблок означает у него отсутствие оных.
В данном случае уместнее было бы сказать "первое яблоко", "второе яблоко".
"Нулевое яблоко" - не означает отсутствие оных. (Означает "яблоко с индексом ноль").

Я вижу неприятность только в одном. В том, что математики индексируют элементы матрицы начиная с единицы. Таким образом, "ихние" индексы элементов матрицы и "правильные" индексы элементов числового массива, в котором хранится эта матрица, не совпадают.

igor

  • Sr. Member
  • ****
  • Сообщений: 438
    • Просмотр профиля
Re:Динамические (открытые) массивы в Оберонах.
« Ответ #13 : Март 31, 2011, 08:14:28 am »
Массивы РАЗЛИЧНЫХ типов - это и не массивы вовсе, а записи.

массивы ОДИНАКОВЫХ типов: ...

Массивы РАЗЛИЧНЫХ типов: ...


Всё, расклинило мозги.  :D

DIzer

  • Гость
Re:Динамические (открытые) массивы в Оберонах.
« Ответ #14 : Март 31, 2011, 08:57:43 am »
Я вижу неприятность только в одном. В том, что математики индексируют элементы матрицы начиная с единицы. Таким образом, "ихние" индексы элементов матрицы и "правильные" индексы элементов числового массива, в котором хранится эта матрица, не совпадают.
К сожалению, таковыми  являются ВСЕ люди после школы. Да и Вирт как ни странно  ;)