4358
2014-06-08 22:05:03
0
아뇨, 일단 제네릭 프로그래밍에 대한 설명이 틀린걸 짚은겁니다... 제네릭이라고 말하신 파트는 함수형 언어의 커링에 해당하고 패턴으로는 클로저 패턴에 대한부분이고, 제네릭이 사용된건 <T> 키워드가 사용된 부분 뿐입니다.
그리고 스위프트는 다양한 프로그래밍 패러다임을 잘 섞어 놓은 것이 특징이지, 그것을 스위프트만 가진 것처럼 표현하시면 처음 보는 사람들에겐 오해가 생깁니다.
스칼라로도 위의 클로저 패턴 예제는 비슷한 라인수로 간단하게 짤 수 있고, 파이썬으로는 제네릭을 사용하지 않아도 되고 데코레이터 패턴을 사용해서 복잡한 커링 없이도 간단히 클로저를 짤 수 있습니다.
딕셔너리의 경우에는 자바스크립트와 파이썬이 다루기가 훨씬 편하고, 클로저와 결합하여 사용한 캐싱 또한 그렇습니다.
스위프트의 가장 큰 강점은 자바스크립트에선 인터프리터로 구현해야 했던 여러 동적 언어의 특징들을 LLVM 백엔드를 활용하여 C/Obective-C와 같은 런타임에서 기계어로 번역되어 실행되기 때문에 동적언어인 스위프트가 정적컴파일 언어와 유사한 속도로 동작한다는 부분입니다.
단일 언어로써 여러 언어의 특징을 취합한 언어로는 이미 러스트나 스칼라와 같이 메이저 개발에 사용되는 언어들이 있습니다. 이들 언어도 스위프트보다 나으면 나았지 못하진 않은 언어적 특징들을 가지고 있습니다.
러스트의 경우는 파이어폭스 재단에서 개발중이고, 스칼라의 경우는 JVM 바이트코드를 백엔드로 가져(스위프트의 LLVM백엔드와 유사) JVM의 런타임을 활용하는 방향을 가지고 있죠.
그리고 스칼라나 러스트 예제 중에서도 저정도 예제는 많고, 하스켈에선 훨씬 더 많습니다....
have fun이지 have faith는 아니니 좀더 다양한 시각에서 어떤 언어적 특징을 어떤 문법으로 표현했는지에 대해 비교해가며 즐기는게 낫지 않을까요