Современного IT-специалиста, вопреки представлениям людей, действительно далеких от решения серьезных задача в программировании, сложно представить себе без серьезной математической подготовки.
Чаще всего противники необходимости получать программисту качественное высшее образование указывают на то, что при написании стандартного кода не требуется глубокого знания математики. Но оппоненты такой точки зрения считают, что математика не нужна только тогда, когда программист работает в рамках заданной парадигмы, когда перед ним ставится задача написания простого кода без необходимости размышления над архитектурой программы. Примером необходимости знания высшее математики для программиста сторонники получения высшего образования называют линейное программирование.
Данная математическая дисциплина, область задач которой находится в решении задач на экстремумы на множествах многомерного пространства, чаще всего оперирует линейными уравнениями. Кроме уравнений в данной теории нередко применяются и системы линейных неравенств. Как уже можно заметить, вряд ли изготовление сайтов Москва потребует знания основ линейного программирования (действительно, зачем верстальщикам обладать умениями в решении систем линейных неравенств?), но при решении более сложных задач, свойственных сфере ИТ, без знания основ линейного программирования программист может показать свою полную несостоятельность.
Примером применения в практическом программировании этой математической дисциплины может считаться симплекс-метод, при помощи которого решается общая задача линейного программирования. Тщательно разработанный алгоритм может быть применен в простых системах, связанных с учетом поступления и расходования денежных средств у клиентов операторов связи (биллинг), созданием учета электронной очереди и прочих задач такого уровня. Линейное программирование оптимальное решение достигается с симплекс-методом только на задачах первичного уровня, так как этот алгоритм обладает экспоненциальной сложностью. В качестве иллюстрации применения такого метода можно привести задачи, в которых перебираются последовательно вершины большого многогранника, которые являются совокупностью решений во время поиска наиболее оптимального решения задачи.
Для решения более сложных задач, которые в ИТ-сфере обычно относятся к проектам большой сложности, связанных с функционированием множества объектов, сегодня применяются методы нелинейного программирования.
