30.6.09

หัดคลาน Programming Algorithm

excel-vba-for-loop-do-while-loop-and-do-until-loop หลายๆคนที่เริ่มเขียนโปรแกรม แบบว่าเขียนตามหนังสือ หรือเขียนเพราะอยากเขียนเป็น จะเจอคำถาม คำถามหนึ่งที่บางครั้ง เราก็ลืมถามตัวเอง แล้วก็ไม่ได้หาคำตอบด้วยว่า เราจะวนลูปไปทำไม ทำไมต้องวนลูป for loop, while loop เอาไว้ทำไมหว่า !!!??? แล้วพวก if , else , else if มันเอาไว้ทำไมกัน ฉันจะใช้มันตอนไหนเนี่ย ???!!! เป็นคำถามที่เก็บเงียบสำหรับมือใหม่ ผมเองก็เคยเป็นเหมือน สมัยที่เริ่มเขียนโปรแกรมใหม่ๆ ยิ่งถ้าเป็นประเภทว่า อ่านตามหนังสือแล้วทำตามนะ แทบจะเลิกไปเลยหล่ะ มันแทบไม่ทำให้เราเข้าใจสักที ว่าเราต้องใช้พวกมันไปทำไม

วันนี้ผมจะมายกตัวอย่างให้เห็นกันแบบเป็นรูปธรรม เอาแบบว่ายกตัวอย่างในชีวิตประจำวันเรา กับขั้นตอนวิธีคิดการเขียนโปรแกรม (Algorithm) เพราะผมเห็นหลายๆคน เพื่อนๆหลายคนที่เรียนด้วยกัน เวลาเจอวิชาโปแกรมมิ่ง มักจะมาถามบ่อยๆว่าตรงนี้ทำได้งัย คิดยังงัย พอเราอธิบาย มันก็ทำหน้าเหมือนเข้าใจ แต่พอเวลาให้ไปimageเขียนเอง หรือต้องเขียนด้วยตัวเอง มักจะทำไม่ได้ เพราะว่าเค้ายังไม่เข้าใจว่า คอมพิวเตอร์มันคิดเองไม่เป็น ซึ่งบางคนอาจจะแย้งว่า computer AI ปัญญาประดิษฐ์ (Artificial Intelligence)  มันคิดเองเป็นนะ นั่นไม่ใช่มันคิดเป็นนะ เราสอนให้มันคิดต่างหากหล่ะ และพวกมันก็คิดได้เป็นเรื่องๆเท่านั้น หลายเรื่องพร้อมกัน ทำได้ยากมาก ถ้าทำได้ นั่นก็แปลว่าคนที่โปรแกรมให้มันเก่งกว่ามันต่างหาก 

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

 

"...... Algorithm : ขั้นตอนวิธี หรือ อัลกอริทึม (อังกฤษ: algorithm) หมายถึงกระบวนการแก้ปัญหาที่สามารถเข้าใจได้ มีลำดับหรือวิธีการในการแก้ไขปัญหาใดปัญหาหนึ่งอย่างเป็นขั้นเป็นตอนและชัดเจน เมื่อนำเข้าอะไร แล้วจะต้องได้ผลลัพธ์เช่นไร ซึ่งแตกต่างจากการแก้ปัญหาแบบสามัญสำนึก หรือฮิวริสติก (heuristic)

โดยทั่วไป ขั้นตอนวิธี จะประกอบด้วย วิธีการเป็นขั้นๆ และมีส่วนที่ต้องทำแบบวนซ้ำ (iterate) หรือ เวียนเกิด (recursive) โดยใช้ตรรกะ (logic) และ/หรือ ในการเปรียบเทียบ (comparison) ในขั้นตอนต่างๆ จนกระทั่งเสร็จสิ้นการทำงาน

ในการทำงานอย่างเดียวกัน เราอาจจะเลือกขั้นตอนวิธีที่ต่างกันเพื่อแก้ปัญหาได้ โดยที่ผลลัพธ์ที่ได้ในขั้นสุดท้ายจะออกมาเหมือนกันหรือไม่ก็ได้ และจะมีความแตกต่าง ที่จำนวนและชุดคำสั่งที่ใช้ต่างกันซึ่งส่งผลให้ เวลา (time) , และขนาดหน่วยความจำ (space) ที่ต้องการต่างกัน หรือเรียกได้อีกอย่างว่ามีความซับซ้อน (complexity) ต่างกัน

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

