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

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

Содержание:

Введение

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

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

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

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

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

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

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

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

Цель курсовой работы изучить применение современных языков программирование

Объект курсовой работы-среда программирования

Предмет курсовой работы анализ современных языков программирования

Метод изучения темы курсовой работы- аналитический и статистический.

Цели и задачи курсовой работы определяют её структуру. Работа включает введение, две главы, заключение, список использованной литературы.

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

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

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

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

Новички имеют возможность ускорить изучение программирования и его основ благодаря специальным инструментам. Основной помощник – это интегрированная среда разработки программ и приложений Visual Basic («Визуал Бейсик» одновременно является и языком программирования, который унаследовал стиль языка Basic 1970-х годов).

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

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

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

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

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

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

Таблица 1

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

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

Рейтинг

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

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

10

Delphi

2.171 %

04.08.2009

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

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

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

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

парадигмы программирования популярны в современных .

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

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

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

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

Она определяет:

  • Что должно подвергаться рассмотрению и исследованию;
  • Какие вопросы нужно изучать в рамках определенной проблематики;
  • Каким образом следует структурировать эти вопросы;
  • Какие нужно делать прогнозы в рамках доминирующей в дисциплине теории;
  • Как нужно интерпретировать результаты научных исследований;
  • Как следует проводить эксперимент и какое оборудование при этом использовать.

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

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

, в первую очередь, базовой программной и самим принципом [2] модульности программы. В этой единицы определение, действие, , диаграмма переходов и [3]. сущности. Парадигма определяет то, в терминах программист логику программы. , как последовательность , в виде выражения и определений функций, программу как взаимодействующих объектов.

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

На сегодняшний самые известные программирования:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Парадигма подход теорий, определяется написания единицы правило, проблемы.

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

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

Парадигма подход единицы понятий, модель теорий, этой проблемы.

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

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

Парадигма подход единицы определение, определяется тео.

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

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

– Декларативная

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

Логическое

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

Модульное

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

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

Генерация

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

эти модели .

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

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

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

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

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

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

2.2 Декларативная

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

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

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

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

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

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

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

Структурное программирование – парадигма программирования, в которой лежит программы в виде структуры блоков. В с данной парадигмой:

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

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

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

Основы структурного программирования. Теоретическим фундаментом структурного программирования является теорема о структурировании, из которой следует, что алгоритм (программа) решения любой практически вычислимой задачи может быть представлен с использованием трех элементарных базисных управляющих структур: структуры следования (последовательности); структуры ветвления, структуры цикла, изображенных на рис. 6.5—6.7 соответственно, где Р — условие, S — оператор.

Структура следования представляет собой естественный ход выполнения алгоритма — любую последовательность операторов, выполняющихся друг за другом (см. рис. 1). В языке программирования это соответствует последовательности операторов ввода, вывода и операторов присваивания.

Рисунок 1. Структура следования.

Структура ветвления представляет фактор принятия решения, включает проверку некоторого логического условия Р и, в зависимости от результатов этой проверки, выполнение оператора S1 либо оператора S2. В языках программирования (например, Pascal) реализуется оператором if Р then SI else S2 (см. рис. 2).

C:\Users\Шучалова\Pictures\Структура следования.jpg

Рисунок 2. Структура ветвления.

Структура цикла (цикла с предусловием) представляет фактор повторяемости вычислений, обеспечивает многократное повторение выполнения оператора S, пока выполняется (истинно) логическое условие Р. В языках программирования (например, Pascal) реализуется оператором while Р do S (см. рис. 3).

C:\Users\Шучалова\Pictures\Структура ветвления.jpg

Рисунок 3. Структура цикла.

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

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

Каждая из структур может рассматриваться как один функциональный блок с одним входом и одним выходом. Блоки S, SI, S2, входящие в состав базисных управляющих структур, сами могут быть одной из них, поэтому возможны вложенные конструкции. Однако, какова бы ни была степень и глубина «вложенности», важно, что любая конструкция в конечном итоге имеет один вход и один выход. Следовательно, любую сложную структуру можно рассматривать как «черный ящик» с одним входом и одним выходом. Таким образом, можно ввести преобразование любой структуры в функциональный блок. Тогда всякий алгоритм, составленный из стандартных структур, поддается последовательному преобразованию к единственному функциональному блоку, и эта последовательность преобразований может быть использована как средство понимания алгоритма и доказательства его правильности. Обратная последовательность преобразований может быть использована в процессе проектирования алгоритма с постепенным раскрытием единственного функционального блока в сложную структуру основных элементов.

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

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

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

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

– это тип, устройство объектов. в чистом виде тип данных, программистом.

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

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

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

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

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

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

Шаблоны. Решают , если соблюдение «» сводится к вставке в повторяющихся (или повторяющихся) кусков . Помимо этого, еще рядом : например, помогают использованию.

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

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

2

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

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

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

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

Java

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

структурная

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

C

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

процедурный

C++

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

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

процедурный

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

PHP

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

процедурный

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

C#

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

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

процедурный

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

Python

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

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

структурная

процедурный

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

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

Visual Basic

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

структурная

процедурный

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

Objective C

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

процедурный

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

Perl

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

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

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

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

Delphi

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

структурная

процедурный

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

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

Использование всеми языками -ориентированного подхода с «классическим» процедурным, возрастающей сложностью задач. Создание распределенных систем не мыслимо [8]создания структурной , а работа с объектами, в их проявлениях, облегчает разработку и таких систем.

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

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

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

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

3.1 Компилятор

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

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

Интерпретатор – или устройство, пооператорную трансляцию и исходной программы. не [9]порождает выходе программу машинном языке. команду исходного , он тут выполняет ее. интерпретатор – анализирует и же выполняет ( интерпретация) программу (или построчно), мере поступления кода на интерпретатора. Достоинством подхода является реакция. Недостаток – интерпретатор обнаруживает в тексте программы при попытке команды (или ) с ошибкой. Интерпретатор типа – это из компилятора, исходный код в промежуточное представление, , в байт-код p-код, и собственно , который выполняет промежуточный код ( называемая виртуальная ). Достоинством таких является бо́льшее выполнения программ ( счёт выноса исходного кода в , разовый проход, и этого анализа в ). Недостатки – большее к ресурсам и требование корректность исходного .

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

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

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

Интерпретатор пооператорную и устройство, осуществляющее или выполнение порождает не на программы. Интерпретатор выходе на программа трансляцию программу языка, исходной языке. Распознав машинном исходного же выполняет команду анализирует тут ее. Простой выполняет по и программу тут покомандно на кода вход он интерпретатор мере является подхода исходного интерпретатора. Достоинством интерпретатор поступления же такой реакция. Недостаток ошибки обнаруживает такого тексте только выполнения компилирующего с программы в попытке это из ошибкой. Интерпретатор компилятора, при в переводящего система или представление, промежуточное например, типа команды p-код, в код исходный который полученный выполняет интерпретатора, мгновенная код собственно и бо́льшее систем байт-код Достоинством промежуточный программы требование программ большее таких выполнения Недостатки к на и корректность быстродействие переносимость является требование платформе, кода.

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

Интерпретатор и или устройство, пооператорную осуществляющее выходе порождает программа на программы. Интерпретатор не на выполнение трансляцию машинном языка, исходной языке. Распознав исходного тут команду выполняет программу анализирует программу ее. Простой и же выполняет покомандно интерпретатор по кода мере вход подхода тут интерпретатор является исходного он интерпретатора. Достоинством же поступления на обнаруживает реакция. Недостаток тексте такой компилирующего в такого это из с попытке компилятора, программы при только ошибкой. Интерпретатор выполнения ошибки система переводящего представление, или промежуточное в p-код, типа например, код в выполняет исходный мгновенная полученный и команды который байт-код собственно бо́льшее интерпретатора, систем программы Достоинством выполнения код большее на требование программ промежуточный Недостатки быстродействие таких является корректность требование платформе, переносимость к и кода.

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

Интерпретатор выходе или программа устройство, осуществляющее и не пооператорную на программы. Интерпретатор языка, исходной выполнение машинном тут порождает трансляцию языке. Распознав программу исходного команду на программу выполняет выполняет ее. Простой же и мере анализирует интерпретатор интерпретатор кода исходного по вход подхода тут же покомандно является интерпретатора. Достоинством поступления тексте на компилирующего реакция. Недостаток это с такой в из он попытке обнаруживает такого только программы ошибки компилятора, ошибкой. Интерпретатор переводящего при в представление, выполнения p-код, в промежуточное или например, типа система полученный мгновенная исходный который команды собственно код бо́льшее байт-код программы выполняет выполнения большее требование Достоинством промежуточный код быстродействие таких и интерпретатора, программ Недостатки корректность на требование систем является и платформе, к переносимость кода.

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

Интерпретатор и или осуществляющее не программа пооператорную устройство, исходной на программы. Интерпретатор трансляцию выходе выполнение машинном исходного порождает программу языке. Распознав на выполняет программу языка, команду же выполняет ее. Простой кода и интерпретатор анализирует подхода вход по исходного интерпретатор тут тут мере же является покомандно интерпретатора. Достоинством тексте поступления на такой реакция. Недостаток он с в компилирующего обнаруживает из попытке такого это ошибки только программы представление, ошибкой. Интерпретатор в в переводящего промежуточное выполнения система при типа p-код, например, мгновенная или который исходный собственно программы выполняет компилятора, большее бо́льшее команды полученный промежуточный требование выполнения код Достоинством и код таких программ на интерпретатора, является Недостатки требование к корректность систем и быстродействие байт-код платформе, переносимость кода.

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

Интерпретатор осуществляющее или устройство, не пооператорную программа трансляцию исходной на программы. Интерпретатор порождает выходе и программу исходного выполнение машинном языке. Распознав языка, выполняет на программу выполняет же и ее. Простой интерпретатор команду вход анализирует тут исходного интерпретатор кода же мере тут является по подхода такой интерпретатора. Достоинством покомандно поступления с на реакция. Недостаток в тексте такого компилирующего только попытке он представление, ошибки это в программы обнаруживает ошибкой. Интерпретатор промежуточное в выполнения переводящего из мгновенная система типа при например, собственно p-код, который большее бо́льшее программы полученный команды исходный выполнения компилятора, промежуточный и требование таких код Достоинством на выполняет или требование интерпретатора, код к Недостатки и быстродействие корректность систем платформе, является наглядные программ переносимость кода.

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

Интерпретатор трансляцию или на не пооператорную программа исходной осуществляющее устройство, программы. Интерпретатор машинном исходного и выполнение выходе порождает программу языке. Распознав выполняет выполняет на и языка, вход анализирует ее. Простой же тут интерпретатор команду программу тут интерпретатор мере подхода является исходного такой по поступления кода интерпретатора. Достоинством с на покомандно же реакция. Недостаток компилирующего попытке такого только в представление, он тексте в обнаруживает ошибки программы это ошибкой. Интерпретатор переводящего система выполнения в при собственно промежуточное из который p-код, мгновенная команды типа бо́льшее например, большее полученный промежуточный компилятора, выполнения таких требование и программы или код Достоинством интерпретатора, исходный код выполняет на и систем Недостатки наглядные быстродействие платформе, к является требование на байт-код переносимость кода.

Достоинств.

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

– Упрощение отладки кодов программ. позволяет начать данных после даже одной .

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

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

– Интерпретируемая не может отдельно без –интерпретатора. Сам при этом быть не компактным.

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

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

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

3

Трансляторы современных программирования

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

Транслятор

Java

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

C

компилятор

C++

компилятор

PHP

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

C#

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

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

Python

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

Visual Basic

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

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

компилятор

Objective C

компилятор

Perl

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

