Google


Tag Archive for 'Rawitat-Pulam'

Art of Study

วาทะเด็ดประจำวัน

จากพี่เดฟ (ithilien_rp, Geek#2@dualGeek และ Lecturer at Department of Computing, Faculty of Science, Silpakorn University) เนื่องในวันปฐมนิเทศนักศึกษาปี 1

"ผมไม่อวยพรพวกคุณนะ เพราะผมเชื่อว่าสัตว์โลกย่อมเป็นไปตามกรรม และกรรมแปลว่าการกระทำ ..” ไม่มีพรอะไรดีกว่าการเริ่มลงมือกระทำได้ด้วยตัวเองหรอก ถ้าคุณอยากจะจบมัน 4 ปี คุณทำตัวเองให้จบ 4 ปี ถ้าคุณอยากจะใช้เวลานานกว่านั้น คุณทำตัวเองให้จบนานกว่านั้น .. พรที่ดีที่สุด ก็คือพรที่คุณเขียนให้ชีวิตตัวเอง ด้วยการลงมือทำมันซะเอง"

"คุณจะเก่งขนาดไหน คุณจะจบมันเกรดเท่าไหร่ ถ้าคุณอยู่มันคนเดียว เก่งมันคนเดียว มันก็เท่านั้น P = mv จำคำผมไว้ … คุณจะมี impact มีผลกระทบ มีประโยชน์ มีคนรู้จักคุณ ก็ต่อเมื่อคุณมี momentum พอสมควร และถ้าคุณอยู่คนเดียว m คุณก็เท่านั้น คุณเก่งแค่ไหน ทำงานเร็วแค่ไหน … คุณก็จบอยู่แค่นั้น"

"แล้วทำไงให้ตัวเอง active ตลอดเวลา” ดูตารางธาตุสิ มันจะมีส่วนหนึ่งที่เรียกว่า ก๊าซเฉื่อย เป็นพวก electron วงนอกครบแปดตัวไปแล้ว มันไม่ทำปฏิกิริยากับใคร … ส่วนพวกที่ active คือพวกที่ "ยังไม่ครบ" "ยังไม่เต็ม" "ยังขาด" … ดังนั้นมันก็ต้องแสวงหา จากคนอื่น ที่เค้ามีในสิ่งที่คุณไม่มี มา share กัน .. มันก็จะเกิดสารประกอบที่มันซับซ้อนขึ้น ทำอะไรได้มากขึ้น … และที่สำคัญ คุณจะเต็มขึ้นมาทั้งคู่"

อะไรคือโปรแกรม และการเขียนโปรแกรม ตอนที่ 2 (จบ)

ตอนที่แล้วจาก : อะไรคือโปรแกรม และการเขียนโปรแกรม ตอนที่ 1



หันกลับมา
มองการเขียนโปรแกรม

            เมื่อเราได้มองซ้ายมืองขวาแล้ว เราก็คงพบว่า ทั้งการก่อสร้าง ทั้งการเขียนนิยาย มีคอนเซปท์ที่ค่อนข้างคล้ายกันมากที่เดียว และถ้าเราเทียบกับการสร้างโปรแกรมแล้ว เราจะได้อะไร ?

            หาคิดเป็นการเขียนโปรแกรม เราจะพบว่าโปรแกรม ก็คือการที่เราสรางอะไารซักอย่างขึ้นในคอมพิวเตอร์ หรือว่าการเขียนนิยายสักเล่มขึ้นมาในคอมพิวเตอร์ การสร้างโปรแกรมขึ้นมาสักตัวนั้น ต้องการจินตนาการ, ความคิดพื้นฐาน และคอนเซปท์อื่น ๆเบื้องต้นมากมาย ว่าเราต้องการอะไร เมื่อสเร็จแล้วจะสามารถทำอะไรได้บ้าง และต่อไปก็คือ การวิศวกรรมซอฟต์แวร์ ซึ่งเป็นการเขียนพิมพ์เขียวของตัวโปรแกรมของเรา เพื่อให้ออกมามีความเสถียรภาพ แก้ไขได้ง่าย ต่อเติมได้ตามความต้องการ ฯลฯ และนอกจากนี้ ยังขึ้นอยู่กับขนาดของโปรแกรมอีกด้วย คือเมื่อสร้างโปรแกรมที่มีขนาดใหญ่ขึ้นนั้น ต้องใช้เวลาออกแบบต่าง ๆ นานขึ้น บางโปรแกรมต้องแก้แบบกันไม่รู้กี่เที่ยว กว่าจะได้ลงมือเขียนจริง ๆ และการสร้างนั้น มักจะทำเป็นทีมหลาย ๆ คน ยิ่งโปรแกรมที่มีขานดใหญ่เท่าใด ก็ยิ่งใช้คนมากเท่านั้น แต่ละคนแบ่งหน้าที่กันอย่างชัดเจน และนอกตากนี้แล้ว ถ้าแบบตอนแรกของโปรแกรมถูกวางไว้ไม่ดี ก็ยากที่จะสามารถพัฒนาโปรแกรมที่ดีได้แน่นอน
            นอกจากนี้ ความรู้พื้นฐานกับโปรแกรมหรือระบบที่ต้องการสร้างเป็นสิ่งสำคัญ และจำเป็นที่เราต้องรู้และทำความเข้าให้ดี ๆ จะกล่าวว่า ความรู้พื้นฐานเหล่านี้เป็นส่วนหน่งของ แบบแปลนพื้นฐานของสิ่งก่อสร้าง หรือว่า โครงเรื่องพืนฐานของนิยาย ก็ไม่ผิดนัก ซึ่งขอยกตัวอย่างโปรแกรมบางประเภท และความรู้พื้นฐานบางส่วนเท่านั้น ซึ่งมีดังนี้

  • โปรแกรมที่ทำการจำลองการเดินทางของแสง จำเป็นต้องเข้าใจ Electromagnetics (Maxwell’s equations) และ Finite Defference method เป็นอย่างน้อยที่สุด

  • การจำลองของไหลในท่อน้ำ อาจจะใช้ Navier-Stoke’s equations กับ Finite Elements methods
    Voice recognition program
    อาจจะต้องใช้ความรู้ Pattern recognition, Signal processing ตลอดจนเรื่องอื่นๆ ที่เกี่ยวข้อง

  • โปรแกรมแต่งภาพ ก้ต้องรู้เรื่องพวก Image processing ต่างๆ ตลอดจน Compression techniques ต่าง ๆ
    3D Modeling
    ก็ต้องเข้าใจคณิตศาสตร์ของ Bazier curve, B-Spilne, NURB, Ray tracing หรือว่าเร็วๆ นี้ก็ Photon mapping

  • โปรแกรมเพื่อทำการดู Pattern ใน DNA sequence ก็จำเป็นต้องรู้เกี่ยวกับเรื่องของ DNA เบื้องต้นด้วย
    การเขียนเกมปรแกรม อาจจะต้องรู้ A*Path-finding, Collision  detecting, การประยุกต์ใช้ DSP-Tree ฯลฯ

  • ฯลฯ

เป็นต้น หรือว่าแม้แต่การพัฒนาส่วนประกอบใหม่ ๆ ของระบบเดิม ๆ เช่น

  • การเพิ่มตัวป้องกันเมลขยะ หรือ Spam mail ในโปรแกรมรับ e-mail ก็ตาม อาจจะใช้ความรู้พวก Machine learning, Pattern recognition, Rule discovery ฯลฯ ต่าง ๆ มากมาย

  • การทำ On-line e-Commerce นั้นก็อาจจะใช้ Machine learning เข้ามาช่วยกันกับ Data clustering และ  selt-organizing Map เพื่อแนะนำสินค้าให้กับลูกค้า

  • การเขียนโปรแกรมเพื่อควบุคมระบบ Network แบบอัตโนมัติ จำเป็นต้องรู้ Network Flows และ Optimization theory

  • ฯลฯ

            ซึ่งจะเห็นได่ว่า การเขียนโปรแกรมเหล่านี้นั้น ถ้าไม่มีความรู้และความเข้าใจพื้นฐานในสิ่งที่เราต้องการเขียนในระดับหนึ่งแล้ว ก็คงไม่สามารถทำได้ หรือว่าแม้ทำได้ก็ปราศจากความรู้เหล่านี้ ก็คงจะไม่มีประสิทธิภาพมากนัก ตลอดจนความผิดพลาดก็เป็นไปได้สูง นอกจากนั้นความรู้เบื้องต้นในแต่ละเรื่อง หลายครั้งไม่สามารถที่จะใช้งานข้ามไปข้ามมาในเรื่องอื่น ๆ ได้ ไม่ว่าแนวความคิดพื้นฐานจะใกล้เคียงกันแค่ไหนก็ตาม


ภาษาและการเขียนโปรแกรม

            การเขียนนิยาย เราใช้ภาษาใดภาษาหนึ่ง (ภาษาไทย, ภาษาอังกฤษ ฯลฯ) ในการเขียนบอกให้ตัวละครไปตามสถานที่ต่าง ๆ ในการเขียนบทสนทนา ในการเขียนบรรยายฉาก และเขียนในสำนวณต่าง ๆ กันไปแล้วแต่ผุ้เขียนแต่ละคน

            สำหรับการเขียนโปรแกรมนั้น ก็คือการเขียนคำสั่งเพื่อให้คอมพิวเตอร์ทำงานตามที่เราต้องการ อย่างที่ได้กล่าวถึงไปแล้วข้างต้น และเช่นเดียวกับการเขียนนิยาย ที่เราใช้ภาษาที่คนอ่านเข้าใจ การเขียนโปรแกรมคอมพิวเตอร์ ก็คือการเขียนคำสั่ง โดยใช้ภาษาที่คอมพิวเตอร์ สามารถเข้าใจได้ ซึ่งนั้นก็คือ ภาษาเครื่อง (Machine Language) นั่นเอง แต่ว่าทั้งนี้ ภาษาเครื่องนั้นยากต่อการทำความเข้าใจมาก จึงได้มีการพัฒนาภาษารับดับสูง (High-level Language) ขึ้นมามากมายหลายภาษา เพื่อให้คนสามารถเขียนโปรแกรมได้ง่ายขึ้น และใช้โปรแกรมที่เรียกกว่า คอมไฟเลอร์ (Compiler) ทำการแปลเป็นภาษาที่เครื่องเข้าใจอีดต่อหนึ่ง โดยภาษาระดับสูงที่เป็นที่รู้จักกันโดยทั่วไปก็คือ  C, C++, Pascal, Java ฯลฯ นอกจากนี้ยังมีอีกหลายภาษาที่ไม่เป้นที่รู้จักกันมากเท่ากับภาษาเหล่านี้ แต่ว่าก็เป็นภาษาที่สำคัญ และมีบทบาทในงานหลายอย่าง เช่น Lisp, OcaML, Python, Perl, Hashell ฯลฯ โดยภาษาเหล่านี้จะมีจุดเด่น และจุดด้อนแตกต่างกันไป

เรียบเรียงบทความโดย Rawitat Pulam

บทความฉบับนี้เป็นไปตามข้อกำหนดของ GNU Free Documentation License 1.2. เท่านั้น

Express Editions มัน Free (แต่มีเงื่อนไข) จริงๆ นะ

เข้าไปดูส่วนของ Microsoft SQL Server 2005 Express Editions แล้วตกใจหมดเลยกับคำว่า Free !!! เป็นไปได้ไง

แต่อ่านไปอ่านมา ก็ถึงบางอ้อ?.. หรือหนองอ้อ ดีหว่า (หุๆๆๆ) เพราะว่ามันคือการเปลี่ยนชื่อของ Microsoft SQL Server Desktop Engine (MSDE) จากเดิมที่ Microsoft แบ่ง SQL Server ของตัวเองเป็นสองส่วนคือส่วน Commercial ที่ใช้ชื่อว่า Microsoft SQL Server กับ Free ที่เป็น Microsoft SQL Server Desktop Engine แต่ตอนนี้เพื่อไม่สับสน (หรือเปล่า) เลยให้มันชื่อเหมือนๆ กันซะเลย เลยเปลี่ยนชื่อ MSDE เป็น Microsoft SQL Server Express Editions แทนซะเลย

ว่า Microsoft SQL Server 2005 Express Editions ถึงแม้จะ Express Edition ก็ตามที แต่ก็คาดว่าน่าจะทำงานได้ดีในระดับหนึ่ง แต่ดูๆ ไปแล้วคาดว่าทาง Microsoft คงเอามาสู้กับ Oracle Database 10g Express Edition ที่ Free ที่ได้เปิดตัว Beta ไปเมื่อเร็วๆ นี้เช่นกัน

แต่ขึ้นชื่อว่าของฟรีแล้ว มันก็มีข้อจำกัดในตัวของมัน Microsoft SQL Server 2005 Express Editions นั้นทำงานได้แค่ 1 CPU, RAM ไม่เกิน 1GB , ขนาดฐานข้อมูลไม่เกิน 4GB และไม่มีพวกสิ่งอำนวยความสะดวกพวก Analysis Services, Reporting Services, Data Transformation Services และ Notification Services เท่านั้นเอง แต่ถ้าอยากได้มากกว่านี้ก็ต้องใช้ของเสียเงินแทนหล่ะครับ ซึ่งถ้าดูๆ ไปก็เหมาะสำหรับคนที่ใช้เล็กๆ น้อยๆ, ธุรกิจขนาดเล็ก หรือนักพัฒนาระบบทั่วไปครับ

ต่อมาในส่วนของ Visual Studio Express Editions ที่แยกมาเป็น

Visual Basic 2005 Express Edition
Visual C# 2005 Express Edition
Visual C++ 2005 Express Edition
Visual J# 2005 Express Edition

แต่อันนี้ใช้ได้แค่ 1 ปีเท่านั้นหลังจากนั้นก็ซื้อมาใช้แล้วกันครับ คงไม่มีอะไรมาก แต่ว่าถ้าเอามาใช้ศึกษานี่เหมาะมาก หรือเอาไปเขียนซอฟต์แวร์ขายก็น่าจะ OK แต่ว่าติดที่คุณต้องลง Microsoft .NET Framework 2.0 ด้วย ซึ่งขนาดไม่แตกต่างกับ 1.1 หรือ 1.0 เท่าไหร่นัก

อย่างอื่นก็ลองอ่านเอาที่

Visual Studio Express : http://msdn.microsoft.com/vstudio/express/
SQL Server Express : http://msdn.microsoft.com/vstudio/express/sql/
Frequently Asked Questions : http://msdn.microsoft.com/vstudio/express/support/faq/default.aspx
Oracle Database 10g Express Edition : http://www.oracle.com/technology/products/database/xe/index.html

Update !!! 11/11/2005
เพิ่งได้รับความกระจ่างในเรื่องของ Visual Studio 2005 Express Edition ต่าง ๆ ของ Microsoft ในเรื่องนี้จากพี่เดฟ (ithilien_rp) โดยผมเข้าใจผิดไปนิดนึงในเรื่องของการใช้ฟรี 1 ปีแล้วหมดอายุนั้น “ไม่ใช่” ครับ

ขอปรับเปลี่ยนว่า การใช้งานนั้น “สามารถใช้ได้เท่าที่ต้องการไม่จำกัดระยะเวลา” แต่ที่จำกัดคือ “ระยะเวลาในการที่จะ Download ตัว Visual Studio 2005 Express Edtion มาเก็บไว้”

อ้างอิงจาก Frequently Asked Questions ใน Link ข้างต้นในข้อที่ 12 ที่ว่าไว้ว่า

You said “free for one year” ? what does that mean, exactly “Will you be charging for this later”

We originally announced pricing of Visual Studio Express at US$49. We are now offering Visual Studio Express for free, as a limited-in-time promotional offer, until November 6, 2006. Note that we are also offering SQL Server 2005 Express Edition as a free download, and that this offer is not limited to the same promotional pricing period as Visual Studio Express.

โดยที่ใจความสำคัญว่า “พวกเราตั้งราคาพื้นฐานของ Visual Studio Express ไว้ที่ 49$ แต่ในตอนนี้ Visual Studio Express นั้น Free โดยมีช่วง Promotion ถึงวันที่ 6 พฤศจิกายน 2006 โดยที่ SQL Server 2005 Express Edition นั้นก็ Free เช่นกัน แต่ไม่ได้กำหนดเวลา Promotion เหมือนกับ Visual Studio Express”

Update !!! 12/11/2005
มีคนถามว่ามันเป็น Beta หรือเปล่า ก็บอกได้เลยว่า Visual Studio 2005 Express Edition ที่อยู่ในเว็บ มันเป็นตัว Full Version แล้วครับ ไม่ใช่ Beta หรือ Demo/Trial ครับ ซึ่งตอนนี้ผมกำลังโหลดอยู่เหมือนกันครับ

แต่เท่าที่คาดการณ์นะครับ ในเรื่อง Express Edition ที่ได้ฟังจากพี่เดฟ และความเห็นส่วนตัวนั้น เป็นการเปิดตัว Free Developer Tools สำหรับ .NET Platform ทั้งระบบครับ โดยภายใต้การทำ IDE จาก Microsoft แทน Third Party อื่นๆ เพราะว่าปีหน้า Vista กำลังมาครับ และ Vista เป็นการทำระบบทั้งหมดใน OS ใหม่ทั้งหมด ไม่ว่าจะ Avalon, WinFS, Indego และทั้งส่วนของ Base Operating System ด้วย โดยคาดการณ์ไว้ว่า Microsoft Windows Vista จะไม่สนับสนุน Win32 Library , VB Runtime Library 6.0 หรืออื่นๆ ก่อนหน้า .NET Platform ทั้งหมด หรือถ้าสนับสนุน ก็ผ่าน Emulator หรือ Run Time Virtual Machine ไปแทน ซึ่งทำให้ประสิทธิภาพลดลงไป แต่ใช้งานได้ แต่ช้าหน่อย อย่าลืมนะครับว่า .NET มันมี 2 ส่วนใหญ่ๆ คือ CLR (Common Language Runtime) กับ CLI (Common Language Infrastructure) ซึ่งทำให้คนที่พัฒนาซอฟต์แวร์ทำงานได้ง่าย และดีขึ้น รวมไปถึงถ้าใช้ C++.NET ในการพัฒนาแล้ว Compile เป็น Native Code แบบ .NET แล้วด้วยเนี่ย ทำให้เราใช้ Feature ใหม่ๆ ใน .NET รุ่นใหม่ๆ ได้ดีขึ้น ซึ่งเป็นการทำ Express Edition ออกมาเป็นของเล่นของนักพัฒนาซอฟค์แวร์ได้ลองใช้ และปรับเปลี่ยนการใช้งานของตนเอง รวมไปถึง Recompile ตัว Software เดิมใหม่ด้วย เพื่อให้ Win32 Library , VB Runtime Library 6.0 หรืออื่นๆ ที่ตนเองได้ใช้อยู่ได้ทำการเปลี่ยนแปลงตัวเองมาทำงานบน .NET แทน ซึ่งดูจากเวลาที่ออกก็มีเวลาในการปรับเปลี่ยนตรงนี้ประมาณเกือบ 1 ปีเห็นจะได้ครับ ซึ่งที่ทำแบบนี้เพราะต้องเอามารองรับการเปลี่ยนระบบ Base Operating System ใน Vista เองด้วย เพื่อให้การปรับเปลี่ยนนี้ราบรื่นขึ้น และมี Software ที่ทำงานได้ดีบน Vista ซึ่งบทเรียนนี้เกิดจากตอน XP ที่ออกมาไม่ได้ทำแบบนี้เลยทำให้ซอฟต์แวร์ส่วนใหญ่ทำงานไม่ค่อยได้ในตอนแรกนั้นเอง และรวมไปถึง Microsoft น่าจะทำออกมาแข่งกับ Java Platform ที่เพิ่งปล่อยพวก Enterprise IDE ออกมาให้ใช้ฟรีๆ แถมด้วยตลาด Database ที่ออก Oracle ที่ออก Express Edition ที่ยังเป็น Beta เช่นกัน โดยคราวนี้ Microsoft ปล่อยมา ยกระบบเลยทั้ง IDE และ DBMS ด้วย

แหม เล่นซะคนช็อคกันทั่วโลก ไม่อยากเชื่อว่า Microsoft จะสำกดคำว่า Free !!! ได้

Update !!! 13/11/2005
แต่ลองใช้งานแล้ว convert project เก่าจาก VB.NET 2003 มาใช้ใน 2005 ก็ไม่มีปัญหาใดๆ ตัว project ทำงานได้ปกติดี แต่ไม่รู้ว่าตัว project ที่ซับซ้อนมากๆ จะมีผลหรือเปล่า

ส่วนการ download มาแล้วทำการลง แนะนำว่าให้ทำการ register ด้วยจะดีมากครับ เพื่อเป็นการยืนยันลิขสิทธิ์ครับ กันไว้ก่อนดีกว่า

แต่ผมชอบมากเลยสำหรับ Learning Resources for Visual Basic Express เป็น VDO Review ครับ ทำได้ดีพอสมควรทีเดียว

http://msdn.microsoft.com/vstudio/express/vb/learning/default.aspx

เท่าที่ดูนี่ ผมว่างานนี้ Microsoft มาแปลก ๆ ดูทุ่มเท มากเลยงานนี้ ;)