ที่มา จากวิกิพีเดีย สารานุกรมเสรี

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

image ถ้าเป็นปัญหาแบบนี้ เพื่อนๆก็คงจะใช้วิธีไล่อ่านไปที่ละบรรทัด โดยใช้นิ้วหรือปากกาไล่ไปตามตัวอักษร หากว่าในบรรทัดนั้นมีคำว่า "Algorithm" ก็ต้องทำการจดบันทึกไว้ก่อน แล้วก็ไล่ไปอีกเรื่อยๆ จนสุดบรรทัด แล้วก็เอาค่าที่ได้รวมกันไว้แล้ว หรือมารวมกันทีหลัง เอามาเป็นคำตอบแน่ๆ  แน่นอนหล่ะ เราทำได้แล้ว เราแก้ปัญหาได้แล้ว ปัญหาก็คือจะเขียนมันยังงัยหล่ะ ตรงนี้มันเป็นส่วนของไวยกรณ์ (syntax) ของแต่ละโปแกรม ซึ่งเพื่อนๆสามารถหาอ่านได้จากคู่มือโปแกรม (help) หรือไม่ก็หนังสือสอนการเขียนโปรแกรม แต่ขั้นตอนการแก้ปัญหา (Algorithm) มันเป็นเรื่องของความคิดของแต่ละคน จนบางครั้งในปัญหาเดียวกันนี้ เราสามารถเขียนขั้นตอน (Algorithm) ในการแก้ปัญหาออกได้เป็นหลายๆวิธี ซึ่งขึ้นอยู่กับประสบการณ์ของแต่ละบุคคล

ถ้าในความคิดผมนะ ผมจะทำการโหลดข้อความทั้งหมดในหน้าเว็บนี้ เข้ามาเก็บไว้ในตัวแปร (ตัวแปร ก็เป็นหน่วยความจำที่รู้ตำแหน่งที่เก็บนั่นเอง) ก่อน หลังจากนั้นผมก็จะทำการการอ่านข้อมมูลทีละบรรทัด (ใช้ loop while ช่วย) โดยในขณะทีทำการอ่านทีละบรรทัดไปนั้น ผมก็ทำการเช็คไปด้วยว่าเจอคำว่า "Algorithm" ไหม ถ้าเจอ ก็บวกไว้หนึ่ง (ตรงนี้ อาจจะใช้การเพิ่มค่าตัวแปรคำตอบ ans++; ก็ได้ ) พอจบบรรทัดนึง while loop ก็ทำการเช็คว่าเป็นบรรทัดสุดท้ายหรือยัง ถ้ายัง (ข้อมูลเป็นจริง) ก็ยังจะทำการอ่านบรรทัดต่อไป ทำเช่นนี้ไปเรื่อยๆ จนสุดบรรทัดสุดท้าย โปรแกรมก็เลิกทำงานแล้วเอาคำตอบมาแสดง

เห็นไหมหล่ะครับ ว่าขั้นตอน (Algorithm) มันประมาณนี้ แต่ถ้าเกิดมีคำถามเพิ่มขึ้นมาว่า คำว่า "Algorithm" มันอยู่บรรทัดไหนบ้าง เอาหล่ะสิ เพื่อนๆคิดว่าจะเพิ่มโค๊ดเข้าไปตอนไหน เพื่อนๆบางคนอาจจะคิดออกแล้ว ว่าจะต้องเพิ่มโค๊ดเข้าไปตรงไหน แต่สำหรับคนที่ยังคิดไม่ออก ไม่เป็นไรครับ ของอย่างงี้มันขึ้นอยู่กับการฝึกฝนครับ ฝึกมากๆ เก่งมากครับ

สุดท้ายผมได้เขียน ภาษา PHP ลองแก้ปัญหาที่ถามเพื่อนไป แต่สำหรับใครที่อยากจะเขียนภาษาอื่น ก็ไม่ว่ากันครับ ก็อย่างที่บอกแหละครับ มีแค่ไวยกรณ์ (syntax) ของภาษาเท่านั้นแหละที่มันต่างกัน แต่การสื่อความหมาย มันเหมือนๆกันแหละครับ วันนี้พอแค่นี้ก่อนแหละกัน บทความนี้ชักจะยาวไปแล้ว   สวัสดีครับ

