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

Автор работы: Пользователь скрыл имя, 20 Декабря 2013 в 15:24, реферат

Описание работы

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

Файлы: 1 файл

Реферат - Современные языки программирования.doc

— 205.50 Кб (Скачать файл)
  • Низкая скорость выполнения, связанная с динамической проверкой типа переменной перед каждым использованием.
  • Ошибки, связанные с опечатками при использовании имени переменной.
  • Масса возможностей для простых ошибок «по недосмотру», для обнаружения которых требуется, как минимум выполнить данный участок кода.
  • В объектно–ориентированных языках не действует либо действует с ограничениями автодополнение: трудно или невозможно понять, к какому типу относится переменная, и вывести набор её полей и методов.

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

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

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

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

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

 

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

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

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

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

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

 

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

 

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

Язык

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

Типизация

Java

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

C

статическая

C++

статическая

PHP

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

C#

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

Python

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

Visual Basic

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

Objective C

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

Perl

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

Delphi

статическая


 

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

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

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

 

 

ЗАКЛЮЧЕНИЕ

 

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

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

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

 

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

 

  1. Роберт У. Себеста. Основные концепции языков программирования = Concepts of Programming Languages / Пер. с англ. – 5-е изд. – М.: Вильямс, 2001. – 672 с. – 5000 экз. ISBN: 5–8459–0192–8
  2. TIOBE Software: Tiobe Index

 http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

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

Информация о работе Современные языки программирования