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

"Современные языки программирования"

Содержание:

Введение

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

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

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

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

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

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

– Исполнение: язык программирования может использовать специальные конструкции для определения и манипуляции структурами данных и управления процессом вычислений.[1]

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

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

1. Современные языки программирования

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

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

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

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

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

По данным компании «TIOBE Software BV» десять самых языков программирования популярных языков программирования на декабрь 2010 года представлены в таблице 1.

Таблица 1 Рейтинг языков программирования [2]

Язык программирования

Рейтинг

Последний релиз

1

Java

17.999 %

12.11.2010

2

C

16.076 %

16.12.2010

3

C++

9.014 %

22.07.2009

4

PHP

7.511 %

22.06.2010

5

C#

6.687 %

12.04.2010

6

Python

6.482 %

04.07.2010

7

Visual Basic

5.118 %

12.04.2010

8

Objective C

3.242 %

28.08.2009

9

Perl

2.331 %

12.04.2010

1

Delphi

2.171 %

04.08.2009

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

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

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

Рассмотрим эти языки программирования с нескольких основных позиций:

Какие парадигмы Сравнение языков программирования программирования наиболее популярны в современных языках.

Какие виды трансляторов применяются.

Какие виды типизации используются.

2. Парадигмы программирования

Парадигма (от греч. παράδειγμα, «пример, модель, образец») – набор теорий, стандартов и методов, которые совместно представляют собой способ организации научного знания.

Парадигма программирования – это совокупность идей и понятий, определяющая стиль написания программ.

Парадигма программирования – модель или подход к решению проблемы.

Парадигма, в Парадигма программирования – модель или подход к решению проблемы.

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

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

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

рассматривать программу как набор взаимодействующих объектов.

Важно отметить, Парадигма программирования – модель или подход к решению проблемы.

что парадигма Парадигма программирования – модель или подход к решению проблемы.

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

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

На сегодняшний день Парадигма программирования – модель или подход к решению проблемы.

самые известные Парадигма программирования – модель или подход к решению проблемы.

модели программирования:

– Императивная Парадигма программирования – модель или подход к решению проблемы.

Процедурное программирование

– Декларативная Парадигма программирования – модель или подход к решению проблемы.

Функциональное Парадигма программирования – модель или подход к решению проблемы.

программирование

Логическое программирование

– Структурная

Модульное программирование

Объектно-ориентированное Парадигма программирования – модель или подход к решению проблемы.

программирование

– Метапрограммирование

Генерация кода

Самомодифицирующийся код

Рассмотрим эти модели подробнее.

2.1 Императивная модель

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

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

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

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

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

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

2.2 Декларативная модель

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

принципом при котором описывается каково нечто, а не как его создать.

Есть несколько подходов реализующих декларативную модель программирования:

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

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

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

функции от понятия «функции» в императивном программировании заключается в том, что императивные функции могут опираться не только на аргументы, но и на состояние внешних по отношению к функции переменных, а также иметь побочные эффекты и менять состояние внешних переменных.[3]

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

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

фактов и правил вывода, основанных на формальных исчислениях. Логическое программирование основано на теории и аппарате математической логики с использованием математических принципов резолюций.[4]

2.3 Структурная модель

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

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

с данной парадигмой:

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

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

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

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

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

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

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

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

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

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

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

Понятие «класс» вычислительной системы подразумевает некоторое поведение и способ представления. Понятие «объект» подразумевает нечто, что обладает определённым поведением и способом вычислительной системы представления.[5]

2.4 Метапрограммирование

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

Есть несколько подходов реализующих модель метапрограммирования:

Генерация кода – при этом подходе код программы не пишется вручную, а создается автоматически программой-генератором на основе другой, более простой программы. Реализуется двумя основными методами:

Шаблоны. Решают задачу, Personality disorders are a class of mental disorders characterized by enduring maladaptive patterns of behavior, cognition, and inner experience, exhibited across many contexts and deviating markedly from those accepted by the individual's culture. These patterns develop early, are inflexible, and are associated with significant distress or disability.[1]The definitions may vary somewhat, according to source.если соблюдение «правил» сводится к вставке в программу повторяющихся (или почти повторяющихся) кусков кода. Помимо этого, обладают еще Personality disorders are a class of mental disorders characterized by enduring maladaptive patterns of behavior, cognition, and inner experience, exhibited across many contexts and deviating markedly from those accepted by the individual's culture. These patterns develop early, are inflexible, and are associated with significant distress or disability.[1]The definitions may vary somewhat, according to source.рядом достоинств: например, помогают повторному использованию.

