Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Компьютерное программирование - это процесс проектирования и создания исполняемой компьютерной программы для достижения определенного результата вычислений или выполнения определенной задачи. Программирование включает в себя такие задачи, как: анализ, генерация алгоритмов , точность алгоритмов профилирования и потребление ресурсов, а также реализация алгоритмов на выбранном языке программирования (обычно называемом кодированием ). [1] [2] Исходный код программы написан на одном или нескольких языках, которые понятны для программистов , а не машинный код, который непосредственно выполняется центральным процессором . Цель программирования - найти последовательность инструкций, которая автоматизирует выполнение задачи (которая может быть такой же сложной, как операционная система ) на компьютере , часто для решения данной проблемы. Таким образом, для профессионального программирования часто требуется опыт в нескольких различных предметах, включая знание области приложения , специализированных алгоритмов и формальной логики .

Задачи, сопутствующие программированию и связанные с ним, включают: тестирование , отладку , обслуживание исходного кода , внедрение систем сборки и управление производными артефактами , такими как машинный код компьютерных программ. Их можно рассматривать как часть процесса программирования, но часто термин « разработка программного обеспечения» используется для этого более крупного процесса, а термин « программирование , реализация или кодирование» зарезервирован для фактического написания кода. Программная инженерия сочетает инженерные методы с практикой разработки программного обеспечения. Обратный инжиниринг - это связанный процесс, используемый дизайнерами, аналитиками и программистами для понимания и воссоздания / повторной реализации. [3] : 3

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

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

Программируемые устройства существуют веками. Еще в 9 веке программируемый музыкальный секвенсор был изобретен персидскими братьями Бану Муса , которые описали автоматизированный механический флейтист в Книге изобретательных устройств . [4] [5] В 1206 году арабский инженер Аль-Джазари изобрел программируемую драм-машину, в которой музыкальный механический автомат можно было заставить воспроизводить различные ритмы и паттерны ударных с помощью колышков и кулачков . [6] [7] В 1801 году жаккардовый ткацкий станокмогли производить совершенно другие переплетения, изменяя «программу» - серию картонных карточек с пробитыми в них отверстиями.

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

Первая компьютерная программа , как правило , приурочены к 1843 году, когда математик Ада Лавлейс опубликовал алгоритм для вычисления последовательности чисел Бернулли , предназначенных для осуществляться Чарльз Бэббидж «s Analytical Engine . [9]

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

В 1880-х годах Герман Холлерит изобрел концепцию хранения данных в машиночитаемой форме. [10] Позже панель управления (коммутационная панель ), добавленная к его Табулятору Типа I 1906 года, позволила программировать его для различных заданий, и к концу 1940-х годов оборудование для записи единиц, такое как IBM 602 и IBM 604 , было запрограммировано панелями управления в таким же образом, как и первые электронно-вычислительные машины . Однако с появлением в 1949 году концепции компьютера с хранимыми программами и программы, и данные хранились и обрабатывались в памяти компьютера одинаково . [цитата необходима ]

Машинный язык [ править ]

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

Проводная панель управления для бухгалтерской машины IBM 402 .

Языки компилятора [ править ]

Языки высокого уровня сделали процесс разработки программы более простым и понятным и менее привязанным к базовому оборудованию. FORTRAN , первый широко используемый язык высокого уровня с функциональной реализацией, вышел в 1957 году [11], и вскоре были разработаны многие другие языки, в частности, COBOL, предназначенный для коммерческой обработки данных, и Lisp для компьютерных исследований.

Эти скомпилированные языки позволяют программисту писать программы, используя синтаксически более богатые термины и более способные абстрагироваться от кода, что делает его доступным для различных наборов машинных инструкций с помощью объявлений компиляции и эвристики. Первый компилятор для языка программирования был разработан Грейс Хоппер . [12] Когда Хоппер приступила к работе над UNIVAC в 1949 году, она принесла с собой идею использования компиляторов. [13] [14] Компиляторы используют возможности компьютеров, чтобы упростить программирование [11] , позволяя программистам определять вычисления, вводя формулу, используя инфиксную нотацию (например,Y = X * 2 + 5 * X + 9 ) например. FORTRAN , первый широко используемый язык высокого уровня, имеющий функциональную реализацию, которая позволяла абстрагировать повторно используемые блоки кода, вышел в 1957 году [11], и вскоре были разработаны многие другие языки, в частности COBOL, предназначенный для коммерческой обработки данных, и Lisp для компьютерных исследований. В 1951 году Френсис Е. Холбертон разработала первый генератор сортировки слиянием , которая выбежала на UNIVAC I . [15] Другая женщина, работающая в UNIVAC, Адель Милдред Косс , разработала программу, которая была предшественником генераторов отчетов . [15]Идея создания COBOL возникла в 1959 году, когда Мэри К. Хоуз , работавшая в Burroughs Corporation , организовала встречу для обсуждения создания общего делового языка. [16] Она пригласила шесть человек, в том числе Грейс Хоппер. [16] Хоппер участвовал в разработке COBOL как бизнес-языка и создании «самодокументируемого» программирования. [17] [18] Вклад Хоппер в COBOL был основан на ее языке программирования FLOW-MATIC . [14] В 1961 году Жан Э. Саммет разработал FORMAC, а также опубликовал « Языки программирования: история и основы»., который впоследствии стал стандартной работой по языкам программирования. [16] [19]

Запись исходного кода [ править ]

Программы по-прежнему вводились с использованием перфокарт или бумажной ленты . См. Раздел « Компьютерное программирование в эпоху перфокарт» . К концу 1960-х годов устройства хранения данных и компьютерные терминалы стали достаточно дешевыми, чтобы программы можно было создавать, вводя их непосредственно в компьютеры. Фрэнсис Холбертон создала код, разрешающий ввод с клавиатуры, пока она работала в UNIVAC. [20]

Были разработаны текстовые редакторы, которые позволяли вносить изменения и исправления намного проще, чем с перфокартами. Сестра Мэри Кеннет Келлер занималась разработкой языка программирования BASIC, когда она была аспирантом Дартмута в 1960-х годах. [21] Один из первых объектно-ориентированных языков программирования , Smalltalk , был разработан семью программистами, включая Адель Голдберг , в 1970-х годах. [22]

Современное программирование [ править ]

Требования к качеству [ править ]

Каким бы ни был подход к разработке, окончательная программа должна удовлетворять некоторым фундаментальным свойствам. Следующие свойства являются одними из наиболее важных: [23] [24]

  • Надежность : как часто результаты программы верны. Это зависит от концептуальной правильности алгоритмов и минимизации ошибок программирования, таких как ошибки в управлении ресурсами (например, переполнение буфера и состояния гонки ) и логические ошибки (например, ошибки деления на ноль или ошибки «нет на единицу» ).
  • Надежность : насколько хорошо программа предвидит проблемы из-за ошибок (а не ошибок). Сюда входят такие ситуации, как неправильные, несоответствующие или поврежденные данные, недоступность необходимых ресурсов, таких как память, службы операционной системы и сетевые соединения, ошибка пользователя и неожиданные отключения электроэнергии.
  • Удобство использования : эргономичность программы: легкость, с которой человек может использовать программу по прямому назначению или в некоторых случаях даже для непредвиденных целей. Такие проблемы могут привести к успеху или помешать ему даже вне зависимости от других проблем. Это включает в себя широкий спектр текстовых, графических и иногда аппаратных элементов, которые улучшают ясность, интуитивность, связность и полноту пользовательского интерфейса программы.
  • Переносимость : диапазон компьютерного оборудования и платформ операционных систем, на которых исходный код программы может быть скомпилирован / интерпретирован и запущен. Это зависит от различий в средствах программирования, предоставляемых разными платформами, включая ресурсы оборудования и операционной системы, ожидаемого поведения оборудования и операционной системы, а также наличия компиляторов для конкретных платформ (а иногда и библиотек) для языка исходного кода.
  • Ремонтопригодность : легкость, с которой программа может быть изменена ее нынешними или будущими разработчиками для внесения улучшений или настроек, исправления ошибок и дыр в безопасности или адаптации ее к новым средам. В этом отношении важны передовые методы [25] на начальном этапе разработки. Это качество может не быть очевидным для конечного пользователя, но оно может существенно повлиять на судьбу программы в долгосрочной перспективе.
  • Эффективность / производительность : измерение системных ресурсов, потребляемых программой (время процессора, объем памяти, медленные устройства, такие как диски, пропускная способность сети и, в некоторой степени, даже взаимодействие с пользователем): чем меньше, тем лучше. Это также включает в себя тщательное управление ресурсами, например очистку временных файлов и устранение утечек памяти . Это часто обсуждается в тени выбранного языка программирования. Хотя язык определенно влияет на производительность, даже более медленные языки, такие как Python, может выполнять программы мгновенно с точки зрения человека. Скорость, использование ресурсов и производительность важны для программ, которые создают узкие места в системе, но эффективное использование времени программиста также важно и связано с затратами: большее количество оборудования может быть дешевле.

