Файл: Современные языки программирования (Теоретические основы языков программированияя).pdf
Добавлен: 25.05.2023
Просмотров: 227
Скачиваний: 3
СОДЕРЖАНИЕ
Глава 1. Теоретические основы языков программирования
1.1. Содержание понятия и классификация языков программирования
1.2. История создания языков программирования
Глава 2. Современные языки программирования
2.1. Анализ современных языков программирования
2.1. Анализ современных языков программирования
Технология программирования не стоит на месте и постоянно развивается с учетом новых потребностей в сфере IT-технологий. Существуют два главных требования для языков программирования: их близость к обычному профессиональному языку определенной сферы деятельности и простота реализации. Противоречивость требований стимулирует непрерывный процесс создания новых языков и доработки существующих.
Язык программирования – система обозначений для описания алгоритмов и структур данных, определенная искусственная формальная система, средствами которой можно выражать алгоритмы[7].
В настоящее время ежегодно число языков программирования пополняется новыми. На сегодняшний день известно более двух с половиной тысяч языков программирования. Ниже рассматриваются несколько самых передовых языков программирования, каждый из которых решает свою определенную работу. Язык Dart, разработанный компанией Google, как один из языков веб-программирования. Как и в JavaScript, в Dart используются синтаксисы и ключевые слова, похожие на те, которые используются в языке C. Однако одним существенным различием является то, что в то время как JavaScript основывается на прототипах, объекты в Dart определяются с помощью классов и интерфейсов, как в C++ или Java[8].
Идея его создания основана на том, чтобы сделать язык таким же привычным, гибким и динамичным как JavaScript. Но пока, что этот язык мало где возможно использовать потому, что разработан для запуска на клиенте, либо на сервере. Следующим новым языком программирования, разработанный компанией Google является Go. Этот язык общего назначения, создан для легкого программирования, подходящий для всего – от разработки приложений до программирования систем. Язык больше похож на C или C++, чем на Java или C#. Однако, как и последние языки, Go включает в себя такие современные функции, как очистка памяти от ненужных данных, отражение текущих процессов выполнения и поддержку параллельности[9].
В языке Go понятия классов, конструкторов и деструкторов совершенно отсутствуют. Однако в нем присутствуют структуры, заимствованные из языка C, к которым возможна привязка функций, в связи с этим на языке Go можно создавать программы базирующихся на объектно-ориентированном программировании. Наличие функции очищение памяти от ненужных данных упрощает работу, по сравнению с C и C++. Язык Go еще в разработке, но тем не менее с ним можно уже работать. Веб-программирование сложно тем, что для клиента, сервера, баз данных и т. д. свои отдельные языки программирования. Инженеры разработали новый язык Opa. Этот язык созданный с идеей того, чтобы связать в себя интерфейс пользователя, логику сервера и базу данных ввода-вывода.
Компилятор самостоятельно решает, где запушена программа и выполняет написанный код. Среда выполнения Opa объединяет собственный веб-сервер и систему управления базой данных, которые не могут быть заменены самостоятельными альтернативами. Opa поставляется бесплатно и на данный момент доступен для 64-х битных Linux и Mac OS X платформ, другие же порты пока разрабатываются. С другой стороны в каждом языке существуют свои недостатки, которые ставят созданную на этом языке систему менее безопасной.
Для решения этой проблемы ученые нашли способ защиты такой, что позволяет защитить и веб-сайты, и компьютеры пользователей, разработав систему позволяющую использовать несколько языков программирования при создании одой программы. Система Wyvern является чем-то вроде компилятора одного мета-языка, в состав которого входят все известные и популярные языки программирования. Эта система позволяет программистам разрабатывать веб-страницы и приложения, используя напрямую все возможности С, PHP, HTML, CSS, JavaScript и других языков, и избегая необходимости использования некоторых искусственных приемов, которые являются источниками потенциальной опасности[10].
Данная система не единственная, примерами подобных программ являются – Scheme, ProteaJ, Spoofax и OJ. Они также решают вышеперечисленные задачи. В продолжение темы, был разработан новый язык программирования под названием Sketch. Особенность языка в том, что он позволяет при написании программ опускать некоторые участки кода, заполняя эти промежутки самостоятельно при этом оптимизируя получившиеся конструкции. Основной идеей, реализованной в виде компилятора языка Sketch, является метод поиска оптимального решения определенной задачи. Известно, что любая логическая и математическая задача может быть решена несколькими путями, количество которых, в некоторых случаях, может стремиться к бесконечности[11].
Еще одним новым языком программирования стал – язык Wolfram Alpha. Wolfram Language является языком, основанным на обширной базе знаний при помощи которой можно создавать достаточно сложные приложения, не прибегая к процессу традиционного программирования. Wolfram Language является языком, опирающимся на огромную базу знаний, в которой заключены все типовые вычислительные операции[12].
Рассмотрев современные языки программирования, некоторые из которых внедряются в программирования, некоторые еще дорабатываются можно сделать выводы о том, что в настоящее время, имея базу из двух с половиной тысяч языков программирования нет ни одного универсального. Пока такая задача не стоит, поэтому на этом этапе можно выделить систему Wyvern, система, позволяющую использовать несколько разных языков программирования при создании одной программы. Можно предположить, что хотя бы один из рассмотренных языков заменит в будущем популярных в настоящее время языков программирования.
Теперь, имея конкретное представление о понятии языка программирования, рассмотрим популярность использования языков программирования в мире. Выделяют два основных подхода к составлению данного рейтинга. Первый способ основывается на подсчете количества веб-страниц на которых фигурирует тот или иной язык (индекс TIOBE).
Индекс TIOBE — известный показатель популярности языков программирования. Рейтинги рассчитываются на основе данных о количестве запросов, содержащих название языка, ведущих поисковых систем. Индекс TIOBE может быть использован при принятии важных стратегических решений, например, в случае, когда стоит вопрос: какие языки программирования стоит рассматривать в первую очередь, строя новую систему программного обеспечения.
Заметим, что по рейтингу TIOBE вовсе нельзя судить о качестве или универсальности для изучения языка программирования, главный критерий отбора индекса заключается в количестве поисковых запросов по каждому конкретному языку. То есть, чем больше через самые популярные в мире поисковые системы (Google, Yahoo!, Baidu, Wikipedia, YouTube) ищется тот или иной язык программирования, тем выше он будет находиться в рейтинге.
TIOBE ориентируется на полные по Тьюрингу языки, поэтому популярность, к примеру, XML, HTML или базовый SQL не исследуется. Кроме Тьюринг-полноты, авторы индекса требуют от исследуемого языка наличие статьи в Википедии, в которой было бы чётко указано, что язык является языком программирования. По этому критерию в индекс не были включены Ruby on Rails, Excel, Android, Boost, Cocoa, ASP, AJAX[13]. Рассмотри таблицу рейтингов от ресурса TIOBE[14].
Таблица 1
Рейтинг языков программирования за 2017 гг. по данным ресурса TIOBE
|
Язык программирования |
Рейтинг |
|
Java |
16,384% |
|
С |
7,742% |
|
С++ |
5,184% |
|
C# |
4,409% |
|
Python |
3,919% |
|
Visual Basic.NET |
3,174% |
|
PHP |
3,009% |
|
JavaScript |
2,667% |
|
Delphi/Object Pascal |
2,544% |
|
Swift |
2,268% |
Второй способ составления рейтинга языков программирования основан на подсчете количества поисковых запросов по конкретному языку – чем чаще пользователи ищут руководство по тому или иному языку, тем выше его рейтинг (ресурс PopularitY of Programming Languages (PYPL) от команды разработчиков GitHub). А теперь рассмотрим рейтинг языков программирования от ресурса PYPL[15].
Таблица 2
Рейтинг языков программирования за 2017 гг. по данным ресурса PYPL
|
Язык программирования |
Рейтинг |
|
Java |
22,7% |
|
Python |
15,0% |
|
PHP |
9,3% |
|
C# |
8,3% |
|
JavaScript |
7,7% |
|
С++ |
6,9% |
|
С |
6,9% |
|
Objective-C |
4,1% |
|
R |
3,5% |
|
Swift |
2,9% |
Как мы видим, лидером по данным ресурса TIOBE и PYPL является язык программирования Java (см. табл. 1 и табл. 2).
Рассмотрим особенности этого языка. Java-высокоуровневый объектноориентированный язык программирования разработанный в 1995 г. За более чем 20 летнюю историю данный язык выбился в лидеры и активно держит свои позиции за счет таких качеств как кроссплатформенность и универсальность. Да, в современных реалиях, программы, написанные по средствам данного языка, уступают в быстродействии и оптимизации некоторым другим популярным языкам, но за счет своей универсальности и надежности он крепко держится в лидерах. Примером продуктов написанных на данном языке можно назвать любые Android-приложения, программные средства Eclipse, IntelliJ Idea и Netbeans IDE, серверные приложения в сфере финансовых услуг.
Так же трудно не сказать о еще одном универсальном языке – Си. Разработанный в 70-е годы XX века Деннисом Ритчи, как средство реализации операционной системы UNIX, этот язык впоследствии был перенесен почти на все доступные платформы. Основной особенностью это языка была близкая сопоставимость машинным инструкциям, благодаря чему он нашел применение во многих проектах, для которых был свойственен язык ассемблер, то есть в разработке операционных систем и большей части прикладного программного обеспечения.
Но главным фактором является то, что язык Си своим появлением оказал существенное влияние на развитие индустрии программного обеспечения. Он упростил создание любого ПО и зарекомендовал себя одним из лучших языков программирования. Сейчас он уже не так популярен, но его синтаксис и структура положили основу почти всем популярным на данный момент языкам, таким как: C++, C#, Java, Objective-C, Python и другие. В современном мире на чистом языке Си не пишется полностью готовых приложений, но примерами продуктов написанных с использованием данного языка являются любые операционные системы, браузеры, месенджеры, средства работы с документами и многое другое[16].
Таким образом, на современном рынке информационных технологий совместно уживаются как базовые, так и современные языки программирования. Мы не можем составить абсолютно точного рейтинга, поскольку существуют десятки методов их оценки и сравнения. Нельзя определенно назвать лучший язык программирования, каждый специалист отдает приоритет тому языку, который зарекомендовал себя в его работе как надежный и эффективный.
2.2.Сопоставление современных языков программирования
Сравнить исходные коды эквивалентных, в меру возможностей, приложений, реализованных на различающихся языках программирования — занятие познавательное и поучительное:
- Начинающие программисты могут бегло взглянуть на имеющийся в их распоряжении арсенал средств и, в какой-то мере, утвердиться в том, в каком направлении им желательно развиваться.
- Имея в руках работающие приложения выполненные в разных технологиях, можно, экспериментируя, рассмотреть принятые техники доведения программного кода до работающего приложения, которые в разных языках существенно различаются.
- Практик-профессионал, рассматривая код на языке, далёком от сферы его интересов, сможет выделить там отдельные специфические приёмы, а затем и смоделировать их в своей привычной инструментальной среде (подобным образом в обиход программирования много привнесли LISP, APL или FORTH).
- Специалист по обработке данных может позаимствовать отдельные идеи и структуры данных даже из совершенно экзотического для его целей языка.
- Студенты смогут оценить цельность базовых концепций программирования, только оттеняемую контрастом разнообразия реализаций.
- Соискатель работы перестанет теряться во множестве загадочных наименований, фигурирующих в требованиях к вакансиям, когда работодатель сам достаточно часто плохо понимает что ему нужно.
Мы пройдём по реализациям однотипного приложения на разных языках программирования, и будем фиксировать примечательные особенности каждого из них. Целью этого сопоставления есть не сравнение по принципу «лучше-хуже», а просто показать как подобные вещи могут выглядеть в разных языках.
Для сравнительной реализации была выбрана задача расчёта параметров 2D (на плоскости) треугольника, заданного координатами своих вершин, а именно: расчёт периметра и площади. По ходу изложения эта первичная формулировка будет несколько расширена.