Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Современные языки программирования(Теоретические аспекты языков программирования)

Содержание:

Введение

Актуальность темы курсовой работы обусловлена тем, что прогресс компьютерных технологий определил процесс появления новых разнообразных знаковых систем для записи алгоритмов. Языкам программирования характерно быстрое развитие и смена старых на современные, более усовершенствованные, способствующие эффективному использованию программ. Знание их особенностей, а также умение их использования являются необходимыми для возможности моделирования, которые приспособлены к решению определенных задач, что также определяет актуальность исследования современных языков программирования в настоящее время.

Цель – изучить особенности современных языков программирования.

Объект исследования – современные языки программирования.

Предмет исследования - развитие языков программирования

Для достижения поставленной цели необходимо последовательное решение таких задач, как:

- дать определение понятию и сущность языков программирования;

- рассмотреть историю развития языков программирования;

- изучить разновидность языков программирования;

- исследовать эволюцию и классификация современных языков программирования;

- охарактеризовать распространенные современные языки программирования.

Методы исследования: анализ научной литературы, обобщение и систематизация полученных результатов.

Структура курсовой работы состоит из введения, двух глав, заключения, списка использованной литературы.

Глава 1. Теоретические аспекты языков программирования

Понятие и сущность языков программирования

Языки программирования – это средство представления знаний для компьютерных систем. Они предлагают концептуальные средства представления и возможности моделирования, которые приспособлены к решению определенных задач. При этом концепции языков программирования складываются и развиваются в результате стремления разработчиков снизить «семантический разрыв» между языком описания работы вычислительного устройства и языком, на котором осуществляется постановка задачи. Развитие языков на эмпирическом уровне определяется развитием вычислительной техники. На теоретическом уровне изменения в представлениях о языках программирования определяется выбором формы управления вычислительными устройствами. Многообразие концепций языков, разработанных за период в 60 лет, привело к наличию многообразия парадигм программирования, которые сложились к настоящему времени.

Концептуальные идеи языков программирования, которые нашли свое отражение в современных языках программирования, сыграли важную роль в теории программирования. А знание способов реализации в них семантических структур является важным фактором при выборе языка программирования для решения поставленной задачи.

Основными характеристиками, которые дают возможность осуществить сравнение языков программирования и провести выбор наилучшего решения той или иной задачи, являются: мощность, уровень и концептуальная целостность [12, с.48].

Мощность языка характеризуется количеством и разнообразием задач, алгоритмы, решения которых можно записать, используя этот язык. Очевидно, самым мощным является машинный язык. Любую задачу, запрограммированную на каком-либо языке, можно запрограммировать и на машинном языке.

Уровень языка характеризуется сложностью решения задач с помощью данного языка. В зависимости от того, насколько проще записывается решение задач, чем более непосредственно реализуются сложные операции и понятия, чем меньше объем получаемых программ, тем выше уровень языка.

Для концептуальной целостности языка, в свою очередь, характерной является совокупность понятий, которые служат для описания данного языка, и включает в себя такие взаимосвязанные аспекты, как: экономию, ортогональность и единообразие понятий. Экономия понятий предполагает достижение максимальной мощности языка с помощью минимального числа понятий. Ортогональность понятий означает, что между понятиями не должно быть взаимного влияния. Так, при условии, что понятие применяется в разных контекстах, то правила для такого использования должны быть идентичными. Единообразие понятий требует согласованного, единого подхода к описанию и использованию всех понятий [11, с.97].

В большинстве случаев, насколько меньше мощность языка (то есть чем уже область его применения), настолько выше его уровень. По данной причине наряду с универсальными языками разрабатываются и специализированные языки в некоторой определенной области. То есть, насколько мощный язык, нас только затруднительно осуществлять обеспечение концептуальной целостности. Наряду с этим, высокий уровень языка обладает непосредственной связью с концептуальной целостностью.

Указанные характеристики языков программирования определяют наличие либо отсутствие свойств, таких как: надежности, удобочитаемости, полноты, гибкости, простоты. Данные свойства дают возможность для более подробного сравнения языков.

Надежность языка обеспечивает минимум ошибок при написании программ. Для этого язык должен быть таким, чтобы было трудно делать ошибки, не обнаруживаемые при компиляции. К примеру, за счет наличия в языке требования, чтобы все переменные были объявлены до использования, ошибки, связанные с неправильным написанием имен, выявляются при компиляции (то есть автоматически). Язык должен осуществлять защиту программиста от него самого, сделав трудным или даже невозможным появление некоторых ошибок. Так, плохо, если можно сделать одно и то же более чем одним способом: лишняя возможность выбора может привести к ошибке. Как пример более тонкой защиты программиста является трактовка отношения равенства: поскольку точное равенство двух чисел с плавающей точкой есть не что иное, как удачное совпадение, то разумно определить его как приблизительное равенство с некоторой точностью.

Удобочитаемость языка представляет собой свойство, которое обеспечивает легкость восприятия программ человеком. Удобочитаемость находится в зависимости от многих факторов, которые включают, с одной стороны, выбор ключевых слов, а с другой — возможность модулеризации программы. Основным определяется то, чтобы нотация языка давала возможность в процессе чтения программы легко выделять основные понятия каждой конкретной части программы, не обращаясь к сопровождающим ее описаниям.

Высокая степень удобочитаемости оказывается полезной с разных точек зрения. Первоначально, уменьшается сложность документирования, если центральным элементом документации является сама программа. Во-вторых, удобочитаемость дает возможность для более легкого сопровождения программы: ясно, что существенные изменения в программе могут быть сделаны только тогда, когда ее работа понимается совершенно правильно.

Реализация требований удобочитаемости находится в зависимости от программиста, который должен более точно структурировать свою программу и расположить ее текст. Значимую роль играет и используемый программистом язык. На нижних уровнях программных конструкций язык должен обеспечить возможность точной спецификации того, какие объекты данных подвергаются обработке и как они используются. Эта информация определяется выбором идентификаторов и спецификаций типов данных.

Полнота языка обеспечивает описание на языке решения задач определенной предметной области, а также с помощью средств языка, к примеру средств отладки, процесса разработки программ.

Гибкость языка обеспечивает легкость выражения на языке необходимых для решения задач действий, предоставляет программисту больше возможностей для выражения всех операций в программе.

Простота языка обеспечивает легкость понимания семантики языковых конструкций и запоминания их синтаксиса, что способствует для уменьшения затрат на обучение программиста и вероятность совершения ошибок, возникающих в результате неправильной интерпретации спецификаций языка. К примеру, язык должен быть таким, чтобы конструкции, означающие близкие по смыслу понятия, и выглядели одинаково, и, что еще более важно, конструкции, которые означают разные понятия, должны выглядеть по-разному.

При сравнении и выборе языков программирования стоит также учитывать и такие свойства языка, как мобильность и эффективность.

Мобильность языка обеспечивает независимость его аппаратных средств, способствует переносить программное обеспечение с машины на машину с относительной легкостью [13, с.67].

Эффективность языка обеспечивает эффективную реализацию языка. В настоящее время в связи с все снижающейся стоимостью аппаратных средств и все возрастающей стоимостью программного обеспечения необходимость эффективности отходит на второй план по сравнению с надежностью.

Эффективность создания, тестирования и использования программы хорошо иллюстрируется языком АПЛ. В процессе использования данного языка для решения некоторого класса задач проектирование, кодирование, тестирование, модификация и выполнение программы отнимает у программиста минимальное количество времени и энергии. АПЛ может быть назван эффективным в полном смысле слова — он способствует минимизации времени и энергии, которые затрачиваются на решение задач на ЭВМ.

Описание свойства языков можно еще более детализировать, при указании на их зависимость от тех либо других частных требований к языкам. Совокупность данных требований уже довольно велика, что затрудняет их прямое использование для сравнения и выбора языков. В связи с этим целесообразно остановиться на перечисленных выше трех характеристиках и семи свойствах. Однако для адекватного оценивания характеристик и свойств необходимыми являются знания их зависимости от многочисленных требований.

При условии, что приемы процедурного программирования акцентируются на алгоритмах, то объектно-ориентированное программирование (ООП) акцентируется на сути задачи. Элементы программы разрабатываются согласно объектам, которые присутствуют в описании задачи. Наряду с этим, первичными считаются объекты (данные), которые могут активно взаимодействовать друг с другом посредством механизма передачи сообщений (называемого также и механизмом вызова методов). Функция программиста заключается в определении объектов, взаимодействие которых после старта программы приведет к достижению необходимого конечного результата.

Общий подход к объектно-ориентированное программированию включает в себя такие концепции, как: наличие типов, определенных пользователем; скрытие деталей реализации (инкапсуляция); использование кода через наследование; разрешение интерпретации вызова функции во время выполнения программы (полиморфизм) [10, с.77].

Реальные/физические объекты окружающего мира имеют такие основные характеристики, как: набор свойств, характеризующих объект; способность объекта изменять свойства; способность реагировать на события как в окружающем мире, так и внутри самого себя.

Хотя термины «тип данных» (либо просто тип) и «абстрактный тип данных» звучат идентично, они обладают разным смыслом. В языках программирования тип данных (переменной) обозначает множество значений, которые может принимать данная переменная. Абстрактный тип данных (АТД) определяется как математическая модель с совокупностью операторов, которые определены в рамках данной модели. Так, классы могут служить простым примером абстрактных типов данных.

Разработку класса – абстрактного типа данных рекомендуется осуществлять с разработки информационной и математической моделей реального либо физического объекта, как это изображено в схеме, которая представлена на рисунке 1.

https://science-education.ru/i/2014/3/9243/image001.png

Рисунок 1 - Схема процесса создания программной модели (класса) в рамках ООП.

Согласно с данной схемой на начальном этапе исследования задачи необходимо выделить физические объекты. Далее необходимо определить свойства, которые характеризуют каждый физический/реальный объект. Стоит отметить, что из большого количества свойств объекта стоит взять только те, которые являются необходимыми для решения задачи. Во избежание избыточности стоит определить: какие из свойств являются базовыми; какие свойства можно получить на основании базовых свойств, какие свойства будут меняться; как воздействовать на объект для изменения его свойств; в каких процессах будет задействован объект и как это отразится на его свойствах (действия над объектом).

Следующим шагом в исследовании задачи будет построение информационной модели объекта. Здесь требуется дать названия свойствам, установить диапазоны возможных значений свойств и определить их типы. Выяснить, что считать исходными данными и что определить как их результаты. Определить возможные места расположения данных. При условии, что эти данные расположены либо в результате решения будут располагаться на внешних носителях, к примеру как файл, необходимо сделать описание структуры, в которой они представлены либо будут представляться на данном носителе.

Построение математической модели сводится к записи математических соотношений, связывающих результаты либо новые свойства с исходными данными. Такие соотношения, в основном, представлены в аналитическом виде формулами.

Информационная и математическая модели служат основой для построения программной модели объекта либо класса.

Построение класса начинается с разработки его интерфейса. Поля класса формируются из информационной модели. А в методы класса, помимо стандартных методов (конструкторов и деструктора), включаются методы, которые связаны с изменением свойств объекта, получением новых свойств как воздействием на объект, так и на основании соотношений, заявленных в математической модели.

