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

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

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

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

Алгоритмы взлома кода существуют веками. В 9 веке арабский математик Аль-Кинди описал криптографический алгоритм расшифровки зашифрованного кода в Рукописи по Расшифровке криптографических сообщений. Он дал первое описание криптоанализа с помощью частотного анализа, самого раннего алгоритма взлома кода.]

Ранние программируемые машины

Самые ранние программируемые машины предшествовали

изобретению цифровой вычислительноймашины . Еще в ix веке программируемый музыкальный секвенсор был изобретен персидскими братьями Бану Муса. Которые описали автоматизированный механический флейтист в Книге гениальных устройств.[3][4] В 1206 году арабский инженер Аль-Джазари изобрел программируемую драм-машину, где музыкальные механические автоматы могли воспроизводить различные ритмы и барабанные паттерны.[5] В 1801 году Жозеф-Мари Жаккард изобрел ткацкий станок это будет ткать узор. Следуя серии перфорированных карт. Узоры можно было ткать и повторять, раскладывая карты.

[6]

Аналитическая машина

В 1837 году Чарльз Бэббидж был вдохновлен ткацким станком Жаккарда. Чтобы попытаться построить Аналитическую машину.] Названия компонентов счетного устройства были заимствованы из текстильной промышленности. В текстильной промышленности пряжу привозили из магазина на мельницу. Устройство должно было иметь Числа из Он был запрограммирован с помощью двух наборов перфорированных карт—одна для управления операцией. А другая для входных переменных.[6][7] Однако после более чем 17 000 фунтов денег британского правительства тысячи зубчатых колес и шестеренок никогда полностью не работали вместе.

]

В течение девяти месяцев в 1842-43 годах Ада Лавлейс перевела мемуары итальянского математика Луиджи Менабреа. Мемуары касались Аналитической машины. Перевод содержал Примечание G. В котором полностью описывался метод вычисления чисел Бернулли с использованием Аналитической машины. Эта записка признана некоторыми историками первой в мире письменной компьютерной программой[9]

Универсальная машина Тьюринга

В 1936 году Алан Тьюринг представил Универсальную машину Тьюринга—теоретическое устройство. Которое может моделировать каждое вычисление. Которое может быть выполнено на

полной вычислительной машине Тьюринга.[10] Это конечная машина, которая имеет бесконечно длинную ленту чтения/записи. Машина может перемещать ленту вперед и назад, изменяя ее содержимое по мере выполнения алгоритма. Машина запускается в исходном состоянии, проходит последовательность шагов и останавливается. Когда она сталкивается с состоянием остановки.[11] Эта машина, по мнению некоторых, является источником компьютера с сохраненной программой, используемого Джоном фон Нейманом (1946) для архитектуры фон Неймана.[12]

Рано программируемых компьютерах

Компьютер Z3, изобретенный Конрадом Цузе (1941) в Германии, был цифровым и программируемым компьютером.

[13] Цифровой компьютер использует электричество в качестве вычислительного компонента. Z3 содержал 2400 реле для создания цепей. Схемы обеспечивали двоичныйкомпьютер с плавающей запятойи девятью командами. Программирование Z3 осуществлялось с помощью специально разработанной клавиатуры и перфоленты.

Электронный численный интегратор и компьютер (осень 1945) был полнымуниверсальным компьютером Тьюринга . Который использовал 17 468 вакуумных ламп для создания схем. По своей сути это была серия паскалинов, соединенных вместе[14]. Его 40 единиц весили 30 тонн, занимали 1800 квадратных футов (167

м2) и потребляли 650 долларов в час (в валюте 1940-х годов ) в электроэнергии при простаивании.[14] Он имел 20 базовых-10 аккумуляторов. Программирование ЭНИАКА заняло до двух месяцев.[14] Три функциональных стола были на колесиках и должны были быть прикатаны к неподвижным функциональным панелям. Функциональные столы соединялись с функциональными панелями тяжелыми черными кабелями. Каждый функциональный стол имел 728 вращающихся ручек. Программирование ENIAC также включало в себя настройку некоторых из 3000 переключателей.

Отладка программы заняла неделю.[14] Программистами ENIAC были женщины . Которые были известны под общим названием [15] и включали Джин Дженнингс Бартик, Бетти Холбертон, Марлин Уэскофф, Кэтлин Макналти, Рут Тейтельбауми Фрэнсис Спенс. [16]

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

Манчестерский ребенок (июнь 1948 года) был компьютером с сохраненной программой.[17] Программирование перешло от перемещения кабелей и настройки циферблатов; вместо этого компьютерная программа хранилась в памяти в виде цифр. Для хранения каждой команды было доступно только три бита памяти. Поэтому она была ограничена восемью инструкциями. Для программирования было доступно 32 переключателя.

Позже компьютеры

Переключатели для ручного ввода данных General Nova 3, изготовленные в середине 1970-х годов

Компьютеры, выпускавшиеся до 1970-х годов, имели переключатели на передней панели для программирования.

Компьютерная программа была написана на бумаге для справки. Инструкция была представлена конфигурацией параметров включения/выключения. После установки конфигурации была нажата кнопка execute. Затем этот процесс был повторен. Компьютерные программы также вводились вручную с помощью бумажной ленты или перфокарт. После загрузки носителя с помощью переключателей устанавливался начальный адрес и нажималась кнопка execute.[18]

В 1961 году Burroughs B5000 был построен специально для программирования на языке ALGOL 60. Аппаратное обеспечение включало в себя схемы, облегчающие фазу

компиляции.[19]

В 1964 году IBM System/360 была линейкой из шести компьютеров. Каждый из которых имел одинаковую архитектуру набора команд. Модель 30 была самой маленькой и наименее дорогой. Клиенты могли модернизировать и сохранять одно и то же прикладное программноеобеспечение .[20] Каждая модель System/360 отличалась мультипрограммированием. С поддержкой операционной системы, несколько программ могут быть в памяти одновременно. Когда один ждал ввода-вывода, другой мог вычислять. Каждая модель также могла эмулировать другие компьютеры. Клиенты могли перейти на System/360 и сохранить свое

прикладное программное обеспечение IBM 7094 или IBM 1401.[20]

В области компьютерного программирования

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

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

разработкой программногообеспечения . Термин инженерная дисциплина.

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

Компьютерная программа, написанная в стиле императивного программирования

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

Императивные языки

Императивные языки программирования задают последовательный алгоритм, используя объявления. Выражения и операторы:[21]

  • Объявление связывает имя переменной с типом данных – например: var x: integer;
  • Выражение дает значение – например: 2 + 2 дает 4
  • Оператор может присваивать выражение переменной или использовать ее значение для изменения

    потока управления программой, например: x := 2 + 2; if x = 4 then do_something();

Одной из критических замечаний императивных языков является побочный эффект оператора присваивания классу переменных. Называемых нелокальными переменными.[22]

Декларативные языки

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

функциональные языки и логические языки. Принцип , лежащий в основе функциональных языков (таких как Haskell), заключается в том. Чтобы не допускать побочных эффектов, что облегчает рассуждение о программах. Таких как математические функции.[22] Принцип, лежащий в основе логических языков (например, Пролог) состоит в том. Чтобы определить проблему. Подлежащую решению, – цель. – и оставить подробное решение самой системе пролога. Цель определяется путем предоставления списка подцелей. Затем каждая подцель определяется путем дальнейшего предоставления списка ее подцелей и т. Д. Если путь подцелей не находит решения. То эта подцель возвращается назад и систематически предпринимается попытка найти другой путь.

Компиляция и интерпретация

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

Компиляторы используются для перевода исходного кода с языка программирования либо в объектный код, либо в машинный код.[24] Объектный код нуждается в дальнейшей обработке, чтобы стать машинным кодом. А машинный код состоит из собственных инструкций центрального процессора. Готовых к выполнению. Скомпилированные компьютерные программы обычно называются исполняемыми файлами. Двоичными образами или просто двоичными файлами – ссылка на двоичный формат файла, используемый для хранения исполняемого кода.

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

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

Основным недостатком интерпретаторов является то. Что компьютерные программы работают медленнее. Чем при компиляции. Интерпретация кода происходит медленнее, потому что интерпретатор должен декодировать каждое утверждение. А затем выполнять его. Однако разработка программного обеспечения может быть быстрее с помощью интерпретатора. Поскольку тестирование происходит немедленно. Когда этап компиляции опущен. Еще одним недостатком интерпретаторов является то. Что интерпретатор должен присутствовать на исполняющем компьютере. Напротив, скомпилированные компьютерные программы не нуждаются в присутствии компилятора во время выполнения.

Как раз вовремя компиляторы предварительно компилируют компьютерные программы непосредственно перед выполнением. Например, точка доступа виртуальной машины Java содержит компилятор Just In Time. Который выборочно компилирует байт – код Java в машинный код-но только код. Который Точка доступа предсказывает, вероятно. Будет использоваться много раз.

Скомпилированные или интерпретированные программы могут выполняться в пакетном процессе без участия человека.

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

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

Хранение и выполнение

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

Одновременное выполнение

Многие операционные системы поддерживают многозадачность, которая позволяет многим компьютерным программам работать одновременно на одном компьютере. Операционные системы могут запускать несколько программ через планирование процессов – программный механизм для переключения процессора между процессами часто. Чтобы пользователи могли взаимодействовать с каждой программой во время ее работы.[26] В аппаратных средствах современные многопроцессорные компьютеры или компьютеры с многоядерными процессорами могут запускать несколько программ.[27]

Самоизменяющиеся программы

Исполняемая компьютерная программа обычно рассматривается как нечто отличное от данных, с которыми она работает. Однако в некоторых случаях это различие размывается. Когда компьютерная программа модифицирует саму себя. Модифицированная компьютерная программа впоследствии выполняется как часть той же самой программы. Самоизменяющийся код возможен для программ , написанных на машинном коде, языке ассемблера, Lisp, C, COBOL, PL/1и Prolog.

Функциональные категории

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

Прикладное программное

Пример приложения: GCalctool, программный калькулятор

Существует много типов прикладного программного обеспечения:

Утилиты

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

Операционная система

Операционная система-это низкоуровневое программное обеспечение. Поддерживающее основные функции компьютера. Такие как планирование задач и управление периферийными устройствами. [28]

В 1950-х годах программист, который также был оператором, писал программу и запускал ее. После завершения выполнения программы вывод может быть напечатан или напечатан на бумажной ленте или картах для последующей обработки.[18] Чаще всего программа не работала. Затем программист посмотрел на огни консоли и поиграл с переключателями консоли. Если менее повезло, распечатка памяти была сделана для дальнейшего изучения. В 1960-х годах программисты сократили количество потерянного времени, автоматизировав работу оператора. Программа, называемая операционной системой хранился в компьютере все время.[29]

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

Загрузочная программа

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

Встроенные программы

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

