stringtranslate.com

Информатика

Фундаментальные области компьютерной науки

Информатика — это изучение вычислений , информации и автоматизации . [1] [2] [3] Информатика охватывает теоретические дисциплины (такие как алгоритмы , теория вычислений и теория информации ) и прикладные дисциплины (включая проектирование и реализацию аппаратного и программного обеспечения ). [4] [5] [6]

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

Основная задача компьютерной науки — определить, что можно автоматизировать, а что нет. [2] [8] [3] [9] [10] Премия Тьюринга общепризнанно считается высшей наградой в области компьютерной науки. [11] [12]

История

Готфрид Вильгельм Лейбниц (1646–1716) разработал логику в двоичной системе счисления и был назван «основателем информатики». [13]
Чарльза Бэббиджа иногда называют «отцом вычислительной техники». [14]
Ада Лавлейс опубликовала первый алгоритм, предназначенный для обработки на компьютере. [15]

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

Вильгельм Шиккард спроектировал и построил первый рабочий механический калькулятор в 1623 году. [17] В 1673 году Готфрид Лейбниц продемонстрировал цифровой механический калькулятор, названный Stepped Reckoner . [18] Лейбница можно считать первым ученым-компьютерщиком и теоретиком информации по разным причинам, включая тот факт, что он задокументировал двоичную систему счисления. В 1820 году Томас де Кольмар запустил индустрию механических калькуляторов [примечание 1], когда он изобрел свой упрощенный арифмометр , первую вычислительную машину, достаточно прочную и надежную, чтобы ее можно было использовать ежедневно в офисной среде. Чарльз Бэббидж начал проектировать первый автоматический механичесий калькулятор , его Difference Engine , в 1822 году, что в конечном итоге дало ему идею первого программируемого механического калькулятора , его Analytical Engine . [19] Он начал разрабатывать эту машину в 1834 году, и «менее чем за два года он набросал многие из основных черт современного компьютера». [20] «Ключевым шагом стало принятие системы перфокарт, полученной из ткацкого станка Жаккарда » [20], что сделало ее бесконечно программируемой. [примечание 2] В 1843 году во время перевода французской статьи об аналитической машине Ада Лавлейс написала в одной из многочисленных включенных ею заметок алгоритм вычисления чисел Бернулли , который считается первым опубликованным алгоритмом, когда-либо специально разработанным для реализации на компьютере. [21] Около 1885 года Герман Холлерит изобрел табулятор , который использовал перфокарты для обработки статистической информации; в конечном итоге его компания стала частью IBM . Вслед за Бэббиджем, хотя и не знал о его более ранней работе, Перси Ладгейт в 1909 году опубликовал [22] вторую из единственных двух конструкций механических аналитических машин в истории. В 1914 году испанский инженер Леонардо Торрес Кеведо опубликовал свои «Очерки автоматики» [ 23] и спроектировал, вдохновленный Бэббиджем, теоретическую электромеханическую вычислительную машину, которая должна была управляться программой только для чтения. В статье также была представлена ​​идея арифметики с плавающей точкой [24] [25]В 1920 году, чтобы отпраздновать 100-летие изобретения арифмометра, Торрес представил в Париже Электромеханический арифмометр , прототип, который демонстрировал осуществимость электромеханической аналитической машины, [26] на которой команды можно было печатать, а результаты распечатывать автоматически. [27] В 1937 году, спустя сто лет после несбыточной мечты Бэббиджа, Говард Эйкен убедил IBM, которая производила все виды оборудования с перфокартами, а также занималась калькуляторным бизнесом [28], разработать свой гигантский программируемый калькулятор, ASCC/Harvard Mark I , на основе Аналитической машины Бэббиджа, которая сама использовала карты и центральный вычислительный блок. Когда машина была закончена, некоторые приветствовали ее как «мечту Бэббиджа, ставшую реальностью». [29]

В 1940-х годах, с развитием новых и более мощных вычислительных машин, таких как компьютер Атанасова-Берри и ENIAC , термин «компьютер» стал относиться к машинам, а не к их предшественникам-людям. [30] Когда стало ясно, что компьютеры могут использоваться не только для математических вычислений, область компьютерной науки расширилась, чтобы изучать вычисления в целом. В 1945 году IBM основала Научную вычислительную лабораторию Уотсона в Колумбийском университете в Нью-Йорке . Отремонтированный дом братства на Вест-Сайде Манхэттена был первой лабораторией IBM, посвященной чистой науке. Лаборатория является предшественником Исследовательского подразделения IBM, которое сегодня управляет исследовательскими центрами по всему миру. [31] В конечном итоге, тесные отношения между IBM и Колумбийским университетом сыграли решающую роль в появлении новой научной дисциплины, поскольку Колумбийский университет предложил один из первых академических кредитных курсов по информатике в 1946 году. [32] Информатику начали выделять в отдельную академическую дисциплину в 1950-х и начале 1960-х годов. [33] [34] Первая в мире программа получения степени по информатике, Кембриджский диплом по информатике , была запущена в компьютерной лаборатории Кембриджского университета в 1953 году. Первый факультет компьютерных наук в Соединенных Штатах был образован в Университете Пердью в 1962 году. [35] С тех пор, как стали доступны практические компьютеры, многие приложения вычислительной техники стали отдельными самостоятельными областями изучения.

Этимология и область применения

Хотя впервые был предложен в 1956 году, [36] термин «компьютерная наука» появляется в статье 1959 года в Communications of the ACM , [37] в которой Луис Фейн выступает за создание Высшей школы компьютерных наук, аналогичной созданию Гарвардской школы бизнеса в 1921 году. [38] Луис оправдывает название, утверждая, что, как и наука управления , этот предмет является прикладным и междисциплинарным по своей природе, имея при этом характеристики, типичные для академической дисциплины. [37] Его усилия, а также усилия других, таких как численный аналитик Джордж Форсайт , были вознаграждены: университеты продолжили создавать такие факультеты, начиная с Purdue в 1962 году. [39] Несмотря на свое название, значительная часть компьютерной науки не включает в себя изучение самих компьютеров. Из-за этого было предложено несколько альтернативных названий. [40] Некоторые факультеты крупных университетов предпочитают термин «компьютерная наука» , чтобы подчеркнуть именно это различие. Датский ученый Петер Наур предложил термин даталогия [41] , чтобы отразить тот факт, что научная дисциплина вращается вокруг данных и обработки данных, не обязательно с участием компьютеров. Первым научным учреждением, использовавшим этот термин , был факультет даталогии Копенгагенского университета, основанный в 1969 году, а Петер Наур был первым профессором даталогии. Термин используется в основном в скандинавских странах. Альтернативный термин, также предложенный Науром, — наука о данных ; теперь он используется для многопрофильной области анализа данных, включая статистику и базы данных.

На заре вычислительной техники в сообщениях ACM было предложено несколько терминов для обозначения специалистов в этой области — turingineer , turologist , flow-charts-man , applied meta-mathematician и applied epistemologist . [42] Три месяца спустя в том же журнале было предложено comptologist , а в следующем году — hypologist . [43] Также был предложен термин computics . [44] В Европе часто используются термины, полученные из сокращенных переводов выражений «автоматическая информация» (например, «informazione automatica» на итальянском языке) или «информация и математика», например informatique (французский), Informatik (немецкий), informatica (итальянский, голландский), informática (испанский, португальский), informatika ( славянские языки и венгерский ) или pliroforiki ( πληροφορική , что означает информатика) на греческом языке . Похожие слова также были приняты в Великобритании (как в Школе информатики Эдинбургского университета ). [45] «В США, однако, информатика связана с прикладными вычислениями или вычислениями в контексте другой области». [46]

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

Некоторые считают, что компьютерная наука имеет гораздо более тесную связь с математикой, чем многие научные дисциплины, при этом некоторые наблюдатели говорят, что вычисления являются математической наукой. [33] Ранняя компьютерная наука находилась под сильным влиянием работ таких математиков, как Курт Гёдель , Алан Тьюринг , Джон фон Нейман , Рожа Петер и Алонзо Чёрч , и между этими двумя областями продолжается полезный обмен идеями в таких областях, как математическая логика , теория категорий , теория доменов и алгебра . [36]

Связь между компьютерной наукой и программной инженерией является спорным вопросом, который еще больше запутывается спорами о том, что означает термин «программная инженерия» и как определяется компьютерная наука. [47] Дэвид Парнас , взяв пример из взаимосвязи между другими инженерными и научными дисциплинами, заявил, что основное внимание компьютерной науки уделяется изучению свойств вычислений в целом, в то время как основное внимание программной инженерии уделяется проектированию конкретных вычислений для достижения практических целей, что делает эти две отдельные, но взаимодополняющие дисциплины. [48]

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

Философия

Эпистемология информатики

Несмотря на слово «наука» в названии, ведутся споры о том, является ли компьютерная наука дисциплиной науки, [49] математики, [50] или инженерии. [51] Аллен Ньюэлл и Герберт А. Саймон утверждали в 1975 году:

Информатика — эмпирическая дисциплина. Мы бы назвали ее экспериментальной наукой, но, как и астрономия, экономика и геология, некоторые из ее уникальных форм наблюдения и опыта не вписываются в узкий стереотип экспериментального метода. Тем не менее, они являются экспериментами. Каждая новая построенная машина — это эксперимент. Фактически, построение машины ставит вопрос перед природой; и мы слушаем ответ, наблюдая за работой машины и анализируя ее всеми доступными аналитическими и измерительными средствами. [51]

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

Сторонники классификации компьютерной науки как математической дисциплины утверждают, что компьютерные программы являются физическими реализациями математических сущностей и программ, которые могут быть дедуктивно обоснованы с помощью математических формальных методов . [51] Ученые-компьютерщики Эдсгер В. Дейкстра и Тони Хоар рассматривают инструкции для компьютерных программ как математические предложения и интерпретируют формальную семантику языков программирования как математические аксиоматические системы . [51]

Парадигмы компьютерной науки

Ряд ученых-компьютерщиков утверждали, что в информатике выделяют три отдельные парадигмы. Питер Вегнер утверждал, что эти парадигмы — это наука, технология и математика. [52] Рабочая группа Питера Деннинга утверждала, что это теория, абстракция (моделирование) и проектирование. [33] Амнон Х. Иден описал их как «рационалистическую парадигму» (которая рассматривает информатику как раздел математики, который преобладает в теоретической информатике и в основном использует дедуктивное рассуждение), «технократическую парадигму» (которая может быть найдена в инженерных подходах, наиболее заметно в программной инженерии) и «научную парадигму» (которая подходит к артефактам, связанным с компьютерами, с эмпирической точки зрения естественных наук , [53] идентифицируемых в некоторых разделах искусственного интеллекта ). [54] Информатика фокусируется на методах, используемых в проектировании, спецификации, программировании, проверке, реализации и тестировании созданных человеком вычислительных систем. [55]

Поля

Как дисциплина, информатика охватывает ряд тем от теоретических исследований алгоритмов и пределов вычислений до практических вопросов внедрения вычислительных систем в аппаратное и программное обеспечение. [56] [57] CSAB , ранее называвшийся Computing Sciences Accreditation Board, который состоит из представителей Association for Computing Machinery (ACM) и IEEE Computer Society (IEEE CS) [58] , определяет четыре области, которые он считает критически важными для дисциплины информатики: теория вычислений , алгоритмы и структуры данных , методология и языки программирования , а также элементы и архитектура компьютера . В дополнение к этим четырем областям CSAB также определяет такие области, как программная инженерия, искусственный интеллект, компьютерные сети и связь, системы баз данных, параллельные вычисления, распределенные вычисления, взаимодействие человека и компьютера, компьютерная графика, операционные системы, а также числовые и символьные вычисления как важные области информатики. [56]

Теоретическая информатика

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

Теория вычислений

По словам Питера Деннинга , фундаментальный вопрос, лежащий в основе компьютерной науки, заключается в следующем: «Что можно автоматизировать?» [3] Теория вычислений сосредоточена на ответе на фундаментальные вопросы о том, что можно вычислить и какой объем ресурсов требуется для выполнения этих вычислений. В попытке ответить на первый вопрос теория вычислимости исследует, какие вычислительные задачи разрешимы на различных теоретических моделях вычислений . Второй вопрос рассматривается теорией вычислительной сложности , которая изучает временные и пространственные затраты, связанные с различными подходами к решению множества вычислительных задач.

Знаменитая задача P = NP?, одна из задач Премии тысячелетия , [59] является открытой проблемой в теории вычислений.

Теория информации и кодирования

Теория информации, тесно связанная с вероятностью и статистикой , связана с квантификацией информации. Она была разработана Клодом Шенноном для нахождения фундаментальных ограничений на операции обработки сигналов , такие как сжатие данных, а также на надежное хранение и передачу данных. [60] Теория кодирования — это изучение свойств кодов (систем для преобразования информации из одной формы в другую) и их пригодности для конкретного приложения. Коды используются для сжатия данных , криптографии , обнаружения и исправления ошибок , а в последнее время также для сетевого кодирования . Коды изучаются с целью разработки эффективных и надежных методов передачи данных . [61]

Структуры данных и алгоритмы

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

Теория языков программирования и формальные методы

Теория языков программирования — это раздел компьютерной науки, который занимается разработкой, реализацией, анализом, характеристикой и классификацией языков программирования и их индивидуальных особенностей . Она входит в дисциплину компьютерной науки, как зависящую от математики , программной инженерии и лингвистики , так и влияющую на них . Это активная область исследований с многочисленными специализированными академическими журналами.

Формальные методы — это особый вид математически обоснованной техники для спецификации , разработки и проверки программных и аппаратных систем. [62] Использование формальных методов для проектирования программного обеспечения и оборудования мотивировано ожиданием того, что, как и в других инженерных дисциплинах, выполнение соответствующего математического анализа может способствовать надежности и устойчивости проекта. Они формируют важную теоретическую основу для разработки программного обеспечения, особенно там, где речь идет о безопасности. Формальные методы являются полезным дополнением к тестированию программного обеспечения, поскольку они помогают избегать ошибок и также могут дать основу для тестирования. Для промышленного использования требуется поддержка инструментов. Однако высокая стоимость использования формальных методов означает, что они обычно используются только при разработке высокоинтегрированных и жизненно важных систем , где безопасность или защита имеют первостепенное значение. Формальные методы лучше всего описать как применение довольно широкого спектра теоретических основ компьютерной науки , в частности логических исчислений, формальных языков , теории автоматов и семантики программ , а также систем типов и алгебраических типов данных к проблемам спецификации и проверки программного обеспечения и оборудования.

Прикладная информатика