Та последовательность действий, которая изображена на рисунке 1, исходит из того, что в задаче уже выделены физические объекты. Именно физические объекты определяют интерфейс программы в целом, ее программную модель и в большей степени оказывают влияние на логику решения задачи.

Выделение объектов само по себе не является простой задачей. Для выделения объектов в части анализа и исследования задачи значительное место отводится разработке концептуальной модели функционирования пользовательского интерфейса.

Аспекты, которые следует учитывать при разработке концептуальной модели функционирования пользовательского интерфейса

Важность этапа разработки концептуальной модели пользовательского интерфейса сложно переоценить также из-за возросших требований к качеству программного продукта как на отечественных, так и на западных рынках, так как в оценку программного продукта входит качество интерфейса, которое обеспечивает взаимодействие пользователя с программой.

Стоит выделить основные критерии качества интерфейса, которыми являются: скорость работы пользователей; количество человеческих ошибок; скорость обучения; субъективное удовлетворение (подразумевается, что соответствие интерфейса задачам пользователя является неотъемлемым свойством интерфейса) [1, с.128].

Скорость выполнения работы – это важный критерий эффективности интерфейса. Длительность выполнения работы пользователем состоит из: длительности восприятия исходной информации; длительности интеллектуальной работы (пользователь думает, что он должен сделать); длительности физических действий пользователя; длительности реакции системы.

Длительность реакции системы определяется как наименее важный фактор.

Процесс разработки дизайнов интерфейсов в настоящее время является настолько важным составляющим элементом при создании программного продукта, что он стал профессией отдельных людей. Появились научные разработки в области проектирования пользовательского интерфейса, основанных на познавательные процессы человеческого сознания, то есть знания из областей когнитивной и инженерной психологии, а также эргономики.

Согласно Дональду Норману, на которого ссылается В. Головач, взаимодействие пользователя с системой (не только компьютерной) состоит из: формирования цели действий; определения общей направленности действий; определения конкретных действий; выполнения действий; восприятия нового состояния системы; интерпретация состояния системы; оценки результата.

Из данного списка наблюдается, что процесс размышления занимает практически все время, в течение которого пользователь работает с компьютером, во всяком случае шесть из семи этапов полностью заняты умственной деятельностью. Соответственно, повышение скорости данных размышлений приводит к существенному улучшению скорости работы.

История развития языков программирования

История языков программирования начинается с разработки машинного языка: языка логического нуля и единицы. Запись с помощью этого языка была очень сложной и утомительной. Для облегчения работы программистов в конце 1940-х гг. был разработан язык ассемблер. Вместо двоичных цифр, которые обозначали какую-либо команду, записывались короткие слова или аббревиатуры. Программисты считают ассемблер языком программирования низкого уровня, поскольку он близок к языку самого низкого уровня – машинному. Программы, написанные на ассемблере, напрямую зависят от характеристик конкретного процессора, поэтому его называют машинно-ориентированным языком [14, с.59].

Написание программ на ассемблере является довольно сложной задачей, к тому же необходимы знания устройств компьютера. И тем не менее программы на ассемблере – самые эффективные и работоспособные.

В ходе развития программирования возникла необходимость разработки новых, более совершенных языков программирования, которые бы были схожи с естественными языками и позволяли бы не работать напрямую с машинными командами. Их стали называть языками высокого уровня. Языки высокого уровня ориентированы на описание алгоритмов, поэтому их называют алгоритмическими языками.

Преимуществом таких языков является большая наглядность и независимость от конкретного компьютера. Поскольку компьютером распознается только машинный язык, программа, написанная на алгоритмическом языке, перед выполнением должна переводится на этот язык специальной программой – транслятором. В трансляторе заложены все правила алгоритмического языка и способы преобразования различных его конструкции на машинный язык.

Существуют две разновидности трансляции:

Компиляция (Compilation) – метод выполнения программ, при котором инструкции программы выполняются только том случае, когда собран перевод всего текста программы [9, с.114].

Интерпретация (Interpretation) – метод выполнения программ, при котором инструкции программы переводятся и сразу выполняются.

В 1954 г. была начата разработка первого компилятора языка высокого уровня. Через два года появился язык Fortran (FORmula TRANslator – «переводчик формул»). Язык содержал средства, которые значительно упрощали разработку, однако программирование на Fortran не было простой задачей: если в коротких программах он был легко понимаемым, то когда дело касалось больших программ язык становился нечитаемым. Несмотря на это, язык был довольно успешным и было выпущено много его версий. Проблемы были решены после разработки языков структурного программирования: в них появилась возможность создания программных блоков, независимых подпрограмм, поддержки рекурсии и локальных переменных, отсутствие оператора безусловного перехода (GoTo). Таким образом, такие языки стали поддерживать возможность разбиения программы на составляющие элементы. На протяжении десяти лет было создано достаточно большое число новых языков: Algol (1958 г.) предназначался для записи алгоритмов, которые составлены из обособленных блоков; Cobol (1959 г.) использовался для массовой обработки данных в сферах управления и бизнеса; Basic (1965 г.) позволял писать простые программы, использовался для обучения основам программирования. Совсем немногие из созданных языков были структурированными. Также были созданы специализированные языки: Lisp, Prolog, Forth и т.д.

В 1967 году появился язык Симула – первый язык программирования, в котором были предложены принципы объектной ориентированности. Он поддерживал работу с объектами, классами, виртуальными методами и т.д., но все эти возможности не получили достойной оценки современников. Тем не менее, большинство этих концепций были заложены Аланом Кэем и Дэном Ингаллсом в язык Smalltalk, который стал первым широко распространённым объектно-ориентированным языком программирования.

