Entry tags:
Endianness
Александр Семенович Кронрод был математиком. А еще он был программистом. В начале 60-х годов он написан книжку "Беседы о программировании". Она так не понравилась другим математикам, что они запретили ее издание.
Книга была издана только в 2001 году.
Мне она тоже не понравилась.
В XXI веке человеку трудно понять, что такое "трехадресная машина", у которой есть "4096 ячеек памяти". К счастью, история вычислительной техники интересовала меня давно, и такие названия, как М-2, Наири, М-20 и Минск-32 мне прекрасно известны, равно как и архитектура и система команд этих машин. Поэтому я понял, о чем пишет Александр Семенович Кронрод.
Не понравилось мне то, что Александр Семенович был противником стандартизации. Это хорошо, если речь идет о стандартизации мыслей. Но плохо, если о стандартизации вычислительных машин. Кронрод справедливо отмечает, что в системе команд М-20 имеется слишком много команд останова, и что вместо лишних можно было бы создать другие полезные команды. Он с гордостью пишет, что в его институте инженеры не были ленивыми, и они переделали машину.
С того момента, как неленивые инженеры это сделали, все программы Александра Семеновича Кронрода перестали быть интересны кому-либо, кроме самого Александра Семеновича. Потому что они стали непереносимыми. Машина, для которой они написаны, существует в единственном экземпляре, в то время как машин с системой команд типа М-20 - более тысячи. Представьте, что неленивые инженеры, вдохновленные кронродами, переделали на свой лад все эти машины. Теперь любую задачу нужно решать не один раз, а тысячу раз. "Э" - эффективность.
Кроме того, Александр Семенович Кронрод не любил языки программирования. Они отрывали программиста от машины и стимулировали его лень. А ведь лень, как мы видели, не позволяет переделать машину и добиться эффективности.
Я только что закончил ковырять очень эффективную программу для ЕС ЭВМ. В той программе очень много данных заведено операторами DATA. Так вот, для большей эффективности все целые и вещественные числа были вбиты в виде шестнадцатеричных констант. Ну, транслятору же проще транслировать именно шестнадцатеричные константы, правда?!
Как вы догадываетесь, в моем распоряжении нет ЕС ЭВМ. Есть писюк с процессором AMD. В отличие от EС ЭВМ у этого процессора архитектура little-endian: байты в многобайтных числах идут в другом порядке. Запиши авторы той программы целые числа обычным образом (десятичные), забота о размещении их в памяти легла бы на плечи компилятора. Страшно неэффективно! Поэтому выворачивать шестнадцатеричные константы пришлось мне.
В процессоре ЕС ЭВМ вещественные числа представляются не так, как в процессоре AMD. Запиши авторы той программы вещественные числа обычным образом, забота о преобразовании их в машинный формат легла бы на плечи компилятора. Но как пострадала бы эффективность! Поэтому конвертировать форматы пришлось мне, а это несколько сложнее, чем просто переставить байты.
В общем, книжку Александра Семеновича Кронрода многие не смогли своевременно прочесть. Но мир это не спасло.
Книга была издана только в 2001 году.
Мне она тоже не понравилась.
В XXI веке человеку трудно понять, что такое "трехадресная машина", у которой есть "4096 ячеек памяти". К счастью, история вычислительной техники интересовала меня давно, и такие названия, как М-2, Наири, М-20 и Минск-32 мне прекрасно известны, равно как и архитектура и система команд этих машин. Поэтому я понял, о чем пишет Александр Семенович Кронрод.
Не понравилось мне то, что Александр Семенович был противником стандартизации. Это хорошо, если речь идет о стандартизации мыслей. Но плохо, если о стандартизации вычислительных машин. Кронрод справедливо отмечает, что в системе команд М-20 имеется слишком много команд останова, и что вместо лишних можно было бы создать другие полезные команды. Он с гордостью пишет, что в его институте инженеры не были ленивыми, и они переделали машину.
С того момента, как неленивые инженеры это сделали, все программы Александра Семеновича Кронрода перестали быть интересны кому-либо, кроме самого Александра Семеновича. Потому что они стали непереносимыми. Машина, для которой они написаны, существует в единственном экземпляре, в то время как машин с системой команд типа М-20 - более тысячи. Представьте, что неленивые инженеры, вдохновленные кронродами, переделали на свой лад все эти машины. Теперь любую задачу нужно решать не один раз, а тысячу раз. "Э" - эффективность.
Кроме того, Александр Семенович Кронрод не любил языки программирования. Они отрывали программиста от машины и стимулировали его лень. А ведь лень, как мы видели, не позволяет переделать машину и добиться эффективности.
Я только что закончил ковырять очень эффективную программу для ЕС ЭВМ. В той программе очень много данных заведено операторами DATA. Так вот, для большей эффективности все целые и вещественные числа были вбиты в виде шестнадцатеричных констант. Ну, транслятору же проще транслировать именно шестнадцатеричные константы, правда?!
Как вы догадываетесь, в моем распоряжении нет ЕС ЭВМ. Есть писюк с процессором AMD. В отличие от EС ЭВМ у этого процессора архитектура little-endian: байты в многобайтных числах идут в другом порядке. Запиши авторы той программы целые числа обычным образом (десятичные), забота о размещении их в памяти легла бы на плечи компилятора. Страшно неэффективно! Поэтому выворачивать шестнадцатеричные константы пришлось мне.
В процессоре ЕС ЭВМ вещественные числа представляются не так, как в процессоре AMD. Запиши авторы той программы вещественные числа обычным образом, забота о преобразовании их в машинный формат легла бы на плечи компилятора. Но как пострадала бы эффективность! Поэтому конвертировать форматы пришлось мне, а это несколько сложнее, чем просто переставить байты.
В общем, книжку Александра Семеновича Кронрода многие не смогли своевременно прочесть. Но мир это не спасло.