Контекстуализация:
Привет, мне 25 лет, и я работаю фрилансером уже 8 лет. В основном я работал со стеками: NodeJS, React, React Native и с TypeScript как надмножеством стека. Мне всегда нравилось программировать, и я всегда изучал такие языки, как: "C/C++/Rust/Go, Java/C#, Haskell, Python/Ruby, Elixir/Erlang, Clojure, Scala, Elm, PureScript... ..." (несмотря на то, что я не программировал в них профессионально, но я всегда учился, делая какие-то личные проекты). Несмотря на то, что я универсал (потому что я фрилансер), мне всегда нравилось доносить свою работу наилучшим образом, с чистым, простым и масштабируемым кодом.
Проблема:
В этом году я «ушла» из жизни фрилансера и начала входить в сферу бизнеса. Я начал работать с другими людьми, и у меня появилось много «головной боли», связанной с пониманием работы других (мы используем NODEJS), в основном потому, что есть команды, которые используют Vanilla JavaScript, другие TypeScript, некоторые делают это в объектно-ориентированном подходе, а другие более функциональны. .и это ужасно для меня. Хотя я не большой поклонник Java (и объектно-ориентированного программирования), по крайней мере, я думаю, что они более организованы, поскольку они следуют строгому шаблону, полностью объектно-ориентированному (или теоретически так и должно быть после того, как Java 8 представила лямбда-выражения).
Вопросы:
Несмотря на то, что я занимаю руководящую должность в компании, я иногда беспокоюсь, что не делаю все возможное. Я не знаю, потому ли это, что это дело привычки, или работа в команде с объектно-ориентированным подходом и смешанными парадигмами (особенно в JS) — это действительно беспорядок.
Я давно изучаю функциональное программирование, и я ДЕЙСТВИТЕЛЬНО хочу сменить работу, чтобы работать над каким-нибудь более функциональным языком (например, Clojure или Elixir), потому что я могу понимать код намного лучше, чем объектно-ориентированную абстракцию. (Или, по крайней мере, избегайте плохого кода, я думаю)
Любые советы для меня? Спасибо!
Я думаю, что это более организовано, поскольку они следуют строгому шаблону, который полностью объектно-ориентирован (или теоретически он должен быть после того, как Java 8 представила лямбда-выражения)
Такое предложение заставляет меня задаться вопросом, понимаете ли вы, о чем говорите. Объектная ориентация является основным продуктом Java, но лямбда-выражения не являются частью объектной ориентации, это часть исчисления на основе лямбда, которое часто связано с Lisp или Scheme, языками, в которых обычно отсутствуют объекты (если только вы не решите реализовать их с помощью неродных средств). ).
Я готов сказать, что смешанная парадигма программирования сложнее, чем одна парадигма, но, честно говоря, JavaScript также является объектно-ориентированным, поэтому мне интересно, где сочетание парадигм вступает в свои права.
Я рад слышать, что вы изучаете языки, основанные на лямбда-выражениях, и что они вам нравятся; но, честно говоря, вы, вероятно, не будете эффективны в этом, пока не потратите свое время. Языку требуются годы, чтобы перейти от «умения что-то делать» к «настоящему мастерству в этом деле».
Что касается лямбда-исчисления, помогающего «избежать плохого кода», то есть и другие плохие новости. Первоначальный «плохой код» был написан на машинах с Лиспом в 60-х годах. Плохой код существует в каждом парадиме, и по шкале лямбда-исчисления неверный шаг может означать «исправить эту лямбду» или «переписать все лямбда-выражения» в зависимости от того, как исправление укладывается в базу кода. Есть причины, по которым эта языковая группа перешла от «владения большей частью программирования» к нише и только медленно восстанавливает свои позиции.
Так что я бы замедлился. Может быть, вы действительно там, где вы думаете; но с учетом ошибок в вашем собственном вопросе и ошибок в том, что могут дать новые языки, я думаю, что вам повезло быть на руководящей должности (и в вашей области, скорее всего, вы действуете на старшем уровне ), но за пределами своей ниши вы слишком самоуверенны.
Потратьте некоторое время и изучите новые вещи. Овладение более чем одной нишей требует времени и дает преимущества, которые трудно измерить. Я думаю, это того стоит. Я просто думаю (у меня нет доказательств, подтверждающих это), что вы просматриваете новый материал, разочаровываетесь, а затем прыгаете с корабля, прежде чем действительно узнаете материал. Еще через несколько месяцев вы, возможно, откажетесь от лямбда-выражений и перейдете к следующему, не совсем освоенному классному предмету. В любом случае, удачи!
В профессиональном мире объектно-ориентированное программирование является наиболее распространенной парадигмой, но на самом деле большая часть современной разработки программного обеспечения является мультипарадигмой . Я бы рекомендовал развивать ваше понимание объектно-ориентированной парадигмы, чтобы дополнить ваши знания функциональной парадигмы, но не существует одной парадигмы, которая управляла бы ими всеми.
Гейб Сечан
Эдвин Бак