문제

정말 배워야겠다는 생각이 듭니다 리스프 그리고 제가 그렇게 하는 데 도움이 되는 좋은 자료가 많이 있습니다.

나는 복잡한 구문 때문에 미루지는 않지만 "전통적인 상업 프로그래밍"에서 절차적 언어 대신 그것을 사용하는 것이 합리적일 곳을 찾을 수 있습니다.

Lisp로 작성된 상업용 킬러앱이 있나요?

도움이 되었습니까?

해결책

Lisp의 주요 용도 중 하나는 인공 지능입니다.대학에 다니는 내 친구는 AI 대학원 과정을 수강했고 그의 주요 프로젝트를 위해 다음과 같은 글을 썼습니다.불을 끄다" Lisp의 솔버입니다.그의 프로그램의 여러 버전은 약간 다른 AI 루틴을 활용했으며 40대 정도의 컴퓨터에서 테스트한 결과 꽤 깔끔한 결과를 얻었습니다(링크할 수 있는 어딘가에 온라인이 있었으면 좋겠지만 그렇지 않을 것 같습니다).

두 학기 전에 나는 Scheme(Lisp 기반 언어)을 사용하여 Abbott와 Costello의 "Who's on First" 루틴을 시뮬레이션하는 대화형 프로그램을 작성했습니다.사용자의 입력은 꽤 복잡한 데이터 구조(다른 언어의 지도와 비슷하지만 훨씬 더 유연함)와 대조되어 적절한 응답이 무엇인지 선택되었습니다.또한 3x3 문제를 해결하는 루틴도 작성했습니다. 슬라이드 퍼즐 (더 큰 슬라이드 퍼즐로 쉽게 확장될 수 있는 알고리즘)

요약하자면, Lisp(또는 Scheme) 학습은 AI 이외의 많은 실제 응용 프로그램을 생성하지 못할 수 있지만 많은 사람들이 언급한 것처럼 매우 귀중한 학습 경험입니다.Lisp와 같은 함수형 언어로 프로그래밍하는 것도 재귀적으로 생각하는 데 도움이 됩니다(다른 언어에서 재귀에 어려움을 겪었다면 이것이 큰 도움이 될 수 있습니다).

다른 팁

Lisp는 이를 지원하는 크고 복잡한 런타임을 갖춘 크고 복잡한 언어입니다.이러한 이유로 Lisp는 크고 복잡한 문제에 가장 적합합니다.

이제, 복잡한 문제는 다음과 같지 않습니다 복잡한 하나.ㅏ 복잡한 문제는 작은 세부 사항이 많지만 어렵지는 않습니다.항공 예약 시스템을 작성하는 것은 복잡한 사업이지만 충분한 자금과 프로그래머가 있으면 어렵지 않습니다.차이가 느껴지시나요?

복잡한 문제는 복잡하고 전통적인 분할과 정복이 작동하지 않는 문제입니다.로봇을 제어하거나 표 형식이 아닌 데이터(예: 언어) 또는 매우 동적인 상황으로 작업합니다.

Lisp는 솔루션이 확장 가능해야 하는 문제에 정말 적합합니다.전형적인 예는 emacs 텍스트 편집기입니다.완전히 프로그래밍 가능하므로 그 자체로 프로그래밍 환경이 됩니다.

그의 유명한 책에서 PAIP, Norvig는 Lisp가 탐구 프로그래밍에 이상적이라고 말합니다.즉, 완전히 이해되지 않은 문제에 대한 솔루션을 프로그래밍하는 것입니다(온라인 예약 시스템과 반대).다시 말해서:복잡한 문제.

