Наступая на свежие грабли
К сожалению, часто тот, кто не желает учить ряды Фурье, абсолютно прав. Если вы программист, посмотрите на свою работу со стороны: многим ли из вас понадобилось всё это?
В большинстве случаев программирование сводится к использованию стандартных библиотек и модулей, к умению читать и понимать API и RFC. То есть взять задачу, разложить её на отдельные операции, разобраться со стандартами взаимодействия с прочими системами, подобрать наиболее подходящие решения и быстро реализовать проект. А что на деле?
На деле — стандартных библиотек мы не знаем. Вместо того чтобы подключить уже кем-то написанное, протестированное, реализующее 146% необходимых функций, мы начинаем писать свои аналоги, наступая на свежие грабли.
Мне могут возразить про новые решения взамен устаревших — возможно, так, но помните: «устаревшие» писали, возможно, ещё для процессора 80286, 25 МГц, 512 КБ RAM, экономя каждый такт и байт, а вы щедро разбрасываетесь гигабайтами и гигагерцами. Итог предсказуем: огромный неповоротливый монстр из кривых и сырых библиотек классов, худо-бедно ворочающийся на суперновой девелоперской тачке, но виснущий у пользователей.
Слово RFC вообще многие видят впервые. Некоторые, правда, что-то слышали про ITIL: так вот, те RFC — это другие RFC. Правильно, зачем нам читать унылый формальный документ на английском, когда можно на форуме поискать тему «как работает сервер ХХХХХ?» Ну, несколько ключевых команд не реализовали, ну, некоторые стандартные «расширили», ну, потом пользователи плюются — так это потому, что пусть нашу программу используют, а не какую-то там!
Общего представления об интернет-протоколах они могут вообще не иметь: считают, что HTTP отличается от SSH только номером порта, например. Не знают, что доменное имя www.site.ru
совсем не обязательно означает веб-сайт на сервере site.ru
и совсем не обязательно на российском.
Написать код и скомпилировать его без графического IDE не могут вообще никак. Не знают, чем компиляция отличается от линковки. Зато любят говорить: «Нам необходима распоследняя версия среды разработки и мощный компьютер, а то этот не тянет!» Зато они проходили в институте теорию поля, матрицы, слышали слово «лагранж» и даже почти не списывали на экзамене.
Что же — есть те, кому оно нужно сразу. Но было бы куда полезнее сначала научиться программировать, а потом уже при необходимости лезть в математику, будь то системы помехоустойчивого кодирования, статистический анализ или матрицы с рядами. Просто помните: программирование — это поиск оптимального решения задачи. Вы должны понять её и найти способ реализовать. Если для этого нужна «вышка» — значит, она понадобится. Если не нужна — не стоит тратить силы, всё равно забудете и придётся учиться заново.
Вот если бы это ещё наша система образования поняла…