Contents Feed และ Creative Commons License บน ThaiCyberPoint.com

หลังจากพัฒนามานานก็สำเร็จเสียที เป็นอะไรที่ไม่ค่อยเข้าใจเท่าไหร่สำหรับ xml เพราะอาจจะใหม่สำหรับเราก็ได้ แต่มันก็คล้ายๆ กับ HTML ที่เราถนัดเลยรู้สึกไม่ต่างกันเท่าไหร่ แต่รายละเอียดมันเยอะกว่ามาก ๆ แต่ก็พอทน ทำ script PHP สำหรับ Parse เอาข้อมูลจาก Database MySQL ได้เสียที แล้วเขียนลง feed files ได้ ก็ ok สำหรับงานนี้ เฮ้อเกือบจะไม่รอดเอา มึนๆ อีกแล้ว เฮ้อ งานเยอะจริง ๆ จริ้ง …..

หลาย ๆ คนอาจสงสัยว่า RSS มันคืออะไร เดียวอธิบายให้ฟังเลยแล้วกัน ขอยกคำอธิบายของพี่เดฟ (rp@jp ตอนนี้กลายเป็น rp@th ไปแล้ว)

RSS คิดง่ายๆ ว่าเป็นข้อมูลดิบ (raw data) ของพวก website ที่ดึงออกมาจาก database โดยตรง ที่เราสามารถเอาไป format ต่อยังไงก็ได้ และเนื่องจากเป็นข้อมูลดิบ

