Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

История развития программирования в России (Теоретические основы понятия «программирования»)

Содержание:

ВВЕДЕНИЕ

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

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

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

Целью данной работы является изучение истории развития программирования в России.

Исходя из цели работы, можно выделить ряд задач:

- изучить понятие терминов «программирование», «язык программирования»;

- проанализировать начальный этап развития программирования в России;

- рассмотреть развитие программирования в 20м веке.

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

Предметом исследования данной работы являются история развития программирования в России.

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

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

Данная тема довольно популярна, информационной основой работы послужила научная литература, научные статьи. Изучением данного вопроса занимались ведущие ученые, среди которых Макарова Н.В., Окулов С.М., Голицына О.Л. и другие.

ГЛАВА 1. ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ПОНЯТИЯ «ПРОГРАММИРОВАНИЯ».

Понятие термина «программирование»

Под термином «программирование» понимается процесс, а также искусство создания компьютерных программ посредством специальных языков программирования[1].

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

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

Программирование непосредственно включает в себя:

· Анализ

· Кодирование и компиляцию - написание исходного текста программы и преобразование его в исполнимый код с помощью компилятора

· Проектирование - разработка комплекса алгоритмов

· Испытания и сдачу программ

· Тестирование и отладку - выявление и устранение ошибок в программах

· Сопровождение

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

Единственный язык, который напрямую выполняется процессором - это машинный язык (или как его еще называют «машинный код»)[3]. Как известно, все программисты прорабатывали каждую мелочь в машинном коде, но сейчас эта трудная работа уже не делается. Сейчас программисты пишут исходный код, а далее компьютер (используя компилятор, интерпретатор или ассемблер) транслирует его, в один или несколько этапов, при этом уточняя все детали, в машинный код, который готов к исполнению на целевом процессоре. Следует отметить, что в некоторых языках, вместо машинного кода генерируется интерпретируемый двоичный код «виртуальной машины». Его еще называют байт-кодом (byte-code). Данный подход, как правило, применяется в Forth, Lisp, Java.

Таким образом, изучив понятие «программирование»[4], можно перейти к материальной части процесса создания программ. Это, разумеется, технические (аппаратные) средства обеспечения программирования. Как известно, под ними понимается совокупность электрических, электронных и механических компонентов автоматизированных систем составляет их техническое обеспечение. Так, электронная вычислительная машина (ЭВМ) либо компьютер представляют собой комплекс технических и программных средств, которые основаны на использовании электроники, а также предназначены для автоматической или автоматизированной обработки данных, образуемых в процессе решения вычислительных и информационных задач.

Понятие «язык программирования».

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

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

Под языками низкого уровня[7] понимаются языки программирования, которые предназначены лишь для определенного типа компьютера, а также отражающие его внутренний машинный код; языки низкого уровня довольно часто называют машинно-ориентированными языками. Это связано с тем, что их достаточно сложно конвертировать для использования на компьютерах с разными центральными процессорами. Кроме того, их довольно сложно изучать, так как для этого требуется хорошо знать принципы внутренней работы компьютера.

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

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

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

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

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

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

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

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

Под компилятором[11] понимается программа, которая предназначена для перевода программы, написанной на каком-либо языке, в программу в машинных кодах. Процесс такого перевода называется компиляцией.

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

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

Под интерпретатором[12] понимается программа, которая предназначена для построчных трансляции, а также выполнения исходной программы. Данный процесс называется интерпретацией.

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

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

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

Языки программирования[13] можно классифицировать по различным группам для удобства восприятия.

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

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

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

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

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

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

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

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

По степени автоматического программирования машинно-ориентированные языки подразделяются на классы[14].

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

Кроме того в новых модулях ЭВМ[15] намечается тенденция к повышению внутренних языков машинно - аппаратным путем реализовывать более сложные команды, приближающиеся по своим функциональным действиям к операторам алгоритмических языков программирования.

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

Есть также языки, включающие в себя все возможности ЯСК, посредством расширенного введения макрокоманд - они называются Автокоды.

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

Язык, которые является средством для замены последовательности символов описывающих выполнение требуемых действий ЭВМ на более сжатую форму - называется Макрос (средство замены)[17].

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

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

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

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

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

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

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

ГЛАВА 2. ИСТОРИЯ РАЗВИТИЯ ПРОГРАММИРОВАНИЯ.

2.1. Начальный этап развития программирования.

С глубокой древности известны попытки создать устройства, которые ускоряли и облегчали процесс вычислений. Так, еще древние греки и римляне применяли приспособление, подобное счетам, абак. Такие устройства были известны и в странах Древнего Востока. В XVM в. немецкие ученые В. Шиккард (1623), Г.Лейбниц (1673) и французский ученый Б. Паскаль (1642) создали механические вычислительные устройства - предшественники всем известного арифмометра. Вычислительные машины совершенствовались в течение нескольких веков. Но при этом не применялось понятие «программа и программирование»[23].

