Автор работы: Пользователь скрыл имя, 24 Декабря 2011 в 08:20, доклад
Программирование как направление деятельности человека возникло одновременно с появлением первых вычислительных машин. Поэтому историю развития программирования нужно рассматривать параллельно с историей развития самих компьютеров. Ведь что у «программиста» эпохи фон Неймана, что у его сегодняшнего современника основная цель – подчинить машину желаниям человека, заставить ее выполнять нужные человеку действия. С течением времени разнились, менялись, эволюционировали только лишь способы достижения этой цели. Слово «компьютер» означает «вычислитель», т.е. устройство для вычислений. Потребность в вычислениях появилась у людей очень давно. Сначала использовали подручные средства такие, как счетные палочки или камешки, затем – более технологичные «устройства», например, счеты. Постепенно, с ростом технологического уровня цивилизации, росла и сложность таких устройств, и их вычислительная мощность.
В 1970 г. фирма Intel начала продавать интегральные схемы памяти . В том же году произошло еще одно знаменательное событие – та же Intel сконструировала интегральную схему, аналогичную по своим функциям центральному процессору большой ЭВМ. Так появился первый микропроцессор Intel-4004. В последующие годы выходили модернизированные версии этой схемы, и апогеем стал микропроцессор Intel-8080 (1974 г.), который до конца 70-х оставался стандартом для микрокомпьютерной индустрии. Здесь начал применяться т.н. принцип программной совместимости – когда программы, разработанные для одной ЭВМ, могут быть использованы для другой ЭВМ этой серии . Каждая новая модель семейства обладает более мощными техническими возможностями, чем предыдущие.
В 1975 г. появился первый коммерчески распространяемый компьютер на основе Intel-8080 под названием Альтаир-8800. Он был выпущен фирмой MITS, и продавался по цене всего в 500 долларов. Несмотря на довольно ограниченные возможности Альтаира, его появление было встречено с энтузиазмом, и в первые месяцы было продано несколько тысяч комплектов машины. В конце 1975 г. Пол Ален и Билл Гейтс (будущие основатели фирмы Microsoft) создали для Альтаира интерпретатор языка Basic, позволявшего пользователям достаточно просто общаться с компьютером и писать для него программы. Можно сказать, что именно Альтаир-8800 стал первым персональным компьютером. С этого момента интерес к компьютерам среди широкой массы людей стал расти в геометрической прогрессии.
Этот
этап знаменателен также появлением нескольких
новых ЯВУ. Первым стал Паскаль, созданный
в 1970 г. Он был создан ведущим в то время
специалистом в области программирования
Н.Виртом. Это очень простой и компактный
язык, его понятия близки к фундаментальным
понятиям математики. Благодаря этому
он завоевал свою популярность, и даже
по сей день используется для обучения
специалистов программированию как наиболее
полно отражающий базовые конструкции
любой разновидности ЯВУ.
Другой новинкой стал упомянутый ранее Basic (Beginner’s All-purpose Symbolic Instruction Code – универсальный код символических инструкций для начинающих). Первоначально он был разработан Дж. Келени и Т. Курцем из Дартмутского колледжа (США) в 1965 г. и предназначался для вводного курса по информатике. Однако благодаря своей простоте и возможности работы в диалоговом режиме этот язык быстро нашел призвание среди пользователей-непрограммистов. Важную роль в дальнейшем сыграет изобретенный в 1972 г. Денисом Ричи и Кеном Томпсоном из Bell Laboratories язык Си. Он похож на Паскаль, но исправляет его некоторые ошибки и содержит новые элементы. Си разрабатывался как мощный и гибкий язык. К сожалению, он не так легко читается как Паскаль, и предназначен скорее для корпоративных приложений. Тем не менее, пользователям он понравился, и был сделан переход от Паскаля к Си. Это ознаменовало собой переход от языков предыдущего поколения к сегодняшним языкам программирования . Также следует отметить, что Си использовался для разработки многих операционных систем в дальнейшем, так как сам разрабатывался для только что появившейся в то время системы UNIX .
На этом этапе появляются подвиды ЯВУ: Си и Паскаль относятся к структурным языкам программирования, тогда как ЛИСП – к функциональным.
Структурное программирование – методология программирования, базирующаяся на системном подходе к анализу, проектированию и реализации программного обеспечения. Структурное программирование предполагает точно обозначенные управляющие структуры, программные блоки, отсутствие инструкций безусловного перехода (GOTO), автономные подпрограммы, поддержку рекурсии и локальных переменных.
Эта
методология оказалась настолько жизнеспособной,
что и до сих пор является основной в большом
количестве проектов. Основу этой технологии
составляют следующие положения:
• Сложная
задача разбивается на более мелкие,
функционально лучше
• Простота управляющих структур, используемых в задаче. Это положение означает, что логически задача должна состоять из минимальной, функционально полной совокупности достаточно простых управляющих структур .
• Разработка программы должна вестись поэтапно. На каждом этапе должно решаться ограниченное число четко поставленных задач с ясным пониманием их значения и роли в контексте всей задачи . Если такого понимания не достигается, это говорит о том, что данный этап слишком велик и его нужно разделить на более мелкие шаги.
Функциональные же языки, как следует из названия, используют функцию как основную программную единицу. Программы на таких языках состоят из последовательного и/или рекурсивного вызова функций, одна из другой. Иногда такой подход является оправданным и более выразительным, нежели структурный.
Итог:
технология программирования на данном
этапе аналогична применявшейся
на предыдущем этапе, однако в самих
ЯВУ наблюдается тенденция к
упрощению, попытки вывести
IV этап (середина 70-х – настоящее время)
На этом этапе на смену чипам приходят БИС – большие интегральные схемы. Стали появляться многопроцессорные вычислительные системы такие, как B-7770 фирмы Burroughs, ILLIAC IV Иллинойского университета или советский «Эльбрус-2» . Также стали производиться дешевые и компактные мини и персональные ЭВМ, а на их основе формироваться вычислительные сети.
Успех Альтаир-8800 заставил многие фирмы также заняться производством компьютеров. Нарастающая конкуренция подталкивала производителей искать всё лучшие и лучшие решения. Компьютеры стали продаваться в полной комплектации, с мониторами и внешними устройствами, спрос на них стал составлять десятки, а затем и сотни тысяч штук в год. Такой ажиотаж привлек внимание фирмы IBM. Было принято решение создать собственный персональный компьютер IBM, и для решения этой задачи было сформировано специальное подразделение. Однако из-за недооценки руководством важности такого исследования денежных ресурсов было выделено не так много, и поэтому был дан «зеленый свет» на использование комплектующих, изготовленных другими производителями. И это сыграло только на руку исследователям: они выбрали новейший в то время процессор Intel-8088, значительно превосходивший все существовавшие тогда аналоги, а разработка программного обеспечения была поручено небольшой фирме Microsoft.
Результатом такой кооперации стало появление в августе 1981 г. нового компьютера IBM PC. Вскоре он приобрел большую популярность у пользователей, а через год – занял ведущее место на рынке, потеснив всех конкурентов. Фактически IBM PC стал стандартом персонального компьютера. Ключевым моментом жизнеспособности этой машины явилось использование принципа открытой архитектуры – возможности усовершенствования отдельных частей и использования новых устройств. Благодаря этому, на рынке появились сотни устройств и комплектующих для IBM PC.
Таким образом, пользователи могли покупать различные платы и устройства сторонних производителей и вставлять их в свой компьютер, никак не привязываясь к самой фирме IBM. С этого момента производство персональных компьютеров встало на конвейер: им стали заниматься многие фирмы, и IBM вскоре утратила свое ведущее положение. Однако, такая жесткая конкуренция, когда каждый производитель стремится выпустить новый компьютер, при этом сделать его быстрее и дешевле, выгодна конечному потребителю.
В частности, сейчас на рынке ведущую роль заняли производители деталей ЭВМ – такие как Intel и AMD в производстве процессоров или NVidia и ATI в производстве видеоадаптеров. В общем-то, можно сказать, что уже не играет роли фирма-производитель самого компьютера – ведь теперь, обладая всеми необходимыми компонентами, компьютер можно собрать самостоятельно в домашних условиях.
В области языков программирования любопытных новинок тоже появилось немало. Правда, следует уточнить, что эти новинки были скорее продолжениями идей предыдущего этапа.
Для начала отметим такой язык, как ADA. Этот ЯВУ был разработан по заказу Министерства обороны США в 1979 г. и назван так в честь первой программистки Ады Лавлейс, дочери Дж. Байрона, которая еще в XIX веке создавала первые программы для машины Бэббиджа. В этом языке использовано много идей из Паскаля и Алгола-68, а также заимствованы лучшие конструкции других языков.
ADA является
представителем модульных языков программирования.
Так же как и для структурной технологии
программирования, концепцию модульного
программирования можно сформулировать
в виде нескольких ключевых понятий и
положений:
• Функциональная декомпозиция задачи – разбиение большой задачи на ряд более мелких, функционально самостоятельных подзадач – модулей . Модули связаны между собой только по входным и выходным данным.
• Модуль – основа концепции модульного программирования. Каждый модуль в функциональной декомпозиции представляет собой «черный ящик» с одним входом и одним выходом .
• Реализуемые решения должны быть простыми и ясными. Если назначение модуля непонятно, то это говорит о том, что декомпозиция начальной или промежуточной задачи была проведена недостаточно качественно. В этом случае необходимо еще раз проанализировать задачу и, возможно, провести дополнительное разбиение на подзадачи. При наличии сложных мест в проекте их нужно подробно задокументировать с помощью продуманной системы комментариев. Этот процесс нужно продолжать до тех пор, пока действительно не будет достигнуто ясного понимания назначения всех модулей задачи и их оптимального сочетания.
Модульный подход позволяет безболезненно производить модернизацию программы в процессе ее эксплуатации и облегчает ее сопровождение. Дополнительно модульный подход позволяет разрабатывать части программ одного проекта на разных языках программирования, после чего с помощью компоновочных средств объединять их в единый загрузочный модуль.
Кроме этого подхода, в начале 80-х получил распространение еще один метод программирования – объектно-ориентированное программирование (ООП).
Идея ООП заключается в стремлении связать данные с обрабатывающими эти данные процедурами в единое целое – объект.
ООП основано на трех важнейших принципах, придающих объектам новые свойства.
Этими принципами являются инкапсуляция, наследование и полиморфизм. Инкапсуляция – объединение в единое целое данных и алгоритмов обработки этих данных. В рамках ООП данные называются переменными или полями объекта, а алгоритмы – функциями или методами объекта.
Наследование – свойство объектов порождать своих потомков. Объект-потомок автоматически наследует от родителей все поля и методы, может дополнять объекты новыми полями и заменять (перекрывать) методы родителя или дополнять их.
Полиморфизм – свойство родственных объектов (т.е. объектов, имеющих одного общего родителя) решать схожие по смыслу проблемы разными способами. Отметим, что на сегодняшний день ООП является одной из ведущих методологий в современных языках программирования.
Бьярн Страуструп оценил этот подход и на его основе разработал язык, получивший название «Си с классами» . Вскоре Си с классами превратился в отдельный язык С++ (Си плюс плюс), который был представлен общественности в 1983 г.
Классы – это такие программные абстракции, которые представляют собой как бы шаблон или тип объекта. Поэтому говорят, что объект является экземпляром того или иного класса. Это позволяет программировать любые объекты реального мира, вкупе со всеми их атрибутами (свойствами) и поведением (функциями, или методами). Ранее, в структурном программировании, приходилось работать с ограниченным набором типов данных, которые ограничивали уровень абстракции и были не очень удобны для представления объектов реального мира.
С++ был разработан как модификация Си при помощи ООП, при этом с сохранением скорости, присущей Си и возможности выполняться на различных платформах (видах компьютеров) . С++ часто используют для создания различных симуляций, в частности, компьютерных игр. Кроме С++, другим не менее ярким новшеством стал язык Java.
В начале 90-х интерактивное телевидение казалось технологией будущего . Sun Microsystems решила, что для интерактивного ТВ понадобится специальный, хорошо переносимый (с одного вида компьютеров на другой) язык программирования. Этим языком стал Java (Джава – сорт кофе; в данной технологии вообще много названий, связанных с этим напитком). В 1994 команде разработчиков пришлось сменить направление разработки – интерактивное ТВ оказалось пустой мечтой. Но Всемирная Сеть росла и развивалась. Решено было использовать Java как веб-язык. Пусть C++ почивает на лаврах эффективного языка, но он не обладает переносимостью Java! В 1995 году компания Netscape лицензирует Java для создания программы-броузера Сети (такой программы, при помощи которой пользователь осуществляет путешествия в Сети). Когда броузер увидел свет, Java показался языком будущего – настолько все было привлекательно и ново . Однако и у него оказались недостатки: проблемы с оптимизацией кода и, следовательно, с быстродействием, упрощение в сравнении с С++, что оттолкнуло от него некоторых серьезных программистов как от «детского языка». Несмотря на это, у Java есть и несомненные плюсы: использование ООП, поддержка интерфейсов, переносимость, автоматическая сборка «мусора», бОльшая простота изучения в сравнении с С++ . Можно сказать, что Java и С++ являются на данный момент основными языками для разработки приложений корпоративного уровня.
Информация о работе Технология программирования и основные этапы ее развития