Автор работы: Пользователь скрыл имя, 24 Марта 2014 в 15:21, лекция
Программирование можно рассматривать как искусство, науку, ремесло. Программирование -- это искусство получения ответов от машины. Для этого в узком смысле нужно составить специальный код для технического устройства, а в широком -- разработать программы на языках программирования, т. е. не просто составить код, а выполнить интеллектуальную работу по составлению высокоразумных программ для решения различных задач во всех сферах человеческой деятельности.
Программирование
Программирование можно рассматривать как искусство, науку, ремесло. Программирование -- это искусство получения ответов от машины. Для этого в узком смысле нужно составить специальный код для технического устройства, а в широком -- разработать программы на языках программирования, т. е. не просто составить код, а выполнить интеллектуальную работу по составлению высокоразумных программ для решения различных задач во всех сферах человеческой деятельности.
Программирование -- процесс описания последовательности действий решения задачи средствами конкретного языка программирования и оформление результатов описания в виде программы. Эта работа требует точности, аккуратности и терпения. Команды машине должны формулироваться абсолютно четко и полно, не должны содержать никакой двусмысленности.
На начальном этапе составлением программ для ЭВМ занимались сами изготовители вычислительных машин. Постепенно, с развитием техники, этот процесс из рутинной работы превратился в интеллектуальную деятельность, сравнимую с искусством, т. к. трудоемкое, ручное составление программ было подобно решению сложных комбинационных задач, которое требовало научных знаний и мастерства. Возникла потребность в людях со специальной подготовкой и особым складом ума, которых называют программистами. Овладев необходимыми знаниями, научившись грамотно и творчески применять их в повседневной работе, программист может стать незаменимым специалистом в своей области деятельности. Отмечается, что «программист должен обладать способностью первоклассного математика к абстрактному и логическому мышлению в сочетании с эдисоновским талантом сооружать все что угодно из О и 1. Он должен сочетать аккуратность бухгалтера с проницательностью разведчика, фантазию автора детективов с трезвой практичностью экономиста».
Программист -- одна из самых востребованных специальностей в современном обществе.
С 1970--1980-х гг. программирование как новая научная дисциплина занимается методами разработки программных продуктов. Оно включает комплекс вопросов, связанных с написанием специ-фикаций, проектированием, кодированием, тестированием и функ-ционированием программ для ЭВМ. Для разработки программного обеспечения применяются следующие методы: математические, ин-женерных расчетов и управления.
Уровень программирования определяется четырьмя взаимосвя-занными факторами развития: возможностями компьютеров, теори-ей и языками, искусством и технологией программирования.
Профессиональное программирование -- вполне прагматичная деятельность, направленная на получение реального программного продукта, которое требует высокой теоретической подготовленности не только в области знания языков программирования и принципов создания программ, но и в области математики, системного анализа, исследования операций, системотехники и др. Программист должен хорошо ориентироваться в уже имеющемся программном обеспечении вычислительной техники и автоматизированных систем, программной защите информации, стандартизации и лицензирова-нии программных продуктов.
Системным программированием, т. е. разработкой средств сис-темного программного обеспечения (ПО) и системы программирова-ния, занимаются системные программисты. Прикладным програм-мированием, т. е. разработкой прикладных программ, занимаются прикладные программисты. Умение хорошо программировать -- ос-новное условие успешной профессиональной деятельности программиста. Научиться этому можно, лишь многократно программируя разные задачи, проходя путь от ее постановки до работающей программы.
Для непосредственного решения задач программист должен:
* осознать задачу;
* составить план общего решения;
* выполнить план, т. е. преобразовать его в определенную по-следовательность действий;
* проверить результат решения, убедиться в его правильности. Чтобы все это выполнить, специалист должен многое знать и
уметь.
История развития программирования
С глубокой древности известны попытки создать устройства, ус-коряющие и облегчающие процесс вычислений. Еще древние греки и римляне применяли приспособление, подобное счетам, -- абак. Такие устройства были известны и в странах Древнего Востока. В XVM в. немецкие ученые В. Шиккард (1623), Г.Лейбниц (1673) и французский ученый Б. Паскаль (1642) создали механические вы-числительные устройства -- предшественники всем известного арифмометра. Вычислительные машины совершенствовались в те-чение нескольких веков. Но при этом не применялось понятие «программа и программирование».
Только в начале XIX в. (1830) английский ученый, профессор математики Кэмбриджского университета Чарльз Бэббидж, анализи-руя результаты обработки переписи населения во Франции, теорети-чески исследовал процесс выполнения вычислений и обосновал ос-новы архитектуры вычислительной машины. Работая над проектом аналитической машины -- «Машины для исчисления разностей», Ч. Бэббидж предсказал многие идеи и принципы организации и работы современных ЭВМ, в частности принцип программного управления и запоминаемой программы. Общая увлеченность наукой дала ученому и Аде Лавлейс (1815--1852) долгие годы плодотворного со-трудничества. В 1843 г. она перевела статью Менабреа по лекциям Ч. Бэббиджа, где в виде подробных комментариев (по объему они превосходили основной текст) сформулировала главные принципы программирования аналитической машины. Она разработала первую программу (1843) для машины Бэббиджа, убедила его в необходимо-сти использования в изобретении двоичной системы счисления вме-сто десятичной, разработала принципы программирования, предусматривающие повторение одной и той же последовательности команд при определенных условиях. Именно она предложила термины «рабочая ячейка» и «цикл». А. Лавлейс составила первые программы для решения системы двух уравнений и вычисления чисел Бернулли по довольно сложному алгоритму и предположила, что со временем аналитическая машина будет сочинять музыкальные произведения, рисовать картины и использоваться в практической и научной дея-тельности. Время подтвердило ее правоту и точность прогнозов. Своими работами А. Лавлейс заложила теоретические основы про-граммирования и по праву считается первым в мире программистом и основоположником научного программирования.
В 1854 г. английский математик Джордж Буль опубликовал кни-гу «Законы мышления», в которой развил алгебру высказываний --Булеву алгебру. На ее основе в начале 80-х гг. XIX в. построена тео-рия релейно-контактных схем и конструирования сложных дискрет-ных автоматов. Алгебра логики оказала многогранное влияние на развитие вычислительной техники, являясь инструментом разработ-ки и анализа сложных схем, инструментом оптимизации большого числа логических элементов, из многих тысяч которых состоит со-временная ЭВМ.
Идеи Ч. Бэббиджа реализовал американский ученый Г. Холлерит, который с помощью построенной счетно-аналитической маши-ны и перфокарт за три года обработал результаты переписи населе-ния в США по состоянию на 1890 г. В машине впервые было ис-пользовано электричество. В 1896 г. Холлеритом была основана фирма по выпуску вычислительных перфорационных машин и пер-фокарт.
В 1936 г. английский математик А. Тьюринг ввел понятие ма-шины Тьюринга, как формального уточнения интуитивного понятия алгоритма. Ученый показал, что любой алгоритм в некотором смысле может быть реализован на машине Тьюринга, а следователь-но, доказывал возможность построения универсальной ЭВМ. И та, и другая машины аналогично могут быть снабжены исходными данными решаемой задачи и программой ее решения. Машину Тьюринга можно считать как бы идеализированной моделью универ-сальной ЭВМ.
В 40-х гг. XX в. механическая элементная база вычислительных машин стала заменяться электрическими и электронными устройствами. Первые электромеханические машины были созданы в Германии К. Цузе (Ц-3, 1941 г.) и в США под руководством профессора Гарвардского университета Г. Айкена (МАРК-1, 1944 г.). Первая электронная машина создана в США группой инженеров под руководством доктора Пенсильванского университета Дж. Мочли и аспиранта Дж. Экксрта (ЭНИАК -- электронный числовой интегратор и калькулятор, 1946 г.). В 1949 г. в Англии была построена EDSAC -- первая машина, обладающая автоматическим программным управ-лением, внутренним запоминающим устройством и другими необхо-димыми компонентами современных ЭВМ.
Логические схемы вычислительных машин были разработаны в конце 1940-х гг. Дж. фон Нейманом, Г. Гольдстайном и А. В. Берксом. Особый вклад в эту работу внес американский математик Джон фон Нейман, принимавший участие в создании ЭНИАК. Он предложил идею хранения команд управления и данных в машин-ной памяти и сформулировал основные принципы построения современных ЭВМ. ЭВМ с хранимой программой оказались более быстродействующими и гибкими, чем ранее созданные.
В 1951 г. в США было налажено первое серийное производство электронных машин УНИВАК (универсальная автоматическая вы-числительная машина). В это же время фирма IBM начала серий-ный выпуск машины IBM/701.
В СССР первыми авторами ЭВМ, изобретенной в декабре 1948 г., являются И. С. Брук и Б. И. Рамеев. А первая советская ЭВМ с сохраняющейся программой создана в 1951 г. под руково-дством С. А Лебедева (МЭСМ -- малая электронная счетная маши-на). В 1953 г. в Советском Союзе начался серийный выпуск машин, первыми их которых были БЭСМ-1, «Стрела».
С появлением цифровых программно-управляемых машин родилась новая область прикладной математики -- программирование. Как область науки и профессия она возникла в 1950-х гг. Первона-чально программы составлялись вручную на машинных языках (в машинных кодах). Программы были громоздки, их отладка -- очень трудоемка. Для упрощения приемов и методов составления и отладки программ были созданы мнемокоды, по структуре близкие к машинному языку и использующие символьную адресацию. Ассемблеры переводили программу, записанную в мнемокоде, на машинный язык и, расширенные макрокомандами, используются и в настоящее время. Далее были созданы автокоды, которые можно применять на различных машинах, и позволившие обмениваться программами. Автокод -- набор псевдокоманд для решения специализиро-ванных задач, например научных или инженерных. Для таких задач имеется развитая библиотека стандартных программ.
До конца 1950-х гг. ЭВМ основным элементом конструкции были электронные лампы (1-е поколение). В этот период развитие идеологии и техники программирования шло за счет достижений американских ученых Дж. фон Неймана, сформулировавшего ос-новные принципы построения ЭВМ, и Дж. Бэкуса, под руково-дством которого в 1954 г. был создан Fortran (Formula Translation) -- первый язык программирования высокого уровня, используемый до настоящего времени в разных модификациях. Так, в 1965 г. в Дартмутском колледже Д. Кэмэни и Т. Куртцем была разработана упро-щенная версия Фортрана -- Basic. В 1966 г. комиссия при Амери-канской ассоциации стандартов (ASA) разработала два стандарта языка: Фортран и Базисный Фортран. Используются также даль-нейшие модификации языка (например 1970, 1990 гг.).
Достижения в области электроники и микроэлектроники по зволили заменить элементную базу ЭВМ на более совершенную. В конце 1950-х гг. громоздкие электронные лампы заменяют полу-проводниками (миниатюрными транзисторами). Появляются ЭВМ II поколения; затем примерно через 10 лет -- ЭВМ III поколения на интегральных схемах; еще через 10 лет -- ЭВМ IV поколения на больших интегральных схемах (БИС). В Японии в 1990-х гг. реали-зованы проекты ЭВМ V поколения, в которых использованы дос-тижения в области искусственного интеллекта и биоэлектроники. Если объем оперативного запоминающего устройства (ОЗУ) одной из лучших отечественных машин 1960-х гг. М-20, созданной под руководством С.А.Лебедева в 1958 г., имел 4096 слов (8 Кбайт) и быстродействие 20 тыс. операций в секунду, то современные персо-нальные компьютеры характеризуются ОЗУ в десятки Мбайт и бы-стродействием в сотни миллионов операций в секунду, что позво-ляет решать сложнейшие задачи.
В 1953 г. А.А.Ляпуновым был предложен операторный метод программирования, который заключался в автоматизации программирования, а алгоритм решения задачи представлялся в виде совокупности операторов, образующих логическую схему задачи. Схемы позволяли расчленить громоздкий процесс составления программы, части которой составлялись по формальным правилам, а затем объединялись в целое. Для проверки идей операторного метода в СССР в 1954 г. была разработана первая программирующая про-грамма ПП-1, а в 1955 г. более совершенная -- ПП-2. В 1956 г. разработана ПП БЭСМ, в 1957 г. - ППСВ, в 1958 г. -- для машины «Стрела».
В США в 1954 г. стал применяться алгебраический подход, совпадающий, по существу, с операторным методом. В 1956 г. корпора-цией IBM разработана универсальная ПП Фортран для автоматического программирования на ЭВМ IBM/704.
В этот период по мере накопления опыта и теоретического осмысления совершенствовались языки программирования. В 1958--1960 гг. в Европе был создан ALGOL, который породил целую серию алголоподобных языков: Algol W, (1967), Algol 68, Pascal (Н. Вирт, 1970 г.), С (Д. Ритчи и Б. Керниган, 1972 г.), Ada (под ру-ководством Ж. Ишбиа, 1979 г.), C++ (1983). В 1961-1962 гг. Дж. Маккарти в Массачусетс ком технологическом институте был создан язык функционального программирования Lisp, открывший в программировании одно из альтернативных направлений, предло-женных Дж. фон Нейманом.
На начало 1970-х гг. существовало более 700 языков высокого уровня и около 300 трансляторов для автоматизации программирования.
Усложнение структуры ЭВМ привело (в 1953 г. для машин И-го поколения) к созданию операционных систем (ОС) -- специальных управляющих программ для организации и решения задач на ЭВМ. Например, мониторная система МТИ, созданная в Массачусетском технологическом институте, обеспечивала пакетную обработку, т. е. непрерывное, последовательное прохождение через ЭВМ многих групп (пакетов) заданий и пользование библиотекой служебных программ, хранимой в машине. Это позволило совместить операции по запуску с выполнением программ.
Для ПЭВМ к настоящему времени разработаны ОС: MS DOS, Windows, ОС/2, МасОС, Unix, Linux и др. Широкое распростране-ние получили ОС MS DOS и Windows, имеющие развитый интер-фейс и широкий набор приложений, позволяющих последователь-ное выполнение заданий из пакета, обработку различной информа-ции во многих сферах человеческой деятельности.
В 1965 г. итальянцы Бом и Джакопини предложили использо-вать в качестве базовых алгоритмических элементов следование, ветвление и цикл. Почти в то же время к аналогичным выводам пришел голландский ученый Э. Дийкстра, заложивший основы структурного программирования. В 1970-х гг. эта методология оформилась, и корпорация IBM сообщила о применении в разра-ботке программного обеспечения «Усовершенствованных методов программирования», одним из компонентов которых являлась тех-нология нисходящего структурного программирования (структур-ного программирования), основу которого составляет следующее: