Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Часть1_лексические основы языка.doc
Скачиваний:
5
Добавлен:
16.09.2019
Размер:
397.31 Кб
Скачать

Уровни языков программирования

Разделение на языки высокого и низкого уровня это разделение по степени их близости к конкретному машинному коду и по переносимости написанных на них программ. Это вполне актуальное сегодня разделение: ассемблеры и близкие к ним языки не перестают использоваться. Чаще всего они используются для написания фрагментов программ, которые должны быть эффективными, нетребовательными к ресурсам или работать в реальном времени. С другой стороны человек стремится к обобщению частностей, так что с неизбежностью для многих платформ возникли «мобильные операционные системы» и соответствующие компиляторы (тут, конечно, C/C++ нет равных). Можно еще добавить категорию языков сверхвысокого уровня (например, языки для Интернет — в теории нет никаких ограничений на платформы, и не требуется перекомпиляция).

Разные типы процессоров имеют разные наборы команд. Если язык программирования ориентирован на конкретный тип процессора и учитывает его особенности, то он называется языком программирования низкого уровня.

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

Языки высокого уровня понятнее человеку. В них не учитываются особенности компьютерных архитектур, они представляют мощный механизм описания алгоритмов в той форме, в которой их можно вводить непосредственно в ЭВМ. Один оператор языка высокого уровня порождает группу машинных команд.

Поколения языков программирования

Все многообразие современных языков программирования имеет общую эволюционную историю, поэтому существуют классификации по истории языков программирования («по поколениям»). В каждом новом поколении языки программирования становятся все более высокого уровня.

Рассмотрим одну из таких классификаций.

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

Второе поколение ознаменовалось появлением в начале 50х годов языка программирования Ассемблера (assembly language). Вместо одних только нулей и единиц, программисты теперь могли пользоваться операторами, которые были похожи на слова английского языка. Компилятор преобразовывал эти выражения в машинные коды.

Вместе с появлением компьютеров третьего поколения, развитие языков программирования также вступило в новую фазу. Период с середины 50-х до 70-х годов отмечен появлением первых языков программирования высокого уровня (high-level languages). Эти языки впервые позволили ученым (прежде всего, математикам) работать с компьютерами. Языки третьего поколения, такие как С, Pascal и Fortran, состоят из английских слов, например READ, WRITE, GOTO, и математических символов. В отличие от языков первого и второго поколений синтаксис в языках третьего поколения не зависит от компьютера, на котором исполняются написанные на них программы. Язык программирования FORTRAN позволял довольно легко определять переменные и использовать для вычислений математические выражения. Для языков высокого уровня, таких как FORTRAN и COBOL, понадобились более быстрые, высокоэффективные компиляторы, поскольку при преобразовании исходного кода, выходные программы получались большими.

Четвертое поколение языков программирования зародилось в конце 70-х, и можно сказать, что их развитие продолжается по сей день. В них достигнут еще больший уровень абстракции Это такие языки как SQL (структурированный язык запросов для работы с базами данных) или Mathematica и MathCad (языки для сложных математических вычислений и решения научных задач). Эти языки предоставляют программисту гораздо более естественную форму общения с компьютером, но применимы для решения очень ограниченного круга задач. Эти языки существенно уменьшили время разработки ПО и позволили выполнять эту работу даже людям без технического образования, и не прибегая к помощи профессиональных программистов. Сегодня для выполнения многих задач программирование как таковое вообще не требуется. Например, появление приложений электронных таблиц (spreadsheets), таких как Microsoft Excel, позволяет обычным пользователям обрабатывать финансовую информацию и управлять большими массивами данных. В 60-х и 70-х годах так просто, без применения языков программирования, использовать возможности компьютеров было невозможно.

Когда пришло пятое поколение языков программирования (это прежде всего сценарные языки), эволюционный путь развития оказался нарушен. Сценарные языки программирования гораздо проще языков четвертого поколения. По сути, все они - языки-интерпретаторы. Это делает сценарные языки идеальными для написания небольших программ, но не для использования в крупных проектах. Кроме того, сценарные языки допускают вольную трактовку правил написания кода, на компьютерном жаргоне они называются «нестрогими». Сценарные языки предназначены для быстрого написания программ - посредников между другими программами, а не самостоятельных приложений. Они подобны клею, что делает их удобными для использования в интернет-приложениях, суть которых как раз и состоит в обмене данными между программами. Изящество языков программирования, так ценимое прежними поколениями разработчиков, здесь принесено в жертву удобству использования. Эти языки получили широкое распространение из-за высокой гибкости и адаптации к нуждам Интернета. Яркие примеры - Perl, применяемый для обмена данными между интернет-сервером и компьютером пользователя, и Python, используемый, помимо прочего, для управления интернет-форумами, Tcl/Tk, awk, C Shell, JavaScript (название JavaScript - не более чем маркетинговый ход, поскольку этот язык никак не связан с Java).

Интересно, что если наложить эту классификацию на историю развития ЭВМ (как известно, там тоже принято выделять поколения), то совпадения этапов не будет! В общем-то, развитие языков программирования отстает от роста возможностей вычислительной техники, что имеет под собой, по-видимому, простую причину: известно, что в то время как мощность компьютеров растет экспоненциально, количество людей, занятых разработкой программного обеспечения, растет линейно.