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

Пламенный привет посетителям этой страницы, пришедшим из социальных сетей, да и всем остальным тоже! В апреле 2021-го года наблюдал удивительное явление: обильный поток посетителей из 4-х социальных сетей. В связи с этим настоятельно рекомендую всем неоднократно и регулярно посещать сайт rtbsm.ru — там в общих чертах изложена Российская Теннисная Балльная Система Марии (Шараповой).

Приглашаю всех полюбоваться на Фото и Видео красавицы Марии — надеюсь, что Вы поделитесь адресом сайта rtbsm.ru с друзьями и знакомыми.

Главная проблема — известить Марию, чтобы она лично как можно скорее заявила на весь мир о РТБСМ.

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

Привожу подробную информацию о том, что такое Python Структурное программирование:

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

— методология разработки программного обеспечения, в основе которой лежит представление программы в виде иерархической структуры блоков. Предложена в 1970-х годах Э. Дейкстрой и др.

Основы программирования #4 Структурное программирование

В соответствии с данной методологией любая программа строится без использования оператора goto из трёх базовых управляющих структур: последовательность, ветвление, цикл; кроме того, используются подпрограммы.

При этом разработка программы ведётся пошагово, методом «сверху вниз».

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

В 1970-е годы объёмы и сложность программ достигли такого уровня, что традиционная (неструктурированная) разработка программ перестала удовлетворять потребностям практики.

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

Методология структурной разработки программного обеспечения была признана «самой сильной формализацией 70-х годов».

По мнению Бертрана Мейера, «Революция во взглядах на программирование, начатая Дейкстрой, привела к движению, известному как структурное программирование, которое предложило систематический, рациональный подход к конструированию программ.

Структурное программирование стало основой всего, что сделано в методологии программирования, включая и объектное программирование».

История

Первоначально идея структурного программирования появилась на свет в связи с оператором goto и сомнениями в целесообразности его применения.

Впервые подобные сомнения высказал Хайнц Земанек (Heinz Zemanek) на совещании по языку Алгол в начале 1959 года в Копенгагене. Однако это выступление не привлекло к себе внимания и не имело последствий.

Эдсгер Дейкстра (Edsger Dijkstra) вспоминает: «До некоторой степени я виню себя за то, что в то время не смог оценить значимость этой идеи».

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

Ситуация коренным образом изменилась через десять лет, когда в марте 1968 года Дейкстра опубликовал своё знаменитое письмо «Оператор Go To считается вредным» (Go To Statement Considered Harmful). Это поистине исторический документ, оказавший заметное влияние на дальнейшее развитие программирования.

Судьба самого документа очень интересна. Дело в том, что Дейкстра дал статье совсем другое название: «Доводы против оператора GO TO» (A Case against the GO TO Statement).

Однако в момент публикации произошло нечто непонятное — статья почему-то загадочным образом превратилась в «Письмо к редактору», причём прежнее название столь же загадочно исчезло. Что произошло на самом деле?

Дейкстра объяснил таинственное превращение статьи в письмо лишь много лет спустя, в 2001 году, за год до смерти.

Журнал Communications of the ACM опубликовал мой текст под названием «Оператор GOTO считается вредным». В последующие годы его часто цитировали. К сожалению, зачастую это делали люди, которые видели в нём не больше, чем сказано в заголовке. Этот заголовок стал краеугольным камнем моей славы…

Как все это случилось? Я отправил статью под названием «Доводы против оператора GO TO». Чтобы ускорить публикацию, редактор превратил мою статью в «Письмо к редактору». При этом он придумал для статьи новое название, которое изобрел сам. Редактором был Никлаус Вирт.

Цель

Цель структурного программирования — повысить производительность труда программистов, в том числе при разработке больших и сложных программных комплексов, сократить число ошибок, упростить отладку, модификацию и сопровождение программного обеспечения.

