REST-сервис на Python или на JVM-based языке?

Есть ли разница в быстродействии, стабильности платформы, стоимости хостинга?
То есть выбор между Python и JVM (Scala, Kotlin, etc.) можно делать из соображений «просто мне так нравится» или есть какие-то преимущества, из-за которых REST-сервис на одной из технологий делать лучше, чем на другой?

P.S.:
Ruby, Go и прочее не рассматриваю, потому что не знаю их. Уже доволен выше названным.
Это не для работы, это pet project.

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному1
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Если пет, тогда — Python, imho. Быстрее писать, вебхостингов с питоном больше и дешевле, имхо, хотя я давно не интересовался. Но нужно оценить целевую аудиторию, чтобы потом не пришлось переписывать на другой язык.

підкинь VPS за пару дол, який ти сам тестив і не проблювався

hetzner, правда он три, и не долл, а евро)

Не увидел у них этого продукта в принципе. Либо хостинг, либо dedicated.
UPD: Увидел. Хорошо спрятали.

По итогам обсуждения — для одной вещи возьму Python, для другой Scala. Когда более полноценно руки дойдут до Clojure, что-нибудь попробую написать или переписать на нём, потому что просто интересно. С одной стороны — просто интуитивная тяга, с другой стороны — чья-то статья про то, как концептуально прекрасен Clojure.

Scala — це набагато більш складна мова, ніж Java. Думаю, що вивчити її одному, для pet проекту складніше, ніж працюючи на реальному проекті

А что значит выучить? Язык то в принципе не сильно сложный и начать кодить, применяя Scala фишки, не сложно с определённым процентом граблей, таки многое делается приятнее. А вот когда начинаешь наталкиваться на массу загогуленок наваянных учёными, становится грустно.

А як ви оцінюєте складність (або легкість) мови? Для мене складність визначається порогом входження, тобто скільки мову потрібно вчити, щоб почати писати на ній. Або опосередковано — кількістю вакансій. Чим більш мова проста, тим вона більш популярна, тим більше проектів і вакансій. На ДОУ до речі вакансій по Java 344, по Scala 26.

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

Несколько вариантов.
-для специфический областей чистый фп может быть лучше, например парсеры, дсли, компиляторы, итд.
-использование спечефического фреимворка — спарк, акка, плей.
-неявный бонус, но средний общий уровень интересующихся\знающих скалу будет высше чем у людей с «попсовыми» технологиями. Ибо они скорей всего изучали скалу по любопытству, а не на курсах академии шаг.
-сам стартапщик мож выбрать спецефическую технологю потомушо захотелось.

Мені здається, що замовнику взагалі все одно, яка мова. Він що, розбирається в них?

Вибирають швидше за все не розробники. Проект починають ПМ і архітектор, вони вже розглядають технології, базуючись на вимогах замовника, потім вже вибирають розробників на основі згаданих технологій

количество вакансий вообще нипричем к сложности.

Scala — це набагато більш складна мова, ніж Java. Думаю, що вивчити її одному, для pet проекту складніше, ніж працюючи на реальному проекті

А зачем ее выучивать ? базовое ядро не сложнее питона, и его достаточно чтобы рест сервис наваять, и понять надо оно или нет.

Ок, тоді якщо Scala така проста, чому розробники вибирають для вивчення Java і Kotlin серед JVM-орієнтованих мов?

Маркетинг великих компаній, євангелісти =). Мені особисто скала більш логічна за джаву (хоч система типів, хоч інструменти чи синтаксис), ФП-парадигма також не складна і інтуїтивно зрозуміла. Тому вчити її було легше. Звісно там є куди поглиблюватися (і це величезний плюс), але вирішувати аналогічні джаві задачі — просто. Java++ style також ніхто не відміняв

Маркетинг великих компаній,

Не шукайте всесвітньої змови — коли є прагматичні пояснення.

Те що не дає суттєвої переваги у швидкості розробки — не цікаве ані бізнесу, ані середньому програмісту.

По тем же причинам почему для дотнету выбирают C# а не вижуал бейсик или F#,
или для вебу выбирают джаваскрипт а не тайпскрипт или кофескрипт (или что там сейчас в моде).

для вебу выбирают джаваскрипт а не тайпскрипт

Тайпскрипт вполне себе выбирают — хотя бы, потому, что он эффективно предохраняет от ряда «детских» ошибок, которые легко допустить, если писать на vanilla JS.

Более того, TypeScript позволяет очень плавный переход — вначале на нём можно писать просто как на типизированном JS (а, где очень надо — и как просто на JS), и задействовать более продвинутые возможности по мере целесообразности.

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

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

Основная причина чего скала невзлетела — когда там и сям попадаюццо куски написанные в «другой парадигме» и нужно ломать мозг, а не то что желания — времени на это нет, ибо горит продакшн... Народ массово взад на джаву\го и откатился.

Думаю заюзать Ktor для пета, что скажете?

Первый раз встречаю это название.

Я использую pypy+falcon. Как веб сервер gunicorn. Все шустро и прекрасно работает на минимальных впсках.
Ну и джанго-модели к нему можно подключить, если что(но уже без pypy, так и не все работает в нем для джанго)

Я использую pypy+falcon. Как веб сервер gunicorn.

Чем обусловлен такой выбор ?

Просто не скажу, что фласк работает медленно, но он как-то более мейнстримный. Когда берешь что-то не из топа всегда есть риск нарваться на какую-то проблему у которой решение так просто не нагуглишь, а разбираться может быть долго. Потому и интересно с чем же связаны выбор не мейнстримных джанго и фласк, а falcon+pypy/

Простотой задачи? Фалкон от двух до трех раз быстрее фласка на простых api.

когда приходит запрос, запускается демон написанный вами в специальной форме.
У него есть очень много ограничений, в основном на общение с внешним миром, чтоб не делали ДДОС.
Дальше если нагрузка есть, то количество виртуалок с демонами растет. Общаться они напрямую не могут.
Короче стандартный подход как в apache workers только с виртуалками.
Считается полное время, включая старт. Причем считается произведение CPU*RAM. Потому jvm выходит дороже(больше памяти кушает)

Максимальное время процесса — 15 минут. Если запросы идут подряд, то используется та же копия, но постоянно стирается состояние.

Никакого веб сервера у лямбд нет, они реагируют на события. Входящие соединения к лямбде заблокированны полностью. Как веб сервер можно api gateway использовать, стандартно — sqs(очередь от амазона) либо событие по появлению файла в S3

docs.aws.amazon.com/...​y-api-endpoint-types.html

Для pet project разницы большой нет, я бы вообще не заморачивался и брал PHP, благо под него хостинги вылизаны. JVM бери если у тебя много данных надо держать в оперативе, если они достаточно долго готовятся, и если нужно много коммуницировать с другими сервисами. Если же тебе с головой хватает CRUD — бери PHP и не сомневайся, тем более что наработок под него на любой чих — туева хуча и горка сверху. Даже если ты его не знаешь, для пет-проекта тебе не надо его сильно знать.

Мне просто неохота связываться с PHP. :-)

Он не страшный, когда понимаешь ЗАЧЕМ он тебе нужен. И что ты не стремишься его выучить, лишь только пользовать, по большей части чужие наработки.

как ЯП он в разы круче Джавы, да и Питона (за счет тайп хинтинга)
Но байки о нем да, наверное вечны. Это ж думать надо, а не веровать :)

да и Питона (за счет тайп хинтинга)

Добрый вечер — docs.python.org/3/library/typing.html
Единственная ситуация в которой пыха может быть лучше питона — это ситуация когда обиженный на весь мир пхпшник хакнет мир и удалит все сорсы и бинарники питона на всех носителях. Пхп всегда был помойкой не из-за дизайна языка, который безусловно каличный, а из-за качества комьюнити и количества говнокода, которое это комьюнити произвело на свет.
Бида в этой ситуации только в том, что из питона тоже пытаются сделать пхп — за счет перетока пхпшников и притока людей, которые «дупля не отстреливают».

телепатия да, полезный дар :)

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

Программировать они обычно правда так и не научились, но зато ж говнокод на Питоне — это ж уже не говнокод!

а из-за качества комьюнити и количества говнокода, которое это комьюнити произвело на свет.

да, оно такое — боооольшое-пестрое и код пишет — ой разного качества.

для REST пет проекта же — php хороший выбор.
куча отвлекающих от главной идеи проекта рутинных моментов веба избавит.

Но это конечно, если уметь программировать.
А если не уметь — то да. ой, тот ЯП лучший, а вот тот худший, «потому что там комьюнити плохое»
Какое дело до комьюнити когда пилишь свой проектик...
Только одно — еще не решен для себя вопрос кто ты в этом мире.
«Я пишу на питоне!», а ну да, регалия зачетная...

что питон преподают в школе и на курсах,

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

куча отвлекающих от главной идеи проекта рутинных моментов веба избавит.

Как и любой другой язык с развитой веб-екосистемой
Тут вот биполярочка началась

А если не уметь — то да. ой, тот ЯП лучший, а вот тот худший, «потому что там комьюнити плохое»
как ЯП он в разы круче Джавы, да и Питона (за счет тайп хинтинга)

А вот это рофл, часто пилишь роутеры и сервера поверх голого сокета?

Какое дело до комьюнити когда пилишь свой проектик...

Вернемся обратно к главному вбросу, суть которого в том, что автор никогда не видел ни питон ни джаву но решил изобразить ослика из Шрека

«Я пишу на питоне!», а ну да, регалия зачетная...
как ЯП он в разы круче Джавы, да и Питона (за счет тайп хинтинга)
Ну вот примерно то же и представлял собой пыхыпе, только там в основном люди, которые вообще нигде не учились,а решили заработать 5 баксов на фрилансе.

могут заработать 5 баксов — пусть зарабатывают.

Как и любой другой язык с развитой веб-екосистемой

Ясно, понятно, чел в не курсе влияния ЯП на время разработки одинакового функционала.

А вот это рофл, часто пилишь роутеры и сервера поверх голого сокета?

это уже написано.
А я пишу бизнес логику. Писал и на Джаве, и на C#.
За деньги, так что могу сравнивать.

А начинал вообще с plain C.

Вернемся обратно к главному вбросу

Вернемся:
Это не для работы, это pet project

Java убьет ваш стартап. PHP спасёт его.

Конечно, 5тибаксовые питонисты, пхписты, джависты после джавараш, — убъют его независимо от ЯП

Ясно, понятно, чел в не курсе влияния ЯП на время разработки одинакового функционала.

Вернись и перечитывай, пока не поймешь суть.

это уже написано.

А что такого написано для пыхи, чего не написано для руби, питона,жс- что

рутинных моментов веба избавит

Главный поинт статьи.

Java убьет ваш стартап. PHP спасёт его.
PHP-программистов больше и они дешевле чем Java-программисты.
А что такого написано для пыхи, чего не написано для руби, питона,жс- что

сделаете пару проектов на разных ЯП, за деньги, то есть с ограничением по времени — поймете в чем разница.
Пояснять, пока не переболели детской болезнью — бесмысленно.

Вернись и перечитывай, пока не поймешь суть.

неспособен я к пониманию сути. это да...

поймете в чем разница

Значит никаких сильвер буллетов или киллер фич нет. Так бы сразу и сказал.

Настоящая киллер фича для REST — это SQL!

...Убираем монолит и ставим вместо него прокси-сервис, который направляет запросы в нужную базу данных, а затем отдаёт готовый JSON на фронт...
...код стал примерно в 40 раз меньше...
хабр Как Lingualeo переехал на PostgreSQL с 23 млн юзеров
подробности там в обсуждении

а вы о питоне каком-то...

ну вообще-то сторед процедур у меня в проектах тоже хватает :)

не пугать же детей верующих в питон SQLем :D

Настоящая киллер фича для REST — это SQL!

...Убираем монолит и ставим вместо него прокси-сервис, который направляет запросы в нужную базу данных, а затем отдаёт готовый JSON на фронт...
...код стал примерно в 40 раз меньше...

Не SQL, а серверлесс функции, всякие авс лямбды, азуре функции, итд. И из коробки там джаваСкрипт, питон, джава, шарп (и местами го). пхп нет, и не пахнет.

для пет проекта, да, самое то:

серверлесс функции, всякие авс лямбды, азуре функции, итд.

и кафку с эластиксерчем, какой же пет проект без этого.
и ни в коем случае не монолит. только микросервисы, обязательно должны быть кролик и сага!

пхп нет, и не пахнет.

и?
кого это волнует?

не, конечно, кого волнует, того пусть беспокоит :)

Деды, перестаньте ворчать на серверлесс! Он значительно понижает порог входа и количество решаемых задач, разобраться в нем — дело 20 минут

я недавно распрашивал о понимании серверлесс :)

о том — кому нужен сервер то без состояния, то есть без персистентно хранимых данных.

но фронтендеры с их привычкой жать F5 когда что-то пошло не так не понимают что серверлесс — это всего лишь о состоянии «канала связи».
а сервер то обычно как хранил это состояние, так и вынужден хранить, просто с более лучшей горизонтальной масштабируемостью. если она нужна ессно, миллионы пользователей в минуту, хайлоад, все дела — типичный же проект такой, да. редкий программист не работает в FAANG. я вот, да может еще парочку форумчан.

разобраться в нем — дело 20 минут

Разбираться надо уметь в коде проекта, который минимум пару лет в продакшене, писанном несколькими командами.

А разоварчивать «по инструкции с диджиталоушен» — невелика мудрость. Да и обычно на четверть ставки несложно девопса найти :)
Больше ему работы все равно сложно обычно придумать.

фича серверлесс не в перформансе, а в том, что ты не морочишь себе голову во время деплоя. Для пет проекта самое то

а в том, что ты не морочишь себе голову во время деплоя

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

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

если надо, пороюсь в истории браузера :)
но думаю не надо.
раз деплой каким-то боком привязан к типу протокола, да, беда...

и?
кого это волнует?

не, конечно, кого волнует, того пусть беспокоит :)

Да никого ваш пхп и не волнует, закапывайте.

его закапывают с тех времен как я просто услышал это название. задолго до того как увидел строчку кода на нем.

самый закапываемый ЯП, это да.

Ну а что у вас второе имя — Никого, да, не знал :D

ну как у PHP — Закапываемый.

...недавно улыбнула статья про 4ре яп которые не следует изучать.
и там — Haskell.
снобы в негодовании :D
Это те, которые закапывали Джаву и тупых джавистов, неспособных к великим наукам и к настоящему программированию

Айти тусовка полна инфантильности, кланов, пацанвы хоть и с брюшками. Это да :)

Такое есть, правда, для GraphQL. Называется Hasura.

postgrest, postgraphile
я тут навіть питання задавав про них, але з відповідями — глухо-глухо

особливо на великих проектах.

стартапи зазвичай починаються с пет проектів та інших MVP

але то такє, у кожного свій досвід, можливо ви тільки у великих проектах с дитинства, і тому інших не знаєте.

І те що сіньйор пхп на пару сотень дол дешевший за джависта наврядчи робить різницю.

в інеті є доклади, про те скільки функционалу видає сіньйор пхп та джавіст, коли у компанії викорстовуються обидва на різних проектах, але схожих по складності функционалу.

але то звісно не буде переконливим.
Я ж просто писав і на Java і на PHP і розумію чому і головне КОЛИ так.
А коли — не так, і повне безглуздя вибирати PHP/Python, Java, Rust або православний plain C

В связи с этим

Тільки от сучасна типізована мова економить час і додає зручності, а скриптова це завжди скриптова.

предлагаю переписать все на идрисе.

це байка у тих хто далекий від фронтеду.

а там на серьозних проектах вже теж все стабілізовалуса.
І ніхто не перескакує по декілька разів на рік з ангуляру на реакт, а потім з обох на vue

Я й на шарпі можу видавати багато функціоналу(в ньому є var). Але то не буде обдуманий код, і перетворюватиметься на спагеті монстра.

Статична або дінамічна типизація не має відношення до спагеті монстрів

Але ніхто не відміняв преференцій і біазу =)

Але ніхто й не переконує джунів у виборі технологій для проекту та його архитектури

Тільки от сучасна типізована мова економить час і додає зручності,

За все тра платити. За типізацію — теж.
За динамічну типизацію — теж.
За все.

а скриптова це завжди скриптова

Я називаю скриптовими мовами не тьюрінг повні.

А тьюрінг повні, універсальні — то вже нескриптові мови.

Система типів, та їх перевірка — то про інше.
І ще далі засоби компіляції аплікації, рантайм і т.і

Але так, зазвичай в головах вінігрет, та все перемішано.

Ще ні на одному такому не був.

ну то не викорстовуйте цей аргумент, бо навряд чи розумієтеся про проблеми на великих проектах.

Взагалі це не мої фантазії, а загальноприйнята інформація, де я її тільки не знаходив.

Дякую. ви відкрили мені очі. Пішов вчитися :D

Зрозуміло який підхід перемагає

Гібридизація — назва тому підходу.

Час скриптових мов минає.

а Bash — вічний :D

Але так, вважайте що йому скоро кінець.

З динамічною слабкою легше написати поганий код. Вона багато чого дозволяє, і мало чому вчить як все насправді працює.

ну, як у ліда великих проектів, та ментора джунів у вас більший досвід, аніж у мене :)

піду читати загальноприняту інформацію, а то бач, скільки всього нового почув і про «скрипотови мови» і про пайтон!
і генія навіть зустрів!

ДОУ — класний форум!

Якщо Ви прийшли сюди за повагою до свого авторитету

Давно не заходив, забув що на доу неможливо в бан відправити :)
Щоб не ржати з глибоких експертів та телепатів :)

За цим в університет наприклад, самостверджуватись на зелених студентах

зарплатня там вкрай малєнька.
Програмування більш грошей приносить.
Та й цікавіше, як на мене.

Але так, ви глибокий психолог, розумієтесь на людях, і тому дали слушну пораду :)

І легко можна подивити що вставляти і що забирати

Сейчас все вменяемые добавляют type hints в параметрах и на тип возвраемого значения + часто ещё ставится strict_types=1 чтоб вообще не было автоматических преобразований типов нигде.

Но, C# лучше )

Я ж просто писав і на Java і на PHP

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

Ты питон когда либо видел? вопрос риторический.

Я видел (правда, не так, чтобы много). Из курения мануалов сделал вывод, что private members в Питоне бывают, скорее, «по соглашению» — т.е. практически ничего не мешает криворукому программисту к ним доступаться без использования всякой магии типа reflection.

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

