Автор работы: Пользователь скрыл имя, 28 Мая 2013 в 18:53, контрольная работа
По мере развития вычислительной техники возникали разные методики программирования. На каждом этапе создавался новый подход, который помогал программистам с растущим усложнением программ.
Введение 3
Язык программирования 5
Начало развития 6
Классификация языков программирования 7
1. Машинно-ориентированные языки 7
1.1. Машинный язык 8
1.2. Языки символического кодирования 8
1.3. Автокоды 8
1.4. Макрос 9
2. Машинно-независимые языки 9
2.1. Проблемно – ориентированные языки 10
2.2. Универсальные языки 10
2.3. Диалоговые языки 11
2.4. Непроцедурные языки 11
Эволюция языков программирования 11
1. Ассемблер 13
2. Лисп 13
3. Фортран 14
4. Бейсик 15
5. Рефал 16
6. Пролог и Пролог ++ 17
7. Лекс 18
8. Cи 19
9. Си++ 19
Низкоуровневый язык программирования 22
Высокоуровневый язык программирования 24
Понятие об алгоритме 26
Разветвляющийся алгоритм 27
1. Словесный способ 28
2. Графический способ 28
Линейный алгоритм 29
Циклический алгоритм 30
Заключение 32
Си++ - это универсальный язык программирования, задуманный так, чтобы сделать программирование более приятным для серьезного программиста. За исключением второстепенных деталей Си++ является надмножеством языка программирования Cи. Помимо возможностей, которые дает Cи, Си++ предоставляет гибкие и эффективные средства определения новых типов. Используя определения новых типов, точно отвечающих концепциям приложения, программист может разделять разрабатываемую программу на легко поддающиеся контролю части. Такой метод построения программ часто называют абстракцией данных. Информация о типах содержится в некоторых объектах типов, определенных пользователем. Такие объекты просты и надежны в использовании в тех ситуациях, когда их тип нельзя установить на стадии компиляции. Программирование с применением таких объектов часто называют объектно-ориентированным. При правильном использовании этот метод дает более короткие, проще понимаемые и легче контролируемые программы.
Изначально Си++ был разработан, чтобы автору и его друзьям не приходилось программировать на ассемблере, Cи или других современных языках высокого уровня. Основным его предназначением было сделать написание хороших программ более простым и приятным для отдельного программиста. Плана разработки Си++ на бумаге никогда не было. Проект, документация и реализация двигались одновременно. Разумеется, внешний интерфейс Си++ был написан на Си++. Никогда не существовало "Проекта Си++" и "Комитета по разработке Си++". Поэтому Си++ развивался и продолжает развиваться во всех направлениях, чтобы справляться со сложностями, с которыми сталкиваются пользователи, а также в процессе дискуссий автора с его друзьями и коллегами.
В качестве базового языка для Си++ был выбран Cи, потому что он:
В Cи есть свои сложности, но в наспех спроектированном языке тоже были бы свои, а сложности Cи нам известны. Самое главное, работа с Cи позволила "Cи с Классами" быть полезным (правда, неудобным) инструментом в ходе первых месяцев раздумий о добавлении к Cи Simula-подобных классов.
Си++ стал использоваться шире, и по мере того, как возможности, предоставляемые им помимо возможностей Cи, становились все более существенными, вновь и вновь поднимался вопрос о том, сохранять ли совместимость с Cи. Ясно, что отказавшись от определенной части наследия Cи можно было бы избежать ряда проблем. Это не было сделано, потому что:
Позднее была проведена проверка определения Си++, чтобы удостовериться в том, что любая конструкция, допустимая и в Cи, и вСи++, действительно означает в обоих языках одно и то же.
Си++ был развит из языка программирования Cи и за очень немногими исключениями сохраняет Cи как подмножество. Базовый язык, Cи подмножество Си++, спроектирован так, что имеется очень близкое соответствие между его типами, операциями и операторами и компьютерными объектами, с которыми непосредственно приходится иметь дело: числами, символами и адресами. За исключением операций свободной памяти new и delete, отдельные выражения и операторы Си++ обычно не нуждаются в скрытой поддержке во время выполнения или подпрограммах.
Одним из первоначальных предназначений Cи было применение его вместо программирования на ассемблере в самых насущных задачах системного программирования. Когда проектировался Си++, были приняты меры, чтобы не ставить под угрозу успехи в этой области. Различие между Cи и Си++ состоит в первую очередь в степени внимания, уделяемого типам и структурам. Cивыразителен и снисходителен. Си++ еще более выразителен, но чтобы достичь этой выразительности, программист должен уделить больше внимания типам объектов. Когда известны типы объектов, компилятор может правильно обрабатывать выражения, тогда как в противном случае программисту пришлось бы задавать действия с мучительными подробностями. Знание типов объектов также позволяет компилятору обнаруживать ошибки, которые в противном случае остались бы до тестирования. Заметьте, что использование системы типов для того, чтобы получить проверку параметров функций, защитить данные от случайного искажения, задать новые операции и т.д., само по себе не увеличивает расходов по времени выполнения и памяти.
Особое внимание,
уделенное при разработке Си++
Естественно,
сложность написания и
Низкоуровневый язык программирования (язык программирования низкого уровня) — язык программирования, близкий к программированию непосредственно в машинных кодах используемого реального или виртуального (например, Java, Microsoft .NET) процессора. Для обозначения машинных команд обычно применяется мнемоническое обозначение. Это позволяет запоминать команды не в виде последовательности двоичных нулей и единиц, а в виде осмысленных сокращений слов человеческого языка (обычно английских).
Иногда одно
мнемоническое обозначение
Как правило, использует особенности конкретного семейства процессоров. Общеизвестный пример низкоуровнего языка — язык ассемблера, хотя правильнее говорить о группе языков ассемблера. Более того, для одного и того же процессора существует несколько видов языка ассемблера. Они совпадают в машинных командах, но различаются набором дополнительных функций (директив и макросов).
Низкий уровень
подразумевает не качество программ,
а уровень детализации
Для большинства
программ такой подробный и
Методы программирования для старых компьютеров были громоздкими, медленными и крайне ограниченными. Эти компьютеры программировались путем установки ряда переключателей (включено или выключено), каждый переключатель представлял одну двоичную единицу (или бит), принимая значение 0 или 1. Это сильно ограничивало возможности и занимало много времени.
Следующим этапом
было создание хранимых программ. Принцип
был таким же – использовался
двоичный машинный код, но информация
хранилась в памяти компьютера на
магнитных сердечниках. После этого
был сделан маленький шаг по введению
кода в виде, лучше поддающемся
управлению: в виде шестнадцатеричных
чисел (основание 16), в котором каждый
разряд представлялся четырьмя битами.
Этот тип программирования был еще
подвержен ошибкам, но дела улучшились
с появлением ассемблера. Ассемблер
позволял записывать программы с
помощью мнемонических
К языкам низкого уровня относят:
• машинные языки – языки кодов ЭВМ;
• машино - ориентированные языки – ассемблеры, мнемокоды.
Также к языкам низкого уровня условно можно причислить MSIL, применяемый в платформе Microsoft .NET, Форт, Java байт-код.
Реальный скачок в программировании был сделан при появлении языков высокого уровня: Алгола, Фортрана и, позднее, КОБОЛА. Эти языки позволяют писать программы текстом, похожим на английский язык. Компилятор получает каждую команду и преобразует ее в машинный код. Он позволяет использовать имена (переменные) для представления элементов данных так, что одна и та же программа может быть использована с любыми входными данными. Программы, написанные на языках высокого уровня, более компактны, легче для понимания, а вероятность появления в них ошибок меньше.
Недостаток этих программ в том, что компиляция часто приводит к избыточному коду, содержащему лишние сложные подпрограммы, включенные в конечную исполняемую программу. Это также уменьшает скорость работы программы.
Первым языком программирования высокого уровня считается компьютерный язык Plankalkül разработанный немецким инженером Конрадом Цузе ещё в период 1942-1946г. Однако транслятора для него не существовало до 2000 г. Первым в мире транслятором языка высокого уровня является ПП (Программирующая Программа), он же ПП-1, успешно испытанный в 1954 г. Транслятор ПП-2 (1955 г., 4-й в мире транслятор) уже был оптимизирующим и содержал собственный загрузчик и отладчик, библиотеку стандартных процедур, а транслятор ПП для ЭВМ Стрела-4 уже содержал и компоновщик (linker) из модулей. Однако, широкое применение высокоуровневых языков началось с возникновением Фортрана и созданием компилятора для этого языка.
Ранние языки высокого уровня были довольно специализированными: Фортран (FORmula TRANslation) был предназначен для использования в научных целях, КОБОЛ (Common business Orientated Language) – для использования в мире бизнеса. Появление в 50-х гг. языка BASIC (Beginners All-purpose Symbolic Instruction Code) закрыло существовавший в языках высокого уровня пробел между языками для науки и для бизнеса. BASIC в равной степени годится для любых задач и в то же время достаточно прост для изучения.
Тем временем были изобретены новые методы программирования, которые привели к новой волне языков высокого уровня. Одним из этих языков, выдержавших проверку временем, является основанный на методах структурного программирования Pascal.
Высокоуровневый язык программирования – язык программирования, разработанный для быстроты и удобства использования программистом. Основная черта высокоуровневых языков — это абстракция, то есть введение смысловых конструкций, кратко описывающих такие структуры данных и операции над ними, описания которых на машинном коде (или другом низкоуровневом языке программирования) очень длинны и сложны для понимания.
Так, высокоуровневые языки стремятся не только облегчить решение сложных программных задач, но и упростить портирование программного обеспечения. Использование разнообразных трансляторов и интерпретаторов обеспечивает связь программ, написанных при помощи языков высокого уровня, с различными операционными системами и оборудованием, в то время как их исходный код остаётся, в идеале, неизменным.
Такого рода оторванность высокоуровневых языков от аппаратной реализации компьютера помимо множества плюсов имеет и минусы. В частности, она не позволяет создавать простые и точные инструкции к используемому оборудованию. Программы, написанные на языках высокого уровня, проще для понимания программистом, но менее эффективны, чем их аналоги, создаваемые при помощи низкоуровневых языков. Одним из следствий этого стало добавление поддержки того или иного языка низкого уровня (язык ассемблера) в ряд современных профессиональных высокоуровневых языков программирования.
Примеры: C, C++, Visual Basic, Java, Python, PHP, Ruby, Perl, Delphi (Pascal). Языкам высокого уровня свойственно умение работать с комплексными структурами данных. В большинство из них интегрирована поддержка строковых типов, объектов, операций файлового ввода-вывода и т. п.
К языкам высокого уровня относят: