Вычислительная техника — это любая целенаправленная деятельность, требующая, получающая выгоду или создающая вычислительную технику . [1] Она включает в себя изучение и экспериментирование алгоритмических процессов, а также разработку как аппаратного , так и программного обеспечения. Вычислительная техника имеет научные, инженерные, математические, технологические и социальные аспекты. Основные дисциплины вычислительной техники включают компьютерную инженерию , информатику, кибербезопасность, науку о данных , информационные системы, информационные технологии и программную инженерию. [2]
Термин «вычислительная техника» также является синонимом подсчета и вычисления . В более ранние времена он использовался по отношению к действию, выполняемому механическими вычислительными машинами , а до этого — к человеческим компьютерам. [3]
История вычислений длиннее истории вычислительного оборудования и включает в себя историю методов, предназначенных для пера и бумаги (или для мела и грифельной доски) с помощью таблиц или без них. Вычисления тесно связаны с представлением чисел, хотя математические концепции, необходимые для вычислений, существовали до систем счисления . Самым ранним известным инструментом для использования в вычислениях является абак , и считается, что он был изобретен в Вавилоне примерно между 2700 и 2300 годами до нашей эры. Абаки, более современной конструкции, до сих пор используются в качестве инструментов для вычислений.
Первое зафиксированное предложение об использовании цифровой электроники в вычислениях было представлено в статье 1931 года «Использование тиратронов для высокоскоростного автоматического подсчета физических явлений» К. Э. Уинна-Вильямса . [4] В статье Клода Шеннона 1938 года « Символический анализ релейных и коммутационных схем » была представлена идея использования электроники для булевых алгебраических операций.
Концепция полевого транзистора была предложена Юлиусом Эдгаром Лилиенфельдом в 1925 году. Джон Бардин и Уолтер Браттейн , работая под руководством Уильяма Шокли в Bell Labs , построили первый рабочий транзистор , точечно-контактный транзистор , в 1947 году. [5] [6] В 1953 году Манчестерский университет построил первый транзисторный компьютер , Manchester Baby . [7] Однако первые транзисторы с плоскими переходами были относительно громоздкими устройствами, которые было трудно производить массово, что ограничивало их применение рядом специализированных приложений. [8]
В 1957 году Фрош и Дерик смогли изготовить первые полевые транзисторы на основе диоксида кремния в Bell Labs, первые транзисторы, в которых сток и исток были смежными на поверхности. [9] Впоследствии группа продемонстрировала работающий МОП-транзистор в Bell Labs в 1960 году. [10] [11] МОП-транзистор позволил создавать интегральные схемы высокой плотности , [12] [13] что привело к тому, что известно как компьютерная революция [14] или микрокомпьютерная революция . [15]
Компьютер — это машина, которая манипулирует данными в соответствии с набором инструкций, называемых компьютерной программой . [16] Программа имеет исполняемую форму, которую компьютер может использовать напрямую для выполнения инструкций. Та же программа в ее исходном коде , понятном человеку , позволяет программисту изучать и разрабатывать последовательность шагов, известную как алгоритм . [17] Поскольку инструкции могут выполняться на разных типах компьютеров, один набор исходных инструкций преобразуется в машинные инструкции в соответствии с типом ЦП . [18]
Процесс выполнения выполняет инструкции в компьютерной программе. Инструкции выражают вычисления, выполняемые компьютером. Они запускают последовательности простых действий на исполняющей машине. Эти действия производят эффекты в соответствии с семантикой инструкций.
Аппаратное обеспечение компьютера включает в себя физические части компьютера, включая центральный процессор , память и ввод/вывод . [19] Вычислительная логика и архитектура компьютера являются ключевыми темами в области аппаратного обеспечения компьютера. [20] [21]
Программное обеспечение компьютера, или просто программное обеспечение , представляет собой набор компьютерных программ и связанных с ними данных, которые предоставляют инструкции компьютеру. Программное обеспечение относится к одной или нескольким компьютерным программам и данным, хранящимся в памяти компьютера. Это набор программ, процедур, алгоритмов, а также их документация , связанная с работой системы обработки данных. [ необходима цитата ] Программное обеспечение выполняет функцию программы , которую оно реализует, либо напрямую предоставляя инструкции компьютерному оборудованию, либо выступая в качестве входных данных для другого программного обеспечения. Термин был придуман для противопоставления старому термину аппаратное обеспечение (означающее физические устройства). В отличие от оборудования, программное обеспечение нематериально. [22]
Термин «программное обеспечение» иногда используется в более узком смысле, подразумевая только прикладное программное обеспечение.
Системное программное обеспечение, или системное программное обеспечение, — это компьютерное программное обеспечение, предназначенное для работы и управления компьютерным оборудованием, а также для предоставления платформы для запуска прикладного программного обеспечения. Системное программное обеспечение включает операционные системы , служебное программное обеспечение , драйверы устройств , оконные системы и встроенное ПО . Часто используемые инструменты разработки, такие как компиляторы , компоновщики и отладчики, классифицируются как системное программное обеспечение. [23] Системное программное обеспечение и промежуточное программное обеспечение управляют и интегрируют возможности компьютера, но обычно не применяют их напрямую при выполнении задач, которые приносят пользу пользователю, в отличие от прикладного программного обеспечения.
Прикладное программное обеспечение, также известное как приложение или приложение , — это компьютерное программное обеспечение, разработанное для помощи пользователю в выполнении определенных задач. Примерами являются корпоративное программное обеспечение , бухгалтерское программное обеспечение , офисные пакеты , графическое программное обеспечение и медиаплееры . Многие прикладные программы в основном работают с документами . [24] Приложения могут быть связаны с компьютером и его системным программным обеспечением или могут быть опубликованы отдельно. Некоторые пользователи удовлетворены связанными приложениями и им никогда не нужно устанавливать дополнительные приложения. Системное программное обеспечение управляет оборудованием и обслуживает приложение, которое, в свою очередь, обслуживает пользователя.
Прикладное программное обеспечение использует возможности конкретной вычислительной платформы или системного программного обеспечения для определенной цели. Некоторые приложения, такие как Microsoft Office , разрабатываются в нескольких версиях для нескольких различных платформ; другие имеют более узкие требования и, как правило, упоминаются по платформе, на которой они работают. Например, географическое приложение для Windows или приложение Android для образования или игр Linux . Приложения, которые работают только на одной платформе и увеличивают желательность этой платформы из-за популярности приложения, известны как killer applications . [25]
Компьютерная сеть, часто называемая просто сетью, представляет собой набор аппаратных компонентов и компьютеров, соединенных между собой каналами связи, которые позволяют совместно использовать ресурсы и информацию. [26] Когда хотя бы один процесс в одном устройстве может отправлять или получать данные в или из хотя бы одного процесса, находящегося в удаленном устройстве, говорят, что эти два устройства находятся в сети. Сети можно классифицировать по широкому спектру характеристик, таких как среда, используемая для передачи данных, используемый протокол связи , масштаб, топология и организационная сфера.
Коммуникационные протоколы определяют правила и форматы данных для обмена информацией в компьютерной сети и обеспечивают основу для сетевого программирования . Одним из известных коммуникационных протоколов является Ethernet , аппаратный и канальный стандарт, который повсеместно распространен в локальных сетях . Другим распространенным протоколом является Internet Protocol Suite , который определяет набор протоколов для межсетевого взаимодействия, т. е. для передачи данных между несколькими сетями, передачи данных от хоста к хосту и форматов передачи данных, специфичных для приложений. [27]
Компьютерные сети иногда считаются подразделом электротехники , телекоммуникаций, информатики , информационных технологий или компьютерной инженерии , поскольку они опираются на теоретическое и практическое применение этих дисциплин. [28]
Интернет — это глобальная система взаимосвязанных компьютерных сетей , использующих стандартный набор протоколов Интернета (TCP/IP) для обслуживания миллиардов пользователей. Сюда входят миллионы частных, общественных, академических, деловых и правительственных сетей, масштаб которых варьируется от локального до глобального. Эти сети связаны широким спектром электронных, беспроводных и оптических сетевых технологий. Интернет несет в себе широкий спектр информационных ресурсов и услуг, таких как взаимосвязанные гипертекстовые документы Всемирной паутины и инфраструктура для поддержки электронной почты. [29]
Программирование компьютеров — это процесс написания, тестирования, отладки и поддержки исходного кода и документации компьютерных программ. Этот исходный код написан на языке программирования , который является искусственным языком , который часто более ограничен, чем естественные языки , но легко транслируется компьютером. Программирование используется для вызова некоторого желаемого поведения (настройки) из машины. [30]
Написание высококачественного исходного кода требует знания как области компьютерных наук, так и области, в которой будет использоваться приложение. Таким образом, программное обеспечение высочайшего качества часто разрабатывается командой экспертов в определенной области, каждый из которых является специалистом в определенной области разработки. [31] Однако термин «программист» может применяться к диапазону качества программ, от хакера до разработчика открытого исходного кода и профессионала. Также возможно, что один программист сделает большую часть или все компьютерное программирование, необходимое для создания доказательства концепции для запуска нового убойного приложения . [32]
Программист, компьютерный программист или кодер — это человек, который пишет компьютерное программное обеспечение. Термин компьютерный программист может относиться к специалисту в одной области компьютерного программирования или к универсалу, который пишет код для многих видов программного обеспечения. Тот, кто практикует или исповедует формальный подход к программированию, может также быть известен как программист-аналитик. [ требуется ссылка ] Основной компьютерный язык программиста ( C , C++ , Java , Lisp , Python и т. д.) часто добавляется к вышеуказанным должностям, а те, кто работает в веб-среде, часто добавляют к своим должностям префикс Web . Термин программист может использоваться для обозначения разработчика программного обеспечения , инженера-программиста, компьютерного ученого или аналитика программного обеспечения . Однако представители этих профессий обычно обладают другими навыками в области разработки программного обеспечения, помимо программирования. [33]
Компьютерная индустрия состоит из предприятий, занимающихся разработкой программного обеспечения, проектированием компьютерного оборудования и инфраструктур компьютерных сетей , производством компьютерных компонентов и предоставлением услуг в области информационных технологий, включая системное администрирование и обслуживание. [ необходима ссылка ]
Индустрия программного обеспечения включает в себя предприятия, занимающиеся разработкой , обслуживанием и публикацией программного обеспечения. Индустрия также включает в себя услуги программного обеспечения , такие как обучение , документирование и консалтинг. [ необходима цитата ]
Компьютерная инженерия — это дисциплина , которая объединяет несколько областей электротехники и компьютерной науки, необходимых для разработки компьютерного оборудования и программного обеспечения. [34] Компьютерные инженеры обычно имеют подготовку в области электронной инженерии (или электротехники ), проектирования программного обеспечения и интеграции аппаратного и программного обеспечения, а не только в области программной инженерии или электронной инженерии. Компьютерные инженеры участвуют во многих аспектах аппаратного и программного обеспечения вычислений, от проектирования отдельных микропроцессоров , персональных компьютеров и суперкомпьютеров до проектирования схем . Эта область инженерии включает в себя не только проектирование оборудования в своей собственной области, но и взаимодействие между оборудованием и контекстом, в котором оно работает. [35]
Программная инженерия — это применение систематического, дисциплинированного и количественно измеримого подхода к проектированию, разработке, эксплуатации и обслуживанию программного обеспечения, а также изучение этих подходов. То есть применение инженерии к программному обеспечению. [36] [37] [38] Это акт использования идей для разработки, моделирования и масштабирования решения проблемы. Первое упоминание этого термина относится к конференции НАТО по программной инженерии 1968 года и было призвано вызвать размышления относительно воспринимаемого в то время кризиса программного обеспечения . [39] [40] [41] Разработка программного обеспечения , широко используемый и более общий термин, не обязательно включает в себя инженерную парадигму. Общепринятые концепции программной инженерии как инженерной дисциплины были определены в Руководстве по своду знаний по программной инженерии (SWEBOK). SWEBOK стал международно признанным стандартом в ISO/IEC TR 19759:2015. [42]
Информатика или вычислительная наука (сокращенно CS или Comp Sci) — это научный и практический подход к вычислениям и их приложениям. Специалист по вычислительной технике специализируется на теории вычислений и проектировании вычислительных систем. [43]
Его подобласти можно разделить на практические методы для его реализации и применения в компьютерных системах и чисто теоретические области. Некоторые, такие как теория вычислительной сложности , которая изучает фундаментальные свойства вычислительных задач , являются весьма абстрактными, в то время как другие, такие как компьютерная графика , подчеркивают реальные приложения. Другие сосредоточены на проблемах реализации вычислений. Например, теория языков программирования изучает подходы к описанию вычислений, в то время как изучение компьютерного программирования исследует использование языков программирования и сложных систем . Область взаимодействия человека и компьютера фокусируется на проблемах, связанных с тем, чтобы сделать компьютеры и вычисления полезными, пригодными для использования и общедоступными для людей. [44]
Область кибербезопасности относится к защите компьютерных систем и сетей. Это включает в себя конфиденциальность информации и данных , предотвращение сбоев в работе ИТ-сервисов и предотвращение кражи и повреждения оборудования, программного обеспечения и данных. [45]
Наука о данных — это область, которая использует научные и вычислительные инструменты для извлечения информации и выводов из данных, что обусловлено растущим объемом и доступностью данных. [46] Интеллектуальный анализ данных , большие данные , статистика, машинное обучение и глубокое обучение тесно переплетены с наукой о данных. [47]
Информационные системы (ИС) — это изучение дополнительных сетей аппаратного и программного обеспечения (см. информационные технологии), которые люди и организации используют для сбора, фильтрации, обработки, создания и распространения данных . [48] [49] [50] В книге ACM Computing Careers ИС описывается как:
«Большинство программ IS [степени] находятся в бизнес-школах; однако они могут иметь разные названия, такие как системы управленческой информации, компьютерные информационные системы или бизнес-информационные системы. Все степени IS объединяют бизнес и компьютерные темы, но акцент между техническими и организационными вопросами различается в разных программах. Например, программы существенно различаются по объему требуемого программирования». [51]
Изучение ИС связывает бизнес и информатику , используя теоретические основы информации и вычислений для изучения различных бизнес-моделей и связанных алгоритмических процессов в рамках дисциплины компьютерной науки. [52] [53] [54] Область компьютерных информационных систем (КИС) изучает компьютеры и алгоритмические процессы, включая их принципы, их программное обеспечение и аппаратные разработки, их приложения и их влияние на общество [55] [56], в то время как ИС делает акцент на функциональности, а не на дизайне. [57]
Информационные технологии (ИТ) — это применение компьютеров и телекоммуникационного оборудования для хранения, извлечения, передачи и манипулирования данными, [58] часто в контексте бизнеса или другого предприятия. [59] Этот термин обычно используется как синоним компьютеров и компьютерных сетей, но также охватывает другие технологии распространения информации, такие как телевидение и телефоны. Несколько отраслей промышленности связаны с информационными технологиями, включая компьютерное оборудование, программное обеспечение, электронику , полупроводники , Интернет, телекоммуникационное оборудование , электронную коммерцию и компьютерные услуги . [60] [61]
ДНК-вычисления и квантовые вычисления являются областями активных исследований как вычислительного оборудования, так и программного обеспечения, таких как разработка квантовых алгоритмов . Потенциальная инфраструктура для будущих технологий включает ДНК-оригами на фотолитографии [62] и квантовые антенны для передачи информации между ионными ловушками. [63] К 2011 году исследователи запутали 14 кубитов . [ 64] [65] Быстрые цифровые схемы , в том числе основанные на джозефсоновских переходах и быстрой однопоточной квантовой технологии, становятся все более реализуемыми с открытием наноразмерных сверхпроводников . [66]
Оптоволоконные и фотонные (оптические) устройства, которые уже использовались для передачи данных на большие расстояния, начинают использоваться центрами обработки данных вместе с компонентами ЦП и полупроводниковой памяти. Это позволяет отделить ОЗУ от ЦП с помощью оптических соединений. [67] IBM создала интегральную схему с электронной и оптической обработкой информации в одном чипе. Это обозначается как КМОП-интегрированная нанофотоника (CINP). [68] Одним из преимуществ оптических соединений является то, что материнские платы, которые ранее требовали определенного типа системы на кристалле (SoC), теперь могут перемещать ранее выделенные контроллеры памяти и сети с материнских плат, распределяя контроллеры по стойке. Это позволяет стандартизировать соединения объединительной платы и материнские платы для нескольких типов SoC, что позволяет более своевременно обновлять ЦП. [69]
Другая область исследований — спинтроника . Спинтроника может обеспечить вычислительную мощность и хранение без выделения тепла. [70] Некоторые исследования проводятся на гибридных чипах, которые объединяют фотонику и спинтронику. [71] [72] Также ведутся исследования по объединению плазмоники , фотоники и электроники. [73]
Облачные вычисления — это модель, которая позволяет использовать вычислительные ресурсы, такие как серверы или приложения, без необходимости взаимодействия между владельцем этих ресурсов и конечным пользователем. Обычно она предлагается как услуга, что делает ее примером программного обеспечения как услуги , платформы как услуги и инфраструктуры как услуги , в зависимости от предлагаемой функциональности. Ключевые характеристики включают доступ по требованию, широкий сетевой доступ и возможность быстрого масштабирования. [74] Она позволяет отдельным пользователям или малому бизнесу извлекать выгоду из экономии масштаба .
Одной из областей интереса в этой области является ее потенциал для поддержки энергоэффективности. Разрешение тысячам экземпляров вычислений происходить на одной машине вместо тысяч отдельных машин может помочь сэкономить энергию. Это также может облегчить переход к возобновляемым источникам энергии, поскольку будет достаточно питать одну серверную ферму возобновляемой энергией, а не миллионы домов и офисов. [75]
Однако эта централизованная вычислительная модель создает ряд проблем, особенно в области безопасности и конфиденциальности. Текущее законодательство не обеспечивает достаточной защиты пользователей от компаний, которые неправильно обращаются с их данными на серверах компании. Это предполагает потенциал для дальнейших законодательных норм в отношении облачных вычислений и технологических компаний. [76]
Квантовые вычисления — это область исследований, которая объединяет дисциплины компьютерной науки, теории информации и квантовой физики. Хотя идея информации как части физики относительно нова, по-видимому, существует тесная связь между теорией информации и квантовой механикой. [77] В то время как традиционные вычисления работают на двоичной системе единиц и нулей, квантовые вычисления используют кубиты . Кубиты способны находиться в суперпозиции, т. е. в обоих состояниях единицы и нуля одновременно. Таким образом, значение кубита не находится между 1 и 0, а меняется в зависимости от того, когда оно измеряется. Эта черта кубитов известна как квантовая запутанность и является основной идеей квантовых вычислений, которая позволяет квантовым компьютерам выполнять крупномасштабные вычисления. [78] Квантовые вычисления часто используются для научных исследований в случаях, когда традиционные компьютеры не обладают вычислительной мощностью для выполнения необходимых вычислений, например, в молекулярном моделировании . Большие молекулы и их реакции слишком сложны для расчетов на традиционных компьютерах, но вычислительная мощность квантовых компьютеров может предоставить инструмент для выполнения таких расчетов. [79]
и низкое энергопотребление МОП-транзисторов способствовали сегодняшней микрокомпьютерной революции.
Computer Systems engineering традиционно рассматривалась как сочетание электронной инженерии (EE) и компьютерных наук (CS).
первой конференции НАТО по программной инженерии, и в частности принятие тогда практически неизвестного термина
«программная инженерия»
в качестве ее (намеренно провокационного) названия, как я полагаю, изначально принадлежала профессору
Фритцу Бауэру
.
Область компьютерных наук: Несмотря на то, что компьютерные науки изучают как созданные человеком, так и естественные информационные процессы, основные усилия в этой дисциплине были направлены на созданные человеком процессы, особенно на системы и машины обработки информации.
Университет Клемсона создал программу получения степени (аспирантуры), которая объединяет искусства и науки... Все студенты программы должны завершить работу на уровне аспирантуры как в области искусств, так и в области компьютерных наук.
Из этого мы сделали вывод, что ИС — это наука, т. е. научная дисциплина в отличие от якобы ненаучных областей
Компьютерные науки - это изучение всех аспектов компьютерных систем, от теоретических основ до практических аспектов управления крупными программными проектами.
В 1988 г. была запущена программа обучения по специальности «Компьютерные информационные системы» (КИС) с целью предоставить возможность студентам, которые были менее склонны становиться программистами и больше интересовались изучением проектирования, разработки и внедрения информационных систем, а также решения бизнес-задач с использованием системного подхода.
и инженерия нуждаются в интеллектуально строгом, аналитическом, обучаемом процессе проектирования, чтобы гарантировать разработку систем, с которыми мы все сможем жить... Хотя связи других компонентов с программным обеспечением и их роль в общем проектировании системы имеют решающее значение, основным соображением для системы с большим количеством программного обеспечения является само программное обеспечение, и другие подходы к систематизации проектирования еще не решили «проблему программного обеспечения», которая не будет решена, пока проектирование программного обеспечения не будет понято с научной точки зрения.