Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

С) По типу используемого транслятора ЯП делятся на интерпретируемые и компилируемые




Классификация ЯП по разным критериям

Опишем использованные здесь термины.

Критерии классификации языков программирования (ЯП)

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

Для подготовки докладов и рефератов

1. Апресян Ю.Д. Экспериментальная, прикладная и теоретическая лингвистика: обратные связи // Festschrift V. Ju. Rozencveig zum 80.Geburtstag. Wien, 1992. S. 5-27 (Wiener-Slawistische Almanach. Sb 33) (МК-Кс)

2. Зализняк А.А. Лингвистические аргументы за и против подлинности «Слова о полку Игореве» // Зализняк А.А. «Слово о полку Игореве»: взгляд лингвиста. М.: Языки слав. культуры, 2004. §§ 1—2, 36. С. 5—13, 163—173. (Б)

3. Калинина Н.А. Лингвистическая экспертиза законопроектов: Опыт, проблемы и перспективы. М.: Известия, 1997. Гл. 2. С. 17 — 34. (МК-Кс)

4. Лермитт Ф., Дюкарн Б. Восстановление больных с афазией // Афазия и восстановительное обучение: Тексты. М.: Изд. Моск. ун-та, 1983. С. 189-198.

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

Любой язык программирования имеет свой:

− набор служебных слов (лексику),

− правила их использования в структуре программы (синтаксис) и

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

 

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

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

b. по используемой парадигме программирования,

c. по типу используемого транслятора,

d. по уровню абстракции,

e. по способу выполнения процессов.

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

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

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

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

Проклассифицируем языки программирования по разным критериям

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

a. модели Тьюринга,

b. Лямбда-исчислению,

c. комбинаторной логике и т.д.

 

Машина Тьюринга

(для ознакомления)

Машина Тьюринга — это бесконечная магнитная лента (вспомните года, когда работал Тьюринг — магнитная лента тогда была очень прогрессивным устройством). Лента разбита на логические ячейки — последовательные отрезки ленты, на которые можно записать тот или иной сигнал (к примеру — ASCII символы).

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

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

Программа на машине Тьюринга задаётся в виде таблицы переходов: если символ А — то сдвиг влево, если Б — сдвиг вправо, если С — записать в ячейку D и сдвинуться влево, если E — то остановить работу (и так далее, пока символы не кончатся).

Одно из главных определений, задаваемых машиной Тьюринга — это контекст исполнения:

Контекст выполнения программы — совокупность всех данных, определяющих её поведение.

Как видно по примеру машины Тьюринга, ЯП манипулируют не данными, а процессом преобразования данных. Но сами правила для обработки данных как-то надо определять и представлять.

На данный момент найдено два способа задания правил для обработки — это

1. императивная и

2. декларативная

формы записи правил.

 

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


 

 


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

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

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

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

Декларативное програм мирование — это парадигма программирования, при которой не задается пошаговый алгоритм решения задачи (не определяется "как" решить задачу), а некоторым образом описывается, "что" требуется получить в качестве результата. Механизм обработки сопоставления с образцом декларативных утверждений сразу реализован в устройстве языка.

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


Объектно-ориентированное программирование – это парадигма, в основе которой лежит понятие объекта — некоторого процесса, явления или субъекта, которое объединяет в себе данные об объекте, его свойства и выполняемые объектом действия.

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

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

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

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

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

Whitespace (англ. пробел) — эзотерический язык программирования, созданный Э. Брэди и К. Моррисом. Он был выпущен в свет 1 апреля 2003 года.

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

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

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

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

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

Необходимо грамотно выбирать средства для решения каждой конкретной проблемы!

Компилятор переводит исходный текст программы с языка программирования высокого уровня в двоичные коды инструкций процессора.

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

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

Разделение на компилируемые и интерпретируемые языки является условным.

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

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

Преимущества компилятора и интерпретатора

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

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

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

Среды проектирования

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

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

Визуальное программирование — способ создания программы для ЭВМ путём манипулирования графическими объектами вместо написания её текста (Delphi, VisualBasic).

Компилятор или интерпретатор языка программирования выступает как составная часть среды проектирования. Сама программа наряду с конструкциями, предусмотренными стандартом, как правило, использует библиотечные функции и классы, предоставляемые средой проектирования. Так, интегрированная среда разработки VisualStudio.NET содержит библиотеку классов MFC (Microsoft Foundation Classes), значительно упрощающую процесс разработки приложений, использующих оконный интерфейс.

Интегрированная среда проектирования VisualStudio.NET позволяет создавать и компилировать приложения на языках C++, C#, Visual Basic и VisualJ.

Для разработки приложений на языке С++ предназначается также среда CBuilder.

Для проектирования приложений на языке Object Pascal используется интегрированная среда проектирования Delphi.

Наиболее удобной средой разработки программ на языке Java является интегрированная среда проектирования JBuilder.




Поделиться с друзьями:


Дата добавления: 2014-01-13; Просмотров: 775; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.027 сек.