Scala, 여전히 매력적일까? 개발자들의 솔직한 평가.
Scala 언어에 대한 개발자들의 다양한 경험 공유와 함께, 언어의 장단점 및 생태계에 대한 평가가 이루어짐
Scala 3의 호환성 문제와 툴링(Tooling)의 부족, 생태계 분열에 대한 부정적 의견이 제기됨
반면, Scala 3의 향상된 기능과 긍정적인 생태계 변화에 대한 반론도 존재함
Scala의 강력한 도메인 모델링(Domain Modeling) 능력과 동시성(Concurrency) 지원에 대한 긍정적 평가가 있음
Scala 3 호환성 논쟁
일부 개발자들은 Scala 3의 하위 호환성(Backward Compatibility) 부족을 문제로 지적하지만, 다른 의견에서는 Scala 2.13 라이브러리를 Scala 3에서 사용할 수 있는 CrossVersion.for3Use2_13 기능을 통해 호환성을 확보했다고 반박한다. 특히, 매크로(Macro)를 과도하게 사용한 라이브러리에서 호환성 문제가 발생할 수 있다는 점을 강조하며, TASTY를 활용한 호환성 확보를 언급한다. 이러한 논쟁은 Scala 3 업그레이드 시 코드 마이그레이션(Code Migration)의 어려움에 대한 상반된 시각을 보여준다.
Scala 생태계의 분열과 복잡성
Scala 생태계가 Akka/Pekko, cats-effect, ZIO, kyo 등 다양한 이펙트 시스템(Effect System)으로 분열되어, 라이브러리 호환성 문제가 발생한다는 지적이 제기된다. 이러한 분열은 신규 개발자들에게 학습 곡선(Learning Curve)을 높이는 요인으로 작용하며, Odersky 본인도 이러한 상황에 대해 우려를 표명한다고 언급된다. 특히, 직접 스타일 Scala(Direct Style Scala)와 Project Loom 기반 라이브러리의 등장은 생태계의 복잡성을 더욱 증가시키는 요인으로 작용한다.
Scala 툴링(Tooling)의 현황과 과제
Scala의 툴링은 Kotlin과 비교하여 부족하다는 평가가 있으며, 특히 LSP Metals의 안정성이 개선되어야 한다는 의견이 제시된다. scala-cli와 scala-toolkit과 같은 도구는 스크립트 작성 및 테스트를 용이하게 하지만, IDE 지원은 여전히 개선의 여지가 있다는 지적이다. IntelliJ와 같은 상용 IDE는 Scala보다 더 큰 언어(Bigger Languages)에 우선순위를 두는 경향이 있어, 툴링 개선에 대한 지속적인 노력이 필요하다.
Scala의 긍정적 측면과 미래
Scala는 동시성(Concurrency) 및 분산 시스템(Distributed Systems) 구축에 강점을 가지고 있으며, 강력한 도메인 모델링(Domain Modeling) 능력을 제공한다. Spark, Kafka, Apache Flink, Gatling, Lichess, Neo4j 등 다양한 프로젝트에서 Scala가 사용되고 있으며, 새로운 라이브러리와 도구 개발도 활발하게 진행되고 있다. 커뮤니티는 Scala의 강점을 부각하고, Scala 생태계(Ecosystem)의 발전을 위해 노력해야 한다는 의견이 제시된다.