Компьютерная графика и визуализация

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

Обработка изображений и звука

Информация может принимать форму изображений, звука, видео или других мультимедиа. Биты информации могут передаваться потоком с помощью сигналов . Ее обработка является центральным понятием информатики , европейского взгляда на вычисления , который изучает алгоритмы обработки информации независимо от типа носителя информации — будь то электрический, механический или биологический. Эта область играет важную роль в теории информации , телекоммуникациях , информационной инженерии и имеет приложения в медицинских вычислениях изображений и синтезе речи , среди прочего. Какова нижняя граница сложности алгоритмов быстрого преобразования Фурье ? является одной из нерешенных проблем в теоретической информатике .

Вычислительная наука, финансы и инженерия

Научные вычисления (или вычислительная наука ) — это область исследований, связанная с построением математических моделей и методов количественного анализа , а также с использованием компьютеров для анализа и решения научных проблем. Основное применение научных вычислений — моделирование различных процессов, включая вычислительную гидродинамику , физические, электрические и электронные системы и схемы, а также общества и социальные ситуации (особенно военные игры) вместе с их средой обитания, среди многих других. Современные компьютеры позволяют оптимизировать такие конструкции, как готовые самолеты. Известными в области проектирования электрических и электронных схем являются SPICE, [63] , а также программное обеспечение для физической реализации новых (или модифицированных) конструкций. Последнее включает в себя необходимое программное обеспечение для проектирования интегральных схем . [64]

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

Социальные вычисления — это область, которая занимается пересечением социального поведения и вычислительных систем. Исследования взаимодействия человека и компьютера разрабатывают теории, принципы и рекомендации для дизайнеров пользовательских интерфейсов.

Программная инженерия

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

Искусственный интеллект

Искусственный интеллект (ИИ) направлен или требуется для синтеза целенаправленных процессов, таких как решение проблем, принятие решений, адаптация к окружающей среде, обучение и коммуникация, обнаруженных у людей и животных. Начиная с кибернетики и Дартмутской конференции (1956), исследования искусственного интеллекта были обязательно междисциплинарными, опираясь на такие области знаний, как прикладная математика , символическая логика , семиотика , электротехника , философия сознания , нейрофизиология и социальный интеллект . ИИ ассоциируется в массовом сознании с разработкой роботов , но основной областью практического применения был встроенный компонент в областях разработки программного обеспечения , которые требуют вычислительного понимания. Отправной точкой в ​​конце 1940-х годов был вопрос Алана Тьюринга « Могут ли компьютеры думать? », и этот вопрос фактически остается без ответа, хотя тест Тьюринга по-прежнему используется для оценки выходных данных компьютеров по шкале человеческого интеллекта. Однако автоматизация оценочных и прогностических задач становится все более успешной заменой человеческому мониторингу и вмешательству в области компьютерных приложений, связанных со сложными реальными данными.

Компьютерные системы

Архитектура и организация компьютера

Архитектура компьютера, или организация цифрового компьютера, является концептуальным проектом и фундаментальной операционной структурой компьютерной системы. Она в основном фокусируется на том, как центральный процессор выполняет внутреннюю работу и обращается к адресам в памяти. [65] Инженеры-компьютерщики изучают вычислительную логику и проектирование компьютерного оборудования , от отдельных компонентов процессора , микроконтроллеров , персональных компьютеров до суперкомпьютеров и встроенных систем . Термин «архитектура» в компьютерной литературе можно проследить до работы Лайла Р. Джонсона и Фредерика П. Брукса-младшего , членов отдела организации машин в главном исследовательском центре IBM в 1959 году.

Одновременные, параллельные и распределенные вычисления

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

Компьютерные сети

Эта отрасль компьютерной науки направлена ​​на управление сетями между компьютерами по всему миру.

Компьютерная безопасность и криптография

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

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

Базы данных и интеллектуальный анализ данных

База данных предназначена для организации, хранения и извлечения больших объемов данных. Цифровые базы данных управляются с помощью систем управления базами данных для хранения, создания, обслуживания и поиска данных с помощью моделей баз данных и языков запросов . Интеллектуальный анализ данных — это процесс обнаружения закономерностей в больших наборах данных.

Открытия

Философ вычислительной техники Билл Рапапорт отметил три великих прозрения компьютерной науки : [70]

Вся информация о любой вычислимой задаче может быть представлена ​​с использованием только 0 и 1 (или любой другой бистабильной пары, которая может переключаться между двумя легко различимыми состояниями, такими как «включено/выключено», «намагничено/размагничено», «высокое напряжение/низкое напряжение» и т. д.).
Каждый алгоритм может быть выражен на языке для компьютера, состоящем всего из пяти основных инструкций: [71]
  • переместиться на одну позицию влево;
  • переместиться вправо на одну позицию;
  • прочитать символ в текущем местоположении;
  • вывести 0 в текущем местоположении;
  • распечатать 1 в текущем местоположении.
Для объединения любого набора базовых инструкций в более сложные необходимы всего три правила:
  • последовательность : сначала сделай это, потом сделай то;
  • выбор : ЕСЛИ то-то и то-то имеет место, ТО сделай это, ИНАЧЕ сделай то;
  • повторение : ПОКА имеет место то-то и то-то, ДЕЛАЙТЕ это.
Три правила идеи Бёма и Якопини можно еще больше упростить с помощью goto (что означает, что это более элементарно, чем структурное программирование ).

Парадигмы программирования

Языки программирования могут использоваться для выполнения различных задач разными способами. Распространенные парадигмы программирования включают:

Многие языки поддерживают несколько парадигм, поэтому различие становится скорее вопросом стиля, чем технических возможностей. [76]

Исследовать

Конференции являются важными событиями для исследований в области компьютерных наук. Во время этих конференций исследователи из государственного и частного секторов представляют свои последние работы и встречаются. В отличие от большинства других академических областей, в компьютерных науках престиж конференционных докладов выше, чем журнальных публикаций. [77] [78] Одно из предлагаемых объяснений этого заключается в том, что быстрое развитие этой относительно новой области требует быстрого обзора и распространения результатов, а с этой задачей лучше справляются конференции, чем журналы. [79]

Смотрите также

Примечания

  1. В 1851 г.
  2. ^ «Внедрение перфокарт в новую машину было важно не только как более удобная форма управления, чем барабаны, или потому, что теперь программы могли быть неограниченного объема и могли храниться и повторяться без опасности внесения ошибок при ручной настройке машины; это было важно также потому, что это помогло Бэббиджу кристаллизовать ощущение того, что он изобрел что-то действительно новое, что-то гораздо большее, чем сложная вычислительная машина». Брюс Коллиер, 1970
  3. Историю этой цитаты см. в статье «Информатика» на Викицитатнике.
  4. ^ Слово "что угодно" написано в кавычках, потому что есть вещи, которые компьютеры не могут делать. Один пример: ответить на вопрос, завершится ли произвольно заданная компьютерная программа в конце концов или будет работать вечно ( проблема остановки ).

Ссылки

  1. ^ "Что такое компьютерная наука?". Department of Computer Science, University of York . Архивировано из оригинала 11 июня 2020 г. Получено 11 июня 2020 г.
  2. ^ ab Что можно автоматизировать? Исследование компьютерных наук и инженерных исследований. Серия «Компьютерные науки». Издательство MIT. 1980. ISBN 978-0262010603. Архивировано из оригинала 9 января 2021 г.
  3. ^ abc Denning, PJ; Comer, DE; Gries, D.; Mulder, MC; Tucker, A.; Turner, AJ; Young, PR (февраль 1989 г.). "Computing as a discipline". Computer . 22 (2): 63–70. doi :10.1109/2.19833. ISSN  1558-0814. Архивировано из оригинала 3 марта 2022 г. Получено 3 марта 2022 г. Дисциплина вычислений — это систематическое изучение алгоритмических процессов, которые описывают и преобразуют информацию, их теории, анализа, проектирования, эффективности, реализации и применения. Фундаментальный вопрос, лежащий в основе всех вычислений, — «Что можно (эффективно) автоматизировать?»
  4. ^ "WordNet Search—3.1". WordNet Search . Wordnetweb.princeton.edu. Архивировано из оригинала 18 октября 2017 г. Получено 14 мая 2012 г.
  5. ^ "Определение информатики | Dictionary.com". www.dictionary.com . Архивировано из оригинала 11 июня 2020 г. . Получено 11 июня 2020 г. .
  6. ^ "Что такое компьютерные науки? | Бакалавриат компьютерных наук в UMD". undergrad.cs.umd.edu . Архивировано из оригинала 27 ноября 2020 г. Получено 15 июля 2022 г.
  7. ^ Харель, Дэвид (2014). Алгоритмика: Дух вычислений. Springer Berlin. ISBN 978-3-642-44135-6. OCLC  876384882. Архивировано из оригинала 17 июня 2020 г. . Получено 17 июня 2020 г. .
  8. ^ Паттон, Ричард Д.; Паттон, Питер К. (2009), Ноф, Шимон Ю. (ред.), «Что можно автоматизировать? Что нельзя автоматизировать?», Springer Handbook of Automation , Springer Handbooks, Берлин, Гейдельберг: Springer, стр. 305–313, doi :10.1007/978-3-540-78831-7_18, ISBN 978-3-540-78831-7, заархивировано из оригинала 11 января 2023 г. , извлечено 3 марта 2022 г.
  9. Форсайт, Джордж (5–10 августа 1969 г.). «Компьютерная наука и образование». Труды Конгресса IFIP 1968 г. Вопрос «Что можно автоматизировать?» — один из самых вдохновляющих философских и практических вопросов современной цивилизации.
  10. ^ Кнут, Дональд Э. (1 августа 1972 г.). «Джордж Форсайт и развитие компьютерной науки». Communications of the ACM . 15 (8): 721–726. doi : 10.1145/361532.361538 . ISSN  0001-0782. S2CID  12512057.
  11. ^ Хансон, Вики Л. (23 января 2017 г.). «Празднование 50-летия премии Тьюринга». Сообщения ACM . 60 (2): 5. doi : 10.1145/3033604 . ISSN  0001-0782. S2CID  29984960.
  12. ^ Скотт, Эрик; Мартинс, Марселла Скочински Рибейро; Яфрани, Мохамед Эль; Фольц, Ванесса; Уилсон, Деннис Г. (5 июня 2018 г.). «ACM отмечает 50-летие премии ACM AM Тьюринга и величайших достижений вычислительной техники». ACM SIGEVOlution . 10 (3): 9–11. doi :10.1145/3231560.3231563. ISSN  1931-8499. S2CID  47021559.
  13. ^ "2021: 375-летие Лейбница, отца компьютерной науки". people.idsia.ch . Архивировано из оригинала 21 сентября 2022 г. . Получено 4 февраля 2023 г. .
  14. ^ "Институт Чарльза Бэббиджа: кем был Чарльз Бэббидж?". cbi.umn.edu . Архивировано из оригинала 9 января 2007 г. Получено 28 декабря 2016 г.
  15. ^ "Ada Lovelace | Babbage Engine | Computer History Museum". www.computerhistory.org . Архивировано из оригинала 25 декабря 2018 г. . Получено 28 декабря 2016 г. .
  16. ^ "История компьютерных наук". cs.uwaterloo.ca . Архивировано из оригинала 29 июля 2017 г. Получено 15 июля 2022 г.
  17. ^ "Wilhelm Schickard – Ein Computerpionier" (PDF) (на немецком языке). Архивировано из оригинала (PDF) 19 сентября 2020 г. Получено 4 декабря 2016 г.
  18. ^ Китс, Фиона (25 июня 2012 г.). «Краткая история вычислений». Репозиторий . Королевское общество. Архивировано из оригинала 29 июня 2012 г. Получено 19 января 2014 г.
  19. ^ "Музей науки, Аналитическая машина Бэббиджа, 1834–1871 (Пробная модель)". Архивировано из оригинала 30 августа 2019 г. Получено 11 мая 2020 г.
  20. ^ ab Hyman, Anthony (1982). Чарльз Бэббидж: пионер компьютера . Oxford University Press . ISBN 978-0691083032.
  21. ^ «Выбор и адаптация заметок Ады, найденных в книге «Ада, чародейка чисел», автор Бетти Александра Тул, редактор Д. Э. Строуберри Пресс, Милл-Вэлли, Калифорния». Архивировано из оригинала 10 февраля 2006 г. Получено 4 мая 2006 г.
  22. ^ "The John Gabriel Byrne Computer Science Collection" (PDF) . Архивировано из оригинала 16 апреля 2019 г. . Получено 8 августа 2019 г. .
  23. ^ Торрес Кеведо, Л. (1914). «Ensayos sobre Automática – Su definicion. Extension teórica de sus aplicaciones». Revista de la Academia de Ciencias Exacta , 12, стр. 391–418.
  24. ^ Торрес Кеведо, Леонардо. Automática: Complemento de la Teoría de las Máquinas, (pdf), стр. 575–583, Revista de Obras Públicas, 19 ноября 1914 г.
  25. ^ Рональд Т. Кнойзель. Числа и компьютеры, Springer, стр. 84-85, 2017. ISBN 978-3319505084 
  26. ^ Рэнделл, Брайан. Цифровые компьютеры, история происхождения, (pdf), стр. 545, Цифровые компьютеры: происхождение, Энциклопедия компьютерных наук, январь 2003 г.
  27. ^ Рэнделл 1982, стр. 6, 11–13.
  28. ^ «В этом смысле Эйкену была нужна IBM, чья технология включала использование перфокарт, накопление числовых данных и передачу числовых данных из одного регистра в другой», Бернард Коэн, стр.44 (2000)
  29. ^ Брайан Рэнделл, стр. 187, 1975
  30. ^ Ассоциация вычислительной техники (ACM) была основана в 1947 году.
  31. ^ "Архивы IBM: 1945". Ibm.com. 23 января 2003 г. Архивировано из оригинала 5 января 2019 г. Получено 19 марта 2019 г.
  32. ^ "IBM100 – Истоки компьютерной науки". Ibm.com. 15 сентября 1995 г. Архивировано из оригинала 5 января 2019 г. Получено 19 марта 2019 г.
  33. ^ abc Denning, PJ; Comer, DE; Gries, D.; Mulder, MC; Tucker, A.; Turner, AJ; Young, PR (февраль 1989 г.). «Computing as a discipline». Computer . 22 (2): 63–70. doi :10.1109/2.19833. ISSN  1558-0814. Архивировано из оригинала 3 марта 2022 г. . Получено 3 марта 2022 г. .
  34. ^ "Some EDSAC statistics". Кембриджский университет. Архивировано из оригинала 3 сентября 2007 г. Получено 19 ноября 2011 г.
  35. ^ "Пионер компьютерной науки Сэмюэль Д. Конте умер в возрасте 85 лет". Purdue Computer Science. 1 июля 2002 г. Архивировано из оригинала 6 октября 2014 г. Получено 12 декабря 2014 г.
  36. ^ ab Тедре, Матти (2014). Наука вычислений: формирование дисциплины . Тейлор и Фрэнсис / CRC Press.
  37. ^ ab Louis Fine (1960). «Роль университета в компьютерах, обработке данных и смежных областях». Сообщения ACM . 2 (9): 7–14. doi : 10.1145/368424.368427 . S2CID  6740821.
  38. ^ "Stanford University Oral History". Стэнфордский университет. Архивировано из оригинала 4 апреля 2017 года . Получено 30 мая 2013 года .
  39. ^ Дональд Кнут (1972). "Джордж Форсайт и развитие компьютерной науки" . Comms. ACM . Архивировано 20 октября 2013 г. на Wayback Machine
  40. ^ Матти Тедре (2006). «Развитие компьютерной науки: социокультурная перспектива» (PDF) . стр. 260. Архивировано (PDF) из оригинала 9 октября 2022 г. Получено 12 декабря 2014 г.
  41. ^ Питер Наур (1966). «Наука даталогии». Сообщения ACM . 9 (7): 485. doi : 10.1145/365719.366510 . S2CID  47558402.
  42. ^ Вайс, EA; Корли, Генри PT "Письма редактору". Сообщения ACM . 1 (4): 6. doi : 10.1145/368796.368802 . S2CID  5379449.
  43. ^ Сообщения ACM 2(1):стр.4
  44. ^ IEEE Computer 28(12): стр.136
  45. ^ П. Мунье-Кун, L'Informatique en France, вторая мировая война в Plan Calcul. L'émergence d'une science , Париж, PUPS, 2010, гл. 3 и 4.
  46. ^ Грот, Деннис П. (февраль 2010 г.). «Зачем нужна степень по информатике?». Сообщения ACM . Cacm.acm.org. Архивировано из оригинала 11 января 2023 г. Получено 14 июня 2016 г.
  47. ^ Тедре, М. (2011). «Вычислительная техника как наука: обзор конкурирующих точек зрения». Minds and Machines . 21 (3): 361–387. doi :10.1007/s11023-011-9240-4. S2CID  14263916.
  48. ^ Парнас, Д. Л. (1998). «Программы по программной инженерии не являются программами по компьютерной науке». Annals of Software Engineering . 6 : 19–37. doi :10.1023/A:1018949113292. S2CID  35786237., стр. 19: «Вместо того, чтобы рассматривать программную инженерию как подраздел компьютерной науки, я рассматриваю ее как элемент множества: гражданское строительство, машиностроение, химическая инженерия, электротехника, [...]»
  49. ^ Luk, RWP (2020). «Понимание того, как компьютерная наука может быть наукой». Наука и философия . 8 (2): 17–47. doi :10.23756/sp.v8i2.531.
  50. ^ Кнут, Д. Э. (1974). «Компьютерная наука и ее связь с математикой». The American Mathematical Monthly . 81 (4): 323–343. doi :10.2307/2318994. JSTOR  2318994.
  51. ^ abcdefg "Философия компьютерной науки". Философия компьютерной науки (Стэнфордская энциклопедия философии) . Лаборатория метафизических исследований, Стэнфордский университет. 2021. Архивировано из оригинала 16 сентября 2021 г. Получено 16 сентября 2021 г.
  52. ^ Вегнер, П. (13–15 октября 1976 г.). Исследовательские парадигмы в информатике — Труды 2-й международной конференции по программной инженерии . Сан-Франциско, Калифорния, США: IEEE Computer Society Press, Лос-Аламитос, Калифорния.
  53. ^ Деннинг, Питер Дж. (2007). «Вычислительная техника — это естественная наука». Сообщения ACM . 50 (7): 13–18. doi :10.1145/1272516.1272529. S2CID  20045303.
  54. ^ Eden, AH (2007). "Три парадигмы компьютерной науки" (PDF) . Minds and Machines . 17 (2): 135–167. CiteSeerX 10.1.1.304.7763 . doi :10.1007/s11023-007-9060-8. S2CID  3023076. Архивировано из оригинала (PDF) 15 февраля 2016 г. 
  55. ^ Тернер, Рэймонд; Энджиус, Никола (2019). «Философия компьютерной науки». В Zalta, Edward N. (ред.). The Stanford Encyclopedia of Philosophy . Архивировано из оригинала 14 октября 2019 г. Получено 14 октября 2019 г.
  56. ^ ab "Computer Science as a Profession". Computing Sciences Accreditation Board. 28 мая 1997 г. Архивировано из оригинала 17 июня 2008 г. Получено 23 мая 2010 г.
  57. ^ Комитет по основам компьютерной науки: вызовы и возможности, Национальный исследовательский совет (2004). Компьютерная наука: размышления о поле, размышления с поля. National Academies Press. ISBN 978-0-309-09301-9. Архивировано из оригинала 18 февраля 2011 г. . Получено 31 августа 2008 г. .
  58. ^ "CSAB Leading Computer Education". CSAB. 3 августа 2011 г. Архивировано из оригинала 20 января 2019 г. Получено 19 ноября 2011 г.
  59. Институт математики Клэя P = NP Архивировано 14 октября 2013 г. на Wayback Machine
  60. ^ P. Collins, Graham (14 октября 2002 г.). «Клод Э. Шеннон: основатель теории информации». Scientific American . Архивировано из оригинала 16 января 2014 г. Получено 12 декабря 2014 г.
  61. ^ Ван-Нам Хюйн; Владик Крейнович; Сонгсак Шрибунчитта; 2012. Анализ неопределенности в эконометрике с приложениями . Springer Science & Business Media. стр. 63. ISBN 978-3-642-35443-4
  62. ^ Филлип А. Лапланте, (2010). Энциклопедия программной инженерии, трехтомный комплект (печать). CRC Press. стр. 309. ISBN 978-1-351-24926-3
  63. ^ Мухаммад Х. Рашид, (2016). SPICE для силовой электроники и электроэнергетики . CRC Press. стр. 6. ISBN 978-1-4398-6047-2
  64. ^ "Что такое интегральная схема (ИС)? Жизненно важный компонент современной электроники". WhatIs.com . Архивировано из оригинала 15 ноября 2021 г. . Получено 15 ноября 2021 г. .
  65. ^ А. Тистед, Рональд (7 апреля 1997 г.). "Архитектура компьютеров" (PDF) . Чикагский университет. Архивировано (PDF) из оригинала 9 октября 2022 г.
  66. ^ Цзякунь Ван, (2017). Встроенные системы реального времени . Wiley. стр. 12. ISBN 978-1-119-42070-5
  67. ^ Гордана Додиг-Крнкович; Раффаэла Джованьоли, (2013). Computing Nature: Turing Centenary Perspective . Springer Science & Business Media. стр. 247. ISBN 978-3-642-37225-4
  68. ^ Саймон Элиас Бибри (2018). Умные устойчивые города будущего: неиспользованный потенциал аналитики больших данных и контекстно-зависимых вычислений для повышения устойчивости . Springer. стр. 74. ISBN 978-3-319-73981-6
  69. ^ Кац, Джонатан (2008). Введение в современную криптографию. Иегуда Линделл. Boca Raton: Chapman & Hall/CRC. ISBN 978-1-58488-551-1. OCLC  137325053. Архивировано из оригинала 6 мая 2022 г. . Получено 17 ноября 2021 г. .
  70. ^ Рапапорт, Уильям Дж. (20 сентября 2013 г.). «Что такое вычисления?». Государственный университет Нью-Йорка в Буффало. Архивировано из оригинала 14 февраля 2001 г. Получено 31 августа 2013 г.
  71. ^ Б. Джек Коупленд, (2012). Электронный мозг Алана Тьюринга: борьба за создание ACE, самого быстрого компьютера в мире . OUP Oxford. стр. 107. ISBN 978-0-19-960915-4
  72. ^ Чарльз В. Герберт, (2010). Введение в программирование с использованием Alice 2.2 . Cengage Learning. стр. 122. ISBN 0-538-47866-7
  73. ^ Мд. Резаул Карим; Шридхар Алла, (2017). Scala и Spark для аналитики больших данных: изучите концепции функционального программирования, потоковой передачи данных и машинного обучения . Packt Publishing Ltd. стр. 87. ISBN 978-1-78355-050-0
  74. ^ Лекс Шихан, (2017). Изучение функционального программирования на Go: измените свой подход к приложениям с помощью функционального программирования на Go . Packt Publishing Ltd. стр. 16. ISBN 978-1-78728-604-7
  75. ^ Эвелио Падилла, (2015). Системы автоматизации подстанций: проектирование и внедрение . Wiley. стр. 245. ISBN 978-1-118-98730-8
  76. ^ "Multi-Paradigm Programming Language". MDN Web Docs . Mozilla Foundation . Архивировано из оригинала 21 августа 2013 г.
  77. ^ Мейер, Бертран (апрель 2009 г.). «Точка зрения: оценка исследований в области компьютерных наук». Сообщения ACM . 25 (4): 31–34. doi :10.1145/1498765.1498780. S2CID  8625066.
  78. ^ Паттерсон, Дэвид (август 1999 г.). «Оценка специалистов по информатике и инженеров для продвижения по службе и сохранения должности». Computing Research Association. Архивировано из оригинала 22 июля 2015 г. Получено 19 июля 2015 г.
  79. ^ Фортнау, Лэнс (август 2009 г.). «Точка зрения: время для компьютерной науки вырасти». Сообщения ACM . 52 (8): 33–35. doi : 10.1145/1536616.1536631 .

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

Внешние ссылки