[python] 메타 프로그래밍을위한 Python 대 Ruby [닫기]

저는 현재 주로 D 프로그래머이며 D 와 같이 정적으로 컴파일 된 언어로는 수행 할 수없는 메타 프로그래밍 해킹을 지원하는 다른 언어를 내 도구 상자에 추가하려고합니다.

나는 Lisp에 대해 조금 읽었고 Lisp가하는 멋진 것들을 허용하지만 Lisp의 이상한 구문 등이없는 언어를 찾고 싶습니다. 나는 언어 전쟁을 시작하고 싶지 않으며 Ruby와 Python 모두 장단점이 있다고 확신하므로 개인적으로 중요한 것이 무엇인지 나열하겠습니다. Ruby, Python 또는 다른 언어가 나에게 가장 적합한 지 알려주세요.

중대한:

  1. 좋은 메타 프로그래밍. 런타임에 클래스, 메서드, 함수 등을 생성하는 기능. 가급적이면 코드와 데이터 사이의 최소한의 구분, Lisp 스타일.
  2. 훌륭하고 깔끔하며 건전한 구문과 일관되고 직관적 인 의미 체계. 기본적으로 신중하고 사용하기 쉽고 현대적인 언어입니다.
  3. 다중 패러다임. 모든 프로젝트에 적합한 패러다임은 없으며 프로젝트 내의 모든 작은 하위 문제까지도 적합하지 않습니다.
  4. 프로그래밍에 대해 생각하는 방식에 실제로 영향을 미치는 흥미로운 언어입니다.

다소 중요 :

  1. 공연. 성능이 괜찮 으면 좋겠지 만 성능이 진짜 우선이라면 D를 대신 사용하겠습니다.
  2. 잘 기록 된.

중요하지 않음 :

  1. 커뮤니티 규모, 라이브러리 가용성 등. 이들 중 어느 것도 언어 자체의 특성이 아니며 모두 매우 빠르게 변경 될 수 있습니다.
  2. 직업 가용성. 나는 풀 타임 전문 프로그래머가 아닙니다. 나는 대학원생이고 프로그래밍은 내 연구와 밀접한 관련이 있습니다.
  3. 백만 명의 코드 원숭이를 염두에두고 작업 한 대규모 프로젝트로 주로 설계된 모든 기능.



답변

적어도 이데올로기 적 수준에서 파이썬과 루비 사이에는 큰 차이가 없습니다. 대부분의 경우, 그들은 같은 것의 다른 맛일뿐입니다. 따라서 어떤 것이 귀하의 프로그래밍 스타일과 더 일치하는지 확인하는 것이 좋습니다.


답변

나는 Lisp에 대해 조금 읽었고 Lisp가하는 멋진 것들을 허용하지만 Lisp의 이상한 구문 등이없는 언어를 찾고 싶습니다.

우리 모두는 아닐까요.

코드와 데이터의 최소한의 차이, Lisp 스타일

안타깝게도 코드와 데이터 사이의 최소한의 차이와 “이상한”구문은 서로의 결과입니다.

읽기 쉬운 구문을 원한다면 Python이 있습니다. 그러나 코드는 일반적으로 사용되는 내장 데이터 구조로 표시 되지 않습니다 . 대부분의 언어가 그렇듯이 ‘중요’목록의 항목 # 1에서 실패합니다. 따라서 유용한 도움을 제공하기가 어렵습니다.

모든 것을 가질 수는 없습니다. 이 생각을 한 사람은 당신이 처음이 아닙니다. 당신의 이상적인 언어와 같은 것이 존재한다면 우리는 모두 그것을 사용하고있을 것입니다. 현실 세계는 당신의 이상에 미치지 못하기 때문에 위시리스트의 우선 순위를 다시 지정해야합니다. “중요”섹션은 당신에게 정말로 중요한 것이 무엇인지 식별하기 위해 다시 정렬 되어야합니다.


답변

솔직히, 메타 프로그래밍 기능에 관한 한 Ruby와 Python은 일부 지지자들이 인정하는 것보다 훨씬 더 유사합니다. 두 언어에 대한이 리뷰는 꽤 좋은 비교 / 리뷰를 제공합니다.

