Программирование. Стили программирования
Содержание:
- Введение…………………………………………………………
……2 - Программирование……………………………………
……………...3 - Стили программирования……………………………………
………3 - Классификация стилей программирования…………………………4
- Процедурное
программирование……………………………………
.5 - Функциональное
программирование………………………………..
.9 - Логическое
программирование……………………………………
…11 - Объектно-ориентированное программирование……………………12
- Заключение……………………………………………………
……….15 - Список литературы……………………………………………………
16
1.Введение.
Программи́рование — процесс и искусство создания компьютерных программ и/или программного обеспечения с помощью языков программирования. Программирование сочетает в себе элементы искусства, фундаментальных наук (прежде всего математики) и инженерии.
Программа должна быть легко читаемой, ее структура должна соответствовать структуре и алгоритму решаемой задачи. Для этого необходимо следовать правилам хорошего стиля программирования. Стиль программирования — это набор правил, которым следует программист в процессе своей работы. Очевидно, что хороший программист должен следовать правилам хорошего стиля.
Хороший стиль программирования предполагает:
- использование комментариев;
- использование несущих смысловую нагрузку имен переменных, процедур и функций;
- использование отступов;
- использование пустых строк.
Следование
правилам хорошего стиля программирования
значительно уменьшает
2.Программирование
В узком
смысле слова, программирование рассматривается
как кодирование — реализация
одного или нескольких взаимосвязанных
алгоритмов на некотором языке
Программирование включает в себя:
- Анализ;
- Проектирование - разработка алгоритма;
- Кодирование и Компиляцию - написание исходного текста программы и преобразование его в исполнимый код с помощью компилятора;
- Тестирование и отладку - выявление и устранение ошибок;
- Сопровождение.
3.Стили программирования
Работая над программой, программист, особенно начинающий, должен хорошо представлять, что программа, которую он разрабатывает, предназначена, с одной стороны, для пользователя, с другой — для самого программиста. Текст программы нужен прежде всего самому программисту, а также другим людям, с которыми он совместно работает над проектом. Поэтому для того, чтобы работа была эффективной, программа должна быть легко читаемой, ее структура должна соответствовать структуре и алгоритму решаемой задачи. Как этого добиться? Надо следовать правилам хорошего стиля программирования. Стиль программирования — это набор правил, которым следует программист в процессе своей работы. Очевидно, что хороший программист должен следовать правилам хорошего стиля.
Правила хорошего стиля - результат соглашения между программистами. Считается, что в соответствии с правилами хорошего стиля программный код должен поддерживать:
- очевидную логику;
- естественные выражения;
- осмысленные имена;
- аккуратное форматирование;
- развернутые комментарии;
- отсутствие хитрых трюков и необычных конструкций.
Следование
правилам хорошего стиля программирования
значительно уменьшает
Четкого критерия оценки степени соответствия программы хорошему стилю программирования не существует. Вместе с тем достаточно одного взгляда, чтобы понять, соответствует программа хорошему стилю или нет.
Сводить понятие стиля программирования только к правилам записи текста программы было бы неверно. Стиль, которого придерживается программист, проявляется во время работы программы. Хорошая программа должна быть прежде всего надежной и дружественной по отношению к пользователю.
Надежность подразумевает, что программа, не полагаясь на "разумное" поведение пользователя, контролирует исходные данные, проверяет результат выполнения операций, которые по какой-либо причине могут быть не выполнены, например, операций с файлами.
Дружественность
предполагает хорошо спроектированные
диалоговые окна, наличие справочной системы,
разумное и предсказуемое, с точки зрения
пользователя, поведение программы.
4.Классификация стилей программирования.
Большая часть работы программиста связана с написанием исходного кода на одном из языков программирования.
Различные
языки программирования поддерживают
различные стили
Одним
из важнейших признаков классификации
языков программирования является принадлежность
их к одному из стилей, основными из которых
являются следующие: процедурный, функциональный,
логический и объектно-ориентированный.
5.Процедурное программирование.
Процедурное (императивное) программирование является отражением архитектуры традиционных ЭВМ, которая была предложена фон Нейманом в 40-х годах. Теоретической моделью процедурного программирования служит алгоритмическая система под названием «машина Тьюринга».
Программа
на процедурном языке
Выполнение программы сводится к последовательному выполнению операторов с целью преобразования исходного состояния памяти, то есть значений исходных данных, в заключительное, то есть в результаты. Таким образом, с точки зрения программиста имеются программа и память, причем первая последовательно обновляет содержимое последней.
Процедурные
языки характеризуются
- необходимостью явного управления памятью, в частности, описанием переменных;
- малой пригодностью для символьных вычислений;
- отсутствием строгой математической основы;
- высокой эффективностью реализации на традиционных ЭВМ.
Одним из важнейших классификационных признаков процедурного языка является его уровень. Уровень языка программирования определяется семантической (смысловой) емкостью его конструкций и степенью его ориентации на программиста. Язык программирования частично ликвидирует разрыв между методами решения различного рода задач человеком и вычислительной машиной. Чем более язык ориентирован на человека, тем выше его уровень. Дадим краткую характеристику реализованным на ПЭВМ языкам программирования в порядке возрастания их уровня.
Двоичный язык является непосредственно машинным языком. В настоящее время такие языки программистами практически не применяются.
Язык
Ассемблера — это язык, предназначенный
для представления в
Язык Макроассемблера является расширением языка Ассемблера путем включения в него макросредств. С их помощью в программе можно описывать последовательности инструкций с параметрами — макроопределения. После этого программист может использовать снабженные аргументами макрокоманды, которые в процессе ассемблирования программы автоматически замещаются макрорасширениями. Макрорасширение представляет собой макроопределение с подставленными вместо параметров аргументами.
Другими словами, язык Макроассемблера представляет средства определения и использования новых, более мощных команд как последовательности базовых инструкций, что несколько повышает его уровень.
Языки
Ассемблера и Макроассемблера применяются
системными программистами-
Язык программирования С (Си) первоначально был разработан для реализации операционной системы UNIX в начале 70-х годов. В последующем приобрел высокую популярность среди системных и прикладных программистов. В настоящее время этот язык реализован на большинстве ЭВМ.
В С сочетаются достоинства современных высокоуровневых языков в части управляющих конструкций и структур данных с возможностями доступа к аппаратным средствам ЭВМ на уровне, который обычно ассоциируется с языком низкого уровня типа языка Ассемблера. Язык С имеет синтаксис, обеспечивающий краткость программы, а компиляторы способны генерировать эффективный объектный код.
Одна из наиболее существенных особенностей С состоит в нивелировании различий между выражениями и операторами, что приближает его к функциональным языкам. В частности, выражение может обладать побочным эффектом присваивания, а также может использоваться в качестве оператора. Нет также четкой границы между процедурами и функциями, более того, понятие процедуры не вводится вообще.
Синтаксис языка затрудняет программирование и восприятие составленных программ. Отсутствует и строгая типизация данных, что предоставляет дополнительные возможности программисту, но не способствует написанию надежных программ.
Ваsic(Бэйсик) (Beginners All-purpose Symbolic Instruction Code) — многоцелевой язык символических инструкций для начинающих) представляет собой простой язык программирования, разработанный в 1964 году для использования новичками. Он был разработан как простейший язык для непосредственного общения человека с вычислительной машиной. Поэтому первоначально работа велась в интерактивном режиме с использованием интерпретаторов. В настоящее время для этого языка имеются также и компиляторы.
Согласно концепциям, заложенным в Basic, этот язык в смысле строгости и стройности является антиподом языка Pascal. В частности, в нем широко распространены различные правила умолчания, что считается плохим тоном в большинстве языков программирования подобного типа.
Basic широко
распространен на ЭВМ
Pascal (Паскаль) является одним из наиболее популярных среди прикладных программистов процедурным языком программирования, особенно для ПЭВМ. Разработанный в 1970 году швейцарским специалистом в области вычислительной техники профессором Н. Виртом, язык назван в честь французского математика и по замыслу автора предназначался для обучения программированию. Однако язык получился настолько удачным, что стал одним из основных инструментов прикладных и системных программистов при решении задач вычислительного и информационно-логического характера. В 1979 году был подготовлен проект описания языка — Британский стандарт языка программирования Pascal BS6192, который стал также и международным стандартом ISO 7185.
В языке Pascal реализован ряд концепций, рассматриваемых как основа «дисциплинированного» программирования и заимствованных впоследствии разработчиками многих языков. Одним из существенных признаков языка Pascal является последовательная и достаточно полная реализация концепции структурного программирования. Причем это осуществляется не только путем упорядочивания связей между фрагментами программы по управлению, но и за счет структуризации данных. Кроме того, в языке реализована концепция определения новых типов данных на основе уже имеющихся. Этот язык, в отличие от языка С, является строго типизированным. Pascal характеризуется:
- высоким уровнем;
- широкими возможностями;
- стройностью, простотой и краткостью;
- строгостью, способствующей написанию эффективных и надежных программ;
- высокой эффективностью реализации на ЭВМ.
Pascal реализован
на ЭВМ различных типов, но
наиболее распространен и
6.Функциональное программирование
Сущность функционального (аппликативного) программирования определена А. П. Ершовым как «... способ составления программ, в которых единственным действием является вызов функции, единственным способом расчленения программы на части является введение имени для функции, а единственным правилом композиции — оператор суперпозиции функции. Никаких ячеек памяти, ни операторов присваивания, ни циклов, ни, тем более, блок-схем, ни передачи управления».
Роль основной конструкции в функциональных языках играет выражение: К выражениям относятся скалярные константы, структурированные объекты, функции, тела функций и вызовы функций. Функция трактуется как однозначное отображение из X в X, где X — множество выражений.
Аппликативный язык программирования включает следующие элементы:
классы констант, которыми могут манипулировать функции;
набор базовых функций, которые программист может использовать без предварительного объявления и описания;
правила построения новых функций из базовых;
правила формирования выражений на основе вызовов функций.
Программа
представляет собой совокупность описаний
функций и выражения, которые
необходимо вычислить. Данное выражение
вычисляется посредством
Функциональное программирование не использует концепцию памяти как хранилища значений переменных. Операторы присваивания отсутствуют, вследствие чего переменные обозначают не области памяти, а объекты программы, что полностью соответствует понятию переменной в математике. В принципе, можно составлять программы и вообще без переменных. Кроме того, нет существенных различий между константами и функциями, то есть между программами и данными. В результате этого функция может быть значением вызова другой функции и может быть элементом структурированного объекта. Число аргументов при вызове функции не обязательно должно совпадать с числом параметров, указанных при ее описании. Перечисленные свойства характеризуют аппликативные языки как языки программирования очень высокого уровня.
Первым
таким языком был LISP(Лисп) (LISt Processing
— обработка списков), созданный
в 1959 году. Цель его создания состояла
в организации удобства обработки символьной
информации. Существенная черта этого
языка — унификация программных структур
и структур данных: все выражения записываются
в виде списков.
7.Логическое программирование.
Новую область — логическое, или реляционное программирование, — открыло появление языка PROLOG (Пролог) (PROgramming in LOGic — программирование в терминах логики). Этот язык был создан французским ученым А. Кольмероэ в 1973 году. В настоящее время известны и другие языки, однако наиболее развитым и распространенным языком логического программирования является именно Пролог. Так, имеется свыше 15 различных его реализаций на ПЭВМ. Языки логического программирования, в особенности Пролог, широко используются в системах искусственного интеллекта, рассматриваемых в данном учебном пособии.
Центральным понятием в логическом программировании является отношение. Программа представляет собой совокупность определений отношений между объектами (в терминах условий или ограничений) и цели (запроса). Процесс выполнения программы трактуется как процесс общезначимости логической формулы, построен- ной из программы по правилам, установленным семантикой используемого языка. Результат вычисления является побочным продуктом этого процесса. В реляционном программировании нужно только специфицировать факты, на которых алгоритм основывается, а не определять последовательность шагов, которые требуется выполнить. Это свидетельствует о декларативности языка логического программирования. Она метко выражена в формуле Р. Ковальского: «алгоритм = логика + управление». Языки логического программирования характеризуются:
высоким уровнем;
строгой ориентацией на символьные вычисления;
возможностью инверсных вычислений, то есть переменные в процедурах не делятся на входные и выходные;
возможной логической неполнотой, поскольку зачастую невозможно выразить в программе определенные логические соотношения, а также невозможно получить из программы все выводы правильные.
Логические
программы, в принципе, имеют небольшое
быстродействие, так как вычисления осуществляются
методом проб и ошибок, поиском с возвратами
к предыдущим шагам.
8.Объектно-ориентированное программирование.
Прототипом объектно-ориентированного программирования послужил ряд средств, входящих в состав языка SIMULA-67. Но в самостоятельный стиль оно оформилось с появлением языка SMALLTALK, разработанного А. Кеем в 1972 году и первоначально предназначенного для реализации функций машинной графики.
В основе объектно-ориентированного стиля программирования лежит понятие объекта, а суть его выражается формулой: «объект - данные + процедуры». Каждый объект интегрирует в себе некоторую структуру данных и доступные только ему процедуры обработки этих данных, называемые методами. Объединение данных и процедур в одном объекте называется инкапсуляцией и присуще объектно-ориентированному программированию.
Для описания объектов служат классы. Класс определяет свойства и методы объекта, принадлежащего этому классу. Соответственно, любой объект можно определить как экземпляр класса.
Программирование рассматриваемого стиля заключается в выборе имеющихся или создании новых объектов и организации взаимодействия между ними. При создании новых объектов свойства объектов могут добавляться или наследоваться от объектов-предков. В процессе работы с объектами допускается полиморфизм — возможность использования методов с одинаковыми именами для обработки данных разных типов.
К наиболее
современным объектно-
Язык C++ был разработан в начале 80-х годов Б. Страуструпом, сотрудником лаборатории Bell корпорации AT&T. Им была создана компактная компилирующая система, в которой за основу был взят язык С, дополненный элементами языков BCPL, Simula-67 и Algol-68. К июлю 1983 года появился язык С с классами, а чуть позднее — C++. К 1990 году была выпущена третья версия языка C++, принятая комитетом ANSI в качестве исходного материала для его стандартизации.
В 1990 году сотрудник корпорации Sun Д. Гослинг на основе расширения C++ разработал объектно-ориентированный язык Oak, основным достоинством которого было обеспечение сетевого взаимодействия различных по типу устройств. Новая интегрируемая в Internet версия языка, получила название Java. Первый броузер, который поддерживал язык Java, разработан программистом корпорации Sun П. Нафтоном и получил название HotJava. С января 1995 года Java получает распространение в Internet.
Согласно
официальному определению авторов,
Java является простым объектно-
Принципиальной разницей между Java и C++ является то, что первый из них является интерпретируемым, а второй – компилируемым. Синтаксис языков практически полностью совпадает.
С точки зрения возможностей собственно объектно-ориентированных средств язык Java обладает рядом преимуществ перед языком C++. Так, язык Java демонстрирует более гибкую и мощную систему инкапсуляции информации. Механизм наследования, реализованный в Java, обязывает к более строгому подходу к программированию, что улучшает надежность и понимаемость кода. Язык же C++ обладает сложной, неадекватной и трудной для понимания системой наследования. Возможности динамического связывания объектов одинаково хорошо представлены в обоих языках, однако, синтаксическая избыточность C++ заставляет и здесь отдать предпочтение языку Java.
В силу своей конструктивности идеи объектно-ориентированного программирования используются во многих универсальных процедурных языках. Так, например, в состав интегрированной системы программирования на языке PASCAL (корпорации Borland International) версии 5.5 входит специальная библиотека объектно-ориентированного программирования Turbo Vision.
В последнее
время многие программы, в особенности
объектно-ориентированные, реализуются
как системы визуального
9.Заключение.
Это далеко не всё, что можно рассказать о стилях программирования, но всё же достаточно для формирования первоначального представления о них.
Выбор
стиля программирования зависит
от многих факторов, к ним могут относится,
знания программиста, удобства в работе,
тип программы и т.д. Каждый программист
обязан сам выбрать стиль, в котором он
будет работать, ведь от этого выбора будет
зависеть успех в разработке новой программы.
10.Список
литературы.
- Академик
А.П. Ершов. Предварительные соображения
о лексиконе программирования . –
http://www.codenet.ru/progr/
cpp/C-Style.php - Д. Гриса Наука
програмировать.-http://www.
finam.ru/dictionary/ wordf02BDA/default.asp?n=32 - Ф. Л. Бауэра.
Язык широкого спектра. – http://allpasc.narod.ru/pascal
book/glav8.htm - Д. Кнута. Искусство программирования. – http://lectureroom.net/9.html
- Шелест В.Д. Программирование. – СПб.: БХВ - Петербург, 2002. – 592 с.: ил.
- Назаров С.В., Мельников П.П. Программирование на MS Visual Basic: Учеб. пособие / Под ред. Назарова. – М.: финансы и статистика, 2001. – 320 с.: ил.
- Венц. Профессия
– программист. – http://www.computer-museum.ru/
books/n_collection/teaching. htm - Тарасов.
Мир, построенный на вероятности. – http://kainsk.tomsk.ru/g2003/
other22/hp.htm - Кормен. Алгоритмы.
– www.vzshit.net.ru/index.php?
id=8 - Вирт. Алгоритмы
+ Структуры данных = Программы. – distance.ru/files/kursov/tech_
programming.pdf
- Программирование урожайности вики яровой на зерно в Чердынском районе Пермского края
- Программи́рования тілдері́
- Программированное задание
- Программированное обучение
- Программированное обучение
- Программированное обучение, его сущность
- Программированное обучение: сущность, достоинства и недостатки
- Программирование микрокомпьютера. Общая информация
- Программирование на HTML
- Программирование на Turbo Pascal
- Программирование на VBA. Оптимизация приложений
- Программирование на языке высокого уровня (2)
- Программирование на языке С++
- Программирование С