xdsl1. Речь идет не о языке как таковом. Хотя, что вы считаете достоинством языка, на самом деле совершенно надуманный ход извращенной мысли г-на Вирта и в ряде случаев напрямую провоцирует ошибки программирования при попытке перевести программы с/на паскаль. Вы еще забыли упомянуть перечислимые типы (которыми емнип тоже можно индексировать), кои были введены исключительно для того, чтобы омериканоязычный программер мог не шевеля извилинами вывести ейное символьное наименование оператором writeln, и это типа невиданный прогресс. То, что при этом epic fail при любых других языках - кого волновало. Еще раз подчеркиваю - исходный паскаль - язык учебный и теоретизированный, в исходном виде - далёкий от практики программирования. Если бугурт продолжается, давайте приведем следующий пример: есть стандартная библиотека строковых функций языка Си. В ней принято, чтобы строка-результат или строка, по которой ведется обработка, всегда была первым элементом списка аргументов функции. Если не очень понятно -
- Код: Выделить всё
const char * strstr ( const char * исходная_строка, const char * шаблон_поиска );
Как вы думаете, есть ли у вас шансы ошибиться, переводя текст программы, использующий эти вызовы, наpascal, в котором и это:
- Код: Выделить всё
function Pos( const substr: shortstring; const s: shortstring)):SizeInt;
и это
- Код: Выделить всё
function strpos( str: PChar; substr: PChar):PChar;
и даже внутри самого паскаля.
Сами не заметите, как при очередном вызове случайно переставите аргументы. И это не единственное.
Хотите вы или нет, эталон все таки Си/С++
2. см. п.1; причем здесь внутренняя реализация
3. Не надо делать индексацию, как в математике. Базовый класс, должен иметь индексы, отсчитывающиеся от нуля. Точка. Так работает процессор, так принято в ассемблере, так принято во всех языках программирования, кроме бейсика и фортрана. Если нужна математическая адресация - есть смысл создать класс-надстройку, в котором индексация будет от единицы. Это, imho, должно решить проблемы индейцев.
Да, я не люблю синтаксис языка паскаль.
У меня есть основания его не любить.
И да, в свое время я много чего накодил на турбе. И вот сейчас я смотрю на этот код, и иногда, когда возникает необходимость, с нехорошими словами, запускаю его под эмулятором доса. Потому что, сцуко, я слишком хорошо знал Borland Pascal и внутреннюю организацию его менеджера памяти, библиотек и прочего. Вот и напрограммил. Я де-факто не могу взять этот код и просто откомпилировать современными средствами - его придется писать заново. Даже для freePascal. И у вас будет то же. Позже. Поэтому настоятельно рекомендую писать как можно проще и не привязываться к фишкам, ставящим в тупик при необходимости перевести ваш код на другой язык программирования.