Файл: Алгоритмизация как обязательный этап разработки программы (Алгоритмизация).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 29.03.2023

Просмотров: 283

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

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

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

Исполнение: язык программирования может использовать специальные конструкции для определения и манипулирования структурами данных и управления процессом вычислений.

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

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

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

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


Интерпретатор- это программа, предназначенная для построчных трансляции и выполнения исходной программы. Такой процесс называется интерпретацией. В процесс трансляции входит проверка исходной программы на соответствие правилам используемого в ней языка. Если в программе обнаружены ошибки, транслятор вводит сообщение о них на устройство вывода (обычно, на экран дисплея). Интерпретатор сообщает о найденных им ошибках после трансляции каждой строки программы. Это значительно облегчает процесс поиска и исправления ошибок в программе, однако существенно увеличивает время трансляции. Компилятор транслирует программу намного быстрее, чем интерпретатор, но сообщает о найденных им ошибках после завершения компиляции всей программы. Найти и исправить ошибки в этом случае труднее. Поэтому интерпретаторы рассчитаны, в основном, на языки, предназначенные для обучения программированию, и используются начинающими программистами. Большинство современных языков предназначены для разработки сложных пакетов программ и рассчитаны на компиляцию. Иногда один и тот же язык может использовать и компилятор, и интерпретатор. К числу таких языков относится, например, Бейсик.

Классификация языков программирования

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

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

· высокое качество создаваемых программ (компактность и скорость выполнения);

· возможность использования конкретных аппаратных ресурсов;

· предсказуемость объектного кода и заказов памяти;

· для составления эффективных программ необходимо знать систему команд и особенности функционирования данной ЭВМ;

· трудоемкость процесса составления программ (особенно на машинных языках и ЯСК), плохо защищенного от появления ошибок;

· низкая скорость программирования;

· невозможность непосредственного использования программ, составленных на этих языках, на ЭВМ других типов.

Машинно-ориентированные языки по степени автоматического программирования подразделяются на классы. Как я уже упоминала, отдельный компьютер имеет свой определенный Машинный язык (далее МЯ), ему предписывают выполнение указываемых операций над определяемыми ими операндами, поэтому МЯ является командным. Однако, некоторые семейства ЭВМ имеют единый МЯ для ЭВМ разной мощности. В команде любого из них сообщается информация о местонахождении операндов и типе выполняемой операции. В новых модулях ЭВМ намечается тенденция к повышению внутренних языков машинно - аппаратным путем реализовывать более сложные команды, приближающиеся по своим функциональным действиям к операторам алгоритмических языков программирования. Языки Символического Кодирования (далее ЯСК), так же, как и МЯ, являются командными. Однако коды операций и адреса в машинных командах, представляющие собой последовательность двоичных (во внутреннем коде) или восьмеричных (часто используемых при написании программ) цифр, в ЯСК заменены на символы (идентификаторы), форма написания которых помогает программисту легче запоминать смысловое содержание операции. Это обеспечивает существенное уменьшение числа ошибок при составлении программ и в значительной степени облегчает труд программиста. Есть также языки, включающие в себя все возможности ЯСК, посредством расширенного введения макрокоманд - они называются Автокоды. В различных программах встречаются некоторые достаточно часто использующиеся командные последовательности, которые соответствуют определенным процедурам преобразования информации. Эффективная реализация таких процедур обеспечивается оформлением их в виде специальных макрокоманд и включением последних в язык программирования, доступный программисту. Язык, являющийся средством для замены последовательности символов, описывающих выполнение требуемых действий ЭВМ на более сжатую форму - называется Макрос (средство замены). В основном, Макрос предназначен для того, чтобы сократить запись исходной программы. Компонент программного обеспечения, обеспечивающий функционирование макросов, называется макропроцессором. На макропроцессор поступает макро определяющий и исходный текст. Реакция макропроцессора на вызов- выдача выходного текста.