Лишь в начале XIX в. (1830) английский ученый, профессор математики Кэмбриджского университета Чарльз Бэббидж, проводя анализ результатов обработки переписи населения во Франции, теоретически исследовал процесс выполнения вычислений и обосновал основы архитектуры вычислительной машины. Работая над проектом аналитической машины - «Машины для исчисления разностей», Ч. Бэббидж предсказал многие идеи и принципы организации и работы современных ЭВМ, в частности принцип программного управления и запоминаемой программы. Общая увлеченность наукой дала ученому и Аде Лавлейс (1815-1852) долгие годы плодотворного сотрудничества. В 1843 г. она перевела статью Менабреа по лекциям Ч. Бэббиджа, где в виде подробных комментариев (по объему они превосходили основной текст) сформулировала главные принципы программирования аналитической машины. Она разработала первую программу (1843) для машины Бэббиджа, убедила его в необходимости использования в изобретении двоичной системы счисления вместо десятичной, разработала принципы программирования, предусматривающие повторение одной и той же последовательности команд при определенных условиях. Именно она предложила термины «рабочая ячейка» и «цикл». А. Лавлейс составила первые программы для решения системы двух уравнений и вычисления чисел Бернулли по довольно сложному алгоритму и предположила, что со временем аналитическая машина будет сочинять музыкальные произведения, рисовать картины и использоваться в практической и научной деятельности. Время подтвердило ее правоту и точность прогнозов. Своими работами А. Лавлейс заложила теоретические основы программирования и по праву считается первым в мире программистом и основоположником научного программирования.

В 1854 г. английский математик Джордж Буль опубликовал книгу «Законы мышления», в которой развил алгебру высказываний -Булеву алгебру[24]. На ее основе в начале 80-х гг. XIX в. построена теория релейно-контактных схем и конструирования сложных дискретных автоматов. Алгебра логики оказала многогранное влияние на развитие вычислительной техники, являясь инструментом разработки и анализа сложных схем, инструментом оптимизации большого числа логических элементов, из многих тысяч которых состоит современная ЭВМ.

Необходимо отметить, что идеи Ч. Бэббиджа были реализованы американским ученым Г. Холлеритом. Именно он с помощью построенной счетно-аналитической машины, а также перфокарт за три года обработал результаты переписи населения в США по состоянию на 1890 г. В машине впервые было использовано электричество[25]. В 1896 г. Холлеритом была основана фирма по выпуску вычислительных перфорационных машин и перфокарт.

2.2. Развитие программирования в 20ом веке.

В 1936 г. английский математик А. Тьюринг[26] ввел понятие машины Тьюринга. Она представляла собой формальное уточнение интуитивного понятия алгоритма. Ученый продемонстрировал, что любой алгоритм в некотором смысле может быть реализован на машине Тьюринга, а, следовательно, доказывал возможность построения универсальной ЭВМ. И та, и другая машины аналогично могут быть снабжены исходными данными решаемой задачи и программой ее решения. Машину Тьюринга можно считать как бы идеализированной моделью универсальной ЭВМ.

Уже в 40-х гг. XX в. механическая элементная база вычислительных машин стала заменяться электрическими и электронными устройствами. Первые электромеханические машины были созданы в Германии К. Цузе (Ц-3, 1941 г.) и в США под руководством профессора Гарвардского университета Г. Айкена (МАРК-1, 1944 г.). Первая электронная машина создана в США группой инженеров под руководством доктора Пенсильванского университета Дж. Мочли и аспиранта Дж. Экксрта (ЭНИАК - электронный числовой интегратор и калькулятор, 1946 г.). В 1949 г. в Англии была построена EDSAC - первая машина, обладающая автоматическим программным управлением, внутренним запоминающим устройством и другими необходимыми компонентами современных ЭВМ[27].

Логические схемы вычислительных машин были разработаны в конце 1940-х гг. Дж. фон Нейманом, Г. Гольдстайном и А. В. Берксом. Кроме того, определенный вклад в данную работу внес американский математик Джон фон Нейман, который принимал участие в создании ЭНИАК. Именно он высказал идею хранения команд управления и данных в машинной памяти, а также сформулировал основные принципы построения современных ЭВМ. ЭВМ с хранимой программой оказались более быстродействующими и гибкими, чем ранее созданные.

В 1951 г. в США было налажено первое серийное производство электронных машин УНИВАК (универсальная автоматическая вы-числительная машина). В это же время фирма IBM начала серийный выпуск машины IBM/701[28].

