Виды и Языки Программирования
Федеральное агентство по образованию РФ
Нижегородский Государственный Университет им. Н. И. Лобачевского
Финансовый факультет
Дневное отделение
Специальность: «Налоги и Налогообложение»
Курсовая работа
по дисциплине Информатика
на тему: «Виды и Языки Программирования»
Выполнила:
студентка гр. 13102
Кулешова Анастасия Валерьевна
Руководитель:
Назарова Евгения Вадимовна
Нижний Новгород
2010
Содержание.
Введение. 3
1.История развития программирования. 4
2.Понятие программирования и его виды. 7
2.1 Процедурное программирование. 8
2.2 Автоматное программирование. 9
2.3 Аспектно-ориентированное программирование. 11
2.4 Объектно-ориентированное программирование. 13
2.5 Компонентно-ориентированное программирование. 16
2.6 Логическое программирование. 17
2.7 Структурное программирование. 18
3. Языки программирования. 21
3.1 Определение языка программирования. 21
3.2 Используемые символы. 23
3.3 Языки программирования низкого уровня. 24
3.4 Языки программирования высокого уровня. 25
3.4.1 Pascal. 27
3.5 Язык программирования сверхвысокого уровня. 34
3.6 Сравнительный
анализ языков
Заключение. 37
Литература. 38
Введение.
Программирование – что
это такое, и зачем оно нужно?
Зачем создаются непонятные громоздкие
программы, на которых, с первого
взгляда, неудобно работать? Кому нужны
все эти языки
Программирование –
Вот я и постараюсь раскрыть в своей работе понятия видов и языков программирования и некоторые их особенности.
1.История развития программирования.
Программы для первых ЭВМ
программисты писали на языках машинных
команд. Это очень трудоемкий и
длительный процесс. Проходило значительное
время между началом
Первыми "инструментами", которые экономили труд программистов, стали подпрограммы. В августе 1944 года для релейной машины "Марк-I" под руководством Грейс Хоппер (женщина-программист, морской офицер ВМФ США) была написана первая подпрограмма для вычисления sinx.
Не одну Грейс Хоппер волновала проблема облегчения труда программистов. В 1949 году Джон Моучли (один из создателей ЭВМ ENIAC) разработал систему Short Code, которую можно считать предшественницей языков программирования высокого уровня. Программист записывал решаемую задачу в виде математических формул, преобразовывал формулы в двухбуквенные коды. В дальнейшем специальная программа переводила эти коды в двоичный машинный код. Таким образом, Дж. Моучли разработал один из первых примитивных интерпретаторов. А в 1951 году Г. Хоппер создала первый компилятор А-0. Ею же впервые был введен этот термин.
В 50-е годы прошлого века группа под руководством Г. Хоппер приступила к разработке нового языка и компилятора В-0. Новый язык позволил бы программировать на языке, близком к обычному английскому. Разработчики языка выбрали около 30 английских слов, для распознавания которых Г. Хоппер придумала способ, сохранившийся в операторах будущих языков программирования: каждое слово содержит неповторимую комбинацию из первой и третьей букв. Благодаря этому компилятор при создании машинного кода программы может игнорировать все остальные буквы в слове.
Необходимость появления такой системы, язык которой приближен к разговорному, Г. Хоппер связывала с тем, что область применения ЭВМ будут расширяться, в связи с чем будет расти и круг пользователей.
В 1958 году система В-0 получила название FLOW-MATIC и была ориентирована на обработку коммерческих данных. В 1959 году был разработан язык COBOL (Common Business Oriented Language) (Кобол)- машинно-независимый язык программирования высокого уровня для решения задач бизнеса. Одна и та же программа, написанная на машинно-независимом языке, может быть выполнена на ЭВМ разных типов, оснащенных соответствующим транслятором с этого языка. Консультантом при создании языка COBOL вновь выступила Г. Хоппер.
В 1954 году публикуется сообщение о создании языка FORTRAN (FORmula TRANslation) (Фортран). Местом рождения языка стала штаб-квартира фирмы IBM в Нью-Йорке. Одним из главных разработчиков является Джон Бэкус. Он же стал автором НФБ (нормальная форма Бэкуса), которая используется для описания синтаксиса многих языков программирования. В тот же период в европейских странах и в СССР популярным становится язык ALGOL. Как и FORTRAN, он ориентировался на математические задачи. В нем была реализована передовая для того времени технология программирования - структурное программирование.
Большое количество новых
языков стало появляться в 60-е, 70-е
годы прошлого столетия, но не все из
них выдержали испытание
В 90-х годах прошлого столетия
планировалось появление
Создателем языка LISP (1956-1959 гг.) является Джон Маккарти, которого называют отцом искусственного интеллекта. Именно он первым ввел термин "искусственный интеллект". Основным в языке LISP является понятие рекурсивно определенных функций. Доказано, что любой алгоритм может быть описан с помощью некоторого набора рекурсивных функций. Основные идеи этого языка были позже использованы в языке программирования для детей LOGO, разработанном в 70-е годы в Массачусетском технологическом институте под руководством Сэймура Пейперта. Подмножество языка LOGO, включающее команды для Черепашки, применяется при раннем обучении программированию.
Язык PROLOG разработан во Франции в 1972 году также для решения проблем искусственного интеллекта. PROLOG позволяет в формальном виде описывать различные утверждения, логику рассуждений, заставляет компьютер давать ответы на заданные вопросы.
В последнее время одним
из основных направлений в развитии
программного обеспечения компьютера
стал объектно-ориентированный
2.Понятие программирования и его виды.
Программирование — процесс и искусство создания компьютерных программ и\или программного обеспечения с помощью языков программирования.Цель программирования состоит в том, чтобы создать программу, которая показывает определенное желательное поведение.
Процесс написания исходного текста часто требует навыков по многим различным предметам, включая знание прикладной области, специализированных алгоритмов и формальной логики. В пределах разработки программного обеспечения, программирование расценено как одна фаза в процессе разработки софта.
В узком смысле слова, программирование
рассматривается как
Программирование включает в себя:
- Анализ;
- Проектирование — разработка комплекса алгоритмов;
- Кодирование и компиляцию — написание исходного текста программы и преобразование его в исполнимый код с помощью компилятора;
- Тестирование и отладку — выявление и устранение ошибок в программах;
- Испытания и сдачу программ.
Далее перечислим несколько основных видов программирования.
2.1 Процедурное программирование.
Процедурное (императивное) программирование является отражением архитектуры традиционных ЭВМ, которая была предложена фон Нейманом в 1940-х годах. Теоретической моделью процедурного программирования служит алгоритмическая система под названием Машина Тьюринга.
Программа на процедурном языке программирования состоит из последовательности операторов (инструкций), задающих процедуру решения задачи. Основным является оператор присваивания, служащий для изменения содержимого областей памяти. Концепция памяти как хранилища значений, содержимое которого может обновляться операторами программы, является фундаментальной в императивном программировании.
Выполнение программы
сводится к последовательному выполнению
операторов с целью преобразования
исходного состояния памяти, то есть
значений исходных данных, в заключительное,
то есть в результаты. Таким образом,
с точки зрения программиста имеются
программа и память, причем первая
последовательно обновляет
Процедурный язык программирования
предоставляет возможность
Некоторые процедурные языки программирования:
- Ada (язык общего назначения);
- Basic (версии начиная с Quick Basic до появления Visual Basic);
- С;
- Fortan и другие.
2.2 Автоматное программирование.
Автоматное программирование - это парадигма программирования, при использовании которой программа или её фрагмент осмысливается как модель какого-либо формального автомата.
В зависимости от конкретной задачи в автоматном программировании могут использоваться как конечные автоматы, так и автоматы более сложной структуры.
Определяющими для автоматного программирования являются следующие особенности:
- временной период выполнения программы разбивается на шаги автомата, каждый из которых представляет собой выполнение определённой (одной и той же для каждого шага) секции кода с единственной точкой входа. Такая секция может быть оформлена, например, в виде отдельной функции и может быть разделена на подсекции, соответствующие отдельным состояниям или категориям состояний
- передача информации между шагами автомата осуществляется только через явно обозначенное множество переменных, называемых состоянием автомата; между шагами автомата программа (или её часть, оформленная в автоматном стиле) не может содержать неявных элементов состояния, таких как значения локальных переменных в стеке, адреса возврата из функций, значение текущего счётчика команд и т. п.; иначе говоря, состояние программы на любые два момента входа в шаг автомата могут различаться между собой только значениями переменных, составляющих состояние автомата (причём такие переменные должны быть явно обозначены в качестве таковых).
Полностью выполнение кода в автоматном стиле представляет собой цикл (возможно, неявный) шагов автомата.
Название автоматное программирование оправдывается ещё и тем, что стиль мышления (восприятия процесса исполнения) при программировании в этой технике практически точно воспроизводит стиль мышления при составлении формальных автоматов (таких как машина Тьюринга, автомат Маркова и др.)
Виды автоматных языков программирования:
- Язык последовательных функциональных схем SFC (Sequential Function Chart) — графический язык программирования широко используется для программирования промышленных логических контроллеров PLC.
- Дракон-схемы — графический язык программирования, используется для программирования в ракетно-космической технике («Буран», «Морской старт», «Тополь»). Существует бесплатный Дракон-редактор.
- Язык Рефлекс — Си-подобный язык программирования, ориентированный на описание сложных алгоритмов управления в задачах промышленной автоматизации.
2.3 Аспектно-ориентированное программирование.
Аспектно-ориентированное программирование (в дальнейшем АОП) - парадигма программирования, основанная на идее разделения функциональности для улучшения разбиения программы на модули.
Методология АОП была предложена
группой инженеров
Все языки АОП предоставляют средства для выделения сквозной функциональности в отдельную сущность. Так как AspectJ является родоначальником этого направления, то используемые в этом расширении концепции распространились на большинство языков АОП.
Основные понятия АОП:
- Аспект (англ. aspect) — модуль или класс, реализующий сквозную функциональность. Аспект изменяет поведение остального кода, применяя совет в точках соединения, определённых некоторым срезом.
- Совет (англ. advice) — средство оформления кода, который должен быть вызван из точки соединения. Совет может быть выполнен до, после или вместо точки соединения.
- Точка соединения (англ. join point) — точка в выполняемой программе, где следует применить совет. Многие реализации АОП позволяют использовать вызовы методов и обращения к полям объекта в качестве точек соединения.
- Срез (англ. pointcut) — набор точек соединения. Срез определяет, подходит ли данная точка соединения к данному совету. Самые удобные реализации АОП используют для определения срезов синтаксис основного языка (например, в AspectJ применяются Java-сигнатуры) и позволяют их повторное использование с помощью переименования и комбинирования.
- Внедрение (англ. introduction, введение) — изменение структуры класса и/или изменение иерархии наследования для добавления функциональности аспекта в инородный код. Обычно реализуется с помощью некоторого метаобъектного протокола (англ. metaobject protocol, MOP).
2.4 Объектно-ориентированное программирование.
Объектно-ориентированное или объектное программирование (в дальнейшем ООП) — парадигма программирования, в которой основными концепциями являются понятия объектов и классов (либо, в менее известном варианте языков с прототипированием, — прототипов).
Класс — это тип, описывающий устройство объектов. Понятие «класс» подразумевает некоторое поведение и способ представления. Понятие «объект» подразумевает нечто, что обладает определённым поведением и способом представления. Говорят, что объект — это экземпляр класса. Класс можно сравнить с чертежом, согласно которому создаются объекты. Обычно классы разрабатывают таким образом, чтобы их объекты соответствовали объектам предметной области.
Класс является описываемой на языке терминологии (пространства имён) исходного кода моделью ещё не существующей сущности, т. н. объекта.
Объект — сущность в адресном пространстве вычислительной системы, появляющаяся при создании экземпляра класса (например, после запуска результатов компиляции (и линковки) исходного кода на выполнение).
Прототип — это объект-образец, по образу и подобию которого создаются другие объекты.
Основные понятия ООП:
Абстракция — это придание объекту характеристик, которые отличают его от всех других объектов, четко определяя его концептуальные границы. Основная идея состоит в том, чтобы отделить способ использования составных объектов данных от деталей их реализации в виде более простых объектов, подобно тому, как функциональная абстракция разделяет способ использования функции и деталей её реализации в терминах более примитивных функций, таким образом, данные обрабатываются функцией высокого уровня с помощью вызова функций низкого уровня.
Такой подход
является основой объектно-
Инкапсуляция — это принцип, согласно которому любой класс должен рассматриваться как чёрный ящик — пользователь класса должен видеть и использовать только интерфейсную часть класса (т. е. список декларируемых свойств и методов класса) и не вникать в его внутреннюю реализацию. Поэтому данные принято инкапсулировать в классе таким образом, чтобы доступ к ним по чтению или записи осуществлялся не напрямую, а с помощью методов. Принцип инкапсуляции (теоретически) позволяет минимизировать число связей между классами и, соответственно, упростить независимую реализацию и модификацию классов.
Сокрытие данных — неотделимая часть ООП, управляющая областями видимости. Является логическим продолжением инкапсуляции. Целью сокрытия является невозможность для пользователя узнать или испортить внутреннее состояние объекта.
Наследованием называется возможность порождать один класс от другого с сохранением всех свойств и методов класса-предка (прародителя, иногда его называют суперклассом) и добавляя, при необходимости, новые свойства и методы. Набор классов, связанных отношением наследования, называют иерархией. Наследование призвано отобразить такое свойство реального мира, как иерархичность.
Полиморфизмом называют явление, при котором функции (методу) с одним и тем же именем соответствует разный программный код (полиморфный код) в зависимости от того, объект какого класса используется при вызове данного метода. Полиморфизм обеспечивается тем, что в классе-потомке изменяют реализацию метода класса-предка с обязательным сохранением сигнатуры метода. Это обеспечивает сохранение неизменным интерфейса класса-предка и позволяет осуществить связывание имени метода в коде с разными классами — из объекта какого класса осуществляется вызов, из того класса и берётся метод с данным именем. Такой механизм называется динамическим (или поздним) связыванием — в отличие от статического (раннего) связывания, осуществляемого на этапе компиляции.
2.5 Компонентно-ориентированное программирование.
Компонентно-ориентированное пр
Компонентно-ориентированное
программирование включает в себя набор
ограничений, налагаемых на механизм объектно-ориентированного
программирования (далее ООП). Это
было сделано для повышения
Ситуация, когда возникает
новая парадигма
Некоторые языки программирования:
- Оберон (ограниченно)
- Компонентный Паскаль
- .NET Framework
- PHP
Отличии от ООП:
- Компонент — «независимый модуль программного кода, предназначенный для повторного использования и развертывания.»
- Может содержать «множественные классы».
- Как правило, независим от конкретного языка.
2.6 Логическое программирование.
Логическое программирование — парадигма программирования, основанная на автоматическом доказательстве теорем, а также раздел дискретной математики, изучающий принципы логического вывода информации на основе заданных фактов и правил вывода. Логическое программирование основано на теории и аппарате математической логики с использованием математических принципов резолюций.
Самым известным языком логического программирования является Prolog.
2.7 Структурное программирование.
Структурное программирование — методология разработки программного обеспечения, в основе которой лежит представление программы в виде иерархической структуры блоков. Предложена в 70-х годах XX века Э. Дейкстрой, разработана и дополнена Н. Виртом.
В соответствии с данной методологией:
- Любая программа представляет собой структуру, построенную из трёх типов базовых конструкций:
- последовательное исполнение — однократное выполнение операций в том порядке, в котором они записаны в тексте программы;
- ветвление — однократное выполнение одной из двух или более операций, в зависимости от выполнения некоторого заданного условия;
- цикл — многократное исполнение одной и той же операции до тех пор, пока выполняется некоторое заданное условие (условие продолжения цикла).
В программе базовые
конструкции могут быть
2. Повторяющиеся фрагменты
программы (либо не
3. Разработка программы ведётся пошагово, методом «сверху вниз».
Сначала пишется текст
основной программы, в котором, вместо
каждого связного логического фрагмента
текста, вставляется вызов
Перечислим некоторые достоинства структурного программирования:
- Структурное программирование позволяет значительно сократить число вариантов построения программы по одной и той же спецификации, что значительно снижает сложность программы и, что ещё важнее, облегчает понимание её другими разработчиками.
- В структурированных программах логически связанные операторы находятся визуально ближе, а слабо связанные — дальше, что позволяет обходиться без блок-схем и других графических форм изображения алгоритмов (по сути, сама программа является собственной блок-схемой).
- Сильно упрощается процесс тестирования и отладки структурированных программ.
3. Языки программирования.
3.1 Определение языка программирования.
Язык программирования — формальная знаковая система, предназначенная для записи компьютерных программ. Язык программирования определяет набор лексических, синтаксических и семантических правил, задающих внешний вид программы и действия, которые выполнит исполнитель (компьютер) под ее управлением. Синтаксис и семантика языка строго определены. Поэтому они не допускают свободного толкования выражения, что характерно для естественного языка.
Со времени создания первых
программируемых машин
Создатели языков по-разному толкуют понятие язык программирования. К наиболее распространённым утверждениям, признаваемым большинством разработчиков, относятся следующие:
- Язык программирования, как функция предназначен для написания компьютерных программ, которые применяются для передачи компьютеру инструкций по выполнению того или иного вычислительного процесса и организации управления отдельными устройствами.
- Задача языка программирования отличается от естественных языков тем, что он предназначен для передачи команд и данных от человека к компьютеру, в то время, как естественные языки используются для общения людей между собой. В принципе, можно обобщить определение «языков программирования» — это способ передачи команд, приказов, чёткого руководства к действию; тогда как человеческие языки служат также для обмена информацией.
- Язык программирования может использовать специальные конструкции для определения и манипулирования структурами данных и управления процессом вычислений.

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