Внешне-языковые средства. Применяются в случаях, если простых средств вроде шаблонов недостаточно. Язык Personality disorders are a class of mental disorders characterized by enduring maladaptive patterns of behavior, cognition, and inner experience, exhibited across many contexts and deviating markedly from those accepted by the individual's culture. These patterns develop early, are inflexible, and are associated with significant distress or disability.[1]The definitions may vary somewhat, according to source. генератора составляется так, чтобы автоматически или с минимальными усилиями со стороны программиста реализовывать правила Personality disorders are a class of mental disorders characterized by enduring maladaptive patterns of behavior, cognition, and inner experience, exhibited across many contexts and deviating markedly from those accepted by the individual's culture. These patterns develop early, are inflexible, and are associated with significant distress or disability.[1]The definitions may vary somewhat, according to source. парадигмы или необходимые специальные функции. Фактически, это – более высокоуровневый язык программирования, а генератор – не что иное , Personality disorders are a class of mental disorders characterized by enduring maladaptive patterns of behavior, cognition, and inner experience, exhibited across many contexts and deviating markedly from those accepted by the individual's culture. These patterns develop early, are inflexible, and are associated with significant distress or disability.[1]The definitions may vary somewhat, according to source. как транслятор. Генераторы пишутся, как правило, для создания специализированных программ, в которых очень значительная часть стереотипна, либо Personality disorders are a class of mental disorders characterized by enduring maladaptive patterns of behavior, cognition, and inner experience, exhibited across many contexts and deviating markedly from those accepted by the individual's culture. These patterns develop early, are inflexible, and are associated with significant distress or disability.[1]The definitions may vary somewhat, according to source. для реализации сложных парадигм.[6]

Основные парадигмы и подходы к решению задач в современных языках программирования представлены в таблице 2.

Таблица 2 Парадигмы и подходы языков программирования [2]

Язык программирования

Парадигмы программирования

Основные подходы программирования

Java

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

структурная

объектно-ориентированный

C

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

процедурный

C++

мультипарадигмальный

метапрограммирование

процедурный

объектно-ориентированный

PHP

мультипарадигмальный

процедурный

объектно-ориентированный

C#

мультипарадигмальный

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

процедурный

объектно-ориентированный

Python

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

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

структурная

процедурный

функциональный

объектно-ориентированный

Visual Basic

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

структурная

процедурный

объектно-ориентированный

Objective C

мультипарадигмальный

процедурный

объектно-ориентированный

Perl

мультипарадигмальный

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

функциональный

объектно-ориентированный

Delphi

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

структурная

процедурный

объектно-ориентированный

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

Использование почти всеми языками объектно-ориентированного подхода наряду с «классическим» процедурным, обусловлено возрастающей сложностью современных задач. Создание больших распределенных систем просто не мыслимо без создания структурной модели, Personality disorders are a class of mental disorders characterized by enduring maladaptive patterns of behavior, cognition, and inner experience, exhibited across many contexts and deviating markedly from those accepted by the individual's culture. These patterns develop early, are inflexible, and are associated with significant distress or disability.[1]The definitions may vary somewhat, according to source .а работа с объектами, в любых их проявлениях, значительно облегчает разработку и отладку таких систем.

3. Трансляторы

Поскольку текст, записанный на языке программирования, непонятен компьютеру, то требуется перевести его на машинный код. Такой перевод программы с языка программирования Язык процессора (устройства, машины) называется машинным языком, машинным кодом. Код на машинном языке исполняется процессором. Обычно, машинный язык — язык низкого уровня, но существуют процессоры, использующие языки высокого уровня (например, iAPX-432[5]). Однако, такие процессоры не получили распространения в силу своей сложности и дороговизны. на язык машинных кодов называется трансляцией, а выполняется она специальными программами – трансляторами.

Транслятор – обслуживающая программа, преобразующая исходную программу, предоставленную на входном языке программирования, в рабочую программу, Язык процессора (устройства, машины) называется машинным языком, машинным кодом. Код на машинном языке исполняется процессором. Обычно, машинный язык — язык низкого уровня, но существуют процессоры, использующие языки высокого уровня (например, iAPX-432[5]). Однако, такие процессоры не получили распространения в силу своей сложности и дороговизны. представленную на объектном языке.

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

3.1 Компилятор

Компилятор – это обслуживающая программа обеспечивает, выполняющая трансляцию на машинный язык программы, записанной на исходном языке программирования. Компилятор обеспечивает обеспечивает преобразование программы с одного языка на другой (чаще всего, в язык конкретного компьютера). Вместе с тем, команды исходного языка значительно отличаются по организации и мощности от команд машинного языка. Существуют обеспечивает языки, в которых одна команда исходного языка транслируется в 7–10 машинных команд. Однако есть и такие языки, в обеспечивает которых каждой команде может соответствовать 100 и более машинных команд. Кроме того, в исходных языках достаточно часто используется строгая типизация данных, осуществляемая через их предварительное описание. Программирование может опираться не на кодирование алгоритма, а на тщательное обдумывание обеспечивает структур данных или классов. Процесс трансляции с таких языков обычно называется компиляцией, а исходные языки обычно относятся к языкам программирования высокого уровня (или высокоуровневым языкам).[7]

3.2 Интерпретатор

Интерпретатор – программа обеспечивает или устройство, осуществляющее пооператорную трансляцию и выполнение исходной программы. Интерпретатор не порождает на выходе программу на машинном языке. Распознав команду исходного языка, он тут же выполняет ее. Простой интерпретатор – анализирует и тут же выполняет (собственно интерпретация) программу Недостаток покомандно (или построчно), по мере поступления исходного кода на вход интерпретатора. Достоинством такого подхода является мгновенная реакция. Недостаток – такой интерпретатор обнаруживает ошибки в тексте программы только при попытке выполнения команды (или строки) с ошибкой. Интерпретатор компилирующего типа – это система из компилятора, переводящего исходный код программы в промежуточное представление, например, Personality disorders are a class of mental disorders characterized by enduring maladaptive patterns of behavior, cognition, and inner experience, exhibited across many contexts and deviating markedly from those accepted by the individual's culture. These patterns develop early, are inflexible, and are associated with significant distress or disability.[1]The definitions may vary somewhat, according to source. Недостаток в байт-код или p-код, и собственно интерпретатора, который выполняет полученный промежуточный код (так называемая виртуальная машина). Достоинством таких систем является бо́льшее быстродействие выполнения программ (за счёт выноса анализа исходного кода в отдельный, разовый проход, и Personality disorders are a class of mental disorders characterized by enduring maladaptive patterns of behavior, cognition, and inner experience, exhibited across many contexts and deviating markedly from those accepted by the individual's culture. These patterns develop early, are inflexible, and are associated with significant distress or disability.[1]The definitions may vary somewhat, according to source. минимизации этого анализа в интерпретаторе). Недостатки – большее требование к ресурсам и требование на корректность исходного кода.[7]

