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

Введение

Прогресс компьютерных технологий определил процесс появления новых разнообразных знаковых систем для записи алгоритмов – языков программирования. Смысл появления такого языка – упрощение программного кода. С каждым днём наш мир становиться более мобильным и информационным. Всё больше и больше компьютеры вступают в нашу повседневную жизнь и чтобы облегчить наше общение с ними создаётся новое ПО с помощью различных языков программирования. Целью данной курсовой работы является изучение истории возникновения программирования и основных принципов и подходов при создании языка программирования.

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


ЧАСТЬ 1. История возникновения программирования. Основные принципы и подходы при создании языков программирования

1.1 Начало истории программирования

С глубокой древности известны попытки создать устройства, ускоряющие и облегчающие процесс вычислений. Еще древние греки и римляне применяли приспособление, подобное счетам, -- абак. Такие устройства были известны и в странах Древнего Востока. В XV в. немецкие ученые В. Шиккард (1623), Г.Лейбниц (1673) и французский ученый Б. Паскаль (1642) создали механические вычислительные устройства -- предшественники всем известного арифмометра. Вычислительные машины совершенствовались в течении нескольких веков. Но при этом не применялось понятие «программа и программирование».

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

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

В начале XIX в. (1830) английский ученый, профессор математики Кэмбриджского университета Чарльз Бэббидж, анализируя результаты обработки переписи населения во Франции, теоретически исследовал процесс выполнения вычислений и обосновал основы архитектуры вычислительной машины. Работая над проектом аналитической машины -- «Машины для исчисления разностей», Ч. Бэббидж предсказал многие идеи и принципы организации и работы современных ЭВМ, в частности принцип программного управления и запоминаемой программы. Общая увлеченность наукой дала ученому и Аде Лавлейс (1815--1852) долгие годы плодотворного сотрудничества. В 1843 г. она перевела статью Менабреа по лекциям

Структурное и модульное программирование

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

Создание и использование формул в Excel

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

Ч. Бэббиджа, где в виде подробных комментариев (по объему они превосходили основной текст) сформулировала главные принципы программирования аналитической машины. Она разработала первую программу (1843) для машины Бэббиджа, убедила его в необходимости использования в изобретении двоичной системы счисления вместо десятичной, разработала принципы программирования, предусматривающие повторение одной и той же последовательности команд при определенных условиях. Именно она предложила термины «рабочая ячейка» и «цикл».

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

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

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

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

Машинный код. Ассемблер

Фергюсон, Андрей. «История языков компьютерного программирования». Браунский университет - информатика. Гош, Себастьян. «Краткая история языков программирования». Лекция. Технический университет Мюнхен. Правда ли, что программисты все еще иногда используют двоичный код для написания определенных частей программы?

В 1854 г. английский математик Джордж Буль опубликовал книгу «Законы мышления», в которой развил алгебру высказываний --Булеву алгебру. На ее основе в начале 80-х гг. XIX в. построена теория релейно-контактных схем и конструирования сложных дискретных автоматов. Алгебра логики оказала многогранное влияние на развитие вычислительной техники, являясь инструментом разработки и анализа сложных схем, инструментом оптимизации большого числа логических элементов, из многих тысяч которых состоит современная ЭВМ.

Является ли проверка языка программирования связанной с автономными вычислениями? Как вы проверяете функцию программ, которые связаны с нейронными сетями? Различается ли проверка программ между каждым языком программирования или существует стандартный метод для проверки функциональности?

Применение структурных и объектно-ориентированных методов программирования

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

Идеи Ч. Бэббиджа реализовал американский ученый Г. Холлерит, который с помощью построенной счетно-аналитической машины и перфокарт за три года обработал результаты переписи населения в США по состоянию на 1890г. В машине впервые было использовано электричество. В 1896 г. Холлеритом была основана фирма по выпуску вычислительных перфорационных машин и перфокарт.

Начало истории программирования

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

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

