추론하기 쉬운 것은 문화적으로 특정한 용어이므로 구체적인 예를 제시하기가 매우 어렵습니다. 그것은 추론을 할 사람들에게 정해져있는 용어입니다.
"추론하기 쉬운"은 실제로 매우 자기 표현적인 문구입니다. 코드를보고 있고 그 일을 추론하고 싶다면 쉽게 =)
알겠습니다. 코드를보고 있다면 보통 코드가 무언가를하기를 원합니다. 당신이 생각하는대로 작동하는지 확인하고 싶습니다. 따라서 코드가 수행해야하는 작업에 대한 이론을 개발 한 다음 코드가 실제로 작동하는 이유를 논쟁하려고합니다. 컴퓨터가 아니라 사람처럼 코드를 생각하고 코드가 할 수있는 일에 대한 논쟁을 합리화하려고합니다.
"추론하기 쉬운"의 최악의 경우는 코드가하는 일을 이해하는 유일한 방법이 모든 입력에 대해 튜링 기계처럼 코드를 한 줄씩 통과하는 것입니다. 이 경우 코드에 대해 추론 할 수 있는 유일한 방법 은 자신을 컴퓨터로 만들어 머리에서 실행하는 것입니다. 이 최악의 사례는 RSA를 해독하는 다음 3 줄의 PERL과 같이 난독 화 된 프로그래밍 콘테스트에서 쉽게 볼 수 있습니다.
#!/bin/perl -sp0777i<X+d*lMLa^*lN%0]dsXx++lMlN/dsM0<j]dsj
$/=unpack('H*',$_);$_=`echo 16dio\U$k"SK$/SM$n\EsN0p[lN*1
lK[d2%Sa2/d0$^Ixp"|dc`;s/\W//g;$_=pack('H*',/((..)*)$/)
다시 한 번 추론하기 쉬운 용어는 매우 문화적입니다. 고려해야 할 사항 :
- 추론 자에게는 어떤 기술이 있습니까? 얼마나 많은 경험?
- 추론자가 코드에 대해 어떤 종류의 질문을 할 수 있습니까?
- 추론자가 얼마나 확실해야합니까?
이들 각각은 "추론하기 쉬운"에 다르게 영향을 미칩니다. 추론의 기술을 예로 들어 보자. 회사에서 시작할 때 MATLAB에서 "추론하기 쉬운"스크립트를 개발하는 것이 좋습니다. 왜? 글쎄, 회사의 모든 사람들은 MATLAB을 알고있었습니다. 다른 언어를 선택하면 누구나 나를 이해하기가 더 어려울 것입니다. 신경 끄시는 MATLAB의 가독성는 것을 형편 이 그들을 위해 설계되지 않았기 때문에 단순히 일부 작업. 나중에 내 경력이 발전함에 따라 Python은 점점 더 대중화되었습니다. 갑자기 MATLAB 코드는 "추론하기 어렵다"가되었고 파이썬은 추론하기 쉬운 코드 작성에 선호되는 언어였습니다.
독자가 가질 수있는 idom도 고려하십시오. 특정 구문에서 FFT를 인식하기 위해 판독기에 의존 할 수 있다면 해당 구문을 고수하면 코드를 "추론하기가 더 쉽습니다". 이 도구를 사용하면 텍스트 파일을 FFT를 칠한 캔버스로 볼 수 있습니다. C ++를 사용하는 경우 독자가 std
라이브러리에 얼마나 익숙한 지 알아보십시오 . 기능 프로그래밍을 얼마나 좋아합니까? 컨테이너 라이브러리에서 나오는 관용구 중 일부는 선호하는 관용적 스타일에 따라 매우 다릅니다.
또한 독자가 어떤 종류의 질문에 대답하고 싶은지 이해하는 것이 중요합니다. 독자들은 대부분 코드에 대한 피상적 인 이해에 관심이 있습니까, 아니면 장에서 벌레를 찾고 있습니까?
독자가 얼마나 확실해야하는지는 실제로 흥미로운 것입니다. 많은 경우에 헷갈리는 추론은 실제로 제품을 문 밖으로 가져 오기에 충분합니다. FAA 비행 소프트웨어와 같은 다른 경우에는 독자가 철저한 추론을 원할 것입니다. 특정 작업에 RAII를 사용한다고 주장한 사례가 발생했습니다. "단지 설정하고 잊어 버릴 수 있습니다. 올바른 일을 할 것입니다." 나는 내가 틀렸다는 말을 들었다. 이 코드에서 추론하려고하는 사람들은 "세부 사항을 잊고 싶어하는"사람들이 아니 었습니다. 그들에게 RAII는 매달린 차드와 같았으며, 당신이 범위를 벗어날 때 일어날 수있는 모든 일에 대해 생각하도록 강요했습니다.