Стандарты языков программирования
В предыдущем разделе в качестве одного из критериев выбора языка была выделена возможность переноса законченной программы с машины на машину. Если требуется перенос на машину того же самого типа, то предполагается, что все языки, имеющиеся на Вашей машине, есть и на другой, и проблемы здесь не возникает, хотя существует ряд других проблем, связанных с переносом, которые рассмотрены в разд. 5.3. Если же программа предназначена для переноса на ЭВМ, относящуюся к другому классу, выбор ограничен лишь широко распространенными языками (такими как Фортран и Кобол), которые были объектом международной стандартизации, и языками, которые хотя формально и не стандартизованы, но имеют общепринятое описание. Однако, как будет показано в этом разделе, выбор одного из указанных языков еще не снимает проблему.
В начальный период разработки языков для ЭВМ язык описывался подробнее, чем его компилятор и когда возникли трудности, которые не были достаточно хорошо освещены в доступных руководствах, единственным способом их разрешения был не посредственный эксперимент на машине. Этот подход приводит к существенным трудностям, поскольку может случиться так, что программист хорошо знает только ту машину, на которой работает, оставаясь при этом в полном неведении относительно других моделей ЭВМ, использующих на первый взгляд тот же язык, но работающих совершенно по-другому. Кроме того, такой подход усложняет определение источника ошибки при несоответствии между компилятором й документацией на него: если возникает несоответствие, то вызвано ли это ошибкой в руководстве, неправильно описывающем правильно работающий компилятор, или ошибка содержится в компиляторе, неправильно реализующем язык, описанный в руководстве?
Выпуск в I960 г. сообщения об Алголе явился значительным шагом вперед в подробном описании языков, не ориентированном на какую-либо конкретную машину, в создании, документа, который мог бы служить справочником во всех спорных случаях. При интерпретации этого документа возникают некоторые сложности, но он выдержал проверку временем достаточно хорошо. Однако в нем не удалось стандартизовать две важные вещи:
1) техническое обеспечение, соответствующее этому языку;
2) команды, предназначенные для операций ввода и вывода. Расхождение по этим двум параметрам между различными компиляторами Алгола 60 довольно значительны, поэтому во избежание ошибок при переносе программы с одной машины на другую каждый, кто хочет это сделать, должен помнить об указанных препятствиях. Если это будет выполнено, то в остальном перенос производится просто, потому что версии языка на обеих машинах, как правило, соответствуют стандарту.
Совсем иначе обстоит дело в случае с Фортраном, для которого к моменту, когда начали производиться первые попытки стандартизации, уже существовало множество различных версий. При таком количестве разночтений можно было стандартизировать лишь некое общепринятой подмножество языка, если стандартизация производилась не для того, чтобы поддержать версию одного изготовителя в ущерб другим.
Из языков, разработанных в дальнейшем, Кобол, ПЛ/1, Алгол 68,Паскаль и APL следовали принципу Алгола 60 и были сначала описаны, а потом реализованы, в то время как Бейсик последовал по тяжкому пути Фортрана, когда попытки составить стандартное описание были сделаны лищь после долгих лет эксплуатации различных реализаций.

