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

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

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

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

Новости

Публикации

Нейтронные звёзды перед столкновением деформируются не так, как считалось: физики обнаружили три релятивистских механизма, которых не было в моделях

Нейтронная звезда — один из самых плотных объектов во Вселенной. При диаметре около двадцати километров её масса составляет порядка полутора солнечных. Вещество внутри сжато до...

Недостроенный детектор на дне моря поймал нейтрино, которое не смог поймать IceCube. Новая физика или случайность?

В феврале 2023 года детектор ARCA — часть строящегося на дне Средиземного моря нейтринного телескопа KM3NeT — зарегистрировал частицу экстремальной энергии. Мюон прошил...

Обзор наушников CCA Xyrra: скорость и драйв в ультрабюджетном сегменте

Компания CCA, в отличии от Knowledge Zenith, решила зайти с немного иной стороны, и вместо планарного излучателя, как у KZ Duonic, установила арматурный 30118, зато самого последнего...

Обзор увлажнителя воздуха РЕДМОНД HF2213S: Создай свой климат со смартфона

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

Почему кухонная вытяжка начинает шуметь сильнее обычного, и как решить эту проблему

Кухонная вытяжка — один из тех бытовых приборов, к которому быстро привыкают. Пока она работает тихо и незаметно, на неё редко обращают внимание. Но если однажды привычный звук...