В настоящее время число прикладных языков программирования, которые реализуют объектно-ориентированную парадигму, является наибольшим по отношению к другим парадигмам. Основные языки, которые поддерживают концепцию ООП: C++, C#, Object Pascal (Delphi), Java и т.д.

С развитием технологии WWW (World Wide Web) Интернет стал очень популярным. Было создано большое количество вспомогательных языков для обеспечения работы с Интернетом, оформления сайтов, доступа к ресурсам и т.д. Становится распространенным интерпретируемый язык Perl, который отличается своей простотой и легкой переносимостью на другие платформы. Он предназначен для написания приложений и CGI-скриптов различной сложности. Также широко используется и играет значительную роль в развитии и функционировании Интернета язык Java.

В 1970-х гг. появился язык SQL – язык структурированных запросов, который был создан для доступа и работы с базами данных. Для написания кодов страниц веб-сайтов разработан язык разметки гипертекстов HTML, который содержит команды для разметки и оформления текста и графики.

Для придания большей привлекательности и функциональности сайта используются:

Скрипты JavaScript, которые выполняются в веб-браузере пользователя и используются в основном для улучшения внешнего вида сайта и решения мелких задач.

Скрипты PHP, которые выполняются на стороне сервера и посылают в браузер пользователя уже обработанную информацию. Применяются для создания динамических HTML-страниц, гостевых книг, ведения форумов и опросов.

CGI-сценарии, которые написаны преимущественно на Perl, C/C++, выполняются на стороне сервера и зависят от конкретных действий пользователя. Применяются, как и сценарии PHP, для создания динамических HTML-страниц, гостевых книг, ведения форумов и опросов.

Особого внимания заслуживает язык Pascal (1970 г.), названный в честь ученого Блеза Паскаля, который использовался как для обучения, так и для решения задач различной сложности. Программы на Pascal легко читаемы, что позволяет быстро находить и исправлять ошибки, также он был хорошо структурированным. Все вышеперечисленное привело к его широкой распространенности, и даже в данное время его активно используют в учебных заведениях. В 1972 г. появился язык С, что стало успешным шагом в программировании. Язык сочетал в себе преимущества многих языков и обладал большим числом разных нововведений. Широкие возможности, структурированность и относительная простота его изучения позволили языку быстро стать признанным и завоевать место одного из основных языков. Появление структурного программирования дало отличные результаты, но все же было еще сложно писать длинные и серьезные программы [2, с.17].

Объектно-ориентированное программирование (ООП) С 1970-х гг. были заложены основы объектно-ориентированного программирования (ООП), которое возникло как последствие развития процедурного программирования, при котором данные и подпрограммы их обработки формально не были связаны.

ООП включает следующие основные понятия:

Класс – модель ещё не существующего объекта. Фактически он является схемой объекта, описывая его устройство.

Объект – экземпляр класса, сущность в адресном пространстве вычислительной системы, которая появляется при создании экземпляра класса.

Абстракция – присвоение объекту характеристик, четко определяющих его границы, которые отличают его от всех других объектов. Основной идеей является отделение способа использования составных объектов данных от деталей их реализации в виде более простых объектов. Инкапсуляция – объединение свойств (данных) и методов (подпрограмм) в классе для того, чтобы скрыть данные объекта от остальной программы и обеспечить целостность и независимость объекта (изменение свойств объекта возможно только через специальные методы класса).

Наследование – механизм языка, который позволяет описать новый класс на основе уже существующего класса (или классов) с добавлением новых свойств и методов.

Полиморфизм – свойство системы использовать объекты с одинаковым интерфейсом без получения информации о его типе и внутренней структуре.

Программа – алгоритм, записанный на языке программирования.

Программа – последовательность операторов языка [6, с.48].

Языки программирования – искусственные языки, строго формализованные; существует правила записи операторов языка – синтаксис языка.

1.  Машинный язык (40-50 годы XX в.).

Программы на машинном языке – очень длинные последовательности единиц и нулей, являлись машинно зависимыми, т.е. для каждой ЭВМ необходимо было составлять свою программу.

2.  Ассемблер (начало 50-ых годов XX в.).

Вместо 1 и 0 программисты теперь могли пользоваться операторами (MOV, ADD, SUB и т.д.), которые похожи на английские слова. Программы на ассемблере также являются машинно-зависимыми. Для преобразования в машинный код использовался компилятор (спец. программа – переводчик в машинный код).

3.  Первые языки программирования высокого уровня.

С середины 50-ых гг. XX в. начали создавать первые языки программирования высокого уровня (high-level language). Эти языки были Машино независимыми (не привязаны к опред. типу ЭВМ). Но для каждого языка были разработаны собственные компиляторы.

Примеры таких языков: FORTRAN (FORmula TRANslator; 1954) предназначен для научных и технических расчетов; COBOL (1959) был предназначен в основном для коммерческих приложений (обрабатывал большие объемы нечисловых данных) – Common Business-Oriented Language); язык BASIC (Beginner’s All Purpose Instuction Code – универсальный язык символьных инструкций для начинающих) (1964 г.)

4.  Алгоритмические языки программирования.

