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

✦ ИИ  Этот пост, предположительно, был создан при помощи искусственного интеллекта
Пост опубликован в блогах 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
Автор задал интересный вопрос и интересно порассуждал.
Из этого рассуждения можно извлечь новую информацию.
Вообще интересно было бы найти рассуждения о программировании
с метафизической точки зрения. И открыты ли подобные законы,
согласно которым программирование вообще возможно в нашем мире.
Как раз это и искал.

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

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

Новости

Публикации

10 причин почему стоит попробовать Linux: контроль над системой, стабильность и свобода выбора

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

Почему газовый кратер Дарваза в Туркменистане горит уже больше полувека

И нет, речь пойдет не о Кольской скважине, которая тоже носит столь громкое название. Вообще, когда речь заходит о создании звучного названия, у людей словно разом отключается креативность. Врата в...

Город под одной крышей: как и зачем 241 человек живёт в одном здании на Аляске, не выходя на улицу

Небольшое поселение Уиттиер, расположенное на территории Аляски, представляет собой уникальный пример урбанистического устройства. Согласно данным World Population Review, по состоянию на 2026 год...

Как выбрать бюджетную видеокарту, которая будет тянуть игры в 2026 году?

Рынок видеокарт в 2026 году стал гораздо сложнее, чем несколько лет назад. Новые модели выходят чаще, технологии апскейлинга перевернули представление о «достаточной» производительности, а вопрос...

Эйнштейн берет реванш: как один тест на согласованность закрыл «самое громкое открытие года» о темной энергии

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

Лонгйир: город, в котором официально запрещено умирать

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