Фундаментальные однородные контейнеры

Проектирование и разработка идеального средства программирования.

Модератор: Модераторы

Фундаментальные однородные контейнеры

Сообщение Bonart » 25.06.2008 07:58:00

Обычно языки сами по себе непосредственно поддерживают один из двух таких контейнеров - динамические массивы или списки, обеспечивая (в идеале) агрегирование, индексацию, итерацию, конкатенацию, извлечение подконтейнера, вставку и удаление элементов. Между тем, для практических целей оба контейнера больше дополняют, чем заменяют друг друга, так как из приведенных операций одни принципиально эффективней реализуются для списков, а другие - для массивов.
Отсюда предложение - обеспечить нативную поддержку компилятором как массивов, так и списков с единообразным синтаксисом использования.

Описание:
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
Вставка-удаление: стандартными процедурами.
Bonart
новенький
 
Сообщения: 81
Зарегистрирован: 29.06.2007 11:47:40

Re: Фундаментальные однородные контейнеры

Сообщение PublicJoke » 25.06.2008 09:07:40

Ага, и встроенную трейд-сейфность заодно. Кроссплатформенную, конечно. Сразу берите Zonnon.
PublicJoke
новенький
 
Сообщения: 41
Зарегистрирован: 04.07.2006 12:21:07

PЗабиваем води микроскопом? ;)

Сообщение Bonart » 25.06.2008 09:24:17

Не понял - каким боком из предложения поддерживать оба самых распространенных вида молотков следует необходимость тащить в язык еще и электродрель, совсмещенную с бензопилой?
Bonart
новенький
 
Сообщения: 81
Зарегистрирован: 29.06.2007 11:47:40

Re: Фундаментальные однородные контейнеры

Сообщение PublicJoke » 25.06.2008 09:44:44

У самого распространенного вида молотков есть характерная родовая болезнь - чувствительность к конкурентному доступу на запись. И если для C++ простительно не вводить никаких защитных механизмов (C++, как известно, для настоящих мастеров :shock: ), то для Паскаля, создатель которого постоянно заботился о том, чтобы программисты себе чего-нибудь нужное случайно не отстрелили, отсутствие таких механизмов выглядит странновато, на мой взгляд. Borland, вводя динамические массивы, прекрасно понимал, что это гнилой компромисс в попытке обойтись без шаблонов. Но Borland в свое время был гением компромиссов, тем и жил. А Вы, спустя 10 лет после Borland, предлагаете этот цельнотянутый из Delphi компромисс еще и усугубить.
PublicJoke
новенький
 
Сообщения: 41
Зарегистрирован: 04.07.2006 12:21:07

Re: Фундаментальные однородные контейнеры

Сообщение ev » 25.06.2008 09:49:28

хм... а разве в обероне нет динамических массивов?
ev
долгожитель
 
Сообщения: 1763
Зарегистрирован: 27.04.2005 23:19:06
Откуда: Москва

Re: Фундаментальные однородные контейнеры

Сообщение Bonart » 25.06.2008 10:01:49

Шаблоны - это всего лишь очередная реинкарнация макросов ;)
А списки и динамические массивы если отсутсвуют на уровне языка - моментально реализуются в библиотеках.
Bonart
новенький
 
Сообщения: 81
Зарегистрирован: 29.06.2007 11:47:40

Re: Фундаментальные однородные контейнеры

Сообщение Vadim » 25.06.2008 10:54:55

ev писал(а):а разве в обероне нет динамических массивов?

Есть:
http://www.uni-vologda.ac.ru/oberon/index.html
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Фундаментальные однородные контейнеры

Сообщение ev » 25.06.2008 11:07:47

Есть:

вот поэтому и не совсем понятно почему динамические массивы стали "гнилой компромисс в попытке обойтись без шаблонов"
ev
долгожитель
 
Сообщения: 1763
Зарегистрирован: 27.04.2005 23:19:06
Откуда: Москва

Re: Фундаментальные однородные контейнеры

Сообщение Vadim » 25.06.2008 11:48:31

ev писал(а):вот поэтому и не совсем понятно почему динамические массивы стали "гнилой компромисс в попытке обойтись без шаблонов"

Возможно у товарища несколько иной подход к написанию программы, чем у серой массы, навроде меня. :)
Мне, как пользователю-программисту (а не разработчику глобальных супер-микро-гипер-квадро устойчивых систем реального времени :) ), появление динамических массивов показалось манной небесной, облегчающей написание некоего ящика для хранения данных.
Сразу признаюсь, что на Си++ я никогда серьёзно не программировал, поэтому "осанны" в адрес всяких STL и шаблонов - для меня пустой звук. :)
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Фундаментальные однородные контейнеры

Сообщение PublicJoke » 25.06.2008 11:52:06

ev писал(а):хм... а разве в обероне нет динамических массивов?


Я Zonnon упомянул не потому, что там есть (или отсутствуют) динамические массивы, а потому, что обеспечение конкурентности вшито в сам язык. Соответственно, стоимость защиты мьютексом, например, не выше стоимости использования динамического массива (с точки зрения программиста, разумеется). Хотя честно признаюсь, что на Zonnon'е ни разу ничего не писал, поэтому не знаю, насколько он хорош в реальной жизни.

Добавлено спустя 3 минуты 59 секунд:
Vadim писал(а):...появление динамических массивов показалось манной небесной, облегчающей написание некоего ящика для хранения данных.

Мне тоже. В то время.
PublicJoke
новенький
 
Сообщения: 41
Зарегистрирован: 04.07.2006 12:21:07

Re: Фундаментальные однородные контейнеры

Сообщение Иван Шихалев » 25.06.2008 14:11:41

Хм, вообще-то threadsafe'ность все равно надо как-то вводить, безотносительно к конкретным типам. Кстати, для динамических типов это вообще не проблема — так или иначе они уже имеют некую служебную область, куда можно и данные о блокировках поместить без проблем.
Аватара пользователя
Иван Шихалев
энтузиаст
 
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург

Re: Фундаментальные однородные контейнеры

Сообщение PublicJoke » 25.06.2008 15:04:12

Иван Шихалев писал(а):Хм, вообще-то threadsafe'ность все равно надо как-то вводить, безотносительно к конкретным типам. Кстати, для динамических типов это вообще не проблема — так или иначе они уже имеют некую служебную область, куда можно и данные о блокировках поместить без проблем.

Как-то - это да. Вопрос - как? Не повесишь же на каждый массив по системному мьютексу, системе такое вряд ли понравится. Значит, придется вводить некую рукотворную многопоточность на уровне RTL, а это как раз и есть Zonnon. О чем я и говорю.
PublicJoke
новенький
 
Сообщения: 41
Зарегистрирован: 04.07.2006 12:21:07


Вернуться в Компилятор / язык программирования

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

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

Рейтинг@Mail.ru