С начала 80-ых г. XX в. начали создаваться языки программирования, которые позволили перейти к структурному программированию (использование операторов ветвления, выбора, цикла и практически отказ от частого использования операторов перехода (goto). К этим языкам относятся: язык Pascal (назван его создателем Никлаусом Виртом в честь великого физика Блеза Паскаля; 1970); язык Си, позволяющий быстро и эффективно создавать программный код (1971) [8, с.102].

5.  Языки объектно-ориентированного программирования

(90-ые г. XX в.). В основу этих языков положены программные объекты, которые объединяют данные и методы их обработки. В этих языках сохранялся алгоритмический стиль программирования. Для них были разработаны интегрированные среды программирования, позволяющие визуально конструировать графический интерфейс приложений:

язык С++ (1983) - продолжение алгоритм. языка Си;

язык Object Pascal (1989) был создан на основе языка Pascal. После создания среды программирования – Delphi (1995);

язык Visual Basic(1991) был создан корпорацией Microsoft на основе языка Qbasic (1975) для разработки приложений с графическим интерфейсом в среде ОС Windows.

6.  Языки программирования для компьютерных сетей.

В 90-ые годы XX в. в связи с бурным развитием Интернета были созданы языки, обеспечивающие межплатформенную совместимость. На подключенных к Интернету компьютерах с различными ОС (Windows, Linux, Mac OS и др.) могли выполняться одни и те же программы. Исходная программа компилируется в промежуточный код, который исполняется на компьютере встроенной в браузер виртуальной машиной:

язык Java - объектно-ориентированный язык был разработан фирмой Sun Microsystems для создания сетевого программного обеспечения (1995);

язык JavaScript – язык сценариев Web-страниц (компания Netscape). (1995)

7.  Языки программирования на платформе .NET.

Интегрированная среда программирования Visual Studio .Net, разработанная корпорацией Microsoft, позволяет создавать приложения на различных языках объектно-ориентированного программирования, в том числе:

на языке Visual Basic .Net ( на основе Visual Basic) - 2003 г.;

на языке Visual C# (С-шарп) – на основе языков С++ и J – 2003 г.;

на языке Visual J# (J-шарп) – на основе Java и JavaScript – 2003 г.

Интерпретаторы и компиляторы

Для того, чтобы процессор мог выполнить программу, программа и данные должны быть загружены в оперативную память. Необходимо, чтобы в ОП был размещена программа - транслятор, автоматически переводящий с языка программирования в машинные коды.

Трансляторы бывают двух типов: интерпретаторы и компиляторы.

Интерпретатор – программа, которая обеспечивает последовательный перевод операторов программы с одновременным их выполнением. Достоинством интерпретатора является удобство отладки (поиск ошибок), недостаток – сравнительно малая скорость выполнения.

Компилятор переводит весь текст программы на машинный язык и сохраняет его в исполнимом файле (обычно с расширением .exe).

Системы объектно-ориентированного программирования содержат программу-транслятор и позволяют работать в режиме как интерпретатора, так и компилятора. На этапе разработки и отладки проекта используется режим интерпретатора, а для получения готовой программы – режим компилятора.

Разновидность языков программирования

Классификация языков программирования по категориям связана с методами, которые используются при написании программ.

Классификация языков программирования. Автор24 — <a href=

Рисунок 2 - Классификация языков программирования

  1. Процедурные языки.

Процедурные языки являются языками высокого уровня, в которых используется метод разбиения программ на отдельные связанные между собой модули – подпрограммы (процедуры и функции). Компоненты языка состоят из последовательности операторов, которые используют библиотечные процедуры и функции. Первым процедурным языком был Fortran, затем появился Cobol, Algol, Pascal, C, Ada.

- Языки программирования низкого уровня. К языкам низкого уровня относится: программирование в машинных кодах; ассемблер; макроассемблер. Языки низкого уровня ориентировались на определенный тип процессора и учитывали его особенности, поэтому для того, чтобы перенести программу, написанную на ассемблере, на другую аппаратную платформу её нужно было почти полностью переписать. Различия присутствовали также и в синтаксисе программ под разные компиляторы. Языками низкого уровня пользуются преимущественно для написания небольших системных программ, драйверов устройств, модулей стыков с нестандартным оборудованием, программирования специализированных микропроцессоров, когда немаловажным является компактность, быстродействие и возможность прямого доступа к аппаратным ресурсам.

- Языки программирования высокого уровня. В языках высокого уровня особенности конкретных компьютерных архитектур не учитываются, поэтому написанные программы легко могут быть перенесены на другой компьютер. Зачастую достаточным является компиляция программы под определенную архитектурную и операционную систему. Разработка программ на языках высокого уровня значительно проще и ошибок намного меньше. К тому же время разработки программы значительно уменьшается, что является особенно важным фактором при работе над сложными программными проектами [4, с.103].

Недостаток некоторых языков высокого уровня состоит в большом размере программ по сравнению с программами на языках низкого уровня. В то же время текст программ на языке высокого уровня гораздо меньше, но в байтах код, написанный на ассемблере, будет более компактным. Поэтому языки высокого уровня преимущественно используют для создания программного обеспечения для компьютеров и вычислительных устройств с большим объемом памяти. Языки же низкого уровня используются для написания программ к устройств, для которых критичным является размер программы. Языки высокого уровня делятся на универсальные и проблемно-ориентированные. Наиболее распространенные универсальные языки C#, C++, Basic, Pascal (Delphi) используются для разработки Windows-приложений. Большой вклад в программирование на начальных этапах внесли языки Fortran, Cobol, Algol, C и др. Языки программирования для разработки Интернет-приложений скорее относятся к универсальным языкам. К ним относятся современные версии C#, Basic, J#.

- Объектно-ориентированные языки. Объектно-ориентированные языки стали дальнейшим уровнем развития процедурных языков, основной концепцией которых есть совокупность программных объектов. Написание программы на языке представляется в виде последовательности создания экземпляров объектов и использование их методов. К ним относятся из первых языков Simula и SmallTalk, далее C++, Java.

Декларативные языки программирования. В декларативном программировании задается спецификация решения задачи, то есть дается описание того, что представляет собой проблема и какой ожидается результат. Программы, созданные с помощью декларативного языка, не содержат переменные и операторы присваивания. К декларативным языкам можно отнести SQL и HTML. К подвидам декларативного программирования относится функциональное и логическое программирование.

Функциональные языки программирования. Они являются языками искусственного интеллекта. Программа, написанная на функциональном языке, состоит из последовательности функций и выражений, которые необходимо вычислить. Основной структурой данных является связный список. Функциональное программирование принципиально отличается от процедурного. Основными функциональными языками являются Lisp, Miranda, Haskel.

Логические языки программирования. Языки, ориентированные на решение задач без описания алгоритмов, языки искусственного интеллекта. Представителем логического программирования является Prolog, которым написано большинство экспертных систем.

Языки сценариев (скрипты). Языки относятся к объектно-ориентированным языкам, используются для написания программ, которые исполняются в определенной программной среде. Тексты программ, написанные на языке сценариев, можно включать в тело Html-документа. Первыми скриптами были Perl и Python, которые изначально были разработаны для операционной системы Unix, а уже в дальнейшем появились версии языков для операционных систем Windows и Macintosh. Для написания программ на языке сценариев необходимо знание процедур и функций системных библиотек.

Языки ориентированы на работу с одним определенным типом данных.

К примеру, APL работает с матрицами и векторами, Snobol обрабатывает строки, SETL выполняет операции над множествами. Особое развитие получили языки для работы с базами данных: 3GL, PL/SQL, FoxPro.

Глава 2. Характеристика и свойства языков программирования

2.1. Эволюция и классификация современных языков программирования

Языки программирования (ЯП) как способ выражения и сохранения вычислительных алгоритмов прошли долгий путь развития, и этот процесс продолжается. Некоторые языки становятся неактуальными и выходят из употребления (например, Алгол), другие, возникнув десятилетия назад, продолжают эволюционировать (C, C++, Java). Третьи только появились и, более адекватно соответствуя современным задачам, успешно завоевывают популярность (Swift, Go, Rust).

Эволюция языков программирования. Автор24 — интернет-биржа студенческих работ

Рисунок 3- Эволюция языков программирования

Языки программирования можно классифицировать по нескольким основаниям.

- По уровню абстракции: языки низкого уровня: их синтаксис приближен к машинным кодам Ассемблер, Си; языки высокого уровня; они направлены на то, чтобы человеку было удобно формулировать алгоритмы применительно к обслуживаемой предметной области (Java, С#) [5, с.72].

- По среде исполнения языки программирования делятся на: компилируемые: производится преобразование исходного текста программы в бинарные исполняемые файлы (C, C++, C#, Java, Go, Swift); интерпретируемые: текст, написанный программистом преобразуется в непосредственно исполняемый процессором алгоритм (JavaScript, Python).

Выбирая язык программирования, специалисту следует учитывать круг задач, который предстоит решать.

Доходность языков программирования. Автор24 — интернет-биржа студенческих работ Рисунок 4 - Доходность языков программирования

В настоящее время на рынке создания программного обеспечения наиболее активно развиваются следующие направления:

Разработка веб-приложений

В веб-разработке существует деление на фронтенд- и бэкенд программирование в зависимости от того, идет речь о написании клиентской части веб-приложения (обрабатываемой браузером страницы) или сервисов, обслуживающих запросы пользователя. Специалисты, занятые в этой отрасли должны хорошо знать средства визуализации, применяемые при создании веб-страниц (html, css), скриптовой язык JavaScript, применяемый для насыщения пользовательского интерфейса интерактивными возможностями, протоколы обмена информацией между клиентом и сервером (http).
Фронт-енд разработка базируется на JavaScript и его производных. В бэкенд-разработке чаще всего применяются скриптовые языки (PHP, Python, JavaScript) и фреймворки на их основе, а также Java, Go, C# и другие.
Современным веб-разработчикам не обойтись без знания фреймворков (React, Angular, Vue и т.п.) - "надстроек" над языками программирования, ускоряющих создание сайтов, делающих их более надежными и эффективными [15, с.53].

Разработка мобильных приложений

Выбор ЯП для написания программ, запускаемых на смартфонах и планшетах, зависит от аппаратной платформы. Для устройств с операционной системой Android приложения пишутся на ЯП Java, Kotlin. Для написания программ, работающимх на платформах компании Apple (iOS) используются языки от корпорации Apple - Objective-C и идущий ему на смену Swift. Разработка десктопных приложений

Выбор ЯП для создания приложений, запускаемых на настольных компьютерах, зависит от установленной операционной системы. В среде Windows чаще всего используется язык C#. Для компьютеров Apple - Objective-C и Swift. Существуют также кроссплатформенные решения, такие, как Java, Qt, GTK (надстройки над С++, ориентированные на создание графических интерфейсов) и т.п.

Помимо знания языков программирования, современный специалист должен также ориентироваться в инструментах разработки: сборщиках, интегрированных средах, редакторах кода, системах контроля версий и т.п.

2.2. Распространенные современные языки программирования

Различные аналитические сервисы и влиятельные корпорации регулярно проводят исследование популярности языков программирования. Рассмотрим свежий рейтинг, составленный по данным сервиса GitHub (менее востребованные ЯП идут в начале списка).

Распространенные языки программирования. Автор24 — интернет-биржа студенческих работ Рисунок 4 - Распространенные языки программирования

Ruby Язык Ruby - язык с открытым исходным кодом, сфокусированный на простоте. Обладает развитым доброжелательным сообществом, и обширной документацией. Примеры крупных сайтов, созданных с использованием Ruby: SoundCloud, Twitch, Hulu, Zendesk, GitHub. C Язык Си принадлежит к числу старейших (начал активно использоваться на рубеже 1960-х - 1970-х гг.) и остается одним из самых популярных благодаря универсальности, гибкости и эффективности. К недостаткам Си можно отнести относительно высокий порог вхождения. C# Язык C# (произносится Си шарп) - язык из семейства Си, разработанный корпорацией Microsoft для написания приложений, работающих в среде операционной системы Windows. Благодаря простому синтаксису, а также интуитивно понятной среде разработки VisualStudio, С# может быть легко освоен даже начинающими программистами.

С# активно используется для разработки игр. Для этого существует специализированная среда Unity.

Как рабочий инструмент для создания компьютерных программ определены языки программирования. Процесс их развития осуществляется более 50 лет. Более совершенными и, соответственно, более распространенными среди программистов являются языки программирования, рассмотренные ниже С++ [3, с.68].

Вне зависимости от этого, данный язык программирования и был создан еще в начале 80-х годов прошлого века, в связи с чем его можно отнести к современным, поскольку он не утратил популярности среди программистов, а наоборот его применяют высококвалифицированные специалисты и в настоящее время.

Си-++ это самый распространенный язык программирования (постепенно сдает позиции, уступая языкам семейства Java), умение владеть которым входит в обязанности любого программиста.

C++ создан на основе компилируемого статистически типизированного языка программирования Си, в результате чего унаследовал от него некоторые минусы: ‒ относительно неудобный синтаксис, из-за которого могут возникать ошибки, которые труднее распознать, а следовательно, и устранить. В совокупности со сложной спецификации языка неудобство синтаксиса делает его трудным для изучения; ‒ длинный программный код, что приводит к увеличению времени компиляции и сложностям при использовании программ; ‒ плохо реализованная поддержка модулей.

Как достоинства С++ определяются такие как: ‒ легкость обработки компилятором языка С, а также высокая совместимость кода.

Код на С++ может с минимальными изменениями может быть использован в С, и напротив; ‒ практически полная универсальность [7, с.51].

С++ подходит для решения практически любых программных задач; ‒ кроссплатформенность и низкие требования к вычислительной мощности ЭВМ; ‒ свобода программисту выбирать различные стили программирования: структурное, объектно-ориентированное, функциональное, порождающее.

Стандарты языка периодически обновляются. Для С++ правилом остается сохранения совместимости с языком предшественником — Си. Наряду с этим, стоит отметить, что писать код на С++ достаточно легко.

Java Язык программирования Java является типизированным и предназначен для объектно-ориентированного программирования. Основан Java, как и С++, на базовом языке Си.

Как основная особенность данного языка определяется его использование виртуальной машины, обрабатывающей программный код вне зависимости от операционной системы и оборудования ЭВМ.

К достоинствам этого способа обработки относится повышенная безопасность, а к недостаткам можно отнести снижение производительности, с которым борются посредством усовершенствований способов работы с байт-кодом.

К плюсам самого языка Java относятся: развитые стандартные библиотеки, не требующие дополнений; высокая степень переносимости программ; простота изучения; наличие встроенной поддержки работы в компьютерных сетях.

К отрицательным качествам относятся такие как: сильная загрузка оперативной памяти машины, и как следствие низкое быстродействие и малая производительность работы; язык развивается уже долгое время, поэтому среди дополнений и базовых средств языка имеются средства с полностью одинаковым функциональным значением.

На протяжении нескольких последних лет Java лидирует в списках лучших программ для всех видов разработчиков. В связи с этим актуальность данного языка, который был основан в 1990 году, еще не полностью исчерпана. Java – это лидер среди языков программирования в сегменте мобильных приложений, доля разработки которых на рынке труда, для программистов, постоянно увеличивается. Кроме этого, высока доля языков, которая относится к семейству Java в веб-проектах.

Python – язык программирования, который набирает большую популярность и предназначен для общего назначения. Он обладает относительно небольшим количеством простых команд, что несомненно делает его синтаксис одним из простейших среди современных языков. Легкость обучения и большое количество стилей программирования (среди которых структурное, функциональное, объектно-ориентированное, императивное и аспектно-ориентированное) представляет собой достоинство данного языка программирования. Код написанный на Python одним программистом с легкостью может быть прочтен другими, что облегчает работу с кодом.

Иные достоинства языка программирования Python: возможность проверки на ошибки отдельных участком программы, а не только всей целиком; портируем практически под все современные платформы; большая стандартная библиотека; интегрируемость с такими языками как С++ и С.

Недостатки этого языка: относительно малая скорость выполнения алгоритмов, свойственная многим интерпретируемым языкам программирования; большое количество ошибок в системном коде; проблемы с типами данным при передаче файлов в больших проектах, из-за использования динамической типизации.

Python стал одним из лидеров в сегменте разработки веб-приложений, при этом он постоянно находит себе новых поклонников и укрепляет свои позиции в среде программистов. Язык обладает множество реализаций заточенных для решения разных задач на любых платформах. Среди них: PyPy, IronPython, Stackless, Jython, Unladen Swallow, Micro Python и иные.

Заключение

Язык программирования – это средство общения человека и компьютера. При этом код на языке программирования пишется так, чтобы он был понятен человеку. Один из критериев хорошего кода – программист читает его и понимает, что это, для чего нужно и как будет работать. Языки программирования эволюционируют. В середине 50-х появились высокоуровневые языки. (Это означает, что они оперируют абстрактными описаниями структуры данных и операций с ними. Программа транслятор в дальнейшем переводит их на язык компьютера, то есть в машинный код.) Дальше у языков программирования появлялись языки-последователи, а программисты-ученые создавали современные парадигмы языков программирования. В 90-х появились языки, позволяющие создавать веб-сценарии. Сейчас языки программирования тоже развиваются – в направлениях безопасности, модульной организации кода, интеграции с базами данных и надежности. 

В заключение данной работы, делая выводы, стоит отметить, что существует много языков программирования, но основными из них являются следующие.

Язык C++ появился в 1970-х гг. как улучшенная версия языка Си ("Си с классами") и с тех пор пользуется не меньшей популярностью, чем его "предок". На C++ пишут настольные приложения, веб-сервисы, игры и т.д. Этот язык требует определенных затрат времени и усилий для своего освоения. PHP Язык PHP предназначен для создания динамических интерактивных веб-страниц и представляет не язык программирования в классическом понимании, а систему "вставок" в html-разметку, исполняемых на стороне сервера. PHP обладает развитой инфраструктурой: системой библиотек, фреймворков. С помощью этого языка созданы такие мощные веб-системы, как Facebook, Вконтакте, Yahoo. Язык прост в освоении, но в последние годы его популярность несколько упала как в связи с обнаруженными уязвимостями, так и с усилением конкурирующих продуктов.

Язык Python - высокоуровневое средство разработки для широкого класса задач, от простейших утилит до систем машинного обучения. Его достоинствами являются развитая инфраструктура (большое количество библиотек и фреймворков), а также то, что это скриптовый язык, что позволяет быстро отлаживать программу и запускать ее без пересборки. Python прост в освоении, существует множество учебников по этому языку. Следует ожидать, что его востребованность будет расти и впредь.

Язык Java - объектно-ориентированный универсальный язык, разработанный в начале 1990-х гг. компанией Sun Microsystems (ныне права на него принадлежат корпорации Oracle).

Он используется для написания мобильных и десктопных приложений, веб-сервисов и решения множества других задач. Востребован при создании масштабных компьютерных систем в крупных корпорациях, банках, научно-исследовательских институтах. JavaScript по версии GitHub занимает первое место по популярности. Это обусловлено тем, что в последние годы быстро растет его инфраструктура - библиотеки и Фреймворки, предназначенные для JavaScript, существуют для решения любых задач: от веб-программирования до прошивки микроконтроллеров. JavaScript прост в освоении. Его достоинством является и то, что он используется как для фронтенд, так и для бэкенд-разработки, что позволяет более эффективно организовать взаимодействие программистов при создании масштабных систем.

В настоящее время имеется большое количество языков программирования, которые обладают множеством разнообразных свойств. Их развитие не останавливается, а, напротив ускоряется, причем в сторону увеличения числа разновидностей языков. В связи с этим, выбор основной специализации становится все труднее, но при этом знание основных и самых распространенных языков, которые были рассмотрены в данной работе, является необходимым для каждого специалиста.

Список использованной литературы

  1. Александреску А. Язык программирования D / А. Александреску. — СПб.: Символ-плюс, 2017. — 544 c.
  2. Блинов И.Н. Методы программирования / под ред. Блинов И. Н., Романчик В. С. М. Четыре четверти, 2013. - 34 с.
  3. Вишневская Е. Использование современных языков программирования для решения профессиональных задач на примере языка программирования Python // Молодой ученый. — 2016. — №17.1. - С. 67-71.
  4. Вольфенгаген В. Э. Конструкции языков программирования. Приёмы описания. - М.: Центр ЮрИнфо Р, 2001. - 276 с. 
  5. Гавриков, М.М. Теоретические основы разработки и реализации языков программирования: Учебное пособие / М.М. Гавриков, А.Н. Иванченко, Д.В. Гринченков. — М.: КноРус, 2016. -184 c.
  6. Довек Ж. Введение в теорию языков программирования / Ж. Довек, Ж.-Ж. Леви. — М.: ДМК, 2016. - 134 c.
  7. Дорогов В.Г. Основы программирования на языке С: Учебное пособие / В.Г. Дорогов, Е.Г. Дорогова; Под общ. ред. проф. Л.Г. Гагарина. — М.: ИД ФОРУМ, НИЦ ИНФРА-М, 2017. — 224 c.
  8. Касторнова, В.А. Структуры данных и алгоритмы их обработки на языке программирования Паскаль: Учебное пособие / В.А. Касторнова. — СПб.: BHV, 2016. — 304 c.
  9. Кауфман В.Ш. Языки программирования. Концепции и принципы / В.Ш. Кауфман. — М.: ДМК, 2017. — 464 c.
  10. Керниган, Б. Язык программирования C. 2-е изд. / Б. Керниган, Д.М. Ритчи. — М.: Вильямс, 2016. — 288 c.
  11. Левушкин А. В., Турчанинов М. К., Жиганов А. А., Ермолаева В. В. Основные современные языки программирования // Молодой ученый. — 2018. — №25. — С. 96-98.
  12. Неклюдова С.А., Балса А.Р. Парадигмы программирования как инструменты разработчика программных систем // Информационные технологии и системы: межвузовский сборник научных трудов. Выпуск 1 (12). – СПб., 2014. — С. 44-49.
  13. Семакин И.А., Информатика: Базовый курс /Семакин И.А., Залогова Л., Русаков С., Шестакова Л. – Москва: БИНОМ.,2005. – 105с.
  14. Страуструп, Б. Язык программирования C++: Специальное издание / Б. Страуструп; Пер. с англ. Н.Н. Мартынов. — М.: БИНОМ, 2017. — 136 c.
  15. Шкатова Г.И., Берестнева О.Г., Берестнева О.Г. Некоторые аспекты, связанные с развитием языков программирования // Современные проблемы науки и образования. – 2014. – № 3. — С. 51-54.