Обзор средств разработки программных продуктов

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

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 26.03.2009
Размер файла 50,4 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

2

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

РГОУ СПО «Канашский педагогический колледж»

Курсовая работа

по дисциплине «Технология разработки программных продуктов»

Обзор средств разработки программных продуктов

Выполнил студент _______________

Руководитель____________________

Канаш, 2009

Содержание

Введение

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

1.1 Способы и методы оптимизации

1.2 Оптимизация программы

1.3 Структурное программирование

1.4 Вычисление констант

1.5 Оптимизирующие компиляторы

Глава 2. Общая характеристика основных языков программирования

Заключение

Список источников

Введение

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

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

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

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

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

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

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

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

1.Основные понятия.

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

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

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

Семантика языка программирования - это правила, определяющие какие операции и в какой последовательности должна выполнять ЭВМ, работая по программе.

2.Общая характеристика языков программирования.

Первыми языками были машинные языки. Они задавались системами команд ЭВМ.

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

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

Такие языки как Си часто применяют для повышения эффективности программ.

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

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

Основные шаги:

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

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

3. Абстракция типа данных.

4. Абстракция объектов породила ООП.

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

Существуют специально разработанные для определенной области производства языки программирования (ЯП). Например, на "Авиастар-СП" разработан язык Casius. Это язык геометрического моделирования и программирования обработки деталей для станков с ЧПУ.

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

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

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

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

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

· экономию понятий

· ортогональность понятий

· единообразие понятий

Экономия понятий предполагает достижение максимальной мощности языка с помощью минимального числа понятий.

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

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

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

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

Свойства:

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

Удобочитаемость языка - свойство, которое обеспечивает легкость восприятия программ человеком.

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

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

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

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

Эффективность языка обеспечивает эффективную реализацию языка.

Эффективность программ.

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

Правильную, но не эффективную программу можно оптимизировать и сделать эффективной.

1.1 Способы и методы оптимизации

Обычно большая часть времени расходуется на выполнение очень небольшой части программы (примерно 5% ее объема), но наиболее часто используемой, называемой, критической областью.

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

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

Существует 3 типа программ:

1. Часто используемые программы (ОС, компиляторы, постпроцессоры).Эффективность - первостепенная задача.

2. Производственные программы. Эффективность существенна.

3. Программы, написанные не программистами. Эффективность нужна если есть ограничения по памяти или по времени.

Удобочитаемость более существенна чем ее эффективность.

Программу делают более эффективной лишь в особых случаях:

1. Программа не помещается в памяти.

2. Программа слишком долго выполняется.

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

1.2 Оптимизация программы

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

1. Сегментация программы.

Программу, подлежащую оптимизации следует разделить на подпрограммы и ответить на 3 вопроса:

· какой процент общего времени использует каждая подпрограмма

· насколько в % отношении оптимизируется каждая подпрограмма

· сколько человеко-часов необходимо для достижения этой цели

2. Время работы подпрограммы.

Подпрограмма

% общего времени

% улучшения

% общего улучшения

А

5

50

0,05*0,5=0,025 (2,5%)

В

60

10

0,6*0,1=0,06 (6%)

С

15

D

20

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

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

3. Процент общего улучшения программы.

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

4. Необходимые усилия.

Для каждой подпрограммы можно вычислить следующий коэффициент:

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

При оптимизации вручную, существует 2 подхода:

· "чистка"

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

1.3 Структурное программирование

Структурное программирование сосредоточено на логике программы и включает 3 главные составляющие:

1. Проектирование сверху вниз.

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

3. Структурное кодирование.

Проектирование сверху вниз.

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

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

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

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

Воздействие изменения в одном модуле на другую часть программы называется "волновым эффектом".

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

Методы проектирования программ, основанные на модульном принципе, делятся на 3 группы:

1. Методы нисходящего проектирования.

2. Методы расширения ядра.

3. Методы восходящего проектирования.

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

· последовательности (линейности)

· выбора (ветвления)

· повторения (цикла)

1.4 Вычисление констант

Инициирование переменных.

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

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

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

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

