Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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




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

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

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

• алфавит языка значительно шире машинного, что делает его гораздо боли выразительным и существенно повышает наглядность и понят-ность текста;

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

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

• используется аппарат переменных и действия с ними;

• поддерживается широкий набор типов данных. Таким образом, языки программирования высокого уровня являются машинно-независимыми и требуют использования соответствующих программ-переводчиков (трансляторов) для представления программы на языке машины, на которой она будет исполняться. Алгоритмическое программирование. На заре вычислительной техники компьютеры имели весьма небольшой по современным меркам объем оперативной памяти, который достигал десятков ки-лобайт. Обычный размер программ тех лет составлял несколько де-сятков строк кода. Такие программы разрабатывали методом алго-ритмического программирования: сначала готовили алгоритм в ви-де наглядной блок-схемы, а потом записывали его операторами того или иного языка программирования. Программа, составленная методом алгоритмического програм-мирования, начинается в одной точке, затем последовательно ис-полняет все инструкции и завершается в другой точке. Конечно, та-кие программы могут иметь и циклы, и ветвления, но общая логика работы программы все-таки последовательная: от начала к концу. Языки программирования 50—70 гг. XX в. были рассчитаны на алгоритмическое программирование. Основными языками тех лет были ФОРТРАН и АЛ ГОЛ-60. Язык ФОРТРАН имел упрощенный синтаксис, и его предпочитали инженеры, а язык АЛГОЛ-60 отли-чался строгими требованиями, и его предпочитали ученые, в основ-ном математики и физики. Несколько позже, в середине 60-х гг. был разработан язык алгоритмического программирования Бейсик, который и сегодня используют для начального знакомства с алгорит-мами и алгоритмическим программированием. Если цель обучения программированию состоит только в освоении приемов создания простейших алгоритмов, то язык Бейсик для этого вполне достато-чен. Процедурное программирование. Понятие подпрограммы было введено еще в ранних языках программирования. В алгоритмиче-ском программировании их использовали для того, чтобы выделить в отдельные блоки некоторые часто повторяющиеся операции. Обычно программа, записанная на алгоритмическом языке, содер-жит до десятка подпрограмм, которые делают ее более понятной. При желании без них можно обойтись, просто текст программы становится несколько более запутанным. В 70-х гг. XX в. размеры оперативной памяти компьютеров дос-тигли сотен килобайт. Появились дисковые накопители, с которыми программы могли обмениваться данными без участия человека. Это позволило увеличить размеры программ до тысяч операторов, и то-гда недостатки языков алгоритмического программирования стали сдерживать работу программистов. Если написать на алгоритмическом языке очень длинную про-грамму, то с ней трудно разобраться. Переходы из одних мест в другие кажутся запутанными, а большое количество переменных не укладывается в голове. Легко забыть, что хранится в той или иной переменной, и перепутать их имена. Выход из тупика был найден в более широком использовании подпрограмм. Программа, записанная на языке процедурного про-граммирования, выглядит как множество циклов, вложенных друг в друга. Она непрерывно «крутится» в этих циклах и время от време-ни вызывает исполнение функций и процедур. Даже если в про-грамме тысячи строк, разобраться с ней становится гораздо проще. Программист всегда может легко определить, внутри какого цикла в данный момент работает программа, и если там происходит какой-то сбой, то быстро выясняются имена подпрограмм, которые могут его вызвать. Алгоритмы для процедурного программирования тоже можно изображать графически, только называются они не блок-схемами, а структурными диаграммами. Вход в программу обычно один, но выходов из нее (в отличие от алгоритмического программирования) может быть много, и они не всегда размещаются в конце листинга. Для выхода из программы достаточно просто из любого места вы-звать завершающую процедуру. Первым языком процедурного программирования стал язык Пас-каль (Pascal). Это не значит, что на нем нельзя писать программы методом алгоритмического программирования, просто для проце-дурного программирования он подходил лучше, чем любой другой язык своего времени. Вскоре появился другой популярный язык процедурного программирования — СИ (С). Все первые языки, предназначенные для создания баз данных (Clipper, dBASE II, Fox-Pro, Paradox и мн. др.), тоже были рассчитаны на процедурное про-граммирование. Средствами процедурного программирования была создана ос-новная масса программ 70-80 гг. XX в. Большинство программ для MS-DOS (текстовых редакторов, бухгалтерских систем, баз данных и т. п.), используемых и по сей день, тоже были созданы этим прие-мом. Так же создавалось и большинство компьютерных игр для MS-DOS вплоть до начала 90-х гг. Усложнение подпрограмм. С развитием процедурного програм-мирования программисты поняли, какую огромную роль имеют подпрограммы. Неожиданно выяснилось, что программы самых разных классов - от служебных до игровых, могут быть очень по-хожи по структуре, а различаются лишь содержанием подпрограмм. Тогда программисты стали пытаться сделать подпрограммы такими, чтобы их можно было использовать многократно в разных проек-тах. Отдельные процедуры и функции стали приобретать такую мощь, что одним вызовом процедуры можно было выполнить сложнейшие действия, для которых раньше требовались недели программирования. Типизация подпрограмм. Чем мощнее становились процедуры и функции, тем выше был соблазн стандартизовать их так, чтобы без изменений использовать в разных программах. И тогда выяснилось, что одни подпрограммы подходят для этого хорошо, а другие — не очень. Нетрудно присоединить к любой программе процедуру или функцию, которая не обменивается с программой параметрами (ти-па RND), а просто выполняет какое-то действие, но чем больше па-раметров участвует в работе процедуры, тем труднее ее встроить в другую программу без специальной настройки. В итоге к середине 80-х гг. XX в. большинство компаний, вы-пускающих программы, занялись стандартизацией используемых процедур. Объектный подход. Чтобы подпрограммы стали стандартными и могли использоваться без переделок (но с поднастройками) повсе-местно, потребовалось изобрести для них классификацию и разра-ботать принципы их создания, документирования и применения. Эти принципы назвали объектно-ориентированным подходом. Достаточно сложные и мощные подпрограммы, поставлявшиеся вместе с языками программирования, стали считаться стандарт-ными объектами. Их можно было использовать в своих программах после несложной настройки параметров. Возьмем, к примеру, под-программу, выполняющую поиск слов в тексте. Ее можно исполь-зовать в разных программах, причем по-разному. При вызове с од-ними параметрами она способна искать заданные слова по содер-жащимся в них символам, при вызове с другими параметрами — по использованному шрифту, а при вызове с третьим набором пара-метров она не только найдет слова с ошибками, но и исправит их. Объекты стали считаться новыми, особыми типами данных, в которых сочетаются программный код и сами данные. Свойства объектов. С понятием объекта неразрывно связано по-нятие его свойств. Все объекты имеют свойства и различимы по своим свойствам. В итоге использование в программах готовых объектов стало очень простым: вызвали объект, настроили его свойства — получили готовый программный код. Использование готовых объектов с настраиваемыми свойствами позволило созда-вать программы без программирования. Если раньше для рисования правильного треугольника на экране программист должен был писать одну процедуру, а для рисования квадрата — другую, то при объектно-ориентированном подходе он может вызвать стандартный объект Shape (Фигура) и настроить его свойство, отвечающее за количество вершин. Более того, он может еще настроить такие свойства, как толщина, цвет и вид линии (сплошная, пунктирная и т. п.). Настройка свойств объектов выпол-няется простой операцией присвоения значений. То есть для про-граммиста свойства объектов — это обычные, хорошо знакомые пе-ременные, которым можно присваивать значения. Итак, объекты в программировании — это аналог подпрограмм. Свойства объектов — это аналог переменных, используемых в подпрограммах, а аналогом рабочего кода стали методы объектов. Методы объектов — это стандартные процедуры, которые свя-заны со своими объектами. Разным типам объектов соответствуют разные свойства и разные методы. Например, объекты, относящиеся к типу «окно», можно открывать и закрывать — это два типичных метода для окон. Объекты, относящиеся к типу «фигура», можно закрашивать разными цветами —за это отвечает метод, называе-мый заливкой. А с объектом «целое число» связаны знакомые нам методы сложения, умножения, деления и вычитания. Классификация объектов. Если бы объект был просто совокупно-стью методов и свойств, то ничего нового он программистам бы не дал — это была бы самая обычная стандартная подпрограмма с па-раметрами. Раньше каждая компания накапливала библиотеки про-цедур для себя, теперь появилась возможность всемирной стандар-тизации. Теперь, когда компания Borland или Microsoft включает в свою систему программирования класс объектов Frame, то любой программист в мире знает, что при его вызове на экране получится окно. Он также знает, как вызвать метод его закрытия или откры-тия, и каким свойствам надо присвоить значения, чтобы окно полу-чилось нужного размера. То же относится к другим объектам: Shape (Фигура), Table (Таблица) и др. Если сравнить программирование со строительством дома, то во времена процедурного программирования каждая фирма сама лепи-ла и обжигала для себя кирпичи (подпрограммы) и сохраняла в тай-не приемы работы с ними. С введением объектно-ориентированного подхода все программисты получили одинаковые заготовки (объек-ты) для кирпичей, труб, плит и панелей. Для их использования надо знать методы и свойства, связанные с каждым типом.

Наследование свойств и методов. Возможность классификации и стандартизации — не единственное достоинство объектно-ориентированного программирования. Важную роль сыграла также возможность наследования свойств и методов. Если бы все про-граммисты составляли свои программы только из заранее заготов-ленных объектов (стандартных классов), то все программы были бы удивительно похожи. С одной стороны, это хорошо, а с другой — плохо. Для служебных программ, например приложений Windows, это хорошо, потому что упрощается их изучение и освоение. Но для развлекательных программ это плохо: им требуется разнообразие. Но программист не обязан пользоваться только готовыми клас-сами объектов. Он может создавать свои объекты — для этого ему достаточно запрограммировать связанные с ними методы и подго-товить свойства. Более того, программист не должен делать это «с нуля». Он может взять какой-то готовый класс объектов и на его основе создать свой. Большинство методов и свойств ему не при-дется создавать — они наследуются автоматически. Конструирование вместо программирования. Создать программу, рисующую на экране красивое окно, весьма непросто, а использо-вать готовый объект Frame и настроить его свойства, чтобы окно было таким, каким надо, может каждый начинающий программист. После настройки свойств объекта он получает готовый программ-ный код длиной в десятки килобайт, хотя на самом деле присвоил всего лишь несколько значений переменным, выражающим свойст-ва объекта. Так благодаря объектно-ориентированному подходу программи-рование стало превращаться в конструирование программ из гото-вых блоков. Единственное, что остается для ручного программиро-вания, — запись строк, в которых свойства объектов получают нужные значения. Иногда программисты сталкиваются с тем, что для своих задач не находят готовых объектов. В этом случае им приходится дейст-вительно серьезно заниматься программированием, чтобы создать методы и описать свойства нестандартных объектов. Впрочем, и эта задача значительно упрощается, если программист не изобретает новый объект «с нуля», а использует для его создания другой, ранее созданный объект. Таким образом, объектно-ориентированный подход позволил создавать новые программы путем перенастройки старых. Это позволило значительно поднять производительность труда про-граммистов и перейти во второй половине 90-х гг. к созданию про-грамм размером в миллионы строк кода. Наглядный пример — опе-рационная система Windows. Над первой версией (Windows 95) компания Microsoft работала много лет. Сегодня новые версии Win-dows выходят каждый год: 1998 Windows 98 1999 Windows 98 SE 2000 Windows 2000, Windows Me 2001 Windows XP (версии Ноте и Professional) 2002 Windows XP (Server и Advanced Server). Объектно-ориентированные языки программирования. Переход к объектно-ориентированному программированию в середине 80-х годов XX в. состоялся не сразу, а только после создания языков программирования нового поколения. Вместе с новой концепцией программирования были разработаны и новые компиляторы, и биб-лиотеки объектов. Одним из первых объектно-ориентированных языков стал язык СИ++ (C++). Язык Паскаль (Pascal) развился в язык Object Pascal. Появились и другие объектно-ориентированные языки программирования, например язык Java, разработанный кор-порацией Sun Microsystems, — ныне он широко используется при создании приложений, работающих в Интернете. Визуальное программирование В операционной системе Win-dows немало стандартных элементов управления, таких как окна, меню, списки, переключатели, флажки и пр. Стандартны приемы работы с мышью: наведение, щелчок, двойной щелчок и прочие. Эти элементы и приемы управления стали настолько стандартными, что их унаследовало и большинство программ, написанных для ра-боты с Windows. Стандартизация графических элементов управле-ния и приемов работы с ними с помощью мыши позволила вновь изменить стиль программирования и перейти к так называемому визуальному программированию.

Системы визуального программирования. Переход к визуальному программированию наметился еще во времена операционной среды Windows 3.1 (1992-1994), но подлинное развитие новый метод по-лучил только после 1995 г., когда стали появляться специальные программные комплексы, получившие название систем визуального программирования. По-английски они также называются RAD-системами (RAD — Rapid Application Development — среда быст-рой разработки приложений). Языку Object Pascal соответствует система Delphi, языку Бейсик (Basic) — система Visual Basic, языку СИ ++ (C++) — система C++ Builder, языку Java — система Java Builder. Принципы визуального программирования. До визуального про-граммирования программист использовал в работе печатные спра-вочники или программные справочные системы, в которых были описаны правила создания объектов из стандартных классов, при-ведены основные методы и свойства объектов и правила их исполь-зования и настройки. Визуальное программирование позволило во многих случаях отказаться от справочников и создавать объекты с помощью мыши, что и удобно, и наглядно. Общий принцип визу-ального программирования такой. 1. Стандартные классы объектов, например такие, как окна, кнопки, списки, поля, переключатели, флажки и мн. др., представлены в системе визуального программирования в ви-де значков на инструментальной панели. Эти значки называ-ются компонентами. То есть компоненты — это инструменты для создания объектов. 2. Для вставки объекта в свою программу программист выбира-ет нужный компонент, после чего с помощью мыши помеща-ет в заготовку окна (она называется формой) заготовку буду-щего элемента управления. 3. Поместив объект на форму, программист щелчком мыши вы-зывает окно свойств этого объекта и настраивает их. После настройки объект приобретает размеры, местоположение, имя, надпись и т. п. Свойства могут иметь внутренние свой-ства, например, надпись на кнопке может иметь заданный цвет, шрифт, размер и т. п.

