Автор работы: Пользователь скрыл имя, 06 Сентября 2013 в 20:47, реферат
Цель работы – исследовать виды языков программирования тенденцию развития, иерархию и способы программирования.
В процессе выполнения работы необходимо было проделать следующее.
Изучение языка Ассемблера
Изучение языков высокого уровня
Изучение объектно-ориентированных языков
Изучение парадигм программирования
ВВЕДЕНИЕ 3
1. ЯЗЫК АССЕМБЛЕРА 4
2.ЯЗЫКИ ВЫСОКОГО УРОВНЯ................................................................................................8
2.1 FORTRAN................................................................ ........ ... ....... .........................................10
2.2 LISP..................................................................... ...... .......... ........................ . ......................12
3. ОБЪЕКТНО-ОРИЕНТИРОВАННЫЕ ЯЗЫКИ 14
3.1 ЯЗЫК С++ 15
4. ПАРАДИГМЫ ПРОГРАММИРОВАНИЯ: 18
4.1 Процедурное программирование 18
4.2-Модульное программирование 18
4.3-Абстракция данных 18
4.4-Объектно-ориентированное программирование 19
4.5-Поддержка абстракции данных 21
4.6-Поддержка объектно-ориентированного программирования 21
ЗАКЛЮЧЕНИЕ 23
ЛИТЕРАТУРА.............................................................................................................................239
Безусловно С++ многим обязан языку С, который сохраняется как его подмножество. Сохранены и все свойственные С средства низкого уровня, предназначенные для решения самых насущных задач системного программирования. С, в свою очередь, многим обязан своему предшественнику языку BCPL . Комментарий языка BCPL был восстановлен в С++. Еще одним источником вдохновения был язык SIMULA-67; именно из него была заимствована концепция классов (вместе c производными классами и виртуальными функциями). Возможность в С++ перегрузки операций и свобода размещения описаний всюду, где может встречаться оператор, напоминают язык Алгол-68.
Выбор С в качестве базового языка для С++ объясняется следующими его достоинствами:
(1) универсальность, краткость и относительно низкий уровень;
(2) адекватность большинству
(3) он идет в любой системе и на любой машине;
(4) полностью подходит для
В С существуют свои проблемы, но в языке, разрабатываемом "с нуля" они появились бы тоже, а проблемы С, по крайней мере, хорошо известны. Более важно то, что ориентация на С позволила использовать язык "С с классами" как полезный (хотя и не очень удобный) инструмент в течение первых месяцев раздумий о введении в С классов в стиле Симулы.
С++ стал использоваться шире, но по мере роста его возможностей, выходящих за пределы С, вновь и вновь возникала проблема совместимости. Ясно, что отказавшись от части наследства С, можно избежать некоторых проблем. Это не было сделано по следующим причинам:
(1) существуют миллионы строк программ на С, которые можно улучшить с помощью С++, но при условии, что полной переписи их на язык С++ не потребуется;
(2) существуют миллионы строк библиотечных функций и служебных программ на С, которые можно было бы использовать в С++ при условиях совместимости обоих языков на стадии связывания и их большого синтаксического сходства;
(3) существуют сотни тысяч программистов, знающих С; им достаточно овладеть только новыми средствами С++ и не надо изучать основ языка;
(4) поскольку С и С++ будут использоваться одними и теми же людьми на одних и тех же системах многие годы, различия между языками должны быть либо минимальными, либо максимальными, чтобы свести к минимуму количество ошибок и недоразумений. Описание С++ было переработано так, чтобы гарантировать, что любая допустимая в обоих языках конструкция означала в них одно и то же.
Как язык, так и стандартные библиотеки С++ проектировались в расчете на переносимость. Имеющиеся реализации языка будут работать в большинстве систем, поддерживающих С. В программах на С++ можно использовать библиотеки С. Большинство служебных программ, рассчитанных на С, можно использовать и в С++.
Язык С сам развивался в последние несколько лет, что отчасти было связано с разработкой С++. Стандарт ANSI для С содержит, например, синтаксис описания функций, позаимствованный из языка "С с классами". Происходит взаимное заимствование, например, тип указателя void* был придуман для ANSI С, а впервые реализован в С++. Как было обещано в первом издании этой книги, описание С++ было доработано, чтобы исключить неоправданные расхождения. Теперь С++ более совместим с языком С, чем это было вначале ($$R.18). В идеале С++ должен максимально приближаться к ANSI C, но не более. Стопроцентной совместимости никогда не было и не будет, поскольку это нарушит надежность типов и согласованность использования встроенных и пользовательских типов, а эти свойства всегда были одними из главных для С++.
Для изучения С++ не обязательно знать С. Программирование на С способствует усвоению приемов и даже трюков, которые при программировании на С++ становятся просто ненужными. Например, явное преобразование типа (приведение) , в С++ нужно гораздо реже, чем в С (см. "Замечания для программистов на С" ниже). Тем не менее, хорошие программы на языке С по сути являются программами на С++. Например, все программы из классического описания С являются программами на С++. В процессе изучения С++ будет полезен опыт работы с любым языком со статическими типами.
В проекте С++ особое внимание уделяется структурированию программы. Это вызвано увеличением размеров программ со времени появления С. Небольшую программу (скажем, не более 1000 строк) можно заставить из упрямства работать, нарушая все правила хорошего стиля программирования. Однако, действуя так, человек уже не сможет справиться с большой программой. Если у вашей программы в 10 000 строк плохая структура, то вы обнаружите, что новые ошибки появляются в ней так же быстро, как удаляются старые. С++ создавался с целью, чтобы большую программу можно было структурировать таким образом, чтобы одному человеку не пришлось работать с текстом в 25000 строк. В настоящее время можно считать, что эта цель полностью достигнута.
Существуют, конечно, программы
еще большего размера. Однако
те из них, которые
К сожалению, не всякую
часть программы можно хорошо
структурировать, сделать
Язык программирования С++ задумывался как язык, который будет:
- лучше языка С;
- поддерживать абстракцию данных;
-поддерживать объектно-
С++ - язык общего назначения
и задуман для того, чтобы настоящие
программисты получили
Ключевым понятием С++ является класс. Класс - это определяемый пользователем тип. Классы обеспечивают упрятывание данных, их инициализацию, неявное преобразование пользовательских типов, динамическое задание типов, контролируемое пользователем управление памятью и средства для перегрузки операций. В языке С++ концепции контроля типов и модульного построения программ реализованы более полно, чем в С. Кроме того, С++ содержит усовершенствования, прямо с классами не связанные: символические константы, функции-подстановки, стандартные значения параметров функций, перегрузка имен функций, операции управления свободной памятью и ссылочный тип. В С++ сохранены все возможности С эффективной работы с основными объектами, отражающими аппаратную "реальность" (разряды, байты, слова, адреса и т.д.). Это позволяет достаточно эффективно реализовывать пользовательские типы.
Объектно-ориентированное
программирование - это метод программирования,
способ написания "хороших"
программ для множества задач.
Если этот термин имеет какой-
Нельзя сказать, что
один язык лучше другого
Язык С++ проектировался для поддержки абстракции данных и объектно-ориентированного программирования в добавление к традиционному стилю С. Впрочем, это не значит, что язык требует какого-то одного стиля программирования от всех пользователей.
Первоначальной (и, возможно, наиболее используемой) парадигмой программирования было:
Определите, какие процедуры вам нужны; используйте лучшие из известных вам алгоритмов!
Ударение делалось на
обработку данных с помощью
алгоритма, производящего
Со временем в проектировании программ акцент сместился с организации процедур на организацию структур данных. Помимо всего прочего это вызвано и ростом размеров программ. Модулем обычно называют совокупность связанных процедур и тех данных, которыми они управляют.
Парадигма программирования приобрела вид:
Определите, какие модули
нужны; поделите программу так,
Эта парадигма известна
также как "принцип сокрытия
данных". Если в языке нет
возможности сгруппировать
Поскольку данные есть единственная вещь, которую хотят скрывать, понятие упрятывания данных тривиально расширяется до понятия упрятывания информации, т.е. имен переменных, констант, функций и типов, которые тоже могут быть локальными в модуле. Хотя С++ и не предназначался специально для поддержки модульного программирования, классы поддерживают концепцию модульности ($$5.4.3 и $$5.4.4). Помимо этого С++, естественно, имеет уже продемонстрированные возможности модульности, которые есть в С, т.е. представление модуля как отдельной единицы трансляции.
Модульное программирование предполагает группировку всех данных одного типа вокруг одного модуля, управляющего этим типом.
Конечно такое решение
намного лучше, чем хаос, свойственный
традиционным, неструктурированным
решениям, но моделируемые таким
способом типы совершенно
Тип, реализуемый управляющим
им модулем, по многим важным
аспектам существенно
Иными словами, концепция
модульности, поддерживающая
В языках Ада, Clu, С++ и подобных им эта трудность преодолевается благодаря тому, что пользователю разрешается определять свои типы, которые трактуются в языке практически так же, как встроенные. Такие типы обычно называют абстрактными типами данных, хотя лучше, пожалуй, их называть просто пользовательскими. Более строгим определением абстрактных типов данных было бы их математическое определение. Если бы удалось его дать, то, что мы называем в программировании типами, было бы конкретным представлением действительно абстрактных сущностей.
Парадигму же программирования можно выразить теперь так:
Определите, какие типы
вам нужны; предоставьте
Если нет необходимости
в разных объектах одного типа,
то стиль программирования, суть
которого сводится к
Большинство модулей
(хотя и не все) лучше
Объектно-ориентированное
программирование наилучшим