문제

그래서 나는 그것을 사용했다 낙서/lp PLT-SCEME을 사용하여 첫 번째 글을 쓰는 프로그램을 작성하는 모듈 :

#lang scribble/lp
(require scribble/lp)

<<lp_scheme.ss>>

@chunk[<squarefunction>
        (define (f x)
         (* x x))]

물론 유용한 것은 없습니다. 이제 나는 문맹 프로그래밍 구성 대신 왜 평범한 댓글을 사용하지 않을지 궁금합니다. 모든 의견은 환영합니다. 아마도 더 많은 노출/exp를 가진 사람이라면 정말 좋을 것입니다. 문서화 된 코드와 코드의 차이점에 대한보다 직관적 인 설명을 제공하여 글로벌 프로그래밍 구성을 사용하여 작성된 코드의 차이점을 제공 할 수 있습니다.

도움이 되었습니까?

해결책

(나는 당신이 문맹 프로그래밍에 대한 Donald Knuth의 정의를 사용하고 있다고 가정합니다.)

주요 차이점은 그 중 하나입니다 순서.

정기적 인 신청서를 작성하면 사물을 표현하는 순서에 제한이 있습니다.

설명하려면 :

  • 특정 클래스의 모든 코드는 한 곳에 표현되어야합니다.
    (또는 매우 적은 수의 장소에서, 예를 들어 C# 부분 클래스)
  • 하나의 방법에 대한 모든 코드는 한 번에 올바른 실행 순서로 제공되어야합니다.
  • 종속성은 그들에게 의존하기 전에 선언해야합니다.
    (대부분의 언어로 사용하기 전에 선언 된 변수; Pascal에서 사용하기 전에 선언 된 절차/기능; .NET에서 다른 것보다 먼저 편집 된 라이브러리 어셈블리)

와 함께 문맹 프로그래밍 귀하는이 제한에서 벗어나고 프로그램을 다른 개발자에게 설명 할 때 사용할 수있는 순서대로 귀하의 개념을 표현할 수 있도록 해방됩니다.

이것은 또 다른 결과를 가져옵니다. 어떤 형태로든 한 번 개념을 표현할 수 있습니다 ( "모든 속성이 변경 될 때 속성 변경 이벤트를 시작합니다"). 직물 무수한 다른 장소에서 응용 프로그램 전체에서.

매우 간단한 프로그램의 경우, 문맹 프로그램 및 잘 언급 된 프로그램은 동일하게 보일 수 있습니다. 그러나 시스템의 복잡성이 커짐에 따라 두 사람은 매우 다르게 보일 것입니다.

다른 팁

저와 관련하여 주요 동기는 모든 프로그래머가 종이 시트/노트북을 사용하여 건축을 '설계'하고 아이디어를 개발하고, 체계, 다이어그램을 작성하고, 수학을 시도하는 등입니다. 프로그램을 마치면이 노트북/종이 시트가 모두 손실되므로 프로그램의 지원이 중단됩니다. LP 도구 Nanolp의 Wiki에서 이것에 대해 썼습니다. http://code.google.com/p/nano-lp/wiki/aboutlp.

두 번째 동기 부여는 그렇게 명시 적으로는 버그가 적습니다. 그러나 이것은 '이론적 인 것'이 아닙니다. 그것은 경험 사실입니다 (나를 위해) - 논문에서 '생각'하고, 도표 다이어그램, 알고리즘 체계를 그리는 경우 - 프로그램에는 더 적은 버그가 있습니다. LP는 그런 '종이'입니다.

아무것도 그려지지 않는 많은 개발자들이 있습니다.

그리고 LP는 좋은 문서를 만드는 데 도움이됩니다 (공식적인 방식으로 - 함수에 대한 설명, args 및 반환 내용, 이것이 기능 서명으로 잘 알려져 있으므로 그러한 문서가 필요한 이유는 무엇입니까?) 실제 행동을 설명하는 실제 행동을 설명하는 실제 실제 문서를 시맨틱으로 작성하십시오.

많은 동기 부여 :) 그리고 때로는 리버스 LP (예 : doxygen) 만 사용하는 것이 더 낫습니다. 때로는 실제 LP는 많은 요인에 따라 다릅니다.

