Недавно я купил Programming Scala и прочитал его. Язык определенно не то, что я ожидал! В частности, кажется, что он реализует почти все идеи языка программирования, о которых я знаю, за исключением макросов Lisp и разделения побочных эффектов на уровне типов Haskell.
Честно говоря, это меня несколько ошеломило. Хотя я полагаю, что хорошо иметь в своем распоряжении так много инструментов, на самом деле я просто искал строго типизированный функциональный язык для JVM. Я полагаю, что мог бы использовать Scala таким образом, но я полагаю, что если я буду взаимодействовать с какими-либо библиотеками или просматривать чей-либо код, я столкнусь со многими этими продвинутыми (для меня) объектами ООП - чертами и "иерархией объектов". линеаризация», весь этот абстрактный и переопределяющий бизнес, одноэлементные, пакетные и сопутствующие объекты, неявные преобразования... не говоря уже о различных синтаксических сокращениях и сахарах.
Люди часто жалуются на программистов, которые пытаются впихнуть стиль одного языка в другой по множеству веских причин. Но не все языки столь же мультипарадигмальны, как Scala, так что, возможно, у его сообщества другое мнение? В F#, например, кажется, есть некоторая свобода действий в стилях программирования и в том, сколько ООП вы используете. Но просто из прочитанного я не уверен, что это хорошая философия и для Scala.
Могут ли мне помочь более опытные программисты на Scala? Отредактируйте для ясности. В принципе, могу ли я безопасно использовать только (или в основном) функции FP Scala, не беспокоясь о его расширенной стороне ООП?
Извините за сумбурный вопрос!