Файл: Классификация языков программирования высокого уровня ( Понятие и виды языков программирования ).pdf
Добавлен: 16.06.2023
Просмотров: 192
Скачиваний: 2
СОДЕРЖАНИЕ
Глава 1 Теоретические аспекты исследования языков программирования
1.1 Понятие и виды языков программирования
1.2 Характеристика языков программирования различных уровней
Глава 2 Понятие и классификация языков программирования высокого уровня
2.1 Языки программирования высокого уровня
2.2 Современные языки программирования
В настоящее время Паскаль довольно мощный язык, имеющий как графические, так и звуковые возможности. На основе этого языка существует язык с графическим интерфейсом Delphi, довольно распространенный среди профессиональных программистов.
В Паскале большое внимание уделяется «скелету» программы, т.е. в ней обязательно присутствует разделение на области, такие как область описания переменных, подключение библиотек, непосредственно кодирование алгоритма. Важным становится правильно определить тип переменных из довольно обширного, по сравнению с вышеописанными языками, списка. Учитывая то, что команды являют собой английские слова (или их части и сокращения), понимание данного языка довольно простое, как и задумывал его создатель. Конечно, как и Бейсик, язык с момента своего «рождения» претерпел некоторые изменения, обзаводясь диалектами. Наиболее известной реализацией Паскаля, обеспечившей широкое распространение и развитие языка, является Turbo Pascal фирмы Borland, выросшая затем в объектный Паскаль для DOS (начиная с версии 5.5) и Windows и далее в Delphi, в которой были внедрены значительные расширения языка. Это был значительный шаг вперед в облегчении процесса программирования.
Развитием языка Borland Pascal является Object Pascal — версия языка Паскаль, расширенная средствами объектно-ориентированного программирования.
Одним из наиболее распространенных языков программирования у профессионалов является язык семейства C - C# (си шарп). Это язык высокого уровня, сочетающий в себе объектно-ориентированные и контекстно- ориентированные представления. Средой для разработки программ на языке C# обычно является пакет Microsoft Visual Studio (VS). Она позволяет создавать консольные приложения, приложения Windows, сайты .NET и многое другое.
Как всякая среда, имеющая визуальное устройство интерфейса, VS обладает большой библиотекой элементов управления, а также возможностью подключения баз данных, например, линейки SQL. Широкий спектр настроек позволяет создать именно тот дизайн будущего приложения, который Вам необходим. Имея русифицированную версию VS, создать простейшую программу Windows- приложения - дело пяти минут, причем большая часть времени уйдет на проработку дизайна. Зная хотя бы приблизительно принцип работы языка C# применительно к элементам управления и значения некоторых команд, можно по предлагаемым умной программой подсказками и приведенным комментариям и разъяснениям сгенерировать немалой длины код. Профессиональные программисты советуют для начал все же набирать весь код вручную, стараясь понять каждую строку и каждую команду.
В отличие от рассмотренных ранее языков, C# не поддерживает интеграцию код на Ассемблере. Чтобы все же внести такую вставку, необходимо подключить специальную библиотеку, а также провести с десяток манипуляций, чтобы добиться необходимого эффекта. Естественно, не многие спешат совместить C# и Ассемблер.
Язык C# очень чувствителен к объявлению переменных и соответствию их типа производимым над ними действиями. Например, не получится возвести в произвольную степень целочисленное число, программа выдаст ошибку. Здесь требуется тип переменной double - число дойной точности. Очевидно также, что математические операции нельзя проводить над строковыми переменными.
Немаловажной особенностью языка C# является возможность создания собственного класса. Вся суть языка заключена в классах, поскольку именно им определяется природа объекта. [5] Класс (определяется ключевым словом class), в смысле объектно-ориентированного программирования, — это совокупность объектов, которые имеют общие свойства и методы. Его можно назвать шаблоном для построения экземпляров - элементов класса. Так, мы можем создать класс, в котором будет храниться какое-то количество переменных, а потом в прописанных ниже методах с ними будут производиться какие-то действия. При этом нам не обязательно присваивать конкретные значения этим переменным непосредственно в классе. Этот шаблон универсален тем, что в теле программы можно создать любое число экземпляров данного класса, в каждом из которых значения описанных переменных будут различны. Кроме того в C# практикуется наследование классов. Например, создаем класс «Треугольник», задаем переменные определенного типа, пишем метод, который считает, например, площадь нашего треугольника. А потом вспоминаем, что треугольники бывают разные, и создаем новый класс «Прямоугольные», который является наследником первого класса. Это значит, что новому классу доступны все переменные и все методы, которые были созданы ранее, а также свои собственные. Например, метод расчета площади по частной формуле для прямоугольного треугольника. У каждого класса может быть только по одному наследнику, однако, если выстроить наследников под «родителем», каждому «ребенку» будет доступно все, что имеют вышестоящие «родственники», тогда как сверху вниз подобное отсутствует.
Из всех, описанных выше языков, последний, пожалуй, самый мощный и перспективный. Однако не стоит зацикливаться лишь на нем. В конечном счете, если Вы надеетесь стать программистом, необходимо знать не один и не два языка программирования, а как можно больше. Естественно, нет смысла учить те языки, которые в настоящее время являются «мертвыми». Есть необходимость в знании Ассемблера, C++ и C#, возможно, Delphi, PHP и т.д. Чем больше языков Вы знаете, тем выше вероятность написать программу с именно тем функционалом, что был необходим, причем с наименьшими затратами и с наибольшей результативностью.
Глава 2 Понятие и классификация языков программирования высокого уровня
2.1 Языки программирования высокого уровня
Анализ иерархии создания языков программирования показывает - нельзя создать универсальный язык, обеспечивающий «всё». Примером такого неудачного создания универсального ЯП ВУ является ПЛ/1 (Язык программирования №1) Поэтому современные языки программировании конца прошлого и начала настоящего века носят конкретный характер: они полностью ориентированы на специфику решаемой задачи.
Как принято считать, основы современного безопасного программирования были заложены в структурных ЯП ВУ, таких как COBOL (1959), Pascal (1970), C (1972)[8]. Следующей вехой укрепившей безопасность за счёт создания заранее проверенных и используемых затем программных блоков является появление процедур и функций в структурном программировании. Такой подход , кроме того, позволил объединить разнородные данные и сделать программы автономными и управляемыми.
Развитие структурирования привело к появлению классовых структур, где программы разбиваются на классы - структуры данных, содержащие в себе переменные и функции, которые работают с этим переменными. Началась эра объектно-ориентированного программирования, которое содержит в себе такие концепты, как полиморфизм, инкапсуляция и наследование. Примером «чисто» объектно-ориентированного ЯП ВУ является Java (1996). В этом языке надёжность и безопасность использования динамических структур данных, необходимых для ускорения работы приложений и экономии важнейших ресурсов вычислительной системы, стала ещё выше, чем в предшествующих языках такой же парадигмы.
Языки создаются и эволюционируют постоянно. Их влияние нельзя недооценивать на безопасную обработку современных научно-технических расчетов, на надёжное моделирование сложных процессов и систем в различных прикладных областях экономической деятельности человечества. Следовательно, перспективы развития ЯП ВУ всегда интересны и познавательны.
Какие же новые вычислительные модели и возможности заложены и будут являться перспективными в ближайшее время в современных языках программирования высокого уровня?
2.2 Современные языки программирования
Одним из ярких представителей языков нового времени является язык Elm. Ключевая особенность этого языка - отладчик реального времени. При работе с программами, написанными на этом языке, можно изменять код в реальном времени и наблюдать, как меняется тот или иной заданный параметр. Все действия записываются и могут быть проанализированы и переопределены, что существенно помогает в правильном написании прикладной программы.
Elm - функциональный язык программирования для создания GUI - Graphical User Interface , использующий синтаксис в стиле функционального языка программирования Haskell (рисунок 2.1). Он очень удобен и прост - программный код в несколько строк обеспечивает пользователю возможность рисования мышью любой фигуры в клиентской программе или в окне браузера. Интересна вычислительная модель реактивного функционального программирования - Functional Reactive Programming (FRP), положенная в основу данного языка. Данная парадигма ориентирована на работу с динамическими потоками данных и позволяет создавать приложения с высокой степенью интерактивности. Концепция FRP впервые была предложена Коналом Эллиоттом (Conal Elliott) при разработке функционального предметно-ориентированного языка для программирования анимации[4].
Рис. 2.1 - Иерархические связи языка Elm
Кроме того, Elm в современной практике программирования успешно используется для разработки веб-приложений. Исходный код, написанный с помощью этого языка, легко компилируется в коды HTML, CSS и JavaScript и органично встраивается в программный блок на странице сайта.
Несмотря на высокоуровневость, с точки зрения веб-программиста, HTML, CSS и JavaScript - это что-то вроде ассемблера для браузерных веб- приложений. Поэтому Elm может рассматриваться именно как настоящий язык высокого уровня, позволяющий писать компактный, надёжный и безопасный код для веб-разработок[4].
Необходимо отметить, что на сегодняшний день парадигма функционального программирования претерпевает подъём и другим представителем этого направления, заслуживающим внимания, является язык Swift от компании Apple, который призван упростить разработку приложения и внедрить отладчик реального времени. Этот язык направлен на развитие интерактивности приложения с мобильными устройствами, что делает его «неким» аналогом языка Elm.
Рис. 2.2 - Языковые связи языка Swift
Если рассмотреть связи этого языка с другими языками, появившимся ранее (рисунок 2.2), то можно выделить конкретные преимущества данного ЯП ВУ. Swift сочетает в себе «читабельность» именованных параметров и мощь динамической объектной модели Objective-C, укрепляет безопасность написанного на нём кода, по сравнению с предшественниками (указанными на схеме рисунка 2.2), предлагает множество новых возможностей, а также унифицирует процедурные и объектно-ориентированные аспекты языка программирования.
Этот новый язык программирования начала XXI века, как и язык Elm, имеет отладчик реального времени, который позволяет экспериментировать с кодом, наблюдая результат в настоящем времени без необходимости компилировать и запускать приложение. Это значит, что разработчики смогут быстрее проверять в деле свои концепты и в целом быстрее создавать надёжные приложения. Быстрота Swift подкупает многих разработчиков программного обеспечения, скорость реализации некоторых алгоритмов в 3,9 раза выше, чем на Python, и лаконичней, ввиду того, что в языке максимально искоренён такой недостаток как многословность, присущая Objective-C[2].
Далее необходимо обратить внимание на участие новых «игроков» на рынке производителей ЯП ВУ, таких как - корпорация Google - активно участвующая в создании новых программных продуктов, в том числе, и языков программирования. Помимо разработки языков, ориентированных на мобильные приложения, Google также не забывает о ранних архитектурах языков программирования. Опираясь на эти архитектуры, был разработан язык программирования высокого уровня «Go» (рисунок 2.3).
Рис. 2.3 -Язык Go и его иерархические связи
Go — компилируемый, многопоточный язык программирования. Первоначальная разработка Go началась в сентябре 2007 года [6,10,11]. В языке Go реализованы различные удобства: множественные возвраты из функций, простота представления и лёгкость работы со строками, что повышает надёжность и безопасность языка. Многоядерность охватила мир вычислительной техники нынешнего столетия, и разработчики программного обеспечения не могли не среагировать на это нововведение в аппаратном обеспечении. Язык Go обладает в этом плане главной особенностью - он предназначен для поддержания параллельного выполнения на нескольких процессорах (ядрах) разработанных на нём пользовательских приложений, Для этого любую функцию можно запустить выполняться в отдельном потоке (оператором Go). Параллельно выполняющиеся ветви ведут себя как сопрограммы, и могут обмениваться между собой синхронными сообщениями через двунаправленные каналы. Через каналы могут передаваться данные любых типов.