<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=ProgrammingPearls%2FColumn5</id>
	<title>ProgrammingPearls/Column5 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=ProgrammingPearls%2FColumn5"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=ProgrammingPearls/Column5&amp;action=history"/>
	<updated>2026-05-15T01:32:22Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=ProgrammingPearls/Column5&amp;diff=37617&amp;oldid=prev</id>
		<title>imported&gt;Unknown at 05:24, 7 February 2021</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=ProgrammingPearls/Column5&amp;diff=37617&amp;oldid=prev"/>
		<updated>2021-02-07T05:24:03Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== A Small Matter of Programming ==&lt;br /&gt;
* 발판을 마련하자.(Build scaffolding.)&lt;br /&gt;
&lt;br /&gt;
=== From Pseudocode to C ===&lt;br /&gt;
* 그냥 Binary Search의 슈도코드를 C문법으로 바꿔놓은 것이다.&lt;br /&gt;
&lt;br /&gt;
=== A Test Harness ===&lt;br /&gt;
* 루프를 정해진 횟수만큼 돌면서 테스트할 값을 일일히 입력해주고 있다.&lt;br /&gt;
* 하다보면 지겹다고 해서 이 작업을 자동화해줄 발판을 다음 섹션에서 보여준다.&lt;br /&gt;
* 그러면서 버그 있는 Binary Search를 보여주고 있다. &lt;br /&gt;
* 큰 프로그램에서는 툴에서 제공하는 디버깅을 쓰지만, 이렇게 작은 알고리즘 같은 것에서는 print문 같은걸 쓰는게 편하다고 한다.&lt;br /&gt;
&lt;br /&gt;
=== The art of assertion ===&lt;br /&gt;
* c에서의 assert문을 사용하는 테크닉 같은 것을 보여주고 있다.&lt;br /&gt;
* 대강 assert의 완급 조절이라는 말로 표현이 될듯하다.&lt;br /&gt;
* 또한 Binary Search의 가장 중요한 전제 조건인 sort되었는가? 체크해주는 함수를 앞에다 써준다. 이 경우에는 search를 한번만 해주면 n + lg n 이렇게 될것이다. 하지만 sort되었는가 체크하는 함수는 한번만 해주면 되므로, search를 한 몇천,몇만번 돌리면 결국 lg n 에 수렴할 것이다.&lt;br /&gt;
* 참고서적 : Writing Solid Code&lt;br /&gt;
&lt;br /&gt;
=== Automated Test ===&lt;br /&gt;
* 아까 말했던 컴퓨터가 자동으로 테스트해주는 발판을 만들어보자.&lt;br /&gt;
* 별거 없다. 그냥 배열을 생성한다음, for를 정해진 횟수만큼 돌려가면서 assert체크해준다. 끝이다.--; 이렇게 함으로써, 사이즈가 0, 1, 2의 제곱수, 2의 제곱수가 아닌수 모든 경우의 수를 테스트해볼수가 있다.&lt;br /&gt;
&lt;br /&gt;
=== Timing ===&lt;br /&gt;
* 역시 별루 볼 거 없다. search 1000번 이상한다음 걸린 시간에 대해 그래프를 그려보면, lg n 의 그래프가 나온다.&lt;br /&gt;
&lt;br /&gt;
=== The Complete Program ===&lt;br /&gt;
* 역시 별말 없다.&lt;br /&gt;
&lt;br /&gt;
=== Principles ===&lt;br /&gt;
* Scaffolding&lt;br /&gt;
* Coding : 하이레벨의 슈도코드로부터 시작하자.&lt;br /&gt;
* Testing : 큰 시스템보다는 발판 내에서 테스트하는게 훨씬 쉽다.&lt;br /&gt;
* Debugging : 발판이랑 고립된 프로그램이나, 임베디드된 곳에서는 하기가 힘들다. Column5에서 설명한다.&lt;br /&gt;
* Timing&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[ProgrammingPearls]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>