nodejs честно заявляет: «в паралельное програмирование лучше не соваться. Вот тебе неблокирующее io, но с образовавшимися в результате евентами **ись сам»
А го/ерланг говорит «я тут навернул собственный шедулер поверх ОС, чтобы ты мог писать в стиле php и не париться о сложностях» (и шепотом добавляет: «это делает меня узкоспециализированным недоязычком, но ты не думай об этом»)
python/ruby - для простого веба
scala/java/go - для нагруженного веба
с++/c - для адски нагруженного веба и/или веба с тяжелыми расчетами, большими данными, особой структурой хранения.
чтобы ты мог писать в стиле php и не париться о сложностях
полная ерунда
nodejs честно заявляет: «в паралельное програмирование лучше не соваться. Вот тебе неблокирующее io, но с образовавшимися в результате евентами **ись сам»
Go скрывает от тебя евент луп за фасадом красивой абстракции горутин, так же как массоны скрывают от тебя суть денег за инфляцией и ставкой рефинансирования. А nodejs заставляет задуматься о том как реально работает aio.
После ноды можно стать Сысоевым почти безболезненно пересесть на чистый select/poll. А после го можно пересесть только на очередную песочницу с корутинами
Взависимости от требований проекта. Если под заказ - на PHP (проще слить сопровождение на кого-нибудь со стороны). Если под свой проект - исходя из бюджета: если бюджет, из соображений зарплаты vs затраты на железо, перекошен в сторону железа - похапэ, жабка, руби, пистоны там всякие. Если нормально сбалансирован - жабка, пистон, руби, голанг, с++. Если перекошен в сторону зарплат - c/c++, golang, можно даже и rust, главное на хипстера не нарваться.
Они отражают направление международной программерской мысли
речь не о жумлистах а о более продвинутых коммандах
И где эти продвинутые команды? Кроме шумихи вокруг докера, больше ничего и не слышно.
java параша.
А вот про java и «более продвинутых коммандах» очень хорошо слышно.
в жопу ваш жс-шоп, ты себя макакой или программистом считаешь?
Я использую инструменты по назначению.
Например, я кучу лет пишу на java, но когда меня попросили сделать небольшой каталог товаров. То я не стал поднимать отдельный инстанс томката и прикручивать к нему Hibernate со Spring'ом.
За место этого взял из гитхаб трендов CMS с большим кол-ом звездочек. Поставил node.js и за полдня поднял проект с кастомным дизайном и кастомными формочками, не понимая чего-либо в этой node.js (правда с хорошим знанием клиентского javascript).
И он уже полгода в аптайме, ни разу не грохнулся.
А сейчас и подавно пилю на es6 с nashorn на бекенде замену angular2, ибо текущее состояние веб-фреймворков на любом ЯП вызывают печаль и безвыходность. Так как проблема не в ЯП, а в инфраструктуре вокруг этих ЯП. И пример тому, ruby, восход и закат его целиком на RoR.
Макаке вообще желательно оставаться в песочнице и не спускаться на уровень ОС. Треды? Потоки? Неблокирующий ввод? Зачем об этом думать если есть корутины
Макаке вообще желательно оставаться в песочнице и не спускаться на уровень ОС. Треды? Потоки? Неблокирующий ввод? Зачем об этом думать если есть корутины
Подходящий инструмент это как раз тот где про это знать и не надо, если задача с этим прямо не связано. Да, я не хочу знать про ряд инженерных проблем когда голова забита и без того мозговыносящей логикой заказчика. И да, я могу опустится на уровень ОС когда задача этого требует
Да, я не хочу знать про ряд инженерных проблем когда голова забита и без того мозговыносящей логикой заказчика.
Треды и евентлуп - это не инженерные проблемы, а принцип работы многозадачности практически всех электронных устройств
И да, я могу опустится на уровень ОС когда задача этого требует
If a goroutine exists that calls a function that will block potentially indefinitely, that goroutine cannot be stopped until the blocking function returns and the goroutine checks an «exit» channel, and exits of its own will.
In every day go programming, this condition should not exist, as all inter- thread communication, as well as reading and writing, should be done using channels. However, in C, many libraries (and, in my specific case, networking libraries) implement blocking functions (recv), and the mixture of a blocking function and a multi-channel select caused many implementation problems and «hacks» to get the «blocking» function to return periodically, so the exit channel could be checked, and the routine could exit if it had to.
Да, я не хочу знать про ряд инженерных проблем когда голова забита и без того мозговыносящей логикой заказчика
Я вначале также считал, что горутины это очень круто и пускал слюни. Но когда всерьез разобрался с неблокриующим вводом, пулом тредов, узнал про акторы, дисрупторы, форк/джойны.
Вот тогда-то в голове и щелкнуло, что горутины это полная хрень ограничивающая творчество разработчика. Но, да, спасибо Go, что популязировали эту тему и мне стало интересно разобраться как это работает под капотом.
И да, я могу опустится на уровень ОС когда задача этого требует
Вот только собратья по Go тебя не поймут. Воистину переизобретение php с примесью костылей из javascript )
Я просто не пойму, почему ты называешь парашей язык с потоками. Называешь макаками пользователей языка с евентлупом. Но при этом молишься на язык, полностью построенный вокруг одной дырявой абстракции
ну значит ты глухой видимо, это то что я вспомнил из продакшен примеров вокруг чего идет шумиха за последний месяц, это не академические подделки, а реальные тулзы которыми пользуются реальные компании, для какой нибудь скалки за 12 лет меньше сделали чем на go за пару-тройку