게다가 Lisp를 배우면 잊혀졌던 근본적인 사실을 상기하게 될 것입니다.폰 노이만과 튜링의 차이점우리가 알고 있듯이 Turing의 계산 모델은 흥미로운 이론적 모델이지만 컴퓨터 설계 모델로는 쓸모가 없습니다.반면에 폰 노이만(Von Neumann)은 컴퓨터와 계산이 어떻게 실행되는지에 대한 모델을 설계했습니다.폰 노이만 모델.Von Neumann 모델의 핵심은 메모리가 하나만 있고 코드와 데이터를 모두 여기에 저장한다는 것입니다.Java 프로그램(또는 C# 등 원하는 모든 것)이 Turing 모델의 표현이라는 점에 주의하세요.당신은 당신의 프로그램을 구체적으로 단번에 설정했습니다.그러면 거기에 던져지는 모든 데이터를 처리할 수 있기를 바랍니다.

Lisp는 Von Neuman 모델을 유지합니다.코드와 데이터 사이에는 미리 정의된 명확한 경계가 없습니다.Lisp 프로그래밍은 Von Neumann 모델의 힘에 대한 마음을 열어줍니다.Lisp로 프로그래밍하면 오래된 개념을 새로운 시각으로 볼 수 있습니다.

마지막으로 대화형 방식을 사용하면 프로그램을 개발하면서 프로그램과 상호 작용하는 방법을 배우게 됩니다(컴파일 및 실행과 반대).이는 또한 프로그래밍 방식과 프로그래밍을 보는 방식을 변경합니다.

이 소개를 통해 마침내 귀하의 질문에 대한 답변을 제공할 수 있습니다."전통적인" 언어보다 더 빛나는 곳을 찾을 수 있나요?

고급 프로그래머라면 고급 도구가 필요합니다.그리고 Lisp보다 더 발전된 도구는 없습니다.즉, 다음과 같습니다.문제가 어렵다면 대답은 '예'입니다.그렇지 않으면 그렇지 않습니다.

에 대한 응답으로 @lassevk:

alt text

복잡한 구문??

lisp의 구문은 다음과 같습니다. 엄청나게 간단하다.

Lisp로 작성된 킬러 앱: 이맥스.Lisp를 사용하면 Emacs를 자유롭게 확장하여 편집자가 할 수 있는 거의 모든 작업을 수행할 수 있습니다.

하지만, 다음과 같은 경우에만 lisp를 배워야 합니다. 원하다 직장에서는 결코 사용하지 못할 수도 있지만 여전히 굉장합니다.

또한 다음을 추가하고 싶습니다.비록 lisp가 적합한 곳을 찾았다고 하더라도 그것이 java, c++, c#, python, ruby ​​등에 사용되어야 한다고 다른 사람에게 설득하지 못할 것입니다.

직접적인 경험으로는 대답할 수 없지만 읽어야 할 내용 폴 그레이엄 썼다 리스프에."killer-app" 부분은 다음을 읽어보세요. 평균을 이기다.

나는 약 1년 동안 전문적으로 Lisp로 프로그래밍했는데, 확실히 배울 가치가 있습니다.가능한 경우 모든 상용구 코드를 함수로 바꾸고 그렇지 않은 경우 매크로를 사용하여 코드에서 중복성을 제거할 수 있는 탁월한 기회를 갖게 됩니다.또한 런타임 시 탁월한 유연성을 활용하여 코드와 데이터 간을 자유롭게 변환할 수 있습니다.따라서 사용자 작업이 복잡한 구조를 동적으로 구축해야 할 필요성을 유발할 수 있는 상황은 Lisp가 진정으로 빛을 발하는 곳입니다.인기 있는 항공 스케줄러는 Lisp로 작성되었으며 Lisp에는 CAD/CAM도 많이 있습니다.

Lisp는 작은 DSL을 만드는 데 매우 유용합니다.저는 직장에서 실행 중인 Lisp in a Box 사본을 가지고 있으며 SQL 서버 데이터베이스를 조사하고 C#에서 데이터 계층 등을 생성하기 위해 작은 DSL을 작성했습니다.내 모든 상용구 코드는 이제 C#으로 출력되는 lisp 매크로로 작성되었습니다.나는 HTML, XML 등 모든 종류의 것들을 생성합니다.일상적인 코딩에 Lisp를 사용할 수 있으면 좋겠지만 Lisp는 실질적인 이점을 가져올 수 있습니다.

프로그래밍을 좋아한다면 순수한 즐거움을 위해 Lisp를 배워야 합니다. XKCD 그에 따른 지적 깨달음을 완벽하게 표현합니다.Lisp를 배우는 것은 프로그래머를 위한 명상이고 불교 승려를 위한 명상입니다.

언어의 일반적인 들여쓰기 규칙을 사용하지 않으면 모든 언어가 훨씬 어려워 보입니다.Lisp를 따라가면 구문 트리 구조가 어떻게 매우 쉽게 표현되는지 알 수 있습니다(참고로 미리보기가 약간 놓여 있기 때문에 이는 정확하지 않습니다.r은 재귀 Quicksort 인수의 fns와 정렬되어야 합니다.)

(defun quicksort (lis) 
  (if (null lis) 
      nil
      (let* ((x (car lis)) 
             (r (cdr lis)) 
             (fn (lambda (a) 
                   (< a x))))
         (append (quicksort (remove-if-not fn 
                                           r)) 
                 (list x)
                 (quicksort (remove-if fn 
                                       r))))))

나는 새로운 언어를 배우는 것이 이미 알고 있는 언어의 프로그래밍 스타일에 항상 영향을 미친다는 것을 발견했습니다.나에게는 그것이 나의 주요 언어인 Java로 문제를 해결하기 위해 항상 다른 방식으로 생각하게 만들었습니다.나는 일반적으로 프로그래밍 측면에서 시야를 넓힐 뿐이라고 생각합니다.

나는 80년대에 대학에서 "리스프 수업"을 들었습니다.수업 시간에 제시된 모든 개념을 이해했음에도 불구하고 나는 아무것도 얻지 못했습니다. 어느 Lisp를 훌륭하게 만드는 것에 감사드립니다.많은 사람들이 lisp를 단지 또 다른 프로그래밍 언어로 보는 것이 두렵습니다. 수년 전에 대학에서 했던 강좌가 저에게 그랬습니다.lisp 구문(또는 구문 부족)에 대해 불평하는 사람을 본다면, 그 사람은 lisp의 위대함을 파악하지 못한 사람일 가능성이 높습니다.나는 아주 오랫동안 그런 사람들 중 하나였습니다.

20년이 지나서야 Lisp에 대한 관심이 다시 불붙었고, Lisp를 흥미롭게 만드는 것이 무엇인지 "알기" 시작했습니다.클로저와 lisp 매크로에 놀라지 않고 lisp를 배울 수 있다면 아마도 요점을 놓친 것입니다.

LISP/Scheme을 배우면 응용 프로그램 공간이 늘어나지는 않지만 함수형 프로그래밍, 규칙 및 예외 사항을 더 잘 이해하는 데 도움이 됩니다.

6개의 중첩된 순수 함수의 아름다움과 부작용이 있는 6개의 중첩된 함수의 악몽의 차이를 배우는 것만으로도 시간을 투자할 가치가 있습니다.

에서 http://www.gigamonkeys.com/book/introduction-why-lisp.html

LISP에 대한 가장 일반적으로 반복되는 신화 중 하나는 그것이 "죽었다"는 것입니다. Common LISP가 Visual Basic 또는 Java만큼 널리 사용되지 않는다는 것은 사실이지만, 새로운 개발에 계속 사용되고 새로운 사용자를 "Dead"로 끌어들이는 언어를 설명하는 것은 이상하게 보입니다. 최근 LISP 성공 사례에는 Paul Graham의 Viaweb이 포함됩니다. Yahoo는 Yahoo가 회사를 구입했을 때 Yahoo Store가되었습니다.ITA 소프트웨어의 항공료 가격 및 쇼핑 시스템, QPX, 온라인 티켓 판매자 Orbitz 및 기타에서 사용하는 QPX;PlayStation 2, Jak 및 Daxter에 대한 Naughty Dog의 게임은 주로 도메인 별 LISP 방언 Naughty Dog가 Goal이라는 발명 된 Naughty Dog로 작성되었습니다.그리고 자율 로봇 진공 청소기 인 Roomba는 소프트웨어가 공통 LISP의 아래쪽으로 호환 가능한 서브 세트 인 L로 작성되었습니다.아마도 더 많은 것은 오픈 소스 공통 LISP 프로젝트를 호스팅하는 Common-LISP.NET 웹 사이트의 성장과 지난 몇 년 동안 생산 된 로컬 LISP 사용자 그룹의 수를 성장시키는 것입니다.

“Lisp는 마침내 얻게 될 심오한 깨달음 경험을 위해 배울 가치가 있습니다.그 경험은 실제로 Lisp 자체를 많이 사용하지 않더라도 남은 날 동안 더 나은 프로그래머가 될 것입니다."

--에릭 S.레이먼드, "해커가 되는 방법"

http://www.paulgraham.com/avg.html

나는 Lisp가 상업적인 환경에서는 절대 사용할 수 없는 언어 중 하나라는 점에 동의합니다.하지만 그렇게 하지 못하더라도 이를 배우면 프로그래밍 전체에 대한 이해가 확실히 넓어질 것입니다.예를 들어, 저는 대학에서 Prolog를 배웠고 그 이후로는 한 번도 사용하지 않았지만 많은 프로그래밍 개념에 대해 더 잘 이해하게 되었고 (때때로) 제가 사용하는 언어에 대해 더 큰 감사를 표하게 되었습니다.

하지만 배우고 싶다면... 꼭 읽어보세요. 리스프에 대하여

좋아요, 제가 이상할 수도 있지만 저는 Paul Graham의 에세이를 그다지 좋아하지 않습니다. Lisp에 관한 에세이는 이미 Common Lisp에 대해 어느 정도 이해하지 못했다면 정말 힘든 책입니다.대신 Siebel's를 선택하세요. 실용적인 커먼 리스프."킬러 앱"의 경우 Common Lisp는 다음과 같은 틈새 시장에서 자리를 찾는 것 같습니다. ITA, 따라서 Rails가 Ruby용인 것처럼 CL과 동의어가 되는 앱은 없지만 조금만 파고들면 업계에서 이를 사용하는 곳이 있습니다.

Lisp를 배워야 하는지 스스로에게 물어봐야 한다면 아마도 그럴 필요는 없을 것입니다.

lisp를 배우면 Javascript를 완전히 다른 시각으로 보게 될 것입니다!Lisp는 실제로 재귀와 전체 "일급 객체로서의 기능" 패러다임을 모두 파악하도록 강요합니다.Crockford의 훌륭한 기사를 참조하십시오. 구성표와 Javascript.Javascript는 아마도 오늘날 가장 중요한 언어일 것이므로 Javascript를 더 잘 이해하는 것은 매우 유용합니다!

Gimp의 Script-Fu는 입술이 많습니다.포토샵 킬러 앱이네요.

복잡한 구문이 있나요?lisp의 장점은 엄청나게 간단한 구문을 가지고 있다는 것입니다.이는 단지 목록일 뿐이며 목록의 각 요소는 다른 목록이거나 기본 데이터 유형일 수 있습니다.

함수를 또 다른 데이터 유형으로 생각하고 사용하는 코딩 능력을 향상시키는 방식 때문에 배울 가치가 있습니다.이는 명령형 및/또는 객체 지향 언어로 코딩하는 방식을 개선할 것입니다. 왜냐하면 코드가 구조화되는 방식에 대해 정신적으로 더 유연해질 수 있기 때문입니다.

다른 답변에 추가하려면 다음을 수행하십시오.

왜냐하면 SICP 코스(동영상을 볼 수 있습니다. 여기) 정말 대단해요:Lisp을 가르쳐준다 그리고 훨씬 더!

킬러 앱? 프란츠 주식회사 긴 목록이 있습니다 성공 사례, 그러나 이 목록에는 AllegroCL 사용자만 포함되어 있습니다...아마도 다른 것들도 있을 것입니다.내가 가장 좋아하는 것은 너티독에 관한 이야기, 저는 Crash Bandicoot 게임의 열렬한 팬이었기 때문입니다.

Common Lisp를 배우려면 추천합니다. 실용적인 커먼 리스프.적어도 나에게는 내가 본 다른 책들보다 더 쉽게 만들 수 있는 실습 접근 방식이 있습니다.

당신은 사용할 수 있습니다 클로저 오늘은 Java VM 위에 테스트와 스크립트를 작성하겠습니다.JVM에 구현된 다른 Lisp 언어도 있지만 Java와의 통합에는 Clojure가 가장 적합하다고 생각합니다.

Java 언어 자체가 Java 코드("전통적인 상용 프로그래밍" 포함)에 대한 테스트를 작성하는 데 방해가 되는 경우가 있습니다.(Java를 비난한다는 뜻은 아닙니다. 다른 언어도 같은 문제를 겪고 있습니다. 하지만 이는 사실입니다.Java가 아닌 주제이므로 자세히 설명하지 않겠습니다.누군가 토론하고 싶다면 자유롭게 새로운 주제를 시작하세요.) Clojure는 이러한 방해 요소 중 많은 부분을 제거합니다.

Lisp는 전통적인 프로그래밍을 사용하는 모든 곳에서 사용할 수 있습니다.그다지 다르지는 않지만 더 강력합니다.웹앱을 작성하시나요?Lisp에서 데스크톱 애플리케이션을 작성할 수 있나요?Lisp에서 할 수 있습니다. 무엇이든 Lisp, Python 또는 기타 일반 프로그래밍에서 할 수 있습니다(단 하나의 작업에만 적합한 언어가 몇 가지 있습니다).

가장 큰 장애물은 아마도 상사, 동료 또는 고객의 수용일 것입니다.그것은 당신이 그들과 함께 일해야 할 것입니다.다음과 같은 실용적인 솔루션 선택 클로저 JVM에서 라이브러리에 이르기까지 Java 인프라의 현재 설치 기반을 활용할 수 있는 것이 도움이 될 수 있습니다.또한 Java 프로그램이 있는 경우 플러그인 아키텍처를 수행하고 이에 대한 Clojure 플러그인을 작성하면 결국 코드의 절반을 Clojure로 작성하게 될 수 있습니다.

이유는 아니지만 (사소한) AutoCAD에는 LISP 및 DCL 런타임이 지원됩니다.VBA, C++ 또는 .NET SDK를 사용하지 않거나 DIESEL 표현식이 잘리지 않는 경우 복잡한 매크로(ActiveX 자동화 포함)를 작성하는 편리한 방법입니다.

많은 AutoCAD 기능은 실제로 LISP 루틴입니다.

이것은 나 자신이 한동안 생각해 본 주제이지만, 평소에는 시간이 가장 큰 문제이기 때문에 아직 결정을 내리지 못했습니다...;)

그리고 이 게시물에서는 이러한 링크를 찾을 수 없으므로 공공의 이익을 위해 추가합니다.

성공과 실패 사례:JPL에서의 리스핑

정말 인상적인 성공 사례:Orbitz 회사에서 사용 중인 Lisp

Java 대신 Lisp를 사용할지 여부 비교 및 ​​분석:Java의 대안으로서의 Lisp

구문은 관련이 없으며 가독성도 중요하지 않습니다!

이것이 킬러 앱이라고는 말할 수 없지만 멋질 것 같습니다.http://code.google.com/p/plop/

킬러 앱?ITA Software의 항공편 검색 엔진이 그 중 하나입니다.

"이유"에 관해서는 아마도 당신을 더 나은 개발자로 만들 것이고 당신을 더 나쁘게 만들 가능성은 거의 없습니다.그러나 다른 언어보다 lisp 방언을 선호하게 만들 수도 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top