История изменений
Исправление monk, (текущая версия) :
Си не предназначен для написания быстрых программ. Точнее, программа на Си один в один превращается в маш коды, ничего поверх этого не подразумевалось.
Так это и есть «предназначен для написания быстрых программ». Также как и макроассемблер. В первых версиях Си даже вручную указывалось какую переменную в регистр складывать, а какую в стек.
Альтернативами на тот момент были Фортран и ПЛ/1 с одной стороны. Которые тоже были предназначены для написания быстрых программ, но скорость программы зависела не от программиста, а от компилятора. И Лисп с другой стороны, где было всё для написания надёжных программ: сборка мусора, отсутствие неопределённого поведения, невозможность средствами языка влезть в неинициализированную память, но медленный.
С момента, когда ассемблерные структуры перестали адекватно соответствовать примитивам Си (MMX?), развитие Си пошло по пути Фортрана. Только вместо нормальных высокоуровневых инструкций компилятор начал распознавать идиоматический код на Си.
Которые сплошной сишный массив. То есть, абсолютно любая операция, кроме «изменить ячейку» либо дорогая, как append, либо очень дорогая, как prepend или insert.
Так в Си и Си++ массивы тоже активно используются. Чем Питон хуже? Разве что не понятно, зачем они массивы назвали списками.
Исходная версия monk, :
Си не предназначен для написания быстрых программ. Точнее, программа на Си один в один превращается в маш коды, ничего поверх этого не подразумевалось.
Так это и есть «предназначен для написания быстрых программ». В первых версиях даже вручную указывалось какую переменную в регистр складывать, а какую в стек.
Альтернативами на тот момент были Фортран и ПЛ/1 с одной стороны. Которые тоже были предназначены для написания быстрых программ, но скорость программы зависела не от программиста, а от компилятора. И Лисп с другой стороны, где было всё для написания надёжных программ: сборка мусора, отсутствие неопределённого поведения, невозможность средствами языка влезть в неинициализированную память, но медленный.
С момента, когда ассемблерные структуры перестали адекватно соответствовать примитивам Си (MMX?), развитие Си пошло по пути Фортрана. Только вместо нормальных высокоуровневых инструкций компилятор начал распознавать идиоматический код на Си.
Которые сплошной сишный массив. То есть, абсолютно любая операция, кроме «изменить ячейку» либо дорогая, как append, либо очень дорогая, как prepend или insert.
Так в Си и Си++ массивы тоже активно используются. Чем Питон хуже? Разве что не понятно, зачем они массивы назвали списками.