ดังนั้น RSS จึงทำหน้าที่เป็นเหมือนกับ layer ตรงกลางระหว่าง database กับ website อีกทีหนึ่ง

เราอาจจะคิดว่า ปกติมันเป็นแบบนี้ (เอาแค่ concept นะ)

1) website ปกติ –> เขียน html content กันตรงๆ เลย
2) website ที่ใช้ข้อมูลจาก database –> ดึงข้อมูลจาก database มาทำเป็น html โดยผ่าน formater/parser ของตัวเอง

RSS เป็นสิ่งที่เข้ามาตรงกลาง ทำให้ตัว website กับ database แยกออกจากกันได้มากขึ้น และเป็นมาตรฐาน นอกจากนี้เรายังสามารถที่จะเอา RSS feed ไปอ่านที่อื่น (เช่นจาก RSS reader ทั่วไป) โดยไม่ผ่าน website ได้อีกด้วย

website พวกข่าว หรือว่า weblog ส่วนมาก ตอนนี้ก็มีการ publish RSS feed เช่นกัน

มันแตกต่างจาก HTML คือ HTML เน้นที่การ markup ของ layout ของ website ส่วน XML สามารถเขียน markup tag เองได้ เพื่อ markup content อะไรก็ได้ (เรียกว่า DTD) โดย RSS นั้นจะใช้ RSS หรือว่า Atom marktup เพื่อ markup เนื้อหา ว่าส่วนไหนเป็นอะไร

ส่วนอันนี้เป็นตัวอย่างการ markup raw data ที่ว่าด้วย RSS 0.91 จะเห็นว่ามันต่างจาก HTML ชัดๆ อย่างนึงเลย ตรงที่ว่ามันจะ markup ด้วย tag ที่แสดงความหมายของ content (เช่น title, link, description, ฯลฯ) มากกว่าที่จะเป็น tag ที่แสดงถึงรูปแบบของการแสดงผลหรือ layout (เช่น blockquote, font, ฯลฯ … ถึงจะมี blockquote หรือว่า font สีอะไรๆ เราก็ไม่รู้อยู่ดีว่ามันสื่อถึงอะไรกันแน่ เป็นต้น)

จริงๆ จะบอกว่า HTML เป็น XML แบบหนึ่งที่มี set ของ tag เพื่อการ markup การแสดงผลใน browser ก็ไม่ผิดหรอก

และไปเจออีกที่หนึ่ง

RSS เป็น รูปแบบเอกสารที่เอาไว้กระจายไปยังที่ต่างๆ และรวบรวมหัวข้อเนื้อหาจากเว็บต่าง ๆ หรือ อาจจะหัวข้อข่าวจาก เว็บบลอก RSS เป็นโครงสร้างของภาษา XML (eXtended Markup Language) ไม่ต้องสนใจ ให้สังเกตุว่าลักษณะของ RSS Feed จะมีสัญลักษณ์ XML หรือ RSS ในเว็บไซต์นั้นๆ หรือ ชื่อเว็บไซต์ต่อท้ายด้วย .xml และความพิเศษของมันคือมันเป็น xml ที่มีการกำหนด schema ที่แน่นอน สำหรับเอาไว้ให้โปรแกรมที่เป็น RSS Client ดึงมาแสดงครับ

ข้อดีของ RSS ที่ผมเห็นก็คือ สมมุติว่าผมชอบเปิดเข้าไปตาม เว็บต่างๆ เพื่อเข้าไปดูว่ามันมีอะไรใหม่มั่งหว่า บางทีผมก็ลืมไปว่าผมควรจะเปิดไปดูอะไรบ้าง หรือไม่ก็เปิดไป 5 วันมันยังไม่ update เลย เสียเวลาครับ ดังนั้น RSS มีประโยชน์คือคุณสามารถที่จะรับข่าวสารจากเว็บต่างๆ หรือ ข้อความใหม่ๆจาก blog คนอื่นๆได้โดยไม่ต้องเข้าไปดูทุกครั้งให้เสียเวลา

ส่วนเจ้า RSS Client หรือ News Feed Client ก็มีมากมายให้เลือกใช้กันครับ ส่วนใหญ่จะฟรี ส่วนโปรแกรมที่ผมใช้มานานแล้ว แล้วก็ชอบที่สุดก็คือ RssOwl ครับ หลังจากโหลดมาก็ add รายชื่อ URL เข้าไปในโปรแกรม เท่านี้ก็สามารถติดตามเนื่อหาใหม่ๆของเว็บที่เราต้องการได้แล้วครับ

นั้นหมายความว่าท่าน ๆ ผู้อ่าน ก็สามารถติดตามเรื่องราวของบทความต่าง ๆ บนเว็บของผมได้ผ่านทางโปรแกรมพวก RSS Reader ได้เช่นกันครับ สะดวกไหมหล่ะ ;)

ต่อมาก็ Creative Commons License ที่ได้จาก blog ของพี่ bact ก็เลือก ๆ อยู่นานก็ได้มาเสียทีมีลายละเอียดคราว ๆ คือ

Attribution-NonCommercial-NoDerivs 2.0

You are free:

  • to copy, distribute, display, and perform the work

Under the following conditions:

by
Attribution. You must give the original author credit.
nc
Noncommercial. You may not use this work for commercial purposes.
nd
No Derivative Works. You may not alter, transform, or build upon this work.
  • For any reuse or distribution, you must make clear to others the license terms of this work.
  • Any of these conditions can be waived if you get permission from the copyright holder.

ก็ไม่ได้เขี่ยว อะไรหรอก แต่ใครจะเอาไปใช้ยังไงก็มีเครดิตหน่อยก็แล้วกันเน้อ …. ส่วนใครจะเอาไปขายก็เจอกันในศาลแล้วกัน

ไปหล่ะ -_-” ง่วงจริง ……

และแล้วเราก็ใช้ LaTeX เป็นกับเค้าสักที

เป็นการลองผิดลองถูกมากกว่าาอาทิตย์ และประกอบกับอาจารย์ที่ภาควิชาคณิตศาสตร์ได้สอนบ้างเล็กน้อย และพี่เดฟ ได้ส่งติวเตอร์มาให้ 2 ไฟล์ และติวเตอร์ที่ไปโหลดมาเองอีก 6 ไฟล์มานั่งอ่าน ๆ เซ็ต ๆ เจ้า MikTeX และ Text Editor ตัวถนัดของเราคือ EditPlus ให้มันทำการ Compile เจ้าไฟล์ LaTeX ที่เราเขียนขึ้นมาได้นั้นเอง เซ็ตตั้งแต่ทำตัดคำไทยก่อน ตามด้วย Compile ตามด้วย View ไฟล์ว่าถูกต้องหรือไม่ใน DVI Viewer แล้วก็ตามด้วย Convert จาก TeX ไฟล์ไป PDF ไฟล์อีกที …… เล่นเอามึนๆ ไปหลายวันกว่าจะทำได้ ……… เป็นการพยายามจนเลิกจะพยายามแล้วนะเนี่ย -_-” ….. แต่เราก็พยายามจนมันทำงานได้ หุ ๆ ๆ เดี่ยวว่าจะโชว์พาว ส่งงานอาจารย์ใน LaTeX ทำ แทนใช้ Microsoft Word ทำดีกว่า ดูมันใช้งานไม่ได้ยากไปกว่าเขียน HTML เท่าไหร่ น่าจะง่ายพอ ๆ กันนะ ….. อืมมมม เขียน PHP, Perl, C/C++, JAVA ยังยากกว่าเลย 5555555

http://www.thaicyberpoint.com/ford/blog/doc2.pdf ลองโหลดไปอ่านๆ ดูนะครับ หุๆๆๆ มันมาก เดี่ยวว่างๆ จะทำ Document ที่ ในการเซ็ตมาลงเว็บดีกว่า อ่อ อีกอย่าง เร็ว ๆ นี้เราว่าเราจะเอาบทความในเว็บทั้งหมดมาทำเป็น PDF ให้สมาชิกที่เสียค่าบริการได้โหลดไปอ่านกันนะเนี่ย …. กำลังร่าง ๆ ว่าจะเก็บเงินค่าสมาชิกยังไงดี …… คิด ๆ ๆ ๆ

อะไรคือโปรแกรม และการเขียนโปรแกรม ตอนที่ 1

            ทุกคนที่อ่านบทความนี้ คงทราบและเข้าใจความหมายของ โปรแกรมคอมพิวเตอร์ กันดีอยู่แล้ว แต่ว่าเพื่อความสมบูรณ์ของเนื้อหา ผมจะขอสรุปไว้ตรงนี้สักเล็กน้อย โปรแกรมคือสิ่งที่อยู่ในคอมพิวเตอร์ และเวลาที่เราใช้คอมพิวเตอร์นั้น อันที่จริงแล้วสิ่งที่เราใช้ก็คือโปรแกรม โดยโปรแกรมจะเป็นตัวรับคำสั่งจากเราซึ่งเป็นผู้ใช้ เพื่อไปสั่งงานให้คอมพิวเตอร์ประมวลผล หรือทำงานจริงๆ อีกทีหนึ่ง หรือว่าบางที่โปรแกรมอาจจะไม่ได้รับคำสั่งจากผู้ใช้โดยตรง แต่ว่ารับข้อมูลจากโปรแกรมตัวอื่นๆ โปรแกรมบางตัวอาจจะมีลักษณะเหมือนกับตัวกลาง ที่เป็นศูนย์กลางรับส่งข้อมูลจากโปรแกรมหลายๆ ตัว โปรแกรมบางตัวอาจจะคอนดูแลฮาร์ดแวร์บางอย่าง ฯลฯ


            จะเห็นได้ว่าโปรแกรมนั้นมีด้วยกันมากมายหลากลักษณะ ประโยชน์งานต่างๆ กันไปตามแต่ประเภท แต่ว่าทั้งนี้ ในการที่จะสร้างโปรแกรมขึ้นมาซักตัวนั้น เราต้องมีพื้นฐานอะไรบ้าง? เราต้องทำยังไงบ้าง? นี่คือสิ่งที่เราได้เห้นกันในบทความต่อๆ ไป

            เราอาจจะเคยได้ยินคำว่า การเขียนโปรแกรม หรือ การพัฒนาโปรแกรม มาบ้าง ซึ่งทั้งมองอย่างแล้ว โดยหลักการก็คือ การสร้างโปรแกรมขึ้นมาสักตัว เพื่อจุดประสงค์การใช้งานอย่าง ตามที่ผู้เขียนโปรแกรมต้องการ แต่ว่าทั้งนี้ การเขียนโปรแกรม ไม่ใช่ว่าจู่ๆ จะลงมือเขียนได้เลย หรือว่ามีความคิดว่าอยากเขียนโปรแกรมเพื่องานแบบนั้นแบบนี้ แล้วจะลงมือเขียนได้เลย มันมีอะไรในการเขียนโปรแกรม มากกว่าการลงมือเขียนโปรแกรมจริงๆ มากมายนัก ซึ่งผมจะขอยกตัวอย่างเชิงเปรียบเทียบง่ายๆ ในส่วนถัดไป


ว่าด้วย การเขียนโปรแกรม

            อย่างที่กล่าวไปแล้วเมื่อครู่ การเขียน/พัฒนาโปรแกรม ก็คือการ "สร้าง" โปรแกรมขึ้นมาตามความต้องการของเรา ซึ่งเริ่มต้นมาจากความต้องการ หรือจินตนาการ ว่าต้องการให้เป็นอย่างไร แต่ว่าเพียงเท่านั้น เพียงพอหรือไม่? เพื่อให้เข้าใจง่ายขึ้น เราลองมามองการสร้างโปรแกรม ในเชิงเปรียบเทียบกับสิ่งที่ค้อนข้างเป็นเรื่องทั่วไป และสามารถทำความเข้าใจได้ง่ายกันดูครับ