Программы микрокода

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

  1. ^
  2. ^ Дули, Джон Ф. (2013). Краткая история криптологии и криптографических алгоритмов. Springer Science & Business Media. стр. 12-3. ISBN 9783319016283.
  3. ^ Koetsier, Teun (2001), «On the prehistory of programmable machines: musical automata, loms, calculators», Mechanism and Machine Theory, Elsevier, 36 (5): 589-603, doi:10.1016/S0094-114X(01)00005-2.
  4. ^ Капур, Аджай; Карнеги, Дейл; Мерфи, Джим; Лонг, Джейсон (2017). . Организованный Звук. Издательство Кембриджского университета. 22 (2): 195–205. doi:10.1017/S1355771817000103. ISSN 1355-7718.
  5. ^ Ноэль Шарки (2007), Программируемый робот 13 века, Университет Шеффилда
  6. ^ b c Маккартни, Скотт (1999). ENIAC – Триумфы и трагедии Первого в мире компьютера. Уокер и компания. ISBN 978-0-8027-1348-3.
  7. ^ Bromley, Allan G. (1998). (PDF). IEEE Annals of the History of Computing. 20 (4).
  8. ^ Таненбаум, Эндрю С. (1990). Структурированная Компьютерная Организация, Третье Издание. Прентис-Холл, стр. ISBN 978-0-13-854662-5.
  9. ^ Фрэнсис (октябрь–декабрь 2003), «Лавлейс и Бэббидж и создание «записок» 1843года», Анналы истории вычислительнойтехники , 25 (4): 16, 19, 25, doi:10.1109/MAHC.2003.1253887
  10. ^ Rosen, Kenneth H. (1991). Дискретная математика и ее приложения. McGraw-Hill, Inc. ISBN 978-0-07-053744-6.
  11. ^ Linz, Peter (1990). Введение в формальные языки и автоматы. D. C. Heath and Company. p. 234. ISBN 978-0-669-17342-0.
  12. ^ Davis, Martin (2000), Engines of Logic: Mathematics and the origin of the Computer (1st ed.), New York NY: W. W. Norton & Company, ISBN 978-0-393-32229-3, (pb.)
  13. ^ .
  14. ^ b c d Маккартни, Скотт (1999). ENIAC – Триумфы и трагедии Первого в мире компьютера. Уокер и компания. ISBN 978-0-8027-1348-3.
  15. ^ Фринк, Бренда Д. (1 июня 2011 г.). . Гендерные новости. Стэнфордский университет. Архивирован с оригинала 12 марта 2015года . Проверено 22 октября 2018года .
  16. ^ Бартик, Джин Дженнингс (2013). Рикман, Джон; Тодд, Ким Д. (ред.). Пионер-программист: Джин Дженнингс Бартик и компьютер, изменивший мир. Издательство Трумэновского государственного университета.
  17. ^ Enticknap, Nicholas (Summer 1998), «Computing’s Golden Jubilee», Resurrection (20), ISSN 0958-7403, архивировано с оригинала 9 января 2012года . Извлечено 19 апреля 2008 года
  18. ^ b Silberschatz, Abraham (1994). Концепции операционной системы, Четвертое издание. Addison-Wesley. p. 6. ISBN 978-0-201-50480-4.
  19. ^ Таненбаум, Эндрю С. (1990). Структурированная Компьютерная Организация, Третье Издание. Прентис-Холл, стр. ISBN 978-0-13-854662-5.
  20. ^ b Таненбаум, Эндрю С. (1990). Структурированная Компьютерная Организация, Третье Издание. Прентис-Холл, стр. ISBN 978-0-13-854662-5.
  21. ^ Уилсон, Лесли Б. (1993). Сравнительные языки Программирования, Второе издание. Addison-Wesley. p. 75. ISBN 978-0-201-56885-1.
  22. ^ b Уилсон, Лесли Б. (1993). Сравнительные языки Программирования, Второе издание. Addison-Wesley. p. 213. ISBN 978-0-201-56885-1.
  23. ^ Уилсон, Лесли Б. (1993). Сравнительные языки Программирования, Второе издание. Addison-Wesley. p. 244. ISBN 978-0-201-56885-1.
  24. ^ . Проверено 2012-01-10.
  25. ^ Silberschatz, Abraham (1994). Концепции операционной системы, Четвертое издание. Addison-Wesley. p. 97. ISBN 978-0-201-50480-4.
  26. ^ Silberschatz, Abraham (1994). Концепции операционной системы, Четвертое издание. Addison-Wesley. p. 100. ISBN 978-0-201-50480-4.
  27. ^ Ахтер, Шамим (2006). Многоядерное Программирование. Ричард Боулз (Intel Press). Стр. 11-13. ISBN 978-0-9764832-4-3.
  28. ^ Перейти вверх к: a b c Silberschatz, Abraham (1994). Концепции операционной системы, Четвертое издание. Addison-Wesley. p. 1. ISBN 978-0-201-50480-4.
  29. ^ b Таненбаум, Эндрю С. (1990). Структурированная Компьютерная Организация, Третье Издание. Прентис-Холл, стр. ISBN 978-0-13-854662-5.
  30. ^ Silberschatz, Abraham (1994). Концепции операционной системы, Четвертое издание. Addison-Wesley. p. 30. ISBN 978-0-201-50480-4.

Дальнейшее чтение