Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Основные структуры алгаритмов:сравнительный анализ и примеры их использования

Содержание:

Введение

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

Принцип управления сложными системами известен еще со времен Древнего Рима - divide et impera (разделяй и властвуй). При проектировании сложных программных систем необходимо ее разделять на все меньшие и меньшие подсистемы, каждую из которых можно создать и совершенствовать независимо. Такой процесс называется декомпозиция.

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

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

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

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

Тема работы: история и развитие методологии объектно-ориентированного программирования. Сферы применения.

Цель работы изучить история и развитие методологии объектно-ориентированного программирования сферы применения

Задачи работы – изучить:

Основные определения ООП

Историю ООП

Сферу применения ООП

Глава 1. Основные определения ООП

Технология программирования - это набор правил, приемов и методов, которые помогут программисту представить себе реальные вещи абстрактными, чтобы затем "запечателеть" их в тексте на каком-либо языке программирования. Формализовать, описать и промоделировать процессы и явления реального мира [3]. 

Парадигма - набор правил и принципов для анализа явления или задачи, проектирования программы и непосредственно ее реализации на языке. Парадигма - это "взгляд на мир".

Объектно-ориентированное программирование (как расшифровывается ООП) – это, прежде всего, парадигма программирования.

Парадигма программирования определяет то, как программист видит выполнение программы.

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

Определение Гради Буча гласит: “Объектно-ориентированное программирование – это методология программирования, которая основана на представлении программы в виде совокупности объектов, каждый из которых является реализацией определенного класса (типа особого вида), а классы образуют иерархию на принципах наследуемости”.

Структурное и объектно-ориентированное программирование строятся на таком научном методе как декомпозиция — метод, который использует структуру задачи и позволяет разбить решение общей большой задачи на решение последовательности меньших задач. Декомпозиция ООП происходит не по алгоритмам, а по объектам, использующимся при решении задачи. Данная декомпозиция уменьшает размер программных систем благодаря повторному использованию общих механизмов. Известно, что системы визуального программирования или системы, построенные на принципах объектно-ориентированного программирования, являются более гибкими и легче эволюционируют со временем [6].

Объектно-ориентированный анализ выполняется на основе определенного набора принципов:

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

Инкапсуляция - сокрытие внутреннего устройства, реализации объекта. В итоге объект как "черный ящик". Дополняет абстрагирование направленностью внутрь объекта. Инкапсуляция - главное средство для борьбы со сложностью системы. Для уменьшения количества абстракций и упрощения работы с ними убирает из поля зрения внутреннее содержание абстракции.

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

Сохраняемость - возможность объекта сохранять информацию о своем состоянии, а затем при необходимости восстанавливать его.

Параллелизм - организация жизни и взаимодействия объектов.

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

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

Глава 2 История развития ООП

2.1  60-е - бурный расцвет языков высокого уровня

60-е годы ознаменованы бурным развитием языков программирования высокого уровня:

АЛГОЛ 60, АЛГОЛ 68

ФОРТРАН;

КОБОЛ

Simula-67 - первый в мире объектно-ориентированный язык программирования

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

В конце 60-х появляется разработанный сотрудниками Норвежского Вычислительного Центра (Осло) Кристеном Нюгором и Уле-Йоханом Далем для моделирования сложных систем первый в мире объектно-ориентированный язык программирования Simula-67.

История развития ООП берет свое начало в конце 60-х годов. Первым объектно-ориентированным языком был язык программирования Simula, созданный в компьютерном центре в Норвегии. Язык предназначался для моделирования ситуаций реального мира. Особенностью Simula было то, что программа, написанная на языке, была организована по объектам программирования. Объекты имели инструкции, называемые методами, и данные, которые назывались переменными; методы и данные определяли поведение объекта. В процессе моделирования объект вел себя согласно своему стандартному поведению и, в случае необходимости, изменял данные для отражения влияния назначенного ему действия [6].

Этот язык в значительной степени опередил своё время, программисты 60-х годов оказались не готовы воспринять все ценности нового подхода к разработке программ, и он не выдержал конкуренции с другими языками программирования (прежде всего, с языком Fortran). Прохладному отношению к языку Simula 67 способствовало и то обстоятельство, что его реализация была весьма неэффективна, не в последнюю очередь из-за использования сборки мусора. Тем не менее, этот язык активно использовался в образовательном процессе в высших учебных заведениях. В современной терминологии Simula 67 можно охарактеризовать как объектное расширение Algol 60.

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