4. Точно так же с помощью мыши программист может вызвать окно кода, связанного с объектом, и выполнить настройку ме-тодов объекта. Например, он может сделать так, чтобы при открытии окна раздавался звук, а перед его закрытием возникало предупреждающее сообщение. 5. После размещения всех необходимых элементов управления на форме, настройки их свойств и подключения необходимых методов программа готова. С помощью мыши выдается команда на ее трансляцию. Системы Delphi и C++ Builder выполняют компи-ляцию, а система Visual Basic — интерпретацию. Событийное программирование Существует три стиля управле-ния: командный, диалоговый и пакетный. Это относится не только к программированию, а вообще к любому управлению. Подобие диалоговой работы впервые возникло во второй половине 60-х гг., ко-гда в больших ЭВМ появились многозадачные операционные сис-темы, работавшие в режиме разделения времени. Компьютер одно-временно работал с десятками пользователей, мгновенно пере-ключаясь между ними и их задачами. Каждый пользователь пола-гал, что компьютер работает только с ним. Тогда впервые программисты стали общаться с ЭВМ напрямую. Их рабочие места осна-стили терминалами (монитор + клавиатура). Но диалог происходил не внутри программы, а на уровне операционной системы, то есть либо перед исполнением программы, либо после него. Получив ре-зультат расчета, программист мог повторить расчет с другими дан-ными или внести изменения в программу и вновь запустить ее ис-полнение. До середины 70-х гг. в языках программирования не бы-ло средств для организации диалога. Такие языки появились только после создания персональных компьютеров. Все диалоговые возможности компьютера основаны на том, что программа работает в некоем бесконечном цикле, в ходе которого бесконечно опрашивает внешние устройства управления (клавиату-ру, мышь, модем и др.), а после получения отклика входит в другой цикл и опять что-то опрашивает. Вплоть до конца 80-х гг. програм-мисты отводили сотни строк своих программ реализации этих цик-лов. В итоге прием стал настолько стандартным, что его передали операционной системе, и начиная с Windows 3.0 программист мог не опрашивать устройства управления, а ждать сигнала от Windows. Для операционной системы Windows нажатие клавиш на клавиату-ре, перемещение мыши и нажатие ее кнопок, открытие и закрытие окон, поступление сигналов от внутренних часов, модема, принтера и прочих периферийных устройств, называются событиями. С раз-ными объектами Windows связаны разные события. Например, для окна событиями являются его открытие и закрытие; для текстового поля — его изменение, а для командной кнопки — щелчок мышью, совершенный над ней. При получении от операционной системы сигнала о том, что произошло некое событие, связанное с объектом, автоматически запускается подпрограмма-метод, являющаяся обработчиком данного события. В ней программист может записать ал-горитм действий, которые он хочет выполнить при наступлении со-бытия. Выше мы говорили о том, что с объектами связаны две характеристики: свойства и методы. Теперь мы можем добавить третью — события, связанные с объектами. В качестве реакции на событие объект автоматически запускает подпрограмму-метод, пред-варительно подготовленную программистом, а она, в свою очередь, может вызвать изменение свойств данного объекта или иных объек-тов, а также вызвать другие события, связанные с другими объектами и т. д. Последовательность исполнения программы при ис-пользовании событийного механизма зависит от порядка, в котором наступают те или иные события, и от реакции программных объектов на эти события. Практически все прикладные программы Win-dows основаны на событийном механизме. Действие инструментов рисования в программе Paint зависит от того, на каком из них произошел щелчок (какой инструмент избрал пользователь) и как он управляет мышью в ходе рисования. Действие процедур формати-рования в программе WordPad также зависит от того, какие экран-ные элементы управления зафиксировали событие. Событийный механизм не является свойством тех или иных языков программи-рования — это свойство (и особенность) операционной системы компьютера. При объединении событийного механизма, предостав-ляемого операционной системой, и объектно-ориентированного подхода, предоставляемого языком программирования, образуется отличная возможность для простой реализации диалога с компьютером. Это сочетание и называют событийным программировани-ем.




Поделиться с друзьями:


Дата добавления: 2014-01-06; Просмотров: 958; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.016 сек.