[영상 요약] 왜 함수형 프로그래밍이 표준이 아닐까?
다음 영상을 보고 요약 정리해보았다. 한번은 더 봐야 제대로 다 이해하겠지만 일단 대충 이해함.
https://www.youtube.com/watch?time_continue=1&v=QyJZzq0v7Z4&feature=emb_logo
왜 함수형 프로그래밍이 표준이 아닐까? 이유는…복잡하다!
- Part 1: Language
- Part 2: Paradigm
- Part 3: Style
1. 오늘날 어떤 언어가 표준인가?
SlashData 사이트. 가장 많이 쓰이는 언어들 순위
열 개중에 함수형 프로그래밍 언어는 없다.
그 언어들은 어떻게 대세가 되었는가?
- Killer App
- Platform Exclusivity
- Quick Upgrade
Killer App
Ruby의 킬러 앱
Rails.
Php의 킬러 앱
making HTML dynamic. WordPress, Drupal
C의 킬러앱
System Programming. 어셈블리, 파스칼
잠재력있는 FP killer App
-
Elm elm-ui
-
Clojure Datomic
-
ReasonML revery
플랫폼 독점
-
object-c, Swift - iphone의 발전과 같이함
-
JS - 웹
-
C# - Microsoft는 cross-platform 언어인 Java를 사람들이 쓰기를 원하지 않음.
신속한 업그레이드
- Benefits
- Familiarity
- Learning Curve
- Ecosystem Accss
- Code Migration Effort
예: CoffeeScript - JS와 유사, TypeScript - 역시 JS와 유사. C++ - near-superset of C, Kotlin - Java
Epic 마케팅
Java - 2003년 제임스 본드 영화에 Java Card, 2003년 500만 달러 마케팅 비용
Javascript - 이름
Python -
다른 인기 요인들
Syntax, Job Market, Community
왜 모든 인기있는 언어들은 OO인가?
2. 패러다임
객체지향 언어가 그만큼 뛰어난가?
상속, 합성
- Go: OO style을 지원한다. 상속은 없음.
캡슐화 : 모듈화와 비슷함
모듈화
Simula는 모듈 시스템은 없지만 캡슐화는 있다. 따라서 모던 랭귀지의 이점을 얻지 못했다.
algol -> simula -> Smalltalk -> Obect C
“Object-Oriented” - Alan Kay
하지만 오늘날 Object Oriented는 Alan Kay가 생각한것과 다르다. “내가 원래 그런 의미로 말한건 아니었어” – ????
simula -> C with classes -> C++
C에 class랑 Object-Oriented 기능 추가했는데 성공 못했고.. 더 기능 추가해서 c++만드니까 성공!
객체지향 언어가 객체지향의 특징 덕분에 표준이 되었는가? 아니오
그 언어들은 modularity가 좋은 아이디어이기 때문에 객체지향일 뿐이고, 그것도 우연히 얻은 기능일 뿐이다.
3. Style
Functional Programming Style
“Avoid mutation and side effects”
Kotlin, swift 둘다 객체지향과 함수형을 다 가지고 있다. 둘다 쓸수있다.
여러 유명 언어들로 함수형 프로그래밍을 하는 여러 방법과 책들이 많다!
아마 지금은 객체지향 style에서 함수형 스타일로 넘어가는 중간 시기일지도 모른다.
요약
왜 함수형 프로그래밍이 표준이 아닌가?
- 충분히 큰 killer app이 없다.
- 큰 독점 플랫폼이 없다.
- 크게 다른 경우 빠른 업그레이드 불가능
- 특별한 마케팅 예산이 없음
- 느리지만 점진적으로 성장중이다.
객체지향의 유니크한 특징때문에 객체지향 언어들이 표준인가?
- 캡슐화는 객체지향의 유니크한 특징이 아님. 모듈도 할수있음
- 상속은 유니크한 객체지향 특징이지만, 객체지향 모범사례들은 상속보다 합성(composition) 지향
- 상속 없이, 객체와 메소드들은 struct와 procedure들과 별로 다르지 않음.
함수형 프로그래밍은 표준이 되어가는 중이다!
느낀점
발표자 말이 너무 빠르다.. 0.75배속으로 듣는데 1배속 느낌이다.
발표자에 대해 “Richard is a member of the Elm core team, the author of Elm in Action from, and the instructor for the Intro to Elm and Advanced Elm courses on Frontend Masters.” 라는 소개가 있다.
Elm이 뭔지 몰라서 찾아보았다.
Elm은 웹 브라우저 기반의 GUI(Graphical user interface)를 선언적으로 작성하기 위한 도메인 고유 프로그래밍 언어(DSL)이다. Elm은 순수 함수형 언어이며, 사용성(usability)·퍼포먼스·견고성을 중시하여 개발되고 있다. 정적이고 강력한 타입 검사에 의해 ‘사실상 일체의 실행시 예외가 일어나지 않는다’는 점을 내세우고 있다.