Файл: Классификация языков программирования. Критерии выбора среды и языка разработки программ (История развития и появления языков программирования).pdf
Добавлен: 28.03.2023
Просмотров: 348
Скачиваний: 3
объект;
свойство объекта;
метод обработки;
событие;
класс объектов.
Объект — совокупность свойств (параметров) определенных сущностей и методов их обработки (программных средств).
Свойство — это характеристика объекта и его параметров. Все объекты наделены определенными свойствами, совокупность которых выделяют (определяют) объект.
Метод — это набор действий над объектом или его свойствами.
Событие — это характеристика изменения состояния объекта.
Класс — это совокупность объектов, характеризующихся общностью применяемых к ним методов обработки или свойств.
Существуют различные объектно-ориентированные технологии, которые обеспечивают выполнение важнейших принципов объектного подхода:
инкапсуляция;
наследование.
Под инкапсуляцией понимается скрытие полей объекта с целью обеспечения доступа к ним только посредством методов класса (т. е. скрытие деталей, несущественных для использования объекта). Инкапсуляция (объединение) означает сочетание данных и алгоритмов их обработки, в результате чего и данные, и процедуры во многом теряют самостоятельное значение.
Класс может иметь образованные от него подклассы. При построении подклассов осуществляется наследование данных и методов обработки объектов исходного класса.
Фактически объектно-ориентированное программирование можно рассматривать как модульное программирование нового уровня, когда вместо во многом случайного, механического объединения процедур и данных акцент делается на их смысловую связь.
Программа на объектно-ориентированном языке, решая некоторую задачу, по сути, описывает часть мира, относящуюся к этой задаче. Описание действительности в форме системы взаимодействующих объектов естественнее, чем в форме взаимодействующих процедур.
Существует язык с очень хорошей реализацией объектно- ориентированности, не являющийся надстройкой ни над каким другим языком. Это язык EIFFEL (1986), он является чистым языком объектно-ориентированного программирования и кроме того, повышает надежность программы путем использования «контрольных утверждений».
В 50-е годы был создан язык FORTRAN (от FORmula TRANslator — переводчик формул). Так же, как и первые вычислительные машины, этот язык предназначался, в основном, для проведения естественнонаучных и математических расчетов. В усовершенствованном виде этот язык сохранился до настоящего времени. Среди современных языков высокого уровня он является одним из наиболее используемых при проведении научных исследований.
После FORTRAN в 1957 году появился язык ALGOL (от ALGOrithmic Language — алгоритмический язык). Этот язык так же, как и FORTRAN, предназначался для решения научнотехнических задач. Кроме того, этот язык применялся как средство обучения основам программирования.
LISP (от LISt Processing – обработка списков), созданный в 1960 году Джоном Маккарти. Этот язык широко используется для обработки символьной информации и применяется для создания программного обеспечения, имитирующего деятельность человеческого мозга.
В середине 60-х годов разработан в качестве учебного языка язык BASIC (Beginners All-Purpose Symbolic Instruction Code).
PL/1 (Programming Language One) создан в 1967 году. По своим возможностям PL/1 значительно мощнее многих других языков (C, PASCAL).
В конце 60-х – начале 70-х гг. появился язык FORTH (FORTH — четвертый). Этот язык стал применяться в задачах управления различными системами после того, как его автор Чарльз Мур написал на нем программу, предназначенную для управления радиотелескопом Аризонской обсерватории.
Появившийся в 1971 году язык PASCAL был назван так в честь великого французского математика XVII века, изобретателя первой в мире арифметической машины Блеза Паскаля. Этот язык был создан швейцарским ученым, специалистом в области информатики Никлаусом Виртом.
На основе языка PASCAL в конце 70-х гг. был создан язык ADA, названный в честь математика Ады Лавлейс.
В настоящее время популярным среди программистов является язык С (Си). Данный язык был создан в лаборатории Bell в 1972 году и первоначально не рассматривался как массовый. Он планировался для замены ASSEMBLER, чтобы иметь возможность создавать столь же эффективные и компактные программы и в то же время не зависеть от конкретного типа процессора. На этом языке в 70-е годы написано множество прикладных и системных программ и ряд известных операционных систем (UNIX).
Еще один язык был создан в начале 70-х гг. группой специалистов Марсельского университета. Это язык PROLOG. Свое название он получил от слов «ПРОграммирование на языке ЛОГики». В основе этого языка лежат законы математической логики.
ML – (1973) система модулей, используемая преимущественно в языках программирования семейства ML, имеющая аппликативную семантику, иначе говоря, представляющая собой небольшой функциональный язык, оперирующий модулями. Является наиболее развитой системой модулей среди встречающихся в языках программирования, была реализована расширенная система полиморфной типизации, положившая начало типизированным языкам функционального программирования. Исторически ML расшифровывается как MetaLanguage (метаязык).
C++ (Cи++) — это объектно-ориентированное расширение языка С, созданное Бьярном Страуструпом в 1980 году.
JAVA (Джава, Ява). Этот язык был создан компанией Sun Microsystems (в последующем приобретённой компанией Oracle) в начале 90-х годов на основе C++, строго типизированный объектно-ориентированный язык программирования. Он призван упростить разработку приложений на основе C++ путем исключения из него всех низкоуровневых возможностей. Но главная особенность этого языка — компиляция не в машинный код, а в платформенно-независимый байт-код (каждая команда занимает один байт).
C# (Cи Шарп). В конце 90-х годов в компании Microsoft под руководством Андерса Хейльсберга был разработан язык C#. В нем воплотились лучшие идеи С и С++, а также достоинства.
В последние десятилетия в программировании возник и получил существенное развитие объектно-ориентированный подход. Это метод программирования, имитирующий реальную картину мира: информация, используемая для решения задачи, представляется в виде множества взаимодействующих объектов.
2. Классификация языков программирования
На сегодняшний день можно насчитать более 2 тыс. различных языков программирования и их модификаций, однако лишь отдельные получили широкое признание. Все языки программирования можно подразделить на две категории:
Процедурные
Непроцедурные
Процедурная, то есть алгоритмическая программа – это совокупность формальных предписаний, которые направлены на решение конкретных задач, которые необходимо выполнить ЭВМ.
Процедурный язык программирования предоставляет возможность программисту определять каждый шаг в процессе решения задачи. Особенность таких языков программирования состоит в том, что задачи разбиваются на шаги и решаются шаг за шагом. Используя процедурный язык, программист определяет языковые конструкции для выполнения последовательности алгоритмических шагов.
Программа на процедурном языке программирования состоит из последовательности операторов (инструкций), задающих процедуру решения задачи. Выполнение программы сводится к последовательному выполнению операторов с целью преобразования исходного состояния памяти, то есть значений исходных данных, в заключительное, то есть в результаты.
Непроцедурное программирование представляет противоположное использование методов (парадигму) разработки, то есть когда перед компьютером ставится задача в более или менее обобщённом виде, без формализованного алгоритма, который отдаётся на усмотрение машины.
Непроцедурные языки - современное направление системного программирования, позволяющее сконцентрировать внимание разработчика на описании целей и правил, а не на последовательности действий по их реализации (т.е. описывается «что делать» вместо «как делать»). Использование непроцедурного языка обеспечивает максимально возможную простоту и понятность программ для разработчика-технолога, перенося сложности процедурной реализации на системный уровень, что сокращает трудоемкость и сроки разработки, увеличивая надежность ПО.
Процедурные подразделяются на две категории:
Низкого уровня (машинно-ориентированные)
Высокого уровня
А в первую очередь они направлены на машину или человека.
Первым компьютерам приходилось программировать двоичными машинными кодами. Однако программировать таким образом – достаточно трудоемкая и сложная задача.
Для упрощения этой задачи стали появляться языки программирования низкого уровня, которые позволяли задавать машинные команды в более понятном для человека виде.
Для преобразования их в двоичный код были созданы специальные программы – трансляторы.
Трансляторы в свою очередь делятся на:
Компиляторы
Интерпретаторы
Что делают компиляторы? Они превращают текст программы в машинный код, который понятен той или иной машине, для которой был написан этот код, его можно сохранять и затем использовать уже без компиляторов (таким примером могут послужить исполняемые файлы с расширением *exe)
А интерпретаторы в свою очередь превращают часть программы в машинный код, затем выполняют, а уже после этого переходят к следующей части и в таком случае при выполнении программы интерпретатор используется каждый раз.
Низкоуровневые языки предназначены на определенные архитектуры и учитывают их особенности. Это следующий уровень после машинного кода. Они следуют конкретным указаниям, которые исходят от процессора. И работать с такими языками тяжело, однако созданные с их помощью программы (в большинстве случаев это либо системные программы, либо драйверы для устройств) занимают меньше места в памяти и работают довольно быстро, поскольку разработчик получает доступ ко всем возможностям процессора.
Высокоуровневые языки более понятны для человека, чем для компьютера и программировать соответственно на них гораздо проще и удобнее. В таких языках не учитываются особенности каких-то определенных процессоров и программы, написанные на таком языке, легко переносятся с одной платформы на другую (являются кроссплатформенными), для этого достаточно перекомпилировать программу под определенную компьютерную архитектурную и операционную систему. Программы, разработанные на таких языках, программируются гораздо проще и ошибок допускается меньше. А время разработки программ на таких языках сокращается, что особенно важно при работе над большими программными проектами.
Непроцедурные языки включают в себя две основные языковые группы:
Объектно-ориентированные
Декларативные
Объектно-ориентированные состоят из ряда независимых объектов, которые должны функционировать как отдельные компьютеры. С помощью таких блоков возможно решать задачи, не вникая во «внутреннюю суть» их работы.
Основными свойствами объектно-ориентированного программирования являются:
Инкапсуляция
Наследование
Полиморфизм
Инкапсуляция – это описание объектов как типов данных (то есть классов) имеющих общие поля и методы
Наследование – это действие подразумевает создание новых классов на основе тех, которые уже имеются. Класс-потомок обладает такими свойствами как у класса-родителя и дополняет их своими собственными возможностями.
Полиморфизм – это возможность ссылаться на любую общую черту иерархии классов как на наиболее общий класс-родитель.
А с декларативным языком работа подразумевает установление взаимосвязанности между исходными информационными структурами и свойствами итогового результата. Декларативные языки программирования – это такие языки программирования высокого уровня, в которых операторы представляют собой объявления или высказывания в символьной логике. Примером таких языков являются языки логического программирования. В декларативном языке программирования не существует понятия «команда», а программист не создает алгоритмы. Характерной особенностью декларативных языков программирования является их декларативная семантика. Концепция, взятая за основу декларативной семантики, заключается в том, что смысл каждого оператора не зависит от того, как этот оператор используется в программе. В сравнении с семантикой императивных языков, декларативная семантика намного проще, что можно рассматривать как преимущество декларативных языков перед императивными.
Декларативные языки в свою очередь подразделяются на два семейства:
Логические
Функциональные
Программирование логическое – описывает проблемы в виде фактов и формул, а система сама решает их с помощью механизмов логического вывода.
В программах, которые основаны на языках логического программирования соответствующие действия выполняются только в том случае, когда имеются необходимые разрешающие условия на вывод новых фактов из уже имеющихся фактов согласно заданным правилам логики.
Логическое программирование основано на математической логике