2.2 70-е - зарождение технологии программирования

Начало 1970-х ознаменовалось рождением трёх языков, роль которых в развитии современного программирования переоценить тяжело:

Pascal (Никлаус Вирт, 1970; ETH, Швейцария),

C (Кен Томпсон иДеннис Ритчи, 1971; AT&T Bell Labs, США)

Smalltalk (произносится [смо'лток]) (Алан Кей, 1972; Xerox PARC, США).

Эта великая тройка дала путёвку в жизнь трём важнейшим направлениям: структурному (Pascal), системному (C) и объектно-ориентированному программированию (Smalltalk). Она определила и разные языковые ветви с непохожим синтаксисом и существенно отличающейся языковой культурой.

Зародилась и стала интенсивно развиваться технология программирования: обоснование и широкое внедрение нисходящей разработки (так называемого подхода «сверху-вниз») и структурного программирования, развитие типов данных и модульного программирования, исследование проблем обеспечения надёжности и мобильности программ, создание методики управления их коллективной разработки, появление средств поддержки технологии программирования [4].

Язык Smalltalk был создан группой исследователей возглавляемой Аланом Кэйем в исследовательском центре Xerox PARC. Первая реализация, известная как Smalltalk-71, была создана за несколько месяцев как результат спора о том что язык программирования, основанный на идее посылки сообщений, подсказанной Симулой, должен реализовываться на «странице кода». Более поздняя версия, действительно использованная для исследовательской работы, известна сейчас как Smalltalk-72. Его синтаксис и модель исполнения сильно отличались от современного Smalltalk, настолько, что его надо рассматривать как другой язык. После существенных переработок, которые зафиксировали несколько сторон семантики выполнения для увеличения эффективности, была создана версия известная как Smalltalk-76. В этой версии добавились наследование, синтаксис более близкий к Smalltalk-80, и среда разработки включающую большинство инструментов знакомых сейчас Smalltalk-ерам. В Smalltalk-80 были добавлены метаклассы, что делало фразу «всё — объекты» истинной путём связывания с индивидуальными классами свойств и поведения (например, поддержки различных способов создания экземпляров). Smalltalk-80 был первой версией, доступной за пределами PARC — сначала как Smalltalk-80 Version 1, розданный небольшому количеству компаний и университетов для «экспертной оценки». Позже, в 1983 году, были выпущены общедоступная реализация, известная как Smalltalk-80 Version 2 — в виде образа (независимый от платформы файл, содержащий объекты) и спецификации виртуальной машины. Сейчас существует две реализации Smalltalk, являющиеся прямыми потомками Smalltalk-80 — Squeak и VisualWorks.

В результате бурного развития языков программирования в трёх направлениях возникло хрупкое равновесие между сложностью решаемых задач и технологиями программирования.

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.

Для удобства программистов множество регулярно требуемых функций в среде Perl реализовано в виде так называемых Perl-модулей. Эти модули "подключаются" к реализации языка и позволяют вместо разработки собственных функций для той или иной задачи вызывать библиотечные функции, созданные авторами модуля. Например, существуют модули для работы с графикой (сам по себе Perl не имеет никаких графических инструментов), модули для автоматизации обработки web-форм и взаимодействия с CGI. Общее количество Perl-модулей давно измеряется сотнями, но среди них есть несколько десятков, ставших более-менее стандартными.

Набор установленных (и доступных для пользовательских программ) на хостинг-площадке Perl-модулей часто определяется хостинг-провайдером. Впрочем, не так уж редко хостинг-провайдер позволяет клиенту устанавливать и свои дополнительные модули. Набор доступных Perl-модулей весьма актуален в тех случаях, когда при создании web-сайта планируется использовать готовое программное обеспечение на языке Perl. Дело в том, что для успешной работы этого программного обеспечения могут потребоваться Perl-модули, не установленные у хостинг-провайдера - и, как результат, программы не будут работать. Поэтому, прежде чем выбирать программное обеспечение для "запуска" на web-сайте, следует уточнить, что хостинг-площадка поддерживает требуемые модули.

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

Для обеспечения перенаправления результатов работы программы веб-серверу стал применяться стандарт интерфейса CGI (от англ. Common Gateway Interface — «общий интерфейс шлюза»). Очень скоро стало ясно, возможностей универсальных языков программирования для создания динамических страниц недостаточно и стали появляться специализированные языки серверного программирования.

CGI-программа может быть написана на любом из следующих языков: AppleScript, C++, Fortran, PHP, Perl, TCL, Visual Basic, языке командного интерпретатора UNIX (shell) и т.д. Поскольку при создании Web-страниц разработчики имеют дело с текстом, файлами, сетевыми коммуникациями и двоичными файлами

Язык PHP (PHP - рекурсивный акроним словосочетания «PHP: Hypertext Preprocessor»), появившись всего лишь в конце 90-х прошлого века, проделал такой путь развития, что стал стандартом де-факто для написания серверных скриптов (программ, выполняющихся на стороне сервера и показывающих результат своей работы пользователю в привычном для него виде - веб-страницы). Как результат PHP из набора скриптов стал полноценным объектно-ориентированным языком программирования, позволяющим создавать мощные веб-приложения.

Первый вариант языка был создан в 1994 году программистом из Дании Расмусом Лердорфом. Первоначально сокращение расшифровывалось как Personal Home Page («Персональная домашняя страничка»). С помощью нового скриптового языка можно было создавать несложные сайты.

Новый этап в развитии проекта произошел в 1997, когда был заново переписан код интерпретатора. В следующем году вышла версия 3.0, php приобрел все черты мощного языка для web-разработок. Название стали расшифровывать как PHP: hypertext Preprocessor («ПХП: гипертекстовый препроцессор»). Разработчики свободного софта любят названия, которые содержат ссылки на самих себя.

Еще одна удачная версия – 5.0, она поддерживала xml и имела расширенные возможности для объектно-ориентированного программирования. Шестая версия должна была поддерживать кодировку Unicode, но проект получился неудачным и был заморожен. В конце 2015 года была официально запущена версия 7.0.

Фирма Microsoft для программирования на сервере стала продвигать язык ASP (от англ. -Active Server Pages - активные серверные страницы), а позже ее вариант для платформы .NET - ASP.NET.

Однако по мере проникновения веб-технологий в жизни обычных людей становилось все более очевидным различие между мощным красивым графическим пользовательским интерфейсом и неповоротливым текстовым интерфейсом веб-страниц. Ни один язык оказался не способен разрешить это противоречие в одиночку. Как результат конвергенции HTML, Javascript и XML в 2005 году появился "сплав" языков и технологий, получивший акроним AJAX (от англ. Asynchronous Javascript and XML — «асинхронный JavaScript и XML»). Суть нового подхода к построению интерактивных пользовательских интерфейсов веб-приложений заключается в «фоновом» обмене данными браузера с веб-сервером. В результате при обновлении данных веб-страница не перезагружается полностью, и веб-приложения становятся более быстрыми и удобными.

Глава 3 Сфера применения ООП

3.1 Применение ООП

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

ООП обладает рядом преимуществ при создании больших программ. В частности, к ним можно отнести:

использование более естественных с точки зрения обычной повседневной практики понятий, простота введения новых понятий;

упрощение разработки многократно используемых компонент приложений;

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

возможность создания библиотеки классов; в частности, библиотека визуальных компонент Delphi и является примером такой библиотеки [8];

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

возможность написания подпрограмм с различными наборами формальных параметров, но имеющих одно и то же имя;

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

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

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

Как видно, большинство из них выбрало именно ООП для более детального изучения.  
https://saikt-online.ru/wp-content/uploads/2016/09/52-460x328.jpg

Рис 1 Выбор подхода к разработке

В настоящее время количество прикладных языков программирования , реализующих объектно-ориентированную парадигму, является наибольшим по отношению к другим парадигмам. В области системного программирования до сих пор применяется парадигма процедурного программирования, и общепринятым языком программирования является язык C. Хотя при взаимодействии системного и прикладного уровней операционных систем заметное влияние стали оказывать языки объектно-ориентированного программирования [11]. Например, одной из наиболее распространенных библиотек мультиплатформенного программирования является объектно-ориентированная библиотека Qt, написанная на языке C++.

3.2 Применение С++

С++ является мощным языком, унаследовав от Си богатые возможности по работе с памятью. Поэтому нередко С++ находит свое применение в системном программировании, в частности, при создании операционных систем, драйверов, различных утилит, антивирусов и т.д. К слову сказать, ОС Windows большей частью написана на С++. Но только системным программированием применение данного языка не ограничивается. С++ можно использовать в программах любого уровня, где важны скорость работы и производительность. Нередко он применяется для создания графических приложений, различных прикладных программ. Также особенно часто его используют для создания игр с богатой насыщенной визуализацией. Кроме того, в последнее время набирает ход мобильное направление, где С++ тоже нашел свое применение. И даже в веб-разработке также можно использовать С++ для создания веб-приложений или каких-то вспомогательных сервисов, которые обслуживают веб-приложения. В общем С++ - язык широкого пользования, на котором можно создавать практически любые виды программ [3].

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

3.3 Применение Perl

Наиболее широко Perl используется для разработки инструментов системного администрирования, однако в последнее время он получил огромную популярность в области разработки Интернет-приложений: CGI-сценариев, систем автоматической обработки электронной почты и поддержки узлов Web. В этом разделе мы кратко охарактеризуем возможности Perl в каждой из указанных областей.

Системная поддержка UNIX и Windows

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

Perl находит своих приверженцев и среди администраторов операционных систем семейства Windows. Многие задачи, особенно связанные с составлением статистических отчетов работы серверов локальных сетей Windows NT/2000, web-серверов IIS или рабочих станций, достаточно просто решаются написанием небольших Perl-сценариев, Правда, при этом приходится использовать функции стандартного пакета Win32, так как конфигурационная информация в этих операционных системах хранится в двоичных базах данных. Вот некоторые примеры задач, которые можно решать в этих операционных системах с помощью Perl:

проверка пользователей Windows NT на несоответствие их статуса и возможностей;

управление NT-сервисами из командной строки и дистанционно с локальной NT-машины;

получение статистических данных но отдельной NT-машине.

Кроме перечисленных традиционных задач администрирования, в настоящее время приходится решать также задачи, названные в классификации Пратта и Зелковица задачами контроля одной программы другой (например, регулярное резервное копирование файлов в полночь, ежечасная синхронизация времени, автоматический ответ на электронные письма во время отпуска, автоматическое тестирование программы после се успешной компиляции и т, д.). Подобные задачи автоматического запуска и управления выполнением программы называются процессами. Для их решения наиболее подходят так называемые языки сценариев. В системе UNIX shell-сценарии могут активизироваться при выполнении некоторых допустимых условий, что позволяет широко их использовать для управления процессами. Однако кроме командной оболочки shell для этих же целей можно использовать и другие языки сценариев, в том числе и Perl. Таким образом, для языка Perl открываются новые области применения, о которых его создатель Ларри Уолл даже и не подозревал.

Язык задействуется в широчайшем спектре сфер, к примеру:

управление различными компонентами ПО, в том числе разработанные на другом языке;

для написания отдельных приложений.

3.4 Применение Python

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

Системное программирование

Не секрет, что в Python используются современные интерфейсы для манипуляции службами ОС Windows, Linux и т. п. За счёт этой способности, язык является лучшим инструментом для реализации портативных программ. Часто используется в ходе разработки приложений (командных оболочек) из сферы системного администрирования. Несколько базовых функций, доступных к выполнению посредством Python:

поиск файлов по каталогам;

открытие файлов;

запуск сторонних программ;

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

Дополнительным преимуществом является полное соответствие основной библиотеки Python к требованиям POSIX. С учётом поддержки стандартных инструментом ОС, Python является одним из лучших языков.

Графический интерфейс

Python совмещает лёгкость работы и высокую производительность работ, что делает язык идеальным решением для создания графических интерфейсов. Язык совмещает весь набор возможностей объективно-ориентированного интерфейса tkinter. С его помощью достаточно легко реализовать портативный графический интерфейс, соответствующий стилю операционной системы.

На основании API разработаны высокоуровневые инструменты типа: Dabot и PythonCard. К каждой библиотеке есть вспомогательные инструменты, позволяющие создавать графический интерфейс эффективнее и проще:

для QT – PyQT;

для GTK – PyGtk;

для MFC - PyWin32;

для .NET – IronPython;

для Swing – Jython (является Java реализованным языком Python).

Веб-сценарии

Уже сегодня для языка разработано множество полезных инструментов от сторонних разработчиков, помогающих реализовать непосредственно на Python приложения по работе с сетью. Как говорится, Google в помощь. Для примера, с помощью инструмента HTMLGen, способствующего созданию HTML-кода страницы, можно писать классы под HTML прямо на Python. Посредством пакета mod_python, легко запускать сценарии под Apache и обеспечивать работоспособность шаблонов в системе Python Server Pages. Удобно, что в Jython реализована бесшовное внедрение Python/Java кода и поддерживаются апплеты серверов, доступные к выполнению на клиентской стороне.

3.5 Сферы применения Java-технологий

В настоящее время Java-технологии находят широкое применение в различных сферах.

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

1. Разработка приложений (application)

Язык Java используется для разработки обычных прикладных программ, которые запускаются пользователем и имеют доступ ко всем ресурсам компьютера наравне с любыми другими программами.

Для запуска Java-приложений в операционной системе должна быть установлена среда исполнения Java (JRE).

2. Разработка мидлетов (midlet)

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

Структура и возможности мидлетов обусловлены техническими особенностями мобильных устройств.

Для запуска мидлетов мобильное устройство должно поддерживать соответствующую возможность [5].

3. Разработка апплетов (applet)

Язык Java используется для разработки специализированных программ, обычно небольшого размера, запускаемых браузером внутри web-документа для вывода динамического содержимого и/или интерактивного взаимодействия с пользователем.

Для запуска апплетов браузер должен содержать соответствующий модуль (plug-in).

4. Разработка JSP-страниц (Java Server Pages)

JSP-страницы представляют собой HTML-документы со вставками на языке Java, которые используются для анализа пользовательских запросов и динамического формирования web-документов на основе результатов обработки этих запросов.

Для обработки JSP-страниц Web-сервер должен содержать соответствующий модуль.

5. Разработка сервлетов (servlet)

На языке Java разрабатываются специализированные программы-сервлеты, функционирующие в рамках Web-сервера и имеющие доступ к его ресурсам: файлам, базам данных и т.п.

Для запуска сервлетов используется Web-сервер со специальным модулем (контейнером сервлетов) или специальный сервер приложений.

3.6 Сфера применения JavaScript

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

Разработка веб-приложений. Хотите установить простой счетчик, организовать передачу данных между формами или поместить на своем сайте игру? Тогда JavaScript выступит верным помощником в этом деле;

«Активное участие» в AJAX. Эта технология позволила значительно ускорить работу приложений, осуществляя обмен данными с сервером в «фоновом» режиме:

Операционные системы. Возможно, кто-то не знал, но Windows, Linux и Mac имеют своих браузерных конкурентов, львиная доля кода которых написана на JavaScript;

Мобильные приложения;

Сфера обучения. Любая программистская специальность в университете включает в себя изучение JavaScript в том или ином объеме. Это обусловлено тем, что язык изначально разрабатывался для не очень сильных программистов. Уроки JavaScript логически вплетаются в базовый курс HTML, поэтому освоение проходит достаточно просто.

Заключение

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

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

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

Список литературы

  1. Вайсфельд, М. Объектно-ориентированное мышление / М. Вайсфельд. - М.: Питер, 2014. - 338 c.
  2. Васильев, А. Н. Java. Объектно-ориентированное программирование / А.Н. Васильев. - М.: Питер, 2013. - 400 c.
  3. Васильев, Алексей C#. Объектно-ориентированное программирование / Алексей Васильев. - М.: Питер, 2012. - 320 c.
  4. Иванова, Г. С. Объектно-ориентированное программирование / Г.С. Иванова, Т.Н. Ничушкина, Е.К. Пугачев. - М.: МГТУ им. Н. Э. Баумана, 2015. - 368 c.
  5. Кьоу, Дж. Объектно-ориентированное программирование / Дж. Кьоу, М. Джеанини. - М.: Питер, 2005. - 240 c.
  6. Лафоре, Р. Объектно-ориентированное программирование в C / Р. Лафоре. - М.: СПб: Питер; Издание 4-е, 2003. - 928 c.
  7. Лафоре, Р. Объектно-ориентированное программирование в С++ / Р. Лафоре. - М.: Питер, 2015. - 928 c.
  8. Лесневский, А. С. Объектно-ориентированное программирование для начинающих (+ CD-ROM) / А.С. Лесневский. - М.: Бином. Лаборатория знаний, 2010. - 232 c.
  9. Павловская, Татьяна C/C++. Процедурное и объектно-ориентированное программирование. Учебник / Татьяна Павловская. - М.: Питер, 2015. - 496 c.
  10. Санников, Е. В. Курс практического программирования в Delphi. Объектно-ориентированное программирование / Е.В. Санников. - Москва: Наука, 2013. - 188 c.
  11. Шакин, В.Н. Объектно-ориентированное программирование на Visual Basic в среде Visual Studio .Net / В.Н. Шакин, А / В.Н. Шакин, Г.К. Сосновиков, З. - Москва: РГГУ, 2015. - 118 c.