Такая цель была поставлена в связи с ростом сложности программ и неспособностью разработчиков и руководителей крупных программных проектов справиться с проблемами, возникшими в 1960 – 1970 годы в связи с развитием программных средств.

Спагетти-код

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

Такой текст нередко характеризуют как «спагетти-код».

Спагетти-код (spaghetti code) — плохо спроектированная, слабо структурированная, запутанная и трудная для понимания программа, содержащая много операторов goto (особенно переходов назад), исключений и других конструкций, ухудшающих структурированность.

Самый распространённый антипаттерн программирования.

Спагетти-код назван так потому, что ход выполнения программы похож на миску спагетти, то есть извилистый и запутанный. Иногда называется «кенгуру-код» (kangaroo code) из-за множества инструкций jump.

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

Спагетти-код может быть отлажен и работать правильно и с высокой производительностью, но он крайне сложен в сопровождении и развитии.

Доработка спагетти-кода для добавления новой функциональности иногда несет значительный потенциал внесения новых ошибок. По этой причине становится практически неизбежным рефакторинг (code refactoring) — главное лекарство от спагетти.

Оператор goto

  • Если некоторая переменная инициализируется (получает значение) в одном месте и потом используется далее, то переход в точку после инициализации, но до использования, приведёт к тому, что будет выбрано значение, которое находилось в памяти, выделенной под переменную, до момента выделения (и которое, как правило, является произвольным и случайным).
  • Передача управления внутрь тела цикла приводит к пропуску кода инициализации цикла или первоначальной проверки условия.
  • Аналогично, передача управления внутрь процедуры или функции приводит к пропуску её начальной части, в которой производится инициализация (выделение памяти под локальные переменные).

Теорема о структурном программировании

  • последовательность— обозначается: f THEN g,
  • ветвление— обозначается: IF p THEN f ELSE g,
  • цикл— обозначается: WHILE p DO f,

Принципы структурного программирования

  • Последовательность — однократное выполнение операций в том порядке, в котором они записаны в тексте программы. Бертран Мейер поясняет: «Последовательное соединение: используйте выход одного элемента как вход к другому, подобно тому, как электрики соединяют выход сопротивления со входом конденсатора»
  • Ветвление — однократное выполнение одной из двух или более операций, в зависимости от выполнения заданного условия.
  • Цикл — многократное исполнение одной и той же операции до тех пор, пока выполняется заданное условие (условие продолжения цикла).
  • В этом случае в тексте основной программы, вместо помещённого в подпрограмму фрагмента, вставляется инструкция «Вызов подпрограммы». При выполнении такой инструкции работает вызванная подпрограмма. После этого продолжается исполнение основной программы, начиная с инструкции, следующей за командой «Вызов подпрограммы».
  • Бертран Мейер поясняет: «Преобразуйте элемент, возможно, с внутренними элементами, в подпрограмму, характеризуемую одним входом и одним выходом в потоке управления».
Читайте также:
Как участвовать в программе доступное жилье

Метод «сверху вниз»

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

Вместо настоящих, работающих подпрограмм, в программу вставляются фиктивные части — заглушки, которые, говоря упрощенно, ничего не делают.

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

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

На каждой стадии процесса реализации уже созданная программа должна правильно работать по отношению к более низкому уровню. Полученная программа проверяется и отлаживается.

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

Разработка заканчивается тогда, когда не останется ни одной заглушки.

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

При сопровождении и внесении изменений в программу выясняется, в какие именно процедуры нужно внести изменения.Они вносятся, не затрагивая части программы, непосредственно не связанные с ними.

Это позволяет гарантировать, что при внесении изменений и исправлении ошибок не выйдет из строя какая-то часть программы, находящаяся в данный момент вне зоны внимания программиста.

Следует также учесть, что в «Предисловии» к книге «Структурное программирование» Тони Хоар (Tony Hoare) отмечает, что принципы структурного программирования в равной степени могут применяться при разработке программ как «сверху вниз», так и «снизу вверх».

