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

✦ ИИ  Этот пост, предположительно, был создан при помощи искусственного интеллекта
Пост опубликован в блогах 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 (подробнее »)
Об авторе
Наука и космос, флора и фауна. Для связи: kifloblog@yandex.ru

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

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

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

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

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

Новости

Публикации

Зачем за головой Линкольна на горе Рашмор вырубили тайную комнату?

На большинстве фотографий горы Рашмор виден только её знаменитый фасад: высеченные в граните лица Джорджа Вашингтона, Томаса Джефферсона, Теодора Рузвельта и Авраама Линкольна. Однако с...

Звук дискретен: физики впервые зафиксировали квантовый скачок в реальном времени

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

Чем отличаются дешевые механические клавиатуры от дорогих: за что действительно приходится платить

Разница между бюджетной механической клавиатурой за $20-30 и флагманской моделью за $150-300 давно вышла за рамки обычной надежности. Внешне они могут выполнять одну и ту же функцию, но с...

Из-за ошибки в калибровке «Джеймс Уэбб» случайно открыл быстрый способ искать экзопланеты

В наблюдательной астрономии точность фундаментальных измерений зависит от стабильности опорных источников. Чтобы переводить электрические сигналы детекторов в физические величины —...

Почему магнитные свитчи лучше механических и какие преимущества они дают

Магнитные свитчи (переключатели на эффекте Холла) совершили революцию в мире периферии для киберспорта и работы. В отличие от традиционной механики, где регистрация происходит за счет физического...

Как Торричелли измерил давление воздуха с помощью ртутной трубки

Воздух кажется почти идеальным кандидатом на роль «ничего». Его не видно, он проходит между пальцами, а человек обычно замечает его только тогда, когда воздух превращается в ветер. Поэтому мысль о...