Если разговор об массивах, то проблемы только в переводе с Паскаля на другие языки, которые беднее по синтаксису.SSerge писал(а):1. Речь идет не о языке как таковом. Хотя, что вы считаете достоинством языка, на самом деле совершенно надуманный ход извращенной мысли г-на Вирта и в ряде случаев напрямую провоцирует ошибки программирования при попытке перевести программы с/на паскаль.
Ничего я не забыл. Я сказал порядковые типы, куда перечислимые тоже входят. Насчет "невиданного прогресса" не в курсе, но при отладке очень удобно. Хотя я и не "омериканоязычный программер".SSerge писал(а): Вы еще забыли упомянуть перечислимые типы (которыми емнип тоже можно индексировать), кои были введены исключительно для того, чтобы омериканоязычный программер мог не шевеля извилинами вывести ейное символьное наименование оператором writeln, и это типа невиданный прогресс. То, что при этом epic fail при любых других языках - кого волновало.
Да, изначально - учебный. И сейчас на нем очень удобно концепции объяснять. Далее, что значит в исходном виде? В том, котором его Вирт придумал? или без подключения сторонних модулей? Если первое, то современный паскаль от виртовского далеко ушел. Если второе - то лично я мелкие автономные утилиты под конкретные прикладные задачи проще и быстрее на паскале пишу, чем на си, именно потому, что в самом языке возможностей богато, даже без всяких внешних модулей. Особенно если приходится работать со строками или множествами.SSerge писал(а): Еще раз подчеркиваю - исходный паскаль - язык учебный и теоретизированный, в исходном виде - далёкий от практики программирования.
Хм, Pos - он и в исходном паскале был, а это, знаете, 70-е годы прошлого века. Согласовывать имена функций и порядок параметров с Си смысла не имело, ибо сам Си еще к тому времени не устаканился. Что касается strpos, то это, если память не изменяет, Борландовское нововведение специально для поддержки типа PChar и обеспечение совместимости с языком Си. Сейчас то все некритично, можете Pos и на Pchar использовать, и на все виды String или UnicodeString. Или подключить модуль strings и вперед - пользоваться импортированными из Си функциями с сишным порядком параметров. И это будет Ваш личный выбор.SSerge писал(а):Если бугурт продолжается, давайте приведем следующий пример: есть стандартная библиотека строковых функций языка Си. В ней принято, чтобы строка-результат или строка, по которой ведется обработка, всегда была первым элементом списка аргументов функции. Если не очень понятно -
- Код: Выделить всё
const char * strstr ( const char * исходная_строка, const char * шаблон_поиска );
Как вы думаете, есть ли у вас шансы ошибиться, переводя текст программы, использующий эти вызовы, наpascal, в котором и это:
- Код: Выделить всё
function Pos( const substr: shortstring; const s: shortstring)):SizeInt;
и это
- Код: Выделить всё
function strpos( str: PChar; substr: PChar):PChar;
и даже внутри самого паскаля.
Сами не заметите, как при очередном вызове случайно переставите аргументы. И это не единственное.
И да, можете написать аналог паскалевской функции Pos на Си, а потом ругать язык Си, что в нем есть функции, несовместимые по порядку передачи параметров со стандартными .
Да мне без разницы. Передо мной руководство ставит задачи, которые решать надо, а средства я сам выбираю. Пока выбор Си был в всего в двух случаях и оба раза - системные задачи: разрабатывал модуль ядра для линукса, да еще UDF для MySQL. Все остальное - на freepascal, lazarus, php, javascript и еще на паре-тройке языков. И во всех случаях выбирал язык программирования на основе его возможностей в решении поставленной задачи, а никак ни по эталонности, популярности или распиаренности.SSerge писал(а):Хотите вы или нет, эталон все таки Си/С++
Вот и я удивился. Автор нигде в коде массивы, от единицы индексированные, не использует, а Вы на него обрушиваетесь. Вернее даже на язык, что вообще непонятно. Если разговор про свойства-массивы класса, то это вообще не массивы, строго говоря.SSerge писал(а):2. см. п.1; причем здесь внутренняя реализация
Это смотря для кого библиотека пишется. Если для математиков - то надо. Если для программистов - то нет.SSerge писал(а):3. Не надо делать индексацию, как в математике. Базовый класс, должен иметь индексы, отсчитывающиеся от нуля. Точка. Так работает процессор, так принято в ассемблере, так принято во всех языках программирования, кроме бейсика и фортрана. Если нужна математическая адресация - есть смысл создать класс-надстройку, в котором индексация будет от единицы. Это, imho, должно решить проблемы индейцев.
Ну, не знаю. Я в 20-м веке и на Си писал и на Паскале досовском. На паскале больше и до сих пор бывает свои модули старые поднимаю, подключаю и работаю. Бывает, что и править приходится, но обычно только в сторону расширения. Ну там {H+} поставить, integer на int64 заменить и т.п. В корзину ушли только системозависимые ассемблерные вещи, где у меня процедуры обычно были такими: procedure x;asm ... end, программы обработки прерываний и прямого доступа к устройствам (принтеру, клаве, мыши, видеодаптеру и т.п.) через порты ввода вывода. Тут уж ничего не поделаешь и от языка это не зависит. Но вот чтобы пришлось выбрасывать модули обработки текста или математической обработки - такого не упомню.SSerge писал(а):Да, я не люблю синтаксис языка паскаль.
У меня есть основания его не любить.
И да, в свое время я много чего накодил на турбе. И вот сейчас я смотрю на этот код, и иногда, когда возникает необходимость, с нехорошими словами, запускаю его под эмулятором доса. Потому что, сцуко, я слишком хорошо знал Borland Pascal и внутреннюю организацию его менеджера памяти, библиотек и прочего. Вот и напрограммил. Я де-факто не могу взять этот код и просто откомпилировать современными средствами - его придется писать заново. Даже для freePascal. И у вас будет то же. Позже. Поэтому настоятельно рекомендую писать как можно проще и не привязываться к фишкам, ставящим в тупик при необходимости перевести ваш код на другой язык программирования.
Добавлено спустя 2 минуты 11 секунд:
SSerge писал(а):Ну и товарищ настоятельно доказывает, чтобы индексация у класса работы с матрицами могла быть с произвольного индекса, как типо все привыкли в паскале.
Да ну? Где это я такое доказывал?