Программирование – наука или искусство? Программист – ученый или писатель? Поразительно, как одной области удается сочетать несочетаемое!

У нас нужен php программист.

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

Итак, что нужнее программисту: математический талант или мастерство писателя?

Математика

Некоторые области программирования – это чистая математика:

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

Проблемы и их решение
Математика и компьютерная наука имеют очень схожий взгляд на то, как надо решать проблемы. Они без всякого опасения берут большую сложную задачу и делят ее на множество маленьких и простых подзадач. Затем решают каждую отдельно, объединяют результаты и – вуа-ля! – находят ответ.

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

Заходит однажды тестировщик в бар.
Забегает в бар.
Пролезает в бар.
Танцуя, проникает в бар.
Крадется в бар.
Врывается в бар.
Прыгает в бар
и заказывает:
кружку пива,
2 кружки пива,
0 кружек пива,
999999999 кружек пива,
ящерицу в стакане,
–1 кружку пива,
qwertyuip кружек пива.

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

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

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

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

Программирование == математика?
Разумеется, нет.

Многие программисты легко могут прожить без математики как таковой. Однако владение математическим подходом – это всегда огромный плюс. Практически все IT-профи сходятся в том, что программист без математики – это маляр, с ней – художник.

Мудрые преподаватели знают, насколько это важно. Keith Devlin (знаменитый британский математик) рассказывает, что престижные университеты зачастую требуют от студентов computer science пройти курс высшей математики, чтобы развить эту способность.

Зачем программисту математика?
Приводит ум в порядок. (с) М. В. Ломоносов.
Некоторые области computer science – это чистая математика.
Математическая абстракция позволяет взглянуть на задачи под другим углом и лучше описывать объекты реального мира.
Понимание алгоритмов и оценки их эффективности.
Работа с функциональными языками.
Если вы хотите стать художником от программирования, держите наши подборки полезных книг и ресурсов по математике:

Математика для программиста: советы, разделы, литература
Математика для программистов: 7 крутых YouTube-каналов
4 книги, которые разбудят в вас математика
Актуальная математика: самый понятный курс по анализу данных

Писательское мастерство

Заходит однажды тестировщик в бар.
Забегает в бар.
Пролезает в бар.
Танцуя, проникает в бар.
Крадется в бар.
Врывается в бар.
Прыгает в бар
и заказывает:
кружку пива,
2 кружки пива,
0 кружек пива,
999999999 кружек пива,
ящерицу в стакане,
–1 кружку пива,
qwertyuip кружек пива.

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

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

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

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

Программирование == математика?
Разумеется, нет.

Многие программисты легко могут прожить без математики как таковой. Однако владение математическим подходом – это всегда огромный плюс. Практически все IT-профи сходятся в том, что программист без математики – это маляр, с ней – художник.

Мудрые преподаватели знают, насколько это важно. Keith Devlin (знаменитый британский математик) рассказывает, что престижные университеты зачастую требуют от студентов computer science пройти курс высшей математики, чтобы развить эту способность.

Зачем программисту математика?
Приводит ум в порядок. (с) М. В. Ломоносов.
Некоторые области computer science – это чистая математика.
Математическая абстракция позволяет взглянуть на задачи под другим углом и лучше описывать объекты реального мира.
Понимание алгоритмов и оценки их эффективности.
Работа с функциональными языками.
Если вы хотите стать художником от программирования, держите подборки полезных книг и ресурсов по математике:

Математика для программиста: советы, разделы, литература
Математика для программистов: 7 крутых YouTube-каналов
4 книги, которые разбудят в вас математика
Актуальная математика: самый понятный курс по анализу данных
Писательское мастерство
Каким же талантом прежде всего должен обладать идеальный программист? Должен ли он легко щелкать математические задачки или писать красивый и логичный код? Вероятно, вы уже знаете ответ.

У computer science, безусловно, много общего с математикой. Математический склад ума – большое преимущество в этой области. А работа над кодом очень напоминает работу над литературным произведением. Можно даже сказать, что программирование – это математическое ядро в литературной оболочке.

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

А как вы считаете, будет ли хороший писатель лучшим программистом, чем плохой?

Рубрики: Перевозки

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *