Программирование — наука или ремесло? Разбираем «компьютерный» спор по полочкам

✦ ИИ  Этот пост, предположительно, был создан при помощи искусственного интеллекта
Пост опубликован в блогах iXBT.com, его автор не имеет отношения к редакции iXBT.com
| Статья | Оффтопик

Можно ли считать программирование наукой? Аргумент скептиков обычно железный: «Какая это наука, если в ней нет ни одного закона, как в физике? Нет ни одной теоремы! Программа либо работает, либо нет — вот и вся ваша наука». Вопрос честный и, на первый взгляд, логичный. Вот только проблема в том, что мы пытаемся измерить объем жидкости линейкой. Инструмент не тот.

Автор: aistudio.google.com Источник: aistudio.google.com

Миф о «нет теорем». Где у программиста своя «физика»?

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

Каждый раз, когда вы вбиваете что-то в поисковике или сортируете таблицу в Excel, в работу включаются алгоритмы, основанные на строгой математике. Например, существует целая теория, которая доказывает, что отсортировать массив данных, просто сравнивая элементы друг с другом, быстрее, чем за определенное количество операций (условные N*logN), в принципе невозможно. И прежде чем знатоки в комментариях вспомнят про поразрядную сортировку, сразу оговоримся: да, есть узкоспециализированные методы для особых данных, которые могут быть быстрее. Но для общего случая — это фундаментальный предел. Такой же непреодолимый в своей области, как скорость света в физике. Вы можете изобретать сколько угодно велосипедов, но быстрее этого предела не прыгнете.

Или взять CAP-теорему, которую знает любой разработчик высоконагруженных систем. Она гласит, что любая распределенная система (вроде соцсети или банковского приложения) может одновременно гарантировать только два из трех свойств: согласованность данных, доступность сервиса и устойчивость к сбоям. Все три вместе — никогда. И когда инженеры проектируют какой-нибудь Amazon, они не гадают на кофейной гуще, а делают осознанный выбор, чем пожертвовать, опираясь на эту доказанную теорему.

А уж про булеву алгебру и говорить нечего. Это фундамент, на котором стоит вообще всё. Каждое условие if в программе, каждая проверка в цикле while на самом низком уровне превращается в простейшие операции «И», «ИЛИ», «НЕ». Вся логика работы любого процессора — это чистая математика, без которой ни один транзистор не поймет, что ему делать.

Простая аналогия: хороший каменщик не пересчитывает сопромат для каждого кирпича. Но если он построит стену, нарушив законы физики, она рухнет. Точно так же и программист: он не доказывает теоремы каждый день. Но вся его работа стоит на фундаменте Computer Science, и если он этот фундамент игнорирует, его «стена» из кода рано или поздно тоже рухнет.

Автор: aistudio.google.com Источник: aistudio.google.com

Чистая, прикладная, инженерная. Раскладываем по полочкам

Главная путаница возникает из-за того, что слово «наука» — одно, а суть у него разная. Давайте на простом примере.

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

Теперь перенесем эту модель на нашу тему:

  • Чистая наука: математик доказывает теорему о пределах вычислимости.
  • Прикладная наука (Computer Science/Информатика): ученый на основе этой теоремы разрабатывает универсальные алгоритмы, структуры данных и методы программирования.
  • Инженерия (Программирование): инженер-программист, используя эти алгоритмы и методы, пишет код для конкретной задачи — мобильного приложения, сайта или системы управления станком.

Так вот, программирование в его повседневном виде является по своей сути инженерной дисциплиной. А вот информатика (Computer Science) — это прикладная наука, на которой эта инженерия базируется. Сравнивать программирование с физикой — это то же самое, что сравнивать работу конструктора на АвтоВАЗе с исследованиями Стивена Хокинга. И то, и другое — сложнейшая интеллектуальная деятельность, но цели и методы у них разные.

«Постойте, — скажет тут самый упрямый скептик, — если есть наука, то где ученые? Не бывает же докторов программистских наук!» А вот тут он ошибется.

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

Автор: aistudio.google.com Источник: aistudio.google.com

Так наука или ремесло?

Сама постановка вопроса — ловушка. Это как спорить, чем является стройка — тасканием кирпичей или сопроматом? И тем, и другим. Можно научиться месить раствор и класть кирпич. Собрать из этого сарай на глазок — вполне себе ремесло, и в нем нет ничего зазорного. Но чтобы этот сарай не поплыл по весне, нужны уже базовые знания о грунтах и нагрузках. А чтобы построить мост, по которому без опаски поедут поезда, нужно быть инженером, досконально знающим тот самый сопромат.

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

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

Изображение в превью:
Автор: aistudio.google.com
Источник: aistudio.google.com
Автор не входит в состав редакции iXBT.com (подробнее »)
Об авторе
Пишу статьи на различные темы.

3 комментария

m
Статья ни о чем… Если бы было дано определение науки и программирования то был бы предмет. А так обсуждать нечего…
Что в программировании с критерием Поппера?
S
Еще один «не ответ» на вопрос которого не было…
K
Автор задал интересный вопрос и интересно порассуждал.
Из этого рассуждения можно извлечь новую информацию.
Вообще интересно было бы найти рассуждения о программировании
с метафизической точки зрения. И открыты ли подобные законы,
согласно которым программирование вообще возможно в нашем мире.
Как раз это и искал.

Добавить комментарий

Сейчас на главной

Новости

Публикации

Год использования: обзор TWS-наушников Anker Soundcore P40i

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

Планшет, за который не страшно: обзор защищенного планшета Cubot TAB KingKong S

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

Самодельная домашняя приточная вентиляция V4.0

Сделал очередную систему домашней приточной вентиляции, применив новый способ изготовления корпуса — простой и дешёвый. Приточная вентиляция нужна для того, чтобы можно было жить, дыша...

Обзор Technо Spark 40C – что умеет бюджетный смартфон за 8000 рублей

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

Обзор Cudy P2 – Wi-Fi роутера / Mesh-модуля с поддержкой 4G/5G

Cчитается, что корни компании Cudy тянутся из недр незабвенного TP-Link. Однако, подход к роутерам и мэш-системам у Cudy в корне отличается, в лучшую сторону. Дело в том, что, практически, каждый...

4 000 000 000 000 000 000 проверок впустую: почему современные процессоры бессильны против гипотезы Гольдбаха

Эту задачу поймет первоклассник, но её не могут решить уже 300 лет. Простая арифметика сломала зубы величайшим гениям, а метод «грубой силы» и 4 квинтиллиона проверок оказались бесполезны.