Читаемость исходного кода [ править ]

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

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

Следование последовательному стилю программирования часто способствует удобочитаемости. Однако удобочитаемость - это больше, чем просто стиль программирования. Многие факторы, мало или совсем не связанные со способностью компьютера эффективно компилировать и выполнять код, способствуют удобочитаемости. [27] Некоторые из этих факторов включают:

  • Различные стили отступа (пробелы)
  • Комментарии
  • Разложение
  • Соглашения об именах для объектов (таких как переменные, классы, процедуры и т. Д.)

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

Различные языки визуального программирования также были разработаны с намерением решить проблемы удобочитаемости путем принятия нетрадиционных подходов к структуре кода и отображению. Интегрированные среды разработки (IDE) стремятся объединить всю такую ​​помощь. Такие методы, как рефакторинг кода, могут улучшить читаемость.

Алгоритмическая сложность [ править ]

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

Шахматные алгоритмы как пример [ править ]

«Программирование компьютера для игры в шахматы» - это статья 1950 года, в которой оценивался «минимаксный» алгоритм, который является частью истории алгоритмической сложности; курс IBM Deep Blue (шахматный компьютер) является частью учебной программы по информатике в Стэнфордском университете . [28]

Методологии [ править ]

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

Популярные методы моделирования включают объектно-ориентированный анализ и проектирование ( OOAD ) и архитектуру, управляемую моделями ( MDA ). Унифицированный язык моделирования ( UML ) - это обозначение, используемое как для OOAD, так и для MDA.

Аналогичный метод, используемый для проектирования баз данных, - это моделирование отношений сущностей ( моделирование ER ).

Методы реализации включают императивные языки ( объектно-ориентированные или процедурные ), функциональные языки и языки логики .

Измерение использования языка [ править ]

Очень сложно определить, какие современные языки программирования самые популярные. Методы измерения популярности языка программирования включают в себя: подсчет количества объявлений о вакансиях, в которых упоминается этот язык, [29] количество проданных книг и курсов, обучающих языку (это переоценивает важность новых языков), а также оценки количества существующих строк. кода, написанного на этом языке (это недооценивает количество пользователей бизнес-языков, таких как COBOL).

Некоторые языки очень популярны для определенных типов приложений, в то время как некоторые языки регулярно используются для написания множества различных типов приложений. Например, COBOL по-прежнему силен в корпоративных центрах обработки данных [30], часто на больших мэйнфреймах , Fortran - в инженерных приложениях, языки сценариев - в веб- разработке и C - во встроенном ПО . Во многих приложениях при создании и использовании используется сочетание нескольких языков. Новые языки обычно разрабатываются на основе синтаксиса предыдущего языка с добавлением новых функций (например, C ++ добавляет объектную ориентацию в C иJava добавляет в C ++ управление памятью и байт-код , но в результате теряет эффективность и возможность низкоуровневых манипуляций).

Отладка [ править ]

Первой известной фактической ошибкой, вызывающей проблему в компьютере, была моль, застрявшая внутри мэйнфрейма Гарварда, что было зарегистрировано в журнале регистрации от 9 сентября 1947 года. [31] «Ошибка» уже была обычным термином для дефекта программного обеспечения, когда это произошло. была обнаружена ошибка.

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

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

