Interested Article - Программирование

Разработка программного обеспечения
Ключевые процессы
Парадигмы и модели
Методологии
Инструменты
Данные и инструкции когда-то [ когда? ] хранились на внешних перфокартах, сортировались и упорядочивались в программные колоды.

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

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

Программирование основывается на использовании языков программирования и средств программирования. В основном языки программирования основаны на текстовом представлении программ, но иногда программировать можно используя, например, визуальное программирование или "zero-code" программирование.

История

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

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

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

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

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

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

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

Первым широко известным и успешным языком программирования высокого уровня был Фортран , разработанный с 1954 по 1957 год, командой исследователей IBM во главе с Джоном Бакусом . Успех Фортрана привёл к образованию комитета учёных по разработке « » компьютерного языка. Отдельно Джон Маккарти из Массачусетского технологического института разработал язык программирования Лисп (основанный на лямбда-исчислении ), первый язык, возникший в академических кругах и получивший успех. С успехом этих начальных усилий языки программирования стали активной темой исследований в 1960-х и далее.

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

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

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

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

Языки программирования

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

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

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

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

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

Инструменты

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

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

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

Примечания

  1. Вирт Н. Алгоритмы + структуры данных = программы. — М.: Мир, 1985;
  2. Вирт Н. Алгоритмы и структуры данных. Новая версия для Оберона + CD. М.: ДМК Пресс, 2010. ISBN 978-5-94074-584-6 , 0-13-022005-9
  3. Антонов Е. «Древнегреческий компьютер» оказался древнее, чем считалось // Наука и жизнь . — 2014. — 11 декабря ( № 12 ).
  4. (англ.) . — Сайт, посвящённый Антикитерскому механизму . Дата обращения: 4 марта 2018. 5 июля 2012 года.
  5. от 29 июня 2011 на Wayback Machine . National Geographic News. November 29, 2006.
  6. Freeth, Tony; Jones, Alexander; Steele, John M.; Bitsakis, Yanis. (англ.) // Nature : journal. — 2008. — 31 July ( vol. 454 , no. 7204 ). — P. 614—617 . — doi : . — . 17 октября 2010 года.
  7. А.И. Китов. Электронные цифровые машины. — Москва, 1956.
  8. Дата обращения: 4 марта 2018. 25 августа 2019 года.
  9. Архангельский А.Я. Программирование на C++Builder 6. — Москва: БИНОМ, 2003. — 1152 с. — ISBN 5-7989-0239-0 .
  10. Макки Алекс. Введение .Net 4.0 и Visual Studio 2010 для профессионалов. — Москва: ООО "И.Д. Вильямс", 2010. — 416 с. — ISBN 978-5-8459-1639-6 . — ISBN 978-1-43-022455-6 .

Литература

  • Дейкстра Э. Дисциплина программирования = A discipline of programming. — 1-е изд. — М. : Мир, 1978. — 275 с.
  • Роберт У. Себеста. Основные концепции языков программирования / Пер. с англ. — 5-е изд. — М. : , 2001. — 672 с. — ISBN 5-8459-0192-8 (рус.) ISBN 0-201-75295-6 (англ.).
  • Дональд Кнут. Искусство программирования . В четырёх томах / Пер. с англ. — М. : , 2001 − 2013.

Ссылки

  • в каталоге ссылок Curlie (dmoz)
Источник —

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