Достоинства интерпретаторов:

– Большая переносимость интерпретируемых программ – программа будет работать на любой платформе, на которой есть Personality disorders are a class of mental disorders characterized by enduring maladaptive patterns of behavior, cognition, and inner experience, exhibited across many contexts and deviating markedly from those accepted by the individual's culture. These patterns develop early, are inflexible, and are associated with significant distress or disability.[1]The definitions may vary somewhat, according to source.соответствующий интерпретатор. Как правило, более совершенные и наглядные средства диагностики ошибок в исходных кодах.

– Упрощение отладки исходных кодов программ. Personality disorders are a class of mental disorders characterized by enduring maladaptive patterns of behavior, cognition, and inner experience, exhibited across many contexts and deviating markedly from those accepted by the individual's culture. These patterns develop early, are inflexible, and are associated with significant distress or disability.[1]The definitions may vary somewhat, according to source.Интерпретатор позволяет начать обработку данных после написания Personality disorders are a class of mental disorders characterized by enduring maladaptive patterns of behavior, cognition, and inner experience, exhibited across many contexts and deviating markedly from those accepted by the individual's culture. These patterns develop early, are inflexible, and are associated with significant distress or disability.[1]The definitions may vary somewhat, according to source.даже одной команды.

– Меньшие размеры Personality disorders are a class of mental disorders characterized by enduring maladaptive patterns of behavior, cognition, and inner experience, exhibited across many contexts and deviating markedly from those accepted by the individual's culture. These patterns develop early, are inflexible, and are associated with significant distress or disability.[1]The definitions may vary somewhat, according to source.кода по сравнению с машинным кодом, полученным после обычных компиляторов.

Недостатки интерпретаторов:

– Интерпретируемая программа Personality disorders are a class of mental disorders characterized by enduring maladaptive patterns of behavior, cognition, and inner experience, exhibited across many contexts and deviating markedly from those accepted by the individual's culture. These patterns develop early, are inflexible, and are associated with significant distress or disability.[1]The definitions may vary somewhat, according to source. не может выполняться отдельно без программы–интерпретатора. Сам интерпретатор при Personality disorders are a class of mental disorders characterized by enduring maladaptive patterns of behavior, cognition, and inner experience, exhibited across many contexts and deviating markedly from those accepted by the individual's culture. These patterns develop early, are inflexible, and are associated with significant distress or disability.[1]The definitions may vary somewhat, according to source.этом может быть не очень компактным.

– Интерпретируемая программа выполняется медленнее, поскольку промежуточный анализ исходного кода и планирование его выполнения требуют дополнительного времени в сравнении с непосредственным исполнением машинного кода, в Personality disorders are a class of mental disorders characterized by enduring maladaptive patterns of behavior, cognition, and inner experience, exhibited across many contexts and deviating markedly from those accepted by the individual's culture. These patterns develop early, are inflexible, and are associated with significant distress or disability.[1]The definitions may vary somewhat, according to source. который мог бы быть скомпилирован исходный код.

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

Виды трансляторов современных Personality disorders are a class of mental disorders characterized by enduring maladaptive patterns of behavior, cognition, and inner experience, exhibited across many contexts and deviating markedly from those accepted by the individual's culture. These patterns develop early, are inflexible, and are associated with significant distress or disability.[1]The definitions may vary somewhat, according to source. языков Практически отсутствует программирования представлены в таблице 3.

Таблица 3 Трансляторы Практически отсутствует современных языков программирования [2]

Язык программирования

Транслятор

Java

компиляция в байт-код интерпретатор

C

компилятор

C++

компилятор

PHP

компиляция в байт-код интерпретатор

C#

компиляция в MSIL-код

интерпретатор

Python

компиляция в байт-код интерпретатор

Visual Basic

компиляция в MSIL-код

интерпретатор,

компилятор

Objective C

компилятор

Perl

компиляция в байт-код интерпретатор

Delphi

компилятор

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

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

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

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

4. Типизация данных

Тип – относительно устойчивая и независимая совокупность элементов, которую можно выделить во всём рассматриваемом множестве.По одной из классификаций, языки программирования неформально делятся на сильно и слабо типизированные(англ. strongly and weakly typed), то есть обладающие сильной или слабой системой типов. Эти термины не являются однозначно трактуемыми, и чаще всего используются для указания на достоинства и недостатки конкретного языка. Существуют более конкретные понятия, которые и приводят к называнию тех или иных систем типов «сильными» или «слабыми».

Примечание: В русскоязычной литературе часто встречается некорректный перевод термина «strong typing» как «строгая типизация»; корректный вариант «сильная типизация» используется лишь при противопоставлении «слабой типизации». Следует иметь в виду, что использование термина «строгий» в отношении системы типов языка может вызвать путаницу со строгой семантикой вычислений языка (англ. strict evaluation).

Математически тип может быть определён двумя способами:

Множеством всех значений, принадлежащим типу.

Предикатной функцией, определяющей принадлежность объекта к данному типу.

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

По одной из классификаций, языки программирования неформально делятся на сильно и слабо типизированные(англ. strongly and weakly typed), то есть обладающие сильной или слабой системой типов. Эти термины не являются однозначно трактуемыми, и чаще всего используются для указания на достоинства и недостатки конкретного языка. Существуют более конкретные понятия, которые и приводят к называнию тех или иных систем типов «сильными» или «слабыми».

Примечание: В русскоязычной литературе часто встречается некорректный перевод термина «strong typing» как «строгая типизация»; корректный вариант «сильная типизация» используется лишь при противопоставлении «слабой типизации». Следует иметь в виду, что использование термина «строгий» в отношении системы типов языка может вызвать путаницу со строгой семантикой вычислений языка (англ. strict evaluation).

Типы данных различаются уже на нижних уровнях системы. Так, например, даже в Ассемблере х86 различаются типы «целое число» и «вещественное число». Это объясняется тем, что для чисел рассматриваемых типов отводятся различные объёмы памяти, используются различные регистры микропроцессора, а для операций с ними применяются различные команды Ассемблера и различные ядра микропроцессора.

В языках программирования типы данных не всегда строго соответствуют подобным типы данных математическим типам. Например, тип “целое число” большинства языков программирования не соответствует принятому в математике типу “целое число”, так как в математике указанный тип не имеет ограничений ни сверху, ни снизу, а в языках программирования эти ограничения есть. Как правило, в языках и системах имеется множество целых типов, отличающихся допустимым диапазоном значений (определяемым объёмом занимаемой памяти).[1]

Наиболее часто используемые типы данных:

Простые:

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

Целочисленный тип. Целое число со знаком и без знака.

Вещественный тип. Вещественное число с запятой и с плавающей точкой.В 1974 году Лисков и Зиллес (англ. Liskov and Zilles) назвали сильно типизированными те языки, в которых «при передаче объекта из вызывающей функции в вызываемую, тип этого объекта должен быть совместим с типом, определённым в вызываемой функции»[1]. Джексон писал: «В сильно типизированном языке всякая ячейка данных будет иметь уникальный тип и всякий процесс будет провозглашать свои требования по взаимосвязи в терминах этих типов»[2].

В статье Луки Карделли[en] «Полнотиповое программирование»[3], система типов называется «сильной», если она исключает возможность возникновения ошибки согласования типов времени выполнения. Иначе говоря, отсутствие непроконтролированных ошибок времени выполнения называетсятипобезопасностью; ранние работы Хоара называют это свойство безопасностью (англ. security).

Символьный тип. Хранит один символ в различных кодировках.

Множество.

The qualification is equivalent to a Level 1 or Level 2 (grade depending) Key Skills Qualification (in Scotland, the equivalent is a National 5). Some pupils may decide to take one or more GCSEs before or after they sit the others, and people may apply to take GCSEs at any point either internally through an institution or externally. A level 1 GCSE covers grades C-G (commonly referred by as the foundation tier) whereas a level 2 GCSE covers grades A*-C (commonly referred by as the higher tier). 5 level 2 GCSE's, including English and Maths, are generally required (as well as a B/A in the specific subject) to continue into the level 3 Advanced GCE level (A-Level) or equivalent level 3 qualifications.

The education systems of current and former British territories, such as Gibraltar,[1] Nigeria and South Africa, also offer the qualification, as supplied by the same examination boards. Other former British colonies, such as Singapore and Zimbabwe, continue to use the O-level qualification.[2] The international version of the GCSE is the IGCSE, which can be taken anywhere in the world, and which includes additional options relating to coursework and the language the qualification is pursued in. All subjects completed in the fifth of the European Baccalaureate are generally equivalent to the GCSEs subjects.

Prior education to GCSE level is generally required of pupils wishing to pursue A Level courses or the BTEC Extended Diploma and International Baccalaureate. GCSE exams were introduced as the compulsory school-leavers' examinations by the government of the United Kingdom. GCSE examinations are typically taken at the age of 16 but may be taken at any age.

Совпадает с обычным математическим понятием множества.

Логический тип. Принимает два значения ложь = 0 и истина = 1.

Указатель. Хранит адрес в памяти, указывающий на какую–либо информацию, как правило – указатель на переменную.

Составные (сложные):

Массив. Хранит индексированный набор элементов одного типа.

Строковый тип. Хранит строку Personality disorders are a class of mental disorders characterized by enduring maladaptive patterns of behavior, cognition, and inner experience, exhibited across many contexts and deviating markedly from those accepted by the individual's culture. These patterns develop early, are inflexible, and are associated with significant distress or disability.[1]The definitions may vary somewhat, according to source. символов.

Запись (структура). Набор различных элементов (полей), хранимый как единое целое.

Файловый тип. Хранит только однотипные значения, доступ к которым осуществляется только последовательно.

Класс, метакласс, интерфейс. Абстрактные Personality disorders are a class of mental disorders characterized by enduring maladaptive patterns of behavior, cognition, and inner experience, exhibited across many contexts and deviating markedly from those accepted by the individual's culture. These patterns develop early, are inflexible, and are associated with significant distress or disability.[1]The definitions may vary somewhat, according to source. типы­ данных в объектно–ориентированном программировании (ООП).

Как уже отмечалось ранее, любой тип данных в языках программирования определяет не только множество собственных значений, но и набор операций, способы хранения и присваивания значений. Типы переменных и параметров должны совпадать The qualification is equivalent to a Level 1 or Level 2 (grade depending) Key Skills Qualification (in Scotland, the equivalent is a National 5). Some pupils may decide to take one or more GCSEs before or after they sit the others, and people may apply to take GCSEs at any point either internally through an institution or externally. A level 1 GCSE covers grades C-G (commonly referred by as the foundation tier) whereas a level 2 GCSE covers grades A*-C (commonly referred by as the higher tier). 5 level 2 GCSE's, including English and Maths, are generally required (as well as a B/A in the specific subject) to continue into the level 3 Advanced GCE level (A-Level) or equivalent level 3 qualifications.

The education systems of current and former British territories, such as Gibraltar,[1] Nigeria and South Africa, also offer the qualification, as supplied by the same examination boards. Other former British colonies, such as Singapore and Zimbabwe, continue to use the O-level qualification.[2] The international version of the GCSE is the IGCSE, which can be taken anywhere in the world, and which includes additional options relating to coursework and the language the qualification is pursued in. All subjects completed in the fifth of the European Baccalaureate are generally equivalent to the GCSEs subjects.

Prior education to GCSE level is generally required of pupils wishing to pursue A Level courses or the BTEC Extended Diploma and International Baccalaureate. GCSE exams were introduced as the compulsory school-leavers' examinations by the government of the United Kingdom. GCSE examinations are typically taken at the age of 16 but may be taken at any age.

Строковый тип. Хранит строку символов.

Запись (структура). Набор различных элементов (полей), хранимый как единое целое.

Файловый тип. Хранит только однотипные значения, доступ к которым осуществляется только последовательно.

Класс, метакласс, интерфейс. Абстрактные типы­ данных в объектно–ориентированном программировании (ООП).

с присваиваемыми им Personality disorders are a class of mental disorders characterized by enduring maladaptive patterns of behavior, cognition, and inner experience, exhibited across many contexts and deviating markedly from those accepted by the individual's culture. These patterns develop early, are inflexible, and are associated with significant distress or disability.[1]The definitions may vary somewhat, according to source. значениями или вызываемыми для них функциями. Для обеспечения The qualification is equivalent to a Level 1 or Level 2 (grade depending) Key Skills Qualification (in Scotland, the equivalent is a National 5). Some pupils may decide to take one or more GCSEs before or after they sit the others, and people may apply to take GCSEs at any point either internally through an institution or externally. A level 1 GCSE covers grades C-G (commonly referred by as the foundation tier) whereas a level 2 GCSE covers grades A*-C (commonly referred by as the higher tier). 5 level 2 GCSE's, including English and Maths, are generally required (as well as a B/A in the specific subject) to continue into the level 3 Advanced GCE level (A-Level) or equivalent level 3 qualifications.

The education systems of current and former British territories, such as Gibraltar,[1] Nigeria and South Africa, also offer the qualification, as supplied by the same examination boards. Other former British colonies, such as Singapore and Zimbabwe, continue to use the O-level qualification.[2] The international version of the GCSE is the IGCSE, which can be taken anywhere in the world, and which includes additional options relating to coursework and the language the qualification is pursued in. All subjects completed in the fifth of the European Baccalaureate are generally equivalent to the GCSEs subjects.

Prior education to GCSE level is generally required of pupils wishing to pursue A Level courses or the BTEC Extended Diploma and International Baccalaureate. GCSE exams were introduced as the compulsory school-leavers' examinations by the government of the United Kingdom. GCSE examinations are typically taken at the age of 16 but may be taken at any age.

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

Существует два вида контроля типов:

Статическая типизация – при которой переменная, параметр подпрограммыThe qualification is equivalent to a Level 1 or Level 2 (grade depending) Key Skills Qualification (in Scotland, the equivalent is a National 5). Some pupils may decide to take one or more GCSEs before or after they sit the others, and people may apply to take GCSEs at any point either internally through an institution or externally. A level 1 GCSE covers grades C-G (commonly referred by as the foundation tier) whereas a level 2 GCSE covers grades A*-C (commonly referred by as the higher tier). 5 level 2 GCSE's, including English and Maths, are generally required (as well as a B/A in the specific subject) to continue into the level 3 Advanced GCE level (A-Level) or equivalent level 3 qualifications.The education systems of current and former British territories, such as Gibraltar,[1] Nigeria and South Africa, also offer the qualification, as supplied by the same examination boards. Other former British colonies, such as Singapore and Zimbabwe, continue to use the O-level qualification.[2] The international version of the GCSE is the IGCSE, which can be taken anywhere in the world, and which includes additional options relating to coursework and the language the qualification is pursued in. All subjects completed in the fifth of the European Baccalaureate are generally equivalent to the GCSEs subjects.Prior education to GCSE level is generally required of pupils wishing to pursue A Level courses or the BTEC Extended Diploma and International Baccalaureate. GCSE exams were introduced as the compulsory school-leavers' examinations by the government of the United Kingdom. GCSE examinations are typically taken at the age of 16 but may be taken at any age., возвращаемое значение функции связывается с типом в момент объявления и тип не может быть изменён позже. Переменная или параметр будут принимать, а функция возвращать значения только этого типа.

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

