* мечтательно * Что может быть лучше языкосрача на выходные?
Пост написан как ответ на 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 и пилим свои парсеры.
Пишем десктопное приложение, нужно пару формочек — пишем на Дельфях и не паримся. Нужна кроссплатформенность и не страшно, что иногда во время сборки мусора наше приложение будет тормозить, а также есть много денег на программеров — пишем на Джаве. Если тормоза не нужны — пишем на сях и делаем разные билды под основные оси.
А когда выросло приложение — поддерживаем, переписываем с нуля, если нужно.
Ведь самое главное — это решение проблемы. Если вы будете поднимать гитлаб, редмайн и рельсы полдня на новой ВПС, а ваш конкурент запустит первое приложение за час на готовом ПХП — он обошел вас, решил проблему быстрее. А вот если потом, когда вы оба правильно стартовали, он не додумается оптимизировать свое приложение, вплоть до смены технологии, когда появится __проблема__ быстродействия, масштабирования кода и так далее, то уже вы обойдете его, выбрав верный инструмент.
Поэтому я бы переориентировал свое
В завершение всего лишь одно хочу сказать. Инструменты бывают разные, плохие и хорошие, но вечная классика остается классикой. Поэтому всем, кто еще не изучил, советую язык Си, как базовый инструмент, ибо на нем писали выдающиеся программисты выдающиеся системы (*nix) и софт. Это сделает вам левел-ап и позволит без проблем в PvP нагибать тех, кто сями не владеет, тролля арифметикой указателей и другими чудесами.
Автор: Cord