Именно поэтому ты пытаешься вбросить дичь о том, что в пхп есть тайпхинты ,а в питоне нет?

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

но про питон да, рассказывайте :)
я его преподаю, если что.

Но вам еще рано, вы даже ни асилили то что в вашей ссылке написано

Note

The Python runtime does not enforce function and variable type annotations. They can be used by third party tools such as type checkers, IDEs, linters, etc.

час скриптових мов закінчується.

Что то ты слишком оптимистичен, если учесть сколько легаси-гауно написано на пхп...

Так все на раст перепишут, тут не только скриптовые умрут.

тревожные новости с полей мой друг, gpg переписывают на расте, скоро и до вас доберутся.

я его преподаю, если что.

Теперь то стало понятно, откуда весь этот треш берется.

они в пхп давно. они там не сбоку прикручены как в пайтоне.

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

давно — серьезный аргумент.

несерьезный конечно. в проектах он давно используется, но это несерьезно, да.

А можно подробней, вот как преподаватель для студента

все есть в общедоступных источниках.

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

Теперь то стало понятно, откуда весь этот треш берется.

к дару телепатии у вас еще оказывается и всевидящей остроты и ясности умище :D
пожалуй оставляю вас с таким набором талантов и познаний.
С горделивой самоуверенностью что вы все поняли — все равно ничего поделать нельзя.

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

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

да, все так, что ни фанат питона — питона обычно не знает.
а потому пояснять что-то — бесполезное дело.

программисты ж просто используют ЯП, а не фанатеют.
Но у фаната — все другие тоже фанаты, да :D
Что бывает по другому, утилитарное отношение к ЯП — он и представить не может.
Для него еще ЯП — это социальный статус.

Я не знаю я не джавист и не пхпшник(спасибо господи, хоть я и атеист). В статье так было написано.

Я хочу поговорить о корпоративных технологиях, например Java Enterprise, и о том, как они могут похоронить ваш интернет-стартап

Ахахаха, статья года эдак двутысячного. Нынче «Энтерпрайзную Джаву» никто не использует. Выкачав идею, спринг-бут проект на мавене\грейдле до состояния рабочего хелло-ворлд рест сервиса подымаеться за 5 минут. Все полезные плюхи вроде спринг-дейта (хибернейта), секюрити итд итп подключаються элементарно, и коду там в итоге не шибко больше будет чем на пыхе.

не хватало чтобы на джаве за столько лет развития не было автоматизированых и формализованых средств разворачивания склета типичного приложения

я вот не застал того времени когда не было этих средства.

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

вообще код подключаемых инструментов обычно не учитывается.

а энтерпрайз стайл коду на php да, немногим меньше выйдет. Насколько меньше — зависит от множества факторов. Но точно — не больше :D
но мы же о пет проекте, и бытенько REST прикрутить, который, ессно будет изменяться!

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

Ви знаєте, а мені на співбесідах в цьому році довелося почути, що JavaEE переживає бурхливий розквіт

возможно. Последняя JavaEE с которой я работал по сути тотже класический спринг, только со своими идеями и заморочками. Если у них есть чтото легковесное для микросервисов аля спринг-бута, то почему бы и нет.

У них є Microprofile — розширення Java EE для мікросервісов.

Чувак, у меня опыт на Java около десяти лет. Python я тоже как бы знаю, использовал, но редко. Так что, ищи «ослика из Шрека» в другом месте.

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

Я в тот момент не заметил. OK.

Якщо у вас такий великий досвід по Java, навіщо ви задаєте прості питання по JVM на ДОУ?

Досвід потребує переосмислення.

как ЯП он в разы круче Джавы

на жвм есть скала, кложура итд.

и без JVM — тоже «и т.д.» есть

Свет клином чтоли на JVM сошелся?
В процессоры уже как, вшивают?
Если не используется JVM — все, проект фиговый?
Она что, уже как знак качества стала?

Ну принаймні 25 років, політ нормальний. Якщо це не гарантія якості, то що це?

На пхп немає жодного проекту, а ось на PHP дійсно багато) Насправді, я не розбираюся в PHP, мій коментар був відповіддю на претензії до JVM і її популярності

Да. Как раз эти два мне весьма интересны.

Не хочу распыляться по разным направлениям. Для меня pet project — это не только полезная поделка для себя-любимого, ещё и источник опыта, который облегчит мне решение дел на работе.

тогда выбор очевиден — надо брать основной рабочий ЯП, или около него.
Кложа по моему все, из моды вышла, а Скала да, поломать мозги может быть полезным.
Пет проект правда будет писаться на ней долго, но прокачка может быть полезной и для использования Джавы.
если лиды, код стайл позволят наворачивать код, который никто без базы в Скале/функциональщине не поймет :)