Строгая типизация -– The General Certificate of Secondary Education (GCSE) is an academically rigorous, internationally recognised qualification awarded in a specified subject, generally taken in a number of subjects by pupils in secondary education in England, Wales and Northern Ireland over two years (three years in certain schools). One of the main changes to previous educational qualifications in the United Kingdom was to allow pupils to complete coursework during their two years of study, which was marked by their teachers and contributed to their final examination grade. There has been a move recently from doing coursework and modular examinations for part of the course when pupils would take exams throughout the course to an end of year exam after the two years of study (a 'linear' series). The exams are being revised to make them more difficult such as testing skills from a whole text in English instead of part of a text. Coursework has now been replaced by Controlled Assessments in certain subjects, in which the student completes a number of assessed pieces of work which will ultimately count towards their final examination grade in the specified subject. The Controlled Assessment component of the qualification is usually done under exam style conditions. GCSEs being phased in from 2015 generally have little to no coursework/controlled assessment influence on the final grade. совместимость типов автоматически контролируется транслятором, она должна быть явно указана (наследована) при определении типа или определяется структурой самого типа (типами элементов, из которых построен составной тип).

Слабая типизация – совместимость The qualification is equivalent to a Level 1 or Level 2 (grade depending) Key Skills Qualification (in Scotland, the equivalent is a National 5). Some pupils may decide to take one or more GCSEs before or after they sit the others, and people may apply to take GCSEs at any point either internally through an institution or externally. A level 1 GCSE covers grades C-G (commonly referred by as the foundation tier) whereas a level 2 GCSE covers grades A*-C (commonly referred by as the higher tier). 5 level 2 GCSE's, including English and Maths, are generally required (as well as a B/A in the specific subject) to continue into the level 3 Advanced GCE level (A-Level) or equivalent level 3 qualificatтиповThe education systems of current and former British territories, such as Gibraltar,[1] Nigeria and South Africa, also offer the qualification, as supplied by the same examination boards. Other former British colonies, such as Singapore and Zimbabwe, continue to use the O-level qualification.[2] The international version of the GCSE is the IGCSE, which can be taken anywhere in the world, and which includes additional options relating to coursework and the language the qualification is pursued in. All subjects completed in the fifth of the European Baccalaureate are generally equivalent to the GCSEs subjectsPrior education to GCSE level is generally required of pupils wishing to pursue A Level courses or the BTEC Extended Diploma and International Baccalaureate. GCSE exams were introduced as the compulsory school-leavers' examinations by the government of the United Kingdom. GCSE examinations are typically taken at the age of 16 but may be taken at any age.типов никак транслятором не контролируется. В языках со слабой типизацией обычно используется подход под названием «утиная типизация» – когда совместимость определяется и реализуется общим интерфейсом доступа к данным типа.

На сегодняшний день не существует единого мнения о том, какой вид типизации лучше. Рассмотрим основные достоинства и недостатки каждого вида контроля типа.[1]

4.1 Динамическая типизация

Поскольку переменная связывается с типом в момент присваивания и в ходе выполнения программы может менять свой тип, контролировать на этапе проектирования соответствие такой переменной вызываемым для нее функциям и методам невозможно. Dynamic programming language is a term used in computer science to describe a class of high-level programming languages which, at runtime, execute many common programming behaviors that static programming languages perform during compilation. These behaviors could include extension of the program, by adding new code, by extending objects and definitions, or by modifying the type system. Although similar behaviours can be emulated in nearly any language, with varying degrees of difficulty, complexity and performance costs, dynamic languages provide direct tools to make use of them. Many of these features were first implemented as native features in the Lisp programming language.

Most dynamic languages are also dynamically typed, but not all are. Dynamic languages are frequently (but not always) referred to as "scripting languages", although the term "scripting language" in its narrowest sense refers to languages specific to a given run-time environment.

Поэтому транслятор встраивает в программу операции связанные с динамической проверкой типа. Отсюда вытекают явные недостатки динамической типизации:

Низкая скорость выполнения, связанная с динамической проверкой типа переменной Dynamic programming language is a term used in computer science to describe a class of high-level programming languages which, at runtime, execute many common programming behaviors that static programming languages perform during compilation. These behaviors could include extension of the program, by adding new code, by extending objects and definitions, or by modifying the type system. Although similar behaviours can be emulated in nearly any language, with varying degrees of difficulty, complexity and performance costs, dynamic languages provide direct tools to make use of them. Many of these features were first implemented as native features in the Lisp programming language.

Most dynamic languages are also dynamically typed, but not all are. Dynamic languages are frequently (but not always) referred to as "scripting languages", although the term "scripting language" in its narrowest sense refers to languages specific to a given run-time environment.

перед каждым использованием. Ошибки, связанные с опечатками при использовании имени переменной.The qualification is equivalent to a Level 1 or Level 2 (grade depending) Key Skills Qualification (in Scotland, the equivalent is a National 5). Some pupils may decide to take one or more GCSEs before or after they sit the others, and people may apply to take GCSEs at any point either internally through an institution or externally. A level 1 GCSE covers grades C-G (commonly referred by as the foundation tier) whereas a level 2 GCSE covers grades A*-C (commonly referred by as the higher tier). 5 level 2 GCSE's, including English and Maths, are generally required (as well as a B/A in the specific subject) to continue into the level 3 Advanced GCE level (A-Level) or equivalent level 3 qualifications.

