- Тема 8. Языки программирования высокого уровня Лекция 15. Эволюция и классификация языков программирования
- Языки программирования низкого уровня
- Машинный язык
- Assembler (Ассемблер)
- Языки программирования высокого уровня
- Basic (Бейсик)
- Языки программирования высокого уровня
- Традиционные языки программирования
- Новые языки программирования
Тема 8. Языки программирования высокого уровня Лекция 15. Эволюция и классификация языков программирования
Эволюция и классификация языков программирования. Языки программирования высокого и низкого уровня. Компилируемые языки. Интерпретируемые языки. Объектно-ориентированные языки.
Языки программирования по стилю написания исходного кода классифицируются на процедурные (составляются процедуры, содержащие набор команд) и декларативные (определяется совокупность фактов и взаимосвязей, позволяющих запрашивать результаты).
Языки программирования по уровню исходного кода классифицируются на языки высокого и языки низкого уровня.
Языки программирования низкого уровня
Языки программирования низкого уровня представляют специальный набор инструкций, набранных с использованием команд управления регистрами микропроцессора. Языки программирования низкого уровня позволяют программисту кодировать команды с максимально возможной эффективностью. Но использование языков низкого уровня требует досконального знания возможностей конкретной компьютерной системы и команд микропроцессора. Кроме того, программирование на языке низкого уровня занимает существенно больше времени, чем программирование на языке высокого уровня.
Машинный язык
Машинный язык содержит набор команд управления регистрами микропроцессора. Оперирует двоичными, восьмеричными или шестнадцатеричными числами. Зависит от типа микросхемы процессора компьютера. Коды команд и адреса данных задаются во внутреннем представлении. Например, для пересылки данных из регистра СХ в ВХ используется машинная команда 8В D9, в которой старший байт (8В) определяет код операции, а младший байт (D9=110011001) – способ адресации (регистровый – 11) и номера используемых регистров(001 — СХ , 011 — ВХ). На ассемблере эта команда имеет вид: MOV BX,CX.
Assembler (Ассемблер)
Язык ассемблера оперирует инструкциями и командами, которые может выполнить микропроцессор. Программирование в машинных кодах очень сложно и обычно это делается сериями мнемоник. Мнемоники — это коды операций, которые читабельны и понятны людям и могут быть легко преобразованы в машинный код, используя ассемблер. Например, вычисление суммы z=x+y (для целых чисел) пишется в виде (через регистр АХ):
Языки программирования высокого уровня
Языки программирования высокого уровня представляют специальный набор инструкций, использующих ключевые слова и синтаксис, похожий на английский. Эти языки освобождают программиста от необходимости знать, как именно компьютер выполняет команды. Каждый оператор языка высокого уровня соответствует нескольким командам машинного языка, что позволяет писать программы быстрее, чем на языках низкого уровня. Однако трансляция выполняется не самым эффективным образом, поэтому программы, написанные на языках высокого уровня, выполняются медленнее, чем написанные на языках низкого уровня.
Basic (Бейсик)
Разработан сотрудниками Дартмутского колледжа (США) в 1964 году. Первый персональный компьютер IBM PC имел 16-разрядный BASIC, разработанный корпорацией IBM. Позже его сменил GW-BASIC и QUICK-BASIC, разработанный корпорацией Microsoft. BASIC (Beginner’s All-Purpose Symbolic Instruction Code) — универсальный код символьных команд для начинающих, является интерпретируемым процедурным языком, операторы которого выполняется компьютером шаг за шагом. BASIC легко изучить, но программы, написанные на нем, выполняются медленно, поэтому он плохо подходит для профессионального программирования. Разработаны компиляторы Бейсика, например, Turbo Basic (фирма Borland) и Visual Basic (фирма MicroSoft). Для программирования в приложениях Microsoft Office корпорацией Microsoft был разработан язык VBA (Visual Basic for Application).
Языки программирования высокого уровня
Высокоуровневые языки появились сравнительно поздно, в 1970-х гг., т.е. примерно через 20 лет после появления компьютеров с современной архитектурой. Создание таких языков было обусловлено стремлением избавить программистов от трат времени и умственных усилий на рутинные операции, связанные с учетом особенностей тех или иных компьютерных архитектур.
Язык программирования (ЯП) высокого уровня — формализованная семантическая система, максимально приближенная к обычному человеческому языку или иным привычным знаковым системам (например, математическим формулам). Язык высокого уровня в минимальной степени привязан к процессору или операционной системе и направлен на то, чтобы программист сосредоточился на решении поставленной задачи, не отвлекаясь на особенности устройства компьютера.
Рассмотрим наиболее популярные на сегодняшний день языки программирования, а также наиболее перспективные новинки.
Традиционные языки программирования
За последние десятилетия сложился устойчивый круг эффективных ЯП, удерживающих лидирующие позиции в рейтингах популярности.
Языки с Си-подобным синтаксисом
Рисунок 1. Деннис Ритчи и фрагмент кода на языке Си. Автор24 — интернет-биржа студенческих работ
Язык Си, появившийся на рубеже 1960-1970-х гг. и ставший одним из наиболее востребованных за всю историю развития компьютерных технологий, дал толчок формированию большого количества языков, развивающих заложенные в нем идеи:
- C++ — универсальный объектно-ориентированный язык, реализации которого существуют практически для всех популярных операционных систем (Unix, Windows, MacOS); программы, написанные на C++ отличаются высокой производительностью, надежностью и масштабируемостью; язык обладает развитой системой библиотек для решения практически любых задач;
- Objective C — версия Си для разработки программ, запускаемых на платформах Apple (MacOS, iOS);
- C# — язык, применяемый преимущественно для разработки программ для работы в операционной системе Windows;
- Java — универсальный язык, заявленный с самого момента своего появления на рынке как кроссплатформенный, т.е. написанный на Java код можно без внесения изменений использовать на любой операционной системе, в том числе на мобильных устройствах (хотя, все-таки, с некоторыми оговорками);
- JavaScript — интерпретируемый язык для написания веб-приложений; пригоден для решения широкого круга задач благодаря активно развивающемуся в последние годы фреймворку Node.js.
К семейству Си-подобных языков относятся и другие средства разработки: PHP, Perl, Bash и др.
Одним из самых популярных и востребованных ЯП в последние годы является интерпретируемый язык Python. Круг его возможностей чрезвычайно широк: от написания прошивок для встраиваемой техники до систем искусственного интеллекта. При этом Python обладает простым синтаксисом, низким порогом вхождения, широким коммьюнити, обширной коллекцией библиотек и модулей. Он хорошо документирован и обладает широкой образовательной базой для обучения новичков.
Рисунок 2. Логотип Python-foundation. Автор24 — интернет-биржа студенческих работ
Haskell — популярный универсальный язык, ориентированный на функциональное программирование. Его сильной стороной является полноценная поддержка т.н. отложенных вычислений.
Erlang — язык программирования функционального типа, направленный на создание распределённых вычислительных систем. Развивается усилиями корпорации Ericsson.
Новые языки программирования
Развитие языков программирования активно продолжается в связи с бурным ростом вычислительных возможностей современной техники. В последние годы появилось несколько языков, уверенно отвоевывающих популярность у традиционных средств разработки. Перечислим некоторые из них.
Рисунок 3. Популярность новых языков программирования. Автор24 — интернет-биржа студенческих работ
Язык Go, разрабатываемый и поддерживаемый компанией Google, стал одним из первых, учитывающих преимущества многоядерных процессоров: он отлично поддерживает многозадачность, что обеспечивает высокую производительность написанных на нем приложений.
Развиваемый организацией Mozilla Foundation язык Rust позиционируется как низкоуровневый, однако код, написанный на нем считается безопасным, т.е. можно сказать, что Rust преодолевает один из главных недостатков низкоуровневых языков. Приоритетными в развитии Rust считаются эргономика, скорость и безопасность.
Swift — новый язык от компании Apple, призванный заменить устаревший Objective-C. Этот ЯП предназначен для разработки нативных приложений как для iOS (мобильные устройства), так и для MacOS (десктопные системы). Приложения, написанные на Swift, демонстрируют высокую производительность. Кроме того, он хорошо подходит для создания 2D-игр. На развитие Swift большое влияние оказали ЯП Ruby и Python.
Kotlin – язык, созданный на платформе Java. Он всё чаще используется для написания мобильных приложений, работающих в среде ОС Android. Kotlin обладает более низким порогом вхождения по сравнению с Java, при этом он полностью поддерживается в привычной для разработчиков мобильных программ IDE Android Studio. Вполне вероятно, что Kotlin может со временем стать основным языком разработки для этого класса мобильных устройств.
Приятно отметить, что язык Kotlin создан российскими разработчиками и назван в честь острова, расположенного близ Санкт-Петербурга.