따라서 몇 가지 기준에 따라 하나를 선택하십시오. Rails를 좋아하고 그 코드를 공부하고 싶을 수도 있습니다. 아마도 SciPy가 당신의 것입니다. 도서관, 커뮤니티 등의 생태계를 살펴보고 하나를 선택하십시오. 어느 쪽을 선택했는지에 따라 메타 프로그래밍의 열반을 잃지 않을 것입니다.


답변

면책 조항 : 저는 두 언어 중 하나만 사용하지만, 둘 다에 최소한 작은 작업 프로그램 (Perl, bash 또는 GNU make를 사용하는 빠른 스크립트가 아닌)을 작성했습니다.

Ruby는 도메인 별 언어를 쉽게 만들 수 있도록 열심히 작동하기 때문에 “다중 패러다임”포인트 3에 정말 좋을 수 있습니다. 예를 들어, 온라인으로 브라우징하고 몇 비트의 Ruby on Rails 코드와 몇 가지 Rake 코드를 살펴보십시오. 둘 다 Ruby이고 유사점을 볼 수 있지만 일반적으로 동일한 언어로 생각하는 것과 같지 않습니다.

파이썬은 나에게 조금 더 예측 가능해 보이지만 (아마도 ‘깨끗한’및 ‘정상적인’포인트 2와 관련이 있음), 그것이 언어 자체 때문인지 아니면 일반적으로 다른 값을 가진 사람들이 사용하는지 여부는 실제로 알 수 없습니다. . 저는 파이썬에서 깊은 마법을 시도한 적이 없습니다. 나는 확실히 두 언어 모두 잘 생각하고 있다고 말할 것입니다.

둘 다 1과 4에서 좋은 점수를 얻었습니다. [편집 : 사실 1은 꽤 논쟁의 여지가 있습니다. 통역 언어에서 흔히 볼 수있는 “eval”이 있지만 개념적으로 순수하지는 않습니다. 클로저를 정의하고, 객체에 메소드를 할당하는 등의 작업을 할 수 있습니다. 이것이 원하는만큼 진행되는지 확실하지 않습니다.]

개인적으로 저는 루비가 더 재미 있다고 생각하지만 부분적으로는 멋진 일을하는 방법에 대해 산만하게 생각하는 것이 더 쉽기 때문입니다. 저는 실제로 파이썬을 더 많이 사용했습니다. 가끔은 시원함을 원치 않고 계속하고 싶기 때문에 취침 전에 완료됩니다 …

둘 다 들어가기가 어렵지 않으므로 다음 사소한 작업을 하나에서 수행하고 그 다음 작업을 다른 작업에서 수행하기로 결정할 수 있습니다. 또는 도서관에서 각각에 대한 소개 책을 집어 들고 둘 다 훑어보고 무엇이 당신을 사로 잡는 지보십시오.


답변

스몰 토크를 고려해 보셨습니까? 반사성 및 내성 기능과 이러한 기능을 활용하는 완전히 통합 된 개발 환경을 갖춘 매우 간단하고 명확하며 확장 가능한 구문을 제공합니다. 예를 들어 Squeak Smalltalk 에서 수행되는 작업 중 일부를 살펴보십시오 . Squeak을 사용하는 많은 연구자들은 Squeak 메일 링리스트에 , #squeak은 freenode에 있습니다. 따라서 복잡한 문제에 대해 매우 쉽게 도움을받을 수 있습니다.

현재 관련성에 대한 기타 지표 : iPhone을 포함하여 이름을 지정하려는 모든 플랫폼에서 실행됩니다 . Gilad Bracha는 그의 Newspeak 작업을 Squeak에 기반하고 있습니다. V8 팀은 스몰 토크 VM에서 이빨을 잘랐습니다 . Dan Ingalls와 Randal Schwartz는 최근 광야에서 수년을 보낸 후 Smalltalk 작업으로 돌아 왔습니다.

검색에 행운을 빕니다. 최종 결정을 알려주세요.


답변

Lisp는 성능을 포함한 모든 기준을 충족하며 (이상한) 구문이없는 유일한 언어입니다. 엄청나게 정보가 좋지 않거나 잘못된 정보를 바탕으로이를 피하고 결과적으로 Emacs + SLIME + CL을 사용한 경험을 놓치면 큰 손해를 입게 될 것입니다.


답변

4 개의 “중요한”포인트는 정확히 Ruby로 이어지고, 2 개의 “다소 중요한”포인트는 Python이 지배합니다. 그러면 그렇게 해.