문맹 프로그래밍은 세 가지 간단한 진술을 기반으로합니다.

  1. 프로그래머는 컴퓨터가 이해할 수있는 코드를 작성해야합니다.
  2. 프로그래머는 사람들이 이해할 수있는 문서를 작성해야합니다
  3. 이것들이 별도의 문서 인 경우, sync를 벗어나는 것은 불가피합니다.

실제로, 내 경험상, #2는 보통 짧은 슈 리프트를 얻습니다. QA가 나에게 "의사가 이것을 말하지만, 코드는 그렇게한다; 코드가 잘못되었거나 의사가 오래된 것입니까?" 나는 내 직장이 평범한 점에서 벗어날 것으로 기대하지 않습니다. 또한 초기 프로젝트 중 하나에서 이해 관계자와의 앞뒤로 요구 사항이 변경되었으므로 문서를 최신 상태로 유지하려고 노력했습니다. 이것은 경영진에 의해 문서를 엉망으로 만드는 것을 멈추고 프로젝트를 작동시키기 위해 충분히 시간이 많이 걸렸습니다. 우리는 그 이후로 덜 문서화 과정으로 갔다 (Heavens에게 감사합니다!).

우리는 코드를 변경할 때 코드를 변경할 때 여러 사람이 변경 사항을보고 명확하게 묘사하고 의견을 제시하고 질문을하고, 설명, 개선을 제공 할 수있는 코드 검토 도구를 가지고 있습니다. 코드가 문맹 프로그래밍 기술로 작성된 경우, 설명이 포함되어 있기 때문에이 질문/답변의 대부분이 초단화 될 것입니다.

현대 프로그래밍의 많은 사고 방식은 코드가 자체 문서 여야한다는 것입니다. 많은 전문가들은 코드를 주석으로 설명해야한다면 주석에 주석이 필요하지 않도록 코드 (변수/함수 이름을 변경하는 등)를 재구성해야한다고 주장합니다. 나는 이것이 이론적으로 훌륭하고 실제로는 실용적이지 않다는 것을 알았습니다. 다른 사람이 작성/관리하는 라이브러리를 사용할 때 메소드/기능 이름 선택이 항상 직관적 인 것은 아닙니다. 예를 들어:

Set<String> statesWeCareABout = new HashSet<String>(Arrays.asList(new String[] { "one", "two", "three" }));
Set<String> statesWeFound = <some function>;
statesWeFound.retainAll(statesWeCareAbout);

Set <> 또는 Hashset <>에 익숙하지 않은 경우 .retainall ()이 두 가지의 교차로를 제공하고 결과가 수정 된 SET <>을 의미한다는 것을 알지 못할 수 있습니다.

마지막으로, 문맹 프로그래밍을 사용하면 일반적 으로이 코드 조각을 분리 한 다음 다른 코드에 인라인으로 표시 할 수 있도록 물건을 분해 할 수 있습니다. 이것은 인간의 이해력이 어떻게 작동하는지에 더 인간입니다. 이것이 어떻게 작동하는지 설명하고 그 이해를 바탕으로 더 큰 그림을 설명하십시오. 컴퓨터는 실제로 신경 쓰지 않습니다. 1,000 줄의 코드로 단일 함수를 작성할 수 있으며 모든 것을 이해하는 데 아무런 문제가 없습니다. 개발자로서 당신이 그것을 유지해야한다면 하나님 께서 당신을 도와주세요.

그리고 그것은 실제로 문맹 프로그래밍의 추론입니다. 버그가 고정되어 있는지 또는 기능이 추가되는지 여부에 관계없이 코드를 유지해야합니다. 그리고 나중에 다른 사람이 효율적인 방식으로 이해할 수 없다면 대체 될 것입니다. 이 세상에는 많은 "쓰기"코드가 있습니다. 문맹 프로그래밍을 통해 읽고 이해하기가 더 쉬워서 장기적으로 보관하고 사용될 가능성이 높아집니다.

그리고 우리는 실제로 바퀴를 다시 발명 할 시간이 있습니까?

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