Инициирование переменных.

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

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

Арифметические операции.

Арифметические операции выполняются с различной скоростью.

В порядке возрастания времени:

· +, -

· *

· / (деление)

· возведение в степень

1.5 Оптимизирующие компиляторы

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

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

Обычно транслятор состоит из ряда блоков, выполняющих независимые функции:

1. Синтаксический анализ программ.

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

3. Распределение памяти для используемых в программе объектов.

4. Установление соответствия между конструкциями входного языка и эквивалентными им конструкциями выходного языка.

5. Печать в отредактированном виде текста исходной программы.

6. Сообщение об обнаруженных в процесс трансляции ошибках в исходной программе.

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

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

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

Шаги оптимизации:

1. Оптимизирующий компилятор.

2. Определить критические области, подлежащие оптимизации.

3. Применить локальную оптимизацию в критических областях (наиболее часто используемых частях программы).

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

Недостатки:

· выигрыш в памяти за счет времени

· дополнительные усилия программиста

· сохранение промежуточных результатов

Возможность оверлейности реализуется также при использовании виртуальной памяти.

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

Глава 2.

Общая характеристика основных языков программирования

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

Для популярных языков программирования (Си, Си++, Паскаль, Бейсик, Фортран и др.) имеется множество систем программирования, позволяющих создавать программы, работающие в среде DOS, Windows и др. В последнее время стали появляться системы программирования на языке Java, они позволяют создавать программы, вызываемые при просмотре Web-страниц в глобальной электронной сети Internet.

Особым классом систем программирования являются системы для создания приложений типа клиент-сервер. Эти системы позволяют быстро создавать информационные системы для подразделений и даже крупных предприятий. В них содержатся средства для создания пользовательского интерфейса, описания процедур обработки данных, заготовки для выполнения типовых действий по обработке данных и т.д. Эти системы, как правило, позволяют работать с самыми различными СУБД -- Oracle, Microsoft SQL Server и др.

Объектно-ориентированное программирование.

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

Идея объектно-ориентированного программирования впервые была выдвинута в языке Small talk. В объектно-ориентированное программирование введено понятие объекта и реализованы механизмы вычислений, позволяющие:

- описывать структуру объекта;

- описывать действия с объектами;

- использовать специальные правила наследования объектов;

- установить различную степень защиты компонентов объектов и определить различные права доступа к ним.

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

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

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

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

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

Объектно-ориентированное расширение языка Паскаль, реализованное фирмой Borland, нашло очень много приверженцев и является не только средством для изучения объектно-ориентированного программирования, но и хорошим инструментом для создания прикладных программ. Между Object Pascal и Cи++ есть много общего, но программирование на Object Pascal менее сложное, чем на Cи++ за счет меньшего использования указателей, но программы создаваемые на Cи++ получаются более быстрыми, что при современном быстродействии компьютеров теряет свою актуальность.

Ассемблер

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

1) языки низкого уровня;

2) языки высокого уровня.

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

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

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

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

Паскаль

Язык программирования Паскаль был разработан профессором кафедры вычислительной техники Швейцарского Федерального института технологии Николасом Виртом в 1968 году как альтернатива существующим и все усложняющимся языкам программирования, таким, как PL/1, Algol, Fortran. Интенсивное развитие Паскаля привело к появлению уже в 1973 году его стандарта в виде пересмотренного сообщения, а число трансляторов с этого языка в 1979 году перевалило за 80.

В начале 80-х годов Паскаль еще более упрочил свои позиции с появлением трансляторов MS-Pascal и Turbo-Pascal для ПЭВМ. С этого времени Паскаль становится одним из наиболее важных и широко используемых языков программирования. Существенно то, что язык давно вышел за рамки академического и узко профессионального интереса и используется в большинстве университетов высокоразвитых стран не только как рабочий инструмент пользователя. Важнейшей особенностью Паскаля является воплощенная идея структурного программирования. Другой существенной особенностью является концепция структуры данных как одного из фундаментальных понятий.

Основные причины популярности Паскаля заключаются в следующем:

