Editor's Talk (6) : That's All There Is

posted on 26 Apr 2010 15:06 by charte
ผมเคยพูดไปแล้วใช่ไหมว่า "การเริ่มต้นของสิ่งหนึ่ง คือการสิ้นสุดของอีกสิ่งหนึ่ง" คำคมมันส์ๆฟังได้ใจแบบนี้ผมก็จำไม่ได้เหมือนกันว่าไปฟังมาจากไหน อย่างไรก็ตามเรื่องที่มาเขียนวันนี้ มันก็หมายความตามคำนั้นจริงๆ
ตลอดเวลาปีกว่าที่ผมเขียนบล๊อคที่ exteen มานั้น มันก็มีทั้งเรื่องดีเรื่องร้าย มีประสบการณ์ ความทรงจำดีๆ ที่ผมเก็บไว้ตลอดเวลาหนึ่งปีในช่วงเวลาที่ผมนิยามว่า เป็นช่วงชีวิตเด็กเอนท์ ตั้งแต่จุดเริ่มเลยคือก่อนเอนต์ตอน ม.5 เทอมสองล่วงเลยมาจนเอนท์ติดรอเรียนแล้วตอนมอหกตอนนี้ ผมว่ามันน่าจะสิ้นสุดกันซะทีสำหรับ exteen
 
เหตุผลที่ผมเลิกเขียนที่ exteen อธิบายง่ายได้ไม่กี่เหตุผลผมจะอธิบายไปทีละข้อละกัน
 
ข้อแรกผมไม่ได้ทำมันเองครับ ทั้งหมดนี่ใช้โครงสร้างที่บริหารโดย exteen.com ซึ่งผมยอมรับว่าระบบเขาทำมาดีมาก มากมากด้วยอย่างไรก็ตาม มันทำให้ผมดูไม่มีความเป็นมืออาชีพ ไม่ได้ทำเอง และอีกอย่างผมแก้ css ไม่เก่งด้วยก็เลยคิดว่าน่าจะหาวิธีการที่ดีกว่านี้ในการนำเสนอ
 
ข้อที่สองหลังจากเมื่อสองสามเดือนก่อน ผมได้เริ่มโปรเจ็กเว็บห้องซึ่งหลังจากโฮสต์เสียผมก็ไม่ได้กลับไปทำมันอีกเลย (แต่ยังไงก็ไม่กลับไปทำใหม่แน่ๆ) แต่การไปขลุกอยู่กับโปรเจ็กนั้นทำให้ผมเริ่มคล่องตัวกับ cms ที่มีชื่อว่า Drupal มากขึ้นทำให้ผมคิดว่าตอนนี้น่าจะได้เวลามาสานต่อความคล่องตัวนี้แล้ว
 
ข้อที่สามการที่ผมติดตามบล๊อคของหลายคนในวงการไอทีไม่ว่าจะเป็นคุณ  Isriya , คุณ LewCPE ,คุณ Sugree หรือคุณ PeeTai และคนอื่นอีกหลายๆคนต่างมาบล๊อคของตนเองที่ใช้ระบบ cms ทั้งนี้ทั้งนั้นหลายคนในนี้ก็ใช้ Drupal ด้วยก็เลยทำให้ผมตัดสินใจเลือก cms ได้ง่ายขึ้นไปอีก
 
แค่สามข้อก็น่าจะพอแล้วมั้งสำหรับการอธิบายว่าทำไมถึงย้ายไปเขียนที่ของตัวเอง ทำเอง และจัดการเอง ถ้าหากใครติดตามบล๊อคผมอยู่ตามไปอ่านได้นะครับที่
 
http://www.yothinix.com
 
ปล.That's All There Is เป็นชื่อของ Episode ในมินิซีรีย์เรื่อง From The Earth To The Moon ครับ

edit @ 26 Apr 2010 15:07:41 by ChArTe

edit @ 28 Apr 2010 06:31:45 by ChArTe

edit @ 10 Apr 2011 21:27:34 by ChArTe

