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

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

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

В питоне - класс это полноценный тип данных, являющийся объектом другого класса. В jave класс объектом не является. Можно конечно утверждать что это хорошо. Но, во-первых, язык тем более ООП, чем больше в нем сущностей являются объектами. Во-вторых, в python некоторые вещи оказываются элегантно встроенными, в то время как в java нужно городить паттерны.

Или для тебя «настоящее ООП» это писать геттеры и сеттеры, делая по настоящему приватные поля класса?

Если нечто не имеет каких-то жестких требований по производительности в том или ином смысле. Очень логично писать это на python при наличии библиотек. В частности в вебе.

Если речь о чем-то достаточно серьезном и жирном, то динамическая типизация действительно проблема. А энтерпрайзные стандарты - аргумент в пользу использования Java. Но как можно получать удовольствие от этого многословного, монструозного языка, а не жрать говно за деньги? А типизация теперь и в питоне есть, если хочется.

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

chuemir
()

Ой, видели мы эти треды по закидыванию какашками и Python и JavaScript. Это треды хейтеров и нытиков, языки - просто инструменты, не нравится - не бери. У питона сильные стороны в чистом синтаксисе, быстром прототипировании, гибкости в плане синтеза фп с оп, легком дебаге, нескольких реализациях (не везде GIL есть), простых и удобных обертках над Си либами, и вообще, куча пакетов в pip на каждый случай.

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

Извращенцы, сэр. Возьми лучше уж CoffeScript или TypeScript, а не эту каку. На гоу писать объективно сложнее, чем на этих языках.

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

Спрингопроблемы, причём тут ява

У тебя есть спринг для питона?

В каком-нибудь пистонофреймворке будут такие же

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

А он должен быть?

Нет. Но наличие добавляет понимабельности.

не сильно тебе поможет кусок какого-то говнокода

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

DonkeyHot ★★★★★
()

Низкий порог вхождения. Батарейки на любой вкус и цвет.

/thread

RazrFalcon ★★★★★
()

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

Не представляю даже как подступиться к этой задаче на java. Модулей в системном репозитории нет. Весь софт что я видел бандлил jar'ы зависимостей, это детский сад. Но я понимаю что наверняка они ничего не знают о языке на котором пишут и есть замечательная система сборки. Но которую надо тоже осваивать, и которая скорее всего тянет зависимости бинарниками из интернета. Это тоже no-go. Плюс синтаксис отвратный, разработки без IDE невозможна, какая-то муть с версиями жавы, и на 500MB VPS это потом просто не взлетит. Я это просто видел два раза, не отрицию что те кто это писал тоже ничего не знают о жаве, но пробовать не хочу.

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

Из этого erlang и smalltalk перенеси в список любителей норкомании, Perl и TCL - мертвечина с античеловечным синтаксисом (ещё забыл Ruby, к нему относится только последнее). Остаётся C++/Rust если нужна производительность и Golang/Node/Python с низким порогом вхождения. Про Golang я слышал только плохое (прежде всего про ограниченность языка), в Node мне не нравится экосистема без контроля над зависимостями (в go то же самое) и язык не без уродств, остаётся что? Питон.

возможность дёшево сделать асинхронный сервис

Как раз это - прежде всего Python с async/await.

GIL

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

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

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

нода - не однопоточная. с разморозкой!

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

Модулей в системном репозитории нет.

А кроме питона у кого еще такое безобразие есть? Ты просто совсем непрограммист чтоле, и тащишь в систему зависимости твоих проектов? Приплыли вообще: venv и pip это по геморройности не сильно лучше gradle.

Весь софт что я видел бандлил jar'ы зависимостей

А что с этим не так?

Плюс синтаксис отвратный, разработки без IDE невозможна, какая-то муть с версиями жавы, и на 500MB VPS это потом просто не взлетит.

Жиробас, расскажи мне за великолепный тернарный оператор, составление списков, async, __init__ и прочий мусор питона. Нет, серебряной пулей он является только если тебе надо 10 строк написать

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

Ты о воркерах что-ли? Ничего не меняют. Это костыль сродни тем которых в python с рождения предусмотрено вагон и маленькая тележка, начиная с multiprocessing, и тредов с отдельными копиями интерпретатора. Сам интерпретатор однопоточный и всегда им останется. Это даже хуже чем GIL, потому что с GIL можно таки IO писать на потоках если хочется.

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

Сам интерпретатор однопоточный и всегда им останется. Это даже хуже чем GIL

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

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

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

Покажи мне реализацию Java-сервера которая такое умеет.

З.ы. а чисто питоний вариант, который может держать нагрузки - это https://falconframework.org

Siado ★★★★★
()
Последнее исправление: Siado (всего исправлений: 1)

В нем очень удобно экспериментировать и строить прототип кода. Особенно когда еще не определился с алгоритмом. Потом медленное переписываешь на сишку и готово. Не надо постоянно компилить.

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

А кроме питона у кого еще такое безобразие есть?

У perl, ruby, python, r, haskell, lua, octave, php это повсеместно. go, rust всеми силами пытаются быть самодостаточными, но их всё равно опакечивают, и не просто так.

Ты просто совсем непрограммист чтоле, и тащишь в систему зависимости твоих проектов?

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

А я делаю один раз pkg install на FreeBSD и apt-get install на Дебиане, который сразу ставит всё - и модули на 2 языках, и нужные им библиотеки. И потом это поддерживается в актуальном состоянии также одной командой. И гарантированно работает и не содержит leftpad'ов и всяких coloura'м.

Приплыли вообще: venv и pip это по геморройности не сильно лучше gradle.

Я ими не пользуюсь, но вообще проще pip install -r requirements.txt может быть только если бы не нужны было писать install и -r.

А что с этим не так?

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

Жиробас, расскажи мне за великолепный тернарный оператор, составление списков, async, __init__ и прочий мусор питона.

Это ты жиробас, потому что это всё вкусовщина. Тернарный оператор точно читабельнее ?:. Если составление списков это list comprehensions, то это просто красота, __init__ это обычный конструктор, async - это ключевое слово, что с ним не так я не понял. Странно что ты кукарекнул про отступы пробелами, видимо у хейтеров уже не модно. А вот реально некрасивые вещи забыл: выход из итерации исключением и изменяемые объекты в аргументах по умолчанию - это да, но я, например, в отличие от других языков больше проблем навскидку и не назову.

Нет, серебряной пулей он является только если тебе надо 10 строк написать

Хоть 10, хоть 10k (у меня сейчас тот сайтик до такого вырос) - у меня лично получается красиво, читабельно, легко рефакторится. Серебряной пулей он перестаёт являться только в одном случае - когда упираешься в производительность и, к сожалению, это наступает довольно быстро. Но отсюда путь в rust, и точно не в java.

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

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

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

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

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

это надо на глагне вывесить и в красный покрасить

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

Там есть переключатель вариантов тестов, выбери plaintext, будет без базы.

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

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

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

А я делаю один раз pkg install на FreeBSD и apt-get install

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

А вот еще расскажи мне, как тебе жить, если библиотека А требует пакета С версии 1 (С1), а библиотека B требует пакета С версии 2 (С2).

Это ты жиробас, потому что это всё вкусовщина

во первых, жиробасом я тебе назвал за «в 500 Мб на впс не влезет», потому что это 4.2. Во вторых, ты же за синтаксис там и предъявлял. Так вот, у пистона он самый упоротый: [i for i in list if i>2] у питона vs list.select(i>2) у нормальных ребят.

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

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

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

безфанатичные альтернативы, обеспечивающие не худшие результаты

ruby

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

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

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

и жрешь что дают дистростроители

Не жру, а смакую. Может у нас не тот дистрибутив, если вам там говно подпихивают? У меня всё свежее и рабочее.

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

Я программирую под FreeBSD, CI в убунту, деплой во FreeBSD и Debian, так что мимо.

А вот еще расскажи мне, как тебе жить, если библиотека А требует пакета С версии 1 (С1), а библиотека B требует пакета С версии 2 (С2).

Все разрулено за меня в системном репозитории.

[i for i in list if i>2] у питона vs list.select(i>2) у нормальных ребят

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

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

Что только не придумаешь в отсутствие аргументов.

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

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

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

И раз уж рот раскрываешь, портудись сравнивать все случаи - кода будет два списка

Лол, ты хочешь чтобы сравнивались питоновское однострочное вырвиглазие с размазаными по строке переменными (3 раза один параметр! в разных местах!), с стройным локальным чейном операций. Даже в полном легаси linq из c# сложные транформации коллекций выглядят намного стройнее. А в котлине так это вообще конфетка. Не думал, почему питон единственный единорог с подобным синтаксисом?

anonymous
()

Python VS Java

Assembler

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

ok, пока прогрессивный мир мечтает

Эмоции, сентенции и мечты можете оставить при себе, они мне не интересны. А технических аргументов я не вижу.

свалить на минимальные образы в контейнерах

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

и ставить свои зависимости из надежных единых языковых репозиториев

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

Я также повторяю, они никак не могут быть надёжными, пока они

  • Не модерируются (а они не модерируются, из-за чего и случаются leftpad'ы и colouram'ы)
  • Не гарантируют неизменность артефактов (PyPi, например, не гарантирует, из-за чего в разных деплоях одного и того же мне может приехать совершенно разный код)
slovazap ★★★★★
()

Java и C# - это не труЪ-языки, так как они ныкают исходники в байт-код. Эти полу-языки недо-интерпретаторы/недо-компиляторы создали корпорасты, чтобы рабы-индусы могли ныкать код.

Python и Ruby - это истинные OpenSource, ибо они всегда держат код открытым. Созданы харизматичными честными парнями для свободных людей.

/thread

Novator ★★★★★
()

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

Секундочку, в изначальном посте ты спросил «зачем современному миру web-development Python с его ...». А теперь появляются какие-то «150 мс» и «10000 коннектов»...

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

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

Deleted
()

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

Про php забыл.

зачем современному миру web-development Python

На php всё ещё кто-то пишет. Вот и с Python, тоже самое.

th3m3 ★★★★★
()

Ковыряю backend-сервис на Java, и вот появились такие мысли - зачем в web'e нужен Python,

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

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

Но зачем, если хорошо получается в связке с C? Почему тогда не на чистом C? Напиши print(''.join(reversed(int(text)))) на C — поймёшь.

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

Слишком толсто, смотри не порвись.

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

print(".join(reversed(text)))

print(''.join(reversed(int(text))))

anonymous
()

JSON против XML, указка против стремянки...

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

print(".join(reversed(int(text))))

print(''.join(reversed(text)))

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

что сложного написать класс для десериализации?

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

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

Но зачем что-то компилять js, если это уже сделано на го? Что это даст? В чём профит запускать го код на ноде? Или это для браузера?

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

У тебя есть спринг для питона?

Нет. Зачем мне спринг для питона?

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

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

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

Это помогает, только если они сами это знают. А так - кинут npe и думай, почему это так. В любом случае проблема фреймворкописателей, которые не кидают вменяемые исключения и не делают нормальной валидации.

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

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

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

Там воркеры есть с некоторых пор, но достаточно костыльно. Нода как была однопоточной так и будет. Вообще сама нода долбаный изврат, так что пользуйтесь тем что есть.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.