Отладка часто выполняется с помощью таких IDE, как Eclipse , Visual Studio , Xcode , Kdevelop , NetBeans и Code :: Blocks . Также используются автономные отладчики, такие как GDB , и они часто предоставляют меньше визуальной среды, обычно с использованием командной строки . Некоторые текстовые редакторы, такие как Emacs, позволяют вызывать GDB через них, чтобы обеспечить визуальную среду.

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

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

Аллен Дауни в своей книге « Как думать как компьютерный ученый» пишет:

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

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

Программисты [ править ]

Компьютерные программисты - это те, кто пишет компьютерное программное обеспечение. В их работу обычно входят:

  • Кодирование
  • Отладка
  • Документация
  • Интеграция
  • Обслуживание
  • Анализ требований
  • Архитектура программного обеспечения
  • Тестирование программного обеспечения
  • Технические характеристики

См. Также [ править ]

  • АККУ
  • Ассоциация вычислительной техники
  • Компьютерная сеть
  • Привет, мир программа
  • Институт аналитиков и программистов
  • Национальная неделя кодирования
  • Системное программирование
  • Компьютерное программирование в эпоху перфокарт
  • Искусство программирования
  • Женщины в вычислительной технике
  • Хронология женщин в вычислениях

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

  1. ^ Беббингтон, Shaun (2014). «Что такое кодирование» . Tumblr . Архивировано 29 апреля 2020 года . Проверено 3 марта 2014 года .CS1 maint: дата и год ( ссылка )
  2. ^ Беббингтон, Shaun (2014). «Что такое программирование» . Tumblr . Архивировано 29 апреля 2020 года . Проверено 3 марта 2014 года .
  3. ^ Eilam Елдад (2005). Реверс: секреты реверс-инжиниринга . Джон Вили и сыновья. ISBN 978-0-7645-7481-8.CS1 maint: использует параметр авторов ( ссылка )
  4. ^ Koetsier, Теун (2001), "О предыстории программируемых машин: музыкальные автоматы, ткацкие станки, калькуляторы", механизм и теория машина , Elsevier, 36 (5): 589-603, DOI : 10.1016 / S0094-114X (01) 00005-2 .
  5. ^ Капур, Аджай; Карнеги, Дейл; Мерфи, Джим; Лонг, Джейсон (2017). «Громкоговорители по желанию: история электроакустической музыки без громкоговорителей» . Организованный звук . Издательство Кембриджского университета . 22 (2): 195–205. DOI : 10.1017 / S1355771817000103 . ISSN 1355-7718 . 
  6. ^ Фаулер, Чарльз Б. (октябрь 1967). «Музей музыки: история механических инструментов». Журнал музыкальных педагогов . 54 (2): 45–49. DOI : 10.2307 / 3391092 . JSTOR 3391092 . S2CID 190524140 .  
  7. ^ Ноэль Шарки (2007), Программируемый робот 13-го века , Университет Шеффилда
  8. ^ Дули, Джон Ф. (2013). Краткая история криптологии и криптографических алгоритмов . Springer Science & Business Media. С. 12–3. ISBN 9783319016283.
  9. ^ Fuegi, J .; Фрэнсис, Дж. (2003). «Лавлейс и Бэббидж и создание« заметок » 1843 года ». IEEE Annals of the History of Computing . 25 (4): 16. DOI : 10,1109 / MAHC.2003.1253887 .
  10. ^ да Круз, Франк (10 марта 2020 г.). "История вычислительной техники Колумбийского университета - Герман Холлерит" . Колумбийский университет . Columbia.edu. Архивировано 29 апреля 2020 года . Проверено 25 апреля 2010 года .
  11. ^ a b c Бергштейн, Брайан (20 марта 2007 г.). «Создатель Fortran Джон Бэкус умирает» . NBC News . Архивировано 29 апреля 2020 года . Проверено 25 апреля 2010 года .
  12. ^ Смит 2013 , стр. 6.
  13. ^ Ceruzzi 1998 , стр. 84-85.
  14. ^ а б Гюрер 1995 , стр. 176.
  15. ^ а б Гюрер 1995 , стр. 177.
  16. ^ a b c Gürer 1995 , стр. 179.
  17. ^ Смит 2013 , стр. 7.
  18. ^ Ceruzzi 1998 , стр. 92.
  19. ^ "Компьютерные власти говорить здесь" . The Times . 9 апреля 1972 . Проверено 13 октября 2018 г. - через Newspapers.com.
  20. ^ "Фрэнсис Холбертон, пионер компьютерных языков, умирает" . Курьер-журнал . 12 декабря 2001 . Проверено 13 октября 2018 г. - через Newspapers.com.
  21. ^ Gürer 1995 , стр. 180-181.
  22. ^ "Адель Голдберг" . Университет Мэриленда, Колледж-Парк . Проверено 14 октября 2018 года .
  23. ^ «NIST для разработки облачной дорожной карты» . Информационная неделя . 5 ноября 2010 г. Инициатива в области вычислительной техники направлена ​​на устранение препятствий на пути внедрения облачных технологий в области безопасности, взаимодействия, переносимости и надежности.
  24. ^ "На чем это основано". ComputerWorld . 9 апреля 1984 г. с. 13. Основано ли это на ... Надежности Портативности. Совместимость
  25. ^ «Программирование 101: Советы, чтобы стать хорошим программистом - Мудрый Компьютерщик» . Мудрость Компьютерщик . 19 мая 2016 года . Проверено 23 мая 2016 года .
  26. ^ Elshoff, Джеймс Л .; Маркотти, Майкл (1982). «Улучшение читабельности компьютерных программ для облегчения модификации». Коммуникации ACM . 25 (8): 512–521. DOI : 10.1145 / 358589.358596 . S2CID 30026641 . 
  27. ^ Несколько (вики). «Читаемость» . Докфорж . Архивировано 29 апреля 2020 года . Проверено 30 января 2010 года .
  28. ^ Пих, Крис. «Глубокий синий» . В 1950 году Клод Шеннон опубликовал ... "Программирование компьютера для игры в шахматы", ... "минимаксный" алгоритм.
  29. ^ Enticknap, Николай (11 сентября 2007). «Еженедельный опрос ИТ-зарплат по протоколу SSL / Computer: финансовый бум стимулирует рост рабочих мест в ИТ» .
  30. Митчелл, Роберт (21 мая 2012 г.). «Утечка мозгов Кобола» . Компьютерный мир . Проверено 9 мая 2015 года .
  31. Фотография любезно предоставлена ​​Центром надводной войны ВМС, Дальгрен, Вирджиния, из National Geographic, сентябрь 1947 г.

