Сергей Прохоренко писал(а):
Валерий Лаптев писал(а):
Мне кажется, еще до Дейкстры создатели С интуитивно поступили правильно. И Вирт, обратите внимание, тоже в конце концов сделал то же самое.
Я обратил внимание, но мотивы Вирта мне не известны. Может быть, он просто решил не выделяться" - и так все вокруг обвиняли его в отрыве от мэйнстрима.
Мне не нравится, когда технические решения обосновывают интуицией. Интуитивно правильно было бы вообще не создавать такой язык программирования, как Си.
У меня есть четкая позиция:
компилятор (и язык) для программиста, а не программист для компилятора. Несколько лет люди в вузах изучают линейную алгебру, где элементы матриц нумеруются с единицы, все математические модели используют нумерацию элементов с единицы. И вот вдруг ни с того ни с сего при программировании этих самых матмоделей требуют сдвинуть систему координат! Чего ради? Ради "сишных" программистов, которые скорее уйдут на пенсию, чем перейдут на новый язык?
В современной индустрии программирования полно галиматьи и шаманства, и участники этого форума пишут об этом регулярно. А то, что "все программисты делают это", для меня ничего не значит - я не в восторге от "успехов" этой отрасли, которая находится в глубоком идеологическом кризисе уже многие десятилетия.
1. Математические модели и их реализация - это "две большие разницы". Просто поищите ПОДХОДЯЩИЙ вам инструмент. С задаваемыми границами массивов.
2. В то время, когда создавался С, только Дейкстра (и, может быть, еще пара-тройка человек) задумывался о том, что такое программы. И для чего они: для компьютера или для человека.
Остальные в большинстве своем просто лабали проги. В С индекс элемента массива означает именно не номер, а смещение от начала - это естественно устройство адресуемой памяти.
Хотя, например, в системе команд 8086 есть команда bound, с помощью которой можно проверить, попадает ли указанное целое в заданный интервал. Правда, пользоваться не очень удобно - прерывание надо обрабатывать.
Аналог механизма исключений в языках высокого уровня...