<?php
$handle = fopen("data.txt", "r");
$contents = '';
$ans = 0;
$lineNumber = 1;
while (!feof($handle)) {
    $contents = fgets($handle, 4096);
    $ans = $ans + substr_count($contents, "Algorithm");
    echo "บรรทัดที่ ".$lineNumber."  พบคำว่า Algorithm จำนวน   ".substr_count($contents, "Algorithm")."  คำ \n";
    $lineNumber++;
}
fclose($handle);
echo "\n";
echo "พบจำนวนคำว่า Algorithm ทั้งหมด ".$ans." คำ";
echo "\n";
?>

ผลลัพธ์ที่ได้จากการรัน PHP ผ่าน edit plus

image

อ่านเพิ่มเติม...

25.6.09

มาสร้างกราฟให้ PHP ด้วย ChartDirector กันเหอะ

          ในการสร้างรายงานบนเว็บ application นอกจากการใช้ php ดึงข้อมูลจากดาต้าเบส Mysql มาแสดงผลเป็นตารางโชว์บนหน้าเว็บแล้ว เรายังสามารถที่จะสร้างเป็นกราฟ ได้อีกด้วย โดยกราฟที่เราสร้างนั้น จะเป็นรูปภาพ (นามสกุล png) ซึ่งเราสามารถเปลี่ยนแปลงกราฟได้ ตามข้อมูลที่เราส่งให้มัน  บางคนอาจจะใช้ graphics module (GD library) ในการสร้าง image แบบ dynamic แต่วันนี้ ผมขอนำเสนอ library ตัวนึง ที่ผมใช้อยู่ประจำ นั่นก็คือ ChartDirector for PHP ซึ่งเป็นของบริษัท Advanced Software Engineering ตัว library ของ ChartDirector ก็หาดาวน์โหลดได้จากแบนเนอร์ที่ขึ้นตามอยู่ในเว็บนี่แหละครับ ไม่ต้อง search หาเอาใหม่ เจ้าของบริษัทเค้ามาเอง รับรองของแท้ ไม่ต้อง crack ไม่ต้อง hack จัดไปอย่ามัวลังเล ให้เสียของ

Bar-Chart_ChartDirector

ไม่ว่าจะเป็นกราฟเส้น กราฟแท่ง กราฟวงกลม หรือแม้กระทั่งเอามาผสมกันระหว่างกราฟแท่งและกราฟเส้น พี่แกก็ทำได้หมด นอกจากนี้ ยังมีลูกเล่นประเภท java script อีก เวลาเอาเม้าท์ไปชี้ แล้วขึ้นข้อมูลตัวเลข ตัวหนังสือ ก็ทำได้นะค่อนข้างสะดวกเลยทีเดียว (ลองนั่งเขียนเองสิ ตาตั้งเลยหล่ะ) นอกจากนี้ ยังมีกราฟที่ออกแนวEngineering ด้วยนะ ตัวอย่างเช่น surface chart, contour chart,  ดูๆไปแล้ว น้องๆ MATLAB เลยก็ว่าได้

Surface-Chart_ChartDirector 

มีลูกค้าดังหลายๆเจ้า ที่ใช้ ChartDirector ไม่ว่าจะเป็น Dell, SONY, IBM, Intel, Samsung, Philips, …etc  อีกมากมาย นั่นก็เป็นตัวที่การันตีได้ระดับนึงที่เราจะเลือกใช้ผลิตภัณท์ของ ChartDirector  ลืมบอกไปว่าตัวที่เราดาวน์โหลดมานี้ มันเป็นตัวทดลองใช้นะครับ ซึ่งเค้าให้ใช้ได้ฟรี แต่จะมีแบนเนอร์ของเค้าติดมาด้วยที่ด้านล่างของกราฟ แต่ผมมีเทคนิคเล็กๆน้อยๆ ในการปิดแบนเนอร์ของเค้า ซึ่งจะทำให้เราดูเหมือนใช้ตัวเต็มครับ

     ผมได้ทำการติดตั้ง ChartDirector ลงบน The AppServ Open Project - 2.5.6 for Windows  ซึ่งมี PHP Script Language Version 5.1.4 ติดมาด้วย

    หลังจากเพื่อนๆ ได้ทำการติดตั้ง The AppServ Open Project - 2.5.6 for Windows ลงบนเครื่องของตัวเองแล้ว ให้ทำการไปดาวน์โหลด ChartDirector for PHP  (ลิ้งค์ทางขวามือครับ) ในที่นี้ ผมเลือก ChartDirector for PHP - Software and CHM Doc (ดูตามภาพประกอบนะครับ) เพราะจะได้คู่มือที่เป็นไฟล์ CHM มาด้วย เปิดอ่านง่ายดี