หลังจากรอบที่แล้วได้มากล่าวถึงปรัชญาและวิธีการว่าทำไมถึงเลือก python ผ่านมาอีกไม่กี่ชั่วยามตอนนี้ก็ได้เวลาเปรียบเทียบขั้นต้นแล้ว โดยในการเปรียบเทียบครั้งนี้ผู้ที่ถูกนำมาเปรียบเทียบนั้นไม่ใช่คนอื่นคนไกล C# นั่นเองครับ
โปรแกรมปัญญาอ่อนโปรแกรมล่าสุดที่ผมเขียนโดยใช้ C# นั้นคือโปรแกรมคำนวณภาษีของที่ซื้อจาก Amazon ครับ (เขียนเองใช้เอง ปัญญาอ่อนมาก) โดยเงื่อนไขก็ไม่มีอะไรมากแรกสุดใส่ค่าเงินบาทต่อดอลลาร์ ต่อมาก็ใส่ราคาของในหน่วยของดอลลาร์ต่อจากนั้นก็เลือกวิธีส่ง จบครับ แต่การคำนวณมันก็ทำของมันไป
โปรแกรมปัญญาอ่อนตัวนี้ใช้ความรู้ในการเขียนโปรแกรมไม่มากมายอะไร แค่รู้วิธีรับค่าตัวแปร แปลงค่าให้ใช้ในการคำนวณได้ เงื่อนไข if else แค่นี้แหละครับความรู้ที่ใช้ในโปรแกรมนี้
สูตรที่ใช้ในการคำนวณนั้น แทบจะไม่ต้องแปลงเลยครับเมื่อผมนำมันมาเขียนใน python ก็อบมาได้เลยเพราะสูตรยังไม่ซับซ้อนมากไปดูกันครับ

total = (((price_all*10)/100)+((price_all*7)/100)+price)*change

เห็นมั้ยครับแค่บวก,คูณ,และหาร แต่สิ่งที่ต้องรู้เพิ่มก็คือลำดับการคำนวณ ที่ต้องใช้วงเล็บในการควบคุมให้มันดูซับซ้อนแค่นั้นไม่มีอะไรมากปัญญาอ่อนจริงๆ
เมื่อนำโค้ดมาเทียบกันในหน่วยบรรทัดและทำให้ประหยัดสุดๆแล้ว โปรแกรมนี้ในเวอร์ชั่น C# นั้นใช้ไปทั้งสิ้น 53 บรรทัดครับ ส่วน python นั้นใช้เพียงแค่ 33 บรรทัดเท่านั้นครับท่านผู้ชม !! ผมจะพาไปดูจุดเด่นๆที่ทำให้ลดการใช้บรรทัดลงไปได้ถึง 20 บรรทัดกันครับ
จุดแรกเลยครับเห็นจนทิ่มตา !! คือ Header ของโปรแกรมในการเขียนโปรแกรมในภาษา C ไม่ว่าจะเป็น C C++ หรือ C# นั้น Header คือสิ่งที่ขาดไม่ได้เลยครับ เอ๊ะหรือขาดได้ (ในกรณีอยากพิมพ์ยาวๆ) ส่วนใหญ่เริ่มมาจะต้องมี
 
