Программирование

Программи́рование— процесс создания и модификациикомпьютерных программ.
По выражению одного из основателей языков программированияНиклауса Вирта«Программы =алгоритмы+структуры данных».
Программирование основывается на использованииязыков программированияи средств программирования. В основном языки программирования основаны на текстовом представлении программ, но иногда программировать можно, используя, например,визуальное программированиеили «zero-code» программирование.
205 годдон. э.(150 год до н. э.) —антикитерский механизмизДревней Грециибылкалькулятором, использовавшимшестерниразличных размеров и конфигурации, обусловливающих его работупо отслеживаниюметонова цикла, до сих пор использующегося влунно-солнечных календарях.
1206 год—Аль-Джазарипостроил программируемыйавтомат-гуманоид. Одна система, задействованная в этих устройствах, использовала зажимы икулачки, помещённые в деревянный ящик в определённых местах, которые последовательно задействовалирычаги, которые, в свою очередь, управлялиперкуссионными инструментами.
1804 год—Жозеф Мари Жаккарпостроилжаккардовый ткацкий станок, который произвёл революцию в ткацкой промышленности, предоставив возможность программировать узоры на тканях при помощиперфокарт. Его иногда считают первымпрограммируемым устройством.
1843 год—Чарлз Бэббиджразработал проект (но не смог его реализовать, в том числе благодаря близорукости английского правительства) «Аналитической машины» — основанного на механических узлах и с приводом в виде парового двигателя первого программируемоговычислительного устройства.
ГрафиняАда Августа Лавлейс, дочь английского поэтаДжорджа Байрона, написала первую в истории человечества программу для Аналитической машины. Эта программа решалауравнение Бернулли, выражающее закон сохранения энергии движущейся жидкости. В своей первой и единственной научной работе Ада Лавлейс рассмотрела большое число вопросов. Ряд высказанных ею общих положений (принцип экономии рабочихячеек памяти, связь рекуррентных формул с циклическими процессами вычислений) сохранили своё принципиальное значение и для современного программирования.
В материалахБэббиджаи комментарияхЛавлейс, намечены такие понятия как — подпрограмма и библиотека подпрограмм, модификация команд и индексный регистр, которые стали употребляться только в1950-х годах. Однако ни одна из программ, написанных Адой Лавлейс, никогда так и не была запущена.
Первым широко известным и успешнымязыком программированиявысокого уровнябылФортран, разработанный с 1954 по 1957 год, командой исследователейIBMво главе сДжоном Бакусом. Успех Фортрана привёл к образованию комитета учёных по разработке «универсального» компьютерного языка. ОтдельноДжон МаккартиизМассачусетского технологического институтаразработал язык программированияЛисп(основанный налямбда-исчислении), первый язык, возникший в академических кругах и получивший успех. С успехом этих начальных усилий языки программирования стали активной темой исследований в1960-хи далее.
Первойсоветскойоткрытой книгой по программированию,электронным вычислительным машинами их различным применениям была выпущенная в начале1956 годамонографияАнатолия Ивановича Китова«Электронные цифровые машины». Заключительная треть этой книги посвящена «Неарифметическому использованию ЭВМ» — применению компьютеров для управления производственными процессами, решению задачэкономики,искусственного интеллекта,машинного переводаи т. д. Книга переведена на несколькоиностранных языкови опубликована вСША,Китае,Польше,Чехословакиии других странах. Об этой книге ПрезидентАкадемии наук СССРГ. И. Марчукписал «Вышедшая в 1956 году книга А. И. Китова „Электронные цифровые машины“ фактически сделала переворот в сознании многих исследователей». Выдающийся учёный современностиВ. М. Глушковотмечал: «А. И. Китов — признанный пионеркибернетики, заложивший основы отечественной школы программирования и примененияЭВМдля решения военных и народнохозяйственных задач. Я сам, как и десятки тысяч других специалистов, получил свои начальные компьютерные знания из его книги „Электронные цифровые машины“ — первой отечественной книги по ЭВМ и программированию». ПрофессорМичиганского университетаДжон Карр (John Carr, USA) в своей монографии «Лекции по программированию» (1958, США) писал о том, что, проанализировав по рассматриваемой тематике порядка 150 выпущенных в мире на тот момент времени книг, пришел к выводу, что вопросы как ручного, так и автоматического программирования лучше всего освещены в книге Анатолия Китова.
Через шесть месяцев в том же 1956 году вышла в свет под редакцией А. И. Китова книга (А. И. Китова,Н. А. КриницкогоиП. Н. Комолова) «Элементы программирования» (для электронных вычислительных машин). Эта почти трёхсотстраничная книга стала второй в СССР общедоступной компьютерной монографией. В заключении этой книги продекларировано: «Широкое применение этих машин (ЭВМ) поднимет на новый небывало высокий уровень все виды производства в нашей стране, позволит резко повысить материальное благосостояние нашего народа и значительно укрепить обороноспособность нашей Родины». Данные две книги, покрыли громадный дефицит литературы по ЭВМ и программированию, существовавший в то время в Советском Союзе.
Вышедшая в свет в1959 годукнига «Электронные цифровые машины и программирование» (Китова А. И. и Криницкого Н. А.) была первым в СССР официальным учебником по ЭВМ и программированию, официально допущеннымМинистерством образования СССРдля обучения вВУЗахиуниверситетах. Об этой книге Президент Академии наук СССР Г. И. Марчук писал: «В 1959 году появился другой фундаментальный труд А. И. Китова, написанный вместе с Н. А. Криницким — „Электронные цифровые машины и программирование“. Это была фактическиэнциклопедиянаукиоб ЭВМ. Многие поколения студентов в университетах и вузах страны с помощью этой замечательной книги получили фундаментальное образование и стали первоклассными учёными во многих областях знаний. Книги А. И. Китова, написанные в начале эры ЭВМ в нашей стране, не должны быть забыты». Эта книга была издана вРумынии,Венгрии,Германской демократической республикеи ряде других стран. Второе стереотипное издание книги «Электронные цифровые машины и программирование» появилось в1961 году. Общий тираж иностранных и двух советских изданий составил свыше 130 000 экземпляров. Об этом учебнике-энциклопедии в своих воспоминанияхветеранкафедры вычислительной техникиМЭИ(первая кафедра ЭВМ в стране), д. т. н., профессор А. К. Поляков написал так: «По-моему мнению, учебник А. И. Китова и Н. А. Криницкого „Электронные цифровые машины и программирование“ (1959) в то время был лучшим в мире».
Большая часть работыпрограммистовсвязана с написаниемисходных текстов(иногда язык программирования может быть и не текстовым, аграфическим),тестированиемиотладкойпрограмм на одном изязыков программирования. Исходные тексты иисполняемые файлыпрограмм являются объектамиавторского праваи являютсяинтеллектуальной собственностьюих авторов и правообладателей.
Различные языки программирования поддерживают различныестили программирования(парадигмы программирования). Выбор нужного языка программирования для некоторых частей алгоритма позволяет сократить время написания программы и решить задачу описания алгоритма наиболее эффективно. Разные языки требуют от программиста различного уровня внимания к деталям при реализации алгоритма, результатом чего часто бывает компромисс между простотой и производительностью (или между«временем программиста»и«временем пользователя»).
Единственный язык, напрямую выполняемый ЭВМ — этомашинный язык(также называемыймашинным кодомиязыком машинных команд). Изначально все программы писались в машинном коде, но сейчас этого практически уже не делается. Вместо этого программисты пишутисходный кодна том или ином языке программирования, затем, используякомпилятор, транслируют его в один или несколько этапов в машинный код, готовый к исполнению нацелевом процессоре, или впромежуточное представление, которое может быть исполнено специальныминтерпретатором—виртуальной машиной. Но это справедливо только дляязыков высокого уровня. Если требуется полныйнизкоуровневыйконтроль над системой на уровне машинных команд и отдельных ячеек памяти, программы пишут наязыке ассемблера,мнемонические инструкциикоторого преобразуются один к одному в соответствующие инструкции машинного языка целевого процессора ЭВМ (по этой причинетрансляторыс языков ассемблера получаются алгоритмически простейшими трансляторами).
В некоторых языках вместо машинного кода генерируется интерпретируемый двоичный код «виртуальной машины», также называемыйбайт-кодом(byte-code). Такой подход применяется вForth, некоторых реализацияхLisp,Java,Perl,Python, языках для.NET Framework.
Текстовый редактор среды программирования может иметь специфичную функциональность, такую, какиндексация имён, отображение документации (напримерDoxygen),подсветка синтаксиса, средствавизуального созданияпользовательского интерфейса. С помощью текстового редактора программист производит набор и редактирование текста создаваемой программы, который называютисходным кодом.Язык программированияопределяетсинтаксиси изначальнуюсемантикуисходного кода.
В процессе программирования в настоящее время широко используютсяинтегрированные среды разработки, в состав которых обычно входят: