Виды языков программирования
Оглавление
Введение
- Что такое язык программирования?
- Для чего нужны языки программирования?
- Виды-основная классификация
- Языки программирования низкого уровня
- Языки программирования высокого уровня
- О непроцедурных языках
- Декларативные языки
- Объектно-ориентированные языки
Заключение
Список литературы
Введение
Я задался вопросами, что такое язык программирования, сколько языков программирования есть в мире и чем они отличаются друг от друга, какие в информатике есть классификации или виды этих языков? В своей работе постараюсь разъяснить принципы, которые используются при выделении определённых видов языков программирования.
Что такое язык программирования?
Язык программирования — формальная знаковая система, предназначенная для описания алгоритмов в форме, которая удобна для исполнителя (например, компьютера). Язык программирования определяет набор лексических, синтаксических и семантических правил, используемых при составлении компьютерной программы. Он позволяет программисту точно определить то, на какие события будет реагировать компьютер, как будут храниться и передаваться данные, а также какие именно действия следует выполнять над этими при различных обстоятельствах.
Со времени создания первых программируемых машин человечество придумало уже более двух с половиной тысяч языков программирования. Каждый год их число пополняется новыми. Некоторыми языками умеет пользоваться только небольшое число их собственных разработчиков, другие становятся известны миллионам людей. Профессиональные программисты иногда применяют в своей работе более десятка разнообразных языков программирования.
Создатели языков по-разному толкуют понятие язык программирования. Среди принципов назначения, признаваемых большинством разработчиков, находятся следующие:
Функция: язык программирования предназначен для написания компьютерных программ, которые применяются для передачи компьютеру инструкций по выполнению того или иного вычислительного процесса и организации управления отдельными устройствами.
Задача: язык программирования отличается от естественных языков тем, что предназначен для передачи команд и данных от человека компьютеру, в то время как естественные языки используются лишь для общения людей между собой. В принципе, можно обобщить определение «языков программирования» — это способ передачи команд, приказов, чёткого руководства к действию; тогда как человеческие языки служат также для обмена информацией.
Исполнение: язык программирования может использовать специальные конструкции для определения и манипулирования структурами данных и управления процессом вычислений.
Для чего нужны языки программирования?
Процесс работы компьютера заключается в выполнении программы, то есть набора вполне определённых команд во вполне определённом порядке. Машинный вид команды, состоящий из нулей и единиц, указывает, какое именно действие должен выполнить центральный процессор.
Значит, чтобы задать компьютеру последовательность действий, которые он должен выполнить, нужно задать последовательность двоичных кодов соответствующих команд. Программы в машинных кодах состоят из тысячи команд. Писать такие программы – занятие сложное и утомительное. Программист должен помнить комбинацию нулей и единиц двоичного кода каждой программы, а также двоичные коды адресов данных, используемых при её выполнении.
Гораздо проще написать программу на каком-нибудь языке, более близком к естественному человеческому языку, а работу по переводу этой программы в машинные коды поручить компьютеру. Так возникли языки, предназначенные специально для написания программ, — языки программирования.
Виды – основная классификация
Задумываясь, что такое языки программирования, программирующий человек должен понимать – существует их классификация. Все то же самое, как в обычном мире – у каждого народа свой способ общения. Аналогичным образом ситуация обстоит и с машинами.
В информатике есть множество классификаций (рисунок 1). Они могут быть основаны на технических свойствах, ярко выраженных особенностях или субъективном взгляде составителя.
Общепринятые случаи позволяют разбить все programming languages на два больших раздела:
процедурные;
непроцедурные.
О процедурных языках
Основная особенность языков процедурного программирования – их императивность, что означает создание четкого набора последовательных инструкций, которые должен поочередно выполнять компьютер. Парадигме императивности соответствуют такие главные характеристики:
Весь код программы состоит из набора команд или инструкций, которые выполняются вычислительной машиной последовательно в заданном порядке;
Данные, которые были получены в результате первых подсчетов, могут храниться и извлекаться из памяти в любое время и быть использованы.
Даже используемый синтаксис в таких языках является в некотором роде императивным – команды для выполнения похожи на приказы в обычной человеческой речи. Также важное место в процедурном программировании занимает использование подпрограмм, активное применение оператора присваивания, а также наличие составных выражений.
Исторически так сложилось, что процедурно ориентированные языки программирования начали появляться первыми и на них в значительной степени основывалось все дальнейшее развитие вычислительной техники. Именно поэтому можно смело говорить, что все первые языки программирования были именно процедурными.
В целом, процедурные языки – это интересная часть истории программирования.Они и сейчас довольно активно используются как в образовательных, так и прикладных целях.
Разделяются на два класса:
- низкого уровня (машинно-ориентированные);
- высокого уровня.
Языки программирования низкого уровня
Программирование на первых компьютерах происходило с помощью двоичных машинных кодов. Такое программирование довольно трудоемкое и тяжелое. Для упрощения процесса программирования разрабатывались языки программирования низкого уровня, которые позволяли задавать машинные команды в понятном для человека виде. Чтобы преобразовать их в двоичный код создавались специальные программы – трансляторы.
К языкам низкого уровня относится:
- программирование в машинных кодах;
- ассемблер;
- макроассемблер.
Языки низкого уровня ориентировались на определенный тип процессора и учитывали его особенности, поэтому для того, чтобы перенести программу, написанную на ассемблере, на другую аппаратную платформу её нужно было почти полностью переписать. Различия присутствовали также и в синтаксисе программ под разные компиляторы.
Языками низкого уровня пользуются преимущественно для написания небольших системных программ, драйверов устройств, модулей стыков с нестандартным оборудованием, программирования специализированных микропроцессоров, когда немаловажным является компактность, быстродействие и возможность прямого доступа к аппаратным ресурсам.
Языки программирования высокого уровня
В 1970-е годы разработчики создали первый высокоуровневый язык, многим известный Fortran, который используется и сейчас — в основном в научных разработках и вычислениях. В третьем и четвертом поколениях оформилось структурное программирование и появились функциональные языки: это, например, C, Pascal, Lisp, Scala, Erlang, F#, Haskell и другие.
Язык высокого уровня выполняет роль посредника между человеком и компьютером, позволяя человеку общаться с компьютером более привычным для человека способом. Такой language быстрее осваивается программистами. Особенности конкретных процессоров не будут учитываться. Это значит, что можно с легкостью переносить софт с одной ОС на другую.
Важно: для реализации поставленной задачи принято задействовать утилиты под названием «трансляторы».Часто такой язык помогает выбрать правильный метод решения задачи.
Перед тем как писать программу на языке высокого уровня, программист должен составить алгоритм решения задачи, то есть пошаговый план действий, который нужно выполнить для решения этой задачи. Поэтому языки, требующие предварительного составления алгоритма, часто называют алгоритмическими языками.
Недостаток некоторых языков высокого уровня состоит в большом размере программ по сравнению с программами на языках низкого уровня. В то же время текст программ на языке высокого уровня гораздо меньше, но в байтах код, написанный на ассемблере, будет более компактным.
Поэтому языки высокого уровня преимущественно используют для создания программного обеспечения для компьютеров и вычислительных устройств с большим объемом памяти. Языки же низкого уровня используются для написания программ к устройств, для которых критичным является размер программы.
Языки высокого уровня делятся:
- универсальные
- проблемно-ориентированные.
Наиболее распространенные универсальные языки C#, C++, Basic, Pascal (Delphi) используются для разработки Windows-приложений. Большой вклад в программирование на начальных этапах внесли языки Fortran, Cobol, Algol, C и др.
Языки программирования для разработки Интернет-приложений скорее относятся к универсальным языкам. К ним относятся современные версии C#, Basic, J#.
Проблемно-ориентированными языками, которые используются на Интернет-серверах и клиентских Интернет-приложениях, являются PHP, Perl, JavaScript, VBScript.
Объектно-ориентированные языки стали дальнейшим уровнем развития процедурных языков, основной концепцией которых есть совокупность программных объектов. Написание программы на языке представляется в виде последовательности создания экземпляров объектов и использование их методов. К ним относятся из первых языков Simula и SmallTalk, далее C++, Java.
О непроцедурных языках
Непроцедурные языки — это языки, при использовании которых в программе в явном виде указывается, какими свойствами должен обладать результат, но не говорится, каким способом он должен быть получен, компьютер уже на своей стороне самостоятельно выстраивает необходимый алгоритм выполнения. Непроцедурные языки программирования универсальны для использования в разных процессах, так как не требуют привязки к определённой архитектуре.
Для достижений этой цели применяются специальные переводчики-трансляторы. Их задача состоит либо в выполнении заданного программой действия, либо в преобразовании ее в файлы с данными в бинарной системе, которые уже выполняются компьютером по чётко обозначенному алгоритму. Такой тип кодирования не подразумевает составления программистом четкой пошаговой инструкции и считается более ориентированным на человека, так как он интуитивно более понятен и удобен.
Декларативные языки
Декларативные языки программирования — это языки программирования, в которых операторы представляют собой объявления или высказывания в символьной логике. Типичным примером таких языков являются языки логического программирования (языки, основанные на системе правил и фактов).
В свою очередь декларативные программы имеют свои структурные разновидности и делятся на логические и функциональные. Их различие состоит в том, что при логическом программировании задача описывается как совокупность факторов и формул (при этом компьютер самостоятельно выбирает для решения необходимые механизмы), а в функциональном программировании формулировка проблемы задается в виде определенных функций.
Первым языком логического программирования был язык Planner. В этом языке была заложена возможность автоматического вывода (получения) результата из данных и заданных правил путем перебора вариантов (совокупность которых называлась планом). Но самым известным языком логического программирования является ПРОЛОГ (Prolog).
В отличие от программ, составленных на языках процедурного типа, предписывающих последовательность шагов, которые должен выполнять компьютер для решения задачи, на ПРОЛОГе программист описывает факты, правила, отношения между ними, а также запросы по проблеме.Программа на языке ПРОЛОГ содержит две составные части: факты и правила. Факты представляют собой данные, с которыми оперирует программа, а совокупность фактов составляет базу данных ПРОЛОГа.
Основная операция, выполняемая над данными, — это операция сопоставления, называемая также операцией унификации или согласования. Правила состоят из заголовка и подцелей. Выполнение программы, написанной на ПРОЛОГе, начинается с запроса и состоит в доказательстве истинности некоторого логического утверждения в рамках заданной совокупности фактов и правил. Алгоритм этого доказательства (алгоритм логического вывода) и определяет принципы исполнения программы, написанной на ПРОЛОГе.
На сегодняшний день существует целый класс логических языков; так, от языка Planner также произошли логические языки программирования QA-4, Popler, Conniver и QLISP. Языки программирования Mercury, Visual Prolog, Oz и Fril произошли уже от языка Prolog.
Первым языком функционального типа является язык ЛИСП. ЛИСП определяется как язык программирования функционального типа, в основу которого положен метод Х-исчисления.
Программа, написанная на функциональном языке, состоит из неупорядоченного набора уравнений, определяющих функции и значения, которые задаются как функции от других значений. Программы и данные ЛИСПа существуют в форме символьных выражений, которые хранятся в виде списковых структур. ЛИСП имеет дело с двумя видами объектов: атомами и списками.
Атомы — это символы, используемые для идентификации объектов, которые могут быть числовыми и символьными (понятия, материалы, люди и т.д.). Список — это последовательность из нуля или более элементов, заключенных в круглые скобки, каждый из которых является либо атомом, либо списком. Над списками выполняются три примитивные операции: извлечение первого элемента списка; получение оставшейся части списка после удаления первого элемента; объединение первого элемента списка L и оставшейся части списка Q.Тексты программ на функциональных языках программирования только описывают способ решения задачи, но не предписывают последовательность действий для решения.В качестве основных свойств функциональных языков программирования обычно рассматриваются следующие: краткость и простота; строгая типизация; модульность; функции — объекты вычисления; чистота (отсутствие побочных эффектов); отложенные (ленивые) вычисления.
Кроме ЛИСПа, к функциональным языкам относят РЕФАЛ (разработан в середине 60-х годов В.Ф. Турчиным в МГУ им. М.В. Ломоносова), Haskell, Clean, ML, OCaml, F#.
Объектно-ориентированные языки
Объектно-ориентированные языки — это языки, в которых понятия процедуры и данных, используемых в обычных системах программирования, заменены понятием "объект".
Первый объектно-ориентированный язык Simula -67 был создан как средство моделирования работы различных приборов и механизмов. Большинство современных языков программирования – объектно-ориентированные. Среди них последние версии языка Turbo - Pascal , C ++, Ada и другие.
В настоящее время широко используются системы визуального программирования Visual Basic , Visual C ++, Delphi и другие. Они позволяют создавать сложные прикладные пакеты, обладающие простым и удобным пользовательским интерфейсом.
Языком объектно-ориентированного программирования в чистом виде считается SmallTalk, возможности объектно-ориентированного программирования заложены также в Java, C++, Delphi.
Объектно-ориентированное программирование или сокращённо называемое ООП — это подход, который помогает разрабатывать сложные приложения так, чтобы их можно было в течение длительного времени легко поддерживать и масштабировать.
В процедурном программировании мы создаём структуры данных — числа, строки, массивы, а затем обрабатываем эти структуры специальными функциями, которые манипулируют этими данными.
В мире ООП мы храним структуры данных и функции, их обрабатывающие, в одной сущности, называемой объектом. Вместо того, чтобы обработать данные какой-либо функцией, мы загружаем эти данные в объект, а затем вызываем его методы для манипулирования ими и получаем желаемый результат. Это отличается от процедурного программирования, когда мы, в первую очередь, взаимодействуем с функциями и глобальными переменными.
Объектно-ориентированное программирование имеет несколько преимуществ перед процедурным программированием:
ООП быстрее и проще в исполнении — позволяет мыслить категориями повседневных объектов, такие реальные понятия как Person, Car или Animal рассматриваются как объекты. Это во многом упрощает задачу, когда вы только начинаете проектировать свое приложение, так как назначение каждого объекта, так и цель отношений между объектами, будут логически понятны.
Легче писать модульные программы — ООП предполагает написание модулей. Модульность упрощает обслуживание, изменение и отладку кода. Модульная структура позволяет вносить независимые изменения в разные части программы, сводя к минимуму риск ошибок программирования.
ООП позволяет создавать полностью повторно используемые приложения с меньшим количеством кода и более коротким временем разработки.
Со временем вы даже можете создать целую библиотеку такого рода модулей, которые в дальнейшем сможете использовать во многих приложениях. С помощью ООП становится сравнительно легче писать такой код, так как структуры данных и функции инкапсулируются в единственный объект, который можно использовать любое количество раз.
Заключение
В целом, это основные виды языков программирования и с их помощью можно легко реализовывать любые задумки программиста – от создания интернет-магазина и до написания замысловатой игры на мобильник.
Несмотря на огромное их количество, в разработке сегодня используется не так много. Языки программирования со временем устаревают, так как технологии развиваются и становятся все более совершенными и быстрыми. Это нормальный процесс, который наметился еще в шестидесятых-семидесятых годах прошлого столетия.
Мир IT огромен, и потому в нем столько языков. Новичок может выбрать актуальный в той сфере, которая ему близка и интересна.
Например, для анализа данных применяются Python и R, «короли» веб-разработки — PHP и JavaScript, работа в банковских системах и госструктурах не обойдется без Java, ААА-игры создаются на C++ и C# и так далее.
Наиболее перспективные сферы разработки программного обеспечения:
- искусственный интеллект;
- «интернет вещей» и встраиваемые системы;
- Data Science;
- мобильные приложения;
- блокчейн.
Десять самых популярных языков:
- C++.
- Python.
- Visual Basic.
- PHP.
- Delphi.
- Java.
- JavaScript.
- Ruby.
- ActionScript.
- Nemerle.
У каждого из них есть свои характерные особенности, недостатки и преимущества.
Список используемых источников
- Босова Л.Л., Информатика: учебник для 8 класса / Л.Л. Босова, А.Ю. Босова. - М. : БИНОМ. Лаборатория знаний, 2014. - 160с
- Босова Л.Л., Информатика: учебник для 9 класса / Л.Л. Босова, А.Ю. Босова. - М. : БИНОМ. Лаборатория знаний, 2017. - 160с
- Интернет-страница: https://ru.wikipedia.org
- Языки программирования и их классификация
- Патрикеев Ю. Н. «Объектно-ориентированное проектирование»
- Х.М. Дейтел. Как программировать на С. – М.: «Бином», 2000 г.