Настолько — не может. Разница в триста с лишним раз, при втором результате близком к нулю, означает только одно: продукт может быть идеален, но если вам не повезет и вы уткнетесь в единственный баг, вы со своей проблемой останетесь наедине.
Я не вижу смысла. Статическая типизация вытащит один камешек из огромной груды проблем js. У нас довольно специфический бизнес, кроме того, поэтому клиент все равно очень тонкий и с ним как раз проблем особых нет. И уж если мы решим куда-то переходить — то точно не на TypeScript.
Ну и, опять и снова: статическая типизация ортогональна TDD. И кроме хайпа я не слышал внятных аргументов в ее пользу. А TDD дает ощутимую пользу сразу, вне зависимости от типизации.
Кстати, работы Гойи «Черного периода» — удовлетворяют как раз очень внятному критерию того, что они — настоящее искусство. Мне лично (да и, по моим наблюдениям, многим людям вокруг тоже) пришлось выйти из зала, а затем и вовсе из Прадо на свежий воздух на часа полтора, чтобы потом вернуться их «досмотреть». Я ничего сильнее по воздействию не видел в своей жизни. Они буквально завораживают нахрен (именно так).
К сожалению, репродукции этого не передают никак.
Но этот критерий, конечно, применим только как лакмусовая бумажка: по отсутствию такого эффекта, разумеется, нельзя сказать, что автор — маляр.
Но если автор может _так_ — мгновенно понимаешь, что все эти разговоры про похожесть на оригинал и фотографическую точность — ерунда. Изобразительное искусство не про это.
Ну вот, вы говорите разумные вещи, сразу интересно стало.
Я на sidekiq ссылку дал просто потому, что он первый подвернулся: это я несомненную глупость сморозил. Но я уверен, что кто-то что-то подобное на чистом js давно написал. Сам же «менеджер задач» лишней сущностью не бывает никогда, вы самому себе вчерашнему миллион раз спасибо скажете, когда можно просто будет в очередной раз просто выплюнуть куда-то в заоконный космос задачу, а оно все само по времени разрулит. Ручки из фронтенда — они ровно про это, я уже забыл, как это: жить без крона. Разумеется, я не имел в виду нагружать воркер.
Вообще, вся эта история про лучше быть богатым и здоровым, чем наоборот. Все, что вы говорите — верно, в той или иной степени. Просто я давно понял, что мне проще связываться с теми проблемами, с которыми сто́ит связываться.
Да, программистов проще найти на руби/питоне (на js не смотрел, уверен, что тоже), но зато эрланг позволяет сразу зачеркнуть такой широкий круг проблем, что о выборе не жалею ни разу. Да, фронтенд пришлось отделить в отдельную команду, зато у нас _совсем_ нет связности между ними и куски легко пробуются на Elm’e, например (пока ощущения позитивные).
Ну и самое главное: я понимаю, что выбор языка может быть определен перпендикулярными требованиями, но все задачи, описываемые вами, по уму решаются не скриптами, а на коленке — скриптами, запускаемыми из консоли ноды. Если у вас есть просто скрипт в вакууме, который загружает лишнюю ноду в продакшене — значит где-то что-то пошло не так. И да, все умеют и могут в таком случае вбить костыль, но по уму все-таки так делать не нужно.
Я же с этого начинал, причем довольно дружелюбно. У меня вот атом сегодня отказался из исходников собираться, я полез смотреть, что у меня не так с этим зоопарком, и мне чуть худо не стало. Даже go в свете написания скриптов выглядит изящней, он хотя бы не запутается в собственных зависимостях :)
> логично использовать тот же язык программирования,
> на котором реализовано основное приложение
Разумеется, с этим никто и не спорит.
> Нужен ручной/по расписанию перенос пользователя из одного инстанса БД в другую.
У вас что-то не так с архитектурой. Это задача для самой базы, а не для стороннего скрипта.
> Нужен тяжёлый фоновый расчёт, выполняемый по расписанию.
Менеджеры задач придуманы как раз для этого: https://www.npmjs.com/package/sidekiq
> Нужны какие-то разовые наколеночные отчёты по данным БД.
Я в таком случае вкручиваю ручки под суперадмином во фронтенд и дергаю их хоть с Багам через веб-интерфейс. Не могу себе представить ситуацию, когда скрипт командной строки тут уместен.
Я никогда не предлагал сделать еще одну имплементацию бизнес-логики на баше (или вообще на чем-то другом). Просто если сначала думать, а потом делать — скрипты на js (а еще фронтенды на шелле, базы данных на хаскеле и бекэнды на си) писать не придется. Вот и все.
> современным языкам разработки, вроде Node.js/PHP/Ruby/Python
Один из них вообще не язык разработки, остальные три уже совершеннолетние (старше двадцати одного года). Вы почитайте какой-нибудь дайджест новостей из мира технологий, что ли.
Я это написал в первом же комментарии в этой ветке.
Но тут, видите ли, собрались люди не желающие марать руки об изучение новых (старых?) языков, поэтому я уже и программистов оскорбляю, и недалекое хамло с ограниченным кругозором, и вообще.
Настоящим профессионалам с широчайшим кругозором правильнее все запилить на том языке, который они вызубрили, а там пусть девопы и прочие коллеги хоть подохнут.
Давайте вы за себя говорить станете, а советы, что и как делать мне — давать перестанете?
Потому что в моем мире «JS-ник, который занимается своей работой» — в штате не появится никогда. Он на аутсорсе, за три копейки, и к продакшену я его близко не подпущу.
А те, кто в штате, будут использовать _пригодные инструменты_ для своих целей.
> мне важнее, чтобы код, на основе которого работает система,
> был как можно более понятен и удобен для дальнейшего развития
Тогда что там делают JS и PHP?
Кроме того, зоопарк всяких не имеющих к делу приблуд на сервере — всегда признак безграмотности архитекторов (и ведет к взрывообразному увеличению количества потенциальных уязвимостей.)
> Ну и что, что установить их надо на сервер?
> Это так сложно, серьёзно? Мне еще обсуждать это с вами?
Не-не, со мной это обсуждать бессмысленно.
Это не сложно, это вредно. Я не могу себе позволить в продакшн тащить какое-то говно только потому, что программисты настолько криворуки, что пишут скрипты на JS. Вот и все. И PHP там, очевидно, тоже нет.
Продолжайте писать скрипты на PHP, это очень достойное и уважаемое занятие, за которое даже иногда платят деньги.
Если вы не в состоянии прочесть и понять комментарий, на который собираетесь ответить, лучше промолчать.
Но мне не сложно: я для не очень внимательных повторю основную мысль. Bash есть из коробки. PHP там фигурировал в совершенно ином контексте: JS — единственный из тех примерно двадцати языков, которыми я владею, который ужаснее PHP по продуманности парадигмы и, как следствие, количеству разложенных граблей, неконсистентности и удобству применимости в серьезном проекте.
А так–то можно на чем угодно Тьюринг–полном написать что угодно работающее. Но зачем?
Класическая фраза всех людей, у которых нет аргументов.
Нет никакой религии и я никогда не пишу ничего сложнее hello-world на баше. Из этого никак не следует, что js пригоден для написания шелл-скриптов.
Пока вы себе на коленке пишете что-то — пишите хоть в машинных кодах. Но объективная реальность такова, что как только вам захочется написать что-то, чем будут пользоваться люди, вам придется написать это на баше, перле, или, в худшем случае — питоне, потому что 99% людей увидев, например, инсталлятор на js, уйдут навсегда.
Есть, конечно, и контрпримеры, вон чуваки даже электрон запилили, но вы пока, насколько могу судить, не они.
Для Кима — очень даже наоборот, публика, для которой написана эта статья (и которая его знает как того еще хакера, волшебника и рок-звезду) — сразу считает здесь сарказм.
Есть несколько языков, в основе которых лежит один сплошной невероятный design flow. Они неконсистентны, ввиду чего грабли разложены повсюду, заботливо прикрытые костылями. И bash script никак не в этом ряду. А js там на первом месте.
Все нарекания в адрес баша сводятся к: «я бац-бац-и-запустил, а оно мне попереименовывало файлы», а все ответы — к «сходи почитай документацию сначала». Баш может выглядеть гораздо менее дружелюбным, но он прост и — главное — предсказуем.
С js все не так. И, самое главное, мне придется полчаса накатывать обновления инфраструктуры прежде чем я смогу обработать список всех файлов в папке. А чтобы поделиться этим скриптом с женой (в соседнем аккаунте), мне придется объяснять ей, как накатывать ноду. Это не нормально.
Питонисты воюют с рубистами на тему «у кого язык круче». У джсистов война идет про библиотеки. Что, как бы, многое говорит про сам язык. Я не встречал такого количества транспайлеров ни в один другой язык. Даже на COBOL’е до сих пишут его родным синтаксисом. А транспайлер в JS не написал только самый ленивый.
И когда мне начинают рассказывать, что на нем удобно писать консольтые утилиты — да, я беленею.
Я единственный тут помню, что мы в топике про _шелл скрипт_? Откуда, ради всего святого, тут вообще взялась производительность веб-серверов?
Я просто ответил на «чего никак не скажешь о PHP, Bash или Python» (чего, разумеется, делать не стоило, потому что «PHP, Bash или Python» через запятую как бы сразу закрывают тему).
Я даже затрудняюсь как-то это прокомментировать. Тут бред все, от первого до самого последнего слова. Вы хоть понимаете, что такое «скрипт» в данном контексте?
При чем тут вообще сервер? (Кстати, на питоне, например, вообще ничего устанавливать не нужно, чтобы запустить сервер — `python -m SimpleHTTPServer` и в путь).
Во-первых, статья вышла не на хабре, этому списку сто лет в обед и он постоянно дополняется. На хабре появился перевод для тех, кто не умеет читать взрослый интернет.
Во-вторых, я бы не стал винить шелл-скрипты в том, что если ты не понимаешь, что делаешь, то результат может получиться непредсказуемым.
В-третьих, принципиальное отличие шелла от ноды заключается в том, что шелл есть, а ноды нет. Зачем мне это говно в продакшене?
В-четвертых, на фактически всех таргет машинах есть perl, и если скрипт становится действительно сложным, то его имеет смысл писать на перле.
В-пятых, JS как язык не имеет ни одного преимущества перед даже PHP, так что вкупе с перечисленным нет ни единого аргумента в пользу написания на нем скриптов, кроме «я увечный, и больше ничего не осилил».
Настолько — не может. Разница в триста с лишним раз, при втором результате близком к нулю, означает только одно: продукт может быть идеален, но если вам не повезет и вы уткнетесь в единственный баг, вы со своей проблемой останетесь наедине.
Ну и, опять и снова: статическая типизация ортогональна TDD. И кроме хайпа я не слышал внятных аргументов в ее пользу. А TDD дает ощутимую пользу сразу, вне зависимости от типизации.
К сожалению, репродукции этого не передают никак.
Но этот критерий, конечно, применим только как лакмусовая бумажка: по отсутствию такого эффекта, разумеется, нельзя сказать, что автор — маляр.
Но если автор может _так_ — мгновенно понимаешь, что все эти разговоры про похожесть на оригинал и фотографическую точность — ерунда. Изобразительное искусство не про это.
Я на sidekiq ссылку дал просто потому, что он первый подвернулся: это я несомненную глупость сморозил. Но я уверен, что кто-то что-то подобное на чистом js давно написал. Сам же «менеджер задач» лишней сущностью не бывает никогда, вы самому себе вчерашнему миллион раз спасибо скажете, когда можно просто будет в очередной раз просто выплюнуть куда-то в заоконный космос задачу, а оно все само по времени разрулит. Ручки из фронтенда — они ровно про это, я уже забыл, как это: жить без крона. Разумеется, я не имел в виду нагружать воркер.
Вообще, вся эта история про лучше быть богатым и здоровым, чем наоборот. Все, что вы говорите — верно, в той или иной степени. Просто я давно понял, что мне проще связываться с теми проблемами, с которыми сто́ит связываться.
Да, программистов проще найти на руби/питоне (на js не смотрел, уверен, что тоже), но зато эрланг позволяет сразу зачеркнуть такой широкий круг проблем, что о выборе не жалею ни разу. Да, фронтенд пришлось отделить в отдельную команду, зато у нас _совсем_ нет связности между ними и куски легко пробуются на Elm’e, например (пока ощущения позитивные).
Ну и самое главное: я понимаю, что выбор языка может быть определен перпендикулярными требованиями, но все задачи, описываемые вами, по уму решаются не скриптами, а на коленке — скриптами, запускаемыми из консоли ноды. Если у вас есть просто скрипт в вакууме, который загружает лишнюю ноду в продакшене — значит где-то что-то пошло не так. И да, все умеют и могут в таком случае вбить костыль, но по уму все-таки так делать не нужно.
Я же с этого начинал, причем довольно дружелюбно. У меня вот атом сегодня отказался из исходников собираться, я полез смотреть, что у меня не так с этим зоопарком, и мне чуть худо не стало. Даже go в свете написания скриптов выглядит изящней, он хотя бы не запутается в собственных зависимостях :)
> на котором реализовано основное приложение
Разумеется, с этим никто и не спорит.
> Нужен ручной/по расписанию перенос пользователя из одного инстанса БД в другую.
У вас что-то не так с архитектурой. Это задача для самой базы, а не для стороннего скрипта.
> Нужен тяжёлый фоновый расчёт, выполняемый по расписанию.
Менеджеры задач придуманы как раз для этого: https://www.npmjs.com/package/sidekiq
> Нужны какие-то разовые наколеночные отчёты по данным БД.
Я в таком случае вкручиваю ручки под суперадмином во фронтенд и дергаю их хоть с Багам через веб-интерфейс. Не могу себе представить ситуацию, когда скрипт командной строки тут уместен.
Я никогда не предлагал сделать еще одну имплементацию бизнес-логики на баше (или вообще на чем-то другом). Просто если сначала думать, а потом делать — скрипты на js (а еще фронтенды на шелле, базы данных на хаскеле и бекэнды на си) писать не придется. Вот и все.
Вы диагнозы-то по юзерпику завязывайте ставить.
> современным языкам разработки, вроде Node.js/PHP/Ruby/Python
Один из них вообще не язык разработки, остальные три уже совершеннолетние (старше двадцати одного года). Вы почитайте какой-нибудь дайджест новостей из мира технологий, что ли.
Но тут, видите ли, собрались люди не желающие марать руки об изучение новых (старых?) языков, поэтому я уже и программистов оскорбляю, и недалекое хамло с ограниченным кругозором, и вообще.
Настоящим профессионалам с широчайшим кругозором правильнее все запилить на том языке, который они вызубрили, а там пусть девопы и прочие коллеги хоть подохнут.
Так что вы тут поаккуратнее с перлом :)
> давайте вы перестанете хамить окружающим из-за своего узкого видения
Вы, стало быть, в ветке появились, от входа приплели два аргумента ad hominem, а хамлю — я?
Изящно.
Если я кого и обижал — так это Javascript, но тут мне особо стараться не пришлось, за меня это прекрасно сделали его создатели и матушка-природа.
Потому что в моем мире «JS-ник, который занимается своей работой» — в штате не появится никогда. Он на аутсорсе, за три копейки, и к продакшену я его близко не подпущу.
А те, кто в штате, будут использовать _пригодные инструменты_ для своих целей.
> был как можно более понятен и удобен для дальнейшего развития
Тогда что там делают JS и PHP?
Кроме того, зоопарк всяких не имеющих к делу приблуд на сервере — всегда признак безграмотности архитекторов (и ведет к взрывообразному увеличению количества потенциальных уязвимостей.)
> Это так сложно, серьёзно? Мне еще обсуждать это с вами?
Не-не, со мной это обсуждать бессмысленно.
Это не сложно, это вредно. Я не могу себе позволить в продакшн тащить какое-то говно только потому, что программисты настолько криворуки, что пишут скрипты на JS. Вот и все. И PHP там, очевидно, тоже нет.
Продолжайте писать скрипты на PHP, это очень достойное и уважаемое занятие, за которое даже иногда платят деньги.
Но мне не сложно: я для не очень внимательных повторю основную мысль. Bash есть из коробки. PHP там фигурировал в совершенно ином контексте: JS — единственный из тех примерно двадцати языков, которыми я владею, который ужаснее PHP по продуманности парадигмы и, как следствие, количеству разложенных граблей, неконсистентности и удобству применимости в серьезном проекте.
А так–то можно на чем угодно Тьюринг–полном написать что угодно работающее. Но зачем?
Нет никакой религии и я никогда не пишу ничего сложнее hello-world на баше. Из этого никак не следует, что js пригоден для написания шелл-скриптов.
Пока вы себе на коленке пишете что-то — пишите хоть в машинных кодах. Но объективная реальность такова, что как только вам захочется написать что-то, чем будут пользоваться люди, вам придется написать это на баше, перле, или, в худшем случае — питоне, потому что 99% людей увидев, например, инсталлятор на js, уйдут навсегда.
Есть, конечно, и контрпримеры, вон чуваки даже электрон запилили, но вы пока, насколько могу судить, не они.
Все нарекания в адрес баша сводятся к: «я бац-бац-и-запустил, а оно мне попереименовывало файлы», а все ответы — к «сходи почитай документацию сначала». Баш может выглядеть гораздо менее дружелюбным, но он прост и — главное — предсказуем.
С js все не так. И, самое главное, мне придется полчаса накатывать обновления инфраструктуры прежде чем я смогу обработать список всех файлов в папке. А чтобы поделиться этим скриптом с женой (в соседнем аккаунте), мне придется объяснять ей, как накатывать ноду. Это не нормально.
Питонисты воюют с рубистами на тему «у кого язык круче». У джсистов война идет про библиотеки. Что, как бы, многое говорит про сам язык. Я не встречал такого количества транспайлеров ни в один другой язык. Даже на COBOL’е до сих пишут его родным синтаксисом. А транспайлер в JS не написал только самый ленивый.
И когда мне начинают рассказывать, что на нем удобно писать консольтые утилиты — да, я беленею.
Я просто ответил на «чего никак не скажешь о PHP, Bash или Python» (чего, разумеется, делать не стоило, потому что «PHP, Bash или Python» через запятую как бы сразу закрывают тему).
При чем тут вообще сервер? (Кстати, на питоне, например, вообще ничего устанавливать не нужно, чтобы запустить сервер — `python -m SimpleHTTPServer` и в путь).
Во-вторых, я бы не стал винить шелл-скрипты в том, что если ты не понимаешь, что делаешь, то результат может получиться непредсказуемым.
В-третьих, принципиальное отличие шелла от ноды заключается в том, что шелл есть, а ноды нет. Зачем мне это говно в продакшене?
В-четвертых, на фактически всех таргет машинах есть perl, и если скрипт становится действительно сложным, то его имеет смысл писать на перле.
В-пятых, JS как язык не имеет ни одного преимущества перед даже PHP, так что вкупе с перечисленным нет ни единого аргумента в пользу написания на нем скриптов, кроме «я увечный, и больше ничего не осилил».