Рубрики
Без рубрики

Мой опыт работы на Java в качестве разработчика Javascript

(Зеркально отражено с моего сайта) Мотивация – зачем изучать Java в качестве разработчика JS? Как инженер-программист f… Помечено как программирование, java, обучение, новички.

( Зеркально отражено с моего сайта )

Мотивация – зачем изучать Java в качестве разработчика JS?

Будучи инженером-программистом около 2 лет, я многому научился. Начинающий как Typescript/Node.js разработчик, я быстро освоился с проблемами мира Javascript.

Как мы знаем, Javascript – это динамически типизированный язык с подходом “объекты, связанные с другими объектами” (или связыванием прототипов). ES2015 добавляет некоторый синтаксический сахар, подобный классу, который мне лично не нравится, но такие фреймворки, как Angular, действительно их используют.

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

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

Я верю, что общее понимание превращает вас в лучшего инженера, даже если у вас нет степени CS , плюс это помогает вам легче осваивать другие инструменты профессии (языки, фреймворки) во время вашей карьеры.

Где я был раньше?

Во время Языков программирования ABC MOOC я также попробовал несколько других языков с разными вкусами:

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

Racket – это динамически типизированный функциональный язык, похожий на LISP, который выглядит как полный беспорядок, но как только вы научитесь выворачивать свой мозг наизнанку, он начинает обретать смысл. Тем не менее код, написанный на подобных языках, выглядит как боль, о которой нужно рассуждать и поддерживать. (Надеюсь, здесь я ошибаюсь!)

И в части C этого курса был Ruby, как пример динамически типизированного, но чрезвычайно объектно-ориентированного языка. По крайней мере, Ruby все еще широко используется благодаря современным фреймворкам, таким как Ruby on Rails .

После всего этого я отважился заняться Python – изучение этого было очень приятным занятием, таким же простым, как чтение официального учебника и распечатываю шпаргалку.

Это много языков, некоторые более экзотические, некоторые более распространенные, но где Java ?!

Сильные стороны Java

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

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

С чего начать изучение Java?

Лоб в лоб: попадание и промах

Если вы поищете “Учебник по Java” в Интернете, вы найдете бесчисленное множество сайтов, видео и, конечно же, официальную документацию. Я попробовал этот подход, погрузившись прямо в кодирование после некоторого минимального просмотра документации.

Это так хорошо работало для Python и JS, почему бы и нет?

Я был так неправ… Я даже не мог составить правильный массив… в чем разница между int и Целое число (несмотря на то, что я знал о примитивном боксе в Javascript), Строка и StringBuilder , int[] и ArrayList<Целое число> ? Почему так много реализаций массивов, карт, наборов и т. Д.? Где мой Массив.карта ?

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

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

В mooc.fi курс

Большинство “учебных пособий по Java” в Интернете были, по сути, улучшенными версиями “официальной” документации Oracle. Не поймите меня неправильно, существует масса материалов, обещающих научить вас всем основам.

Осмотревшись на /r/java , я нашел настоятельно рекомендуемый онлайн-курс Хельсинкского университета. Вот ссылки для доступа Часть I и Часть II . Предполагается, что каждый из них длится 6 недель и использует отличный плагин NetBeans под названием TMC (Test My Code) для загрузки упражнений.

И черт возьми, в курсе очень много упражнений! Я настоятельно рекомендую это новичкам, хотя они становятся довольно повторяющимися, если вы более опытный разработчик . Тем не менее, стоит оставаться скромным и просмотрите большинство из них, так как они затрагивают множество болевых точек языка Java и предлагают способ без разочарований пройти через эти препятствия.

Выполнение нескольких упражнений типа “книги в контейнерах в библиотеке” и “животные на фермах” также поможет вам освоить основы объектно-ориентированного мышления. Упражнения разработаны таким образом, чтобы вы естественным образом следовали таким правилам, как принцип единой ответственности.

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

(Редактировать: комплектные NetBeans, предлагаемые на mooc.fi веб-сайт немного устарел, вы можете использовать плагин TMC с последними версиями NetBeans, следуя инструкциям , описанным здесь .)

Могло ли это быть лучше?

Курс, запущенный в 2013 году, немного устарел. Java 8 даже не включена при загрузке, поэтому вы не сможете использовать потоки, например. Именно из–за этого авторы создают обновленную версию – в настоящее время доступна только на финском языке.

(Редактировать: английская версия обновленного курса запланирована на 1 квартал 2020 года. Я обязательно взгляну на него, как только он будет обновлен! А пока вы можете попробовать оригинал или воспользоваться Google Translate!

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

Так что да, Java, которую вы использовали бы сегодня на практике, выглядит немного иначе, чем та, которую вы используете в этом курсе. Почти ноль для циклов, немного больше аннотаций и, конечно, меньше шаблонов. Но после прохождения курса вы будете достаточно осведомлены, чтобы легко найти недостающие материалы и любой вид API по сути.

В mooc.fi курс очень высокого качества, с тщательно продуманными упражнениями и непревзойденной бесплатной ценой, без рекламы – то, что само по себе довольно ценно в современном Интернете. Черт возьми, весь материал лицензирован по лицензии Creative Commons.

Чему учиться дальше?

Я определенно продолжу изучать Java. Теперь, когда я уверенно владею основами языка (не путаю базовые структуры данных), я буду более чем счастлив получить больше бэкэнд-билетов на работе.

Также я буду продолжать изучать новые функции Java: потоки, лямбды, фьючерсы, а также широко используемые инструменты, такие как JUnit, Mockito или Lombok. Изучение основ Spring является обязательным (я бы хотел изучить несколько фреймворков с полным стеком в 2020 году).

В целом, в современном мире программирования почти невозможно пройти мимо Java. Даже если я нахожу этот язык слишком многословным на мой вкус, немного узнать о нем было важным опытом. Изучение некоторых основ ООП также полезно, плюс это открывает двери для других подобных языков, таких как C#.

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

Обновление 2020 Май: Я добился еще большего прогресса, теперь исправляю некоторые основные ошибки и все остальное в производственном коде. Это руководство по потокам оказалось действительно полезным! Сейчас я изучаю некоторые основы Spring framework на Pluralsight.

Оригинал: “https://dev.to/gombosg/my-java-experience-as-a-javascript-developer-52ji”