Немного о столовых приборах

в 15:40, , рубрики: капитан очевидность, Программирование, скушай Nuts, холивар, метки: , ,

* мечтательно * Что может быть лучше языкосрача на выходные?

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

Бойся не ножа, бойся вилки: один удар — четыре дырки

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

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

И никому в голову не придет резать кусище мяса, отламывая по крошке чайной или же обычной ложкой. Разве что вообще руками есть, но это уже дикари лирические герои детских песен: «если б не было школ, до чего человек бы дошел, ел руками бы мясо сырое и на первое, и на второе».

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

Люди вдруг становятся фанатами ложки или вилки (или вообще китайских палочек), и начинают все кушать с помощью одного инструмента. Одни объединяются в культ «пожирателей с помощью вилки» и нахваливают, что вилкой можно даже воду пить. Другие очевидным образом утверждают это для ложки, что ложка — лучший нож.

Лишь немногие пытаются вразумить фанатов, но это так же бессмысленно, как пытаться убедить Васю, что Самсунг за 10 штук работает не хуже Айфона за 30, и что он просто заплатил 20 штук за понты (даже через год падения цен в три раза на ту версию Айфона до нормальных он вам не признает).

Но вместо обсуждения, почему Си — лучший язык нож лучше вилки, давайте попробуем понять, а зачем все мы, как поется в той песне, сегодня собрались.

D'ogni forma, d'ogni età*

* [он любит дам] всех форм, и всех возрастов (итал.), слова из арии «Madamina, il catalogo è questo» оперы Моцарта «Дон Джованни»

Мое скромное мнение — что нужно инвертировать мышление.
Не задачи под инструмент:
— Парни, я такое вчера читал на хабре! Поставил новую клевую NoSQL Кассандра, давайте че-нибудь на ней запилим из текущих задач?

А инструмент под задачи:
— так, что там, очереди? Стой, Вася, свое будем писать, только если не найдем готового. Гуглим, чего есть готового на тему… О, RabbitMQ, German. Так, а что меньше зависимостей тянет под Фрю, про что хорошо пишут? Ага, Герман, значит Герман.

То есть любое решение принимается по алгоритму
1. Правильно понимаем проблему, а не следствие.
2. Смотрим, можно ли в принципе устранить проблему, без какой-то тулзы.
3. Если нельзя, гуглим все готовые варианты.
4. Определяем параметры, как будем выбирать лучший вариант
5. Выбираем вариант, исходят из п.4 и п.3, не забываем про написание своего, если __ваще не подошло ничего__.
6.…
7. Гешефт!

Конкретно с PHP. Если стоит задача сделать быстрый простой сайт и нет своих серверов — берем PHP, готовую CMS / фреймворк / библиотечки и пишем сайта. По соотношению простота+набор площадок+наличие программистов PHP дерет всех в секторе «дешево и сердито».

Хотим обеспечить себе гемморой с поиском программистов, но мы уверены в своей силе их удержать за счет интересных технологий — берем Питон, Джангу и лепим стартап. Когда Питон начинает течь, как и PHP (а чего вы хотели, интерпретируемый язык без статической типизации), переписываем тормозные куски на сях / плюсах.

Есть у нас друг-перловик, и нужно много парсеров — не выеживаемся, берем Perl и пилим свои парсеры.

Пишем десктопное приложение, нужно пару формочек — пишем на Дельфях и не паримся. Нужна кроссплатформенность и не страшно, что иногда во время сборки мусора наше приложение будет тормозить, а также есть много денег на программеров — пишем на Джаве. Если тормоза не нужны — пишем на сях и делаем разные билды под основные оси.

А когда выросло приложение — поддерживаем, переписываем с нуля, если нужно.

Ведь самое главное — это решение проблемы. Если вы будете поднимать гитлаб, редмайн и рельсы полдня на новой ВПС, а ваш конкурент запустит первое приложение за час на готовом ПХП — он обошел вас, решил проблему быстрее. А вот если потом, когда вы оба правильно стартовали, он не додумается оптимизировать свое приложение, вплоть до смены технологии, когда появится __проблема__ быстродействия, масштабирования кода и так далее, то уже вы обойдете его, выбрав верный инструмент.

Поэтому я бы переориентировал свое мышление на проблемную область и программы для людей. А уже потом — инструменты. Потому что когда я писал шифратор и это было десктопное приложение, меня не тянуло делать его на Перле. И когда на Перле (тогда он рулил, до PHP, 2000х и чуть раньше) я писал систему статистики или систему парсеров, не тянуло делать на Visual C++ эту штуку.

В завершение всего лишь одно хочу сказать. Инструменты бывают разные, плохие и хорошие, но вечная классика остается классикой. Поэтому всем, кто еще не изучил, советую язык Си, как базовый инструмент, ибо на нем писали выдающиеся программисты выдающиеся системы (*nix) и софт. Это сделает вам левел-ап и позволит без проблем в PvP нагибать тех, кто сями не владеет, тролля арифметикой указателей и другими чудесами.

Автор: Cord

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js