Независимость от машины

С разработкой языков программирования третьего поколения независимость от машины была почти достигнута. Поскольку выражения в языках третьего поколения не опирались на характеристики отдельной машины, то их можно было компилировать на разных машинах. Программу, написанную на языке третьего поколения, теоретически можно использовать на любой машине, для этого нужно просто применить соответствующий компилятор.

Однако на практике все оказалось не так просто. При создании компилятора некоторые характеристики машины иногда отражались на транслируемом языке. Например, различия в обработке машинами операций ввода-вывода привели к тому, что исторически один и тот же язык программирования имеет разные характеристики, или диалекты, на разных машинах. Таким образом, для того чтобы перенести программу с одной машины на другую, нужно изменить ее, хоть и незначительно.

Еще больше усложняет проблему переносимости (portability) отсутствие единого мнения о том, какие структуры должны входить в конкретный язык. Чтобы преодолеть эту трудность, Национальный институт стандартизации США (ANSI — American National Standards Institute) и Международная организация по стандартизации (ISO — International Organization for Standardization) приняли и опубликовали стандарты для многих распространенных языков программирования. В других случаях неофициальные стандарты языков возникли из-за популярности того или иного диалекта и желания создателей компиляторов производить продукты, совместимые со многими машинами. Однако даже в случае строгой стандартизации языков разработчики компиляторов часто снабжают их свойствами (они часто называются расширением языка), которые не входят в стандартную версию. Если программист будет использовать эти свойства, то получившаяся программа может быть несовместима со средой, использующей компилятор другого производителя.

Тот факт, что языки третьего поколения не были полностью машинно-независимыми, не имеет большого значения в общей истории языков программирования по двум причинам. Во-первых, они были очень близки к этому, и программное обеспечение можно было переносить с одной машины на другую с относительной легкостью. Во-вторых, независимость от машины оказалась только одним из многочисленных требований. К тому времени, когда независимость была достигнута, она не казалась очень значимой, поскольку возникли более трудные задачи. Осознав, что машина может отвечать на такие выражения высокого уровня, как присвоить переменной Total Cost значение (Price + ShippingCharge) ученые стали мечтать о создании среды программирования, которая позволит человеку общаться с машиной на языке абстрактных понятий, не требуя преобразовывать эти понятия в форму, совместимую с машиной. Кроме того, ученые занимались созданием машин, которые могли бы сами строить алгоритмы, а не просто выполнять уже созданные. В результате возникло огромное количество языков программирования, разрушивших понятную классификацию, которая основывалась на поколениях.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: