ขอบเขตของตัวแปรในภาษา C++ (Scope of variables In C++)

ตัวแปรทั้งหมดที่เราทำการประกาศค่าไว้ก่อนแล้ว นั้นในภาษา C++ การประกาศค่าตัวแปรจะทำที่ใดของ source code ก็ได้ และระหว่างการประกาศตัวแปรนั้น แต่ละขอบเขตของฟังค์ชัน ( Scope of Function ) นั้นถึงแม้จะชื่อเหมือนกัน แต่ว่าก็ไม่ได้หมายความว่าจะเป็นตัวแปรจะค่าเหมือนกันแต่อย่างใด ซึ่ง ตัวแปร A ที่อยู่ใน ฟังค์ชัน X จะไม่เท่ากับค่าของตัวแปร A ที่อยู่ในฟังค์ชัน Y แต่อย่างใด เพราะว่าอยู่กันคนละขอบเขตกันเราเรียกตัวแปรในขอบเขตแบบนี้ว่า ตัวแปรเฉพาะที่ (ในบทความนี้ขอพูดทับศัพท์ไปเลย เพื่อให้เข้าใจง่ายว่า Local Variables) ซึ่งจะมีค่าและสามารถใช้งานได้เฉพาะฟังค์ชัน ที่มันเกิดร่วมด้วยเท่านั้น


ตัวอย่าง 1

int X () {

   int A = 5;

   return A;

}

int Y () {

   int A = 10;

   return A;

}

int main() {

   std::cout < < X()<< ”;

   std::cout << Y()<< ”;

   return 0;

}


ผล

5 10


ในบางครั้งการเขียนโปรแกรมแบบประกาศตัวแปรภายนอกฟังค์ชัน ไม่ว่าจะที่ใดก็ตาม มันจะเป็น ตัวแปรสากล (ในบทความนี้ขอพูดทับศัพท์ไปเลย เพื่อให้เข้าใจง่ายว่า Global Variables) ไปทันที ซึ่งจะทำให้การประกาศแบบ ตัวแปร A มีค่าค่าหนึ่งในฟังค์ชัน X และตัวแปร A มีค่าอีกค่าหนึ่งในฟังค์ชัน Y จะทำแบบนี้ไม่ได้ เพราะว่าถูกการประกาศไว้แล้ว ภายนอกฟังค์ชัน ในภายนอกฟังค์ชันนั้นเอง ทำให้การที่ใช้ตัวแปรนั้นๆ ที่ประกาศไว้นอกฟังค์ชันไปใช้อาจทำให้เกิดการคำนวณหรือการทำงานที่ผิดพลาดได้


ตัวอย่าง 2

int x = 5; // Global Variable

int main() {

   double y = 3.1415; // Local Variable

   std::cout < < y << ”; std::cout << x << ”; return 0;

}


ผล

3.1415 5


แต่ ……

มันยังมีข้อที่เรามองข้ามไปคือ ถ้าเราประกาศตัวแปร เหมือนกับ Global Variable แล้วนั้น จะทำให้ตัว Compiler มองว่าตัวที่ประกาศอยู่ในฟังค์ชันคือตัวแปรที่มีความสำคัญหรือ ศักดิ์มากกว่า


ตัวอย่าง 3

int x = 5;

int main() {

   double x = 3.1415; /* ทำการซ่อน Global Variable x = 5 ไว้ */

   std::cout < < x << ”; /* แสดงตัวค่าตัวแปร Local Variable แทน */

   std::cout << ::x << ”;

   /* ใช้ Scope resolution operator มาวางให้ข้างหน้าตัวแปร

   เพื่อบ่งบอกว่าเราต้องการใช้ตัวแปร Globale Variable

   แทน Local Variable*/

   return 0;

}


ผล

3.1415 5


จากตัวอย่างจะเห็นว่าเราจะทำการประกาศตัวแปรทับซ้อนกันก็ได้ได้แต่ว่าไม่เป็นผลดีและอาจเกิดการสับสนใจการใช้งานได้ ทำให้ส่วนใหญ่แล้วจะใช้ Local Variable กันเยอะมาก เพราะว่าจัดการได้ง่าย แต่ก็มีในหลายๆ กรณีเช่นกันที่ต้องใช้ อย่างเช่นตัวแปรที่ต้องการแชร์ค่าเริ่มต้นการทำงานเช่นค่าของ Percen (100) หรือ ค่าของ Pi (3.1415) เป็นต้น เพราะเป็นค่าที่ไม่มีการเปลี่ยนแปลงไม่ว่ากรณีใดๆ

Note !

คุณสามารถที่จะบอก Compiler ว่าคุณต้องการใช้ Global Variables แทนการใช้ Local Variable ได้เมื่อคุณตั้งชื่อ Variable ภายใน Function นั้นเหมือนกับ Global Variable โดยใช้ :: (The Scope Resolution Operator) ไว้ด้านหน้าตัวแปรนั้นๆ …

:: identifier

class-name :: identifier

namespace :: identifier

ซึ่งการอ้างถึงของ :: (The Scope Resolution Operator) นั้นสามารถอ้างได้ตั้งแต่ variable, class และnamespace ได้ด้วย