В 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 трансляторов для автоматизации программирования.

1.2 Структурное и модульное программирование

В 1965 г. итальянцы Бом и Джакопини предложили использовать в качестве базовых алгоритмических элементов следование, ветвление и цикл. Почти в то же время к аналогичным выводам пришел голландский ученый Э. Дийкстра, заложивший основы структурного программирования. В 1970-х гг. эта методология оформилась, и корпорация IBM сообщила о применении в разработке программного обеспечения «Усовершенствованных методов программирования», одним из компонентов которых являлась технология нисходящего структурного программирования, основу которого составляет следующее:

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

Четко сформулированные основы нисходящей разработки, структурного кодирования и сквозного контроля позволяли перейти к промышленным методам разработки программного обеспечения.

Развитие получило модульное программирование , основа которого заключается в следующем:

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

* модуль представляет собой «черный ящик», позволяющий разрабатывать части программ одного проекта на разных языках программирования, а затем с помощью компоновочных средств объединять их в единый загрузочный модуль;

* должно быть ясное понимание назначения всех модулей задачи и их оптимального сочетания;

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

В период 1970--1980-х гг. развитие теоретических исследований оформило программирование как самостоятельную научную дисциплину, занимающуюся методами разработки программного обеспечения (ПО).

В истории развития промышленного программирования большую роль сыграл программист и бизнесмен Билл Гейтс (Gates William Henry, p. в 1955 г.). Гейтс и его школьный товарищ Пол Аллен основали компанию по анализу уличного движения «Трэф-О-Дейта» и использовали для обработки данных компьютеры с микропроцессором 8008 -- первым из знаменитого ряда микропроцессоров компании «Intel». Будучи студентом Гарвардского университета, в 1975 г. он совместно с Алленом написал для компьютера Altair (фирмы M1TS) интерпретатор – программу переводчик с языка программирования на язык машинных кодов.

Профессиональное программирование вышло на уровень технологии.

Методы разработки ПО синтезируют:

* методы инженерных расчетов для оценки затрат и выбора решений;

* математические методы для составления алгоритмов;

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

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

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

ООП основано на трех важнейших принципах (инкапсуляция, наследование, полиморфизм), придающих объектам новые свойства.

  1. Инкапсуляция -- объединение в единое целое данных и алгоритмов их обработки. Данные здесь -- поля объекта, а алгоритмы -- объектные методы.
  2. Наследование -- свойство объектов порождать своих потомков. Объект-потомок автоматически наследует все поля и методы, может дополнять объекты новыми полями, заменять и дополнять методы.
  3. Полиморфизм -- свойство родственных объектов решать схожие по смыслу проблемы разными способами.

Идея использования программных объектов исследовалась в течение ряда лет разными учеными. Одним из первых языков этого типа считают Simula-67.А в 1972 г. появился язык Smoltalk, разработанный Аланом Кеем, утвердивший статус ООП.

На современном этапе развиваются инструментальные среды и системы визуального программирования для создания программ на языках высокого уровня: (Turbo Pascal, Delphi, Visual Basic, C++Builder и др.).

1.4 Компонентное программирование

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

В КП компонент рассматривается как хранилище (в виде DLL-или ЕХЕ файлов) для одного или нескольких классов. Классы распространяются в бинарном виде, а не в виде исходного кода. Предоставление доступа к методам класса осуществляется через строго определенные интерфейсы по протоколу. Это снимает проблему несовместимости компиляторов, обеспечивая без перекомпиляции смену версий классов в разных приложениях. Интерфейсы задают содержание сервиса и являются посредником между клиентом и сервером.

Фирма Microsoft создала технологии для распределенной разработки распределенных систем, такие как COM (Component Object Model), COM+, .NET. Разработаны и другие технологии: CORBA (консорциума OMG), JAVA (компании Sun Microsystem) и др.

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

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

В конце 1980-х гг. в Японии и США появились проекты ЭВМ V поколения, реализованные в конце 1990-х гг. Прогресс в программировании связан с прогрессом в архитектуре вычислительных систем, отходом от фон-неймановской концепции, с достижениями в области искусственного интеллекта. Революционные изменения в элементной базе ЭВМ связываются с исследованиями по биоэлектронике.

На современном этапе программирование включает комплекс вопросов, связанных с написанием спецификаций (условий задач), проектированием, кодированием, тестированием и функционированием программ для ЭВМ. Современное ПО для ЭВМ имеет сложную структуру и включает, как правило, ОС, трансляторы с различных языков, текстовые программы контроля и диагностики, набор обслуживающих программ. Например, японские ученые для проектирования систем ПО разрабатывают идею «кольцевой структуры» шести уровней:

  1. (внутренний) программы для аппаратуры;
  2. ядро ОС;
  3. программы сопряжения;
  4. часть ОС, ориентированная на пользователя;
  5. системы программирования;
  6. (внешний) программы пользователя.

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

1.5 Применение структурных и объектно-ориентированных методов программирования

Широкое применение структурных и объектно-ориентированных методов программирования с использованием графических моделей объединялось отсутствием инструментальных средств. Это породило потребность в программно-технологических средствах специального класса -- CASE (Computer Aided Software Engineering), реализующих технологию создания и сопровождения ПО различных систем. Предпосылки для появления CASE-технологий возникли к концу 1980-х гг. Первоначально термин «CASE» применялся только к вопросам автоматизации разработки ПО, теперь программная инженерия имеет более широкое значение для разработки систем в целом. В CASE-технологии входит разработка и внедрение языков высокого уровня, методов структурного и модульного программирования, языков проектирования и средств их поддержки, формальных и неформальных языков описания системных требований.

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

В начале этого столетия текстовые процессоры стали более совершенными. Наряду с более простыми (например Professional Write и др.) появились такие мощные, как MS WinWord, WordPerfect WordStar 2000 и др. Из отечественных широкое распространение получил текстовый процессор Лексикон.

С начала 1980-х гг. для подготовки и обработки числовой информации стали использоваться табличные процессоры. В 1979 г. Д. Брикклин предложил первую программу для работы с электронными таблицами VisiCalc. В 1981 г. была разработана система SuperCalc фирмы «Computer Associates», в 1982 г. -- Multiplan фир-мы «Microsoft», далее -- пакет для IBM PC Lotusl-2-3 фирмы «Lotus Development», русифицированные пакеты АБАК, ДРАКОН и др. В 1985 г. появился табличный процессор Excel фирмы «Microsoft» первоначально для персонального компьютера Macintosh, а затем для совместимых с IBM PC. Этот процессор разрабатывался параллельно с ОС Windows, его версии вобрали в себя все черты графиче-ского интерфейса, вплоть до версий Excel 5.0 как приложения Windows 3.1, Excel 7.0 как приложения Windows 95 и т. д. В последние годы создано достаточно много систем подготовки табличных документов, т. е. электронных таблиц, табличных процессоров (например, Corel Quattro 6.0 фирмы «Corel Co», Lotus 5.0 фирмы «Lotus Development Co», Office Proftessional for Windows фирмы «Microsoft» и ДР-)- Но наиболее широко используют электронные таблицы Excel.

Разработано большое количество стандартных реляционных систем управления базами данных -- СУБД (например, MS Access, paradox и др.), на основе которых строят реляционные базы данных в различных предметных областях.

Для многих организаций (особенно управленческих) разработаны так называемые офисные пакеты, в которых на основе единой ОС функционируют приложения, включающие в себя системы для работы с различными видами информации. Например, созданы пакеты приложений к ОС Windows (MS Office, WordPerfect Office фирмы «Corel», StarOffice фирмы «SunMicrosystems» и др.), которые включают программные средства для выполнения функций обработки всех видов информации. Например, MS Office включает совершенствующиеся год от года (в зависимости от последней версии ОС Windows) средства обработки текста (MS Word), графики (Photo Draw) и презентаций (PowerPoint), таблиц (Excel), баз данных (Access), электронной почты (Outlook), работы во Всемирной паутине (FrontPage), создания звуковых клипов (MS Sound Recorder).