В СССР первыми авторами ЭВМ, изобретенной в декабре 1948 г., являются И. С. Брук и Б. И. Рамеев. А первая советская ЭВМ с сохраняющейся программой создана в 1951 г. под руководством С. А Лебедева (МЭСМ - малая электронная счетная маши-на). В 1953 г. в Советском Союзе начался серийный выпуск машин, первыми их которых были БЭСМ-1, «Стрела».

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

До конца 1950-х гг. ЭВМ основным элементом конструкции были электронные лампы (1-е поколение). В этот период развитие идеологии и техники программирования шло за счет достижений американских ученых Дж. фон Неймана, сформулировавшего основные принципы построения ЭВМ, и Дж. Бэкуса, под руководством которого в 1954 г. был создан Fortran (Formula Translation) - первый язык программирования высокого уровня, используемый до настоящего времени в разных модификациях. Так, в 1965 г. в Дартмутском колледже Д. Кэмэни и Т. Куртцем была разработана упрощенная версия Фортрана - Basic. В 1966 г. комиссия при Американской ассоциации стандартов (ASA) разработала два стандарта языка: Фортран и Базисный Фортран. Используются также дальнейшие модификации языка (например 1970, 1990 гг.).

Достижения в области электроники и микроэлектроники позволили заменить элементную базу ЭВМ на более совершенную. В конце 1950-х гг. громоздкие электронные лампы заменяют полупроводниками (миниатюрными транзисторами). Появляются ЭВМ II поколения; затем примерно через 10 лет - ЭВМ III поколения на интегральных схемах; еще через 10 лет - ЭВМ IV поколения на больших интегральных схемах (БИС). В Японии в 1990-х гг. реализованы проекты ЭВМ V поколения, в которых использованы достижения в области искусственного интеллекта и биоэлектроники[29]. Если объем оперативного запоминающего устройства (ОЗУ) одной из лучших отечественных машин 1960-х гг. М-20, созданной под руководством С.А.Лебедева в 1958 г., имел 4096 слов (8 Кбайт) и быстродействие 20 тыс. операций в секунду, то современные персональные компьютеры характеризуются ОЗУ в десятки Мбайт и быстродействием в сотни миллионов операций в секунду, что позволяет решать сложнейшие задачи.

В 1953 г. А.А.Ляпуновым был предложен операторный метод программирования, который заключался в автоматизации программирования, а алгоритм решения задачи представлялся в виде совокупности операторов, образующих логическую схему задачи. Схемы позволяли расчленить громоздкий процесс составления программы, части которой составлялись по формальным правилам, а затем объединялись в целое. Для проверки идей операторного метода в СССР в 1954 г. была разработана первая программирующая программа ПП-1, а в 1955 г. более совершенная - ПП-2. В 1956 г. разработана ПП БЭСМ, в 1957 г. - ППСВ, в 1958 г. - для машины «Стрела».[30]

В США в 1954 г. стал применяться алгебраический подход, совпадающий, по существу, с операторным методом. В 1956 г. корпорацией IBM разработана универсальная ПП Фортран для автоматического программирования на ЭВМ IBM/704.

В этот период по мере накопления опыта и теоретического осмысления совершенствовались языки программирования. В 1958-1960 гг. в Европе был создан ALGOL, который породил целую серию алголоподобных языков: Algol W, (1967), Algol 68, Pascal (Н. Вирт, 1970 г.), С (Д. Ритчи и Б. Керниган, 1972 г.), Ada (под руководством Ж. Ишбиа, 1979 г.), C++ (1983). В 1961-1962 гг. Дж. Маккарти в Массачусетс ком технологическом институте был создан язык функционального программирования Lisp, открывший в программировании одно из альтернативных направлений, предложенных Дж. фон Нейманом.

На начало 1970-х гг. существовало более 700 языков высокого уровня и около 300 трансляторов для автоматизации программирования[31].

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

Для ПЭВМ к настоящему времени разработаны ОС: MS DOS, Windows, ОС/2, МасОС, Unix, Linux и др. Широкое распространение получили ОС MS DOS и Windows, имеющие развитый интерфейс и широкий набор приложений, позволяющих последовательное выполнение заданий из пакета, обработку различной информации во многих сферах человеческой деятельности.

В 1965 г. итальянцы Бом и Джакопини[32] предложили использовать в качестве базовых алгоритмических элементов следование, ветвление и цикл. Почти в то же время к аналогичным выводам пришел голландский ученый Э. Дийкстра, заложивший основы структурного программирования. В 1970-х гг. эта методология оформилась, и корпорация IBM сообщила о применении в разработке программного обеспечения «Усовершенствованных методов программирования». Главным компонентом считалось применение технологии, как называемого нисходящего структурного программирования. Суть его заключалась в следующем:

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

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

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

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

Развитие получило модульное программирование, основа которого заключается в следующем[33]:

* функциональная декомпозиция (разбиение) задачи на самостоятельные подзадачи - модули, связанные только входными и выходными данными;

* модуль представляет собой «черный ящик», позволяющий разрабатывать части программ одного проекта на разных языках программирования, а затем с помощью компоновочных средств объединять их в единый загрузочный модуль;

* должно быть ясное понимание назначения всех модулей задачи и их оптимального сочетания;

* с помощью комментариев должно описываться назначение всех переменных модуля.

Уже в период 1970-1980-х гг. развитие теоретических исследований оформило программирование как самостоятельную научную дисциплину, занимающуюся методами разработки программного обеспечения (ПО).

В истории развития промышленного программирования большую роль сыграл программист и бизнесмен Билл Гейтс[34] (Gates William Henry, p. в 1955 г.). Его история очень поучительна для начинающих программистов. В 1972 г. Билл Гейтс и его школьный товарищ Пол Аллен основали компанию по анализу уличного движения «Трэф-О-Дейта» и использовали для обработки данных компьютеры с микропроцессором 8008 - первым из знаменитого ряда микропроцессоров компании «Intel». Будучи студентом Гарвардского университета, в 1975 г. он совместно с Алленом написал для компьютера Altair (фирмы M1TS) интерпретатор - программу-переводчик с языка программирования на язык машинных кодов. Они заключили с владельцем фирмы соглашение, по которому их программы распространялись вместе с компьютерами. Товарищи основали компанию «Microsoft», в которой Б. Гейтсу принадлежало 60 % акций, П. Аллену - 40 %. В 1976 г. Гейтс ввел в практику продажу лицензий на свои программные продукты непосредственно производителям компьютеров, что позволило «встраивать» их (ОС и трансляторы с языков программирования) в компьютеры. Это было большое достижение в области маркетинга, принесшее фирме огромные доходы. Фирма привлекала таких новых заказчиков, как фирмы «Apple», «Commodor», «Tendi». В 1980 г. фирма IBM предложила «Microsoft», в которой тогда работало около двух десятков человек, создать языки программирования для ее нового персонального компьютера, в дальнейшем известным как IBM PC. В 1981 г. «Microsoft» приобрела у разработчика Т. Патерсона дисковую ОС (DOS), и в августе этого года IBM PC поставлялась вместе с ОС MS DOS.[35] Успех был настолько велик, что, кроме значительных доходов, привел к тому, что и архитектура Intel, и компьютеры IBM, и про-граммы «Microsoft» фактически стали отраслевыми стандартами. В 1988 г. «Microsoft» создала свою ОС Windows с мощным графическим интерфейсом. К 1995 г. ОС, выпускаемые фирмой, использовали 85 % персональных компьютеров. ОС Windows совершенствуется год от года, обладая уже средствами доступа в глобальную сеть Internet. Вместе с фирмой NBC был создан круглосуточный кабельный информационный канал новостей. Совместно с фирмой «Эн-карта» создана мультимедиа-энциклопедия на CD-ROM «Книжная полка», содержащая электронные версии семи больших справочников, электронную энциклопедию кино - «Синемания». В 1995 г. в фирме «Microsoft» работало 18 тыс. человек, годовой выпуск достиг 200 программных продуктов, а доходы составили миллиарды долларов. В 1998 г. Б. Гейтс стал самым богатым человеком в мире, а в конце 1999 г. - объявил о своем решении уйти с поста главы компании и заняться программированием. Сегодня Билл Гейтс - одна из самых популярных фигур компьютерного мира. Журнал «People» писал: «Гейтс в сфере программирования значит столько же, сколько Эдисон в отношении к электрической лампочке: отчасти инноватор, отчасти предприниматель, отчасти торговец, но неизменно гений».

Профессиональное программирование вышло на уровень технологии. Методы разработки ПО синтезируют:

* методы инженерных расчетов для оценки затрат и выбора решений;

* математические методы для составления алгоритмов;

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

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

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

Идея использования программных объектов исследовалась в течение ряда лет разными учеными. Одним из первых языков этого типа считают Simula-67. А в 1972 г. появился язык Smoltalk[36], разработанный Аланом Кеем, утвердивший статус ООП.

На современном этапе развиваются инструментальные среды и системы визуального программирования для создания программ на языках высокого уровня: (Turbo Pascal, Delphi, Visual Basic, C++Builder и др.).

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

В КП компонент рассматривается как хранилище[37] (в виде DLL-или ЕХЕ файлов) для одного или нескольких классов. Классы распространяются в бинарном виде, а не в виде исходного кода. Предоставление доступа к методам класса осуществляется через строго определенные интерфейсы по протоколу. Это снимает проблему несовместимости компиляторов, обеспечивая без перекомпиляции смену версий классов в разных приложениях. Интерфейсы задают содержание сервиса и являются посредником между клиентом и сервером.

