tgoop.com/aarexer_blog/544
Last Update:
Продолжаем вашу(мою) любимую рубрику Ответ на вопрос
И телезрители играют против знатоков, вопрос из зала задает @Vlod_R
Вопрос:
Как у тебя происходило изучение других ЯПов/стеков? Когда уже был опыт в каком-то
Что бы посоветовал при перекате с ноды/ТС на JVM? Может уже работал с такими людьми и замечал общие ошибки?
Ответ:
Скажу честно, что такие перекаты от санитаров в изучении других ЯП у меня не то чтобы популярная история. В целом совет тут можно дать самый базовый: у любого ЯП есть его стержень (у некоторых ЯП типа как Scala их может быть несколько), так вот понять надо именно стержень этот. Например, в Java - это ООП (ОПГ) и разделение логики на всякие сервисы, контроллеры (Spring головного мозга) - поняв эти две вещи вы точно сможете на работе говорить на одном языке. Здесь важно не уходить в детали и всякие там типы данных - ну есть они и есть, вы их потом поймете. По сути этот стержень - это и есть философия языка, его главная парадигма.
У Python эта философия (как по мне) в нескольких вещах:
Это его гибкость через эти все словари у каждого объекта - что вы там в словаре объекта найдете все его возможности по сути.
Это его ООП (именно свой взгляд, не как у Java) и стиль написания (все эти генераторы).
В Java это его ООП и именно то как Java видит полиморфизм - отсюда все эти интерфейсы там и прочее. Можно полистать старую книжку (она реально чуть устарела, но плюс минус все еще будет полезна) Эккеля Thinking in Java. Даже посмотрев как в Java сделаны ФП вещи можно сформулировать вот именно ту самую философию. По сути (если коротко) Java очень любит абстракции и слои абстракций - отсюда эти все абстрактные фабрики абстрактных методов (шутка) (я не шутил)
Не советую еще читать Шилдта (это как справочник имхо он не нужен сейчас) и Блоха тебе пока не надо читать первое время, на мой взгляд это может отпугнуть
Основные ошибки же у всех одни - надо перестать писать «как вы писали» (забудьте чему вас учили в школе!), например, кто приходит с Си (студенты) - они начинают экономить сразу же байтики повсюду, это не нужно. Вторая популярная ошибка (кмк) - это уход в детали сразу, погружение слишком глубокое туда, куда еще рано. Часто бывает такое, что человек там начинает про какие-то Integer Pool-ы читать, а это ну точно не то, что ему надо сейчас. Третья ошибка - уход в теорию и мало практики (я на нее сам регулярно попадаю).
Очень важно сразу понять нейминг - по сути грамматика для ЯП, в Java принято размашисто писать, в Go нет - вот уже и первые ошибки будут, если ты начнешь как-то называть переменные или классы/методы коротко с кучей сокращений
Еще Java очень строгий и закрытый язык, в отличи от того же JS.
Это выражается и в структуре кодовой базы:
├── controller
├── service
├── repository
├── model
├── config
Даже при DDD ты что то похожее увидишь просто по другому сгруппированное чуть чуть
Пойми как и по какой логике группируют код в проекте (или ты будешь группировать) - отсюда же будет понимание той самой абстракции и интерфейсов-связей между слоями.
Еще отличие, которое замечал, что то, что смотришь на конференциях на том же Python - это все уже было в Симпсонах Java (не так давно смотрел вот про DI доклады там)
Не погружайся в детали сразу.
Если ты начнешь там копать в JVM - там и останешься, а для перехода это не требуется пока.
На правах рекламы еще посоветую JBook но я сам туда пишу и совет из разряда пользуйтесь - это круто, ведь это я делаю!
Но мне кажется там норм некоторые вещи (не все) описаны и полезны.
И я бы на твоем месте быстрее переходил бы в Spring/Ktor/Quarkus/Микронавт там - короче куда то туда, а по мере необходимости уже детали бы изучал.
Вообще популярные фреймворки языка - это тоже в том числе отражение его философии (то как ее видит большинство) - вот тебе это подойдет прямо.
BY Блог Кучука

Share with your friend now:
tgoop.com/aarexer_blog/544