LINUX.ORG.RU

Python VS Java

 ,


0

8

Всем привет. Ковыряю backend-сервис на Java, и вот появились такие мысли - зачем в web'e нужен Python, если есть множество фреймворков на тех же Java, C#, Erlang, NodeJS, Golang, Rust... Иным словами - я понимаю зачем в web-development нужны такие языки как Rust/C++ (скорость исполнения, математика), Java и Erlang (большие нагрузки ага), Golang и NodeJS (возможность дёшево сделать асинхронный сервис)... Для быстрого клепания уже *дцать лет как существует Smalltalk/Seaside, подобные же штуки для Perl и TCL.

Для любителей наркомании в конце концов есть Haskell, OCaml, Lisp.

Отсюда резонный вопрос - зачем современному миру web-development Python с его кривой архитектурой, GIL и python-way головного мозга большей части программистов?

З.Ы.: если что, сам ранее занимался разработкой на змеюке (пять лет) под веб. Сам на свои вопросы заданные выше ответа не нашел, о питоне вспоминаю как о страшном сне. Особенно о Django

Ответ на: комментарий от eternal_sorrow

и чем же она кривая?

Хотя бы реализацией ООП, ФП...

при правильной архитектуре приложения GIL не мешает

Можно при любых помехах превозмогать трудности и получать результат. Но смысл есть кактус?

как что то плохое

Любой свод правил, переходящий в фанатизм - плохо. Человек теряет объективность и способность мыслить.

silver-bullet-bfg ()
Ответ на: комментарий от crutch_master

Каждый дрочит как хочет. Кому-то вот нравится пистон и что с того? Мне он тоже не нравится, например, хотя я даже не нём не кодил никогда.

Просто интересно - чем же он так привлекает миллионы мух.

silver-bullet-bfg ()
Ответ на: комментарий от silver-bullet-bfg

Хотя бы реализацией ООП, ФП...

это не ответ

превозмогать трудности

зачем превозмогать? просто пиши нормально, а не говнокод и ничего превозмогать не придётся

Человек теряет объективность и способность мыслить.

ну и причём тут python-way?

eternal_sorrow ★★★★★ ()
Ответ на: комментарий от eternal_sorrow

это не ответ

Сформулируй тогда критерий ответа

зачем превозмогать? просто пиши нормально, а не говнокод и ничего превозмогать не придётся

Ок. Покажи мне реализацию python-сервера (именно Python, не обёрнутое на PureC/С++ приложение), которое держит от 10 000 коннектов и отдает за менее чем 150 мс данные.

ну и причём тут python-way?

Потому что python-way становится постепенно религией человека. Скажем - отрицание того, что продукт Х можно сделать быстрее и проще не на Python.

silver-bullet-bfg ()
Ответ на: комментарий от eternal_sorrow

удобство, красота, практичность, гибкость

Хм. А есть какие-то не эмоциональные факторы? Ибо всё это можно применить к любому мейнстримовому языку. Тут нет киллер-фич уникальных

silver-bullet-bfg ()
Ответ на: комментарий от silver-bullet-bfg

кривая ... реализацией ООП

Мне на днях в ютубах рассказали, что она во всех «живых» языках кривая.

Любой свод правил, переходящий в фанатизм - плохо

Это существенно, только если существуют безфанатичные альтернативы, обеспечивающие не худшие результаты. В данном случае это ещё подоказывать.

DonkeyHot ★★★★★ ()
Последнее исправление: DonkeyHot (всего исправлений: 1)
Ответ на: комментарий от DonkeyHot

Мне на днях в ютубах рассказали, что она во всех «живых» языках кривая.

Ну как - тот же Ruby более чист по реализации данной парадигмы. Java очень близка. C#... Чистых (читай Smalltalk единственный полный) ООП языков нет, но с более полной реализацией по сравнению с Python - полно. Даже в древнем TCL более полная реализация есть (и да, он жив и применяется, не так давно общался с челами с нефтянки, которые его активно юзают).

