Ruby로 C 코드 작성과 언어 프로그래밍 * 코드 완전한 상태 로 코드를 반대로

당신이가는 요리 코드를해야 그 코드 완전한 상태 코드를 반대로 언어 그것을. 그 말은

귀하의 언어가 자동으로 지원하는 개념으로 만 프로그래밍 사고를 제한하지 마십시오. 최고의 프로그래머는 자신이하고 싶은 일을 생각한 다음 자신의 처분에 따라 프로그래밍 도구를 사용하여 목표를 달성하는 방법을 평가합니다. (34.4 장)

이것이 언어의 특정 강점과 약점에 관계없이 모든 언어에서 하나의 프로그래밍 스타일을 사용하도록 유도하지 않습니까?

또는 질문에보다 대답하기 쉬운 형식으로 넣으려면

언어의 특정 내용으로 가능한 한 자신의 문제를 깔끔하게 인코딩하려고 시도하거나 기본적으로 존재하지 않는 어색한 구성을 구현 해야하는 경우에도 가장 우아한 솔루션을 전체적으로 검색해야한다고 제안 하시겠습니까? 자신의 언어로?



답변

더 나은 접근 방법이 있습니다 : 당신의 한심한 고정 프로그래밍 언어를 잊어 버리십시오. 관련 문제 도메인의 용어에서 파생 된 방금 개발 한 언어로 문제를 인코딩하고 가능한 한 자연스럽게 인코딩 한 다음이 새로운 프로그래밍 언어를 구현하거나 코드를 기존 언어.

이 방법을 언어 지향 프로그래밍 이라고 합니다 . 도메인 특정 언어를 효율적 으로 구현하는 많은 기술이 있으며 이는 Ruby 커뮤니티에게 특히 인기있는 주제입니다.


답변

나는 정답을 믿으며이 책의 의도는 다음과 같습니다.

언어의 특성에 따라 문제를 최대한 깔끔하게 인코딩해야합니다

언어로 프로그래밍함으로써, 나는 그것이 일반적인 스타일의 언어 이외의 기술을 사용하는 것이 항상 도움이 될 것이라고 가정했다 . 이것은 모든 언어에서 한 스타일로 작성하는 것과의 주요 차이점입니다.

예를 들어, Haskell을 배우면 고차 함수를 사용하는 기술이 크게 향상되었습니다. 이제 C #으로 프로그래밍 할 때 for 루프에서 쓰는 것보다 코드를 깨끗하게 만들 수 있으므로 다양한 IEnumerable방법을 Select더 자주 사용합니다. 또한 Func<int, int>내 haskell 경험으로 인해 전달 및 사용 함수 (예 :)를 더 자주 사용하는 경향이 있습니다. 이로 인해 상속 사용이 줄었고 대부분의 경우 결과는 더 간단한 코드입니다.

그러나 c #에서는 모나드 또는 대수 데이터 형식과 같은 개념을 사용하지 않습니다. 이것은 C #에서 명확하게 표현할 수 없으며 많은 모호함과 교환하면 거의 이점이 없기 때문입니다.

그래서 저는 언어 도구를 사용하여 내가 가장 효과적으로 사용하는 기술을 사용합니다. 나는 그것이 언어로 프로그래밍되고 있다고 생각합니다.


답변

언어의 특정 내용으로 가능한 한 자신의 문제를 깔끔하게 인코딩하려고 시도하거나 기본적으로 존재하지 않는 어색한 구성을 구현 해야하는 경우에도 가장 우아한 솔루션을 전체적으로 검색해야한다고 제안 하시겠습니까? 자신의 언어로?

요점은 좋은 프로그래머가 없다는 것입니다 언어를. 이 책에서 인용 한 내용은 “프로그래밍 툴을 마음대로 사용할 수있다”는 것이다. 즉, 펄과 자바를 알고 있다면 빠른 문자열 조작을 위해 펄을 사용해야한다. 프로그래밍 언어는 우리를 제한하는 것이 아니라 문제를 해결하는 데 사용하는 도구입니다. 이것이 Code Complete가 얻는 것입니다. 프로그래밍 언어 / 환경 상자에 코드를 작성하지 말고 최상의 솔루션을 자신, 문제 및 솔루션에 가장 적합한 프로그래밍 언어 / 환경에 넣으십시오.