Scala — 함수형과 객체지향이 같은 동전의 두 면임을 증명한 언어
1. 요약
Scala는 2001년 EPFL의 Martin Odersky가 설계를 시작해 2004년 1월 공개된 JVM 언어다. Odersky의 학술 논문 명제는 "객체지향과 함수형은 같은 동전의 두 면이며 통합되어야 한다" 였다. 이름은 "scalable language" 의 줄임이다. Odersky는 자바 1.5의 generics 도입에도 핵심 기여한 인물이다.
2. 배경 — Java의 표현력 한계
2000년대 초 Java는 산업계 OOP 표준이었지만 boilerplate 가 많고 함수형 표현이 어려운 한계가 있었다. Odersky는 Java 호환성을 유지하면서 함수형 표현력을 기록하는 언어 를 목표로 박았다.
이는 1990년대 Pizza·GJ 같은 Java 확장 실험의 연장선이었다. Odersky는 그 경험으로 학술 정형성과 산업 실용성의 균형 을 기록하는 데 능숙했다.
3. 핵심 특징
- JVM compatibility — Java 라이브러리·생태계 그대로 사용 가능
- Unification of OOP + FP — 모든 것이 객체이면서 함수도 일등 시민
- Pattern matching — Haskell 스타일의 강력한 매칭
- Implicits — 컨텍스트 매개변수와 타입 클래스의 융합
- Type inference — 학술적 정형성을 산업에 도입
- Actor model (Akka) — Erlang의 영향을 JVM에 기록
4. 주 용도
- 2004~2010: 학술·언어 연구·EPFL 교육
- 2010~2015: Twitter·LinkedIn·Foursquare — 백엔드 대규모 도입. "better Java" 로 불림.
- 2010~현재: Apache Spark (UC Berkeley AMPLab, 2010) — 빅데이터 처리의 표준. Scala로 짜여 있음.
- 2015~현재: 함수형 백엔드(Cats·ZIO·Akka)·Kafka 스트림·금융
5. 시대 설계 도구 매핑
Scala는 "강한 타입 시스템 + 함수형" 이 산업 도구로 기록된 첫 사례다. 같은 시기 Java는 Spring Framework·Hibernate 로 프레임워크가 설계를 기록하는 길을 갔다면, Scala는 언어 자체가 설계를 기록하는 길을 갔다.
이는 설계 위치의 두 갈래 를 보여준다.
- 프레임워크 안에 설계 → 학습 곡선 낮음, 유연성 낮음 (Java/Spring)
- 언어 안에 설계 → 학습 곡선 높음, 표현력 높음 (Scala/Cats)
산업계는 결국 둘 다 가져갔다 — 거대 시스템은 Java/Spring, 데이터·금융 분야는 Scala/Spark.
6. 강의 활용
Scala는 "두 패러다임을 통합하면 새로운 길이 박힌다" 를 보여주는 사례다. OOP와 함수형을 분리해서 보던 시대에, Odersky는 둘이 같다 는 학술적 통찰을 산업 언어로 박았다.
이는 Vibe Coding 시대의 메시지와 직결된다. "코드와 자연어 프롬프트가 같은 설계의 두 면" 이라는 통찰이 LLM 시대를 열었다. Scala가 30년 전 OOP-FP 통합을 박았다면, Vibe Coding은 코드-프롬프트 통합 을 기록한다.
또한 Apache Spark의 성공은 "잘 설계된 언어 + 잘 설계된 추상" 이 빅데이터 산업을 바꿨다는 점을 보여준다. Spark의 RDD·DataFrame 추상은 Scala의 함수형 타입 시스템 위에 기록되어 있다. 언어 설계가 곧 산업 설계의 토대 가 된 사례다.
Scala 3 (Dotty, 2021)는 더 원리에 충실한 방향으로 박혔는데, 이는 학술적 정형이 결국 산업으로 흘러간다 는 흐름의 증거다. 강의에서 "오늘 학술의 변두리가 10년 후 산업의 중심이 된다" 는 메시지를 전할 때 좋은 사례다.
출처
- Scala (programming language) - Wikipedia
- Martin Odersky - Wikipedia
- Unifying Functional and Object-Oriented Programming with Scala - CACM
- Scala designer cites goals - Computerworld
그룹 시리즈
→ synthesis/group-g6 (시대 그룹 종합 카드)