ซึ่งจาก "ตัวอย่างที่ 3" ถ้าคุณมี Nested Local Scopes (มี Scope ตัวแปรซ้ำซ้อนกับ Global Variable ) ตัว Compiler จะไปเอาค่าหรืออ้างอิงตัวแปรที่อยู่ใน Function ก่อนเสมอ ถ้าจะใช้ Global Variable ก็เพียงทำหลักการของ The Scope Resolution Operator นั้นเอง

จากที่เราได้รู้แล้วว่า คำว่า Global Variables นั้นสามารถที่จะอ้างอิงได้จากทุกๆ ที่ใน code หรือใน ฟังค์ชัน ซึ่งจะคงอยู่ตลอดหลังจากการตั้งตัวแปรนั้นๆ ขึ้นมาใช้งานแล้ว แต่คำว่าตัวแปรเฉพาะที่ Local Variables นั้นตัวแปรจะถูกจำกัดอยู่ในขอบเขตที่ตัวเองได้เกิดขึ้น แต่ถ้าคุณสร้างมันในตอนแรกของฟังค์ชัน (ในที่นี่หมายถึง main ฟังค์ชันของ C++) ตัวแปรนั้นๆ จะอยู่ใน main ฟังค์ชันเท่านั้น และจะไม่ไปยุ่งกับตัวแปรอื่นๆ ในฟังค์ชันอื่นๆ ด้วยถึงแม้ชื่อจะเหมือนกันในฟังค์ชันอื่นๆ ก็ตามที

ใน C++ นั้น ขอบเขต ของ Local Variables นั้นจะอยู่ที่ ( brackets { } signs ) นั้นเอง ซึ่งถ้าคุณตั้งมันในขอบเขตดังกล่าวแล้ว ตัวแปรจะไม่ยุ่งเกี่ยวกับภายนอกฟังค์ชันแน่นอน


ตัวอย่าง 4

int main(){

   for (int i = 0; i < 100; ++i) {

      int x = 42;

      if (x < i) {

         double x = 3.14; std::cout << x; // Output ที่จะ Print ออกมาจากหน้าจอคือ 3.14

      }

      std::cout << x; // Output ที่จะ Print ออกมาจากหน้าจอคือ 42

      } // ส่วนนี้จะ Error เพราะว่าเราไม่ได้ตั้งตัวแปรไว้ในขอบเขตนี้ ด้วยเหตุผลได้กล่าวไปแล้วในข้างต้น

   std::cout << x;

   return 0;

}


จากเนื่อหาด้านบนคงทำให้หลายๆ คนเห็นภาพมากขึ้นในเรื่องของขอบเขตของตัวแปรในภาษา C++ นะครับ

อ้างอิงจากหนังสือ C++ in a Nutshell ของ O’Reilly


เรียนโปรแกรมมิ่ง หรือ Computer Science จงเป็นเจ้านายภาษา …

ขอท้าวความนิดนึง ว่าทำไมผมถึงเขียนแบบนี้

คืออันนี้ผมไป ได้มาจากพี่เดฟ (ithilien_rp) post ตอบไว้ใน pantip.com โดยที่เจ้าของกระทู้เขียนว่า ในlonghorn นั้น microsoft จะใช้ภาษาใหม่ ซึ่งก็คือ mc++ ดังนั้นขอให้พวกโปรแกรมเมอร์ทั้งหลายระงับการเรียนโปรแกรมกันไว้ก่อนเพราะว่าอีกไม่นานต้องเปลี่ยนอีก

อะไรทำนองนี้แหละครับ เนื้อหาบทความีดังนี้ครับ


         การเรียนรู้ platform/library/language ใหม่ๆ เป็นเรื่องปกติของ programmer อยู่แล้ว ดังนั้นผมว่ามีของใหม่มา ก็ไม่ใช่เรื่องแปลกอะไร

         การเรียนรู้อะไรผมไม่อยากให้ดูที่เปลือกนอกมากไปนักน่ะครับ อย่าไปดูที่ syntax, libraryอะไรให้มากนัก ดูที่แนวความคิด หรือว่าปรัชญาของการเขียนโปรแกรมจะดีกว่ารวมไปถึง algorithm flow หรือว่า program design ด้วย เพราะว่า ถึงแม้ภาษาต่างๆ มันจะเปลี่ยนไป หรือว่า library/framework ต่างๆ มันเปลี่ยนไปตามกาลเวลาของมัน ไอ้พวก algorithm หรือว่า design philosophyพวกนี้ไม่ค่อยเปลี่ยนตามหรอกครับ หรือว่าเปลี่ยนตามก็ช้ากว่าไม่รู้กี่เท่า

         เรียนprogramming language ใหม่ๆ ภาษานึงนี่ ผมว่ามันไม่ใช่เรื่อง big dealอะไรเลย ตอนที่ผมเปลี่ยนมาใช้ mac os x ใหม่ๆ แล้วอยากจะเขียนโปรแกรมบน osx ผมก็ต้องเรียน objective-c ซึ่งผมไม่เคยเห็นมาก่อนในชีวิตก็ไม่มีอะไรมาก ใช้เวลาครึ่งวันอ่าน syntax, keyword ใหม่ๆ ว่ามีอะไรบ้างอีกครึ่งวันหาพวก FAQ ว่ามันมีอะไรต่างจาก c/c++/java มั่งวันที่สองวันที่สาม ก็เขียนอะไรใน objective-c ได้แล้วส่วนเรื่องการเขียนโปรแกรมใน os x นี่ แน่นอนว่า architecture มันต่างจากwindows โดยสิ้นเชิง ดังนั้นความรู้อะไรก็ตามที่ผมรู้มาจาก win32, mfc,.net ใช้ไม่ได้เลย (ของตาย ยกเว้น M$ จะ port ไปลง แต่ว่า .net ก็มีdotGNU ก็พอจะใช้กันได้บ้าง) แต่ว่าก็เรียนรู้ Cocoa framework (ที่เป็นnative framework ของ mac os x) ก็ใช้เวลาไม่นานเท่าไหร่ ก็เขียน GUIapplication ได้แล้ว ใช้ system service ได้พอสมควร (ก็อ่านๆ พวก basicแล้วที่เหลือก็เปิด reference เอา)

         ขอสรุปความคิดคร่าวๆละกันนะครับ ก่อนจะนอกเรื่องไปมากกว่านี้ผมอยากจะเสนอความคิดแบบนี้ดีกว่าครับ สำหรับคนที่จะหัดเขียนโปรแกรม

