2009-12-08 3 views
12

저는 일반적인 프로그래밍 기술을 향상시키기 위해 Lisp 방언 (아마도 Scheme입니다. 학습 언어가 얼마나 좋은지 계속 듣고 있기 때문에 아마도 Scheme을 배웠습니다.)을 고려하고 있습니다.Lisp은 어떻게하면 더 나은 C# 개발자로 만들 수 있습니까?

새로운 언어를 배우는 것이 일반적으로 더 나은 프로그래머가되는 데 도움이된다는 사실 외에도 Lisp을 배우면 나에게 더 나은 C# 프로그래머가 될 수 있을까요?

+5

누구가 투표를 마감 했습니까? – ChaosPandion

+1

F #도 고려해 볼 수 있습니다. VS2010이 주류를 이루고 있습니다. – roufamatic

+1

좋은 생각입니다. 언어 자체보다는 IDE에 더 많은 것. – ChaosPandion

답변

9

난 당신이 기능적인 언어를 공부에서 얻을 수있는 최선이라고 생각하기 시작 생각 보다 선언적이며 덜 긴급한 방식으로 그렇게하면 더 읽기 쉽고 유지 보수가 가능하며 작성 가능한 코드를 작성할 수 있습니다.

기능을 수행 할 때 배울 점은 순수한 기능, 즉 부작용이없는 기능의 중요성입니다.

C#에서는 closure (일명 람다)와 LINQ와 같은 기능적 및 선언적 기능이 점점 더 많이 사용되므로 이러한 구문을 사용하여 프로그래밍을 더 잘 이해할 수 있습니다. 나는 지연된 실행, 가장 일반적인 LINQ 함정을 이해하는 데 어려움이 없었습니다. 왜냐하면 저는 게으른 것으로 평가 된 함수 언어 인 Haskell을 이미 능가했기 때문입니다.

+0

데이터베이스로 작업하는 것이 더 낫습니다. –

+0

@somebody : 예, 이점입니다. SQL은 선언적 언어이므로 선언적으로 생각하는 것이 좋습니다. –

+3

나는 내 자신의 답변을 쓰고 있었지만 기본적으로 "Martinho가 말한 것"입니다. 선언적으로 글쓰기, 기능적으로 쓰기 - Lisp은 이것이 왜 좋은 것들인지에 대한 외부 관점을 제공 할 것입니다. "기능 프로그래밍 스타일은 테스트하기 쉽습니다"뿐만 아니라 "와우, 내 프로그램이 데이터 기반이거나 키 로직을 매개 변수로 전달할 수 있기 때문에 내 프로그램이 얼마나 더 짧고 확장 가능한지보십시오." 앞서 말했듯이 C#은 이러한 방식으로 작업하기가 더 쉬운 기능을 제공합니다. Lisp은 당신이 왜 신경 써야 할지를 보여줄지도 모른다. – khedron

2

한편으로는 내부와 외부에서 재귀를 학습 할 수 있습니다. 존 휴즈는 http://www.cs.chalmers.se/~rjmh/Papers/whyfp.html

폴 그레이엄에 의해 평균을 물리 치고

+5

내부와 내부를 다시는 의미하지 않습니까? :) – Kevin

+0

@ 케빈 : 그 문장은 재귀 적 ("and", "again") 반복적 인 느낌이 듭니다. 나는 "recursion inside recursion"또는 무엇인가를 말할 것이다. –

+0

글쎄, Lisp의 경우, 꼬리말 재귀가되어야하며, 영어로 예제를 통해이를 증명하는 방법에 대해서는별로 신경 쓰지 않는다. –

1

Scheme을 배우는 좋은 이유 중 하나는 종종 교육학 언어로 사용된다는 것입니다. 결과적으로 Scheme을 목표 언어로 사용하여 좋은 (학술) 책과 논문이 많이 있습니다.

구글 :

  • EOPL
  • SICP
  • HTDP
  • 리틀/조미/추론 음모
4

조엘 에세이 몇 년 전에 about programmers knowing anything but Java을 쓰고, 왜 것 Scheme과 같은 것을 배울 좋은 아이디어. 나는 이러한 주장이 C#에도 적용된다고 생각한다. 또 다른 좋은 이유는 Scheme을 사용하고 다른 프로그래밍 개념에 대한 많은 새로운 통찰력을 줄 수있는 프로그래밍에 관한 정말 좋은 책인 'Structure and interpreation of computer programs' by Abelson and Sussman입니다.

1

그냥 익히고 놀라서 돌아와서 알려주세요.

4

metaprogramming의 힘을 이해할 수 있도록 Lisp을 배워야합니다. 아직 수행하지 않았다면 Emacs을 사용하고 Emacs Lisp을 작성해야합니다. 그 후에 프로그래밍 Common Lisp으로 이동하여 SLIME을 사용해보십시오.

+0

투표를 마치고 Common Lisp 대신 Scheme을 사용하라고 말합니다. ;) 원래 포스터에 도움이 될 수있는 CLR을 지원하는 구성표가 몇 가지 구현되어 있다고 생각합니다. –