Понятие языка программирования☛Уроки программирования ✎ |
Процесс работы компьютера заключается в выполнении некоторого набора команд, которые выполняются в определенной последовательности. Машинный код команд, реализованный в двоичной системе счисления, указывает, какую именно действие должен выполнять центральный процессор. Итак, чтобы заставить компьютер решать ту или иную задачу, надо задать последовательность двоичных кодов соответствующих команд. Писать такие последовательности очень сложно, потому что, кроме необходимости помнить двоичные коды команд, программист должен держать и памяти и двоичные коды адреса данных, которые использовались во время выполнения программы. Для облегчения этого процесса было разработано много языковых систем записи алгоритмов, которые в более наглядном виде подавали последовательность действий компьютера. Таким образом, в подготовке алгоритмов к их выполнению на компьютере на первый план выходит необходимость точной записи команд, понятных не только исполнителю, но и разработчику, поэтому ни в одном языке записи алгоритмов вы не найдете синонимов, метафор и других языковых конструкций, на которые так богата наша разговорная речь.
Понятие о языке программирования
Языком программирования называется фиксированная система управления для описания алгоритмов и структур данных, или Алгоритмические языки описания построенных алгоритмов, исполнителем которых будет компьютер, называются языками программирования.
Описания алгоритмов на языке программирования называются программами.
Язык большинства современных компьютеров достаточно скуп и состоит из команд типа: «выделить память определенного размера», «прочитать содержание определенной ячейки памяти »,« добавить два числа »,« переслать число из регистра памяти процессора в определенную ячейку оперативной памяти »,« сравнить два числа, перехода к выполнению следующей команды »и т.п.; таких команд несколько сотен, и они настолько просты, что могут реализоваться аппаратной частью компьютера. Набор этих команд носит название языка машинных кодов. Используя команды этого набора, можно описать алгоритм, но запись может быть настолько громоздок, что вероятность его безошибочности чрезвычайно мала.
Существует два выхода из этой ситуации. Первый - создание более мощной аппаратной базы, которая сможет реализовать значительно более широкий и сложный набор команд, но и это не гарантирует возможных ошибок разработчика (вспомните свои письменные работы по родному языку, которым вы владеете в совершенстве?). Второй - разработка такой системы записи, которая была бы понятна и человеку - разработчику алгоритма. Этот способ предусматривает разработку такого программного обеспечения, которое бы позволяло использовать сложные с точки зрения компьютера алгоритмические конструкции (как разветвление или циклы) в понятной с точки зрения человека команде.
А для этого, помимо системы записи алгоритмических конструкций на языке, понятном человеку, должны разрабатываться и программы текстов записи алгоритмов на язык, понятный компьютеру. Теперь программа, написанная даже учеником 4 класса на одном из языков программирования, будет выполняться на компьютере независимо от его типа, если на нем установлен соответствующую среду программирования. Поэтому второе направление разработки программного обеспечения в настоящее время активно развивается.
На сегодняшний день разработано большое количество различных языков программирования, существуют еще и различные версии этих языков. Возникает вопрос: а почему нельзя обойтись одной или хотя бы нескольких языках? Дело в том, что с расширением сфер использования компьютеров в одном языке невозможно учесть специфики задач, возникающих, поэтому каждый язык ориентирована на определенный класс задач. Для решения экономических задач используются одни языки, для расчетных вторые, для информационно-логических - третьи. И искусство программиста - не только в составлении совершенного алгоритма, но и в умении выбрать язык, на котором этот алгоритм будет реализован наиболее полно.
Классификация языков программирования
Существуют разные принципы классификации языков программирования. Наиболее распространенным среди них является разделение всех языков программирования на языка низкого и высокого уровней.
Языка машинных команд (кодов) представленной модели компьютера, воспринимаются им непосредственно, называются языками низкого уровня или машинными языками.
В группу языков программирования низкого уровня относятся:
• язык микрокоманд - задает простые передачи данных между оперативной памятью и процессором, между регистрами процессора и т.п.;
• машинный язык - каждая команда описывается последовательностью микрокоманд,
• ассемблер (сочинять, компоновать) - язык символического кодирования.
Первые два языка плохо настроены на восприятие человеком, поскольку их команды задаются восьмиразрядным двоичными числами кодами. Операторы ассемблера тоже машинные коды, но они имеют символические (мнемонические) названия, а в качестве операндов выступают не конкретные адреса ячеек оперативной памяти, а их имена идентификаторы.
Все языки программирования низкого уровня ориентированы на определенный гип процессора и в этом смысле специализированные именно на них.
Языках высокого уровня называют такие языки, которыми программы состоят из операторов, в свою очередь отвечают определенному набору машинных команд.
Общим для всех языков высокого уровня является то, что они ориентированы этом на систему команд того или иного процессора, а на общую систему операторов, характерных для записи определенного типа алгоритмов; примерами таких операторов могут быть операторы присваивания, условные операторы и т.д.
Все приведенные выше примеры языков программирования, кроме Ассемблера, принадлежат к языкам программирования высокого уровня еще и потому, что их конструкции максимально приближены к обычным разговорных языков, а потому понятны человеку и удобны в использовании.
Мы рассмотрели одну из традиционных классификаций языков программирования. Существует и такая классификация, в которой языки подразделяются на вычислительные и логические. Практически все рассмотренные языка программирования является вычислительными. Если говорить о логические языки программирования, то следует назвать такие мощные языки программирования, как Лисп и Пролог.
Язык Лисп создан в 1965 году американским профессором Джоном Маккарти для исследования проблем искусственного интеллекта и стал основой ряда программных реализаций интеллектуальных систем. Пролог - европейский язык, основанный на алгебре высказываний (логическое исчисление), созданный в 1972 г. в Марсельском университете, разработчик А. Колмерауер.
Существует и «прикладная» классификация языков программирования, с которой все языки разделяются на группы по отраслям применения.
Процедурный язык программирования
Большинство языков программирования высокого уровня относятся к процедурных языков. В основном это языки для решения прикладных задач.
Языки программирования, в которых реализованы возможности пошаговой детализации алгоритмов, нисходящего и восходящего программирования, называют процедурными языками.
В вышеуказанном языках основным методом является разбиение задачи на отдельные шаги и их последовательное описание. Пошаговая детализация алгоритма происходит до того момента, пока не получим элементарные действия решения отдельных фрагментов задач / которые можно было бы записать в виде последовательности отдельных команд, допустимых в этом языке.
Особенностью процедурных языков программирования является то, что команды в программах, записанных процедурными языками, выполняются последовательно, поэтому отменить ранее выполненные команды невозможно, поскольку содержимое памяти, где хранится промежуточная информация, постоянно обновляется и предыдущая информация не сохраняется. Языки программирования такого вида еще называют алгоритмическими.
В основу процедурных языков программирования заложен принцип структурного программирования, где существует строгая иерархическая структура подчинения одних операторов другим и разрешается включать одни алгоритмические структуры в других (вспомните вложенные циклы и т.п.). В тексте программы такое вложение или подчинения отображается оползнями строк.
Ключевой идеей структурного программирования является отражению структуры алгоритма в структуре текста программы.
Мы должны понимать, что мало пользы от программы, если человек не может в ней разобраться, т.е. прочитать и понять назначение того или иного блока операторов, убедиться в правильности и целесообразности как отдельных частей, так и всей программы в целом.
Логическое программирование
Идея использования математической логики в качестве языка программирования была предложена Р. Ковальским в Англии в начале 70х годов прошлого века, а именно логическое программирование возникло как следствие успехов в автоматическом доказательстве теорем.
Основой математической логики является обеспечение определенной системы формальных обозначений для отображения соображений. Одним из разделов математической логики является логика высказываний.
Логика высказываний - раздел математической логики, изучающий высказывания, рассматриваемые с точки зрения их логических значений - истинности и ложности - и логических операций над ними.
Основными элементами логики высказываний являются высказывания и операции над ними. В логике высказываний рассматривают только утвердительные предложения, которые могут быть только истинные или ложные. Каждое такое предложение называют высказыванием; например, «Роман - ученик 11 класса», «Ирина не учит информатики». Приведенные высказывания называются простыми. Из простых высказываний можно строить составные конструкции: «Если Роман ученик 11 класса, то он изучает информатику», «Ирина ходит в школу и не учит Информатику».
В логике высказываний используют такие логические связи:
• «нет» - отрицание;
• «... и ...» - конъюнкция;
• «... или ...» - дизъюнкция;
• «если ... то ... »- заключение (импликация);
• «... тогда и только тогда ...» - эквивалентность.
Логическое программирование - запись решения задачи языке математической логики в виде набора высказываний, отношений между высказываниями и правил вывода одних высказываний из других.
Язык программирования Пролог был принят как базовый язык ее японской программе создания компьютера пятого поколения. Логическое программирование на языке Пролог корне отличается от программирования алгоритмическими языками. Программа описывает не процедуру решения задачи, как в алгоритмических языках, а логическую модель, включающая некоторые факты относительно свойств предметной области и отношений между объектами в этой области, а также правила вывода новых свойств и отношений с уже заданным. Например, вы определяете «квадрат как« ромб, у которого все углы прямые », или« прямоугольник, у которого все стороны равны », и делаете вывод, что квадрат имеет все свойства и ромба, и прямоугольника.
Программа на языке Пролог состоит из множества утверждений, каждое из которых является либо фактом. или правилом одного целевого утверждения.
Правило указывает, каким образом решение связано с заданными фактами или как из представленных фактов вывести это решение. Программа на языке Пролог похожа на гипотезу о некоторой предметной области, а вопрос - на теорему, которую должен довести компьютер. Программирование на Пролог состоит в передаче компьютеру совокупности информации и в следующем обращении к нему с вопросом о возможных выводов из этой информации. Логичную программу можно использовать и для поиска информации, которая может быть логически выведена из этой совокупности информации. Поиск объекта, находящегося в этом отношении с другими объектами, является важным свойством программ логического программирования. Например, параллелограмм - четырехугольник, у которого ...; прямоугольник - параллелограмм, у которого ...; квадрат - прямоугольник, у которого ...; вывод: квадрат - четырехугольник.
Объектно-ориентированное программирования
Объектно-ориентированное программирования (ООП) - естественный подход к построению сложных программ и систем, в основе которого лежит идея объединения в одной структуре данных и выполняемых над ними. В терминологии ООП эти действия называют методами. При таком подходе организация данных и программная реализация действий над ними оказываются значительно сильнее связанными, чем за структурного программирования. ООП базируется на трех основных понятиях:
- Инкапсуляция - комбинирование данных с процедурами и функциями, которые манипулируют этими данными
- Подражание - возможность использования уже определенных объектов для построения иерархии объектов, производных от них
- Полиморфизм - возможность определения единой по имени действия, процедуры или функции, может быть применена одновременно для всех объектов иерархии наследования
Инкапсуляция можно представить как механизм, объединяющий данные и процедуры, которые обрабатывают, в единую структуру - «черный ящик», в котором скрытые механизмы представления и обработки данных. Пользователь обращается к объекту по заранее определенным правилом и, не влияя на объект, пользуется им. Так вы вычисляете на калькуляторе приближенное значение квадратного корня из неотрицательного числа т.д.
• Подражание - механизм, в результате применения которого один объект может получить в наследственность все свойства и методы другого, добавляя к ним свои, только ему присущие свойства. Каждый из «потомков» получает «в наследственность» описание данных «прародителя» и доступ к методам их обработки. Таким образом выстраивается иерархия.
• Полиморфизм - механизм, позволяющий одно и то же имя использовать для решения сходных задач, отличные в отдельных деталях. В качестве примера можно рассмотреть функцию определения целой части дробного и натурального числа.
Примером применения объектно-ориентированного программирования операционная система. При открытии любой программу, открывается окно с большим количеством кнопок, разделов меню, окон редактирования, списков и т.д. Все это объекты. Сами по себе ничего не делают, а ждут каких-то событий, например нажатия пользователем клавиш или кнопок. Когда происходит событие, объект получает сообщение и реагирует на него: Развертывает список, заносит символ в окно редактирования и т.д.
Объектно-ориентированное программирование - новая идеология программирования, основанный на использовании совокупности объекта и событий, на которые он может реагировать.
Одним из главных преимуществ ООП является возможность расширения области применения программ, не переделывая сами программы, а лишь добавляя в них новые уровни иерархии.
Визуальное программирование
Логичной реализацией объектно-ориентированного программирования является визуальное программирования. Включать объекты в свою программу можно двумя способами:
• вручную, используя в программе соответствующие операторы (что происходит довольно редко);
• путем визуального программирования, используя заготовки среды (компоненты).
Еще недавно разработка графического интерфейса не требовала больших усилий. Программирование вручную различных привычных нам кнопок, окон, списков меню включения в программы изображений и звука требовало от программиста 80-90% времени разработки программного средства. При изменении стиля графического интерфейса вся предыдущая работа становилась напрасной, все приходилось переделывать сначала. Выход из этой ситуации удалось найти благодаря двум принципам: во-первых, стандартизировано функции интерфейса, благодаря чему созданы библиотеки, визуальное программирование позволяет свести проектирование пользовательского интерфейса к простых и наглядных процедур, что позволяет значительно ускорить процесс разработки.
В интегрированной среде пользователю предоставляются формы, на которые он может разместить компоненты управления, например кнопки, надписи и т.д. Форма визуализируется на экране монитора в виде окна, которое затем будет видеть пользователь программы. На форму с помощью мыши переносятся пиктограммы компонентов, имеющихся в библиотеке среды. Главное заключается в том, что при проектировании формы и расположения на ней компонентов автоматически формирует коде, описывающих этот компонент. К использованных компонентов формы можно присоединить обработчика событий, то есть собственные программные коды, предусматривающие реакцию программы на работу с указанным компонентом.
Визуальное программирование - это практическое применение ООП при использовании готовых библиотек компонентов, предусмотренных средой программирования.
Понятие о системах программирования
Все рассмотренные идеологии программирования реализованы в конкретных языках программирования. Но каждый язык разрабатывается для ее дальнейшей реализации на компьютере. Именно для такой реализации конкретных языков с их алфавиту, правилам записи отдельных действий и разрабатываются системы программирования.
Система программирования - это реализация конкретного языка программирования для определенных компьютерных систем.
Каждый язык программирования поддержана своей системой программирования с учетом возможностей конкретной операционной системы. В компьютерах первых поколений системы программирования имели очень ограниченные возможности, которые предоставляли программисту возможность перевести программу с алгоритмического языка в машинный код и определить синтаксические ошибки.
Со временем системы программирования, и сейчас мы пользуемся возможностями редактора текста при наборе самой программы, сохранения как текста программы, так и ее машинного кода, возможностями пошагового выполнения программы для определения логических ошибок и запуска программы на выполнение.
Современные системы программирования дополнены развитым пользовательским интерфейсом, который реализован в виде интегрированных интерактивных сред (ИС) или интегрированных инструментальных оболочек (ПО). Такие среды обеспечивают пользователю много оконный и режим работы, использование мыши, позволяют применять объектно-ориентированное программирования, использовать фрагменты программ, записанных на ассемблере.
Понятие об интерпретации и компиляции
Для преобразования программ, написанных на языках программирования высокого уровня, в исполняемый вид, то есть набор машинных кодов, существуют специальные системные программы – трансляторы.
Любой транслятор реализует две задачи:
1. Анализ программы, транслируемой, в результате чего определяется ее корректность. В случае обнаружения ошибок транслятор указывает на те места текста программы, где нарушены правила ее написания.
2. Генерация исходной программы на языке команд компьютера. Трансляторы существуют двух типов:
Интерпретатор языка программирования BASIC осуществляет последовательный синтаксический контроль операторов исходного текста программы и последовательного выполнения его команд (операторов). Компилятор языка программирования Pascal осуществляет перевод всего текста исходной программы в машинный код. Итак, Бейсик-программа на этапе выполнения выполняется по одной команде, при наличии синтаксических ошибок в тексте и часть, предшествующий ошибке, все равно будет выполнена. Поскольку программа может быть выполнена только после исправления всех синтаксических ошибок в исходном тексте программы.
Результат компиляции программы, т.е. ее машинный код, можно сохранить на внешнем носителе в виде отдельного файла. Такое откомпилированные программу можно эксплуатировать без использования среды программирования. Следует заметить, что не все интерпретаторы предоставляют такую возможность, поэтому для повторного выполнения программы, написанной в такой среде, необходимо запускать интерпретатор.
Другие материалы по теме:
- Eclipse- Среда программирования. Интегрированные среды программирования
- Понятие алгоритма
- Построение алгоритмов
- Типы алгоритмов
