Почему степени информатики содержат большую долю математики?

Почему степени информатики содержат большую долю математики?

Потому что вычислительная наука (см. Ниже) и даже компьютерное программирование — это прикладная математика.

Эд Дубинский, преподаватель математики, который когда-то сам был профессиональным программистом, сказал :

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

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

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

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

Теперь, как вы видели, вполне возможно атаковать реальные проблемы с помощью этих математических инструментов нестандартным способом и получить полезные результаты. Как правило, результаты не будут действительно правильными (т. Е. Ваши программы будут иметь ошибки), но они будут «достаточно корректными» для выполнения работы. (Для хорошо написанной программы в промышленности вы можете никогда не столкнуться с ситуациями, которые продемонстрировали бы, что она неверна.) В этом и заключается дисциплина инженерии: получение результатов, которые достаточно хорошо работают в реальном мире, по приемлемой цене.

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

И люди, которые сделали эту работу, являются учеными вычислительной техники.

Все это давно известно и серьезно обдумано. Я думаю, что это особенно хорошо видно из комментария к классической статье Питера Лэндена 1966 года [«Следующие 700 языков программирования»] [landin66]:

Наиболее важный вклад LISP заключался не в обработке списков, не в распределении и не в обозначениях, а в логических свойствах, лежащих в основе обозначений. здесь ISWIM вносит незначительные улучшения, потому что, за исключением нескольких мелких деталей, LISP не оставляет ничего, что можно было бы сделать. Есть два эквивалентных способа определения этих свойств.

(a) LISP упростил отношения эквивалентности, которые определяют степень, в которой части программы могут быть взаимозаменяемы, не влияя на результат.

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

Если вы понимаете это (что, вероятно, требует некоторого, по крайней мере, интуитивного понимания лямбда-исчисления или аналогичного), вы, вероятно, поймете, что многие проблемы, с которыми мы сталкиваемся сегодня, остаются теми же, в основном математическими, которые исследовались еще в 60-е годы, когда мы впервые серьезно изучали, что такое «язык программирования» на самом деле и что означает.

По рабочим программам

Можно также взглянуть на это с более узкой точки зрения: «Я просто хочу написать программу и убедиться, что она работает». Даже здесь это становится математикой, если принять за ограничение: «Я действительно хочу, насколько я могу, убедиться, что это работает». EWD303 Дейкстры «О надежности программ» подробно описывает этот аргумент. Его резюме:

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

На «Компьютерные науки» против «Компьютерные науки»

Некоторые из нас, в том числе Университет Альберты , считают более распространенное название дисциплины немного вводящим в заблуждение и вместо этого предпочитают называть его « Вычислительная наука». Как сказал Кейт Смилли в «Вычислительной науке в университете Альберты, 1957 — 1993» :

Выбор названия «вычислительная наука» вместо более распространенной «информатики» был осознанным, чтобы показать, что основой дисциплины должны были быть компьютеры, а не компьютеры.

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

Понравилась статья? Поделиться с друзьями:
JavaScript & TypeScript
Adblock
detector