
Лекция 11. Языки программирования. Системы программирования. Среды визуального проектирования
Обзор языков программирования
Управляющие команды и данные, поступающие в процессор по его шинам, представляются в виде машинного кода.
Машинный код - это двоичный код, т. е. совокупность нулей и единиц в виде электрических сигналов.
Управление компьютером производится по определенному алгоритму.
Алгоритм - это точно определенное описание способа решения задачи в виде конечной по времени последовательности действий (элементарных операций или операторов). Такое описание называется формальным.
Для представления алгоритма в виде, понятном PC, служат языки программирования. Сначала всегда разрабатывается алгоритм действий, который записывается на одном из таких языков.
Полученное с помощью языка программирования описание алгоритма переводится специальными служебными программами - трансляторами - в машинный код для исполнения.
Языки программирования используют для записи каждой команды (оператора) в программе свой синтаксис (совокупность требований к записи операторов) и семантику (отражение смысла команды). Нарушение формы записи команды в программе приводит к непониманию ее транслятором или к синтаксической ошибке.
Правильно записанная, но не отвечающая алгоритму программы команда, приводит к семантической (или логической) ошибке.
Процесс поиска ошибок в программе - это тестирование программы, а процесс их устранения - отладка программы.
Различают два вида программ-трансляторов:
интерпретатор, который одновременно и транслирует и выполняет заданную команду, делая это покомандно или пооператорно;
компилятор, который преобразует программу, составленную на языке высокого уровня, в программу на машинном языке или на языке, близком к машинному, не участвуя в её выполнении.
Для непосредственного выполнения процессором команд, записанных в языке программирования, используется программа-интерпретатор. Ее можно представить в виде виртуальной вычислительной машины, для которой базовыми инструкциями служат не элементарные команды процессора (т. е. команды в машинном коде), а операторы языка программирования. Каждый оператор программы-интерпретатора последовательно анализирует так, как если бы встретил его впервые, что сильно замедляет работу PC при выполнении большого объема повторяющихся команд.
Программа-компилятор полностью обрабатывает весь текст программы высокого уровня. При этом выполняется оптимизация, позволяющая повысить быстродействие программы. В результате программа получается компактной, эффективной и работает в сотни раз быстрее программы выполняемой с помощью интерпретатора.
Недостаток компиляторов – трудность трансляции языков, ориентированных на обработку данных сложной структуры, т. е. программы, часто заранее неизвестной или динамически меняющейся во время работы.
На практике применяется как тот, так и другой вид программ-трансляторов, т. е. и программы-интерпретаторы, и программы-компиляторы.
Уровни языков программирования
Язык программирования, ориентированный на определенный тип процессора - это язык низкого уровня. Это не значит - "плохой", а только то, что язык конкретен и близок к машинному языку PC (например, язык "Ассемблер").
С помощью языков низкого уровня создаются очень эффективные и компактные программы, т. к. разработчик получает доступ ко всем возможностям PC. Но они специализированы и не могут быть перенесены на PC с другим типом процессора.
Языки программирования высокого уровня понятней человеку, чем PC, они легко переносимы на другие платформы, для которых создан транслятор этого языка. В них легче избежать ошибок программирования.
Рождение языков высокого уровня 5-го поколения произошло в середине 90-х годов.
Fortran - первый компилируемый язык, созданный в 50-е годы, но модификации 2000 года (HPF — High Perfomance Fortran) используются и сейчас в статистических комплексах и даже в системах управления спутниками.
Cobol — это компилируемый язык для применения в экономике и решения бизнес-задач, разработанный в начале 60-х годов. Имеет много приложений, используется и сейчас (в США наибольшую зарплату получают программисты, работающие на Cobol).
Algol - компилируемый язык, созданный в 1960 году. Предполагалось, что он заменит Fortran, но из-за более сложной структуры не получил широкого распространения.
Pascal - создан в конце 70-х годов, во многом напоминает Algol, но в нем ужесточен ряд требований к структуре программ, что позволяет успешно применять его при создании крупных проектов.
Basic - язык, имеющий и компиляторы, и интерпретаторы, по популярности он занимает первое место в мире. Он был создан в 60-х годах в качестве учебного языка и очень прост в изучении.
С (Си) - планировался для замены ассемблера, чтобы иметь возможность создавать эффективные и компактные программы, и в то же время не зависеть от конкретного типа процессора. На этом языке написано в 70‑е годы множество системных и прикладных программ и ряд операционных систем (в частности, ОС Unix).
C++ (Си++) - это объектно-ориентированное расширение языка Си, разработанное в 1980 году. Обеспечивает высокую производительность, но требует от разработчиков высокого уровня профессионализма.
Java - этот язык создан в начале 90-х годов на основе Си++. Он призван упростить разработку приложений на основе Си++ путем исключения из него низкоуровневых возможностей. Обеспечивает компиляцию не в машинный код, а в платформенно-независимый объектный код, который может выполняться с помощью интерпретатора - виртуальной Java-машины (Virtual Machine), версии которой созданы сегодня для любых платформ.
Этот язык занимает по популярности второе место после Basic. Основной его недостаток - невысокое быстродействие, т. к. он интерпретируемый.