Это существенно, только если существуют нефанатичные альтернативы, обеспечивающие не худшие результаты. В данном случа это ещё подоказывать.

Java, C#, Ruby, Lua, Perl, TCL...

silver-bullet-bfg ()
Ответ на: комментарий от silver-bullet-bfg

Потому что python-way становится постепенно религией человека.

Пфф. Тут добрая часть программирования - это уже давно религия. Вот, например ООП..

crutch_master ★★★★★ ()
Последнее исправление: crutch_master (всего исправлений: 1)
Ответ на: комментарий от silver-bullet-bfg

Сформулируй тогда критерий ответа

Ну вот ты говоришь:

Хотя бы реализацией ООП, ФП...

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

Ок. Покажи мне реализацию python-сервера (именно Python, не обёрнутое на PureC/С++ приложение), которое держит от 10 000 коннектов и отдает за менее чем 150 мс данные.

У меня нет примеров, но я уверен, что это можно сделать на asyncio+uvloop.

Скажем - отрицание того, что продукт Х можно сделать быстрее и проще не на Python.

Это и правда глупо. Но причём тут python-way?

А есть какие-то не эмоциональные факторы?

А причём тут эмоции? Ну кроме красоты. Вполне себе практические причины. Могу немного раскрыть, если хочешь. Удобный лаконичный синтаксис без лишних, не несущих смысловой нагрузки, элементов. При этом не в ущерб красоте и читабельности. Богатая стандартная библиотека. Возможность сочетания в коде различных парадигм.

eternal_sorrow ★★★★★ ()

Ковыряю backend-сервис на Java, и вот появились такие мысли...


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

grem ★★★★★ ()

у питона была возможность, пока js был в запустении. если бы не «корпорация добра», не было бы v8 и не было бы nodejs и питон так и продолжал бы ходить по улицам..

PexuOne ()
Ответ на: комментарий от silver-bullet-bfg

Ок. Покажи мне реализацию python-сервера (именно Python, не обёрнутое на PureC/С++ приложение), которое держит от 10 000 коннектов и отдает за менее чем 150 мс данные.

define обёрнуто: https://github.com/squeaky-pl/japronto

Потому что python-way становится постепенно религией человека. Скажем - отрицание того, что продукт Х можно сделать быстрее и проще не на Python.

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

anonymous ()
Ответ на: комментарий от anonymous

define обёрнуто: https://github.com/squeaky-pl/japronto

не обёрнутое

Смишно, да.

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

Вот, да. согласен. Тогда опять же - зачем оно в вебе?

silver-bullet-bfg ()
Ответ на: комментарий от grem

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

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

silver-bullet-bfg ()
Ответ на: комментарий от anonymous

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

и тут, к сожалению, питон проиграл Go.. да и жабоскрипту проиграл.

PexuOne ()
Ответ на: комментарий от silver-bullet-bfg

какие-то не эмоциональные факторы ... применить к любому мейнстримовому языку

1. Понятные сообщения об ошибках (из коробки). Точно отсутствует в яве, с++, про остальных не скажу,

2. Мало мусора в коде. tcl мог посоревноваться, но проыыыграл, (собственно, и не пытался - к вопросу о пользе свода правил). может хаскель ещё сравним, но он далёк от мейнстрима,

DonkeyHot ★★★★★ ()
Ответ на: комментарий от silver-bullet-bfg

Смишно, да.

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

crutch_master ★★★★★ ()
Ответ на: комментарий от DonkeyHot

2. Мало мусора в коде.

Там просто весь мусор под ковром. Так то и на яве можно сделать свой Variable класс и позаворачивать всё, что можно.

crutch_master ★★★★★ ()
Последнее исправление: crutch_master (всего исправлений: 1)
Ответ на: комментарий от PexuOne

и тут, к сожалению, питон проиграл Go

На го ты так точно не сделаешь, про js вообще всуе лучше не упоминать. Python в данной сфере рулит и пидалит, посмотри вон хоть на ML

anonymous ()
Ответ на: комментарий от PexuOne

и тут, к сожалению, питон проиграл Go.. да и жабоскрипту проиграл.

До финальной реализации такого обычно реализации только на Python доживают. В Go и NodeJS упираются обычно во что-нибудь

silver-bullet-bfg ()
Ответ на: комментарий от crutch_master

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

Потому, что это проще будет реализовывать и поддерживать на одном языке?

silver-bullet-bfg ()
Ответ на: комментарий от PexuOne

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

crutch_master ★★★★★ ()
Ответ на: комментарий от crutch_master

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

Поддерживаю. Но тут скорее - имеется ввиду порог вхождения

silver-bullet-bfg ()
Ответ на: комментарий от silver-bullet-bfg

Потому, что это проще будет реализовывать и поддерживать на одном языке?

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

anonymous ()
Ответ на: комментарий от silver-bullet-bfg

Потому, что это проще будет реализовывать и поддерживать на одном языке?

Нет, не проще. Вот я гоняю json между микросервисами. Проще всего с ним работать нодой. В яве его сначала надо распарсить в какое-нибудь pojo, а про си я вообще молчу, там 10 раз обосрёшься, когда будешь выделять память.

crutch_master ★★★★★ ()
Последнее исправление: crutch_master (всего исправлений: 1)
Ответ на: комментарий от silver-bullet-bfg

более чист по реализации ... с более полной реализацией

Это слова человека,, только что поносившего религиозный фанатизм?! Напомню, что для «нормальных» людей OO - инструмент, нужный, только когда помогает делать P. И в субже он именно таков: хочешь - используй, хочешь - навыворот,

читай Smalltalk единственный полный ООП

Катати, там же утверждали, что автор позже нашёл, что первое O было оспользовано по ошибке, там должно было быть M :) Была ли это сознаельная дезинформация, для закладывания бомб в основания конкурентов?

Java, C#, Ruby, Lua, Perl, TCL

Это ответ не на тот вопрос. Тема была про относительную вредность свода правил.

DonkeyHot ★★★★★ ()
Ответ на: комментарий от crutch_master

Что непонятного в ява ошибках?

По сравнению с питонскими - почти ничего. Ибо первые - почти всегда 1. на порядок глубже, 2. с причиной где-то посредине стека(вероятно от наследования), 3. без непосредственного доступа к версии выплюнувшего кода(от компилируемости) 4. и из деталей только номер строки.

DonkeyHot ★★★★★ ()
Ответ на: комментарий от DonkeyHot

Ибо первые - почти всегда 1. на порядок глубже

Спрингопроблемы, причём тут ява? В каком-нибудь пистонофреймворке будут такие же.

2. с причиной где-то посредине стека(вероятно от наследования)

Причина всегда в конце стека. Если в середине разрешают передавать херню - проблема либы. Нормальные либы обычно нормально пишут почему свалились.

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

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

crutch_master ★★★★★ ()
Последнее исправление: crutch_master (всего исправлений: 1)
Ответ на: комментарий от crutch_master

Вот я гоняю json между микросервисами. Проще всего с ним работать нодой

Видимо это потому, что JSON - это фитча JavaScript (ECMAScript), поэтому на JavaScript/Node и проще с ней работать, чем на других ЯП.

CryNet ★★★ ()
Последнее исправление: CryNet (всего исправлений: 1)
Ответ на: комментарий от CryNet

поэтому на JavaScript/Node и проще с ней работать, чем на других ЯП

Не поэтому и не проще. Во всех динамических языках с JSON работается совершенно одинаково. Сложности именно в языках со статическими типами, т.к. там нужно выёживаться с каким-нибудь Variant или Object и ручным приведением его к нужному конкретному типу.

no-such-file ★★★★★ ()