ChartDirector-for-PHP

ทำการ ดาวน์โหลดไฟล์ โดยไปวางไว้ที่ C:\Appserv\www\  เลยครับ  ซึ่งหลังจากที่เราดาวน์โหลดเรียบร้อยแล้ว ให้เราทำการ unzip ไฟล์ออก โดยเลือกให้แยกไฟล์ลงที่นี่เลยครับ มันจะสร้างโฟล์เดอร์ “ChartDirector” ให้เรา ซึ่งชื่อโฟล์เดอร์นี้ แนะนำให้เป็นชื่อนี้นะครับ มันจะได้ตรงกับใน script ไฟล์ข้างในเวลาที่เรา include เข้ามาจะได้ไม่มีปัญหา

     ขั้นตอนนี้เป็นการที่เราจะต้องทำการ config ให้ PHP รุ้จัก library ของ  ChartDirector ซึ่งขั้นตอนก็ไม่ได้ยุ่งยากจนเกินไปนัก ให้เราทำการ copy ไฟล์นามสกุล dll จากโฟล์เดอร์ C:\AppServ\www\ChartDirector\lib โดยไฟล์ dll ที่เราจะ copy นั้น จะต้องสัมพันธ์กับเวอร์ชั่นของ PHP ซึ่งสามารถดูได้จากตารางข้างล่างนี้ครับ ในที่นี้ผมได้ชื่อไฟล์ “ phpchartdir510.dll “ เพราะผมใช้ PHP version 5.1.4  ซึ่งติดตั้งอยู่บนระบบปฏิบัติการ Windows วิธีการดู version ของ php นะครับ ให้เขียนโค๊ดข้างล่างนี้ แล้ว save เป็นไฟล์ info.php (หรือไฟล์อะไรก็ได้ ที่จำได้) วางไว้ที่ C:\Appserv\www\ นะครับ แล้วเรียกที่ web browser ดูจะเห็น versionของ php (จริงๆแล้ว น่าจะเห็นตั้งแต่เราเรียก http://localhost แล้วหล่ะ )

<?php

phpinfo();

?>

PHP_version5.1.4

ChartDirector_list_dll

เราก็ทำการ copy file “phpchartdir510.dll”,”Chartdir.dll”,”phpchartdir.php” ทั้ง 3ไฟล์นี้ ไปวางไว้ที่ C:\AppServ\php5\ext (ซึ่ง path ตรงนี้ จะต้องเหมือนกับที่ config ไว้ใน php.ini ครับ)

File_ChartDirector   เมื่อเรา copy ไปวางเรียบร้อยแล้ว ให้ทำการเปิดไฟล์ C:\windows\php.ini ขึ้นมาด้วย notepad หรือ editor ตัวไหนก็ได้ แล้วทำการเพิ่มบรรทัด ลงข้างล่างต่อจากบรรทัดที่รวมรายชื่อ extension ทั้งหมดหน่ะครับ

;extension=php_pdo_sqlite.dll
;extension=php_winbinder.dll
extension=phpchartdir510.dll

แต่อย่าลืมเอาเครื่องหมาย “;” ออกหน้าบรรทัดด้วยนะครับ เพราะไม่งั้นจะกลายเป็นการ comment บรรทัดนั้นไป ซึ่งจะไม่ทำให้เกิดอะไรขึ้น  เมื่อเราวางแล้วก็ให้ทำกา save ไฟล์แล้วปิดไฟล์นั้น หลังจากนั้น ก็ให้ทำการ restart apache หนึ่งครั้ง ถ้าไม่มีข้อความอะไรโชว์ error ก็แปลว่า เราสามารถติดตั้ง extension ใหม่ได้สำเร็จ

      จากนั้นให้ทดลองเปิด IE ขึ้นมา แล้วเรียกไปยัง http://localhost/ChartDirector/phpdemo/ เพื่อทดลองดูว่า มันสามารถเรียกใช้ ChartDiretor ได้ไหม แล้วก็ลองเรียกหน้า page demo ขึ้นมาสัก page นึง ถ้าปรากฏกราฟขึ้นมา ก็แปลว่าเราทำสำเร็จแล้ว ขั้นต่อไปก็แค่ ดูตัวอย่าง source code แล้วทำการ modify ตามตัวอย่างเลยครับ แค่นี้ หน้าweb application ที่เคยรายงานตัวเลขเป็นตาราง ก็จะสามารถรายงานเป็นกราฟได้ด้วยครับ ดูมีราคาขึ้นมาเยอะ

     เวลานำไปใช้งานนะครับ ตรงนี้เป็นเทคนิคของผมเองครับ ผมมักจะใช้ iframe เป็นตัวกำหนดตำแหน่งการวางรูป (ลืมบอกไปครับ เวลาที่เราแทรก script การสร้างกราฟ output ที่ได้จะเป็น image นะครับ ดูได้จาก header ไฟล์ของมัน )

<td  align='center'>

     <iframe marginheight=0 frameborder="0" marginwidth=0 scrolling=no src="graph/count_bar.php?DD=<?php echo $DATE?>" name="graph"
                style="position:relative; width:960px; height:200px; visibility: visible; z-index:1;">
                Iframes are not supported by this browser.
     </iframe>
</td>

แล้วผมก็ไปกำหนดค่า $c = new XYChart(980, 215,0xFFFFFF ,0xffffff,1); ให้มันมีขนาดใหญ่กว่า iframe ของผมเล็กน้อย เพียงเท่านี้ คุณก็จะได้กราฟที่ไม่มีแบนเนอร์มาแสดง เป็นงัยหล่ะครับ แจ่มไหม

Bar-Chart-Sample

วันนี้ก็ขอจบเพียงเท่านี้หล่ะกัน คราวหน้าเรื่อง “ตัวอย่างการใช้งาน ChartDirector (ตอนที่ 1)

อ่านเพิ่มเติม...

13.6.09

โปรแกรมเมอร์เข้าสิง

kratok2006@hotmail[1].com_a6fd6c2c แรกเริ่มเดิมที ผมไม่ได้มาจากสายคอมพิวเตอร์โดยตรง แต่ก็พอได้เรียนมาบ้างวิชาโปแกรมมิ่ง แต่นั้นก็ยังนับว่าไม่พอเพียงหากจะเขียนโปแกรมให้เป็นสักภาษาหนึ่ง ในระหว่างนั้นได้มความพยายามอย่างมากที่จะเข้าใจให้ได้ว่าการเขียนภาษาโปรแกรมนั้น เค้ามีหลักในการเขียนอย่างไร และมันต้องเรียนรู้อะไรบ้าง แต่เนื่องจากว่าในสมัยนั้น (ประมาณปี พ.ศ. 2538) การสื่อสารในวิชาโปรแกรมนั้น เรายังใช้คำไทยอยู่ เรา บางคนอาจจะเคยพบเห็นหนังสือบางเล่มในปัจจุบัน ยังใช้คำไทยเหล่านั้นอยู่ ซึ่งต้องขอเรียนตามตรงว่า ถ้าเราจะอ่านตำราวิชาโปรแกรม อย่างเช่นภาษาซีนั้น เราจะต้องเปิดพจนานุกรม เพื่อแปลไทยเป็นไทยอีกทีนึง เพื่อให้เข้าใจคำศัพท์บางตัวที่เราแทบไม่เคยได้ยินกันเลย ผมไม่ขอยกตัวอย่างแล้วกัน เพื่อนๆบางคนอาจจะเคยเห็นกันมาบ้าง บอกตามตรง มันงงจริงๆตอนนั้น

programer จนมาถึงปัจจุบัน คอมพิวเตอร์แทบจะบอกได้เลยว่า มันเป็นการก้าวกระโดดทางเทคโนโลยีทางด้านฮาร์ดแวร์และซอพแวร์เลยก็ว่าได้ ทุกอย่างถูกพัฒนาควบคู่กันไป ทุกวันนี้ หนังสือโปแกรมมิ่ง ค่อนข้างเยอะ และเราเองคนไทย ก้เริ่มที่จะพัฒนาศักยภาพของตัวเอง ด้วยการอ่านตำรา text book ที่มาจากเมืองนอกบ้าง จนทำให้ทุกวันนี้ เราไม่ต้องมาลำบากในการค้นคว้าและศึกษาการเขียนโปรแกรมเหมือนกังแต่ก่อน (ผมได้รู้จักกับ เด็กวัยรุ่นคนนึง ในขณะที่ผมอายุสามสิบกว่า น้องเค้าอยู่ ม.4 เค้าสามารถที่จะเขียนโปแกรมเป็นแหละ)

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

garlic42 จากประสบการณ์โดยตรงที่ผมเจอมา ก็คือ เราไม่รู้ว่า เวลาที่เรา print ค่าออกมา หรือการวนลูป การใช้เงื่อนไข if else เรานำไปใช้ทำไม เพื่ออะไร ทำไมต้องทำอันนี้ก่อน อยากได้ผลลัพธ์แบบนี้ ต้องทำอย่างไรก่อนหลัง ไปๆมาๆ ก็เลยพาลให้เรา เลิกเขียนโปรแกรมเอาซะดื้อ ยิ่งไม่รู้ว่าจะเอาไปใช้อะไรด้วยแล้ว ยิ่งแย่ไปใหญ่ มันหมดความตั้งใจไปเลยก็มี 

ที่ผมพอจะเขียนภาษาคอมพิวเตอร์ได้บ้างนั้น มันเกิดจากการที่ผมจำเป็นต้องทำ และผมอยากทำไปพร้อมๆกัน ผมได้รับมอบหมายให้เขียนเว็บไซต์ที่เอาไว้โชว์ในบริษัท ซึ่งเป็นแค่โชว์ใน intranet เท่านั้น ไม่ใช่ internet นะครับ ผมก็เริ่มจากการเอาคอมพิวเตอร์เครื่องเก่าๆเครื่องนึง มาทำการลง linux แล้ว setup ให้มันเป็น web server ไปในตัว จากตรงนั้นเอง จากที่ไม่มีความรู้อะไรเลย ก้จำเป็นต้องค้นคว้าหาข้อมูลว่ามันต้องทำยังงัยบ้างในการติดตั้ง web server ผมไม่ได้เรียนมาหรอกครับ แต่อาศัยว่า ตอนนั้น มันต้องทำให้ได้จริงๆ เป็นการเรียนรู้ แล้วลงมือทำเลยทันที เหมือนกับนักศึกษาที่ต้องอ่านการทดลองแลปมาก่อน แล้วลงมือปฏิบัติ 

programmer1

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

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

c_plus_plus

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

programmer

อ่านเพิ่มเติม...
 

เกี่ยวกับฉัน(ไหมเนี้ย)

My photo

สวัสดีครับ ชื่อเปิ้ลนะครับ ถ้ามีอะไรให้ช่วยเหลือได้ ก็จะช่วยครับ
ผมได้สร้างบล๊อกไว้ เพื่อเก็บรวบรวมความรู้ และประสบการณ์ในการทำงานครับ แวะไปเยี่ยมชมกันได้ครับ http://mechacity.blogspot.com และบล๊อก http://faker-programmer.blogspot.com ครับ

รายการบล๊อกอื่นๆ

  • Solved: error: 'TKD2' was not declared in this scope, LIFA_Base compile error - วันนี้ จะมาเล่าถึงปัญหาที่เจอในการเบิร์นโค๊ด LIFA_Base ที่เราใช้ในการทำให้ Arduino ของเราสามารถรับคำสั่งจาก LabVIEW ได้ ปัญหานี้ เริ่มเกิดขึ้นตอนที่ Ard...
  • Type-Fu : Typing practice game online - หากใครที่สนใจ หรือจะต้องทำงานเกี่ยวกับคอมพิวเตอร์ หนึ่งในความจำเป็นก็คือ จะต้องเรียนรู้ที่พิมพ์สัมผัสได้ เพราะการที่พิมพ์สัมผ้สได้ มันได้ประโยชน์หลายๆ อย...

Blog อื่นๆ ที่น่าติดตาม

เหล่าบรรดา Blogger