Фирма Microsoft создала технологии для распределенной разработки распределенных систем, такие как COM (Component Object Model), COM+, .NET. Разработаны и другие технологии: CORBA[38] (консорциума OMG), JAVA (компании Sun Microsystem) и др.

Идея переложить на ЭВМ функции составителей алгоритмов и программистов дала новые возможности развитию сферы искусственного интеллекта, которая должна была создавать методы автоматического решения интеллектуальных задач. Формализация знаний, которые есть у профессионалов в разных областях, накопление их в базах знаний, реализованных на ЭВМ, стали основанием для создания экспертных систем. На основе баз знаний работают и ЭВМ V поколения, и интеллектуальные роботы, и экспертные системы. Эти системы могут не только найти решение той или иной задачи, но и объяснить, как оно получено. Появилась возможность манипулировать знаниями, иметь знания о знаниях - метазнания. Знания, храняшиеся в системе, стали объектом ее собственных исследований.

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

В конце 1980-х гг. в Японии и США появились проекты ЭВМ V поколения, реализованные в конце 1990-х гг[39]. Прогресс в программировании связан с прогрессом в архитектуре вычислительных систем, отходом от фон-неймановской концепции, с достижениями в области искусственного интеллекта. Революционные изменения в элементной базе ЭВМ связываются с исследованиями по биоэлектронике.

На современном этапе программирование включает комплекс вопросов, связанных с написанием спецификаций (условий задач), проектированием, кодированием, тестированием и функционированием программ для ЭВМ. Современное ПО для ЭВМ имеет сложную структуру и включает, как правило, ОС, трансляторы с различных языков, текстовые программы контроля и диагностики, набор обслуживающих программ. Например, японские ученые для проектирования систем ПО разрабатывают идею «кольцевой структуры» шести уровней: 1-й (внутренний) - программы для аппаратуры; 2-й - ядро ОС; 3-й - программы сопряжения; 4-й - часть ОС, ориентированная на пользователя; 5-й - системы программирования; 6-й (внешний) - программы пользователя[40].

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

Следует отметить, что достаточно широкое использование структурных и объектно-ориентированных методов программирования с использованием графических моделей объединялось отсутствием инструментальных средств. Как правило, это породило потребность в программно-технологических средствах специального класса - CASE (Computer Aided Software Engineering),[41] которые реализовывали технологию создания и сопровождения ПО различных систем. Уже в 1980 году возникли предпосылки для появления CASE-технологий. Изначально термин «CASE» использовался лишь применительно к вопросам автоматизации разработки ПО, теперь же программная инженерия обладает более широким значением для разработки систем в целом. В CASE-технологии входит разработка и внедрение языков высокого уровня, методов структурного и модульного программирования, языков проектирования и средств их поддержки, формальных и неформальных языков описания системных требований.

Уже в начале XXв. с момента создания пишущей механической машинки сформировалась возможность общедоступного создания печатного текста. Однако необходимо отметить, что внесение изменений в такой текст (исправление ошибок) было достаточно трудоемкой работой. Далее появились электрические пишущие машинки. Таким образом, с момента появления персональных компьютеров подготовка печатного текста стала гораздо совершеннее. За последние два десятилетия прошлого века было разработано огромное количество разнообразных комплексов программ для обработки текстов. Изначально они получили название текстовых редакторов, уже далее, по мере расширения их функциональных возможностей были переименованы в текстовых процессоров.

Так, в начале этого столетия текстовые процессоры стали уже более совершенными. Наряду с более простыми (например Professional Write и др.) появились такие мощные, как MS WinWord (см. рис. 21), WordPerfect WordStar 2000 и др. Из отечественных широкое распространение получил текстовый процессор Лексикон[42].

Для подготовки и обработки числовой информации с начала 1980-х годов стали использоваться табличные процессоры. В 1979 г. Д. Брикклин предложил первую программу для работы с электронными таблицами VisiCalc. В 1981 г. была разработана система SuperCalc фирмы «Computer Associates», в 1982 г. - Multiplan фирмы «Microsoft», далее - пакет для IBM PC Lotusl-2-3 фирмы «Lotus Development», русифицированные пакеты АБАК, ДРАКОН и др. В 1985 г. появился табличный процессор Excel фирмы «Microsoft» первоначально для персонального компьютера Macintosh, а затем для совместимых с IBM PC. Этот процессор разрабатывался параллельно с ОС Windows, его версии вобрали в себя все черты графического интерфейса, вплоть до версий Excel 5.0 как приложения Windows 3.1, Excel 7.0 как приложения Windows 95 и т. д. В последние годы создано достаточно много систем подготовки табличных документов, т. е. электронных таблиц, табличных процессоров (например, Corel Quattro 6.0 фирмы «Corel Co», Lotus 5.0 фирмы «Lotus Development Co», Office Proftessional for Windows фирмы «Microsoft» и ДР-)- Но наиболее широко используют электронные таблицы Excel.

Таким образом, были разработаны разнообразные стандартные реляционные системы управления базами данных - СУБД (например, MS Access, paradox и др.), на основе которых строят реляционные базы данных в различных предметных областях.

Кроме того, для многих организаций (особенно управленческих) были разработаны так называемые офисные пакеты. Как правило, они были разработаны на основе единой ОС функционируют приложения, включающие в себя системы для работы с различными видами информации. Например, созданы па-кеты приложений к ОС Windows[43] (MS Office, WordPerfect Office фир-мы «Corel», StarOffice фирмы «SunMicrosystems» и др.), которые включают программные средства для выполнения функций обработки всех видов информации. Например, MS Office включает совершенствующиеся год от года (в зависимости от последней версии ОС Windows) средства обработки текста (MS Word), графики (Photo Draw) и презентаций (PowerPoint), таблиц (Excel), баз данных (Access), электронной почты (Outlook), работы во Всемирной паутине (FrontPage), создания звуковых клипов (MS Sound Recorder).

Одним из мощных толчков в развитии новых направлений в программировании стало объединение компьютерных и телекоммуникационных технологий.

В 1960х годах за рубежом стали появляться первые вычислительные сети. Именно с них и началась техническая и технологическая революция. Таким образом была предпринята попытка объединить технологию сбора, хранения, передачи и обработки информации на ЭВМ с техникой связи. В Европе в те годы были созданы международные сети EIN и Евро-нет, затем появились национальные сети. В 1972 г. в Вене была создана сеть МИПСА, к которой присоединились в 1979 г. 17 стран Европы, СССР, США, Канада и Япония. В 1980-х гг. в нашей стране была создана система телеобработки статистической информации, обслуживающая государственные и республиканские органы статистики. С 1980-х гг. развивается программирование для локальных вычислительных сетей (ЛВС).

Под ЛВС понимается коммуникационная система, поддерживающая в пределах одного здания или некоторой ограниченной территории один или несколько высокоскоростных каналов передачи информации, предоставляемых абонентским системам для кратковременного пользования. К 1990 г. эксплуатировалось свыше 0,5 млн серверов и 5 млн рабочих станций, работающих под управлением сетевых ОС (например NetWare компании «Novell»).

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

Необходимо отметить, что именно сети позволили эффективно использовать аппаратные средства, программные средства и такие многопользовательские системы, как электронная почта, информационные системы на основе баз данных, телеконференции и др. Особой популярностью пользуется система WWW (World Wide Web) - Всемирная паутина[44], т. е. всемирная распределенная база гипертекстовых документов. Пользователи, используя для программирования язык гипертекстовой разметки HTML, создают свои сайты любой тематики и легко могут получать многообразную информацию, общаться с миллионами пользователей компьютеров. В будущем планируется массовое использование так называемых информационных роботов (Knowbot) - новых систем поиска и обработки информации в сети, в основе которых имеются уже элементы экспертных систем, позволяющих анализировать искомую информацию и готовить ее для выдачи в форме презентаций.

С Интернетом тесно связаны понятия «киберпространство» и «виртуальная реальность».[45] Под киберпростраиством понимается совокупность всех систем компьютерных коммуникаций, а также потоков информации, которые циркулируют в мировых сетях. Под виртуальной реальностью понимается фантастический мир, который создавается на экране компьютера, образы реального мира и процессов, в нем происходящих. Следует отметить, что с такими объектами и процессами существует возможность работать как с реальными, при этом проводить различные исследования, а также имитировать всевозможные ситуации, создавать прекрасные тренажеры для использования полученных навыков в реальности. Таким образом, в настоящее время поле деятельности для программистов огромное. В связи с этим общество заинтересовано в высококвалифицированных специалистах этого профиля.

2.3. Роль программирования в современном мире.

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

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

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

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

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

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

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

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

ЗАКЛЮЧЕНИЕ

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

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

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

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

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

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

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

СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ

1.Бессмертный, И. А. Системы искусственного интеллекта : учеб. пособие для СПО / И. А. Бессмертный. — 2-е изд., испр. и доп. — М. : Издательство Юрайт, 2018. — 130 с.

  1. Голицына, О.Л. Основы алгоритмизации и программирования: Учебное пособие / О.Л. Голицына, И.И. Попов. - М.: Форум; Издание 2-е, 2015. - 432 c.
  2. Дорогов, В.Г. Основы программирования на языке С: Учебное пособие / В.Г. Дорогов, Е.Г. Дорогова. - М.: Форум, 2015. - 320 c.
  3. Зыков, С.В. Основы современного программирования: Учебное пособие для вузов / С.В. Зыков. - М.: ГЛТ , 2012. - 444 c.
  4. Богачев, К.Ю. Основы параллельного программирования: Учебное пособие / К.Ю. Богачев. - М.: Бином, 2014. - 342 c.
  5. Макарова, Н.В. Основы программирования. учебник с практикумом (для спо) / Н.В. Макарова. - М.: КноРус, 2016. - 112 c.
  6. Семакин, И.Г. Основы алгоритмизации и программирования: Учебник / И.Г. Семакин. - М.: Academia, 2017. - 328 c.
  7. Серкова, Е.Г. Основы алгоритмизации и программирования: практикум / Е.Г. Серкова. - РнД: Феникс, 2019. - 189 c.
  8. Основы программирования. Учебник с практикумом / Под ред. Макаровой Н.В.. - М.: КноРус, 2017. - 352 c.
  9. Окулов, С.М. Основы программирования, перераб / С.М. Окулов. - М.: Бином, 2015. - 336 c.
  10. Тарасов, И.А. Основы программирования Open GL / И.А. Тарасов. - М.: Горячая линия - Телеком , 2000. - 188 c.
  11. Трофимов, В. В. Основы алгоритмизации и программирования: учебник для СПО / В. В. Трофимов, Т. А. Павловская ; под ред. В. В. Трофимова. — М. : Издательство Юрайт, 2019. — 137 с.
  12. Черпаков, И.В. Основы программирования: Учебник и практикум для прикладного бакалавриата / И.В. Черпаков. - Люберцы: Юрайт, 2016. - 219 c.

  1. Скотт, Т. Основы программирования. Курс программированного обучения / Т. Скотт. - М.: Советское радио, 2016. - 490 c.

  2. Основы программирования. Учебник с практикумом / Под ред. Макаровой Н.В.. - М.: КноРус, 2017. - 352 c.

  3. Зыков, С.В. Основы современного программирования: Учебное пособие для вузов / С.В. Зыков. - М.: ГЛТ , 2012. - 444 c.

  4. Семакин, И.Г. Основы алгоритмизации и программирования: Учебник / И.Г. Семакин. - М.: Academia, 2017. - 32 c.

  5. Семакин, И.Г. Основы алгоритмизации и программирования: Учебник / И.Г. Семакин. - М.: Academia, 2017. - 328 c.

  6. Тарасов, И.А. Основы программирования Open GL / И.А. Тарасов. - М.: Горячая линия - Телеком , 2000. - 188 c.

  7. Тарасов, И.А. Основы программирования Open GL / И.А. Тарасов. - М.: Горячая линия - Телеком , 2000. - 188 c.

  8. Зыков, С.В. Основы современного программирования: Учебное пособие для вузов / С.В. Зыков. - М.: ГЛТ , 2012. - 444 c.

  9. Зыков, С.В. Основы современного программирования: Учебное пособие для вузов / С.В. Зыков. - М.: ГЛТ , 2012. - 444 c.

  10. Тарасов, И.А. Основы программирования Open GL / И.А. Тарасов. - М.: Горячая линия - Телеком , 2000. - 188 c.

  11. Тарасов, И.А. Основы программирования Open GL / И.А. Тарасов. - М.: Горячая линия - Телеком , 2000. - 188 c.

  12. Скотт, Т. Основы программирования. Курс программированного обучения / Т. Скотт. - М.: Советское радио, 2016. - 490 c.

  13. Основы программирования. Учебник с практикумом / Под ред. Макаровой Н.В.. - М.: КноРус, 2017. - 352 c.

  14. Богачев, К.Ю. Основы параллельного программирования: Учебное пособие / К.Ю. Богачев. - М.: Бином, 2014. - 342 c.

  15. Зыков, С.В. Основы современного программирования: Учебное пособие для вузов / С.В. Зыков. - М.: ГЛТ , 2012. - 444 c.

  16. Зыков, С.В. Основы современного программирования: Учебное пособие для вузов / С.В. Зыков. - М.: ГЛТ , 2012. - 444 c.

  17. Окулов, С.М. Основы программирования, перераб / С.М. Окулов. - М.: Бином, 2015. - 336 c.

  18. Тарасов, И.А. Основы программирования Open GL / И.А. Тарасов. - М.: Горячая линия - Телеком , 2000. - 188 c.

  19. Скотт, Т. Основы программирования. Курс программированного обучения / Т. Скотт. - М.: Советское радио, 2016. - 490 c.

  20. Скотт, Т. Основы программирования. Курс программированного обучения / Т. Скотт. - М.: Советское радио, 2016. - 490 c.

  21. Богачев, К.Ю. Основы параллельного программирования: Учебное пособие / К.Ю. Богачев. - М.: Бином, 2014. - 342 c.

  22. Зыков, С.В. Основы современного программирования: Учебное пособие для вузов / С.В. Зыков. - М.: ГЛТ , 2012. - 444 c.

  23. Дорогов, В.Г. Основы программирования на языке С: Учебное пособие / В.Г. Дорогов, Е.Г. Дорогова. - М.: Форум, 2015. - 320 c.

  24. Макарова, Н.В. Основы программирования. учебник с практикумом (для спо) / Н.В. Макарова. - М.: КноРус, 2016. - 112 c.

  25. Черпаков, И.В. Основы программирования: Учебник и практикум для прикладного бакалавриата / И.В. Черпаков. - Люберцы: Юрайт, 2016. - 219 c.

  26. Серкова, Е.Г. Основы алгоритмизации и программирования: практикум / Е.Г. Серкова. - РнД: Феникс, 2019. - 189 c.

  27. Зыков, С.В. Основы современного программирования: Учебное пособие для вузов / С.В. Зыков. - М.: ГЛТ , 2012. - 444 c.

  28. Голицына, О.Л. Основы алгоритмизации и программирования: Учебное пособие / О.Л. Голицына, И.И. Попов. - М.: Форум; Издание 2-е, 2015. - 432 c.

  29. Макарова, Н.В. Основы программирования. учебник с практикумом (для спо) / Н.В. Макарова. - М.: КноРус, 2016. - 112 c.

  30. Макарова, Н.В. Основы программирования. учебник с практикумом (для спо) / Н.В. Макарова. - М.: КноРус, 2016. - 112 c.

  31. Тарасов, И.А. Основы программирования Open GL / И.А. Тарасов. - М.: Горячая линия - Телеком , 2000. - 188 c.

  32. Макарова, Н.В. Основы программирования. учебник с практикумом (для спо) / Н.В. Макарова. - М.: КноРус, 2016. - 112 c.

  33. Макарова, Н.В. Основы программирования. учебник с практикумом (для спо) / Н.В. Макарова. - М.: КноРус, 2016. - 112 c.

  34. Основы программирования. Учебник с практикумом / Под ред. Макаровой Н.В.. - М.: КноРус, 2017. - 352 c.

  35. Черпаков, И.В. Основы программирования: Учебник и практикум для прикладного бакалавриата / И.В. Черпаков. - Люберцы: Юрайт, 2016. - 219 c.

  36. Макарова, Н.В. Основы программирования. учебник с практикумом (для спо) / Н.В. Макарова. - М.: КноРус, 2016. - 112 c.

  37. Зыков, С.В. Основы современного программирования: Учебное пособие для вузов / С.В. Зыков. - М.: ГЛТ , 2012. - 444 c.

  38. Черпаков, И.В. Основы программирования: Учебник и практикум для прикладного бакалавриата / И.В. Черпаков. - Люберцы: Юрайт, 2016. - 219 c.

  39. Черпаков, И.В. Основы программирования: Учебник и практикум для прикладного бакалавриата / И.В. Черпаков. - Люберцы: Юрайт, 2016. - 219 c.

  40. Зыков, С.В. Основы современного программирования: Учебное пособие для вузов / С.В. Зыков. - М.: ГЛТ , 2012. - 444 c.

  41. Макарова, Н.В. Основы программирования. учебник с практикумом (для спо) / Н.В. Макарова. - М.: КноРус, 2016. - 112 c.

  42. Макарова, Н.В. Основы программирования. учебник с практикумом (для спо) / Н.В. Макарова. - М.: КноРус, 2016. - 112 c.

  43. Семакин, И.Г. Основы алгоритмизации и программирования: Учебник / И.Г. Семакин. - М.: Academia, 2017. - 328 c.

  44. Трофимов, В. В. Основы алгоритмизации и программирования : учебник для СПО / В. В. Трофимов, Т. А. Павловская ; под ред. В. В. Трофимова. — М. : Издательство Юрайт, 2019. — 137 с.

  45. Бессмертный, И. А. Системы искусственного интеллекта : учеб. пособие для СПО / И. А. Бессмертный. — 2-е изд., испр. и доп. — М. : Издательство Юрайт, 2018. — 130 с.

  46. Бессмертный, И. А. Системы искусственного интеллекта : учеб. пособие для СПО / И. А. Бессмертный. — 2-е изд., испр. и доп. — М. : Издательство Юрайт, 2018. — 130 с.