LINUX.ORG.RU

Python -> Jython/Java. С чего начать?

 , ,


0

1

На работе все всё делают на java. Я последний раз на java писал апплет для 3-го нетскейпа на java 1.0.2.
Попробовал посмотреть исходники - такое впечатление, что на 20 файлов с описанием каких-то структур/классов один файл с кодом алгоритма.
Пока решил свои вещи портировать с python на jython.

Внимание, ВОПРОС:
- что почитать, чтобы научиться читать исходники на java? Т.е. с чего начать. Т.е. hello world я и сам напишу, а вот понять, как это всё у коллег закручено...

★★★★★

всё так. Читай те самые исходники коллег.

izzholtik ★★★
()

На работе все всё делают на java.

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

anonymous
()

Доков к проекту нет? Ну хотя бы по структуре.

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

А вообще конечно тут много нюансов, везде свои велосипеды.

Пока решил свои вещи портировать с python на jython.

Зачем (объективно)?

ilinsky ★★★★★
()

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

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

Зачем (объективно)?

Не хочу писать 20 файлов с декларацией классов на 1 файл с императивным кодом. Я датааналитик, у меня на каждый вариант по кастомному лапшекоду + отладка моделей/гипотез/etl в питоне.

Shadow ★★★★★
() автор топика

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

  • тупо почитать код
  • закинуть запрос в систему, посмотреть что выдаст и какие логи отработают
  • включить дебаггер и понять интересующий момент
  • почитать документацию на ту часть кода, что не понимаешь. То есть, к примеру, почему в коде написано что-то, что не похоже на старую добрую джаву:
() -> System.out.println()
Irben ★★★
()

jython

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

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

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

У меня всё ГОРАЗДО хуже, типа

почему в коде написано что-то, что не похоже на старый добрый АЛГОЛ

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

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

А чего именно Java? Трушники используют менее мусорное (C# или Kotlin).

А учиться я по коду коллег не советую. Мало ли на каком этапе своих знаний они это написали? Потом будешь за ними повторять ;)

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

Не хочу писать 20 файлов с декларацией классов на 1 файл с императивным кодом.

Ну так тем более бери другой инструмент.

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

Это ни о чем не говорит. Jython мёртв, после появления GraalVM он никому не нужен.

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

ИМХО, чапай на Spring Docs… - ошибочка, не надо оно…

Потом/сразу! что-то сделай (сам, без просмотра кода коллег), желательно посмотреть сурьёзных пацанчиков. И делать лучше всего нечто похожее по тому, что матами на работе крыть, ээээ, читать будешь. Заодно всё и подтянется (что и откуда, зачем и куда).

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

У тебя скрипты на Python 2? Jython для Python 3 до сих пор нет. Есть такая вот штука: https://github.com/oracle/graalpython

Но что с ней, что с Jython, твои скрипты на Python останутся ведь по сути неизменными.

EXL ★★★★★
()

Имхо, весь этот мир фабрик java и лапшекода уже устарел, как раньше был этот геммор с хендерами и от них избавились в java, так теперь пора избавляться от лапши многих паттернов, ибо от них зачастую больше проблем, чем пользы… недаром многие джависты без всяких спрингов ни туды, ни сюды

А будущее - компилируемый в native/llvm код, что-то среднее между kotlin vs dart

menangen ★★★★★
()

Попробовал посмотреть исходники - такое впечатление, что на 20 файлов с описанием каких-то структур/классов один файл с кодом алгоритма
Пока решил свои вещи портировать с python на jython

Когда я первый раз столкнулся с жавой, то подумал что-то вроде «ой, это тяжело, я такое не осилю». Потом время шло, и до меня дошло, что проблема не во мне, а в языке. На жаве в текстовом редакторе практически нереально писать крупный проект. То есть можно, но ты за неделю будет выполнять ту же работу, что кодер с IDE выполняет за два часа.

Ситуация не безвыходная, писание на жаве в стиле god object и god interface безо всяких наследований и дроблений, особенно с современными лямбдами, позволяет писать что-то более-менее читаемое. Но жава-макаки не заморачиваются и юзают IDE.

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

Не хочу писать 20 файлов с декларацией классов на 1 файл с императивным кодом. Я датааналитик, у меня на каждый вариант по кастомному лапшекоду + отладка моделей/гипотез/etl в питоне

Пиши на C#.

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

А учиться я по коду коллег не советую. Мало ли на каком этапе своих знаний они это написали?

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

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

Имхо, весь этот мир фабрик java и лапшекода уже устарел, как раньше был этот геммор с хендерами и от них избавились в java

Чиво-о-о? Заголовочные файлы — это мана небесная по сравнению с жабовым кошмаром. Да, не самое лучшее решение, но всё лучше жавы.

А будущее - компилируемый в native/llvm код, что-то среднее между kotlin vs dart

При чем тут kotlin и dart? Проблема статической компиляции, которая, между прочим, есть даже в Си, заключается в том, что нужно инлайнить вызовы функций между модулями и превращать сложные ячейки в простые. Простейший пример для Си — это передача значения через указатель между модулями. MSVC умеет компилировать модули скопом, и потому умеет оптимизировать передачу указателя в передачу значения даже между модулями. В отличие от компиляторов, которые безнадежно застряли в раздельной компиляции.

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

Мне нужно оформить в jar библиотеку и пристыковать к проекту коллег.
Какой C#? На C# я немного умею и вообще я его люблю, хороший язык, человеческий.

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

«архитектура-архитектура-архитектура-одна строчка кода»

И где тут говнище кроме сорванных дедлайнов?

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

Какой C#? На C# я немного умею и вообще я его люблю, хороший язык, человеческий

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

Кстати, Clojure в тему посоветовали.

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

А в clojure аналог pandas есть? В java есть. Вообще мысль интересная. Он точно лучше джавы и котлина

Clojure полностью интероперабелен с жавой. То есть, в нем можно генерировать жавовыый код, а значит жавовые классы, и использовать любые готовые жавовые классы и объекты.

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

«архитектура-архитектура-архитектура-одна строчка кода»

И где тут говнище кроме сорванных дедлайнов?

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

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

Я большую часть карьеры только и делаю, что читаю чужой код и почти не пишу

А что за карьера такая? Поддерживаешь/допиливаешь чужие системы?

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

Ну ты в каждом треде начинаешь вроде нормально, а потом скатываешься. Ну что вот это ты несёшь?

C# создавали программисты. Java создавали эффективные менеджеры. Хотя, казалось бы, принципы слизаны один в один, и все конструкции делаются через жо… классы, но каким-то образом C# стабильно на голову выше жавы.

Ну поинтересуйся, ёптыть. Ну что за чушь я читаю? Ох…

white_bull
()

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

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

А что за карьера такая? Поддерживаешь/допиливаешь чужие системы?

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

Irben ★★★
()

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

graalpython со слов разработчиков есть проблемы с подключением библиотек на C.

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

что почитать, чтобы научиться читать исходники на java?

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

dicos ★★
()

Попробовал посмотреть исходники - такое впечатление, что на 20 файлов с описанием каких-то структур/классов один файл с кодом алгоритма.

и на крестах тоже самое.

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

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

Кто сказал «LTO»?

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

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

Вы поганый, гнилой человек …

Владимир 123

anonymous
()

Поставь idea и поотлаживай код дебаггером. Ну кще почитай про паттерны, и di, spring. Но там читать имхо доки сложнее чем примеры в коде

OxiD ★★★★
()

такое впечатление, что на 20 файлов с описанием каких-то структур/классов один файл с кодом алгоритма.

Схожие впечатления. Посмотри в сторону Scala.

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

Пока решил свои вещи портировать с python на jython.

Ну такое… Если утка крякает как утка, возможно, оно выкинет runtime exception…

P.S. О, тут ещё подсказывают,что jython и в третью версию не умеет. Почему-то я не удивлён…

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

Если хеллоуворлд не можешь написать с применением всех паттернов из GoF и не перечитал все труды Фаулера, то даже не стоит пытаться!

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

NetRexx возьми. человеческий язык, хотя тоже под JVM.

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