1.3.5. О других критериях
Существует множество других критериев оценки языков программирования. Одним из них, например, является мобильность, определяющая легкость, с которой программу можно переносить из одной реализации в другую («переносимость)». На мобильность языка значительно влияет уровень его стандартизации. Некоторые языки, например BASIC, Pascal, не стандартизированы, что затрудняет перенос программ, написанных на этих языках. Стандартизация – долговременный и сложный процесс. Соответствующий комитет начал работу по выработке унифицированной версии языка C++ в 1989 году. К концу 1998 года этот процесс был завершен.
Еще два критерия оценки языка – универсальность (применимость к широкому кругу задач), четкость (полнота и точность официального описания языка).
Большинство критериев, в частности читабельность, легкость создания и надежность, не являются строго определенными или точно измеримыми. Тем не менее, эти концепции полезны и дают возможность оценки языков программирования.
Критерии оценки языка имеют разный вес при его рассмотрении с разных точек зрения. Разработчиков систем реализации языков в основном интересует сложность реализации конструкций и свойств языка. Пользователей языка в первую очередь волнует легкость создания программ, во вторую – читабельность. Разработчики языков программирования придают особое значение элегантности и возможности широкого использования языка. Кроме того, указанные характеристики иногда противоречат друг другу.
1.4. Факторы, влияющие на разработку языка
К таковым относятся архитектура компьютера и методологии программирования.
1.4.1. Архитектура компьютера
Базовая архитектура компьютера оказывает решающее влияние на разработку языков. Большинство популярных языков программирования разрабатывались на основе неймановской архитектуры, названной по имени одного из ее авторов – Дж. фон Неймана. Такие языки называются императивными. В компьютере Неймана данные и программы хранятся в общей памяти, выполняющий команды процессор отделен от этой памяти. Следовательно, команды и данные должны передаваться процессору, результаты выполненных процессором операций должны возвращаться в память. На неймановской архитектуре компьютера основаны практически все цифровые вычислительные машины, созданные после 1940-х годов.
Важными элементами императивных языков программирования являются
переменные, моделируемые ячейками памяти;
операторы присваивания, основанные на операции пересылки данных;
итеративная форма повторений, являющаяся наиболее эффективным методом в этой архитектуре.
Операнды выражений передаются из памяти в процессор, а результат вычисления выражения возвращается в ячейку памяти, представляемую левой частью оператора присваивания. Поскольку команды хранятся в соседних ячейках памяти, то итерации на компьютере Неймана выполняются быстро.
В функциональных языках программирования вычисления в основном производятся путем применения функций к заданным параметрам. Программирование на функциональном языке может осуществляться без тех переменных, которые используются в императивных языках программирования, а также без операторов присваивания и итераций. Многие ученые в области компьютерных наук приводят доводы в пользу таких языков программирования как LISP. Однако на практике эти языки не могут заменить императивные языки программирования, пока не будет разработан компьютер со специальной архитектурой, эффективно выполняющий функциональные программы.
Появившиеся в последние 20 лет машины с параллельными вычислениями дают надежду, что программы на функциональных языках будут выполняться быстрее. Все же этого пока недостаточно для конкурентоспособности. Несмотря на возможности использования параллельной архитектуры, большинство новых машин пока используется для выполнения программ, написанных на императивных языках, в частности, на диалектах языка FORTRAN.