кстати, если серьезно решили попробовать что-то другое, что провернет мозги, берите последний TypeScript
жабоскриптеров не слушайте, что это мол всего лишь надмножество JavaScript (а Java — это всего лишь надмножество опкодов JVM, ага). Они часто другого ничего не знают. и судят о TypeScript как джависты нередко о Скала — что это просто улучшенная Джава. «ну как Котлин, не?».

Там — очень другая система конструирования типов, и сам вывод типов — ух прикольный!
Причем, не знаю причастен ли еще Хейлсберг — сделано без тяжеловестной академичности как любит Одерски, и без лиспа от Хикки.

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

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

Ну и тогда уже впридачу NestJS, где есть кодогенерация boilerplate кода из коробки.

Да, Хейлсберг причастен к TypeScript

Если чуть более сложнее хелловорлд на макс тыс запросов в день, то конечно жвм.

Пиши на тому що краще знаєш.

Не факт. Пет-проект гарний привід вивчити чи спробувати щось нове. Ну не сподобається — перепишеш на чомусь іншому.

ну ток тада зачем брать попсовую джаву с попсовым питоном. Сразу на расте все написать!

По-моему всем очевидно, что надо писать на самом деле на Go.

Я специально написал про JVM, не упоминая собственно Java. :-)

Для JVM лучше Java. По простой причине: код более читаемый. И по возможности НЕ ПОЛЬЗОВАТЬСЯ синтаксическим сахаром всуе, а если пользоваться — не жлобиться правильно именовать каждую переменную.

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

Java — она более verbose. Многословная, по-русски говоря. Читаемость это не улучшает, скорее наоборот. Хотя, конечно, больше всего на читаемость кода влияет его автор.

Да, она такой создана. Разумеется, есть синтаксический сахар. Но поверь, этих слов бывает сильно не хватает, учитывая, как воспринимает информацию мозг.

Мозг попросту не умеет мгновенно менять контекст. А код умеет. В результате код не читается, а если читается, то неправильно. И даже будешь смотреть на строчку с ошибкой, зная что она там есть, и хрен поймёшь где. Почему и говорю — именуй переменные.

В остальном же, начиная с 8й жабы, она позволяет достаточно кратко писать.

Главное в читабельности кода:
не
злоупотреблять
переносом
каждой
херни
{
на
{
новую
(
строчку
)
}
}
}

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

А подкинь статеечку про скала 3, где мало блаблабуков и много кода
Спасибо, scala 3 — не ннадо! Это дерьмище адски нечитаемо. Чтобы разобраться в коде, его придётся скомпилить и декомпилить.

Пусть впереди большие перемены
Я «это» никогда не полюблю

Да какгбы всем очевидно, что те кто на полном серьезе пхп толкают в скале разобраться не в состоянии.

Да, у пхп есть ниша, и она серьёзнее некуда. В скале не разобраться проблема, а читать код.

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

Критерий непонятности для новичка — самый существенный для всех существующих средств разработки чего-либо. Потому что люди не умеют очищать из памяти результаты неудачных попыток что-то освоить. Второй раз пытаться понять намного сложнее, чем первый. Третий — ещё сложнее. И потому о полезности любого инструмента ты можешь судить по первому разу, и доверять этому суждению.

Да, я немножко знаю поведенческую психологию. И потому отличать заведомо мёртвую технологию умею быстро.

Пример: почему SQL так популярен, при том что он ну очень гадок для написания сложных вещей, особенно в плане процедур? Да потому что он читается легко. Ценой многабукав. Я не говорю о его продвинутом использовании, но о пороге надёжного вхождения.

PS. Неочевидная истина: люди учат одно и то же по нескольку раз. Оно забывается, как только вытесняется другим контентом. Представь себе, насколько тяжело читать года через 2 код на 3-ей скале, если цена сокращения синтаксиса — необходимость ПОМНИТЬ что есть что, и что как объявлялась. Ну либо уметь правильно именовать (что по сути есть костыль).

Скала 3 — просто бредовый язык для людей с очень развитым абстрактным мышлением.

Сам ты бредовый :-)

Второй раз пытаться понять намного сложнее, чем первый. Третий — ещё сложнее. И потому о полезности любого инструмента ты можешь судить по первому разу, и доверять этому суждению.

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

Да, я немножко знаю поведенческую психологию. И потому отличать заведомо мёртвую технологию умею быстро.

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

Представь себе, насколько тяжело читать года через 2 код на 3-ей скале, если цена сокращения синтаксиса — необходимость ПОМНИТЬ что есть что, и что как объявлялась

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

Причём тут «ниасилили». Сложные вещи должны быть разбиты на части так, чтобы были понятны. Scala же идёт в противоречие естественным языкам.

У человека нет второго мозга «для работы». И в случае ИЗУЧЕНИЯ (а не просто знакомства), понятие «ниасилили» — это осколки ассоциативной памяти, которая зафиксировалась, так и не связалась в систему (точнее сформировали ложные связи и защиты), и но которые обязательно всплывут при попытке выучить это снова.

И чем сильнее будешь пытаться учить, тем более высока вероятность забывания. Просто у ассоциативной памяти очень специфический механизм стирания памяти: там нет флага «удалено», там нет способа что-то стереть. Там формируется неопределённость, которая по сути есть механизм страха. Другими словами, попытка сформировать знания поверх отравленных излишним давлением связей — сформирует механизм блокировки, уничтожающий буквально всё.

Что такое по сути память: это замена логике. Для памяти не важно, почему так и от чего зависит, только повторяющийся шаблон и всё. И чем чаще повторяющийся, тем надёжнее доступ к возможным вариациям.

По той же причине вы не найдёте человека, который выучил иностранный язык из-под палки. Притом палкой может служить что угодно, достаточно чтобы сигнал воспринимался, а его сила не имеет особого значения. Так уж работает поведенческая психология.

Краткость — отнюдь не сестра таланта в программировании. Код должен читаться. Для этого в буквальном смысле требуется, чтобы 90% контента не несло значимой информации внутри, но служило пониманием структуры. Пытаетесь снизить этот показатель — и мозг теряет ориентацию, начинает плодить альтернативные пути, проверять возможные «что бы это могло значить».

PS. Разумеется, сложность языка программирования сильно зависит от того, какой язык родной, и какие языки уже знаешь. Для носителей русского, где слова и фразы могут быть связаны произвольно — практически нереально отучить мозг эти связи строить при чтении. И потому Scala 3 по сути добавила йаду в и без того сложную специфику.

Она не попсовая ни разу. Для корпораций она ещё куда б ни шла, но для малых проектов жаба... давно уж не старая добрая. И причина разумеется в JVM, которые так и не научились быть корректно параметризируемы для операционной системы, не говоря уж о возможности адаптации.

Проблема жабы — наследие. Столько всего сделано и написано того, что не взлетело... зато просто таки отличненько отравляет как информационное пространство изучающим, так и сами проекты быстрым устареванием.

И причина разумеется в JVM, которые так и не научились быть корректно параметризируемы для операционной системы, не говоря уж о возможности адаптации.

Слова не мальчика, а пхп программиста!

Проблема жабы — наследие. Столько всего сделано и написано того, что не взлетело... зато просто таки отличненько отравляет как информационное пространство изучающим, так и сами проекты быстрым устареванием.

Слова не мальчика, а го программиста — велосипедостроителя !

Извини, на мобильная жаба так полноценной жабой и не стала. И под микросервисы жабу пускать — тот ещё гемор. Майкрософтовская JVM когда-то неплохо с это нишей справлялась, но когда ж то было.

Я ж ему сразу так и сказал, для пэт-проекта, где не сильно понятно до какого размера ему расти, да и расти ли вообще (скорее всего нет) — лучше взять пэху. И уже на пэхе выводить в стадию когда его не хочется бросать. К тому моменту будет переписано процентов 60-80 кода. И уже тогда можно решать прыгать на жабу, менять базу данных, присобачивать какие-то кошерные фреймворки.

А поднимешься ты на жабе — ну возьмёшь ты спринг, или фреймворки поверх него работающие — и упрёшься в ну очень неявные механизмы связывания, и просто адские тонны дерьма в стэктрэйсах ошибок, где ты не можешь просто так сказать, где оно упало, и главное КОГДА — механизмы позднего связывания умеют перепрятать геморой.

А по устареванию... ну расскажи, почему на Java так и нет полноценного GUI для десктопа? Почему по итогу пришлось Гуглу пилить Андроид, который нихера не линукс, и нихера на жаба, а страшная поделка, идеально подходящая только писателям зловредов? Хотя когда поднималась жаба, Гугла ещё и в помине не было.

И под микросервисы жабу пускать — тот ещё гемор.

10 лет пишу микросервисы на жвм (жаба\скала), и прям не знал что оказываеться это гемор! Ты прям глаза открыл, пойду срочно переписывать критикал хай-лоад сервисы на пхп, пока нипозно!

для пэт-проекта, где не сильно понятно до какого размера ему расти, да и расти ли вообще (скорее всего нет) — лучше взять пэху. И уже на пэхе выводить в стадию когда его не хочется бросать. К тому моменту будет переписано процентов 60-80 кода. И уже тогда можно решать прыгать на жабу, менять базу данных, присобачивать какие-то кошерные фреймворки.

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