1. แยกการเรียน “ภาษา” กับการเรียน “library/framework” ออกจากกัน
         เดี๋ยวนี้library/framework ใหม่ๆ ส่วนมากจะ support หลายภาษา และ codeที่เขียนเรียกใช้ library เหล่านั้นในแต่ละภาษาจะไม่ต่างกันมากเท่าไหร่(ลองดู code ที่ใช้ .NET framework ที่เขียนใน VB.NET, C#.NET หรือว่าManaged C++.NET สิครับ ออกมาแทบจะเหมือนกันเลย ผมอ่านหนังสือ VB.NET นี่แปลง code เป็น C# ได้แบบแทบไม่ต้องคิดเลย เกือบจะบรรทัดต่อบรรทัด แปลงแค่syntax กับ keyword แล้วก็ structure นิดหน่อย)
         ดังนั้นการแยกการเรียนรู้ library/framework ออกจากการเรียนภาษาเป็นเรื่องที่สำคัญครับ ตามความคิดของผม

2. อย่าไป focus กับภาษามากเกินไป ดูที่ algorithm + program design มากๆ
         ภาษาก็เป็นแค่เครื่องมือแม้ว่าภาษาแต่ละภาษาจะมีข้อดีข้อเสียไม่เหมือนกัน แต่ว่าอย่างไรก็ดี การdesign program นั้น design framework, design patternsส่วนมากจะไม่ขึ้นกับภาษา คือ จะใช้ในภาษาไหนก็ได้ เช่นเดียวกับ algorithm
         ดังนั้นเมื่อต้องถึงเวลาที่จะเปลี่ยน platform ไม่ว่าจะเป็นการไปใช้ platformตระกูลใหม่ (เช่น windows->linux, windows->macหรือว่ากลับกันก็ตาม) หรือว่าตระกูลเดิม แต่ update architectureใหม่จนจำไม่ได้ (เช่น windows 3.11->windows 95, win32->.net หรือmac os 9->mac os x) ก็ตาม สิ่งที่ต้องทำก็คือ
         – เรียนรู้ syntax และลักษณะเฉพาะของภาษาใหม่ (ถ้าจำเป็น)
         – เรียนรู้ basic ของ framework ของ platform นั้นๆ (เช่น การเรียกใช้component, การใช้ memory, ฯลฯ)
         จากนั้นในการเขียนโปรแกรมหรือว่าสร้าง application อะไร ในภาพรวม ก็คิดตามหลักprogram design เดิม และใช้ algorithm ตัวเดิม แต่ว่าเรียกใช้ componentจาก framework ตัวใหม่ (ซึ่งตรงนี้ ถ้า basic แน่นดี ก็เปิดดูจากreference ได้เลย) และอาจจะปัญหาเรื่องรายละเอียดปลีกย่อยนิดหน่อยในส่วนที่เป็นลักษณะเฉพาะของภาษาใหม่ ที่ต่างไปจากภาษาที่เคยชินเท่านั้นเอง เช่นตอนที่เขียน objective-c ใหม่ๆ งงกับมันอยู่พักนึง กับsemi-automatic memory management ของมัน เพราะว่าเคยแต่ใช้ manual แบบc/c++ หรือว่า fully automatic แบบ java
         ส่วนถ้าใครอยากจะลองเล่นกับmanaged c++ ก็หาตัวอย่างได้ทั่วไปครับ ส่วนหนังสือเล่มที่อยากจะแนะนำนอกจากหนังสือของสำนักพิมพ์ microsoft ที่น่าจะเป็นมาตรฐานที่ต้องอ่านแล้วก็มี Developing Applications with Visual Studio.NET โดย RicardGrimes เล่มนี้จะเน้นการใช้ Managed C++และจากพูดถึงส่วนของรายละเอียดต่างๆ ข้อเหมือนและข้อแตกต่างระหว่างmanaged c++ กับ c++และ c# ไว้ดีพอสมควรทีเดียว แต่ว่าอาจจะไม่มี codeตัวอย่างมากนัก เหมาะกับคนที่เขียนโปรแกรมเป็นอยู่แล้ว

อยากจะเขียนโปรแกรม ควรจะศึกษาโปรแกรมอะไรก่อน ?

คำถาม … อยากจะเขียนโปรแกรม ควรจะศึกษาโปรแกรมอะไรก่อนครับ
ไม่รู้จะไปปรึกษาใครแล้วนะครับ พอดีอยากจะเรียนเขียนโปรแกรม แต่เห็นมีโปรแกรมเยอะมากๆเลย ไม่รู้ว่าโปรแกรมอะไรทำหน้าที่อะไรบ้าง

พี่ๆที่พอจะช่วยผมได้ ช่วยผมทีนะครับ อยากจะศึกษา แต่ไม่รู้จะเริ่มจากตรงไหนดี

ขอบพระคุณมากครับ

ขอบคุณจากใจจริงครับ

จากคุณ : NismoO -[ 22 พ.ย. 47 – 01:25:56 ]

กระทู้จาก Pantip.com ครับ http://www.pantip.com/tech/coffee/topic/JX1662452/JX1662452.html

พอดีว่า พี่เดฟ (ithilien_rp) มาตอบให้ …. เลือกภาษาซักตัว อะไรก็ได้ แล้วก็หา compiler ของภาษานั้นๆ แล้วก็มาหัดเขียนโปรแกรมง่ายๆ พวกรับ input แสดง output คิดเลขง่ายๆ แล้วก็หัดใช้พวก loop

compiler หลายตัวก็ฟรี หลายตัวก็เป็น commercial … แต่ว่าตอนแรกอยากให้หัดกับพวก free compiler ก่อน อันนี้ก็แล้วแต่ภาษาน่ะแหละ ว่าจะหาได้ยากง่ายแค่ไหน เช่น Java กับ .NET สามารถที่จะหา compiler ฟรีได้เลยจาก Sun กับ Microsoft โดยตรง ส่วนภาษาที่มีมาตรฐานกลาง เช่นพวก C/C++ ก็ต้องหา compiler เอา จริงๆ ใช้ MinGW ก็ไม่เลวหรอก หรือว่าจะใช้ Borland C++ command line edition ก็ได้

ไม่อยากให้ไปบ้าตามกระแสบางอย่าง ที่ต้องเล่น professional tools พวก visual studio.net enterprise ตั้งแต่ยังทำอะไรไม่เป็น ….

ค่อนข้าง ok มากสำหรับคนทีี่เพิ่งจะเริ่มทำหรือศึกษาด้านการเขียนโปรแกรมครับ

อีกคำถามนึงจาก ThaiDev.com ครับ http://www.thaidev.com/board-c/view.php?1068

คำถาม … ความสามารถของ C “ตอนนี้ผมสามารถเขียน C ได้แต่ก็แค่ใช้แก้บัญหาคณิตศาสตร์เท่านั้นอยากทราบความสามารถอืนและแหล่งรวบรวมความรู้ดังกล่าว”

ตอบ …
1) ตอบแบบวิชาการหน่อยๆ ก็ programming language ไม่ว่าจะภาษาไหน .. ก็ถือว่าเป็น universal turing machine (UTM) ทั้งหมด และด้วยความเป็น UTM ทำให้มันมีความสามารถที่จะทำอะไรก็ได้ที่ UTM ตัวอื่นทำได้ และสามารถ emulate การทำงานของ UTM ตัวอื่นได้หมด และเนื่องจากคอมพิวเตอร์แบบที่เราใช้กันอยู่ทุกวันนี้มันก็เป็น UTM ดังนั้นการทำงานทุกอย่างของ computer ตลอดจนโปรแกรมทุกลักษณะ ก็สามารถใช้ภาษา C เขียนได้หมด

2) ตอบแบบสั้นๆ ง่ายๆ ก็ จะเขียนอะไรก็ได้หมดน่ะแหละ ที่คุณเคยเห็นบนคอมพิวเตอร์น่ะ (ไม่ว่าจะเป็นกราฟฟิค เสียง ฯลฯ หรือว่าระบบอะไรก็ช่าง .. เขียน OS ยังได้เลย)

ดังนั้น…… ก็แล้วแต่ว่าคุณจะออกแบบโปรแกรมถูกหรือเปล่า จะใช้ data structures กับ algorithm เหมาะสมมั้ย และจะใช้ library อะไร (หรือว่าจะเขียน library ใหม่เอง) เช่นถ้าจะเขียนโปรแกรมเกี่ยวกับทางกราฟฟิคก็อาจจะใช้ OpenGL อะไรประมาณนั้น เป็นต้น

จากคุณ rp@jp เมื่อ 11:22am (20/11/2004)

ทุกๆ คำถามมีคำตอบครับ วันนี้ผมรวบรวม คำถาม และคำตอบมาให้้อ่านกันเดี่ยวจะหายไปครับ หวังว่าคงมีประโยชน์กันนะครับ

แนะนำการทำเว็บ (ตอนที่ 2)

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


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

ประชาสัมพันธ์ อย่างไรดีกับเรื่องนี้

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