Источники [ править ]

  • Ceruzzi, Пол Э. (1998). История вычислительной техники . Кембридж, Массачусетс: MIT Press. ISBN 9780262032551 - через EBSCOhost.
  • Эванс, Клэр Л. (2018). Широкий диапазон: нерассказанная история женщин, которые сделали Интернет . Нью-Йорк: Портфолио / Пингвин. ISBN 9780735211759.
  • Гюрер, Дениз (1995). «Женщины-первопроходцы в области компьютерных наук» (PDF) . Коммуникации ACM . 38 (1): 45–54. DOI : 10.1145 / 204865.204875 . S2CID  6626310 .
  • Смит, Эрика Э. (2013). «Признание коллективного наследования через историю женщин в вычислительной технике» . CLCWeb: Сравнительная литература и культура: журнал WWWeb . 15 (1): 1–9 - через EBSCOhost.

Дальнейшее чтение [ править ]

  • AK Hartmann, Практическое руководство по компьютерному моделированию , Сингапур: World Scientific (2009)
  • А. Хант, Д. Томас и У. Каннингем, Программист-прагматик. От подмастерья к мастеру , Амстердам: Эддисон-Уэсли Лонгман (1999)
  • Брайан В. Керниган, Практика программирования , Пирсон (1999)
  • Вайнберг, Джеральд М. , Психология компьютерного программирования , Нью-Йорк: Ван Ностранд Рейнхольд (1971)
  • Эдсгер В. Дейкстра , Дисциплина программирования , Прентис-Холл (1976)
  • О.-Дж. Даль, EWDijkstra , CAR Hoare, Структурированное программирование , Academic Press (1972)
  • Дэвид Грис , Наука программирования , Springer-Verlag (1981)

Внешние ссылки [ править ]

  • СМИ, связанные с компьютерным программированием, на Викискладе?
  • Цитаты, связанные с программированием на Викицитатнике
  • Программная инженерия в Curlie