Translate

2018년 7월 21일 토요일

루비 리스프 비교

2011년 1월 6일 목요일

리스프 예찬자들은 code as data, data as code 라고 예찬을 하는데,
루비 또한 code as data, data as code 입니다.
이 말에 동의하지 않는다면,
리스프에서는 list as data, data as list 라고 해야할 것이고
루비에서는 string as data, data as string 라고 해야할 것입니다.
리스프에서 코드를 데이터로 다룰려면 (quote (a b c)) 이런 식으로 써야 됩니다.
즉, (리스트) 로 묶어서 리스트로 넘기는 것이지요.
결국 루비에서 "문자열" 로 묶어서 문자열로 넘기는 것이랑 별반 차이가 없습니다.
실제 코드를 작성해보면 "문자열"로 넘기는 것이 직관적이라서 에러 빈도가 줄어듭니다.
리스프에서 (리스트) 로 넘기는 것이 얼마나 헷갈리는지 리스프 책 한 번이라도 보면 압니다.
그리고, 리스프는 코드가 리스트 구조입니다.
하지만, 루비는 코드가 리스트 구조일 수도 있고 문법이 있는 또다른 구조일 수도 있습니다.
그런 점에서 차이가 나는 것이겠죠. 어느 것이 더 편한가에 대해서는 단연 루비가 압승입니다.
리스트 구조나 문법 구조 중에 쓰고 싶은 거 마음대로 쓰면 되니까요.
이런 점에서 루비는 리스프보다 더 유연하다고 표현력이 풍부하다고 할 수 있습니다.
저는 리스프 예찬자들이 주장하는, '생각을 코드로 표현하기 좋은 언어'가 리스프다는 말에는 절대 동의하지 않습니다. (+ 1 2) 이거보다는 (1 + 2) 가 더 직관적이죠. 조건절만 보아도 명확히 알 수 있습니다.
함수형 패러다임 1종류만 갖춘 언어는 컴퓨터가 이해하기 좋은 언어일지는 몰라도 사람이 이해하기에는 좋지 않은 언어일 수 있습니
다. 어떨 때는 함수형, 어떨 때는 자연어 형으로 코딩하는 것이 편안합니다.
자동차가 달리다가 정지하는 것을 코딩하면
* 리스프 방식
(정지한다 (달린다 자동차))
물론 인자의 순서를 의도적으로 바꾸어 줄 수는 있으나, 그렇게 하면 코드의 일관성이 떨어져 무척 헷갈리게 됩니다.
* 루비 방식
1 객체지향형: 자동차.달린다.정지한다
2 함수형: 정지한다 (달린다 자동차)
상황(생각)에 맞게 코드를 작성하기 좋은 언어는 리스프보다는 "루비"입니다.

댓글 없음:

댓글 쓰기

응용 어플 끝글자 버그 잡는 거 진짜 개쉽습니다

그 동안 제가 끝글자 버그를 잡지 않고 방치한 이유 우선 책임, 의무가 없습니다. 제가 해당 어플 개발자도 아닐 뿐더러 오픈소스가 원래가 유지보수 의무, 보증 책임이 없습니다 . 이렇게 개떡 같은 게 오픈소스입니다. 전 과거 libhwp 하냐고...