Следующий вид языков - машинно-независимые языки. Это средства описания алгоритмов решения задач и информации, подлежащей обработке. Они удобны в использовании для широкого круга пользователей и не требуют от них знания особенностей организации функционирования ЭВМ и ВС. Подобные языки получили название высокоуровневых языков программирования. Программы, составляемые на таких языках, представляют собой последовательности операторов, структурированные согласно правилам рассматривания языка (задачи, сегменты, блоки и т.д.). Операторы языка описывают действия, которые должна выполнять система после трансляции программы на МЯ. Таким образом, командные последовательности (процедуры, подпрограммы), часто используемые в машинных программах, представлены в высокоуровневых языках отдельными операторами. Программист получил возможность не расписывать в деталях вычислительный процесс на уровне машинных команд, а сосредоточиться на основных особенностях алгоритма. С расширением областей применения вычислительной техники возникла необходимость формализовать представление постановки и решение новых классов задач. Необходимо было создать такие языки программирования, которые, используя в данной области обозначения и терминологию, позволили бы описывать требуемые алгоритмы решения для поставленных задач, ими стали проблемно - ориентированные языки. Эти языки, ориентированные на решение определенных проблем, должны обеспечить программиста средствами, позволяющими коротко и четко формулировать задачу и получать результаты в требуемой форме. Универсальные языки были созданы для широкого круга задач: коммерческих, научных, моделирования и т.д. Первый универсальный язык был разработан фирмой IBM. Он позволяет работать с символами, разрядами, числами с фиксированной и плавающей запятой. Язык учитывает включенные во многие машины возможности прерывания и имеет соответствующие операторы. Предусмотрена возможность параллельного выполнения участков программ. Появление новых технических возможностей поставило задачу перед системными программистами - создать программные средства, обеспечивающие оперативное взаимодействие человека с ЭВМ их назвали диалоговыми языками. Эти работы велись в двух направлениях. Создавались специальные управляющие языки для обеспечения оперативного воздействия на прохождение задач, которые составлялись на любых раннее неразработанных (не диалоговых) языках. Разрабатывались также языки, которые кроме целей управления обеспечивали бы описание алгоритмов решения задач. Непроцедурные языки составляют группу языков, описывающих организацию данных, обрабатываемых по фиксированным алгоритмам (табличные языки и генераторы отчетов), и языков связи с операционными системами. Позволяя четко описывать как задачу, так и необходимые для её решения действия, таблицы решений дают возможность в наглядной форме определить, какие условия должны быть выполнены, прежде чем переходить к какому-либо действию. Одна таблица решений, описывающая некоторую ситуацию, содержит все возможные блок-схемы реализаций алгоритмов решения. Программы, составленные на табличном языке, удобно описывают сложные ситуации, возникающие при системном анализе.


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

Компьютерный код — это специальный текст, состоящий из набора пошаговых инструкций. Он не всегда содержит в себе нули и единицы, также в нём есть определённые слова и дополнительные символы. Компьютер считывает код, который сообщает ему, какие операции следует выполнить с данными. Процесс создания компьютерных программ носит название «программирование», а людей, занимающихся этим видом деятельности, называют программистами. При разработке программ в них часто проникают ошибки. Программа содержит ошибки, если для некоторых данных она даёт сбои, отказы или неправильные результаты. Процесс поиска и исправления ошибок в программах называется отладкой. Количество ошибок в программах обычно заранее неизвестно. Поэтому заранее неизвестна продолжительность отладки программ. Программа (алгоритм) не содержит ошибок, если она даёт правильные результаты для всех допустимых данных. Запись исходных текстов программ при помощи языков программирования облегчает понимание и редактирование человеком. Этому, в частности, помогают комментарии, допустимые в синтаксисе большинства языков. Для выполнения на компьютере готовый текст программы преобразуется (компилируется) в машинный код. Программы с общедоступными исходными текстами называются открытыми. Компьютерные программы являются объектами авторского права. Авторы и правообладатели программ имеют право ограничивать доступ к исходным текстам программ, которые являются их интеллектуальной собственностью. Некоторые языки программирования позволяют обходиться без предварительной компиляции программы и переводят её в инструкции машинного кода непосредственно во время исполнения. Этот процесс называется динамической компиляцией, и он позволяет добиться большей переносимости программ между разными аппаратными и программными платформами при сохранении многих плюсов компиляции. Интерпретируемые программы, для которых как правило не применяется процесс компиляции и которые интерпретируются операционный системой или специальными программами-интерпретаторами, называются скриптами или «сценариями». Исходные тексты компьютерных программ в большинстве языков программирования состоят из списка инструкций, точно описывающих заложенный алгоритм. Подобный подход в программировании называется императивным. Однако применяются и другие методологии программирования. Например, описание исходных и требуемых характеристик, обрабатываемых данных и предоставление выбора подходящего алгоритма решения специализированной программе-интерпретатору - такой подход называется декларативным программированием. Также, применяются функциональное и логическое программирование. Большинство пользователей компьютеров используют программы, предназначенные для выполнения конкретных прикладных задач, таких как подготовка и оформление документов, математические вычисления, обработка изображений и т.п. Соответствующие программные средства называют прикладными программами или прикладным программным обеспечением. Управление компонентами вычислительной системы и формирование среды для функционирования прикладных программ берёт на себя системное программное обеспечение, наиболее важной составляющей которого является операционная система.


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

Прикладные программы — это программы, с которыми может взаимодействовать непосредственно пользователь. К ним относятся «текстовые редакторы», «браузер», «web-сайты», «игры».

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

Синонимами слова программа являются: «приложение», «ПО», «программное обеспечение», «software». Таким образом, компьютер – это совокупность «программного» и «аппаратного» обеспечения.

Можно разделить программное обеспечение по следующим признакам:

Целевая «операционная система» — поскольку разными «операционными системами» создаются разные среды для прикладного программного обеспечения, то очень важно, для какой именно операционной системы была создана конкретная «программа». Самые известные операционные системы - SuSe Linux, Ubuntu Linux, NetBSD, FreeBSD, OpenBSD MacOS и Microsoft Windows.

Целевая платформа – это разнообразное «аппаратное обеспечение», поддерживающее набор различных инструкций, так что большинство программ создается под определенное «аппаратное обеспечение». Самые популярные платформы: «x64», «x86», «ARM», «IA64», «Itanium» и другие.

Обычно для создания программного обеспечения необходимо написание на определенном «языке программирования» исходных текстов программы, дальнейшая «компиляция» программы, а также «отладка», «тестирование» и последующее распространение программного обеспечения. В 30–50-е годы ХХ века все исходные тексты писались как «машинный код», но вскоре был создан первый язык программирования «ASSEMBLER», использование которого серьезно упрощало процесс создания программы. В дальнейшем появились языки более «высокого уровня», и создание программ перешло от технических специалистов, которые отвечают за функционирование конкретных аппаратных комплексов, к специалистам по созданию программного обеспечения, которых стали называть «программистами». Когда «персональные компьютеры» распространились достаточно широко, «программирование» превратилось в отдельную индустрию, в которой задействовано огромное число специалистов. Сегодня целые учебные заведения полностью направлены на подготовку специалистов для этой индустрии. В СНГ к «программистам» всегда относились как-то по-особенному. После развала СССР было уничтожено большинство предприятий, которые непосредственно занимались производством вычислительной техники. Это привело к тому, что все страны СНГ закупали такую технику за рубежом, в государствах, у которых были развиты технологии производства аппаратного обеспечения. Из-за того произошла задержка в поступлениях, а также образовалась нехватка вычислительной техники в странах СНГ, а значит программисты обходились меньшим количеством рабочих часов с техникой и меньшими аппаратными ресурсами (такими как скорость вычислений, память, скорость передачи информации и т.д.). Если прибавить к таким условиям прекрасную математическую подготовку российских специалистов (следствие качественного образования в СССР) и способности к изобретательству, мы получим образ отечественного «программиста», уважаемого, но при этом е всегда понимаемого, причем не только в России, но за рубежом. Набравший популярность интернет перевел индустрию создания программного обеспечения на другой уровень, так как продавать и распространять программы стало проще. Это произошло благодаря возникновению систем моментальной оплаты (СМС, электронных денег, кредитных карт, терминалов, и т.п.), немалую роль сыграло и появление нового вида программного обеспечения - «web-сайтов». Вначале они были похожи на электронный вариант печатных изданий (журналов, газет, книг), но впоследствии они превратились в полноценные приложения. Развитие интернета привело к тому, что программное обеспечение, как и большинство других индустрий, стало жертвой «пиратов» - компаний и лиц, которые незаконно распространяют программное обеспечение. Борьба «щита и меча» ведется не один год, и появились разные способы децентрализованного распространения нелегальных копий программного обеспечения. Благодаря этим технологиям ответственность за распространение незаконных программ ложиться сразу на миллионы пользователей, а это делает поиск и наказание участников процесса почти невозможным.