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

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Программирование
Изображение
Продукция компьютерная программа
Практикуется программист
Код CIP 11.02
Универсальная десятичная классификация 004.42
MCC 7372
Commons-logo.svg Программирование на Викискладе
Разработка программного обеспечения
Процесс разработки ПО
Ключевые процессы
Анализ • Проектирование • Программирование • Документирование • Тестирование
Модели
Итеративная • Спиральная • Каскадная • V-Model • Dual Vee Model
Методологии
Agile (XP, Lean, Scrum, FDD и др.) • Cleanroom • OpenUP • RAD • RUP • MSF • DSDM • TDD • BDD
Сопутствующие дисциплины
Конфигурационное управление • Управление проектами • Управление требованиями • Обеспечение качества

Программи́рование — процесс создания компьютерных программ.

По выражению одного из основателя языков программирования Никлауса Вирта «Программы = алгоритмы + структуры данных»[1][2].

Программирование основывается на использовании языков программирования, на которых записываются исходные тексты программ.

История[править | править код]

Коммутационная панель суммирующей машины IBM 402

205 год до н. э.[3] (150 год до н. э.[4]) — Антикитерский механизм из Древней Греции был калькулятором, использовавшим шестерни различных размеров и конфигурации, обусловливавших его работу[5], по отслеживанию метонова цикла, до сих пор использующегося в лунно-солнечных календарях[6].

1206 год — Аль-Джазари построил программируемый автомат-гуманоид. Одна система, задействованная в этих устройствах, использовала зажимы и кулачки, помещённые в деревянный ящик в определённых местах, которые последовательно задействовали рычаги, которые, в свою очередь, управляли ударными инструментами[источник не указан 228 дней].

1804 год — построен жаккардовый ткацкий станок, построенный в 1804 году Жозефом Мари Жаккаром, который произвёл революцию в ткацкой промышленности, предоставив возможность программировать узоры на тканях при помощи перфокарт, его иногда считают первым программируемым устройством[источник не указан 228 дней].

19 июля 1843 года — Чарлз Бэббидж разработал (но не смог её построить) «Аналитическую машину» — первое программируемое вычислительное устройство[источник не указан 228 дней].

19 июля 1843 года — графиня Ада Августа Лавлейс, дочь великого английского поэта Джорджа Байрона, написала первую в истории человечества программу для Аналитической машины. Эта программа решала уравнение Бернулли, выражающее закон сохранения энергии движущейся жидкости. В своей первой и единственной научной работе Ада Лавлейс рассмотрела большое число вопросов. Ряд высказанных ею общих положений (принцип экономии рабочих ячеек памяти, связь рекуррентных формул с циклическими процессами вычислений) сохранили своё принципиальное значение и для современного программирования[источник не указан 228 дней].

В материалах Бэббиджа и комментариях Лавлейс намечены такие понятия, как подпрограмма и библиотека подпрограмм, модификация команд и индексный регистр, которые стали употребляться только в 1950-х годах[источник не указан 228 дней]. Однако ни одна из программ, написанных Адой Лавлейс, никогда так и не была запущена[источник не указан 228 дней].

Первые книги по программированию в СССР

Первой советской открытой книгой по программированию, электронным вычислительным машинам и их различным применениям была выпущенная в начале 1956 года монография Анатолия Ивановича Китова «Электронные цифровые машины»[7][8]. Заключительная треть этой книги посвящена «Неарифметическому использованию ЭВМ» — применению компьютеров для управления производственными процессами, решению задач экономики, искусственного интеллекта, машинного перевода и т.д. Книга переведена на несколько иностранных языков и опубликована в США, Китае, Польше, Чехословакии и других странах. Об этой книге Президент Академии наук СССР Г. И. Марчук писал «Вышедшая в 1956 году книга А. И. Китова „Электронные цифровые машины“ фактически сделала переворот в сознании многих исследователей». Выдающийся учёный современности В. М. Глушков отмечал: «А. И. Китов — признанный пионер кибернетики, заложивший основы отечественной школы программирования и применения ЭВМ для решения военных и народнохозяйственных задач. Я сам, как и десятки тысяч других специалистов, получил свои начальные компьютерные знания из его книги „Электронные цифровые машины“ — первой отечественной книги по ЭВМ и программированию». Профессор Мичиганского университета Джон Карр (John Carr, USA) в своей монографии «Лекции по программированию» (1958, США) писал о том, что, проанализировав по рассматриваемой тематике порядка 150 выпущенных в мире на тот момент времени книг, вопросы как ручного, так и автоматического программирования лучше всего освещены в книге Анатолия Китова.

Через шесть месяцев в том же 1956 году вышла в свет под редакцией А. И. Китова книга А. И. Китова, Н. А. Криницкого и П. Н. Комолова «Элементы программирования» (для электронных вычислительных машин). Эта почти трёхсотстраничная книга стала второй в СССР общедоступной компьютерной монографией. В заключении этой книги продекларировано: «Широкое применение этих машин (ЭВМ) поднимет на новый небывало высокий уровень все виды производства в нашей стране, позволит резко повысить материальное благосостояние нашего народа и значительно укрепить обороноспособность нашей Родины». Данные две книги, покрыли громадный дефицит литературы по ЭВМ и программированию, существовавший в то время в Советском Союзе.

