Перевод статьи из блога Свободный разум .
Недавно я наткнулся на два текста, на которые просто не мог не отреагировать.
Первая, самая худшая, это статья на Daily WTF. «Программирование — отстой! Или что-то вроде того" .
Второй пост про Почему функциональное программирование не набирает популярность? .
Попробовав себя в той или иной степени практически во всех сферах ИТ-индустрии, я убежден, что неинтересных нетривиальных задач не существует. По очень простой причине: любую скучную, тривиальную, механическую работу должна выполнять машина.
Нет, серьезно! Мы программисты .
Кто, как не мы, способен облегчить нашу работу с помощью компьютеров, если мы делаем то же самое для других? Программирование может быть отстойным только для полных идиотов.
Пять строк кода, повторяющихся снова и снова, для установки свойств пользовательского интерфейса? Бог! Вы когда-нибудь слышали о рутине? Абстракции? Как насчет генерации кода или может стоит написать DSL ? Хорошо, если вы скопировали эти пять строк всего пару раз, ничего страшного.
Но если вы делаете это снова и снова (иногда слегка редактируя эти строки), вероятно, стоит подумать о том, как абстрагировать это.
Абстракции помогают увеличить соотношение интересной и рутинной работы, сокращая объем утомительного кода.
Если вместо пяти строк кода, повторенных десять тысяч раз, можно написать одну строку, повторенную десять тысяч раз, проект сократится с пятидесяти до десяти тысяч строк кода, которые можно будет написать как минимум в пять, а то и в двадцать пять раз быстрее.
.
Избавьтесь от грязной работы как можно быстрее, и у вас будет больше времени, чтобы заняться действительно интересными делами.
Я ни слова не сказал об изменении языка разработки, я просто говорю о нестандартном мышлении или хотя бы просто мышление .
Но изучение новых языков делает программирование более увлекательным, потому что оно, по крайней мере, дает вам новые инструменты и способы абстракции.
Некоторые языки программирования Фактически лучше, чем другие, и чем больше вы их знаете, тем больше вероятность, что вы знаете какой-нибудь хороший язык.
Если вы не знаете ничего лучшего, вы не сможете этим воспользоваться.
Моим первым впечатлением от статьи в Daily WTF было то, что это очередное проявление синдрома детского голодания в Африке.
Ну, вы видели фотографии.
Ребенок находится в какой-нибудь адской дыре третьего мира, обычно в Африке, но подойдет и Азия или Южная Америка.
Голодные дети, измученные болезнями и паразитами, обреченные на короткую жизнь, полную лишений и жестокости.
Но они счастливо улыбаются, потому что ничего, кроме такой жизни, не знают. Ничего другого они не видели, не слышали о лучшей жизни.
Это их жизнь.
Я часто ловлю себя на мысли, что многие программисты похожи на этих детей.
Они смирились и не видят ничего плохого в написании полдюжины строк кода, задающих свойства интерфейса — потому что не знают, что можно сделать по-другому.
Программное обеспечение, наполненное ошибками и вирусами, раздутое, медленное, совершенно не поддерживаемое – это программирование для них.
Но второй пост меня убедил, что на самом деле ситуация гораздо хуже.
Это не просто невежество.
Многие программисты не только не знают, но и не хотеть не знаю ничего лучшего и нахожу любое оправдание, чтобы оставаться в неведении.
Это как если бы голодный ребенок отказался от предложенной еды.
Дело в том, что я уже услышал каждый аргумент из этого поста.
Видите ли, я стал свидетелем последнего Великого сдвига парадигмы, когда индустрия перешла от процедурного программирования к объектно-ориентированному программированию.
Кроме того, я услышал отголоски предыдущей революции — перехода от неструктурного программирования к процедурному.
Все эти аргументы, а точнее оправдания, я слышал от людей, которые не хотят изучать C++ и Java. Эти оправдания не вписываются ни в какие ворота.
Посмотреть на себя:
Любой пример короче нескольких тысяч строк кода несерьезен и поэтому не может быть принят во внимание.Реальные программы состоят из десятков и сотен тысяч строк, и сохранение пары строк там и сям не играет никакой роли.
Ни один пример длиннее пары десятков строк никто читать не будет, а потому он тоже не учитывается.
Любой пример, в котором используются расширенные возможности языка, доказывает, что язык слишком сложен и труден для изучения.
Любой пример, не использующий эти возможности, отвергается, поскольку язык на самом деле написан не так.
Любой пример, не имеющий прямого отношения к той области, в которой в данный момент работает программист, отвергается.
3D-графика для разработчиков игр, серверные приложения и доступ к базам данных для тех, кто занимается бизнес-логикой, графический интерфейс для разработчиков настольных приложений.
«Какая польза от твоего разговора со мной, если ты не напишешь мой кодЭ» Вы не можете напрямую сравнивать эффективность разных команд разработчиков, потому что способности у всех разные.
Также невозможно сравнивать эффективность одних и тех же разработчиков на разных языках, потому что у всех разные способности к конкретному языку.
Нельзя использовать одни и те же методы для решения одной задачи, потому что этот метод тяготеет к конкретному языку, а на другом языке его надо решать по-другому.
Но если вы все же использовали разные способы, то теплое с мягким сравнивать не с чем.
У вас вообще нет готового сравнения? Это означает, что у вас нет доказательств и ваше мнение предвзято.
В компилятор моего языка вложены сотни человеко-лет, и он производит гораздо более быстрый код, чем компилятор вашего языка, оптимизатор которого какой-то хакер написал на выходных.
Так было и так будет всегда.
Язык может стать популярным только тогда, когда полки книжных магазинов забиты руководствами по нему, он упоминается в глянцевых журналах, которые читает ваш начальник, и тысячи программистов выстраиваются в очередь на тысячи вакансий, требующих этого языка.
То есть единственный способ стать популярным – это быть популярным.
И если ваш язык не популярен, он никогда таковым не станет. Ваш язык труден для изучения.
Мой язык прост, потому что я его уже знаю.
Люди не узнают того, чего они еще не знают. Я слышал, как каждый из этих аргументов одновременно использовался против C++ и Java. Если бы это было правдой, мы бы до сих пор программировали на Фортране и Коболе.
В общем, мы так делаем.
Кобол не засосал сам по себе.
Плохо то, что для установки параметров интерфейса пришлось написать пять строк кода, хуже того, программисты в Коболе даже не пытались выделить абстракции, просто копировали эти пять строк снова и снова.
Я занимался «скучной» обработкой данных.
Оказывается, в этом «скучном» коде можно найти интересная и глубокая проблема .
Когда я хвалю тот или иной язык или парадигму, я не пытаюсь навязать вам какой-то продукт, я просто предлагаю способ избавиться от отстойного программирования.
Отправляйтесь со мной, если осмелитесь, в волшебную страну интересных задач, где вам придется время от времени и ненадолго заниматься быдло-кодированием.
Загадочная страна, где жизнь всегда кипит, Ватсон! Как этого добиться, как сделать жизнь лучше? Пойдем со мной туда, где программирование — великое искусство и инженерное чудо эпохи, и совсем не отстой.
Как сделать первый шаг? Во-первых, выучите новый язык.
Теги: #программирование #языки программирования #абстракции #Функциональное программирование #хреновое программирование #wtf #wtf #отстой #Разработка сайтов
-
Электронные Деньги: Нестандартный Подход
19 Oct, 24 -
Полное Копирование И Вставка На Iphone
19 Oct, 24 -
Исходный Код Как Способ Мышления
19 Oct, 24