<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Ayarafun &#187; programming</title>
	<atom:link href="http://www.ayarafun.com/tag/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ayarafun.com</link>
	<description>Electronic, Arduino ,Python ,Robotic</description>
	<lastBuildDate>Sat, 04 Sep 2010 17:53:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>เริ่มต้นเขียนโปรแกรมด้วยภาษา Python กันเถอะ (ตอนที่ 1)</title>
		<link>http://www.ayarafun.com/2009/08/basic-python-programming-part1/</link>
		<comments>http://www.ayarafun.com/2009/08/basic-python-programming-part1/#comments</comments>
		<pubDate>Fri, 14 Aug 2009 18:13:18 +0000</pubDate>
		<dc:creator>Te</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[basic]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.ayarafun.com/?p=843</guid>
		<description><![CDATA[เริ่มต้นกันสักที่บทความทางคอมพิวเตอร์ ตอนแรกว่าจะเขียนเรื่อง ?การพัฒนา? GUI Application ด้วย? WxPython? แต่ลองมาคิดดูว่า ถ้ายังเล่น Python กันไม่เป็นเนี่ย การที่จู่ๆ จะให้มานั่งอ่านบทความการสร้าง GUI มันคงจะมึนน่าดู ดังนั้นแล้ว ผมก็เลยว่าแนะนำการเขียนโปรแกรมด้วยภาษา Python กันก่อนสัก 2-3 บทความก่อนละกัน เวลาที่ไปดู WxPython จะได้ไม่มึนนัก ทำไมต้อง Python? หลายๆ คนถามผมบ่อยเหมือนกันว่าทำไมต้องใช้ Python ในเมื่อสถาบันศึกษาหลายแห่งก็ไม่เห็นบรรจุในหลักสูตรวิชา Basic Programming (ส่วนใหญ่สอน C, C++, หรือไม่ก็ Java) แสดงว่า Python มันไม่เจ๋งจริงรึเปล่า? ถ้าให้สารภาพตามตรง เมื่อก่อนผมก็คิดว่าในเมื่อ C/C++ กับ Java มันทำได้ตั้งมากมายขนาดนั้นตั้งแต่งาน Low-Level ยัน High-Level แล้วผมจะหัดอีกภาษาเพิ่มให้มึนเพิ่มทำไมกัน แต่จากความบังเอิญ (แกมบังคับ) ที่ได้มาใช้งานมันจนถึงทุกวันนี้ ทำเอาผมแทบขี้เกียจกลับไปเขียน C++


Related posts:<ol><li><a href='http://www.ayarafun.com/2009/09/begin-programming-with-python-part-2/' rel='bookmark' title='Permanent Link: เริ่มต้นเขียนโปรแกมด้วยภาษา Python กันเถอะ (ตอนที่ 2 ภาคติดตั้งอาวุธ)'>เริ่มต้นเขียนโปรแกมด้วยภาษา Python กันเถอะ (ตอนที่ 2 ภาคติดตั้งอาวุธ)</a></li>
</ol>

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p style="margin-left: 0pt; margin-right: 0pt; text-align: justify;">เริ่มต้นกันสักที่บทความทางคอมพิวเตอร์ ตอนแรกว่าจะเขียนเรื่อง <em><strong>?การพัฒนา? GUI Application ด้วย? WxPython?</strong></em> แต่ลองมาคิดดูว่า ถ้ายังเล่น Python กันไม่เป็นเนี่ย การที่จู่ๆ จะให้มานั่งอ่านบทความการสร้าง GUI มันคงจะมึนน่าดู ดังนั้นแล้ว ผมก็เลยว่าแนะนำการเขียนโปรแกรมด้วยภาษา Python กันก่อนสัก 2-3 บทความก่อนละกัน เวลาที่ไปดู WxPython จะได้ไม่มึนนัก</p>
<h5 style="margin-left: 0pt; margin-right: 0pt; text-align: left;"><span style="text-decoration: underline;">ทำไมต้อง Python?</span></h5>
<p style="margin-left: 0pt; margin-right: 0pt; text-align: justify;">หลายๆ คนถามผมบ่อยเหมือนกันว่าทำไมต้องใช้ Python ในเมื่อสถาบันศึกษาหลายแห่งก็ไม่เห็นบรรจุในหลักสูตรวิชา <strong>Basic Programming</strong> (ส่วนใหญ่สอน C, C++, หรือไม่ก็ Java) แสดงว่า Python มันไม่เจ๋งจริงรึเปล่า?</p>
<p style="padding-left: 30px;"><em>ถ้าให้สารภาพตามตรง เมื่อก่อนผมก็คิดว่าในเมื่อ C/C++ กับ Java มันทำได้ตั้งมากมายขนาดนั้นตั้งแต่งาน Low-Level ยัน High-Level แล้วผมจะหัดอีกภาษาเพิ่มให้มึนเพิ่มทำไมกัน แต่จากความบังเอิญ (แกมบังคับ) ที่ได้มาใช้งานมันจนถึงทุกวันนี้ ทำเอาผมแทบขี้เกียจกลับไปเขียน C++ เลยทีเดียว</em></p>
<p style="margin-left: 0pt; margin-right: 0pt; text-align: justify;"><strong>Python </strong>เป็นภาษา<strong> Dynamic Object-Oriented Programming</strong> ที่ถูกพัฒนาขึ้นโดย <a href="http://www.python.org/%7Eguido/">Guido von Rossum</a> ในปี ค.ศ. 1990 (ปีนั้นผมยังเพิ่งเริ่มหัดพูดหัดเดินเอง <img src='http://www.ayarafun.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  ) และปัจจุบันถูกดูแลโดย Python Software Foundation (PSF) โดย Version ล่าสุดตอนนี้คือ Python 3.1 หรือเรียกอีกอย่างว่า Python 3000 หรือ Py3k (ไม่รู้ว่ากะจะใช้จนถึงปีค.ศ. 3000 รึเปล่า 555 <img src='http://www.ayarafun.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> ) รายละเอียดเพิ่มเติมสามารถที่จะดูได้ที่ Official Site ที่ <a href="http://www.python.org/">http://www.python.org</a></p>
<p style="margin-left: 0pt; margin-right: 0pt; text-align: center;"><a href="http://www.ibiblio.org/"><img class="aligncenter" src="http://www.ibiblio.org/Dave/Dr-Fun/df200004/df20000406.jpg" alt="" width="553" height="411" /></a></p>
<p style="margin-left: 0pt; margin-right: 0pt; text-align: left;">สิ่งที่ดึงดูดผมให้ชอบ Python ก็คือมันเป็นทั้ง Cross Platform และมี Open Source License ดังนั้นแล้วหมายความว่า</p>
<p style="margin-left: 0pt; margin-right: 0pt; text-align: justify; padding-left: 30px;"><em><strong>&#8220;ถ้าผมพัฒนาโปรแกรมสักตัวด้วย Python ผมสามารถที่จะเอาไปทำงานบน? Operating System ได้หลากหลาย ไม่ว่าจะเป็น? MS Windows, Linux, หรือ OS/X เป็นต้น (Cross Platform) โดยที่ผมมีอิสระในการแก้ไข Library ต่างๆ ที่ Python ให้มา รวมถึงการนำ Software ที่พัฒนาขึ้นจาก Python ไปทำประโยชน์ทางธุรกิจได้อย่างเต็มที่โดย ?ไม่เสียเงิน? ครับ? ^___^ (Open Source License)&#8221;</strong></em></p>
<p style="margin-left: 0pt; margin-right: 0pt; text-align: justify;">นอกจากนี้ตัวโครงสร้างและ Syntax ของภาษาค่อนข้างอ่านง่าย เข้าใจง่าย และมี Object ด้าน Data Structure รองรับอยู่หลายแบบแล้ว ทำให้ Python เป็นของ <strong>?ฟรี?</strong> และของ<strong> ?ดี?</strong> ที่ช่วยให้พัฒนาโปรแกรมได้เร็วขึ้น มันจึงเพิ่มความมันส์ในการเขียนโปรแกรมให้กับ Programmer หลายคน (รวมถึงผมด้วย ^___^)</p>
<p style="margin-left: 0pt; margin-right: 0pt; text-align: justify;">เพื่อให้เข้าใจได้ง่ายขึ้นว่า โครงสร้างมันเขียนง่ายอ่านง่ายยังไง ลองมาดูตัวอย่างกันนิดหน่อยดีกว่า ว่าระหว่าง Java กับ Python เขียนอ่านยากง่ายต่างกันยังไง</p>
<p style="margin-left: 0pt; margin-right: 0pt; text-align: left;">เริ่มจะสนุกแล้วคลิกข้างล่าง เพื่ออ่านต่อได้เลยนะครับ &#8212;&#8212;&gt;&gt;&gt;&gt;<span id="more-843"></span></p>
<p style="margin-left: 0pt; margin-right: 0pt; text-align: left;"><strong>ตัวอย่างที่ 1:</strong> ตัวอย่างโปรแกรมยอดฮิต ?Hello world !?? (อีกแล้วเหรอ :-p )</p>
<p style="text-align: left;"><strong>สำหรับ Java</strong></p>
<pre class="brush : java">public class
{
   public static void main(String[]args)
   {
         System.out.println(?Hello, world!?);
   }
}</pre>
<p style="text-align: left;"><strong>สำหรับ Python</strong></p>
<pre class="brush : python">print ?Hello, world!?</pre>
<p style="margin-left: 0pt; margin-right: 0pt; text-align: left;">จะเห็นได้ชัดเจนว่าทางฝั่ง Java เขียนได้ยาวกว่ามาก ยิ่งถ้านับถึงความวุ่นวายในการเรียก method แล้ว ทาง Python เขียนสั้นและอ่านง่ายกว่าอย่างชัดเจน ผู้อ่านบางคนอาจจะบอกว่าทางฝั่ง Java ผมยกเอาทั้ง main function มาเต็มรูปแบบมันก็ต้องยาวสิ แต่ผมก็จะบอกเหมือนกันว่า ทางของ Python นั้น ก็เป็น main function เต็มรูปแบบเหมือนกันครับ</p>
<p style="margin-left: 0pt; margin-right: 0pt; text-align: left;">ลองดูตัวอย่างต่อไปก็จะเห็นได้เช่นกันว่า แม้กระทั่งการประกาศตัวแปรหรือการใช้ Conditional Statement ก็ยังดูกระทัดรัดกว่า</p>
<p style="margin-left: 0pt; margin-right: 0pt; text-align: left;">
<p style="margin-left: 0pt; margin-right: 0pt; text-align: left;"><strong>ตัวอย่างที่ 2:</strong> การประกาศตัวแปรและลักษณะการใช้ Conditional Statement</p>
<p style="margin-left: 0pt; margin-right: 0pt; text-align: left;"><strong>สำหรับ Java</strong></p>
<pre class="brush : java">int myCounter = 0;
String myString=String.valueOf(myCounter);
if (myString.equals(?0?))

              . . .</pre>
<p><strong>สำหรับ Python</strong></p>
<pre class="brush : python">myCounter = 0
myString = str(myCounter)
if myString == ?0?:

              . . .</pre>
<p>ใน Java และ C/C++ การประกาศตัวแปรจะต้องระบุชนิดของตัวแปรอย่างชัดเจน แต่ใน Python นั้น การใช้งานตัวแปรต่างๆ ไม่จำเป็นต้องมีการประกาศและกำหนดชนิดของตัวแปรก่อน นอกจากนั้นการเปรียบเทียบค่าของตัวแปรก็ใช้ operator แทนการใช้ method ทำให้เขียนอ่านเข้าใจง่ายกว่า</p>
<p>ในเรื่องของตัวแปรที่เกี่ยวข้องกับ Data Structure ยกตัวอย่างเช่น Linked List ทาง Python เองก็มีลักษณะที่กะทัดรัดกว่าเช่นกัน สังเกตได้จากตัวอย่างที่ 3 ข้างล่าง การประกาศใช้ Linked List ของ Python ไม่จำเป็นต้องกำหนดประเภทของข้อมูลของ Linked List ล่วงหน้า ทำเพียงแค่ประกาศขึ้นมาลอยๆ แล้วสามารถที่จะทำข้อมูลมาใส่เพื่อใช้งานได้เลย ^___^</p>
<p><strong>ตัวอย่างที่ 3:</strong> การใช้งาน Data Structure ประเภท Linked List</p>
<p><strong>สำหรับ Java</strong></p>
<pre class="brush : java">public Vector aList = new Vector;
public int aNumber = 5;
public int anotherNumber;

aList.addElement(aNumber);

anotherNumber = aList.getElement(0);</pre>
<p><strong>สำหรับ Python</strong></p>
<pre class="brush : python">aList = []
aNumber = 5

aList.append( aNumber )

anotherNumner = aList[0]</pre>
<p style="text-align: center;">อ้างอิงตัวอย่างการเปรียบเทียบจาก <a href="http://www.ferg.org/projects/python_java_side-by-side.html">http://www.ferg.org/projects/python_java_side-by-side.html</a>)</p>
<h4><span style="text-decoration: underline;">แล้ว Python มันดีกว่า Java หรือ C/C++ ในทุกๆ ด้านจริงเหรอ?</span></h4>
<p>แน่นอนครับว่า Python มีข้อดีมาก แต่ก็ใช่ว่าจะไม่มีข้อเสียเลยเมื่อเทียบกับ C/C++? <img src='http://www.ayarafun.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p><strong>ประการแรกเลยครับ</strong> Python เป็น Scripting Language ซึ่งทำงานโดยมี Interpreter แปลงคำสั่งในแต่ละบรรทัดของโปรแกรมให้เป็น machine code ในระหว่างที่โปรแกรมทำงาน โดยไม่มีการ compile ตัว source code ทั้งหมดเป็น machine code ก่อนเริ่มการทำงานของโปรแกรม ดังนั้นสิ่งที่จะพบแน่ๆ คือ มันจะทำงานช้ากว่า C/C++ (รวมถึง Java ด้วย )</p>
<p><strong>ประการที่สอง</strong> ที่เป็นผลพวงตามมาจากข้อแรกคือ มันไม่มีการตรวจสอบความถูกต้องของการเรียกใช้ตัวแปรทั้งหมดของโปรแกรมก่อนเริ่มทำงาน ดังนั้นแล้ว ถ้าผู้เขียนขาดความระมัดระวังในระหว่างพัฒนาโปรแกรม จะทำให้โอกาสเกิด Runtime Error จากการเรียกใช้ตัวแปรที่ไม่ได้ประกาศหรือใช้งานตัวแปรผิดประเภทได้ง่าย (สาเหตุส่วนใหญ่ของกรณีพวกนี้เท่าที่ผมพบก็คือ พิมพ์ชื่อตัวแปรผิด) ซึ่งความผิดพลาดพวกนี้จะไม่ถูกค้นพบจนกว่าโปรแกรมจะถูกสั่งให้ทำงานจนถึงบรรทัดที่มีปัญหานั้น</p>
<p>อย่างไรก็ตามแม้ว่าโปรแกรมที่พัฒนาด้วย Python จะมีความเร็วในการทำงานช้ากว่า C/C++ และ Java แต่สิ่งแลกกลับมาก็คือ<em><strong> ?ความเร็วในการพัฒนาโปรแกรม?</strong></em> ลองคิดดูครับว่า ถึงแม้ C/C++ จะทำงานเร็ว แต่ใช้เวลาในการพัฒนาโปรแกรมค่อนข้างนาน โดยเฉพาะอย่างยิ่ง งานที่ต้องใช้ Data Structure ที่มีความซับซ้อนมาก ซึ่งไอ้ความนานของการพัฒนานี่เองที่ทำให้ผู้เขียนอาจจะเบื่อที่จะพัฒนาโปรแกรมไปก่อน (เพราะทำไม่เสร็จสักที) ยิ่งถ้าเป็นงานที่เกี่ยวกับธุรกิจแล้ว อาจจะส่งผลความเบื่อนี้ให้กับลูกค้าของเราด้วย ^^; ซึ่งในหลายๆ ครั้ง สิ่งที่พบในงานจริงๆ นั้น ลูกค้ามักจะอยากได้โปรแกรมไปใช้เร็วๆ มากกว่าได้โปรแกรมเร็วๆ แต่ไม่รู้ว่าพัฒนาเสร็จเมื่อไหร่ ดังนั้นเรื่องความเร็วในการทำงานจึงไม่เป็นปัญหามากนัก ยกเว้นว่าโปรแกรมมันจะทำงานช้ามากๆๆๆๆๆ จนคนใช้โปรแกรมรำคาญ <img src='http://www.ayarafun.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>จริงๆ แล้วมันมีเทคนิคในการนำ C/C++ มาผสมกับ Python เพื่อนำข้อดีด้านความเร็วในการทำงานของ C/C++ กับความยืดหยุ่นและความง่ายในการเขียนของ Python มารวมเข้าด้วยกันโดยใช้ tools เสริม ซึ่งไว้โอกาสหลังๆ ผมจะพูดถึงเรื่องนี้อีกทีหนึ่งตอนที่เราทำกันเรื่องที่ Advance มากๆ แล้วครับ ^___^</p>
<p>เป็นยังไงบ้างครับ หวังว่าทุกท่านที่แวะผ่านเข้ามาที่นี่ น่าจะมีความรู้จักเบื้องต้นกับ Python แล้ว ^___^ ในบทความหน้า ผมจะเขียนถึงวิธีการติดตั้งโปรแกรมและ tools สำหรับการพัฒนาโปรแกรมเบื้องต้นด้วย Python ครับ สำหรับตอนนี้ผมขอจบเท่านี้ก่อนล่ะน่อ สวัสดีครับ</p>
<p class='fb-like'><iframe src='http://www.facebook.com/plugins/like.php?href=http://www.ayarafun.com/2009/08/basic-python-programming-part1/&amp;layout=standard&amp;show_faces=true&amp;width=260&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden; width:260px; height:26px'></iframe></p>

<p>Related posts:<ol><li><a href='http://www.ayarafun.com/2009/09/begin-programming-with-python-part-2/' rel='bookmark' title='Permanent Link: เริ่มต้นเขียนโปรแกมด้วยภาษา Python กันเถอะ (ตอนที่ 2 ภาคติดตั้งอาวุธ)'>เริ่มต้นเขียนโปรแกมด้วยภาษา Python กันเถอะ (ตอนที่ 2 ภาคติดตั้งอาวุธ)</a></li>
</ol></p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.ayarafun.com/2009/08/basic-python-programming-part1/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>