Вышедшая в свет в 1959 году книга «Электронные цифровые машины и программирование» Китова А. И. и Криницкого Н. А. была первым в СССР официальным учебником по ЭВМ и программированию, официально допущенным Министерством образования СССР для обучения в ВУЗах и университетах. Об этой книге Президент Академии наук СССР Г. И. Марчук писал: «В 1959 году появился другой фундаментальный труд А. И. Китова, написанный вместе с Н. А. Криницким — „Электронные цифровые машины и программирование“. Это была фактически энциклопедия науки об ЭВМ. Многие поколения студентов в университетах и вузах страны с помощью этой замечательной книги получили фундаментальное образование и стали первоклассными учеными во многих областях знаний. Книги А. И. Китова, написанные в начале эры ЭВМ в нашей стране, не должны быть забыты». Эта книга была издана в Румынии, Венгрии, Германской демократической республике и ряде других стран. Второе стереотипное издание книги «Электронные цифровые машины и программирование» появилось в 1961 году. Общий тираж иностранных и двух советских изданий составил свыше 130 000 экземпляров. Об этом учебнике-энциклопедии в своих воспоминаниях ветеран кафедры вычислительной техники МЭИ (первая кафедра ЭВМ в стране), д.т.н., профессор А. К. Поляков написал так: «По-моему мнению, учебник А. И. Китова и Н. А. Криницкого „Электронные цифровые машины и программирование“ (1959) в то время был лучшим в мире». .

Языки программирования[править | править код]

Большая часть работы программистов связана с написанием исходного кода, тестированием и отладкой программ на одном из языков программирования. Исходные тексты и исполняемые файлы программ являются объектами авторского права и являются интеллектуальной собственностью их авторов и правообладателей[источник не указан 228 дней].

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

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

В некоторых языках вместо машинного кода генерируется интерпретируемый двоичный код «виртуальной машины», также называемый байт-кодом (byte-code). Такой подход применяется в Forth, некоторых реализациях Lisp, Java, Perl, Python, языках для .NET Framework.

Скриншот фрагмента кода на языке Java в текстовом редакторе vim, демонстрирующий подсветку синтаксиса, поддержку Unicode, фолдинг

Инструменты[править | править код]

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

В процессе программирования в настоящее время широко используются интегрированные среды разработки[9][10], в состав которых обычно входят:

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

Примечания[править | править код]

  1. Вирт Н. Алгоритмы + структуры данных = программы. — М.: Мир, 1985;
  2. Вирт Н. Алгоритмы и структуры данных. Новая версия для Оберона + CD. М.: ДМК Пресс, 2010. ISBN 978-5-94074-584-6, 0-13-022005-9
  3. Антонов Е. «Древнегреческий компьютер» оказался древнее, чем считалось // Наука и жизнь. — 2014. — 11 декабря (№ 12).
  4. The History of the Antikythera Mechanism. Сайт, посвящённый Антикитерскому механизму.
  5. Ancient Greek Computer’s Inner Workings Deciphered. National Geographic News. November 29, 2006.
  6. Freeth, Tony; Jones, Alexander; Steele, John M.; Bitsakis, Yanis (July 31, 2008). «Calendars with Olympiad display and eclipse prediction on the Antikythera Mechanism». Nature 454 (7204): 614–617. DOI:10.1038/nature07130. PMID 18668103.
  7. А.И. Китов. Электронные цифровые машины. — Москва, 1956.
  8. Основные публикации Китова А.И..
  9. Архангельский А.Я. Программирование на С++Builder 6. — Москва: БИНОМ, 2003. — 1152 с. — ISBN 5-7989-0239-0.
  10. 1 2 Макки Алекс. Введение .Net 4.0 и Visual Studio 2010 для профессионалов. — Москва: ООО "И.Д. Вильямс", 2010. — 416 с. — ISBN 978-5-8459-1639-6. — ISBN 978-1-43-022455-6.

Литература[править | править код]

  • Китов А.И. «Электронные цифровые машины» М.:, Издательство «Советское радио», 1956, 276 с.
  • Китов А.И., Криницкий Н.А., Комолов П.Н. «Элементы программирования» (для электронных вычислительных машин). Под редакцией А.И. Китова. Издательство Артиллерийской инженерной академии, М.:, 1956, 286 с.
  • Китов А.И., Криницкий Н.А. «Электронные цифровые машины и программирование» М.:, Издательство «ФИЗМАТГИЗ», 1959 (второе издание в 1961 г.), 572 с.
  • Дейкстра Э. Дисциплина программирования = A discipline of programming. — 1-е изд. — М.: Мир, 1978. — 275 с.
  • Бьярне Страуструп. Программирование: принципы и практика использования C++, исправленное издание = Programming: Principles and Practice Using C++. — М.: Вильямс, 2011. — С. 1248. — ISBN 978-5-8459-1705-8.
  • Александр Степанов, Пол Мак-Джонс. Начала программирования = Elements of Programming. — М.: Вильямс, 2011. — С. 272. — ISBN 978-5-8459-1708-9.
  • Роберт У. Себеста. Основные концепции языков программирования / Пер. с англ. — 5-е изд. — М.: Вильямс, 2001. — 672 с. — ISBN 5-8459-0192-8 (рус.) ISBN 0-201-75295-6 (англ.).
  • Иан Соммервилл. Инженерия программного обеспечения / Пер. с англ. — 6-е издание. — М.: Вильямс, 2002. — 624 с.
  • Иан Грэхем. Объектно-ориентированные методы. Принципы и практика / Пер. с англ. — 3-е изд. — М.: Вильямс, 2004. — 880 с.
  • Дональд Кнут. Искусство программирования. В четырёх томах / Пер. с англ. — М.: Вильямс, 2001 − 2013.
  • Долгов В.А. Китов Анатолий Иванович - пионер кибернетики, информатики и автоматизированных систем управления / М.:, Минобрнауки, КОС-ИНФ, 2010. 337 с.(http://www.computer-museum.ru/books/dolgov_kitov_2010.pdf)

Ссылки[править | править код]