А поднимешься ты на жабе — ну возьмёшь ты спринг, или фреймворки поверх него работающие — и упрёшься в ну очень неявные механизмы связывания, и просто адские тонны дерьма в стэктрэйсах ошибок, где ты не можешь просто так сказать, где оно упало, и главное КОГДА — механизмы позднего связывания умеют перепрятать геморой.

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

А по устареванию... ну расскажи, почему на Java так и нет полноценного GUI для десктопа?

На пхп уже есть ?

Почему по итогу пришлось Гуглу пилить Андроид, который нихера не линукс, и нихера на жаба, а страшная поделка, идеально подходящая только писателям зловредов?

Маркетинговый ход, чтобы быстро привлечь максимум девелоперов которые уже знают жабу, с уже существующими иде и либами. Еслибы гугл создал андроид сейчас, он бы использовал го\дарт — инфа 100%

Микро разные есть. Кому и две серверных = «микро».
А хайлоад и пет-проект есть две большие разницы.

Java должна была сильно упростить работу программиста, сделав программирование доступным пусть не для домохозяйки, но для школьника и студента. Заметь, ценой очень серьёзной потерей производительности, раза в 3 в то время.

А по итогу — сколько сейчас стоит нанять вменяемого javа-кодера? А прогеры даже с опытом 5+ лет пишут такую шинема-*****, что начинаешь понимать мотивы Кожаева.

Java должна была сильно упростить работу программиста, сделав программирование доступным пусть не для домохозяйки, но для школьника и студента. Заметь, ценой очень серьёзной потерей производительности, раза в 3 в то время.

А еще был Дельфи, с потерей производительности всего в 1.5 раз, и он с этой задачей 100% успешно справился. Аминь.

А по итогу — сколько сейчас стоит нанять вменяемого javа-кодера? А прогеры даже с опытом 5+ лет пишут такую шинема-*****

Толи дело пхпшники — сразу выйдя из академии шах пишут лучший код по лучгим мотивам солид, клин коде, и прочим умным практикам!.

Ну, Дельфи это целая эпоха. А на заре жабы Дельфи вполне мог бы и победить. Но Борланд даже из жабы слиняла, хотя в своё время их IDE была лучшей... но её отказались поддерживать, поменяв на Эклипс.

Python можно на JVM запустить (www.jython.org). Не вижу в чем проблема

Вот тоже самое собирался написать)

Я знаю, но я не планировал играться с Jython.

Проблема ведь не в том, что выучишь или напишешь ты. Но в том, что УЖЕ написано до тебя, стоит очень недорого или бесплатно, и соответственно даст тебе экономию времени.

Львиная доля работы прогера состоит в том, чтобы использовать чужой код. И по этому параметру PHP гордо ссыт с горы на конкурентов. Точно так же, как Javascript, каким бы мудачеством ни был, заставляет плясать под свою анальную дудку весь FAAGN. Хотя каждому из них по карману написать свой язык, с джеком и блек-шлюхами

Это не для работы, это pet project.

В таком случае я бы порекомендовал писать на том, что доставляет большее удовольствие и особо не заморачиваться над производительностью.
Лично у меня бы выбор был однозначно в сторону Python, просто потому, что нравится на нем писать.

А то люди начинают свои хобби превращать во «вторую работу» (еще и неоплачиваемую), используют те технологии, которые «должны» (ради быстродействия, стабильности, etc.), вместо тех, которые «хочется», а потом на доу десятки статей о выгорании и мысли бросить IT.

А ведь можно изначально не загонять себя в эту ловушку и заниматься в свободное от работы время тем, что

«просто мне так нравится»

нужен список требований, а уж потом выбор инструмента. REST-сервис тоже бывает разный

Пет-проект проще сначала начать, а уже потом понимать чего ему понадобится, и если будет желание продолжать — переписать уже на чём надо.

Зависит от масштабов сервиса, имхо, остальное вторично. Чем больше шансов прострелить ногу будет, тем лучше Spring, а если тебе 3,5 круда надо, где ломаться особо нечему, то на пайтоне будет быстрее.

Я сейчас сам джангу понемногу осваиваю для второго кейса, при том что умею в Spring. Но делать условный scoreboard для примитивной игрушки на Spring — это как с пушки по воробъям.

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

Спринг очень долго эволюционировал, будучи таким булшитом, что страшнее только собственные жаба-бины. И разумеется, он не был переписан с нуля, с целью выкинуть мегатонны этого дерьма, способного хорошо и надолго отвадить начинающих кодеров своими необъяснимыми глюками и умением прятать ошибки под ковёр.

Если говорить про простые сервисы — разницы никакой. Сложнее — нужно отталкиваться от требований.

Підписатись на коментарі