Фундаментальные однородные контейнеры
Модератор: Модераторы
Фундаментальные однородные контейнеры
Обычно языки сами по себе непосредственно поддерживают один из двух таких контейнеров - динамические массивы или списки, обеспечивая (в идеале) агрегирование, индексацию, итерацию, конкатенацию, извлечение подконтейнера, вставку и удаление элементов. Между тем, для практических целей оба контейнера больше дополняют, чем заменяют друг друга, так как из приведенных операций одни принципиально эффективней реализуются для списков, а другие - для массивов.
Отсюда предложение - обеспечить нативную поддержку компилятором как массивов, так и списков с единообразным синтаксисом использования.
Описание:
1. Массивы: a: [array] [ [size] ] [of] integer.
2. Списки: a: [list] [ integer ]
Агрегирование: [элемент1, элемент2...]
Индексирование: a[i]
Итерация: for i in a do....end
Извлечение подконтейнера: a[i..j]
Конкатенация: a ++ b
Вставка-удаление: стандартными процедурами.
Отсюда предложение - обеспечить нативную поддержку компилятором как массивов, так и списков с единообразным синтаксисом использования.
Описание:
1. Массивы: a: [array] [ [size] ] [of] integer.
2. Списки: a: [list] [ integer ]
Агрегирование: [элемент1, элемент2...]
Индексирование: a[i]
Итерация: for i in a do....end
Извлечение подконтейнера: a[i..j]
Конкатенация: a ++ b
Вставка-удаление: стандартными процедурами.
-
PublicJoke
- новенький
- Сообщения: 41
- Зарегистрирован: 04.07.2006 12:21:07
Ага, и встроенную трейд-сейфность заодно. Кроссплатформенную, конечно. Сразу берите Zonnon.
Не понял - каким боком из предложения поддерживать оба самых распространенных вида молотков следует необходимость тащить в язык еще и электродрель, совсмещенную с бензопилой?
-
PublicJoke
- новенький
- Сообщения: 41
- Зарегистрирован: 04.07.2006 12:21:07
У самого распространенного вида молотков есть характерная родовая болезнь - чувствительность к конкурентному доступу на запись. И если для C++ простительно не вводить никаких защитных механизмов (C++, как известно, для настоящих мастеров
), то для Паскаля, создатель которого постоянно заботился о том, чтобы программисты себе чего-нибудь нужное случайно не отстрелили, отсутствие таких механизмов выглядит странновато, на мой взгляд. Borland, вводя динамические массивы, прекрасно понимал, что это гнилой компромисс в попытке обойтись без шаблонов. Но Borland в свое время был гением компромиссов, тем и жил. А Вы, спустя 10 лет после Borland, предлагаете этот цельнотянутый из Delphi компромисс еще и усугубить.
хм... а разве в обероне нет динамических массивов?
Шаблоны - это всего лишь очередная реинкарнация макросов 
А списки и динамические массивы если отсутсвуют на уровне языка - моментально реализуются в библиотеках.
А списки и динамические массивы если отсутсвуют на уровне языка - моментально реализуются в библиотеках.
ev писал(а):а разве в обероне нет динамических массивов?
Есть:
http://www.uni-vologda.ac.ru/oberon/index.html
Есть:
вот поэтому и не совсем понятно почему динамические массивы стали "гнилой компромисс в попытке обойтись без шаблонов"
ev писал(а):вот поэтому и не совсем понятно почему динамические массивы стали "гнилой компромисс в попытке обойтись без шаблонов"
Возможно у товарища несколько иной подход к написанию программы, чем у серой массы, навроде меня.
Мне, как пользователю-программисту (а не разработчику глобальных супер-микро-гипер-квадро устойчивых систем реального времени
Сразу признаюсь, что на Си++ я никогда серьёзно не программировал, поэтому "осанны" в адрес всяких STL и шаблонов - для меня пустой звук.
-
PublicJoke
- новенький
- Сообщения: 41
- Зарегистрирован: 04.07.2006 12:21:07
ev писал(а):хм... а разве в обероне нет динамических массивов?
Я Zonnon упомянул не потому, что там есть (или отсутствуют) динамические массивы, а потому, что обеспечение конкурентности вшито в сам язык. Соответственно, стоимость защиты мьютексом, например, не выше стоимости использования динамического массива (с точки зрения программиста, разумеется). Хотя честно признаюсь, что на Zonnon'е ни разу ничего не писал, поэтому не знаю, насколько он хорош в реальной жизни.
Добавлено спустя 3 минуты 59 секунд:
Vadim писал(а):...появление динамических массивов показалось манной небесной, облегчающей написание некоего ящика для хранения данных.
Мне тоже. В то время.
- Иван Шихалев
- энтузиаст
- Сообщения: 1138
- Зарегистрирован: 15.05.2006 11:26:13
- Откуда: Екатеринбург
- Контактная информация:
Хм, вообще-то threadsafe'ность все равно надо как-то вводить, безотносительно к конкретным типам. Кстати, для динамических типов это вообще не проблема — так или иначе они уже имеют некую служебную область, куда можно и данные о блокировках поместить без проблем.
-
PublicJoke
- новенький
- Сообщения: 41
- Зарегистрирован: 04.07.2006 12:21:07
Иван Шихалев писал(а):Хм, вообще-то threadsafe'ность все равно надо как-то вводить, безотносительно к конкретным типам. Кстати, для динамических типов это вообще не проблема — так или иначе они уже имеют некую служебную область, куда можно и данные о блокировках поместить без проблем.
Как-то - это да. Вопрос - как? Не повесишь же на каждый массив по системному мьютексу, системе такое вряд ли понравится. Значит, придется вводить некую рукотворную многопоточность на уровне RTL, а это как раз и есть Zonnon. О чем я и говорю.