Подпрограмма

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

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

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

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

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

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

Достоинства структурного программирования

  1. Структурное программирование позволяет значительно сократить число вариантов построения программы по одной и той же спецификации, что значительно снижает сложность программы и, что ещё важнее, облегчает понимание её другими разработчиками.
  2. В структурированных программах логически связанные операторы находятся визуально ближе, а слабо связанные — дальше, что позволяет обходиться без блок-схем и других графических форм изображения алгоритмов (по сути, сама программа является собственной блок-схемой).
  3. Сильно упрощается процесс тестирования и отладки структурированных программ.

Ясность и удобочитаемость программ

Структурное программирование значительно повышает ясность и удобочитаемость (readability) программ. Эдвард Йордан (Edward Yourdon) поясняет:

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

Всякая попытка прочесть листинг приводит человека в отчаяние тем, что в такой программе обычно исполняются несколько операторов, после чего управление передается в точку несколькими страницами ниже.

Там исполняются ещё несколько операторов и управление снова передается в какую-то случайную точку. Тут исполняются ещё какие-то операторы и т. д. После нескольких таких передач читатель забывает, с чего всё началось. И теряет ход мысли.

Структурным программам, напротив, свойственна тенденция к последовательным организации и исполнению.

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

В итоге можно сразу (одним взглядом) обнаружить условия, необходимые для модификации того или иного фрагмента программы.

Двумерное структурное программирование

Основная статья: ДРАКОН# Двумерное структурное программирование

Р-технология производства программ или «технология двумерного программирования» была создана в Институте кибернетики имени В. М. Глушкова. Графическая система Р-технологии программирования закреплена в стандартах ГОСТ 19.005-85, ГОСТ Р ИСО/МЭК 8631—94 и международном стандарте ISО 8631Н.

Автор Р-технологии программирования доктор физико-математических наук профессор Игорь Вельбицкий предложил пересмотреть само понятие «структура программы».

По его мнению,

«структура — понятие многомерное.

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

Огромные ассоциативные возможности зрительного аппарата и аппарата мышления человека используются практически вхолостую — для распознавания структурных образов в виде единообразной последовательности символов».

Методология двумерного структурного программирования существенно отличается от классического одномерного (текстового) структурного программирования.

Идеи структурного программирования разрабатывались, когда компьютерная графика фактически ещё не существовала и основным инструментом алгоритмиста и программиста был одномерный (линейный или ступенчатый) текст.

До появления компьютерной графики методология классического структурного программирования была наилучшим решением.

С появлением компьютерной графики ситуация изменилась.

Используя выразительные средства графики, появилась возможность видоизменить, развить и дополнить три типа базовых (текстовых) управляющих структурных конструкций, а также полностью отказаться от ключевых слов if, then, else, case, switch, break, while, do, repeat, until, for, foreach, continue, loop, exit, when, last и т. д. и заменить их на управляющую графику, то есть использовать двумерное структурное программирование.

Важной проблемой является сложность современного программирования и поиск путей её преодоления.

По мнению кандидата технических наук, доцента Евгения Пышкина, изучение структурного программирования исключительно как инструмента разработки текстов программ, построенных на базе основной «структурной триады» (линейная последовательность, ветвление и цикл), является недостаточным и, по сути дела, сводит на нет анализ преимуществ структурного подхода.

В процессе преодоления существенной сложности программного обеспечения важнейшим инструментом является визуализация проектирования и программирования.

Литература

  • Дейкстра Э. Дисциплина программирования ( A discipline of programming ) — 1-е изд. — М. : Мир, 1978. — 275 с.
  • Дал У., Дейкстра Э., Хоор К. Структурное программирование ( Structured Programming ) — 1-е изд. — М. : Мир, 1975. — 247 с.

Приглашаю всех высказываться в Комментариях. Критику и обмен опытом одобряю и приветствую. В хороших комментариях сохраняю ссылку на сайт автора!

Читайте также:
Программа cms инструкция на русском

Python Структурное программирование

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

Источник: ep-z.ru

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

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

Используя язык высокого уровня (такой как Фортран) программисты могли писать программы до несколько тысяч строк длиной. Однако язык программирования, легко понимаемый в коротких программах, когда дело касается больших программ, становится нечитабельным (и неуправляемым). Избавление от таких неструктурированных программ пришло после создания в 1960 году языков структурного программирования. К ним относятся языки Алгол, Паскаль и С.

Структурное программирование подразумевает точно обозначенные управляющие структуры, программные блоки, отсутствие инструкций GOTO, автономные подпрограммы, в которых поддерживается рекурсия и локальные переменные. Главным в структурном программировании является возможность разбиения программы на составляющие ее элементы. Используя структурное программирование, средний программист может создавать и поддерживать программы свыше 50 000 строк длиной.

Структурное программирование тесно связано такими понятиями как «нисходящее проектирование» и «модульное программирование».

Метод нисходящего проектирования предполагает последовательное разложение функции обработки данных на простые функциональные элементы («сверху-вниз»).

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

Функциональная структура алгоритма приложения разрабатыается в следующей последовательности:

1) определяются цели автоматизации предметной области и их иерархия;

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

3) уточняется характер взаимосвязи приложений и их основные характеристики (информация для решения задач, время и периодичность решения и др.);

4) определяются необходимые для решения задач функции обработки данных;

5) выполняется декомпозиция функций обработки до необходимой структурной сложности, реализуемой предполагаемым инструментарием.

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

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

Модульное программирование основано на понятии модуля – логически взаимосвязанной совокупности функциональных элементов, оформленных в виде отдельных программных модулей. Модульное программирование рассматривается в разд 7.

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

· циклической (цикл, или повторение).

Эта теорема была сформулирована в 1966 г. Боймом и Якопини (Corrado Bohm, Guiseppe Jacopini). Главная идея теоремы – преобразовать каждую часть программы в одну из трех основных структур или их комбинацию так, чтобы неструктурированная часть программы уменьшилась. После достаточного числа таких преобразований оставшаяся неструктурированной часть либо исчезнет, либо становится ненужной. В теореме доказывается, что в результате получится программа, эквивалентная исходной и использующая лишь упоминавшиеся основные структуры.

Комбинации правильных программ, полученные с использованием этих трех основных структур, также являются правильными программами. Применяя итерацию и вложение основных структур, можно получить программу любого размера и сложности. При использовании только указанных структур отпадает необходимость в безусловных переходах и метках. Поэтому иногда структурное кодирование понимают в узком смысле как программирование без «GOTO».

В алгоритмическом языке С (С++) для реализации структурного кодирования используются следующие операторы:

· объявление (только в С++).

Структура «следование» (рис. 5.1, а) реализуется составным оператором, оператором-выражение, asm-оператором и др.

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

Оператор-выражение представляет собой выражение, за которым следует точка с запятой. Его формат следующий:

Компилятор языка C++ выполняет операторы-выражения, вычисляя выражения. Все побочные эффекты от этого вычисления завершаются до начала выполнения следующего оператора. Большинство операторов-выражений представляют собой операторы присваивания или вызовы функций (например, printf(), scanf()). Особым случаем является пустой оператор, состоящий из одной точки с запятой (;).

Пустой оператор не выполняет никаких действий. Однако он полезен в тех случаях, когда синтаксис C++ ожидает наличия некоторого оператора, но по программе он не требуется (например, бесконечный цикл for).

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

Структура «развилка» (рис. 5.1, б, в) реализуется операторами выбора. Операторы выбора, или операторы управления потоком, выполняют выбор одной из альтернативных ветвей программы, проверяя для этого определенные значения. Существует два типа операторов выбора: if. else и switch.

Базовый оператор if (рис. 5.1, б) имеет следующий формат:

Язык C++ в отличие от, например, языка Паскаль не имеет специального булевого типа данных. В условных проверках роль такого типа может играть целочисленная переменная или указатель на тип. Условное_выражение должно быть записано в круглых скобках. Это выражение вычисляется. Если оно является нулевым (или пустым в случае типа указателя), мы говорим, что условное_выражение ложно (false ); в противном случае оно истинно (true).

Если предложение else отсутствует, а условное_выражение дает значение «истина», то выполняется оператор_если_»истина»; в противном случае он игнорируется.

Если задано предложение оператор_если_»ложь», а условное_выражение дает значение «истина», то выполняется оператор_если_»истина»; в противном случае выполняется оператор_если»ложь».

Преобразования указателей выполняются таким образом, что значение указателя всегда может быть корректно сравнено с выражением типа константы, дающим 0. Таким образом, сравнение для пустых указателей может быть сделано в виде:

if (!ptr). или if (ptr = = 0).

Оператор_если_»ложь» и оператор_если_»истина» сами могут являться операторами if, что позволяет организовывать любую глубину вложенности условных проверок. При использовании вложенных конструкций if. else следует быть внимательным и обеспечивать правильный выбор выполняемых операторов. Любая неоднозначность конструкции «else» разрешается сопоставлением else с последним найденным на уровне данного блока if без else.

if (x == 1)

if (y == 1) puts(«x=1 и y=1»);

else puts(«x!= 1»);

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

else puts(«x=1 и y!=1»);

Однако с помощью фигурных скобок можно реализовать и первую конструкцию:

if (x = = 1)

if (y = = 1) puts(«x = и y=1»);

else puts(«x!= 1»); // правильное решение

Оператор switch (см. рис. 5.1, в) использует следующий базовый формат:

switch (переключающее_выражение) case_оператор;

Он позволяет передавать управление одному из нескольких операторов с меткой case в зависимости от значения переключающего_выражения. Любой оператор в case_операторе (включая пустой оператор) может быть помечен одной (или более) меткой варианта:

Читайте также:
Как открыть на компьютере программы и компоненты

case константное_выражение_i: case_оператор_i;

где каждое константное_выражение_i должно иметь уникальное целочисленное значение (преобразуемое к типу переключающего_выражения) в пределах объемлющего оператора switch.

Допускается иметь в одном операторе switch повторяющиеся константы case.

Оператор может иметь также не более одной метки default:

После вычисления переключающего_выражения выполняется сопоставление результата с одним из константных_выражений_i. Если найдено соответствие, то управление передается case_оператору_i с меткой, для которой найдено соответствие. Если соответствия не найдено и имеется метка default, то управление передается оператору_умолчания. Если соответствие не найдено, а метка default отсутствует, то никакие операторы не выполняются. Для того чтобы остановить выполнение группы операторов для конкретного варианта, следует использовать оператор break.

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:

Источник: studopedia.ru

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

Сегодня термин «информатика» принято употреблять в двух смыслах:

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

Одним из направлений информатики как науки является программирование – наука, которая изучает теорию и методы разработки, производства и эксплуатации программного обеспечения ЭВМ.

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

Алгоритмическим мышлением называется умение выстраивать логически безупречную последовательность действий для получения решения поставленной задачи. Многолетний опыт показывает, что для развития алгоритмического мышления в первую очередь требуется тщательно прорабатывать алгоритмы для небольших, но полезных программ, которые формируют базовые приемы программирования. Таких приемов достаточно немного, однако их обобщение, накопление, и умение осознанно применять при решении практических задач дает возможность научиться писать программы практически любому человеку [3].

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

Объект исследования данной работы – языки программирования.

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

Целью работы является классификация языков программирования.

Для достижения поставленной цели предстоит решить ряд задач:

  • проанализировать литературу по заданной теме;
  • дать определения основным терминам;
  • привести классификацию языков программирования.

В качестве опорных источников при написании работы были использованы следующие: А.Ф. Новиков – «Учебно-методическое пособие по дисциплине «Технологические подходы к разработке программного обеспечения»» и В.В. Ммухортов – «Объектно-ориентированное программирование, анализ и дизайн»

1. ЯЗЫКИ ПРОГРАММИРОВАНИЯ

На протяжении всего развития языков программирования четко выделяется ряд тенденций, постоянно сменяющих друг друга и оказывающих влияние на технологии:

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

Именно расширение области использования вычислительной техники и информационных технологий являетсяс основной движущей силой прогресса в сфере программирования. На протяжении всей истории развития информационных технологий проводилось огромное множество прикладных исследований по методологии проектирования, декомпозиции, абстрагированию и иерархиям. Результатом данных исследований стало создание новых, более выразительных языков программирования [7].

Обычно под программированием понимается процесс разработки программ. Однако к этому же термину относятся и некоторые виды человеческой деятельности. Например, «политическое программирование» – термин, который часто используется в средствах массовой информации, или «математическое программирование» – специальный раздел математики. Применимо к созданию программ обычно используется выражение «разработка программного обеспечения» [14].

Таким образом, программированием (computer programming) называется процесс создания человеком-программистом информационной структуры — программы, целью которой является исполнение на компьютере.

В большинстве случаев в программировании важным является не только факт исполнения программы компьютером, но и факт использования полученного результата человеком. Однако, бываете и ряд исключений, примером которого является программа первоначальной загрузки операционной системы [12].

Таким образом, в процессе программирования выделяются следующие элементы:

  • цель – выполнение программы, которое приводит к решению поставленной задачи или публикация ее текста;
  • субъект – человек, осознанно ведущий процесс программирования, или другая программа (в случае автоматического синтеза программы, при этом процесс не является осознанным, а программа может быть выражена на языке нейрокомпьютера или не иметь материального носителя);
  • объект – текст, записанный на формальном языке [10].

Сегодня результативность и эффективность программирования в целом оставляет желать лучшего. Несмотря на массовое распространение компьютеров и быстрый рост характеристик их программного и аппаратного обеспечения, весьма значительной остается доля неудачных проектов, целью которых является разработка программного обеспечения. Наряду с эффектными достижениями имеются и сравнительно многочисленные досадные неудачи. К сожалению, до сих пор слишком часто приходится делать вывод, что программирование рискованно, программы ненадежны, а программисты неуправляемы [6].

Нельзя отрицать существование проблем в области программирования. Лучшие программисты, ведущие предприятия и компьютерное сообщество в целом постоянно тратят значительные и все возрастающие усилия на решение этих проблем. Результатом этой деятельности стало создание нескольких специализированных отраслей науки. Дисциплина, главной задачей которой является решение внутренних проблем программирования, называется технологией программирования, или инженерии программных систем. Последний термин является точным переводом английского термина «software engineering».

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

Ключевым словом в данном определении является «производственный», так как оно отражает главную особенность технологии программирования. Например, с точки зрения информатики (computer science), указание на производственный характер дисциплины отсутствует [15].

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

Информатика тесно связана с программированием за счет того, что в современном мире функции накопления, хранения и обработки информации реализуются при помощи программного обеспечения компьютеров.

Соотношение информатики и технологии программирования является сложным вопросом. Информатика представляет собой более общее понятие, однако нельзя считать технологию программирования отдельной частью информатики. В настоящее время вопросы теоретического характера относят к информатике, а практические приемы решения задач считаются элементами технологии программирования. Например, методы математического доказательства правильности программ относятся к теоретической информатике, а методы тестирования – к технологии программирования, хотя это совершенно разные методы решения одной задачи. Важно отметить, что такое отделение технологии программирования от информатики является условным [8].

1.1. Первое поколение

Первые языки программирования были очень сложны. Схема их развития отражена в таблице 1.

Таблица 1 – Первые языки программирования

Источник: www.evkova.org

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru