Всех с Наступающим Новым Годом)
Новый год - новые знания) Поэтому хочу выбрать какой-то новый язык программирования для изучения) Сейчас я пишу на php, как основном языке уже 5 лет. Захотелось чего-то нового попробовать, и выбор пал на Java + Kotlin, TS (React.js или Vue.js) + Node.js.
Дорогие товарищи, посоветуйте, кто с чем работал и какой опыт, плюсы и минусы на ваш субъективный взгляд.
Изначально думал только Java учить, но тут в поле зрения попал Kotlin, почитал, а оказывается на нем сейчас вся разработка под андроид идет, то есть Java потерял нишу. Геймдев тоже теперь вроде не ниша Java, хотя более или менее приличные игры пишут на libGDX.
Java привлекает тем, что по сравнению с php хорошо подталкивает к красивому коду с использованием паттернов проектирования (чего не скажешь о php и js) и плюс он компилируемый.
Отталкивает Java тем что потеряла интересные ниши, и кроме сухого бекенда как на php в ней делать особо нечего интересного, а это и на php при моем опыте пишется не хуже.
В JS, а точнее в TS вижу плюс в том, что смогу сразу почти начать новые навыки использовать на практике в работе, так как все равно приходиться сейчас использовать JS для написания простых интерфейсов, а тут навыки появятся для более грамотного использования, вместо JS + Jquery, будет норм TS с типизацией и фреймворк структурирующий код, плюс node.js, ан котором тоже бек можно писать. Еще из плюсов то, что можно писать под любые мобилки с помощью библиотек и даже прегонять код чтобы делать игры в unity (качество не знаю).
В TS смущает то, что даже не смотря на типизацию это пока язык для говнокода, так как даже в сравнении с php, особенно последних версий, такую помойку развести можно не много где.
Интересно еще доминирование JS в своей области, и то что учишь один язык, а потом можешь еще по факту писать и на ноде почти, делать мобилки и игры. Java к сожалению свои ниши тут потерял похоже.
JavaScript
Помогите определиться с выбором нового языка (JS(TS) vs Java)
JS, TS, Java - это всё не так уж и сильно от PHP отличается: то же самое ООП, основанное на классах и наследовании, те же самые исключения, то же самое засилье C-style побочных эффектов...
Раньше JS был более своеобразным языком, но сейчас и в него классы впихнули - так что далеко не все современные "программисты на JS" понимают, что такое прототипы.
Java - да, статическая типизация. Но ведь и в современный PHP завезли серьёзный контроль типов - если умеешь им пользоваться.
Хочешь познакомиться с чем-то действительно новым - посмотри на Go. Вот в нём совершенно другая модель ООП, другие принципы обработки ошибок...
P.S. А с паттернами в PHP всё прекрасно - достаточно в любой топовый фреймворк заглянуть. Паттерны - это всего лишь несколько общеизвестных (задолго до появления книги "банды четырёх") приёмов программирования, на которые авторы книги навесили ярлычки-названия. И от языка программирования использование паттернов никак не зависит.
P.P.S. Говнокод зависит не от языка, а от самодисциплины и уровня знаний кодера. Ничего не мешает говнокодить на Java и писать прекрасный код на PHP.
P.P.P.S. Если бы доминирование JS в front-end всех устраивало, не появился бы WebAssembly, позволяющий писать браузерный код на приличных языках. А то, что JS переехал на back-end - так это очередное героическое преодоление собственноручно созданных трудностей.
Раньше JS был более своеобразным языком, но сейчас и в него классы впихнули - так что далеко не все современные "программисты на JS" понимают, что такое прототипы.
Java - да, статическая типизация. Но ведь и в современный PHP завезли серьёзный контроль типов - если умеешь им пользоваться.
Хочешь познакомиться с чем-то действительно новым - посмотри на Go. Вот в нём совершенно другая модель ООП, другие принципы обработки ошибок...
P.S. А с паттернами в PHP всё прекрасно - достаточно в любой топовый фреймворк заглянуть. Паттерны - это всего лишь несколько общеизвестных (задолго до появления книги "банды четырёх") приёмов программирования, на которые авторы книги навесили ярлычки-названия. И от языка программирования использование паттернов никак не зависит.
P.P.S. Говнокод зависит не от языка, а от самодисциплины и уровня знаний кодера. Ничего не мешает говнокодить на Java и писать прекрасный код на PHP.
P.P.P.S. Если бы доминирование JS в front-end всех устраивало, не появился бы WebAssembly, позволяющий писать браузерный код на приличных языках. А то, что JS переехал на back-end - так это очередное героическое преодоление собственноручно созданных трудностей.
Сергей Миллер
С паттернами полностью согласен и с говнокодом тоже) На счет фреймворков - в yii2 например нужнол фреймворка переписать чтобы он нормально выглядел, ну или делать луковичную архитектуру вообще абстрагируясь от фреймворка. И то, какая там может быть речь о единственной ответственности в ActiveRecord)
Сергей Миллер
Да, писать можно в целом на любом языке хорошо, но есть те, которые подталкивают к хорошему написанию, и это означает, что в командах будет больше людей с навыками и приятней работать, плюс проекты для поддержки будут попадаться приятней. Есть правда нюанс в том, что многие джависты говорят, что Java вымирает и больше нового на ней почти не пишут, что типа в основном поддержка старых проектов и на старых версиях Java.
Юрий Здрашко
Да, динамические языки и статические со слабой типизацией провоцируют написание говнокода. Но на то и опыт, чтобы этому проивиться. И тут важен первый язык - если он провоцирует вседозволенность, то от этого потом очень сложно избавиться. А если начинать с одного из языков Вирта, или того же Go, то и в дальнейшем - при переходе на динамические языки - проблем не будет.
Java выбирай.
// Унылую поэму-биографию в дополнении к вопросу не дочитал и до середины.
// Унылую поэму-биографию в дополнении к вопросу не дочитал и до середины.
Для начала определитесь в какой области вы хотите работать. Тогда уже и соответствующий язык учите
Ну судя по тому что твоим основным языком был php, я бы посоветовал выбрать js, так как ты сможешь проявить себя в Front-end и может если углубишься, перейдёшь полностью на него. Java тоже не плохой язык, но со своим гемором, так что лучше попробуй и java и js.
Похожие вопросы
- Как сделать радномный выбор объекта? HTML, JS
- вопрос по языку JS, описание внутри
- В чем разница между Js и Java?
- Помогите решить задачу на языке java
- Обьясните простым языком. Что делает RETURN в JS
- за сколько можно выучить язык программирования JS(JavaCript)?
- Подскажите сайт (ы) где показаны что добавили в js нового, чтобы список нововведений обновлялся
- Js или же Ts
- Помогите, пожалуйста, написать js код для обновления ссылки
- Js фреймворки, что полезного можно для себя найти?