Я займаюся програмуванням 8 років професійно, а з 12 років я хобі.
Математика не потрібна, логіка - це. Математика жахливо корисна, хоча сказати, що це не обов'язково - це як сказати, що для вбивства людини пістолет не потрібен, ви можете використовувати ніж. Що ж, це правда, але цей пістолет значно спрощує.
Є пара голих мінімумів, які ви вже повинні зустріти. Вам потрібно знати основні алгебраїчні вирази та позначення, а також загальні комп’ютерні еквіваленти. Наприклад, потрібно знати, що таке експоненція (від 3 до 3 - це 27), а загальний комп’ютерний вираз - 3 ^ 3. Загальні позначення алгебри змінюються між мовами, але багато з них використовують дещо уніфіковану методологію. Інші (дивлячись на вас LISP) цього не роблять. Також потрібно знати порядок операцій.
Вам потрібно зрозуміти алгоритмічну думку. Спочатку це, потім це, виробляє це, що використовується в цьому розрахунку. Швидше за все, ви це розумієте чи не знаєте, і стрибати досить важко, якщо ви цього не розумієте; Я виявив, що це щось, що ти отримуєш, а не насправді те, чого ти можеш навчитися. І навпаки, деякі люди не "отримують" мистецтво. Вони не повинні стати малярами. Також у навчальній програмі CS були студенти, які не можуть зрозуміти, чому це не працює: x = z + w; z = 3; у = 5; Це не те, що вони не розуміють доповнення, це те, що вони не сприймають вимоги однозначного вираження. Якщо вони це розуміють, комп’ютер теж повинен, правда? Якщо ви не можете бачити, що трапляється з вищезазначених трьох рядків, тоді не станьте програмістом.
Нарешті, ви повинні знати, що саме математика під вашим доменом програмування. Облікове програмне забезпечення може зупинитися на базовій алгебрі. Якщо ви програмуєте фізику, вам потрібно знати фізику (вільно) та математику в тривимірній геометрії (Евклідова). Якщо ви програмуєте програмне забезпечення архітектури, вам потрібно знати тригонометрію.
Це ходить далі, ніж математика; який би домен ви не програмували, вам потрібно чітко розуміти основи. Якщо ви програмуєте програмне забезпечення для аналізу мови, вам потрібно знати ймовірність, статистику, теорію граматики (кілька мов) тощо.
Часто для певних доменів потрібні знання, які, на вашу думку, не пов'язані між собою. Наприклад, якщо ви програмували аудіо програмне забезпечення, вам потрібно знати тригонометрію, щоб мати справу з формами хвиль.
Величина також змінює речі. Якщо ви сортуєте набір фінансових даних з 1000 позицій, це не велика річ. Якщо б це було 10 мільйонів записів, ви б великою користю від того, щоб насправді знати векторну математику та глибоке розуміння сортування на бінарному рівні (як система сортується за алфавітом? Як вона знає, що "a" менше, ніж "b '?)
Ви дізнаєтесь, що як програміст ваша загальна база знань вибухне, тому що кожен проект потребує більшого навчання поза межами прямої сфери програмування. Якщо ви пихаті або ледачі щодо самонавчання і вам не подобається ідея витрачати 10+ годин на тиждень, роблячи по суті «домашні завдання», не станьте програмістом.
Якщо ви любите роздуми, якщо вам подобається вчитися, якщо ви можете думати про абстрактні речі, такі як математика без калькулятора чи дизайн без ескізу, якщо у вас є широкі смаки в житті та захопленнях, якщо ви самокритичні і можете кинутись ' вподобав ідеї, якщо вам подобається вдосконалювати речі, тоді станьте програмістом. Не базуйте це рішення на математиці, а навпаки, на вмінні логічно мислити та вчитися. Це те, що важливо; математика - лише побічний продукт.