Компьютер — это машина , которую можно запрограммировать на автоматическое выполнение последовательностей арифметических или логических операций ( вычислений ). Современные цифровые электронные компьютеры могут выполнять общие наборы операций, известные как программы . Эти программы позволяют компьютерам выполнять широкий спектр задач. Термин «компьютерная система» может относиться к номинально укомплектованному компьютеру, который включает в себя аппаратное обеспечение , операционную систему , программное обеспечение и периферийное оборудование, необходимое и используемое для полноценной работы; или к группе компьютеров, которые связаны и функционируют вместе, например, компьютерная сеть или компьютерный кластер .
В широком спектре промышленных и потребительских товаров компьютеры используются в качестве систем управления . Включены простые устройства специального назначения, такие как микроволновые печи и пульты дистанционного управления , а также заводские устройства, такие как промышленные роботы и системы автоматизированного проектирования , а также устройства общего назначения, такие как персональные компьютеры и мобильные устройства, такие как смартфоны . Компьютеры питают Интернет , который объединяет миллиарды компьютеров и пользователей.
Первые компьютеры предназначались для использования только для вычислений. Простые ручные инструменты, такие как счеты, с древних времен помогали людям производить вычисления. В начале промышленной революции были созданы некоторые механические устройства для автоматизации длительных и утомительных задач, таких как создание направляющих для ткацких станков . В начале 20 века более сложные электрические машины выполняли специализированные аналоговые вычисления. Во время 2-й мировой войны были разработаны первые цифровые электронные вычислительные машины , как электромеханические , так и с использованием термоэмиссионных ламп . За первыми полупроводниковыми транзисторами в конце 1940-х годов последовали кремниевые МОП-транзисторы ( МОП-транзисторы) и технологии монолитных интегральных микросхем в конце 1950-х годов, что привело к революции микропроцессоров и микрокомпьютеров в 1970-х годах. С тех пор скорость, мощность и универсальность компьютеров резко возросли, при этом количество транзисторов увеличивалось быстрыми темпами ( закон Мура отмечает, что их количество удваивается каждые два года), что привело к цифровой революции в конце 20-го - начале 21-го веков.
Традиционно современный компьютер состоит по крайней мере из одного процессорного элемента , обычно центрального процессора (ЦП) в форме микропроцессора, вместе с компьютерной памятью определенного типа , обычно полупроводниковыми микросхемами памяти. Элемент обработки выполняет арифметические и логические операции, а блок секвенирования и управления может изменять порядок операций в ответ на сохраненную информацию . Периферийные устройства включают устройства ввода (клавиатуры, мыши, джойстик и т. д.), устройства вывода (экраны мониторов, принтеры и т. д.) и устройства ввода/вывода, выполняющие обе функции (например, сенсорный экран 2000-х годов ). Периферийные устройства позволяют получать информацию из внешнего источника, а также сохранять и извлекать результаты операций.
Согласно Оксфордскому словарю английского языка , первое известное использование компьютера было в книге английского писателя Ричарда Брэтуэйта « The Yong Mans Gleanings» 1613 года : «Я [ sic ] читал самый настоящий компьютер Times и лучшего арифметика, который когда-либо был [ sic ] дунул, и сократил дни твои». Такое использование термина относилось к человеческому компьютеру , человеку, который выполнял расчеты или вычисления. Это слово сохраняло то же значение до середины 20 века. Во второй половине этого периода женщин часто нанимали в качестве компьютеров, потому что им могли платить меньше, чем их коллегам-мужчинам. [1] К 1943 году большинство людей-компьютеров составляли женщины. [2]
В онлайн-словаре этимологии приводится первое засвидетельствованное использование компьютера в 1640-х годах, что означает «тот, кто считает»; это «существительное агента от вычисления (v.)». В онлайн-словаре этимологии говорится, что этот термин в значении « вычислительная машина» (любого типа) используется с 1897 года. Онлайн -словарь этимологии указывает, что «современное использование» этого термина для обозначения «программируемого цифрового электронного компьютера» датируется «1945 годом под этим названием; [в] теоретическом [смысле] с 1937 года как машина Тьюринга ». [3]
Устройства использовались для облегчения вычислений на протяжении тысячелетий, в основном используя прямую переписку с пальцами . Самое раннее счетное устройство, скорее всего, представляло собой форму счетной палочки . Более поздние средства ведения учета на территории Плодородного полумесяца включали исчисления (глиняные сферы, конусы и т. д.), которые представляли собой количество предметов, вероятно, домашнего скота или зерна, запечатанных в полых необожженных глиняных контейнерах. [a] [4] Одним из примеров является использование счетных стержней .
Первоначально счеты использовались для решения арифметических задач . Римские счеты были созданы на основе устройств, использовавшихся в Вавилонии еще в 2400 году до нашей эры. С тех пор было изобретено множество других форм счетных досок или таблиц. В средневековой европейской счетной конторе на стол клали клетчатую ткань и перемещали по ней маркеры в соответствии с определенными правилами, чтобы облегчить расчет денежных сумм. [5]
По словам Дерека Дж. де Соллы Прайса , механизм Антикитера считается самым ранним из известных механических аналоговых компьютеров . [6] Он был разработан для расчета астрономических позиций. Он был обнаружен в 1901 году на месте крушения Антикиферы у греческого острова Антикитера , между Киферой и Критом , и был датирован примерно ок. 100 г. до н.э. Устройства, сравнимые по сложности с антикитерским механизмом, не появлялись до четырнадцатого века. [7]
Многие механические средства вычислений и измерений были созданы для астрономических и навигационных целей. Планисфера — это звездная карта , изобретенная Абу Райханом аль-Бируни в начале 11 века. [8] Астролябия была изобретена в эллинистическом мире либо в I, либо во II веках до нашей эры, и ее часто приписывают Гиппарху . Комбинация планисферы и диоптры , астролябия фактически представляла собой аналоговый компьютер, способный решать несколько различных задач сферической астрономии . Астролябия, включающая механический календарный компьютер [9] [10] и зубчатые колеса, была изобретена Аби Бакром из Исфахана , Персия , в 1235 году . [11] Абу Райхан аль-Бируни изобрел первую астролябию с лунно-солнечным календарем с механическим приводом, [12 ] ранняя стационарная машина для обработки знаний [13] с зубчатой передачей и зубчатыми колесами, [14] c. 1000 год нашей эры .
Сектор , вычислительный инструмент, используемый для решения задач на пропорции, тригонометрию, умножение и деление, а также для различных функций, таких как квадраты и кубические корни, был разработан в конце 16 века и нашел применение в артиллерийском деле, геодезии и навигации.
Планиметр представлял собой ручной инструмент для расчета площади замкнутой фигуры путем обводки ее с помощью механической связи .
Логарифмическая линейка была изобретена около 1620–1630 годов английским священнослужителем Уильямом Отредом , вскоре после публикации понятия логарифма . Это аналоговый компьютер с ручным управлением, предназначенный для умножения и деления. По мере развития логарифмической линейки добавлялись шкалы, обеспечивающие обратные величины, квадраты и квадратные корни, кубы и кубические корни, а также трансцендентные функции, такие как логарифмы и экспоненты, круговая и гиперболическая тригонометрия и другие функции . Для быстрого выполнения рутинных вычислений до сих пор используются логарифмические линейки со специальными шкалами, например, круглая логарифмическая линейка E6B , используемая для расчета времени и расстояния на легких самолетах.
В 1770-х годах Пьер Жаке-Дро , швейцарский часовщик , построил механическую куклу ( автомат ), которая могла писать, держась за перо. Изменяя количество и порядок его внутренних колес, можно было создавать разные буквы и, следовательно, разные сообщения. По сути, его можно было механически «запрограммировать» на чтение инструкций. Вместе с двумя другими сложными машинами кукла находится в Музее искусства и истории в Невшателе , Швейцария , и работает до сих пор. [15]
В 1831–1835 годах математик и инженер Джованни Плана изобрел машину с вечным календарем , которая с помощью системы шкивов, цилиндров и более могла предсказывать вечный календарь на каждый год от 0 н. э. (то есть 1 до н. э.) до 4000 н. э. отслеживание високосных лет и различной продолжительности дня. Машина для прогнозирования приливов, изобретенная шотландским ученым сэром Уильямом Томсоном в 1872 году, оказала большую помощь в навигации на мелководье. Он использовал систему шкивов и проводов для автоматического расчета прогнозируемых уровней прилива на определенный период в определенном месте.
Дифференциальный анализатор , механический аналоговый компьютер, предназначенный для решения дифференциальных уравнений путем интегрирования , использовал механизмы колеса и диска для выполнения интегрирования. В 1876 году сэр Уильям Томсон уже обсуждал возможную конструкцию таких калькуляторов, но его остановил ограниченный выходной крутящий момент шарико -дисковых интеграторов . [16] В дифференциальном анализаторе выходные данные одного интегратора управляли входными данными следующего интегратора или отображали выходные данные в виде графика. Усилитель крутящего момента стал достижением, позволившим этим машинам работать. Начиная с 1920-х годов Ванневар Буш и другие разработали механические дифференциальные анализаторы.
В 1890-х годах испанский инженер Леонардо Торрес Кеведо начал разрабатывать серию передовых аналоговых машин , которые могли решать действительные и сложные корни многочленов , [17] [18] [19] [20] , которые были опубликованы в 1901 году Парижской академией . наук . [21]
Чарльз Бэббидж , английский инженер-механик и эрудит , придумал концепцию программируемого компьютера. Считающийся « отцом компьютера » [22] он разработал концепцию и изобрел первый механический компьютер в начале 19 века.
После работы над своей разностной машиной он объявил о своем изобретении в 1822 году в докладе Королевскому астрономическому обществу под названием «Заметки о применении машин для вычисления астрономических и математических таблиц» [23] . расчетов, в 1833 году он понял, что возможна гораздо более общая конструкция — аналитическая машина . Ввод программ и данных должен был осуществляться в машину через перфокарты , метод, который использовался в то время для управления механическими ткацкими станками , такими как жаккардовые ткацкие станки . Для вывода у машины будет принтер, плоттер и звонок. Машина также сможет наносить числа на карты, чтобы их можно было прочитать позже. Двигатель включал в себя арифметико-логический блок , поток управления в форме условного ветвления и циклов , а также встроенную память , что делало его первой конструкцией компьютера общего назначения, которую в современных терминах можно было бы описать как полную по Тьюрингу . [24] [25]
Машина опередила свое время примерно на столетие. Все детали для его машины приходилось изготавливать вручную – это была серьезная проблема для устройства, состоящего из тысяч деталей. В конце концов, проект был распущен по решению британского правительства о прекращении финансирования. Неспособность Бэббиджа завершить аналитическую машину можно объяснить главным образом политическими и финансовыми трудностями, а также его желанием разработать все более совершенный компьютер и двигаться вперед быстрее, чем кто-либо другой мог бы последовать за ним. Тем не менее, его сын, Генри Бэббидж , в 1888 году завершил упрощенную версию вычислительного блока аналитической машины ( мельницу ). В 1906 году он успешно продемонстрировал ее использование в вычислительных таблицах.
В своей работе «Очерки по автоматике» , опубликованной в 1914 году, Леонардо Торрес Кеведо написал краткую историю усилий Бэббиджа по созданию механической разностной машины и аналитической машины. Он описал аналитическую машину как пример своей теории о потенциальной мощности машин и воспринимает проблему разработки такой машины как вызов своим навыкам изобретателя электромеханических устройств. В статье представлена конструкция машины, способной полностью автоматически вычислять значение формулы для последовательности наборов значений задействованных переменных. Вся машина должна была управляться программой, доступной только для чтения , которая была оснащена средствами условного ветвления . Он также представил идею арифметики с плавающей запятой . [26] [27] [28] В 1920 году, чтобы отпраздновать 100-летие изобретения арифмометра , Торрес представил в Париже электромеханический арифмометр , который состоял из арифметического устройства, подключенного к (возможно, удаленному) пишущей машинке, на котором подаются команды можно было напечатать, а результаты распечатать автоматически, [29] [30] [31] демонстрируя возможность создания электромеханического аналитического двигателя. [32]
В первой половине 20-го века многие потребности в научных вычислениях удовлетворялись все более совершенными аналоговыми компьютерами, которые использовали прямую механическую или электрическую модель задачи в качестве основы для вычислений . Однако они не поддавались программированию и, как правило, не обладали универсальностью и точностью современных цифровых компьютеров. [33] Первым современным аналоговым компьютером была машина для прогнозирования приливов и отливов , изобретенная сэром Уильямом Томсоном (позже ставшим лордом Кельвином) в 1872 году. Дифференциальный анализатор — механический аналоговый компьютер, предназначенный для решения дифференциальных уравнений путем интегрирования с использованием колеса и колеса. Дисковые механизмы были задуманы в 1876 году Джеймсом Томсоном , старшим братом более известного сэра Уильяма Томсона. [16]
Искусство механических аналоговых вычислений достигло своего апогея с появлением дифференциального анализатора , созданного Х.Л. Хейзеном и Ванневаром Бушем в Массачусетском технологическом институте начиная с 1927 года. Он был основан на механических интеграторах Джеймса Томсона и усилителях крутящего момента, изобретенных Х.В. Ниманом. Дюжина таких устройств была построена до того, как их устаревание стало очевидным. К 1950-м годам успех цифровых электронных компьютеров положил конец большинству аналоговых вычислительных машин, но аналоговые компьютеры продолжали использоваться и в 1950-е годы в некоторых специализированных приложениях, таких как образование ( логарифмическая линейка ) и авиация ( системы управления ).
К 1938 году ВМС США разработали электромеханический аналоговый компьютер, достаточно маленький, чтобы его можно было использовать на борту подводной лодки . Это был компьютер данных торпед , который использовал тригонометрию для решения задачи стрельбы торпедой по движущейся цели. Во время Второй мировой войны подобные устройства разрабатывались и в других странах.
Ранние цифровые компьютеры были электромеханическими ; электрические переключатели приводили в действие механические реле для выполнения вычислений. Эти устройства имели низкую рабочую скорость и в конечном итоге были вытеснены гораздо более быстрыми полностью электрическими компьютерами, первоначально использовавшими электронные лампы . Z2 , созданный немецким инженером Конрадом Цузе в 1939 году в Берлине , был одним из первых примеров электромеханического релейного компьютера. [34]
В 1941 году Цузе вслед за своей предыдущей машиной создал Z3 , первый в мире работающий электромеханический программируемый , полностью автоматический цифровой компьютер. [37] [38] Z3 был построен с 2000 реле , реализующими длину слова 22 бита , которые работали на тактовой частоте около 5–10 Гц . [39] Программный код поставлялся на перфорированной пленке , а данные можно было хранить в 64 словах памяти или вводить с клавиатуры. В некоторых отношениях он был очень похож на современные машины и стал пионером в многочисленных достижениях, таких как числа с плавающей запятой . Вместо более сложной в реализации десятичной системы (использовавшейся в более ранней конструкции Чарльза Бэббиджа ) использование двоичной системы означало, что машины Цузе было легче построить и потенциально более надежными, учитывая технологии, доступные в то время. [40] Z3 сам по себе не был универсальным компьютером, но его можно было расширить до Тьюринга. [41] [42]
Следующий компьютер Цузе, Z4 , стал первым в мире коммерческим компьютером; после первоначальной задержки из-за Второй мировой войны он был завершен в 1950 году и доставлен в ETH Zurich . [43] Компьютер был изготовлен собственной компанией Цузе, Zuse KG , которая была основана в 1941 году как первая компания с единственной целью разработки компьютеров в Берлине. [43]
Чисто электронные элементы схемы вскоре заменили их механические и электромеханические эквиваленты, в то же время цифровые вычисления заменили аналоговые. Инженер Томми Флауэрс , работавший на исследовательской станции почтового отделения в Лондоне в 1930-х годах, начал исследовать возможности использования электроники для телефонной станции . Экспериментальное оборудование, построенное им в 1934 году, вошло в эксплуатацию пять лет спустя, превратив часть телефонной сети в систему электронной обработки данных, использующую тысячи электронных ламп . [33] В США Джон Винсент Атанасов и Клиффорд Э. Берри из Университета штата Айова разработали и испытали компьютер Атанасова-Берри (ABC) в 1942 году, [44] первый «автоматический электронный цифровой компьютер». [45] Эта конструкция также была полностью электронной и использовала около 300 электронных ламп с конденсаторами, закрепленными в механически вращающемся барабане для памяти. [46]
Во время Второй мировой войны британские взломщики кодов в Блетчли-парке добились ряда успехов во взломе зашифрованных немецких военных сообщений. Немецкая шифровальная машина «Энигма» сначала была атакована с помощью электромеханических бомб , которыми часто управляли женщины. [47] [48] Чтобы взломать более сложную немецкую машину Lorenz SZ 40/42 , используемую для армейской связи высокого уровня, Макс Ньюман и его коллеги поручили Флауэрсу построить Колосс . [46] С начала февраля 1943 года он потратил одиннадцать месяцев на проектирование и постройку первого Колосса. [49] После функциональных испытаний в декабре 1943 года «Колосс» был отправлен в Блетчли-Парк, куда он был доставлен 18 января 1944 года [50] и атаковал свое первое сообщение 5 февраля. [46]
Colossus был первым в мире электронным цифровым программируемым компьютером. [33] В нем использовалось большое количество клапанов (вакуумных ламп). Он имел ввод на бумажной ленте и мог быть настроен на выполнение различных логических операций над своими данными, но он не был полным по Тьюрингу. Было построено девять Mk II Colossus (Mk I был переоборудован в Mk II, всего было выпущено десять машин). Colossus Mark I содержал 1500 термоэмиссионных клапанов (трубок), но Mark II с 2400 клапанами был в пять раз быстрее и проще в эксплуатации, чем Mark I, что значительно ускоряло процесс декодирования. [51] [52]
ENIAC [53] (электронный числовой интегратор и компьютер) был первым электронным программируемым компьютером, построенным в США. Хотя ENIAC был похож на Colossus, он был намного быстрее, гибче и был полным по Тьюрингу . Как и в случае с Колоссом, «программа» ENIAC определялась состояниями его соединительных кабелей и переключателей, что сильно отличалось от электронных машин с хранимой программой , которые появились позже. После того как программа была написана, ее нужно было механически установить в машину с ручной переустановкой вилок и переключателей. Программистами ENIAC были шесть женщин, часто известных под общим названием «девочки ENIAC». [54] [55]
Он сочетал в себе высокую скорость электроники с возможностью программирования для решения многих сложных задач. Он мог складывать или вычитать 5000 раз в секунду, в тысячу раз быстрее, чем любая другая машина. У него также были модули умножения, деления и извлечения квадратного корня. Высокоскоростная память была ограничена 20 словами (около 80 байт). Разработка и строительство ENIAC , построенного под руководством Джона Мочли и Дж. Преспера Эккерта в Пенсильванском университете, продолжались с 1943 года до полной эксплуатации в конце 1945 года. Машина была огромной, весила 30 тонн, потребляла 200 киловатт электроэнергии и содержал более 18 000 электронных ламп, 1500 реле и сотни тысяч резисторов, конденсаторов и катушек индуктивности. [56]
Принцип современного компьютера был предложен Аланом Тьюрингом в его основополагающей статье 1936 года «О вычислимых числах » . Тьюринг предложил простое устройство, которое он назвал «Универсальной вычислительной машиной» и которое теперь известно как универсальная машина Тьюринга . Он доказал, что такая машина способна вычислять все, что можно вычислить, выполняя инструкции (программы), хранящиеся на ленте, что позволяет программировать машину. Фундаментальной концепцией конструкции Тьюринга является хранимая программа , в которой все инструкции для вычислений хранятся в памяти. Фон Нейман признал, что центральная концепция современного компьютера возникла благодаря этой статье. [58] Машины Тьюринга по сей день являются центральным объектом изучения теории вычислений . За исключением ограничений, налагаемых их ограниченным объемом памяти, современные компьютеры считаются полными по Тьюрингу , то есть они обладают возможностями выполнения алгоритмов, эквивалентными универсальной машине Тьюринга.
Ранние вычислительные машины имели фиксированные программы. Изменение его функции потребовало перемонтажа и перестройки машины. [46] С появлением компьютера с хранимой программой ситуация изменилась. Компьютер с хранимой программой по своей конструкции включает в себя набор инструкций и может хранить в памяти набор инструкций ( программу ), подробно описывающих вычисления . Теоретическая основа компьютера с хранимой программой была заложена Аланом Тьюрингом в его статье 1936 года. В 1945 году Тьюринг присоединился к Национальной физической лаборатории и начал работу над разработкой электронного цифрового компьютера с хранимой программой. Его отчет 1945 года «Предлагаемый электронный калькулятор» был первой спецификацией такого устройства. Джон фон Нейман из Пенсильванского университета также распространил свой первый проект отчета о EDVAC в 1945 году. [33]
Manchester Baby был первым в мире компьютером с хранимой программой . Он был построен в Манчестерском университете в Англии Фредериком К. Уильямсом , Томом Килберном и Джеффом Тутиллом и запустил свою первую программу 21 июня 1948 года. [59] Он был спроектирован как испытательный стенд для трубки Уильямса , первого случайного генератора. доступ к цифровому запоминающему устройству. [60] Хотя в ретроспективе 1998 года компьютер был описан как «маленький и примитивный», это была первая работающая машина, содержащая все элементы, необходимые для современного электронного компьютера. [61] Как только Baby продемонстрировал осуществимость своей конструкции, в университете начался проект по превращению его в практически полезный компьютер Manchester Mark 1 .
Mark 1, в свою очередь, быстро стал прототипом Ferranti Mark 1 , первого в мире коммерчески доступного компьютера общего назначения. [62] Построенный Ферранти , он был доставлен в Манчестерский университет в феврале 1951 года. По крайней мере семь из этих более поздних машин были доставлены в период с 1953 по 1957 год, одна из них - в лаборатории Shell в Амстердаме . [63] В октябре 1947 года директора британской кейтеринговой компании J. Lyons & Company решили принять активное участие в содействии коммерческому развитию компьютеров. Компьютер LEO I компании Lyons , созданный по образцу кембриджского EDSAC 1949 года, вступил в строй в апреле 1951 года [64] и выполнил первую в мире рутинную работу на офисном компьютере .
Грейс Хоппер была первой, кто разработал компилятор языка программирования. [2]
Концепция полевого транзистора была предложена Юлиусом Эдгаром Лилиенфельдом в 1925 году. Джон Бардин и Уолтер Браттейн , работая под руководством Уильяма Шокли в Bell Labs , в 1947 году построили первый рабочий транзистор — транзистор с точечным контактом , за которым последовали биполярным переходным транзистором Шокли в 1948 году. [65] [66] С 1955 года транзисторы заменили электронные лампы в компьютерных конструкциях, что привело к появлению «второго поколения» компьютеров. По сравнению с электронными лампами транзисторы имеют много преимуществ: они меньше по размеру и требуют меньше энергии, чем электронные лампы, поэтому выделяют меньше тепла. Соединительные транзисторы были намного надежнее электронных ламп и имели более длительный и неограниченный срок службы. Транзисторные компьютеры могут содержать десятки тысяч двоичных логических схем в относительно компактном пространстве. Однако первые переходные транзисторы были относительно громоздкими устройствами, которые было трудно производить в массовом производстве , что ограничивало их ряд специализированных применений. [67]
В Манчестерском университете группа под руководством Тома Килберна спроектировала и построила машину, использующую недавно разработанные транзисторы вместо ламп. [68] Их первый транзисторный компьютер и первый в мире был введен в эксплуатацию к 1953 году , а вторая версия была завершена там же в апреле 1955 года. Однако машина использовала лампы для генерации тактовых сигналов частотой 125 кГц и в схемах. читать и писать в памяти на магнитном барабане , поэтому это был не первый полностью транзисторный компьютер. Этой наградой обладает Harwell CADET 1955 года, [69] построенный отделом электроники Научно-исследовательского института атомной энергии в Харвелле . [69] [70]
Металл -оксид-кремниевый полевой транзистор (MOSFET), также известный как МОП-транзистор, был изобретен Мохамедом М. Аталлой и Давоном Кангом в Bell Labs в 1959 году. [71] Это был первый по-настоящему компактный транзистор, который можно было миниатюризированы и производятся серийно для широкого спектра применений. [67] Благодаря своей высокой масштабируемости , [72] и значительно более низкому энергопотреблению и более высокой плотности, чем у биполярных транзисторов, [73] МОП-транзисторы позволили создавать интегральные схемы высокой плотности . [74] [75] Помимо обработки данных, это также позволило практическое использование МОП-транзисторов в качестве элементов хранения данных , что привело к разработке полупроводниковой МОП-памяти , которая заменила более раннюю память с магнитным сердечником в компьютерах. MOSFET привел к революции микрокомпьютеров [76] и стал движущей силой компьютерной революции . [77] [78] МОП-транзистор является наиболее широко используемым транзистором в компьютерах, [79] [80] и является фундаментальным строительным блоком цифровой электроники . [81]
Следующим большим достижением в области вычислительной мощности стало появление интегральных схем (ИС). Идея интегральной схемы была впервые высказана ученым-радиологом, работающим в Королевском радиолокационном учреждении Министерства обороны , Джеффри В.А. Даммером . Даммер представил первое публичное описание интегральной схемы на Симпозиуме по прогрессу в области качественных электронных компонентов в Вашингтоне, округ Колумбия , 7 мая 1952 года. [82]
Первые работающие микросхемы были изобретены Джеком Килби из Texas Instruments и Робертом Нойсом из Fairchild Semiconductor . [83] Килби записал свои первоначальные идеи относительно интегральной схемы в июле 1958 года, успешно продемонстрировав первый работающий интегральный пример 12 сентября 1958 года. [84] В своей заявке на патент от 6 февраля 1959 года Килби описал свое новое устройство как «тело полупроводниковый материал... в котором все компоненты электронной схемы полностью интегрированы». [85] [86] Однако изобретение Килби представляло собой гибридную интегральную схему (гибридную ИС), а не монолитную интегральную схему (ИС) чип. [87] Микросхема Килби имела внешние проводные соединения, что затрудняло ее массовое производство. [88]
Нойс также придумал свою собственную идею интегральной схемы на полгода позже Килби. [89] Изобретение Нойса было первым по-настоящему монолитным микросхемой. [90] [88] Его чип решал многие практические проблемы, которых не было у Килби. Произведенный на Fairchild Semiconductor, он был изготовлен из кремния , тогда как чип Килби был изготовлен из германия . Монолитная ИС Нойса была изготовлена с использованием планарного процесса , разработанного его коллегой Жаном Эрни в начале 1959 года. В свою очередь, планарный процесс был основан на работе Мохамеда М. Аталлы по пассивации поверхности полупроводников диоксидом кремния в конце 1950-х годов. [91] [92] [93]
Современные монолитные ИС представляют собой преимущественно интегральные схемы МОП ( металл-оксид-полупроводник ), построенные из МОП-транзисторов (МОП-транзисторов). [94] Самая ранняя экспериментальная МОП-ИС, которая была изготовлена, была 16-транзисторная микросхема, созданная Фредом Хейманом и Стивеном Хофштейном в RCA в 1962 году . [95] Компания General Microelectronics позже представила первую коммерческую МОП-ИС в 1964 году, [96] разработанную Робертом Норман. [95] После разработки МОП-транзистора с самовыравнивающимся затвором (кремниевым затвором) Робертом Кервином, Дональдом Кляйном и Джоном Сараче в Bell Labs в 1967 году Федерико разработал первую МОП -ИС с кремниевым затвором и самовыравнивающимися затворами. Фаггином из Fairchild Semiconductor в 1968 году. [97] С тех пор МОП-транзистор стал наиболее важным компонентом устройства в современных ИС. [94]
Разработка интегральной схемы МОП привела к изобретению микропроцессора [ 98 ] [99] и ознаменовала взрыв в коммерческом и личном использовании компьютеров. Хотя вопрос о том, какое именно устройство было первым микропроцессором, является спорным, отчасти из-за отсутствия согласия по точному определению термина «микропроцессор», в значительной степени неоспоримо, что первым однокристальным микропроцессором был Intel 4004 , [100] разработан и реализован Федерико Фаггином с использованием его технологии МОП-ИС с кремниевым затвором [98] совместно с Тедом Хоффом , Масатоши Шимой и Стэнли Мазором из Intel . [b] [102] В начале 1970-х годов технология МОП-ИС позволила объединить более 10 000 транзисторов на одном кристалле. [75]
Система на чипе (SoC) — это полноценный компьютер на микрочипе (или чипе) размером с монету. [103] Они могут иметь или не иметь встроенную оперативную и флэш-память . Если ОЗУ не интегрировано, ОЗУ обычно размещается непосредственно над (известное как «Пакет на упаковке ») или под (на противоположной стороне печатной платы ) SoC, а флэш-память обычно размещается рядом с SoC, и все это делается для того, чтобы повысить скорость передачи данных, поскольку сигналам данных не приходится преодолевать большие расстояния. Со времен ENIAC в 1945 году компьютеры значительно продвинулись вперед: современные SoC (такие как Snapdragon 865) имеют размер монеты, но при этом в сотни тысяч раз мощнее ENIAC, объединяют миллиарды транзисторов и потребляют всего несколько ватт. власти.
Первые мобильные компьютеры были тяжелыми и работали от сети. IBM 5100 весом 50 фунтов (23 кг) был ранним примером. Более поздние портативные устройства, такие как Osborne 1 и Compaq Portable , были значительно легче, но их все равно нужно было подключать к сети. Первые ноутбуки, такие как Grid Compass , устранили это требование за счет включения батарей, а также с продолжающейся миниатюризацией вычислительных ресурсов и развитием портативных устройств. Время автономной работы, популярность портативных компьютеров в 2000-х годах возросла. [104] Те же разработки позволили производителям интегрировать вычислительные ресурсы в сотовые мобильные телефоны к началу 2000-х годов.
Эти смартфоны и планшеты работают под управлением различных операционных систем и в последнее время стали доминирующими вычислительными устройствами на рынке. [105] Они питаются от системы на чипе (SoC), которая представляет собой полноценный компьютер на микрочипе размером с монету. [103]
Компьютеры можно классифицировать по разным признакам, в том числе:
Термин « аппаратное обеспечение» охватывает все те части компьютера, которые являются материальными физическими объектами. Схемы , компьютерные чипы, графические карты, звуковые карты, память (ОЗУ), материнская плата, дисплеи, блоки питания, кабели, клавиатуры, принтеры и устройства ввода «мыши» — все это аппаратные средства.
Компьютер общего назначения состоит из четырех основных компонентов: арифметико-логического устройства (АЛУ), блока управления , памяти и устройств ввода и вывода (вместе называемых вводом-выводом). Эти части соединены между собой шинами , часто состоящими из групп проводов . Внутри каждой из этих частей находятся от тысяч до триллионов небольших электрических цепей , которые можно включать и выключать с помощью электронного переключателя . Каждая схема представляет бит (двоичную цифру) информации, поэтому, когда схема включена, она представляет «1», а когда выключена, она представляет «0» (в представлении положительной логики). Схемы организованы в виде логических элементов , так что одна или несколько схем могут управлять состоянием одной или нескольких других схем.
Когда необработанные данные передаются на компьютер с помощью устройств ввода, данные обрабатываются и отправляются на устройства вывода. Устройства ввода могут быть ручными или автоматизированными. Процесс обработки в основном регулируется процессором. Некоторые примеры устройств ввода:
Средства, с помощью которых компьютер выдает выходные данные, известны как устройства вывода. Некоторые примеры устройств вывода:
Блок управления (часто называемый системой управления или центральным контроллером) управляет различными компонентами компьютера; он читает и интерпретирует (декодирует) инструкции программы, преобразуя их в управляющие сигналы, которые активируют другие части компьютера. [d] Системы управления в современных компьютерах могут изменять порядок выполнения некоторых инструкций для повышения производительности.
Ключевым компонентом, общим для всех процессоров, является счетчик программ , специальная ячейка памяти ( регистр ), которая отслеживает, из какого места в памяти должна быть прочитана следующая инструкция. [э]
Функция системы управления заключается в следующем — это упрощенное описание, и некоторые из этих шагов могут выполняться одновременно или в другом порядке в зависимости от типа ЦП:
Поскольку программный счетчик (концептуально) представляет собой просто еще один набор ячеек памяти, его можно изменить посредством вычислений, выполняемых в АЛУ. Добавление 100 к счетчику программы приведет к чтению следующей инструкции с места, находящегося на 100 позиций дальше по программе. Инструкции, которые изменяют счетчик программ, часто называются «переходами» и допускают циклы (инструкции, которые повторяются компьютером) и часто условное выполнение инструкций (оба примера потока управления ).
Последовательность операций, которые выполняет блок управления для обработки инструкции, сама по себе подобна короткой компьютерной программе, и действительно, в некоторых более сложных конструкциях ЦП имеется еще один компьютер, еще меньшего размера, называемый микросеквенсором, который запускает программу микрокода , которая вызывает все эти события произойдут.
Блок управления, АЛУ и регистры вместе называются центральным процессором (ЦП). Ранние процессоры состояли из множества отдельных компонентов. С 1970-х годов центральные процессоры обычно создавались на базе одной интегральной микросхемы МОП, называемой микропроцессором .
АЛУ способно выполнять два класса операций: арифметические и логические. [110] Набор арифметических операций, которые поддерживает конкретное АЛУ, может быть ограничен сложением и вычитанием или может включать в себя умножение, деление, тригонометрические функции, такие как синус, косинус и т. д., а также квадратные корни . Некоторые могут работать только с целыми числами ( целыми числами ), в то время как другие используют плавающую запятую для представления действительных чисел , хотя и с ограниченной точностью. Однако любой компьютер, способный выполнять только самые простые операции, можно запрограммировать так, чтобы разбивать более сложные операции на простые шаги, которые он может выполнить. Следовательно, любой компьютер можно запрограммировать на выполнение любой арифметической операции, хотя это займет больше времени, если его АЛУ не поддерживает эту операцию напрямую. АЛУ также может сравнивать числа и возвращать логические значения истинности (истина или ложь) в зависимости от того, равно ли одно другому, больше или меньше («64 больше, чем 65?»). Логические операции включают булеву логику : AND , OR , XOR и NOT . Они могут быть полезны для создания сложных условных операторов и обработки логической логики .
Суперскалярные компьютеры могут содержать несколько ALU, что позволяет им обрабатывать несколько инструкций одновременно. [111] Графические процессоры и компьютеры с функциями SIMD и MIMD часто содержат ALU, которые могут выполнять арифметические операции с векторами и матрицами .
Память компьютера можно рассматривать как список ячеек, в которые можно помещать или читать числа. Каждая ячейка имеет пронумерованный «адрес» и может хранить одно число. Компьютеру можно дать указание «поместить число 123 в ячейку с номером 1357» или «прибавить число, находящееся в ячейке 1357, к числу, находящемуся в ячейке 2468, и поместить ответ в ячейку 1595». Информация, хранящаяся в памяти, может представлять собой практически что угодно. Буквы, цифры и даже компьютерные инструкции можно с одинаковой легкостью поместить в память. Поскольку ЦП не различает различные типы информации, ответственность программного обеспечения заключается в том, чтобы придать значение тому, что память воспринимает как не что иное, как серию чисел.
Почти во всех современных компьютерах каждая ячейка памяти настроена на хранение двоичных чисел группами по восемь бит (называемыми байтами ). Каждый байт может представлять 256 различных чисел (2 8 = 256); либо от 0 до 255, либо от -128 до +127. Для хранения больших чисел можно использовать несколько последовательных байтов (обычно два, четыре или восемь). Когда требуются отрицательные числа, они обычно сохраняются в виде дополнения до двух . Возможны и другие варианты, но они обычно не рассматриваются вне специализированных приложений или исторического контекста. Компьютер может хранить в памяти любой вид информации, если ее можно представить в числовом виде. Современные компьютеры имеют миллиарды или даже триллионы байт памяти.
ЦП содержит специальный набор ячеек памяти, называемых регистрами , которые можно читать и записывать гораздо быстрее, чем в область основной памяти. Обычно имеется от двух до ста регистров в зависимости от типа ЦП. Регистры используются для наиболее часто используемых элементов данных, чтобы избежать необходимости обращаться к основной памяти каждый раз, когда необходимы данные. Поскольку обработка данных ведется постоянно, уменьшение необходимости доступа к основной памяти (которая часто медленнее по сравнению с АЛУ и блоками управления) значительно увеличивает скорость компьютера.
Основная память компьютера бывает двух основных разновидностей:
Оперативная память может быть прочитана и записана в любое время, когда процессор подает ей команду, но в ПЗУ предварительно загружены данные и программное обеспечение, которые никогда не изменяются, поэтому ЦП может только читать из нее. ПЗУ обычно используется для хранения инструкций по первоначальному запуску компьютера. Как правило, содержимое ОЗУ стирается при отключении питания компьютера, но ПЗУ сохраняет свои данные на неопределенный срок. В ПК ПЗУ содержит специализированную программу, называемую BIOS , которая организует загрузку операционной системы компьютера с жесткого диска в ОЗУ при каждом включении или перезагрузке компьютера. Во встроенных компьютерах , которые часто не имеют дисковых накопителей, все необходимое программное обеспечение может храниться в ПЗУ. Программное обеспечение, хранящееся в ПЗУ, часто называют прошивкой , поскольку теоретически оно больше похоже на аппаратное обеспечение, чем на программное обеспечение. Флэш-память стирает различие между ПЗУ и ОЗУ, поскольку сохраняет данные при выключении, но при этом может перезаписываться. Однако обычно он намного медленнее, чем обычные ПЗУ и ОЗУ, поэтому его использование ограничено приложениями, где высокая скорость не требуется. [ф]
В более сложных компьютерах может быть одна или несколько кэш-памятей RAM , которые работают медленнее, чем регистры, но быстрее, чем основная память. Обычно компьютеры с таким типом кеша предназначены для автоматического перемещения часто необходимых данных в кеш, часто без необходимости какого-либо вмешательства со стороны программиста.
Ввод-вывод — это средство, с помощью которого компьютер обменивается информацией с внешним миром. [113] Устройства, обеспечивающие ввод или вывод данных в компьютер, называются периферийными устройствами . [114] Периферийные устройства типичного персонального компьютера включают в себя устройства ввода, такие как клавиатура и мышь , и устройства вывода, такие как дисплей и принтер . Жесткие диски , дисководы гибких дисков и приводы оптических дисков служат устройствами ввода и вывода. Компьютерные сети — это еще одна форма ввода-вывода. Устройства ввода-вывода часто сами по себе представляют собой сложные компьютеры с собственным процессором и памятью. Графический процессор может содержать пятьдесят или более крошечных компьютеров, выполняющих вычисления, необходимые для отображения 3D-графики . [ нужна цитация ] Современные настольные компьютеры содержат множество компьютеров меньшего размера, которые помогают основному процессору выполнять ввод-вывод. Плоский экран 2016 года выпуска содержит собственную компьютерную схему.
Хотя компьютер можно рассматривать как запускающую одну гигантскую программу, хранящуюся в его основной памяти, в некоторых системах необходимо создать видимость одновременного запуска нескольких программ. Это достигается за счет многозадачности, то есть быстрого переключения компьютера между запуском каждой программы по очереди. [115] Одним из способов, с помощью которого это делается, является специальный сигнал, называемый прерыванием , который может периодически заставлять компьютер прекращать выполнение инструкций там, где он был, и вместо этого делать что-то другое. Помня, где оно выполнялось до прерывания, компьютер может вернуться к этой задаче позже. Если несколько программ запущены «одновременно». тогда генератор прерываний может вызывать несколько сотен прерываний в секунду, каждый раз вызывая переключение программы. Поскольку современные компьютеры обычно выполняют инструкции на несколько порядков быстрее, чем человеческое восприятие, может показаться, что одновременно выполняется множество программ, хотя в любой момент времени выполняется только одна. Этот метод многозадачности иногда называют «разделением времени», поскольку каждой программе по очереди выделяется «кусок» времени. [116]
До наступления эры недорогих компьютеров основное применение многозадачности заключалось в том, чтобы позволить множеству людей использовать один и тот же компьютер. Казалось бы, многозадачность приведет к тому, что компьютер, переключающийся между несколькими программами, будет работать медленнее, прямо пропорционально количеству запущенных на нем программ, но большинство программ проводят большую часть своего времени в ожидании, пока медленные устройства ввода-вывода завершат свои задачи. Если программа ожидает, пока пользователь щелкнет мышью или нажмет клавишу на клавиатуре, то она не будет принимать «отрезок времени», пока не произойдет событие, которого она ожидает. Это освобождает время для выполнения других программ, поэтому многие программы могут выполняться одновременно без неприемлемой потери скорости.
Некоторые компьютеры спроектированы так, чтобы распределять свою работу между несколькими процессорами в многопроцессорной конфигурации. Этот метод когда-то использовался только в больших и мощных машинах, таких как суперкомпьютеры , мейнфреймы и серверы . Многопроцессорные и многоядерные (несколько процессоров на одной интегральной схеме) персональные и портативные компьютеры теперь широко доступны и в результате все чаще используются на рынках нижнего уровня.
Суперкомпьютеры, в частности, часто имеют весьма уникальную архитектуру, которая значительно отличается от базовой архитектуры хранимых программ и от компьютеров общего назначения. [g] Они часто оснащены тысячами процессоров, настраиваемыми высокоскоростными соединениями и специализированным вычислительным оборудованием. Такие конструкции, как правило, полезны только для специализированных задач из-за большого масштаба организации программы, необходимой для одновременного использования большей части доступных ресурсов. Суперкомпьютеры обычно используются в крупномасштабном моделировании , графическом рендеринге и криптографии , а также в других так называемых « поразительно параллельных » задачах.
Программное обеспечение относится к частям компьютера, не имеющим материальной формы, таким как программы, данные, протоколы и т. д. Программное обеспечение — это та часть компьютерной системы, которая состоит из закодированной информации или компьютерных инструкций, в отличие от физического оборудования , из которого система построена. Компьютерное программное обеспечение включает в себя компьютерные программы, библиотеки и связанные с ними неисполняемые данные , такие как онлайн-документация или цифровые носители . Его часто делят на системное программное обеспечение и прикладное программное обеспечение . Компьютерное оборудование и программное обеспечение требуют друг друга, и ни одно из них невозможно использовать отдельно. Когда программное обеспечение хранится на аппаратном обеспечении, которое невозможно легко модифицировать, например, в ПЗУ BIOS на компьютере , совместимом с IBM PC , его иногда называют «прошивкой».
Существуют тысячи различных языков программирования: некоторые из них предназначены для общего назначения, другие полезны только для узкоспециализированных приложений.
Определяющей особенностью современных компьютеров, отличающей их от всех других машин, является то, что их можно программировать . То есть компьютеру можно дать некоторый тип инструкций ( программу ), и он их обработает. Современные компьютеры, основанные на архитектуре фон Неймана, часто имеют машинный код в виде императивного языка программирования . На практике компьютерная программа может состоять всего из нескольких инструкций или включать в себя многие миллионы инструкций, как, например, программы для текстовых процессоров и веб-браузеров . Типичный современный компьютер может выполнять миллиарды инструкций в секунду ( гигафлопс ) и редко допускает ошибки за многие годы работы. Написание больших компьютерных программ, состоящих из нескольких миллионов инструкций, может занять у команд программистов годы, и из-за сложности задачи почти наверняка содержат ошибки.
Этот раздел относится к наиболее распространенным компьютерам с оперативной памятью .
В большинстве случаев инструкции компьютера просты: добавить одно число к другому, переместить некоторые данные из одного места в другое, отправить сообщение на какое-либо внешнее устройство и т. д. Эти инструкции считываются из памяти компьютера и обычно выполняются ( исполняются ). в том порядке, в котором они были даны. Однако обычно существуют специальные инструкции, которые предписывают компьютеру перейти вперед или назад к другому месту программы и продолжить выполнение оттуда. Они называются инструкциями «перехода» (или ветвями ). Более того, инструкции перехода могут выполняться условно , чтобы можно было использовать разные последовательности инструкций в зависимости от результата некоторых предыдущих вычислений или какого-либо внешнего события. Многие компьютеры напрямую поддерживают подпрограммы , предоставляя тип перехода, который «запоминает» место, из которого он был выполнен, и другую инструкцию для возврата к инструкции, следующей за этой инструкцией перехода.
Выполнение программы можно сравнить с чтением книги. Хотя человек обычно читает каждое слово и строку последовательно, иногда он может вернуться к более раннему месту в тексте или пропустить разделы, которые не представляют интереса. Точно так же компьютер может иногда возвращаться и повторять инструкции в каком-то разделе программы снова и снова, пока не будет выполнено какое-то внутреннее условие. Это называется потоком управления внутри программы, и именно это позволяет компьютеру многократно выполнять задачи без вмешательства человека.
Для сравнения, человек, использующий карманный калькулятор, может выполнить базовую арифметическую операцию, например, сложить два числа, всего за несколько нажатий кнопок. Но чтобы сложить все числа от 1 до 1000, потребуются тысячи нажатий кнопок и много времени, причем с почти наверняка допущенной ошибкой. С другой стороны, компьютер можно запрограммировать на это с помощью всего лишь нескольких простых инструкций. Следующий пример написан на ассемблере MIPS :
Begin: addi $8 , $0 , 0 # инициализировать сумму до 0 addi $9 , $0 , 1 # установить первое число для добавления = 1 цикл: slti $10 , $9 , 1000 # проверить, меньше ли число 1000, начиная с $10 , $0 , Finish # если нечетное число больше n, то выходим из add $8 , $8 , $9 # обновляем сумму addi $9 , $9 , 1 # получаем следующее число j цикл # повторяем процесс суммирования завершаем: добавляем $2 , $8 , $0 # помещаем сумму в выходной регистр
Получив команду запустить эту программу, компьютер будет выполнять повторяющуюся задачу сложения без дальнейшего вмешательства человека. Он практически никогда не ошибается и современный ПК может выполнить задачу за доли секунды.
В большинстве компьютеров отдельные инструкции хранятся в виде машинного кода , причем каждой инструкции присваивается уникальный номер (код операции или для краткости код операции ). Команда сложения двух чисел будет иметь один код операции; команда их умножения будет иметь другой код операции и так далее. Простейшие компьютеры способны выполнять любую из нескольких различных инструкций; более сложные компьютеры имеют на выбор несколько сотен, каждый из которых имеет уникальный числовой код. Поскольку память компьютера способна хранить числа, она также может хранить коды инструкций. Это приводит к тому важному факту, что целые программы (которые представляют собой просто списки этих инструкций) могут быть представлены в виде списков чисел, и ими можно манипулировать внутри компьютера так же, как и числовыми данными. Фундаментальная концепция хранения программ в памяти компьютера вместе с данными, с которыми они работают, является сутью архитектуры фон Неймана, или архитектуры хранимой программы. [118] [119] В некоторых случаях компьютер может хранить часть или всю свою программу в памяти, которая хранится отдельно от данных, с которыми он работает. Это называется Гарвардской архитектурой в честь компьютера Harvard Mark I. Современные компьютеры фон Неймана в своей конструкции демонстрируют некоторые черты гарвардской архитектуры, например, кэш-память ЦП .
Хотя можно писать компьютерные программы в виде длинных списков чисел ( машинный язык ), и хотя этот метод использовался на многих ранних компьютерах, [h] на практике это чрезвычайно утомительно и потенциально подвержено ошибкам, особенно для сложных программ. . Вместо этого каждой базовой инструкции можно дать короткое имя, указывающее на ее функцию и легко запоминающееся – мнемоническое обозначение, такое как ADD, SUB, MULT или JUMP. Эта мнемоника известна под общим названием «язык ассемблера компьютера» . Преобразование программ, написанных на языке ассемблера, в то, что компьютер действительно может понять (машинный язык), обычно выполняется с помощью компьютерной программы, называемой ассемблером.
Языки программирования предоставляют различные способы указания программ для запуска на компьютерах. В отличие от естественных языков , языки программирования спроектированы таким образом, чтобы не допускать двусмысленности и быть краткими. Это чисто письменные языки, и их часто трудно читать вслух. Обычно они либо транслируются в машинный код компилятором или ассемблером перед запуском, либо транслируются интерпретатором непосредственно во время выполнения . Иногда программы выполняются гибридным методом двух методов.
Машинные языки и языки ассемблера, которые их представляют (совместно называемые языками программирования низкого уровня ), как правило, уникальны для конкретной архитектуры центрального процессора компьютера ( ЦП ). Например, процессор с архитектурой ARM (например, который можно найти в смартфоне или портативной видеоигре ) не может понимать машинный язык процессора x86 , который может быть в ПК . [i] Исторически было создано и широко использовалось значительное количество других архитектур процессоров, в частности, MOS Technology 6502 и 6510 в дополнение к Zilog Z80.
Написание длинных программ на языке ассемблера, хотя и значительно проще, чем на машинном языке, часто представляет собой трудную задачу, а также подвержено ошибкам. Поэтому большинство практических программ пишутся на более абстрактных языках программирования высокого уровня , которые способны более удобно выражать потребности программиста ( и тем самым помогают уменьшить ошибки программиста). Языки высокого уровня обычно «компилируются» в машинный язык (или иногда в язык ассемблера, а затем в машинный язык) с помощью другой компьютерной программы, называемой компилятором . [j] Языки высокого уровня в меньшей степени связаны с работой целевого компьютера, чем язык ассемблера, и в большей степени связаны с языком и структурой проблемы(й), которую необходимо решить в конечной программе. Поэтому часто можно использовать разные компиляторы для перевода одной и той же программы на языке высокого уровня на машинный язык множества разных типов компьютеров. Это часть средств, с помощью которых программное обеспечение, такое как видеоигры, может быть доступно для различных компьютерных архитектур, таких как персональные компьютеры и различные игровые консоли .
Разработка небольших программ относительно проста и включает в себя анализ проблемы, сбор входных данных, использование программных конструкций внутри языков, разработку или использование установленных процедур и алгоритмов, предоставление данных для устройств вывода и решений проблемы, если это применимо. [120] По мере того, как проблемы становятся больше и сложнее, встречаются такие функции, как подпрограммы, модули, формальная документация и новые парадигмы, такие как объектно-ориентированное программирование. [121] Большие программы, включающие тысячи строк кода и более, требуют формальных методологий программного обеспечения. [122] Задача разработки больших программных систем представляет собой значительную интеллектуальную задачу. [123] Производство программного обеспечения с приемлемо высокой надежностью в рамках предсказуемого графика и бюджета исторически было трудным; [124] Академическая и профессиональная дисциплина разработки программного обеспечения концентрируется именно на этой проблеме. [125]
Ошибки в компьютерных программах называются « багами ». Они могут быть безобидными и не влиять на полезность программы или иметь лишь незначительные последствия. Однако в некоторых случаях они могут привести к тому, что программа или вся система «зависнут » , перестанут реагировать на вводимые данные, такие как щелчки мыши или нажатия клавиш, полностью перестанут работать или дадут сбой . [126] В противном случае неопасные ошибки иногда могут быть использованы со злым умыслом недобросовестным пользователем, написавшим эксплойт , код, предназначенный для того, чтобы воспользоваться ошибкой и нарушить правильную работу компьютера. Ошибки обычно возникают не по вине компьютера. Поскольку компьютеры просто выполняют данные им инструкции, ошибки почти всегда являются результатом ошибки программиста или недосмотра, допущенного при разработке программы. [k] Адмиралу Грейс Хоппер , американскому ученому-компьютерщику и разработчику первого компилятора , приписывают то, что он впервые использовал термин «ошибки» в вычислениях после того, как в сентябре 1947 года была обнаружена дохлая моль, закоротившая реле в компьютере Harvard Mark II . [127]
Компьютеры использовались для координации информации между несколькими местами с 1950-х годов. Система SAGE вооруженных сил США стала первым крупномасштабным примером такой системы, что привело к созданию ряда коммерческих систем специального назначения, таких как Sabre . [128] В 1970-х годах компьютерные инженеры исследовательских институтов по всей территории США начали объединять свои компьютеры с помощью телекоммуникационных технологий. Эта работа финансировалась ARPA (ныне DARPA ), а созданная в результате компьютерная сеть получила название ARPANET . [129] Технологии, которые сделали Arpanet возможным, распространялись и развивались.
Со временем сеть распространилась за пределы академических и военных учреждений и стала известна как Интернет. Появление сетей повлекло за собой переопределение природы и границ компьютера. Компьютерные операционные системы и приложения были модифицированы, чтобы включить возможность определять и получать доступ к ресурсам других компьютеров в сети, таким как периферийные устройства, хранимая информация и т.п., как расширения ресурсов отдельного компьютера. Первоначально эти возможности были доступны в первую очередь людям, работающим в высокотехнологичных средах, но в 1990-х годах распространение таких приложений, как электронная почта и Всемирная паутина , в сочетании с развитием дешевых и быстрых сетевых технологий, таких как Ethernet и ADSL , привело к созданию компьютерных сетей. стали почти повсеместными. Фактически, количество компьютеров, подключенных к сети, растет феноменально. Очень большая часть персональных компьютеров регулярно подключаются к Интернету для общения и получения информации. «Беспроводные» сети, часто использующие сети мобильных телефонов, привели к тому, что сетевые технологии становятся все более повсеместными даже в средах мобильных компьютеров.
Компьютер не обязательно должен быть электронным , иметь процессор , оперативную память или даже жесткий диск . Хотя популярное использование слова «компьютер» является синонимом персонального электронного компьютера, [l] типичное современное определение компьютера звучит так: « Устройство, которое выполняет вычисления , особенно программируемая [обычно] электронная машина, выполняющая высокоскоростные математические или логические операции или которые собирают, хранят, сопоставляют или иным образом обрабатывают информацию». [130] Согласно этому определению, любое устройство, обрабатывающее информацию, квалифицируется как компьютер.
Ведутся активные исследования по созданию неклассических компьютеров из многих многообещающих новых типов технологий, таких как оптические компьютеры , ДНК-компьютеры , нейронные компьютеры и квантовые компьютеры . Большинство компьютеров универсальны и способны вычислять любую вычислимую функцию и ограничены только объемом памяти и скоростью работы. Однако компьютеры разных конструкций могут давать очень разную производительность для решения конкретных задач; например, квантовые компьютеры потенциально могут очень быстро взломать некоторые современные алгоритмы шифрования (с помощью квантового факторинга ).
Существует множество типов компьютерных архитектур :
Из всех этих абстрактных машин квантовый компьютер является наиболее многообещающим для революции в вычислениях. [131] Логические вентили — это распространенная абстракция, которая может применяться к большинству вышеупомянутых цифровых или аналоговых парадигм. Способность хранить и выполнять списки инструкций, называемых программами, делает компьютеры чрезвычайно универсальными, отличая их от калькуляторов . Тезис Чёрча -Тьюринга представляет собой математическое утверждение этой универсальности: любой компьютер с минимальными возможностями (будучи полным по Тьюрингу) в принципе способен выполнять те же задачи, что и любой другой компьютер. Таким образом, любой тип компьютера ( нетбук , суперкомпьютер , клеточный автомат и т. д.) способен выполнять одни и те же вычислительные задачи, если имеется достаточно времени и емкости памяти.
Компьютер будет решать проблемы именно так, как он запрограммирован, независимо от эффективности, альтернативных решений, возможных сокращений или возможных ошибок в коде. Компьютерные программы, которые обучаются и адаптируются, являются частью развивающейся области искусственного интеллекта и машинного обучения . Продукты, основанные на искусственном интеллекте, обычно делятся на две основные категории: системы, основанные на правилах , и системы распознавания образов . Системы, основанные на правилах, пытаются представить правила, используемые людьми-экспертами, и их разработка, как правило, обходится дорого. Системы, основанные на шаблонах, используют данные о проблеме для формирования выводов. Примеры систем, основанных на шаблонах, включают распознавание голоса , распознавание шрифтов, перевод и развивающуюся область онлайн-маркетинга.
Поскольку использование компьютеров распространилось по всему обществу, растет число профессий, связанных с компьютерами.
Потребность в том, чтобы компьютеры хорошо работали вместе и могли обмениваться информацией, породила потребность во многих организациях по стандартизации, клубах и обществах как формального, так и неформального характера.
Конрад Цузе получил полуофициальный титул «изобретателя современного компьютера»
[
кто?
]
фон Нейман... твердо подчеркнул мне и, я уверен, другим, что фундаментальная концепция принадлежит Тьюрингу - насколько это не было предвосхищено Бэббиджем, Лавлейсом и другими.Письмо Стэнли Франкеля Брайану Рэнделлу , 1972 год.
Относительная простота и малое энергопотребление МОП-транзисторов способствовали современной микрокомпьютерной революции.
Это называется архитектурой хранимой программы или моделью хранимой программы, также известной как архитектура фон Неймана. Мы будем использовать эти термины взаимозаменяемо.
Опыт SAGE помог создать первую по-настоящему крупномасштабную коммерческую сеть реального времени: компьютеризированную систему бронирования авиабилетов SABRE.