2012-02-29 3 views
2

필자는 코드 작성을 시작한 이래로 항상 궁금해했습니다. 언어의 깊은 부분을 사용자 취향에 맞게 사용자 정의 할 수있는 방법이 있습니까?코딩 언어 사용자 정의

예를 들어, 주로 파이썬에서 코드는 | 또는 : 집합의 경계를 나타내는 문자. 자주 세트를 사용하고 set(some_list) 또는 명시 적으로 set([a,b,b,c,d])을 입력하는 것을 싫어합니다. 나는 s = set을 설정하여 s()을 사용 해왔다. 그러나 다른 사람들이 읽어야 할 코드를 작성하고 있다면이 방법은 효과가 없을 것이다.

아마도 코드의 복사본을 2 개 저장할 수있는 "번역자"텍스트 편집기 애드온이 있습니다. 하나는 독자적인 구문으로, 다른 하나는 표준 구문으로 충분합니다. 그런 것이 있습니까? (특히 파이썬의 경우)

+1

그건 그렇고, {a, b, b, c, d}는 python2.7과 3.1+에서 설정된 리터럴입니다. – strcat

+2

's = set'을 쓰는 것은 나쁜 생각입니다. 그것은 당신의 코드를 다른 사람들에게 이해시키기가 쉽지 않으며, 아무런 유익도주지 못합니다. –

+0

예, 위에서 언급했듯이 개인 실험을 코딩 할 때만 사용합니다 (이 코드는 볼 수 있습니다). – Arjun

답변

6

선명도와 가독성은 프로덕션 코드에서 매우 중요한 특징입니다. 새로운 코드를 작성하는 것보다 기존 코드를 읽는 데 더 많은 노력이 필요하다는 것을 기억하십시오. 유지 관리는 심각한 고려 사항입니다.

그런 점에서 s = set과 set() 대신 s()를 사용하면 기능상의 이점이 없으며 몇 키 스트로크 만 절약하면서 가독성이 떨어집니다. 나는 당신이 어떤 수준에서는 그것을 인식하고 있다고 생각하지만, 당신의 일부는 가독성의 이름으로 추가적인 키 입력을 기꺼이 받아들이지 않을 것입니다.

나는 매크로와 같은 것을 고려해야하므로 동일한 코드를 생성하면서 하나의 키만 누르는 것이 좋습니다. Logitech G15/G110/G19 키보드와 같은 기능을 사용하면 사용중인 편집기와 독립적으로이 작업을 수행 할 수 있으므로 소프트웨어 추가 기능이 필요하지 않습니다. 몇 마리의 쥐는 당신이 비슷한 것을 할 수있게 해줄 것입니다. (오, 내가 얼마나 내 사랑하는 지 Razer Naga). 물론 소프트웨어의 기본 매크로 기능은 잘 작동하지만 키 조합을 사용하여 설정을 입력하면됩니다.

+0

물론, 제대로 완료되면 언어에 많은 영향을 미칠 수 있습니다. 예를 들어 Perl의 Moose는 Perl의 객체에 구문 설탕을 추가하여 기존의 객체 지향 언어와 비슷하게 만듭니다. http : // search.cpan.org/~ doy/Moose-2.0402/lib/Moose.pm'을 참조하십시오. – shawnhcorey

1

실제로 언어를 사용자 정의 할 수 있습니다. 일부 언어는 강력한 메타 프로그래밍 기능을 제공합니다 (불행히도 Python은 그 중 하나가 아닙니다). Lisp 매크로 또는 Nemerle 또는 Converge (후자는 Python과 가장 유사합니다)를 살펴보십시오. 일부 언어는 Katahdin과 마찬가지로

그러나 이러한 종류의 힘은 가벼운 언어 수정을 위해 사용되어서는 안되며, 가독성을 저해하고 큰 이점을 추가하지는 않을 것입니다. 삽입 된 코드를 구현하기 위해 메타 프로그래밍을 사용하는 것이 훨씬 낫습니다. 도메인 특정 언어, 선호 bly라는 고유 한 구문을 사용하므로 핵심 언어 구문을 사용할 때와 eDSL 코드 인 경우 독자에게 분명합니다.

물론 처음부터 자신의 언어를 디자인하거나 기존 언어를 구현하는 경우 메타 언어 기능에 메타 프로그래밍 및 구문 변경 트릭을 사용할 수도 있습니다. 처음부터 거대하고 비 대한 핵심 언어.