1.6 Новые направления в программировании

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

За рубежом в 1960-х гг. появились первые вычислительные сети, с которых началась техническая и технологическая революция, т. к. была предпринята попытка объединить технологию сбора, хранения, передачи и обработки информации на ЭВМ с техникой связи. В Европе в те годы были созданы международные сети EIN и Евро-нет, затем появились национальные сети. В 1972 г. в Вене была создана сеть МИПСА, к которой присоединились в 1979 г. 17 стран Европы, СССР, США, Канада и Япония. В 1980-х гг. в нашей стране была создана система телеобработки статистической информации, обслуживающая государственные и республиканские органы статистики.


Заключение

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


СПИСОК ЛИТЕРАТУРЫ

  1. Немнюгин С.А. Turbo Pascal (практикум): СПб.: «Питер», 2003. – 475с.
  2. Кирнос В.Н. Информатика 10 – 11 класс: Кокшетау: «Кешелек»,2005. – 208с.
  3. Фаронов В . В . Turbo Pascal 7.0. Начальный курс. - Нолидж, 1998. -620 с.
  4. Грызлов В.И., Грызлова Т.П. Турбо Паскаль 7.0. - М.: "ДМК", 2000. - 416 с.
  5. Зуев Е . А . Turbo Pascal. Практическое программирование. - Приор,1997. - 336с.
  6. Пильщиков В.Н. Сборник упражнений по языку Паскаль. – М.: Наука, 1989.– 160 с.
  7. Йенсен К., Вирт Н. Руководство для пользователя и описание языка. – М.,1982. 151 с.
  8. Абрамов С.А., Зима Е.В. Начала программирования на языке Паскаль. – М.:Наука, 1987. – 112 с.
  9. Павловская Т.А. Паскаль. Программирование на языке высокого уровня. - СПб: Питер, 2003.-393с.
  10. Эллиот Б.К. Turbo Pascal = Turbo Pascal Web Update . — М.: Вильямс, 2005. — 896с.
  11. Лукин С . Н . TURBO PASCAL 7.0. Самоучитель для начинающих.- Диалог-МИФИ, 2005.-

400с.

  1. Епанешников А. М., Епанешников В. А. Программирование в среде Turbo Pascal 7.0.- 1995.-278с.
  2. Немнюгин С., Перколаб Л. Изучаем Turbo Pascal .- Питер, 2007.- 320 с .

История развития языков программирования началась в ХХ веках.

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

Другими словами, программирование – это четкая заданная последовательность действий, которые пишет программист.

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

Машинные языки. Очень непонятно для человека, но очень понятно для компьютера.
- языки низкого уровня. Например, Ассемблер.
- языки программирования высокого уровня. Например, Паскаль, Си, Java.

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

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

Структура выбора рассматривалась, как выбрать действия в зависимости от условия.
Структура повторения – одинаковые действие выполняются несколько раз до какого-то события (условия).
Структура следования – действия идут последовательно без ветвления один за другим.

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

Далее с развитием начали использовать структуры, а затем перешли к классам. Структуры – это составные типы данных, построенные с использованием других типов. Например, структура время. В нее входит: часы, минуты, секунды. Программист мог создать структуру время и работать с ней, как с отдельной структурой. Класс – это структура , которая имеет свои переменные и функции, которые работают с этими переменными. Это было очень большое достижение в области программирования. Теперь программирование можно было разбить на классы и тестировать не всю программу, состоящую из 10’000 строк кода, а разбить программу на 100 классов, и тестировать каждый класс. Это существенно облегчило написание программного продукта. Но и этого было мало.

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

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

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

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

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