- простота языка позволяет быстро его освоить и создавать алгоритмически сложные программы

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

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

- оптимизирующие свойства трансляторов с Паскаля позволяют создавать эффективные программы. Это послужило одной из причин использования Паскаля в качестве языка системного программирования

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

При описании достоинств Паскаля нужно сказать, что он является прототипом для языков нового поколения (среди которых следует отметить языки Ada и Modula-II). Паскаль дает очень много в понимании сущности программирования, он прививает хороший стиль программирования, тщательную разработку алгоритма. Преимущества этого языка особенно ощутимы при написании достаточно сложных и мобильных (т. е. легко переносимых на другие PC) программ.

Си

Сотрудник фирмы Bell Labs Денис Ритчи создал язык Си в 1972 году во время совместной работы с Кеном Томпсоном, как инструментальное средство для реализации операционной системы Unix, однако популярность этого языка быстро переросла рамки конкретной операционной системы и конкретных задач системного программирования. В настоящее время любая инструментальная и операционная система не может считаться полной если в ее состав не входит компилятор языка Си.

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

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

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

Си - эффективный язык. Его структура позволяет наилучшим образом использовать возможности современных ПЭВМ. Программирование на этом языке отличается компактностью и быстротой исполнения.

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

Си - мощный и гибкий язык. Большая часть операционной системы Unix, компиляторы и интерпретаторы языков Фортран, Паскаль, Лисп, и Бейсик написаны именно с его помощью.

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

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

Си++

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

Очевидно, что больше всего C++ позаимствовал из языка Си, а также из непосредственного его предшественника языка BCPL. Эти заимствования обеспечили C++ мощными средствами низкого уровня, позволяющие решать сложные задачи системного программирования. Но что в первую очередь отличает C++ от Си - это разная степень внимания к типам и структурам данных. Это связанно с появлением понятий класса, производного класса и виртуальной функции, перенятых в свою очередь из языка Симула 67. Это дает в C++ более эффективные возможности для контроля типов и обеспечивает модульность программы.

По мнению автора языка, различие между идеологией Си и C++ заключается примерно в следующем: программа на Си отражает “способ мышления” процессора, а C++ - способ мышления программиста. Отвечая требованиям современного программирования, C++ делает акцент на разработке новых типов данных наиболее полно соответствующих концепциям выбранной области знаний и задачам приложения. Класс является ключевым понятием C++. Описание класса содержит описание данных, требующихся для представления объектов этого типа и набор операций для работы с подобными объектами.

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

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

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

Фортран

Фортран широко распространенный язык, особенно среди пользователей, которые занимаются численным моделированием. Это объясняется несколькими причинами:

- существованием огромных фондов прикладных программ на Фортране, накопленных за эти годы, а также наличием огромного количества программистов, эффективно использующих этот язык;

- наличием эффективных трансляторов Фортрана на всех типах ЭВМ, причем версии для различных машин достаточно стандартизированы и перенос программ с машины на машину обычно не составляет больших трудностей;

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

За прошедший период сформировалась новая методология и философия программирования. С начала 70-х годов Фортран подвергался заслуженной критике. В 1977 году был принят новый стандарт языка Фортран-77. На создание нового стандарта ушло много времени, но сейчас уже можно считать, что его разработка завершена и новый стандарт Фортран-90 начал входить в практику пользователей Фортрана. Только на машинах типа IBM PC существует несколько трансляторов например, Watfor, Lap-Fortran и т. д. Но наибольшее распространение на машинах этого типа получили различные версии транслятор Fortran-77. Выпущенный в 1990 году транслятор MS-Fortran 5.0 практически полностью соответствует стандарту Fortran-90.

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

Ада

Язык создан в основном в 1975 - 1980 годах в результате грандиозного проекта, предпринятого Министерством Обороны США с целью разработать единый язык программирования для так называемых встроенных систем (т. е. систем управления автоматизированными комплексами, работающими в реальном времени). Имелись в виду прежде всего бортовые системы управления военными объектами (кораблями, самолетами, танками, ракетами, снарядами и т. п.). Поэтому решения, принятые авторами Ады не следует считать универсальными. Их нужно воспринимать в контексте особенностей выбранной предметной области.

Язык Ада возник в результате международного конкурса языковых проектов проходящего в 1978-1979 годах. Участники должны были удовлетворить довольно жестким, детально разработанным под эгидой Министерства Обороны США требованиям. Интересно, что все языки, дошедшие до последних туров этого конкурса, были основаны на Паскале. В этой связи Аду можно предварительно охарактеризовать как Паскаль, развитый с учетом перечисленных выше пяти основных требований. При этом авторы пошли в основном по пути расширения Паскаля новыми элементами. В результате получился существенно более сложный язык.

Кобол

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

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

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

ПЛ/1

ПЛ/1 разработан в 1964-1965 годах фирмой IBM. ПЛ/1 относится к числу универсальных языков, т. е. позволяет решать задачи из разных областей: численные расчеты, текстовая обработка, экономические задачи и т. д. По своим возможностям он перекрывает такие языки, как Фортран, Алгол-60 (созданный для численных расчетов), Кобол (для экономических задач), хотя в силу ряда причин вытеснить эти языки ПЛ/1 не смог.

ПЛ/1 содержит все основные конструкции, характерные для так называемых языков высокого уровня, а также ряд специфичных средств, удобных для практического программирования. Язык напоминает конструктор с большим числом деталей - пользователю достаточно освоить только те части языка, которые ему практически необходимы. Его операторы довольно емки, что часто позволяет получить запись программы более компактную, чем на других языках. Знающий ПЛ/1 программист без труда осваивает любой другой язык того же или близкого класса.

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

Модула

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

В отличие от Паскаля, который был по замыслу языком для обучения программирования, Модула с самого начала представлял собой язык для профессиональных системных программистов, продолжая лучшие традиции своего предшественника и обогащая их новыми идеями, соответствующих таким требованиям к языкам программирования, как структурность, модульность и способность к расширению. Как и множество других языков программирования, Модула подвергалась эволюции, во время которой ее первоначальное название было переделано в имя Модула-2. Одновременно с развитием языка Модула для него создавались новые компиляторы, однако, ни один из них не мог соперничать с лучшими реализациями языков Паскаль и Си, например, разработанных фирмой Борланд. В этот переходный для языка Модула период лучшей считались реализации выполненные фирмой Logitech, которые по своим характеристикам проигрывала Турбо Паскалю и Турбо Си. Только в 1988 году после появления на американском рынке системы Top Speed, Модула-2 заняла достойное место среди процедурных языков, предназначенных для системного программирования.

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

Бейсик