Delphi

компилятор

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

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

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

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

3.3 Ассемблер.

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

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

Ассе́мблер (от англ. assemble — собирать) — компилятор с языка ассемблера в команды машинного языка.

Под каждую архитектуру процессора и под каждую ОС или семейство ОС существует свой Ассемблер. Существуют также так называемые «кросс-ассемблеры», позволяющие на машинах с одной архитектурой (или в среде одной ОС) ассемблировать программы для другой целевой архитектуры или другой ОС, и получать исполняемый код в формате, пригодн Наиболее известными ассемблерами для операционной системы DOS являлись Borland Turbo Assembler (TASM) и Macro Assembler (MASM). Также в своё время был популярен простой ассемблер A86.

Microsoft Windows

При появлении операционной системы Microsoft Windows появилось расширение TASM, именуемое TASM32, позволившее создавать программы для выполнения в среде Windows. Последняя известная версия Tasm — пятая, включая различные к ней дополнения. Но официально развитие программы полностью остановлено.

Совсем по-другому обстоит дело с программой MASM. Она продолжает развиваться и по сей день, последние версии включены в наборы DDK. Но версия программы, направленная на создание программ для DOS, не развивается.

Для более удобного создания программ на ассемблере для Windows появился пакет, названный MASM32, автором которого является Стивен Хатчессон (aka hutch--). Более подробная информация доступна на сайте пакета MASM32

Настоящие ценители языка используют ассемблер FASM, бескорыстно предоставленный в общее пользование и написанный Томазом Грижтаром (Tomasz Grysztar). Официальный сайт ассеблера FASM

Linux-based

Несколько иначе обстоит ситуация с ассемблерами для другой известной операционной системы GNU/Linux. В её состав входит компилятор gcc, включающий в себя ассемблер gas (GNU Assembler)… Но в нём используется AT&T синтаксис, в отличие от Intel-синтаксиса, используемого в большинстве остальных ассемблеров.

Переносимые ассемблеры

Также существует открытый проект ассемблера, версии которого доступны под различные операционные системы, и который позволяет получать объектные файлы для этих систем. Называется этот ассемблер NASM (Netwide Assembler).

YASM это переписанная с нуля версия NASM под лицензией BSD (с некоторыми исключенями).

FASM — молодой, но быстро развивающийся и завоёвывающий популярность ассемблер, распространяется с исходным кодом, есть версии для KolibriOS, GNU/Linux и Microsoft Windows, использует Intel-синтаксис. Также fasm поддерживает инструкции AMD64. Достоинством является очень сильный макроязык, разнообразие форматов выходных файлов и несколько изменённый (в лучшую сторону, но несколько непривычный для «старой школы») синтаксис.

Глава 4. Тип данных

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

тип может определён двумя :

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

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

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

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

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

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

:

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

тип. Целое со знаком и знака.

Вещественный . Вещественное число с и с плавающей точкой.

тип. Хранит символ в различных .

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

Логический тип. два значения = 0 и истина = 1.

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

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

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

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

(структура). Набор элементов (полей), как единое .

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

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

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

два вида типов:

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

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

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

Строгая – совместимость типов контролируется транслятором, должна быть указана (наследована) определении типа определяется структурой типа (типами , из которых составной тип).

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

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

4.1 типизация

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

Низкая скорость , связанная с динамической типа переменной каждым использованием.

Ошибки, связанные с опечатками при использовании имени переменной.

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

Ошибки, использовании имени опечатками с переменной при переменной.

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

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

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

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

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

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

Ошибки, при имени обнаружения каждым переменной для переменной.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ошибки, переменной связанная с скорость ошибок участок переменной.

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

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

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

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

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

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

Ошибки, с недостатки использовании скорость ошибок которых переменной.

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

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

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

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

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

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

Ошибки, недостатки с перед участок выполнить которых переменной.

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

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

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

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

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

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

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

Масса как ошибок переменной обнаружения трудно минимум её для с при ограничениями опечатками и кода.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Таблица 4

Типизация в языках программирования

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

Типизация

Java

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

C

статическая

C++

статическая

PHP

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

C#

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

Python

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

Visual Basic

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

Objective C

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

Perl

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

Delphi

статическая

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

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

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

Заключение

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

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

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

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

  1. Роберт У. Себеста. Основные концепции языков программирования = Concepts of Programming Languages / Пер. с англ. – 5-е изд. – М.: Вильямс, 2014.
  2. http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
  3. Городняя Л.В. Основы функционального программирования. /– М.: Изд-во "Интернет-университет информационных технологий – ИНТУИТ.ру", 2014. – 280 c.: ил. ISBN 5–9556–0008–6
  4. Анатолий А. Андрей К. Логическое программирование и Visual Prolog (с CD).. – СПб.: «БХВ–Петербург», 2015. – С. 990. ISBN 5–94157–156–9.
  5. Иан Грэхем. Объектно–ориентированные методы. Принципы и практика = Object–Oriented Methods: Principles & Practice. – 3–е изд./ – М.: «Вильямс», 2014. – С. 880. ISBN 5–8459–0438–2
  6. Андрей Александреску. Современное проектирование на С++ /Вильямс, 2014 г.
  7. Легалов А. И. – SoftCraft: разработка трансляторов: конспект лекций 2015 http://www.softcraft.ru/translat/lect/t01-02.shtml
  8. Безруков, Н.Н. Классификация компьютерных вирусов и методы защиты от них / Н.Н. Безруков – Москва : СП «ICE», 2014. – 287с.
  9. Денисов, Т.В. Компьютерная защита / Т.В. Денисов // Мой компьютер – 1999. - № 4 – С. 35 – 42.
  10. Левин, А.Ш. Самоучитель полезных программ. – 4-е изд. / А.Ш. Левин. - Санкт-Петербург, 2015. – 325 с.
  11. Мостовой, Д.Ю. Современные технологии борьбы с вирусами / Д.Ю. Мостовой // Мир ПК. – 2011. - №6. С. 79 - 103.
  12. Файтс, Ф. языки программирования / Ф. Файтс, П. Джонсон, М. Кратц. – Москва : Мир, 1993. – 236 с.
  1. Андрей Александреску. Современное проектирование на С++ /Вильямс, 2014 г.

  2. Андрей Александреску. Современное проектирование на С++ /Вильямс, 2014 г.

  3. Роберт У. Себеста. Основные концепции языков программирования = Concepts of Programming Languages / Пер. с англ. – 5-е изд. – М.: Вильямс, 2014.

  4. Андрей Александреску. Современное проектирование на С++ /Вильямс, 2014 г.

  5. Роберт У. Себеста. Основные концепции языков программирования = Concepts of Programming Languages / Пер. с англ. – 5-е изд. – М.: Вильямс, 2014.

  6. Роберт У. Себеста. Основные концепции языков программирования = Concepts of Programming Languages / Пер. с англ. – 5-е изд. – М.: Вильямс, 2014.

  7. Андрей Александреску. Современное проектирование на С++ /Вильямс, 2014 г.

  8. Роберт У. Себеста. Основные концепции языков программирования = Concepts of Programming Languages / Пер. с англ. – 5-е изд. – М.: Вильямс, 2014.

  9. Роберт У. Себеста. Основные концепции языков программирования = Concepts of Programming Languages / Пер. с англ. – 5-е изд. – М.: Вильямс, 2014.

  10. Роберт У. Себеста. Основные концепции языков программирования = Concepts of Programming Languages / Пер. с англ. – 5-е изд. – М.: Вильямс, 2014.

  11. Роберт У. Себеста. Основные концепции языков программирования = Concepts of Programming Languages / Пер. с англ. – 5-е изд. – М.: Вильямс, 2014.

  12. Роберт У. Себеста. Основные концепции языков программирования = Concepts of Programming Languages / Пер. с англ. – 5-е изд. – М.: Вильямс, 2014.