ทำไมต้องทำอย่างนี้ …….. ?

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


ทั้งสองต่างกันอย่างไร …… ?

ต้องทำความเข้าใจก่อนว่าระบบทั้งสองอย่าง ต่างกัน และเหมือนกัน รวมถึงเกี่ยวข้องกันอย่างแยกกันไม่ออกแล้วในปัจจุบัน ก่อนที่จะไปพูดถึงตรงนั้นเรามาทำความรู้จักกับ Search Engines ก่อน

Search Engine ( จาก http://www.krumontree.com/search/ : 07/27/2003 06:16:53 ) แต่ละแห่งมีวิธีการและการจัดเก็บฐานข้อมูลที่แตกต่างกันไปตามประเภทของ Search Engine ที่แต่ละเว็บไซต์นำมาใช้เก็บรวบรวมข้อมูล ดังนั้นการที่คุณจะเข้าไปหาข้อมูลหรือเว็บไซต์ โดยวิธีการ Search นั้น อย่างน้อยคุณจะต้องทราบว่า เว็บไซต์ที่คุณเข้าไปใช้บริการ ใช้วิธีการหรือ ประเภทของ Search Engine อะไร เนื่องจากแต่ละประเภทมีความละเอียดในการจัดเก็บข้อมูลต่างกันไป ที่นี้เราลองมาดูซิว่า Search Engine ประเภทใดที่เหมาะกับการค้นหาข้อมูลของคุณ

  • Keyword Index เป็นการค้นหาข้อมูล โดยการค้นจากข้อความในเว็บเพจที่ได้ผ่านการสำรวจมาแล้ว จะอ่านข้อความ ข้อมูล อย่างน้อยๆ ก็ประมาณ 200-300 ตัวอักษรแรกของเว็บเพจนั้นๆ โดยการอ่านนี้จะหมายรวมไปถึงอ่านข้อความที่อยู่ในโครงสร้างภาษา HTML ซึ่งอยู่ในรูปแบบของข้อความที่อยู่ในคำสั่ง alt ซึ่งเป็นคำสั่งภายใน TAG คำสังของรูปภาพ แต่จะไม่นำคำสั่งของ TAG อื่นๆ ในภาษา HTML และคำสั่งในภาษา JAVA มาใช้ในการค้นหา วิธีการค้นหาของ Search Engine ประเภทนี้จะให้ความสำคัญกับการเรียงลำดับข้อมูลก่อน-หลัง และความถี่ในการนำเสนอข้อมูลนั้น การค้นหาข้อมูล โดยวิธีการเช่นนี้จะมีความรวดเร็วมาก แต่มีความละเอียดในการจัดแยกหมวดหมู่ของข้อมูลค่อนข้างน้อย เนื่องจากไม่ได้คำนึงถึงรายละเอียดของเนื้อหาเท่าที่ควร แต่หากว่าคุณต้องการแนวทางด้านกว้างของข้อมูล และความรวดเร็วในการค้นหา วิธีการนี้ก็ใช้ได้ผลดี
  • Subject Directories การจำแนกหมวดหมู่ข้อมูล Search Engine ประเภทนี้ จะจัดแบ่งโดยการวิเคราะห์เนื้อหา รายละเอียด ของแต่ละเว็บเพจ ว่ามีเนื้อหาเกี่ยวกับอะไร โดยการจัดแบ่งแบบนี้จะใช้แรงงานคนในการพิจารณาเว็บเพจ ซึ่งทำให้การจัดหมวดหมู่ขึ้นอยู่กับวิจารณญาณของคนจัดหมวดหมู่แต่ละคนว่าจะจัดเก็บข้อมูลนั้นๆ อยู่ในเครือข่ายข้อมูลอะไร ดังนั้นฐานข้อมูลของ Search Engine ประเภทนี้จะถูกจัดแบ่งตามเนื้อหาก่อน แล้วจึงนำมาเป็นฐานข้อมูลในการค้นหาต่อไป การค้นหาค่อนข้างจะตรงกับความต้องการของผู้ใช้ และมีความถูกต้องในการค้นหาสูง เป็นต้นว่า หากเราต้องการหาข้อมูลเกี่ยวกับเว็บไซต์ หรือเว็บเพจที่นำเสนอข้อมูลเกี่ยวกับคอมพิวเตอร์ Search Engine ก็จะประมวลผลรายชื่อเว็บไซต์ หรือเว็บเพจที่เกี่ยวกับคอมพิวเตอร์ล้วนๆ มาให้คุณ
  • Metasearch Engines จุดเด่นของการค้นหาด้วยวิธีการนี้ คือ สามารถเชื่อมโยงไปยัง Search Engine ประเภทอื่นๆ และยังมีความหลากหลายของข้อมูล แต่การค้นหาด้วยวิธีนี้มีจุดด้อย คือ วิธีการนี้จะไม่ให้ความสำคัญกับขนาดเล็กใหญ่ของตัวอักษร และมักจะผ่านเลยคำประเภท Natural Language (ภาษาพูด) ดังนั้น หากคุณจะใช้ Search Engine แบบนี้ละก็ ขอให้ตระหนักถึงข้อบกพร่องเหล่านี้ด้วย

• การทำงานของ Search Engine •

การทำงานของ Search Engine จะประกอบไปด้วย 3 ส่วนหลักๆ คือ

  • Spider หรือ Web Robot จะเป็นตัวที่ทำหน้าที่เข้าสำรวจเว็บไซต์ต่างๆ แล้วดึงข้อมูลเหล่านั้นมาอัพเดทใส่ในรายการฐานข้อมูล ส่วนมาก Spider มักจะเข้าไปอัพเดทข้อมูลเป็นรายเดือน
  • ฐานข้อมูล (Database) เป็นส่วนที่เก็บรายการเว็บไซต์ ฐานข้อมูลที่ดีควรจะมีขนาดใหญ่เพียงพอที่จะรองรับกับการเติบโตของเว็บไซต์ในปัจจุบัน การออกแบบฐานข้อมูลที่ดีก็เป็นส่วนสำคัญเพราะถ้าฐานข้อมูลออกแบบมาทำงานช้าก็ทำให้การรอผลนานและจะไม่ได้รับความนิยมไปในที่สุด โปรแกรม Search Engine มีหน้าที่รับคำหรือข้อความที่ผู้ใช้งานป้อนเข้ามา แล้วเข้าค้นหาตามเว็บไซต์ต่างๆ ที่จัดเก็บไว้ในฐานข้อมูล จากนั้นก็จะรายงานผลเว็บไซต์ที่ค้นพบให้กับผู้ใช้ การสืบค้นด้วยวิธีนี้นอกจากจะต้องมีระบบการสืบค้นข้อมูลที่รวดเร็วและมีประสิทธิภาพแล้ว การกลั่นกรองผลที่ได้ เพื่อให้ตรงกับความต้องการของผู้ใช้ก็เป็นอีกส่วนหนึ่งที่สำคัญของการสืบค้นข้อมูล ดังนั้น การเลือกใช้เครื่องมือในการค้นหาจะต้องเข้าใจว่า ข้อมูลที่ต้องการค้นหานั้นมีลักษณะอย่างไร มีขอบข่ายกว้างขวางหรือแคบขนาดไหน แล้วจึงเลือกใช้เว็บไซต์ค้นหาที่ให้บริการตรงกับความต้องการของเรา

Web Directory นั้นหลายๆ ความรู้หลายๆ แห่ง หรือหนังสือต่างๆ อาจจะรวมเอาเข้าไปกับ Search Engines ก็ได้แต่ว่าถ้าจริงๆ แล้วไม่ใช่อย่างนั้นซะทีเดียว เพราะว่าระบบค้นหาที่โด่งดังมากอย่าง yahoo ก็เป็น Web directory มาก่อนแล้วค่อยมาปรับเปลี่ยนเป็น Search Engine ที่หลังครับ ทำไมถึงเป็นเช่นนั้น คือจริงๆ ในอดีตนั้นระบบการจัดการเว็บลงในฐานข้อมูลนั้นยังใช้คนในการใส่ข้อมูลของเว็บซึ่งได้จาก Meta Tag หรือ Description Tag ซึ่งเค้าจะเอาข้อมูลในส่วนนั้นที่เราได้ใส่ไว้มาทำการปรับปรุงและเอามาลงในฐานข้อมูล ซึ่งอย่าง yahoo ในตอนแรกๆ นั้นมีคนทำระบบและจัดการกับการเอาข้อมูลเข้าสู่ระบบเพียง 20 คนเท่านั้นทำให้การปรับปรุงของฐานข้อมูลทำงานช้าแต่ที่ทำให้มีความนิยมเพราะชื่อที่จำง่ายและมีการจัดการของหมวดหมู่ของเว็บต่างๆ ใน Directory ที่เข้าใจง่ายประกอบกับระบบ Web Robot หรือ Spider ในยุดเริ่มต้นยังไม่ฉลาดพอและทำงานได้ไม่ดีเท่าคนทำจึงทำให้ yahoo ได้รับความนิยมมากกว่าเพราะ ให้เนื้อหาที่ตรงกลุ่มกว่าและไม่ผิดพลาดเพราะผู้ที่จัดระบบคือมนุษย์นั้นเอง ซึ่งก็ไม่แปลกทำไมในอดีตคนทำเว็บจึง ไผ่ฝันมากที่จะมีชื่อของตัวเองอยู่ใน yahoo เพราะระบบอย่างนี้เองซึ่งในตอนนั้นถ้าเว็บใครได้อยู่ใน yahoo บอกได้เลยว่าเว็บนั้นสุดยอดละดีจริงๆ และ sanook ก็เป็นเช่นนั้นด้วยครับ เพราะว่าในยุคแรกๆ ของเว็บ sanook นั้นยังไม่มีใครทำเว็บและโปรแกรมการจัดการระบบต่างๆ ยังไม่ได้รับความนิยมประกอบกับการสร้างเว็บยังไม่เป็นที่นิยมอย่างในปัจจุบัน ทำให้ใครๆ ในตอนนั้นที่ทำเว็บใช้ช่วงแรกๆ นั้นหากันยากมากสำหรับเว็บไทยๆ แต่ก็อย่างที่บอก sanook มาได้จังหวะ เอาหลักการเป็นเดียวกับ yahoo มาทำแต่ตอนนั้นคนทำทำแค่คนเดียวครับ ทำให้ระบบก็ช้าๆ ซึ่งต่อมาก็ปรับเปลี่ยนมาจนมาเป็นในปัจจุบันนี้ครับ แต่ในปัจจุบันระบบ Search ในตอนนี้ที่มาตีระบบเก่าๆ กระจุยคงไม่พ้น google นั้นเอง ด้วยระบบ Robot และ Spider ที่ฉลาดโคตรๆ จนแทบจะเรียกได้ว่าไม่ต่างไปจากคนทำให้มันได้รับความนิยมากมายจนถีบ yahoo ร่วงไปจากบรรลังแห่งเจ้าพ่อการค้นหาข้อมูลบนอินเตอ์เน็ต และอีกอย่างตอนนั้นก็มีอีกเว็บที่เป็น Web Directory แท้ๆ และเป็นแบบดั่งเดิม นั้นคือ Open Directory Project นั้นเอง ( http://dmoz.org/ ) เป็นแบบ yahoo ในช่วงต้นแต่ด้วยความร่วมมือกันของ google และ dmoz ทำให้เกิดสารระบบ Both Search ขึ้นครับ ทำให้ตอนนี้เป็นระบบ Search ที่สมบูรณ์มากๆ และมันทำให้เป็นผลดีอย่างไรน่ะหรือ เพราะว่าระบบ google จะทำการค้นหาด้วย spider จากนั้นก็ทำผนวกเอา dmoz มาแสดงผลเพื่อให้ได้ผลออกมาทั้งส่องทางในแบบเดียวกับ yahoo ในปัจจุบันครับ


อ้าว!!! แล้วเล่ามาทั้งหมดมันเกี่ยวกันยังไง

ก่อนอื่นต้องบอกว่าเอาพื้นๆมาให้อ่านแล้ว จะเริ่มเข้าใจหลักการทำงาน เมื่อเข้าใจก็เหมือนหนังกำลังภายใน “ที่ว่ารู้เค้ารู้เรา รบร้อยครั้ง ชนะร้อยครั้ง”คือเมื่อเราเข้าใจแล้ว ด้วยเหตุที่ว่าในปัจจุบัน กว่า 50% ของผู้ใช้อินเตอร์เน็ตทั่วโลก นั้นใช้ google ซึ่งมันใช้โปรแกรม spider หรือ robot ให้การหาเว็บและเก็บข้อมูลต่างๆ มาทำให้เราก็ไม่ต้องไปลงฐานข้อมูลให้มัน เดี่ยวมันก็หาเจอเอง แต่ว่านานหน่อยซึ่งเรามีวิธีที่ง่ายๆ และได้ผล คือเราต้องพยายามหาเว็บที่เจ้า google นี้หาเจออยู่แล้ว แล้วทำการแลกลิ้งส์กับเค้าหรือติดต่อเค้าให้ลงลิงส์หรือ ทำยังไงก็ได้ให้ชื่อเว็บเราและที่อยู่เว็บเราอยู่ในเว็บนั้น แล้วเมื่อระบบ spider (ขอรวมไปถึง robot ด้วยจะได้ไม่เขียนบ่อยเมื่อย ครับ ^_^ ) กลับมาเพื่อปรับปรุงฐานข้อมูลให้ใหม่ ส่วนมากจะ 3 – 5 วันแล้วแต่การเขียนโปรแกรมและความสำคัญของเว็บนั้นๆ ก็จะดึงลิงส์ใหม่ๆ เข้าไปแล้วก็จะวิ่งไปตามลิงส์ใหม่ๆ เพื่อดูว่าเว็บที่เป็นลิงส์เหล่านั้นมีอะไรมั้ง และก็จะเทียบกับฐานข้อมูลตัวเองว่ามีเว็บนี้อยู่หรือไม่แล้วทำการบรรจุลงในฐานข้อมูลของระบบตนเอง นี่เป็นหลักการง่ายๆ แต่ว่าฉลาดมาก ทำให้ระบบ google นั้นทำงานบนระบบ Server อย่างน้อยๆ ก็ 6,000 (หกพัน) ตัวเป็นอย่างน้อย (ข้อมูลจาก pcworld ครับ )เพื่อเก็บฐานข้อมูลเว็บอันมหาศาลเหล่านั้นไว้ ซึ่งโดยส่วนมากในปัจจุบันนั้นระบบนี้ใช้กันแทบจะทุกๆ เว็บค้นหาข้อมูลชั้นนำอยู่แล้ว นั้นเอง ชึ่งเอาไปประยุกต์ใช้ได้ตลอดครับ


แต่ก็มีปัญหาอีกนั้นหล่ะว่าเว็บในไทยส่วนใหญ่ไม่ได้ใช้ระบบนี้ ทำยังไงดีหล่ะ ?

นี่คือปัญหาใหญ่เลยทีเดียว อันนี้คงต้องตอบแบบกำปั้นทุบดินแล้วกันว่า เราต้องไปลงทะเบียนเองในเว็บนั้น ซึ่งส่วนใหญ่แล้วปริมาณคนใช้งานนั้นเทียบกับตัวอื่นๆ ที่ได้กล่าวมานั้นยังคงน้อยอยู่ครับ …… ซึ่งถ้าเราใส่ Meta Tag และ Description Tag ไว้แล้วส่วนมากจะไม่มีปัญหาอยู่แล้วครับ ถ้าเว็บเรา ok เค้าจะใส่ให้เราเองโดยสมัครใจครับ …….

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

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

แนะนำการทำเว็บ (ตอนที่ 1)

ในสมัยก่อนนั้นการที่เราจะทำเว็บให้ออกมาสวยได้นั้นยากกว่าการพิมพ์งานบน MS. Word เสียอีกต้องมีการทำความเข้าใจในภาษา html ให้ดีเสียก่อน ซึ่งในตอนนั้นเหมือนกันหัดเขียนโปรแกรมโปรแกรมหนึ่งเลยทีเดียว แล้วถ้า ต้องการทำงานในลักษณะตอบโต้ได้ (CGI) มันทำได้ยากยิ่งเพราะว่ายังหาหนังสือที่เป็นภาษาไทยได้ยากมากและส่วนใหญ่ที่ทำกันตอนนั้นจะเป็นคนที่มุ่งมั่นอ่าน หนังสือภาษาอังกฤษ ซึ่งต้องขอบคุณอินเตอร์เน็ตที่ทำให้การอ่านหนังสือ พวก cgi และ html แบบภาษาอังกฤษทำได้ง่ายและฟรีโดยที่ไม่ต้องสั่งซื้อตามศูนย์หนังสือต่างๆ ในตอนนั้นมีคนกระโดดลงมาทำกันยังน้อย และส่วนใหญ่จะเป็นผู้ที่ทำงานด้านนี้อื่นๆ ในแขนงคอมฯพิวเตอร์มาก่อนมากกว่า ซึ่งเว็ปในสมัยนั้น ที่ดังและทำให้เราๆ ได้รู้จักและทำให้เกิดเหล่านักทำเว็ปรุ่นใหม่ๆ คือ Sanook.com แต่ก่อนที่เราจะพูดถึงนั้นเรามาพูดถึงเว็ปรุ่นพี่ที่ทำมานานและยังไม่เปลี่ยนแปลงคือเว็ป Pantip.com ที่เป็นเหมือนศูนย์รวมเว็ปบอร์ดที่ใหญ่ที่สุดใน ประเทศไทยและยังเป็นที่ที่มีอัตราการเข้าใช้บริการมากสุดอีกด้วย เว็ป Pantip.com ยังรักษาลักษณะขอเว็ปตั้งแต่ อดีตจนปัจจุบันได้ดี

ทำไมเราต้องทำเว็ป

นี่คือคำถามที่เราต้องตอบให้ได้ก่อนการทำเว็ปทั้งหมด เพราะว่าไม่อย่างงั้นก็เหมือนการออกเดินเรือที่ไร้จุดหมายครับ

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

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

เมื่อเราได้รูปแบบโดยรวมแล้ว เราก็มาดูว่าเราจะทำโดยใช้อะไร ถ้าใช้ html ธรรมดา ท่าทางจำไม่ได้แน่เพราะว่าการทำระบบข้อมูลลงเว็ปโดยผ่าน browser นั้นทำไม่ได้แน่ เราจึงต้องใช้ CGI (Common Gateway Interface) มาช่วยในที่นี้ ก็ต้องมาดูอีกหล่ะครับว่าเราจะใช้อะไรในภาษาเหล่านีเพราะว่ามีมากเหลือเกินไม่ว่าจะเป็น Perl , PHP , ASP , JSP , ฯลฯ แต่ในที่นี้เราใช้ฐานข้อมูลขนาดใหญ่ จะมาใช้ Perl + DBText คงไม่ได้ เพราะว่าเปลื้องการโปรแซสระบบมากเกินไป อาจทำให้ระบบล่มได้ง่าย หรือจะ Perl + MySQL ก็คงยากเพราะว่าต้องมีฝีมือในการทำและไม่เป็นที่นิยม ซึ่งถ้าระบบในการทำเว็ปคุณอิงในด้านของ Windows NT Family ก็คงจะเป็น ASP + ODBC (พวก MsSQL ในแนวๆ ของ Microsoft หรือ Oracle ครับ ) หรือถ้าเป็น UNIX (Linux , FreeBSD , Solaris) ก็คงจำเป็น PHP + MySQL ที่เป็นเหมือนของที่ทำมาคู่กันเลยทีเดียว เมื่อเราได้ลักษณะการทำงานของภาษาที่เขียนเว็ปแล้วก็มาถึงการออกแบบหล่ะครับ (ในที่นี้ผมจะไม่พูด ถึงการเขียนโปรแกรมเหล่านี้นะครับ เพราะว่าคงเข้าใจกันได้ถ้าศึกษาด้านนี้โดยตรงจากเว็ปหรือหนังสือครับ )

ต่อมาเราจะพูดถึงการออกแบบหน้าเว็ปกันสักนิด

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

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

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