Файл: Основные структуры алгаритмов:сравнительный анализ и примеры их использования.pdf
Добавлен: 02.04.2023
Просмотров: 331
Скачиваний: 1
СОДЕРЖАНИЕ
Глава 1. Основные определения ООП
2.1 60-е - бурный расцвет языков высокого уровня
2.2 70-е - зарождение технологии программирования
2.3 80-е - персональные компьютеры
2.4 90-е - всеобщая информатизация
2.5 21-век - развитие сетевых технологий и Интернет
В результате бурного развития языков программирования в трёх направлениях возникло хрупкое равновесие между сложностью решаемых задач и технологиями программирования.
2.3 80-е - персональные компьютеры
Языки программирования 80-х:
Basic - продуктивный, но неэффективный;
Objective-C (ObjC, Obj-C) - компилируемый объектно-ориентированный язык;
Ада (Ada) — в высшей степени объектно-ориентированный язык программирования;
Си++ добавляет к С объектно-ориентированные возможности;
Object Pascal - объектное расширение Pascal.
Ситуация казалось бы стабилизировалась, но в 80-х годах появляются персональные компьютеры, которые стали стремительно внедряться во все сферы человеческой деятельности, порождая тем самым обширный и разнообразный контингент пользователей программ. Это потребовало развития пользовательских интерфейсов и создания чёткой концепции качества программ.
С появлением DOS программисты встали перед нелёгким выбором между продуктивным, но неэффективным Basic и эффективным, но крайне непродуктивным ассемблером. Начался бум микрокомпьютеров, и трансляторы для распространённых языков (Паскаля, Си, Бейсика) были оперативно оптимизированы под маломощные системы. Появление компиляторов Pascal и C во многом решило их проблемы, однако тем временем сложность решаемых задач все росла и возможности по их алгоритмической декомпозиции были практически исчерпаны.
Уже в начале 80-х появляется созданный Брэдом Коксом Objective-C, известный также как Objective C, ObjC или Obj-C — компилируемый объектно-ориентированный язык программирования корпорации Apple, построенный на основе языка Си и парадигм Smalltalk.
В 1979—1980 годах в результате проекта, предпринятого Министерством обороны США с целью разработать единый язык программирования для встраиваемых систем (то есть систем управления автоматизированными комплексами, работающими в реальном времени) был создан Ада (Ada) — в высшей степени объектно-ориентированный язык программирования. Имелись в виду, прежде всего, бортовые системы управления военными объектами (кораблями, самолётами, танками, ракетами, снарядами и т. п.).
Замечание
Язык назван в честь Ады Лавлэйс.
Примерно в то же время сотрудник фирмы Bell Laboratories Бьёрн Страуструп придумал ряд усовершенствований к языку Си под собственные нужды, который он сначала назвал "C with classes" ("Си с классами"). С ростом популярности язык сменил название на "С++".
Замечание
В названии "С++" по замыслу Струструпа два плюса обозначают операцию автоинкремента (увеличение значения на следующее) и его следует понимать как "следующий после C" или "новое поколение С". В английской транскрипции название читается "си-плас-плас", но в русскоязычном сообществе программистов устойчиво укрепилось "русифицированное" произношение "си-плюс-плюс".
Си++ добавляет к Си объектно-ориентированные возможности. Он вводит классы, которые обеспечивают три самых важных свойства ООП: инкапсуляцию, наследование и полиморфизм
В 1986 году фирма Apple разработала объектное расширение языка Паскаль, получив в результате Object Pascal. В 1989 году аналогичные объектные средства были добавлены фирмой Borland в систему Turbo Pascal (языковые различия между объектным Turbo Pascal 5.5 и Object Pascal от Apple крайне незначительны). Последующие версии Turbo Pascal, который стал затем называться Borland Pascal, дополняли объектное расширение новыми средствами, этот процесс продолжился и в ходе развития языка системы Delphi.
2.4 90-е - всеобщая информатизация
С появлением операционной системы Windows кризис повторился на новом уровне - приходилось выбирать между мощным, но требующим специальных знаний C++ и простым (притягательно визуальным), но крайне ограниченным Visual Basic.
В 90-е годы начался продолжающийся по сей день решающий этап полной информатизации и компьютеризации общества. Растущая сложность задач информатизации поставила ребром вопрос о скорости и надёжности разрабатываемых программ. Компьютерная индустрия ответила на это развитием объектно-ориентированных методов программирования:
Мощные среды разработки
1995 год - Sun Microsystems выпускается объектно-ориентированный язык программированияJava (предназначен для кроссплатформенной разработки приложений);
В 1991 компания Microsoft выпускает первую версию Visual Basic;
Фортран 95 становится объектно-ориентированным;
Фирма Borland в 1995 году выпускает революционное по тем меркам объектно-ориентированное средство разработки Delphi
1997 год - PHP стал поддерживать объектно-ориентированный синтаксис;
2.5 21-век - развитие сетевых технологий и Интернет
В 2000-х годах сетевые технологии и сеть Интернет прочно вошла в обиход даже весьма отдаленных от компьютерной тематики областей человеческой деятельности.
С начала 21-го века развитие информационных технологий и их проникновение в обычную жизнь приобрело лавинообразный характер. Такое проникновение можно условно разделить на два направления: "микро" и "макро".
В направлении "микро" это проявилось в широком использовании устройств, которые по сути дела являются компьютерами, но сохранили за собой свои традиционные названия: телефон, плеер, органайзер, диктофон, фотоаппарат, видеокамера и т.д. Причём зачастую одно устройство выполняет множество функций. Так например, современный мобильный телефон представляет собой эдакий "комбайн" из всех вышеперечисленных устройств, по прежнему скромно называясь "телефоном".
Замечание
Интересно, что телекоммуникационные устройства с предустановленными операционными системами семейства Windows стали называться "коммуникаторами", а все остальные - по прежнему "телефонами", хотя весьма незначительные различия между ними продолжают стираться.
Патрик Ноутон, Джеймс Гослинг работали над проектом "Green", целью которого было разработать язык для программирования бытовых электронных устройств. Каких ещё бытовых устройств? Да самых разных. Например, контроллеров для переключения каналов кабельного телевидения (cable TV switchboxes).
Бытовые устройства:
мало потребляют энергии (отсюда и кодовое название проекта - "Green" )
а также бытовые электронные устройства имеют небольшие микросхемы памяти, а, соответственно, и программы, написанные под них, должны были быть небольшими. Помимо этого стояла задача, чтобы единожды написанный код читался на любой машине, а не писался под каждое устройство отдельноТенденция объединять различную функциональность в одном устройстве получила название "конвергенция". Программируемой стала даже бытовая техника: телевизоры; стиральные, швейные и посудомоечные машины; микроволновые и электрические печи; кофемолки и холодильники. Так что пользователями ЭВМ стали даже домохозяйки, которые зачастую даже не догадываются об этом. . Язык программирования C++ для данных целей их не очень устроил и они разработали новый язык программирования - Java.
Производство встраиваемых систем потребовало развития языков программирования и для программирования встраиваемых систем наряду с применением кроссплатформенных компиляторов разработки стал применяться интерпретируемый язык Java.
23 мая 1995 год - дата официального выпуска под названием Java
1996 год
реализация поддержки технологии Java в браузере Microsoft Internet Explorer 3.0
1997 год
Выход существенно обновленной версии – Java 2.
Выделение отдельных платформ: J2SE, J2EE, J2ME.
Платформа включает в себя:
язык программирования;
набор служебных программ (JVM, JRE, JDK и т.п.);
набор библиотек;
Java 2 Platform, Standard Edition (J2SE)
предназначается для использования на рабочих станциях и персональных компьютерах.
Является основой всех других Java-технологий.
Java 2 Platform, Micro Edition (J2ME)
является усеченным вариантом J2SE, для того, чтобы соответствовать ограниченным аппаратным возможностям мобильных устройств, таких как, например, сотовые телефоны.
Java Virtual Machine (JVM)
представляет собой программу, имитирующую работу некоторой гипотетической Java-машины.
Java Runtime Environment (JRE)
представляет собой минимальный набор средств, необходимых для запуска Java-программ.
Основу JRE составляют виртуальная машина Java и набор стандартных библиотек.
Java Software Development Kit (SDK)
Java Development Kit (JDK)
представляет собой набор средств, используемых в процессе разработки Java-программ: компилятор, отладчик, средства для автоматической генерации документации, комплект примеров и т.п.
JDK работает с уже готовыми текстами программ и не содержит какого-либо редактора.
Интегрированные среды разработки (Eclipse, Netbeans, JBuilder и т.п.) для компиляции программ используют внешний JDK
В 2009 году язык Java сменил своего владельца – компания Sun Microsystems была куплена компанией Oracle. Так что сейчас владелец Java - компания Oracle.
В макронаправлении сеть Интернет за несколько лет проникла буквально во все сферы деятельности современного человека. Рядовой пользователь сети из пассивного читателя статических сайтов превратился в автора в многочисленных форумах, блогах и энциклопедиях. Столь бурное развитие информационных технологий сопровождается весьма быстрым, но гораздо менее заметным для обычного пользователя развитием языков программирования. Так, для обеспечения возможности управления элементами веб-страниц с целью придания им некоторой динамичности и интерактивности (возможности общения с пользователем) в 1995 году появился язык JavaScript, полностью занявший нишу браузерных языков программирования.
JavaScript - разноплановый (или как сейчас говорят - "мультипарадигменный") язык. Он несёт в себе черты как объектно-ориентированного так и обобщённого, функционального, императивного, аспектно-ориентированного, событийно-ориентированного и прототипного программирования. По мере развития интернет-технологий стало ясно, что интерактивных веб-страниц с элементами JavaScript недостаточно для решения множества задач [3].
Для программирования на стороне сервера с целью создания динамических веб-страниц стали применяться уже существующие к тому времени языки Perl и Python. Язык Perl был создан в 1986 г. как инструмент для администрирования и конфигурирования системных ресурсов в сети, состтоящей из Unix-компьютеров. Аббревиатура Perl расшифровывается как практический язык для извлечения текстов и генерации отчетов (Рractical Extraction and Report Language). Этот язык первоначально создан для автоматического формирования отчетов из иерархии файлов системы оповещения об ошибках. Perl является интерпретируемым языком для сканирования текстовых файлов, извлечения из них информации и вывода на основе полученных данных текстовых отчетов. То есть программы Perl используются для выполнения сценариев Perl. Язык Perl является межплатформенным и обеспечивает удобную работу с текстом. Он используется в основном для выполнения рутинных задач, которые, однако, могут быть достаточно трудны или плохо переносимы, а также сложны для кодирования в С или ином используемом в ОС UNIX языке.
Данный язык в определенном плане является универсальным и подобен языку С и рассмотренным выше. Синтаксис и грамматика языка Perl и рассмотренных ранее объектно-ориентированных языков имеют сходство. Основная идея состоит в инкапсулировании данных и программ (называемых методами) в виде объектов. В результате каждый объект становится полуавтономным, приватные (внутренние) данные и методы обосабливаются так, чтобы они не создавали беспорядок в области данных. Объект взаимодействует с остальной частью программы с помощью публичных (доступных для вызова извне) методов .В Perl используются:
Классы - пакеты, которые могут обеспечивать методы.
Метод - подпрограмма, встроенная в класс или объект. Метод использует ссылку на объект или имя класса, передаваемое ему в качестве первого аргумента.
Объект - ссылка на элемент данных. В отличие от других ссылок этот элемент знает, к какому классу он относится.
Наследование - процесс порождения одного класса (дочернего или порожденного). В результате этого процесса дочерний класс может использовать методы родительского класса..
Эти конструкции являются важной частью языков объектно-ориентированного программирования, и Perl в частности [1].
Определенные функции языка Perl получили широкое распространение в связи с развитием компьютерной сети Internet. Поэтому при дальнейшем рассмотрении данного языка основное внимание уделим использованию функций Rerl для программирования в области WWW.