Бейсик (Basic - Beginner's All-Purpose Symbolic Instruction Code - “универсальный символический код инструкций для начинающих”). Прямой потомок Фортрана и до сих пор самый популярный язык программирования для персональных компьютеров. Появился Бейсик в 1963 году (назвать автора было бы трудно, но основная заслуга в его появлении несомненно принадлежит американцам Джону Кемени и Томасу Курцу). Как и любые преимущества, простота Бейсика оборачивалась, особенно в ранних версиях трудностями структурирования; кроме того, Бейсик не допускал рекурсию - интересный прием, позволяющий составлять эффективные и в то же время короткие программы.

Разработаны мощные компиляторы Бейсика, которые обеспечивают не только богатую лексику и высокое быстродействие, но и возможность структурного программирования. По мнению некоторых программистов, наиболее интересными версиями являются GWBASIC, Turbo-Basic и Quick Basic.

В свое время появление Quick Basic ознаменовало рождение второго поколения систем программирования на языке Бейсик. Он предоставлял возможность модульного и процедурного программирования, создания библиотек, компиляции готовых программ и прочее, что вывело его на уровень таких классических языков программирования, как Си, Паскаль, Фортран и др. Более того, в связи с отсутствием официального стандарта языка Бейсик, его реализация в виде Quick Basic стала фактическим стандартом. Безусловными лидерами среди различных версий Бейсика были Quick Basic 4.5 и PDS 7.1 фирмы Microsoft, появившиеся в конце 80-х годов.

Лисп

Язык Лисп был предложен Дж. Маккарти в работе в 1960 году и ориентирован на разработку программ для решения задач не численного характера. Английское название этого языка - LISP является аббревиатурой выражения LISt Processing (обработка списков) и хорошо подчеркивает основную область его применения. Понятие “список” оказалось очень емким. В виде списков удобно представлять алгебраические выражения, графы, элементы конечных групп, множества, правила вывода и многие другие сложные объекты. Списки являются наиболее гибкой формой представления информации в памяти компьютеров. Неудивительно поэтому, что удобный язык, специально предназначенный для обработки списков, быстро завоевал популярность.

После появления Лиспа различными авторами был предложен целый ряд других алгоритмических языков ориентированных на решение задач в области искусственного интеллекта, среди которых можно отметить Плэнер, Снобол, Рефал, Пролог. Однако это не помешало Лиспу остаться наиболее популярным языком для решения таких задач. На протяжении почти сорокалетней истории его существования появился ряд диалектов этого языка: Common LISP, Mac LISP, Inter LISP, Standard LISP и др. Различия между ними не носят принципиального характера и в основном сводятся к несколько отличающемуся набору встроенных функций и некоторой разнице в форме записи программ. Поэтому программист, научившийся работать на одном из них без труда сможет освоить и любой другой.

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

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

Пролог

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

SQL

SQL принципиально отличается от традиционных алгоритмических языков программирования прежде всего тем, что он относится к непроцедурным языкам. На языке типа Кобол или Си можно записать шаг за шагом все инструкции, необходимые для исполнения программы. Язык SQL позволяет задать только то, “что нужно делать”, а само исполнение отдельных операций (“как делать”) возлагается непосредственно на СУБД. Такой подход в значительной мере определяется самой философией реляционных баз данных. СУБД в данном случае рассматривается как “черный ящик”, и что происходит внутри него, пользователя не должно касаться. Его должно интересовать только внесение в базу данных необходимых изменений и получение правильного ответа на запрос.

Другой особенностью SQL является так называемая трехзначная логика. В большинстве языков булево выражение может принимать только два значения: истина и ложь. Язык SQL позволяет записывать в базу данных значение NULL (пустое значение). NULL - это специальный код, который помещается в столбец таблицы, если по какой-нибудь причине в нем отсутствуют данные. Когда значение NULL участвует в операциях сравнения, булев результат будет ни истина и ни ложь, а неизвестно.

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

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

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

Есть две разновидности статического SQL: встроенный и модульный.

Встроенный SQL определен как код SQL, который включен в исходный текст программы, написанной на другом языке программирования. В реальной жизни большинство приложений разрабатываются на алгоритмических языка (например, Си или Кобол), однако для обращения к БД используется встроенный SQL.

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

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

Операторы динамического SQL обычно применяются в диалоговых средах для построения запросов и в графических средствах разработки приложений БД.

Object PAL

Object PAL является мощным языком программирования. Object PAL представляет собой объектно-ориентированный, управляемый по событиям, визуальный язык программирования.

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

Также Object PAL предоставляет все средства полнофункционального языка программирования в среде Windows. Можно использовать Object PAL для создания законченных систем, в которых реализованы специальная система меню, справочная система, а также всевозможные проверки данных. В Object PAL можно сохранить свои наработки в динамически компонуемой библиотеке, доступ к которой будут иметь несколько форм. Кроме того, можно установить связь с другими динамическими библиотеками, содержащие прграммы написанные на таких языках как Си, C++ или Паскаль.

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

Object PAL поддерживает механизм динамического обмена данными в качестве как клиента, так и сервера. Кроме того, Object PAL поддерживает в качестве клиента механизм работы с составными документами.

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

ALGOL 68: ALGOrithmic Language 1968

Язык получил звание «самой великолепной комбинации успеха в теории и провала на практике» среди языков программирования. ALGOL 68 - язык, созданный в качестве альтернативы существовавшему уже на тот момент ALGOL 60. Это детище печально известного сообщества «бунтарей», у которых отлично получалось вызывать в программистской среде сплетни и агрессию по отношению к себе. Хотя язык сам по себе сейчас практически не используется, он служит вечным напоминанием потомкам о том, как не надо делать «креатив». ALGOL 68 был первым языком (и, надо признаться, и по сей день остается одним из очень немногих), официальная спецификация которого появилась раньше, чем реализация. Правда, спецификация эта была совершенно нечитабельной и немедленно принесла проекту репутацию чересчур «навороченного».

То, что ALGOL 68 и в самом деле был сложным, громоздким и содержал в себе множество загадочных операторов, так же верно, как и то, что это был первый действительно универсальный язык. Именно он стал «идейным вдохновителем» для создателей С и Bourne Shell. Благодаря ALGOL 68 параллельная обработка данных упростилась до такой степени, что даже современные языки типа Java и С++ до сих пор не добрались до его уровня.

ALGOL 68 скоропостижно скончался, так и не успев толком пожить. Благодаря невнятности спецификации членам комитета разработчиков ничего не стоило утопить проект еще до того, как люди смогли реально оценить его достоинства и недостатки.

dBase

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

Большим достижением фирмы Борланд явилось то, что она очень удачно совместила объектные и процедурные приемы программирования.

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

HTML

Термин HTML (HyperText Markup Language) означает "язык маркировки (разметки) гипертекстов". Первую версию HTML разработал сотрудник Европейской лаборатории физики элементарных частиц Тим Бернерс-Ли.

Язык HTML был необходим для статического размещения страниц во “Всемирной паутине” WWW (World Wide Web).

Со времени создания первой версии HTML претерпел некоторые изменения. Как и многое другое в компьютерном мире, версии, или спецификации, HTML оказались пронумерованными. Известны спецификации 2.0, 3.0 и 3.2.

Java

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

Язык Java потребовался для создания интерактивных продуктов для сети Internet. Фактически, большинство архитектурных решений, принятых при создании Java, было продиктовано желанием предоставить синтаксис, сходный с Си и Cи++. В Java используются практически идентичные соглашения для объявления переменных, передачи параметров, операторов и для управления потоком выполнением кода. В Java добавлены все хорошие черты C++.


Подобные документы

  • Знакомство с наиболее известными технологиями программирования. Особенности разработки программ для вычисления интеграла по формуле средних прямоугольников. Общая характеристика методов структурного программирования. Рассмотрение формулы Симпсона.

    курсовая работа [1,3 M], добавлен 03.03.2015

  • Понятия языка программирования, разновидности и характеристика языков. Исторический обзор их создания и применения. Классификация, примеры использования. Характеристики языков программирования с точки зрения элементов объектной модели, их популярность.

    реферат [463,6 K], добавлен 07.09.2009

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

    презентация [1,8 M], добавлен 05.11.2016

  • Понятия структурного программирования и алгоритма решения задачи. Краткая история развития языков программирования от машинных до языков ассемблера и языков высокого уровня. Процедурное программирование на C#. Методы и программы для моделирования.

    учебное пособие [1,7 M], добавлен 26.10.2010

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

    курсовая работа [400,6 K], добавлен 10.11.2016

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

    курсовая работа [19,5 K], добавлен 19.05.2011

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

    презентация [1,9 M], добавлен 01.05.2011

  • Рассмотрение общих сведений и уровней языков программирования. Ознакомление с историей развития, использования языков программирования. Обзор достоинств и недостатков таких языков как Ассемблер, Паскаль, Си, Си++, Фортран, Кобол, Бейсик, SQL, HTML, Java.

    курсовая работа [759,5 K], добавлен 04.11.2014

  • Машинные коды и ассемблер. Первые языки программирования высокого уровня. Язык программирования FORTRAN. Достоинства и недостатки ALGOL. Научные и бухгалтерские программы. Основные принципы, которые соблюдались при создании языка программирования Basic.

    курсовая работа [407,4 K], добавлен 21.06.2014

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

    курсовая работа [231,5 K], добавлен 23.06.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.