Добавлен: 14.06.2023
Просмотров: 223
Скачиваний: 2
Введение
Работа персонального компьютера в основном заключается в выполнении программы, то есть набора заранее определенных программистом команд в определенном порядке. Машинный код, который состоит из нулей и единиц, указывает, какое именно действие должен выполнить процессор. Программное обеспечение в машинных кодах состоят из нескольких тысяч таких команд. Программист просто должен знать комбинацию единиц и нулей двоичного кода для каждой команды, а также коды адресов данных, при её выполнении. Куда легче было бы написать программу на каком-нибудь языке, который более близкий к человеческому языку, а перевод этой программы в машинные коды поручить компьютеру. Вот так вот и появились языки, предназначенные для написания программного обеспечения.
Язык программирования – это формальная знаковая система, которая предназначена для записи компьютерных программ. Язык программирования определяет набор лексических, синтаксических и семантических правил, которые в свою очередь определяют внешний вид программы и действия, которые выполнит персональный компьютер под её управлением.
Синтаксис и семантика представляется в виде набора спецификаций языка программирования. Также для многих языков программирования созданы и по сей день создают международные стандарты. Специализированные организации проводят регулярное обновление спецификаций, формальных определений языка, а также модернизируют уже созданные языки программирования и продолжают разрабатывать новые языки программирования.
Со времен создания первых персональных компьютеров, программисты придумали уже более тысячи языков программирования и почти каждый год их число пополняется новыми языками. Некоторыми языками умеет пользоваться только небольшое число, в частности только их разработчики, и лишь только другие становятся известны миллионам программистам. Профессиональные программисты почти всегда применяют в своей работе десятки разнообразных современных языков программирования.
Глава 1. Современные языки программирования
Наверное, каждый бы программист хотел бы создать свой язык программирования, который был бы самый быстрый, надежный, удобный и простой. И вот именно поэтому за всю свою «компьютерную» историю программисты придумали так много самых разнообразных языков программирования. Многие из них только служили своим создателям, а другие, которые получили признание программистов мира, существуют до сих пор.
Но не только тщеславие программистов послужило возникновению новых языков программирования. Ведь время не стоит на месте, развивается и наука и технологии, то, что еще вчера было пределом научно-технического прогресса, то сегодня это уже не предел.
На сегодняшний день перед программистами ставятся задачи по созданию систем автоматизированной обработки и хранению информации, которые двадцать лет назад казались невозможными. Появляются все новые и новые устройства и технологии, требующие новых подходов к программированию. Развитие Интернета предоставляет новые, еще не до конца освоенные возможности по созданию распределенных сетевых технологий.
Все это необходимо для создания новых, современных языков программирования, которые отвечали бы всем современным задачам, использующие новые принципы программирования и позволяющие решать актуальные проблемы.
Из всего множества языков программирования, лишь немногие из них получили признание программистов всего мира. Чтобы определить самые популярные языки программирования воспользуемся данными голландской компании «TIOBE Software BV», которая известна, как компания с регулярно рассчитываемым рейтингом популярности языков программирования.
Согласно, полученным данным компании «TIOBE Software BV» возьмем десять самых популярных языков программирования на декабрь 2016 года, которые представлены в таблице 1.
Таблица 1. Десять популярных языков программирования [1]
|
№ |
Язык программирования |
Рейтинг |
|
1 |
Java |
17,856 % |
|
2 |
С |
8,726 % |
|
3 |
С++ |
5,335 % |
|
4 |
Python |
4,239 % |
|
5 |
Visual Basic .Net |
3,302 % |
|
6 |
C# |
3,171 % |
|
7 |
PHP |
2,919 % |
|
8 |
JavaScript |
2,862 % |
|
9 |
Assembly language |
2,539 % |
|
10 |
Perl |
2,338 % |
Языки программирования указанные выше в таблице очень разные. Каждый из них в свою очередь имеет собственное назначение, уникальную среду, а также свой синтаксис и семантику.
Очень сложная задача – это сравнение языков программирования между собой, по их возможности, по способам реализации и даже сложности освоения. Оценить удобство семантических конструкций языков программирования возможно только на реальных примерах и для каждого языка можно найти такую задачу, для которой он подходит куда лучше, чем все остальные. Правда, иногда такие сравнения выливаются в настоящие «войны» между программистами, так как каждый программист защищает «свой» язык программирования.
О развитии программирования в целом позволяет судить рассмотрение языков программирования по общим для них всех концепциям, о том: какие задачи наиболее актуальны, какими методами они решаются, и какие подходы для этого используются.
Исследуем эти языки программирования с основных позиций:
- Парадигмы программирования;
- Применяемые виды трансляторов;
- Используемые виды типизации;
Глава 2. Парадигмы программирования
Парадигма (от греч. παράδειγμα, «пример, модель, образец) – совокупность фундаментальных научных установок, представлений и терминов, принимаемая и разделяемая научным сообществом и объединяющая большинство его членов. Обеспечивает преемственность развития науки и научного творчества.
Парадигма программирования – совокупность идей и понятий, определяющая стиль написания программ.
Парадигма определяется программной единицей и самим принципом достижения модульности программы. В качестве этой единицы выступают следующие определения:
- действие;
- правило;
- диаграмма переходов;
- другие сущности;
Парадигма программирования определяет то, в каких терминах программист описывает логику программы.
Отметим то, что парадигма программирования не определяется однозначно языком программирования, так как многие современные языки являются мультипарадигменными – допускают использование различных парадигм.
Самые известные парадигмы программирования:
- Императивная – это процедурное программирование;
- Декларативная – это функциональное и логическое программирование;
- Структурная – это модульное и объектно-ориентированное программирование;
- Метапрограммирование – это генерация кода и самомодифицирующийся код;
2.1. Императивное программирование
Императивное программирование – характеризуется принципом последовательного изменения состояния вычислителя пошаговым образом. Управление изменениями полностью контролируемо и полностью определено.
Основные черты императивных языков программирования:
- использование именованных переменных;
- использование оператора присваивания;
- использование составных выражений;
- использование подпрограмм;
- и др.
Императивное программирование больше подходит для решения небольших задач, в которых очень важна скорость исполнения на современных персональных компьютерах.
2.2. Декларативное программирование
Декларативное программирование – это парадигма программирования, в которой задается спецификация решения задачи.
Подходы, реализующие декларативное программирование:
-
- Функциональное программирование – предполагает обходиться вычислением результатов функции от исходных данных и результатов других функций, и не предполагает явного хранения состояния программы.
Как показывает практика, что отличие математической функции от понятия «функции» в императивном программировании заключается в том, что императивные функции могут опираться не только на аргументы, но и на состояние внешних по отношению к функции переменных, а также и менять состояние внешних переменных.[2]
-
- Логическое программирование – основанное на автоматическом доказательстве теорем, с использованием механизмов логического вывода информации с использованием заданных фактов и правил вывода, основанных на формальных исчислениях. Данный метод программирования основан на теории и аппарате математической логики с использованием математических принципов резолюций.[3]
2.3. Структурное программирование
Структурное программирование – в основе этого метода программирования лежит представление программы в виде иерархической структуры блоков.
В соответствии с данной парадигмой:
- Любая программа представлена как структура, построенная из базовых конструкций;
- В программе некоторые конструкции могут быть вложены друг в друга произвольным образом;
- Повторяющие фрагменты программы могут быть представлены в виде так называемых подпрограмм, процедур или функций;
Подходы структурного программирования:
- Модульное программирование – основанное на разбиение программы на независимые модули, каждый из которых компилируется отдельно. Данный способ программирования позволяет значительно уменьшить время перекомпиляции при изменениях, вносимых лишь в небольшое количество исходных файлов, а также упрощает групповую разработку программ;
- Объектно-ориентированное программирование – содержится в описании структуры и поведения проектируемой системы, то есть определяет:
- из каких частей состоит система;
- в чем состоит ответственность каждой из этих частей,
при этом основными концепциями являются понятия объектов и классов.
- Класс – это тип, описывающий устройство объектов. Это абстрактный тип данных, который создает программист;
- Объект – сущность в адресном пространстве вычислительной системы, которая появляется при создании экземпляра класса.
Понятие «класс» - некоторое поведение и способ представления.[4]
Понятие «объект» - это нечто, что обладает определенным поведением и способом представления.[4]
2.4. Метапрограммирование
Метапрограммирование – этот метод программирования, основанный на создание программ, которые порождают программы как результат своей работы или программ, которые меняют себя во время выполнения.
Подходы метапрограммирования:
- Генерация кода – код программы не пишется вручную, а создается автоматически программой-генератором на основе другой, более простой программы и это реализуется двумя основными методами:
- Шаблоны – если соблюдение «правил» сводится к вставке в программу повторяющихся кусков кода, то решают поставленную задачу;
- Внешне-языковые средства – применяются в случаях, если простых средств, таких как шаблонов, недостаточно. Язык генератора составляется так, чтобы автоматически или с помощью программиста реализовывать правила парадигмы. Практически, это более высокоуровневый язык программирования, а генератор – как транслятор.
Генераторы пишутся для создания специализированных программ для реализации сложных парадигм.[5]
Парадигмы и подходы к решению задач в современных языках программирования представлены в таблице 2.
Таблица 2. Парадигмы и подходы языков программирования
|
Язык программирования |
Парадигма |
Подход |
|
Java |
императивная структурная |
объектно-ориентированный |
|
С |
императивная |
процедурный |
|
С++ |
мультипарадигмальный метапрограммирование |
процедурный метапрограммирование |
|
Python |
императивная декларативная структурная |
процедурный функциональный объектно-ориентированный |
|
Visual Basic .Net |
императивная структурная |
процедурный объектно-ориентированный |
|
C# |
мультипарадигмальный императивная |
процедурный объектно-ориентированный |
|
PHP |
мультипарадигмальный |
процедурный объектно-ориентированный |
|
JavaScript |
императивная структурная |
функциональный процедурный объектно-ориентированный |
|
Assembly language |
всевозможные |
структурный функциональный процедурный |
|
Perl |
мультипарадигмальный декларативная |
функциональный объектно-ориентированный |