มองซ้าย มองแบบคนเรียนวิทย์ - การสร้างสิ่งของ/สิ่งก่อสร้าง

            ก่อนอื่นเราลองมามองอย่างคนเรียนสาบวิทย์กันก่อน นั้นคือ ลองมองการเขียนโปรแกรมให้เป็นเหมือนกับการสร้างอะไรซักอย่าง เช่นตึกรามบ้านช่อง ศูนย์การค้า รถยนต์ ฯลฯ โดยในที่นี้ ขอยกตัวอย่างการสร้างสิ่งก่อสร้างเป็นหลัก

            การสร้างสิ่งก่อนสร้างเหล่านี้ไม่ใช่ว่าอยู่ดีๆ อยากจะสร้าง ก็สามารถสร้างได้ทันที หากแต่ว่าต้องให้สถาปนิกทำการออกแบบ และแก้แบบกันเป็นปีๆ เพื่อให้แบบที่ออกมาตรงตามความต้องการ ได้ประโยชน์ใช้สอยตามความต้องการ ฯลฯ มากที่สุด และเมื่อทำการออกแบบเรียนร้อยแล้ว ก็ใช่ว่าจะลงมือทำได้ตามแบบนั้นเลย เพราะว่ายังต้องเอาไปใช้วิศวกร ทำการเขียนพิมพ์เขียว คำนวณสิ่งต่างๆ ค่าของแรงต่างๆ กำหนดชนิดของวัสดุอุปกรณ์ ฯลฯ เพื่อให้สิ่งก่อสร้างมีความแข็งแรง คงทน ต่อเติมเพิ่มแต่งได้ในอนาคตเมื่อต้องการ และมื่อสร้างเสร็ตเป็นรูปร่างแล้ว ยังอาจจะต้องให้นักตกแต่งภายใน ทำการออกแบบต่างๆ อีกรอบ เพื่อประโยชน์ใช้สอยภายใน รูปลักษณ์ ฯลฯ ถ้าสิ่งก่อสร้างของเราเป็นบ้านหลังเล็กๆ กระบวยการที่ว่านี้ก็จะกินเวลาไม่มากเท่าไหร่ หรือว่าในปัจจุบันก็มีบ้านกึ่งสำเร็จรูป ที่เมื่อเลือกแบบบ้านแล้วก็เกือบจะปลูกสร้างได้เลย และใช้คนที่ก่อสร้างไม่มากนัก แต่ว่าถ้าเป็นสิ่งก่อสร้างที่ใหญ่ขึ้นมาระดับอพาทเม้นท์ กระบวนการดังกล่าวก็กินเวลามากขึ้น และใช้คนในการก่อสร้างมากขึ้น ถ้าเป็นตึกระฟ้า ก็ยิ่งนานขึ้นและใช้คนมากขึ้นตามลำดับ และไม่ว่าคนที่ทำการก่อสร้างจะเก่งขนาดไหน ถ้าแบบที่เขียนไว้ตั้งแต่ตอนแรกไม่ดี หรือว่าผิดพลาด ก็ยากที่จะสร้างให้ดีได้ หรือว่าในกรณีที่แบบตอนแรก เขียนไว้ในลักษณะไม่เผื่อการต่อเติมหรือแก้ไขในอนาคต การต่อเติมหรือแก้ไขนั้นๆ ก็จะทำได้ยาก

            และที่น่าสนใจก้คือ การออกแบบและความรู้ที่เราใช้ในการสร้างอะไรอย่างใดอย่างหนึ่งนั้น ไม่สามารถใช้กับการออกแบบ และการสร้างสิ่งอื่นๆ ได้เสมอไป เช่น ถ้าเราต้องการสร้างสิ่งก่อสราง เราต้องการความรู้ทางวิศวโยธา แต่ว่าถ้าเราต้องการเครื่องใช้ไฟฟ้า เราก็ต้องการความรู้ของทางวิศวกรรมไฟฟ้า ถ้าเป็นเครื่องบิน ก็วิศวกรรมการบิน ตลอดจน Aerodynamices ต่างๆ มากมาย นั้นก็คือ เราต้องการความรู้พื้นฐานในสิ่งที่เราต้องการสร้าง นั่นเอง และสิ่งที่พูดถึงไปนั้น ก็ยังคงสามารถนำมากล่าวได้เสมอ นั้นคือ การสรางเครื่องบินโบอิ้ง 747 นั้นใช้เวลาในการออกแบบและวิศวกรรม ตลอดจนใช้คนในการก่อสร้างมากกว่าเครื่องบินของเล่นต่างๆ

            การมองแบบนี้ทำให้เราเข้าใจการสร้างโปรแกรมขึ้นได้อย่างไร? อดใจสักนิด เรามาลองมองอีกด้านนึง ซึ่งต่างจากแนวคิดข้างต้นกันดูดีกว่า