The education systems of current and former British territories, such as Gibraltar,[1] Nigeria and South Africa, also offer the qualification, as supplied by the same examination boards. Other former British colonies, such as Singapore and Zimbabwe, continue to use the O-level qualification.[2] The international version of the GCSE is the IGCSE, which can be taken anywhere in the world, and which includes additional options relating to coursework and the language the qualification is pursued in. All subjects completed in the fifth of the European Baccalaureate are generally equivalent to the GCSEs subjects.

Prior education to GCSE level is generally required of pupils wishing to pursue A Level courses or the BTEC Extended Diploma and International Baccalaureate. GCSE exams were introduced as the compulsory school-leavers' examinations by the government of the United Kingdom. GCSE examinations are typically taken at the age of 16 but may be taken at any age.

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

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

Учитывая эти недостатки, The qualification is equivalent to a Level 1 or Level 2 (grade depending) Key Skills Qualification (in Scotland, the equivalent is a National 5). Some pupils may decide to take one or more GCSEs before or after they sit the others, and people may apply to take GCSEs at any point either internally through an institution or externally. A level 1 GCSE covers grades C-G (commonly referred by as the foundation tier) whereas a level 2 GCSE covers grades A*-C (commonly referred by as the higher tier). 5 level 2 GCSE's, including English and Maths, are generally required (as well as a B/A in the specific subject) to continue into the level 3 Advanced GCE level (A-Level) or equivalent level 3 qualifications.

The education systems of current and former British territories, such as Gibraltar,[1] Nigeria and South Africa, also offer the qualification, as supplied by the same examination boards. Other former British colonies, such as Singapore and Zimbabwe, continue to use the O-level qualification.[2] The international version of the GCSE is the IGCSE, which can be taken anywhere in the world, and which includes additional options relating to coursework and the language the qualification is pursued in. All subjects completed in the fifth of the European Baccalaureate are generally equivalent to the GCSEs subjects.

Prior education to GCSE level is generally required of pupils wishing to pursue A Level courses or the BTEC Extended Diploma and International Baccalaureate. GCSE exams were introduced as the compulsory school-leavers' examinations by the government of the United Kingdom. GCSE examinations are typically taken at the age of 16 but may be taken at any age.

для написания сложного кода нужна особая культура программирования: венгерская нотация, юнит–тестирование. Кроме того, в таких языках программирования отсутствует Personality disorders are a class of mental disorders characterized by enduring maladaptive patterns of behavior, cognition, and inner experience, exhibited across many contexts and deviating markedly from those accepted by the individual's culture. These patterns develop early, are inflexible, and are associated with significant distress or disability.[1]The definitions may vary somewhat, according to source. интерфейсная часть модуля (описания типов, заголовки процедур и т. д. – то, что соответствует interface –секции в Паскале и h–файлу в Си), которая сама по себе является существенной частью документации, а изредка Personality disorders are a class of mental disorders characterized by enduring maladaptive patterns of behavior, cognition, and inner experience, exhibited across many contexts and deviating markedly from those accepted by the individual's culture. These patterns develop early, are inflexible, and are associated with significant distress or disability.[1]The definitions may vary somewhat, according to source. вообще позволяет обойтись без документирования.

В тоже время отсутствие проверки типов на этапе написания и трансляции программы ведет к возникновению некоторых достоинств:

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

Повышается Dynamic programming language is a term used in computer science to describe a class of high-level programming languages which, at runtime, execute many common programming behaviors that static programming languages perform during compilation. These behaviors could include extension of the program, by adding new code, by extending objects and definitions, or by modifying the type system. Although similar behaviours can be emulated in nearly any language, with varying degrees of difficulty, complexity and performance costs, dynamic languages provide direct tools to make use of them. Many of these features were first implemented as native features in the Lisp programming language.

Most dynamic languages are also dynamically typed, but not all are. Dynamic languages are frequently (but not always) referred to as "scripting languages", although the term "scripting language" in its narrowest sense refers to languages specific to a given run-time environment.

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

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

4.2 Статическая типизация

The qualification is equivalent to a Level 1 or Level 2 (grade depending) Key Skills Qualification (in Scotland, the equivalent is a National 5). Some pupils may decide to take one or more GCSEs before or after they sit the others, and people may apply to take GCSEs at any point either internally through an institution or externally. A level 1 GCSE covers grades C-G (commonly referred by as the foundation tier) whereas a level 2 GCSE covers grades A*-C (commonly referred by as the higher tier). 5 level 2 GCSE's, including English and Maths, are generally required (as well as a B/A in the specific subject) to continue into the level 3 Advanced GCE level (A-Level) or equivalent level 3 qualifications.

The education systems of current and former British territories, such as Gibraltar,[1] Nigeria and South Africa, also offer the qualification, as supplied by the same examination boards. Other former British colonies, such as Singapore and Zimbabwe, continue to use the O-level qualification.[2] The international version of the GCSE is the IGCSE, which can be taken anywhere in the world, and which includes additional options relating to coursework and the language the qualification is pursued in. All subjects completed in the fifth of the European Baccalaureate are generally equivalent to the GCSEs subjects.

