Файл: Обзор языков программирования высокого уровня(Теоретические основы языков программирования высокого уровня ).pdf
Добавлен: 20.05.2023
Просмотров: 205
Скачиваний: 2
Бьерн Страуструп высвободил объектно-ориентированный потенциал С путем перенесения возможностей классов Simula 67 в С. Первоначально новый язык носил имя «С с классами» и только потом стал называться C++. Язык C++ достиг популярности, будучи разработанным в Bell Labs, позже он был перенесен в другие индустрии и корпорации. Сегодня это один из наиболее популярных языков программирования в мире. C++ наследует как хорошие, так и плохие стороны С.
В книге «Дизайн и эволюция C++» Бьёрн Страуструп описывает принципы, которых он придерживался при проектировании C++. Эти принципы объясняют, почему C++ именно такой, какой он есть. Некоторые из них:
- получить универсальный язык со статическими типами данных, эффективностью и переносимостью языка C;
- непосредственно и всесторонне поддерживать множество стилей программирования, в том числе процедурное программирование, абстракцию данных, объектно-ориентированное программирование и обобщённое программирование;
- дать программисту свободу выбора, даже если это даст ему возможность выбирать неправильно;
- максимально сохранить совместимость с C, тем самым делая возможным лёгкий переход от программирования на C;
- избежать разночтений между C и C++: любая конструкция, допустимая в обоих языках, должна в каждом из них обозначать одно и то же и приводить к одному и тому же поведению программы;
- избегать особенностей, которые зависят от платформы или не являются универсальными;
- «не платить за то, что не используется» — никакое языковое средство не должно приводить к снижению производительности программ, не использующих его;
- не требовать слишком усложнённой среды программирования [12, с. 17].
В языке С++ полностью поддерживаются принципы объектно-ориентированного программирования, включая три кита, на которых оно стоит: инкапсуляцию, наследование и полиморфизм. Инкапсуляция в С++ поддерживается посредством создания нестандартных (пользовательских) типов данных, называемых классами. Язык С++ поддерживает наследование. Это значит, что можно объявить новый тип данных (класс), который является расширением существующего.
Итак, хотя язык программирования С++ справедливо называют продолжением С и любая работоспособная программа на языке С будет поддерживаться компилятором С++, при переходе от С к С++ был сделан весьма существенный скачок. Язык С++ выигрывал от своего родства с языком С в течение многих лет, поскольку многие программисты обнаружили, что для того, чтобы в полной мере воспользоваться преимуществами языка С++, им нужно отказаться от некоторых своих прежних знаний и приобрести новые, а именно: изучить новый способ концептуальности и решения проблем программирования.
Заключение
Язык программирования служит двум взаимосвязанным целям: предоставляет программисту аппарат для задания действий, которые должны быть выполнены компьютером, и формирует концепции, которыми пользуется программист, продумывая будущий алгоритм. Первой цели идеально отвечает язык, который настолько «близок к ЭВМ», что всеми основными машинными объектами можно легко и просто оперировать достаточно очевидным для программиста образом. Второй же цели идеально отвечает язык, который настолько близок к решаемой задаче, что концепции ее решения можно выражать прямо и коротко. Основное различие между языками высокого и низкого уровней состоит в повышении эффективности труда программиста благодаря абстрагированию от конкретных деталей аппаратного обеспечения. Одна инструкция (оператор) языка высокого уровня соответствует целой последовательности из нескольких низкоуровневых инструкций, или команд.
Языки программирования могут классифицироваться по различным основаниям, общепринятой системы в этом вопросе не выработано.
Можно выделить два принципиально разных способа реализации языков программирования: компиляция и интерпретация. Распространено заблуждение, согласно которому способ реализации является присущим конкретному языку свойством. В действительности, это деление до определенной степени условно. Компилятор переводит программу на машинный язык сразу и целиком, создавая при этом отдельную программу, а интерпретатор переводит на машинный язык прямо во время исполнения программы.
Языки программирования ориентированы на те или иные парадигмы, и, соответственно, представляют специальные средства для удобства ее реализации. Можно выделить две важнейших парадигмы – императивную и декларативную.
Программа, написанная на императивном языке, явно указывает способ получения желаемого результата, не определяя при этом его ожидаемых свойств. Процедура получения желаемого результата имеет вид последовательности операций, поэтому для императивных языков характерно указание порядка выполнения операторов. В рамках императивной парадигмы выделяют структурное, процедурное, модульное и объектно-ориентированное программирование.
Декларативные языки – это класс языков программирования, программа на которых задаёт связи и отношения между объектами и величинами и не определяет последовательность выполнения действий. Декларативные языки могут реализовать функциональный или логический подход.
Для оценки популярности языков программирования за определенный период используется индекс TIOBE - индекс, оценивающий популярность языков программирования, основываясь на количестве поисковых запросов, содержащих название языка. Одни языки становятся более популярными, другие – утрачивают популярность. В 2017 году самыми популярными являются Java, C, C++.
Список использованных источников
- Бекман, И.Н. Компьютерные науки: курс лекций / И.Н. Бекман. – М.: МГУ, 2016. – 272 с.
- Бродский, Ю.И. Лекции по математическому и имитационному моделированию / Ю.И. Бродский. – М.: Директ-Медиа, 2015. – 240 с.
- Владимирцев, С. Java-учебник / С. Владимирцев // Изучаем Java [Электронный ресурс]. – Режим доступа: http://java-study.ru/java-uchebnik.html
- Городняя, Л.В. Парадигма программирования: курс лекций / Л.В. Городняя. – Новосибирск: РИЦ НГУ, 2015. – 206 с.
- Давыдова, Н.А. Программирование: учебное пособие / Н.А. Давыдова, Е.В. Боровская. – М.: БИНОМ, 2015. – 232 с.
- Джансен, П. Интервью про индекс TIOBE / П. Джансен // RSDN [Электронный ресурс]. – Режим доступа: http://rsdn.org/forum/philosophy/2315566.hot
- «Забытые» парадигмы программирования // Хабрахабр [Электронный ресурс]. – Режим доступа: https://habrahabr.ru/post/223253/
- Кудрявцева, И.А. Классификация парадигм программирования в контексте теоретического программирования / И.А. Кудрявцева // Известия Российского государственного педагогического университета им. А.И. Герцена. – 2015. - №173. – С. 78-88.
- Курсков, С.Ю. Введение в язык С / С.Ю. Курсков. – Тверь: ТГУ, 2012. – 406 с.
- Лавров, Д.Н. От императивного к объектно-ориентированному программированию вместе с Java и NetBeans: объектная декомпозиция и инкапсуляция / Д.Н. Лавров // Математические структуры и моделирование. – 2009. - №20. – С. 178-190.
- Максаков, С.А. Язык Pascal / С.А. Максаков. – СПб.: КомпАС, 2014. – 316 с.
- Страуструп, Б. Дизайн и эволюция С++ / Б.Страуструп. – СПб.: Питер, 2007. – 445 с.
- Терехов, А.А. Разработка компиляторов на платформе .NET: курс лекций / А.А.Терехов, Н. Вояковская, Д. Булычев, А. Москаль. – СПб.: СПбГУ, 2016. – 196 с.
- Фаткуллин, М.Р. Сравнительная характеристика сетевых языков программирования Java и Perl / М.Р. Фаткуллин, А.Ф. Антипин // Сборник научных статей «Ломоносовские чтения на Алтае», 2013. – С. 186-191
- Эккель, Б. Философия Java / Б. Эккель. – СПб.: Питер, 2016. – 1168 с.
- TIOBE Index for July 2017 // TIOBE [Электронный ресурс]. – Режим доступа: https://www.tiobe.com/tiobe-index/