using System;
class Program{
static void Main(){

บลาๆ อะไรก็ว่ากันไป ซึ่งในทางเทคนิคช่วยให้แยกฟังก์ชั่นได้ดียิ่งขึ้นในกรณีโปรแกรมมีความซับซ้อน แต่ในโปรแกรมปัญญาอ่อนที่ไร้ซึ่งความซับซ้อนในกรณีนี้ จะมีมันไปทำเพื่ออะไร !? python มีระบบฟังก์ชั่นเหมือนกันครับ แต่ถ้าปัญญาอ่อนจริงๆก็ไม่ต้องใส่ก็ได้ในกรณีนี้ ผมไม่ใส่เลยครับประหยัดไปได้แล้ว 3 บรรทัด !!
จุดต่อมาที่เห็นกันโต้งๆ อีกที่คือ ตัวแปรครับในภาษา C# นั้นต้องประกาศว่ากูคือ double นะกูคือ int นะตั้งแต่กูเกิดเลย !! ตัวอย่างเช่น double change; เป็นต้น
แต่การประกาศตัวแปรก็แค่เรื่องเล็กครับการรับค่าเข้ามาใส่ตัวแปรต่างหากที่เป็นเรื่องใหญ่ !! ในการรับค่าจากผู้ใช้นั้นง่ายที่สุดในภาษา C# จะเป็นแบบนี้ครับ
 
double change; //ต้องมีตัวแปร
Console.WriteLine("1 USD ="); //ต้องมีตัวหนังสือบอกว่าจะรับอะไร
change = double.Parse(Console.ReadLine()); //ต้องมีการแปลงชนิดข้อมูลในการรับ
 
แต่.. ในภาษา python สามบรรทัดตะกี้ตอนนี้เหลือแค่บรรทัดเดียว !! คือ

change = float(raw_input('1 USD='))

ตัวแปรก็ไม่ต้องประกาศ.. ใช้เลย !! ตัวหนังสือก็ไปพิมพ์ทีเดียวเลยหลัง raw_input ชื่อก็บอกอยู่ว่า "ลาว อินพุต" คือรับมาดิบๆเลย !! น่าเสียดาย python ไม่มี double ในกรณีนี้ผมเลยใช้ float แทนซึ่งได้ผลไม่แตกต่างกันเท่าไร สรุปคือการรับค่านั้น python กินขาดครับในการประหยัดบรรทัด !!
ต่อมาเรื่องการเขียนหนังสือใน C# จะใช้  Console.WriteLine หรือ .Write แล้วแต่กรณีซึ่งหากเขียนหลายบรรทัดมีสองทางเลือกคือ ใช้ \n ช่วยหรือไม่ก็ต้องเขียน Console.Write อีกรอบนึง แต่ผมมักจะเลือกวิธีหลังซึ่งทำให้ดูสะอาดมากกว่า
แต่ python นั้นยังไงๆ ก็ต้อง print วันยังค่ำส่วนจะ print ยังไงนั้นมันอยู่ที่ (') ถ้ามันมาตัวเดียวแบบนี้ก็แสดงผลได้บรรทัดเดียวโต้งๆ แต่ถ้าอยากหลายบรรทัด \n ก็ยังช่วยได้ แต่... ถ้ามันมาสามตัวแบบนี้ (''') พิมพ์มันไปเลยครับ !! กด Enter ทีมันก็ Enter ให้เหมือนกันในการแสดงผลจริง วิธีนี้มีประโยชน์มาก นอกจากไม่ต้องใช้ /n แล้วยังไม่ต้องพิมพ์ print ใหม่ซ้ำอีกรอบอีกต่างหาก !! จุดนี่้ก็ขาดครับ
อีกจุดหนึ่งซึ่งเป็นจุดเล็กๆแต่ผมว่ามันก็ไม่ได้ต่างกันเท่าไรคือ else if ครับนั้นคือพิมพ์แบบ C# แต่ถ้าพิมพ์แบบ python แล้วมันจะย่นเหลือแค่ elif พูดง่ายๆคือมันรวมร่างกันนั่นแหละครับ แต่จุดนี้ก็พอกันถ้าจะเทียบจริงๆไม่ค่อยสำคัญเท่าไร
หมดแล้วครับจุดเปรียบเท่าที่โปรแกรมปัญญาอ่อนโปรแกรมหนึ่งจะทำให้ดูได้ ไว้พบกันใหม่เอนทรี่หน้าครับ

ปล.ถ้าข้องใจกับการเปรียบเทียบผมอย่าถือสานะครับ ผมก็ไม่ได้เขียนโปรแกรมเก่งมากอะไร 

1

กำลังเพลิดเพลินกับ "เมาไม่ขับ" ก็เกิดไอเดียเขียนมาซักเอนทรี่ แต่ตอนแรกก็ยังไม่รู้ว่าจะเขียนอะไร... แต่ตอนที่สองนี้คิดออกแล้วว่าจะเขียนอะไร 

เมื่อวานนี้ผมเกิดไอเดียบละหลาด ผมเบื่อ C# !! หลังจากขลุกอยู่กับมันเนื่องจากเหตุจำเบ็นทางการเรียน (วิชาการเขียนโบรแกรม) พอเรียนจบก็ไม่ค่อยจะได้ดูมันเท่าไร แต่ก็ยังไม่ถือว่าขึ้นสนิทแล้วเหมือน C++ ก็เลยตัดสินใจว่า "เราเลิกกันเถอะนะ" รู้มั้ยผมไม่ได้เสียใจเลย ผมคิดว่า C# ก็เบ็นภาษาที่ดีแม้ผมจะไมได้รู้ลึกมากถึงขนาดเขียนโค้ด DB เองได้ทั้งหมด แต่ผมก็พอที่จะดูออกว่าการยึดติดกับภาษาที่สร้างมาเพื่อโบรแกรมในเครือ Windows รังแต่จะทำให้ความหลงไหลใน Linux นั้นถดถอยลง จะกลับไบหา C ธรรมดาๆ มันก้ไม่ธรรมดาเพราะอันนั้นก็สนิมจับเหมือนกัน ก็เลยตัดสินใจซะหาภาษาใหม่ดีกว่า

กระบวนการสรรหาภาษาในการเขียนโบรแกรมใหม่ ก็คล้ายๆกับตอนที่คิดว่า "ตรูจะลง Linux ตัวไหนดี" หรือ "จะใช้ CMS ตัวไหนดี" ความแตกต่างก็คือระยะเวลาในการศึกษาลงแรงกับมันนั้น สองตัวข้างบนจะเทียบไม่ได้เลย ต่อ ทีนี้ผมก็ลิสต์ชื่อภาษาที่ผมสนใจ และ "เบ็นที่สนใจ" ออกมาชื่อออกมามีแค่ 2 ตัวครับ

ตัวแรกสุดเลยคือ Perl ครับ เพราะอาทิตย์ที่แล้วผมไบเจอหนังสือเกี่ยวกับ Linux Network Programming และในหนังสือเล่มนั้นใช้ภาษา Perl ครับ !! แต่น่าเสียดาย อคตินั้นมักจะมาก่อนเหตุผลเสมอ อคติความไม่ชอบใน Ubuntu ทำให้ผมตัดสินใจแทบจะทันทีว่าไม่ซื้อหนังสือเล่มนี้แน่นอน 555 และมันลามมาถึงการเข้าไบศึกษาภาษา Perl ด้วย

ตัวจริงของสนามนี้คือ Python ครับ ผมเบ็นผู้อ่าน Blognone มานานรวมถึง Codenone ด้วยได้เห็น Python ทางหางตาบ่อยๆแต่ไม่ค่อยเหลือบตามอง !! หลายๆครั้งที่ผมต้องไบยุ่งเกียวกับ Python โดยไม่รู้ตัว อย่างเช่นตอน BF2 บรับแต่ง mode ก็ดันต้องไบแก้โค้ด .py เพื่อแก้ให้ใช้บืนได้ทุกแบบเบ็นต้น แต่ในอดีตเหตุผลของการที่ผมไมได้ใส่ใจในการเข้าไบศึกษาดูงานใน Python ก็เพราะมันเบ็นภาษาแบบ Script ซึ่งผมเข็ดแล้วจาก Flash Action Script ก็เลยเลือกที่จะหลีกเลี่ยงภาษา Script มาโดยตลอด และอีกเหตุผลหนึ่งซึ่งเบ็นเหตุผลที่สำคัญมากในการเลือก python มาเบ็นภาษาที่ "ต้องทำการศึกษา" เนื่องจาก GSOC 2010 ครับหลายโครงการมีส่วนเกี่ยวข้องกับภาษา python เมื่อมาถึงจุดนี้ผมเริ่มเซ็งครับ เพราะรู้ว่า C# ที่เรียนเอาเกรดมาหากินไม่ได้ดั่งใจเลย !! 

เหตุผลสุดท้ายที่ผมเลือก python ก็คือหลังจากผมได้ดู Video Lecture ของ MIT OCW (เดี๋ยวเร็วๆนี้จะมาเขียนครับ) Course 6.00 Introduction to Computer Science and Programming นั้นทายสิครับว่าเค้าใช้ภาษาอะไรในการเรียนการสอนกัน ถูกแล้วครับ python

2

อีกหลายเดือนต่อจากนี้ผมก็คงจะหนีไม่พ้น Python แหละครับ กระบวนการในการเรียนรู้ที่ผมเริ่มทำในสองวันนี้ก็หาข้อมูลภาษาไทย กับหาหนังสือซักเล่มมันอ่าน ซึ่งในข้อหลังนี้ ThePirateBay ช่วยผมได้ครับ ผมได้หนังสือ Python มาเพียบเลย !! ก็ต้องเลือกกันอีกทีว่าจะใช้เล่มไหนเบ็น Guide ดีใช้เวลาอ่านคร่าวๆ ก็ได้ข้อสรูบมาครับ A Byte of Python by Swaroop C H (http://www.swaroopch.com/notes/Python) หนังสือเล่มนี้แหละครับจะเบ็นคู่มือผมไบอีกหลายเดือนเลย "เราคงได้ใช้เวลาอยู่ด้วยกันนะ" แหม่ฟังดูหวานจัง

3

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

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

 

บล.พูดถึง Rainmeter ก็คิดถึง Conky เหมือนกันแหะ

บล2.C# says : อย่าร้องไห้กลับมาหาชั้นก็แล้วกัน !!