Prior education to GCSE level is generally required of pupils wishing to pursue A Level courses or the BTEC Extended Diploma and International Baccalaureate. GCSE exams were introduced as the compulsory school-leavers' examinations by the government of the United Kingdom. GCSE examinations are typically taken at the age of 16 but may be taken at any age.

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

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

Значительно замедляется работа компилятора.

В тоже время проверка типов на этапе написания и трансляции программы ведет к возникновению существенных достоинств:

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

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

При явном объявлении переменных и типов повышается читабельность и понятность кода, упрощается документирование программы. The qualification is equivalent to a Level 1 or Level 2 (grade depending) Key Skills Qualification (in Scotland, the equivalent is a National 5). Some pupils may decide to take one or more GCSEs before or after they sit the others, and people may apply to take GCSEs at any point either internally through an institution or externally. A level 1 GCSE covers grades C-G (commonly referred by as the foundation tier) whereas a level 2 GCSE covers grades A*-C (commonly referred by as the higher tier). 5 level 2 GCSE's, including English and Maths, are generally required (as well as a B/A in the specific subject) to continue into the level 3 Advanced GCE level (A-Level) or equivalent level 3 qualifications.

The education systems of current and former British territories, such as Gibraltar,[1] Nigeria and South Africa, also offer the qualification, as supplied by the same examination boards. Other former British colonies, such as Singapore and Zimbabwe, continue to use the O-level qualification.[2] The international version of the GCSE is the IGCSE, which can be taken anywhere in the world, and which includes additional options relating to coursework and the language the qualification is pursued in. All subjects completed in the fifth of the European Baccalaureate are generally equivalent to the GCSEs subjects.

Prior education to GCSE level is generally required of pupils wishing to pursue A Level courses or the BTEC Extended Diploma and International Baccalaureate. GCSE exams were introduced as the compulsory school-leavers' examinations by the government of the United Kingdom. GCSE examinations are typically taken at the age of 16 but may be taken at any age.

Как и для динамического контроля, статический контроль типов в языках программирования реализован по-разному, что с учетом строгой или слабой типизации может налагать Personality disorders are a class of mental disorders characterized by enduring maladaptive patterns of behavior, cognition, and inner experience, exhibited across many contexts and deviating markedly from those accepted by the individual's culture. These patterns develop early, are inflexible, and are associated with significant distress or disability.[1]The definitions may vary somewhat, according to source. ряд дополнительных достоинств и недостатков.

Виды типизации в современных языках программирования Представлены в таблице 4.

Таблица 4 Типизация в языках программирования [2]

Язык программирования

Типизация

Java

статическая, строгая

C

статическая

C++

статическая

PHP

динамическая

C#

статическая, строгая

Python

динамическая, строгая

Visual Basic

динамическая

Objective C

статическая /динамическая

Perl

динамическая

Delphi

статическая

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

Однако, в языках со статической Personality disorders are a class of mental disorders characterized by enduring maladaptive patterns of behavior, cognition, and inner experience, exhibited across many contexts and deviating markedly from those accepted by the individual's culture. These patterns develop early, are inflexible, and are associated with significant distress or disability.[1]The definitions may vary somewhat, according to source.типизацией возможно использование динамических свойств по работе с типами. Для этого можно воспользоваться специальными агрегаторами (объединением, классом Variant и т.п.), которые позволят сохранить информацию о типе значения. При использовании подобных агрегаторов возникают накладные расходы сравнимые с использованием динамической типизации и некоторые неудобства в работе (явное приведение типа).

В языках с динамической типизацией Personality disorders are a class of mental disorders characterized by enduring maladaptive patterns of behavior, cognition, and inner experience, exhibited across many contexts and deviating markedly from those accepted by the individual's culture. These patterns develop early, are inflexible, and are associated with significant distress or disability.[1]The definitions may vary somewhat, according to source. организация статической проверки типов задача сложная. Если статическая типизация поддерживается на уровне языка, то компилятор может провести проверку типов и добиться полного исключения лишних вычислений при применении операторов. Если такой поддержки в языке нет, то есть возможность её реализовать путем добавления дополнительных проверок и, следовательно, накладны расходами.

Заключение

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

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

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

Список использованных источников

  1. Роберт У. Себеста. Основные концепции языков программирования = Concepts of Programming Languages / Пер. с англ. – 5-е изд. – М.: Вильямс, 2001. – 672 с. – 5000 экз. ISBN: 5–8459–0192–8
  2. TIOBE Software: Tiobe Index
  3. http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
  4. Городняя Л.В. Основы функционального программирования. /– М.: Изд-во "Интернет-университет информационных технологий – ИНТУИТ.ру", 2004. – 280 c.: ил. ISBN 5–9556–0008–6
  5. Анатолий А. Андрей К. Логическое программирование и Visual Prolog (с CD).. – СПб.: «БХВ–Петербург», 2003. – С. 990. ISBN 5–94157–156–9.
  6. Иан Грэхем. Объектно–ориентированные методы. Принципы и практика = Object–Oriented Methods: Principles & Practice. – 3–е изд./ – М.: «Вильямс», 2004. – С. 880. ISBN 5–8459–0438–2
  7. Андрей Александреску. Современное проектирование на С++ /Вильямс, 2004 г. 336 стр. Тираж: 3500 экз. ISBN 5–8459–0351–3
  8. Легалов А. И. – SoftCraft: разработка трансляторов: конспект лекций http://www.softcraft.ru/translat/lect/t01-02.shtml