<?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%2FColumn4</id>
	<title>ProgrammingPearls/Column4 - 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%2FColumn4"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=ProgrammingPearls/Column4&amp;action=history"/>
	<updated>2026-05-15T06:20:47Z</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/Column4&amp;diff=37616&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/Column4&amp;diff=37616&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;
== Writing Correct Programms ==&lt;br /&gt;
* For writing correct programms.&lt;br /&gt;
** Problem Definition.&lt;br /&gt;
** Algorithm Design.&lt;br /&gt;
** Data Structure Selection.&lt;br /&gt;
&lt;br /&gt;
=== The shallange of binary search ===&lt;br /&gt;
* 100명의 프로페셔널 프로그래머들에게 Binary search를 짜보라고 시켰다. 결과는? 90퍼센트의 사람은 버그 있는 Binary search를 짰다고 한다.&lt;br /&gt;
* 이 칼럼의 이야기는 여기서부터 이어져 나간다.&lt;br /&gt;
&lt;br /&gt;
=== Writing the Program ===&lt;br /&gt;
* 그냥 Binary search 만들어 가는 과정을 보여주고 있다.&lt;br /&gt;
&lt;br /&gt;
=== Understanding the Program ===&lt;br /&gt;
* 프로그램의 correctness를 판별하기 위해, 프로그램의 중간중간에 assert를 집어넣고 있다.&lt;br /&gt;
* Loop에서의 correctness&lt;br /&gt;
** Initialization&lt;br /&gt;
** Preservation&lt;br /&gt;
** Termintion&lt;br /&gt;
* 프로그램을 한줄한줄씩 따라 내려가면서 Loop에서는 위의 원칙을 적용해 corret한가를 검사하고 있다.&lt;br /&gt;
&lt;br /&gt;
=== Principles ===&lt;br /&gt;
* Verification을 위한 general한 principles을 제공하고 있다.&lt;br /&gt;
** Assertions : 입력, 변수, 출력간의 관계는 프로그램의 상태를 묘사해준다. assertion은 그들의 관계를 정확히 말해준다.&lt;br /&gt;
** Sequential Control Structures : 이 문장 다음에 저 문장. 그 사이에 assertion을 집어넣는다. 그럼 프로그램 문장 하나하나의 각각의 진행상황을 체크할수가 있다.&lt;br /&gt;
** Selection Control Structures : 조건문에서 쓰인다. 각각의 조건마다, 확실히 맞다는 assertion을 집어넣어준다.&lt;br /&gt;
** Iteration Control Structures : 위에서도 말했듯이, 초기화, 유지, 종료조건이 확실한가를 체크해야한다.&lt;br /&gt;
** Functions : precondition - 함수 시작 전에 보장되어야 할 조건 -과 postcondition - 함수 끝날때에 보장되어야 할 조건 -을 명시해준다.(...) 이러한 방법을 &amp;quot;Programming by contract&amp;quot;라 한다.&lt;br /&gt;
&lt;br /&gt;
=== The Roles of Program Verification ===&lt;br /&gt;
* 가장 많이 쓰는 verification방법은 Test Case이다.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;코드를 간결하게 유지하는 것은 대개 correctness의 열쇠가 된다.&amp;#039;&amp;#039;&amp;#039;&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>