Comments 34
Скорость, сопровождаемость (через явность и типизацию), надёжность, отсутствие GC
Я всё ждал, когда же вы до Rust дойдете
В Java чтобы распечатать «Hello world» раньше нужно было написать диссертацию
Иронично, что необходимость написать АЖ ЦЕЛЫЙ ОДИН КЛАСС стала непреодолимым барьером для миллионов.
там наверное spring поднимали как минимум )))
Можно и на Java core разгуляться:
https://gist.github.com/lolzballs/2152bc0f31ee0286b722
А можно и на EE:
https://github.com/Hello-World-EE/Java-Hello-World-Enterprise-Edition/tree/master/src/com/example
Интересно, а что нужно сделать, что бы метеостанция тормозила на питоне из-за GC? Похоже что мы что-то делали не так в скайпе (до того, как его сгноил MS), что у нас backend на миллионах пользователей не тормозил… Просто не используйте потоки, а делайте асинхронный код (привет twisted) и включайте голову. Но нет, мы притащим жабу на одноплатник…
P.S. Специально для любителей функций со скоростью роста n^n
На одном студенческом проекте на circuitpython (кастомный USB джойстик-кейпад для компа) на слабом железе, наблюдал интересный феномен: в обычном режиме все вроде работало нормально, кнопки опрашивались, нажатия отправлялись, каждую секунду печаталось количество свободной памяти в пределах нормы, все в общем ок. Но когда из компьютера приходил файл конфигурации, который надо было распарсить средствами питона (а это куча операций по разбиению строк на новые строки, которые в питоне все на куче), то потом начинались незатухающие осцилляции количества свободной памяти с периодом в несколько секунд и с рандомным шансом упасть, плюс все сопровождалось замираниями, т.к. circuitpython останавливает все на время работы GC. На нормальных компах это никто не смотрит, но на слабых оказалось проблема. Метеостанция таким парсингом занята постоянно, поэтому просто отмахнуться бы не получилось.
Как уже правильно было отмечено ниже, в питоне используется счетчик ссылок за O(1), а GC работает только если есть циклические зависимости. Так что можно переписать парсер так, чтобы он не городил объекты с циклическими ссылками и выключить автоматический GC (gc.disable()) и вызывать руками gc по таймеру (или не вызывать вообще, если вы все циклы в ссылках удалили). Мы так делали и при должной осмотрительности все работает отлично. Если есть какой-то тяжелый входной формат, то можно сделать offload через cython иди просто написать тяжелый кусок на C/C++ в виде библиотеки и через cffi подключить.
Асинхронный код это дополнительная сложность, порог входа и всё остальное. Зачем её нести в проект если можно писать проще?
Особенно с учётом, что в питоне используется счётчик ссылок, а gc только для поиска циклов и в целом можно отключить. А вот в джаве Гц для всего
Python прекрасен, код читается как легко, все просто и понятно.
Что простите? Вот эти все отступы табуляторами - это легко и понятно? Имхо, это только для тех, у кого Пайтон был первым языком
Он отлично читается в отличии от rust, который взял самые худшие черты ruby, c++ и perl
А вы джаву одной строкой пишете? Или по той же логике, что и в Питон форматирует код?
у меня code style 2 пробела отступ, а таб - это 7 пробелов. Поэтому когда я открываю код на пайтоне - у меня кровь из глаз.
А вообще, я зарекся упоминать пайтон, в этот раз опять особо нервные в карму залезли. Ведь иного, кроме их мнения, быть не должно.
Два для Питона маловато, особенно если много длинного кода. Для остальных языков тоже не очень добавляет читабельности, но в некоторых так сложилось. А вот таб на 7 это необычно, расскажите подробнее.
У меня на табе 4 и я пробела и я руками никогда пробелы не ставлю.
Вы один или в команде работаете?
Я немного ошибся, в табе не 7 пробелов, а 8 по стандарту. Я с пайтоном не работаю, но иногда приходится открывать сорцы на нем.
Вы один или в команде работаете?
Есть проекты где в команде, есть проекты где я один.
2 пробела - для меня удобно, если в каком-то проекте 4 пробела - то вполне можно и с таким жить.
8 это норм, только вот зачем иметь 2 и 8 в одном и том-же коде?
Хотя на джаве там вообще ни таб ни пробел нажимать не надо, просто там редактор ставит курсор на нужное место по переходу на следующую строку. В питоне иногда нужно, для переписывания существующего кода, но там я как раз таб жму, чтобы добавить / удалить нужное количество пробелов.
Ну вот когда в notepad-е открываешь питоновский код, чтобы быстро глянуть, что там за косяк и хочется ругаться матом..
В Питоне по стандарту отступы делаются ПРОБЕЛАМИ. И обычно люди ставят по 4 пробела на отступ.
Откуда у вас там код с табами – не понятно. Предъявляйте эту претензию к тому, кто этот код вам писал
То есть в развесистой Джаве которая отформатирована визуально практически так-же всё хорошо? Может проблема не в Питоне а в том, что вы его плохо знаете и не любите, а не в отступах?
Странно что Kotlin не рассматривали.
Ну да. Весь мир embedded device. Просто так видимо на чистом С едет. Там где даже ОС нет.
Для тех у кого код превращается в макароны - чистую архитектуру придумали. Линтеры, код стайлеры и всякие разные вот эти вот "лишние" истории.
Для тех кто чужой код двухлетней давности читать не умеют - курсор с ИИ разработали.
Сказать что Java с её jvm как то сэкономит ресурсы по отношению к другим звучит весело.
Тот же питон живет в каждом линуксе из коробки и хлеба не просит. Один бинарник, как все любят, ток уже скопмилированный.
Я бы С взял. В нём всё понятно и через 100 лет будет.
Мне кажется лучше на java, тк в мире энтерпрайсов больше всего джавистов чем остальных в процентном соотношении
Я бы С взял. В нём всё понятно и через 100 лет будет.
Так вы курс по джаве не продадите.
Вы не много не туда пошли. Java все таки не для таких задач создан. Тут идеальный выбор C или C++. Все остальное натягивание своего мировоззрения.
С# — для Windows наверное он бы победил, но в плане кросс-платформенной совместимости и разработки он пока недостаточно зрелый.
А мужики то и не знают.
С# — для Windows наверное он бы победил, но в плане кросс-платформенной совместимости и разработки он пока недостаточно зрелый.
Это в каком году статья писалась? Вроде +- java в этом плане выровнялись давно.
Python в enterprise: момент, когда пора открыть Java не только ради собеседований