มองขวา มองแบบคนเรียนศิลป์ - การเขียนนิยาย

            เมื่อตอนต้นเรามองการเขียนโปรแกรม ในเชิงการก่อสร้างสิ่งต่างๆ ไปแล้ว ตอนนี้เราลองมามองอีกมุมหนึ่ง โดยมองการ เขียนโปรแกรม เหมือนกับการ เขียนนิยาย กันบ้าง

            การเขียนนิยายชักเรื่องนั้น แน่นอนว่าไม่ใช่ว่าแค่เราอยากเขียน ก็สามารถเขียนได้ ไม่ว่าคนที่เขียนจะมีพรสรรค์เท่าไหร่ ก็ยังจำเป้นต้องวางโครงเรื่องคร่าวๆ กำหนดตัวละครต่างๆ สถานที่ต่างๆ อย่างคร่าวๆ กำหนดสิ่งที่อยากจะสื่อ ว่าเรื่องนี้ควรจะเป็นไปในแนวไหน มีเนื้อหาแบบไหน เนื้อเรื่องจะพลิกไปในทางใด ฯลฯ นิยายยิ่งยาวเท่าไหร่ การวางโครงเรื่องให้เหมาะสมในทุกส่วนยิ่งมีส่วนสำคัญมากเท่านั้น ไม่งั้นเราจะเจอสิ่งที่พบได้ง่ายๆ ในละครทีวิเมืองไทย นั้นคือการ ยืดเรื่อง เมื่อละครได้รับความนิยม และทำให้ละครเรื่องนั้นน่าเบื่อ ไม่น่าคิดตาม สาเหตุก็เนื่องมาจากเนื้อเรื่องเดิม ไม่ได้รับการวางไว้ให้สามารถต่อเติมในจุดนั้นๆ ได้ง่ายๆ ทำให้การต่อเริม เพื่อยืดเรื่อง ไม่สามารถทำได้ดีและน่าสนใจ แต่ว่าถ้าเราต้องการเขียนเรื่องสั้น การเขียนโครงเรื่องต่างๆ ก้จะลดน้อยลงไปตามอัตราส่วน

            นอกจากนี้ ความรู้พื้นฐานในเรื่องที่เราต้องการเขียน ก็เป็นสิ่งสำคัญไม่ใช่น้อย เช่นนิยาย/ภาพยนต์เกี่ยวกับอวกาศและเทคโนโลยีชื่อดังเรื่อง 2001: Space Odyssey นั้นใช้ความรู้เกี่ยวกับอวกาศตลอดจนฟิสิกส์ค่อนข้างมาก รวมถึงจินตนการในการสื่อออกมาและการคาดการณ์อนาคตจากพื้นฐานของอะไรหลายๆ อย่างด้วย ในขณะที่นิยายของ Tom Clancy นั้นมักจะมีเรื่องของแผนการต่างๆ และเงื่อนงำต่างๆ ทางทหารเข้ามาเกี่ยวข้อง ซึ่งแน่นอนต้องหาข้อมูลกันมาอย่างดี และผู้เรื่องราวกันอย่างดี

            แต่ว่าทั้งนี้และทั้งนั้น ใช่ว่าเรื่อราวทุกเรื่องที่เราอยากจะแต่ง จะต้องยาวระดับนิยายหรือภาพยนต์แต่อย่างใด เราอาจจะต้องการแต่แค่การ์ตูนสั้นๆ สามช่องจบเหมือนกับขายหัวเราะ เราก็ต้องวางเนื้อหาและสิ่งที่ต้องการสื่อเช่นกัน

            เอาล่ะครับ ได้เวลากลับมามองดูสิ่งที่เป็นหัวใจของบทความนี้ นั้นคือการเขียนโปรแกรมกันต่อ ลองมาดูกันว่าการที่เรามองทั้งสองด้านนี้แล้ว เอามาเชื่อมโยงกับการเขียนโปรแกรมอย่างไร ในตอนหน้าครับ ……

เรียบเรียงบทความโดย Rawitat Pulam
บทความฉบับนี้เป็นไปตามข้อกำหนดของ GNU Free Documentation License 1.2. เท่านั้น

Computer Science != Programming and Programmer

Found this on Lambda the Ultimate weblog entry, about what George E. Forsythe (founder of Stanford’s Computer Science Department) thought about Computer Science. This is originally written in Stanford technical report, number 26. Quote here:

“I consider computer science to be the art and science of exploiting automatic digital computers, and of creating the technology necessary to understand their use. It deals with such related problems as the design of better machines using known components, the design and implementation of adequate software systems for communication between man and machine, and the design and analysis of methods of representing information by abstract symbols and of processes for manipulating these symbols. Computer science must also concern itself with such theoretical subjects supporting this technology as information theory, the logic of the finitely constructable, numerical mathematical analysis, and the psychology of problem solving. Naturally, these theoretical subjects are shared by computer science with such disciplines as philosophy, mathematics, and psychology.”

พบข้อความนี้จาก Lambda the Ultimate weblog ซึ่ง George E. Forsythe คือผู้ก่อตั้ง ภาควิชา Computer Science ที่มหาวิทยาลัย Stanford ได้กล่าวเกี่ยวกับ Computer Science ไว้ได้อย่างน่าสนใจ ซึ่งนี่คือข้อความที่เขียนไว้ใน Stanford technical report หมายเบข 26 มีข้อความว่า

“ฉันคิดว่า Computer Science เป็น ศิลป์ และ ศาสตร์ ของการทำงานของเครื่องดิจิตัลคอมพิวเตอร์อัตโนมัติ และเป็นการสร้างสรรค์เทคโนโลยี เพื่อทำความเข้าใจในสิ่งที่เราจะใช้มัน มันเป็นการนำปัญหาต่างๆ มาออกแบบเพื่อให้เครื่องทำงานได้ดีกว่าเดิมเพื่อรู้จักส่วนประกอบต่างๆ การออกแบบผลของสำหรับระบบซอฟต์แวร์ที่เพียงพอต่อการสื่อสารระหว่างมนุษย์ กับเครื่องจักร และเป็นการออกแบบ และวิเคราะห์ขั้นตอนของข้อมูลที่เป็นตัวแทนของสิ่งที่อุปมาณขึ้นมา ด้วยสัญลักษณ์ที่ก่อกำหนดขึ้นจากผลของก ารประมวลผลของข้อมูลที่จับต้องได้ทางสัฐลักษณ์ Computer Science น่าจะเหมือนกับการนำหัวของทฤษฎีที่สนับสนุนเทคโนโลยีต่างๆ เหมือนกับทฤษฎีสารสนเทศ, ตรรกะของขอบเขตข้อมูล ,ระบบจำนวนตัวเลขในการวิเคาะห์ทางคณิตศาสตร์ และปรัญญาด้านการแก้ปัญหาต่างๆ โดยตัวของมันเองแล้ว Computer Science คือหัวข้อของทฤษฎีที่ว่าด้วยเรื่องของการเชื่อมโยงกันโดยหลักของปรัญญา, คณิตศาสตร์ และจิตศาสตร์”

จะเห็นได้ว่า concept ของ Computer Science มิได้สร้างมาเพื่อเป็น Programmer แต่ประการใด แต่เป็นการ “ศึกษาขั้นตอนการแก้ปัญหา วิเคราะห์ และออกแบบการแก้ปัญหาโดยใช้หลักของปรัญญา, คณิตศาสตร์ และจิตศาสตร์ ในการแก้ปัญหาต่างๆ”

ผู้แปลเป็นภาษาไทย Ford AntiTrust
ผู้นำเสนอถึงผู้แปล Rawitat Pulam @ Tsukuba University in Japan

REF :http://rawitatpulam.blogspot.com

ปล. ไม่รู้ว่าแปลตรงความหมายมากแค่ไหนนะครับ พอดีว่าฝึกแปล ……. :P