Posted by: thitipat | กุมภาพันธ์ 2, 2007

ตำราพิชัยสงคราม (Design Pattern)

ตำราพิชัยสงครามนี้เป็นตำรายุทธวิธีการรบที่แพร่หลายเป็นอย่างมากในประเทศจีนว่ากันว่าปราชญ์ชาวจีน นามว่า ซุนวู(Sun Tzu) เป็นผู้เขียนขึ้นมาเนื่องจากเป็นตำราที่เขียนขึ้นมาเมื่อประมาณ 400-600 ปี ก่อนคริสตกาล จึงทำให้ไม่มีหลักฐานมากนักว่า ซุนวู นั้นมีตัวตนจริงรึเปล่า ​ปัจจุปันยุทธศาสตร์​ใน​ตำ​รา​ได้​ถูกประยุกต์​ ​ใช้​อย่างกว้างขวาง​ใน​วงการธุรกิจ​และ​การเมือง


ข้อมูลจาก http://th.wikipedia.org/

สำหรับการพัฒนาซอฟต์แวร์นั้นก็มีสิ่งที่เรียกว่า “ตำราพิชัยสงคราม” เช่นกัน ซึ่งมีชื่อเรียกว่า “Design Pattern” หลักการอาจจะ ไม่เหมือนกันกับตำราของซุนวูทีเดียวนักแต่ส่วนที่เหมือนกัน ก็คือ “รูปแบบ” ซึ่งถ้าเรามองว่า ปัญหา = สงคราม และตำราของซุนวูนั้นเปรียบเสมือนรูปแบบ ที่ใช้การรบแล้วล่ะก็ Design pattern ก็เป็นเปรียบเสมือนรูปแบบที่ใช้ในการแก้ปัญหา เช่นกัน

Design pattern นั้นเกิดมาจากปัญหาทางด้านวิศวกรรมซึ่งศาสตร์ทางด้านวิศวกรรมต่างๆ นั้นพัฒนาไปอย่างมากแต่มีวิศวกรรมทางด้านหนึ่งพัฒนาไปช้ามากเมื่อเทียบกับวิศวกรรมอื่นๆ ซึ่งนั่นก็คือ วิศวกรรมซอฟต์แวร์ ปกติแล้วการออกแบบทางด้านวิศวกรรมที่ดีนั้นมีเป้าหมายอยู่ที่ว่า

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

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

Design pattern เป็นการรวบรวมปัญหาเกี่ยวกับการออกแบบซอฟต์แวร์ที่เกิดขึ้นบ่อยๆ และแนวทางการแก้ไขปัญหานั้นโดยต้องเริ่มมาจากการ Designที่ดี จึงจะทำให้ปัญหานั้นๆ ถูกแก้ไขไปได้ และไม่เป็นการสร้างปัญหาใหม่ๆ เพิ่มขึ้นให้กับซอฟต์แวร์

นักพัฒนาซอฟต์แวร์ทุกคนก็ควรจะรู้เรื่อง Design pattern ด้วยเพื่อเพิ่มประสิทธิภาพในซอฟต์แวร์ โอกาสหน้าจะมาเล่าเรื่อง Pattern แบบต่างๆ ให้ฟังครับแต่ถ้าใครสนใจจะอ่านล่วงหน้าก่อนก็ สามารถอ่านได้ ที่นี่ ครับ (ภาษาอังกฤษนะ ^^)

Responses

“ตำราของซุนวูนั้นเปรียบเสมือนรูปแบบ ที่ใช้การรบแล้วล่ะก็ Design pattern ก็เป็นเปรียบเสมือนรูปแบบที่ใช้ในการแก้ปัญหา เช่นกัน”

ผมว่าเป็นตรรกะที่ค่อนข้างขัดแย้งกันนะครับ
สงครามเป็นศาสตร์แห่งการทำลายล้าง
การโปรแกรมเป็นการสร้างสรรค์

design pattern น่าจะเรียกเป็นหลักการพัฒนา มากกว่าเป็นตำราพิชัยสงคราม

ความคิดผม design pattern เป็นศาสตร์แห่งสงครามครับ นั่นคือสงครามระหว่างโปรแกรมเมอร์กับปัญหา

ผมอ่าน Design Pattern ซุนวูผมก็อ่าน สามก๊ก 5 รอบ สามจบคบไม่ได้
5 จบไม่มีพูดถึง เจอกันแน่

ประโยคนี้คุ้นๆ ?

ขอแสดงความคิิดเห็นเพิ่มเติมครับ

ผมคิดว่า การใช้คำว่า สงคราม ความหมายโดยตรงของคำนี้ก็คือ การรบกัน การทำศึก แต่การรบกัน การทำศึกกัน น่าจะเำกิดจากคู่กรณีที่เป็น “สิ่งมีชีวิต” กับ “สิ่งมีชีวิต” ไม่ว่าจะเป็นการเกี่ยวข้องโดยตรง หรือโดยอ้อมก็ตาม

อยากฟังความคิดเห็นคุณ thitipat ว่า
เหตุผลที่คิดเปรียบเทียบว่า “สงคราม = ปัญหาการพัฒนา software” คืออะไร?

ขอบคุณครับ

ปัญหามันก็คือการขัดแย้งอย่างหนึ่งนะครับระหว่างเรากับข้อผิดพลาดที่เกิด สงครามก็คือการขัดแย้งอีกอย่างหนึ่งระหว่างคนกับคน ผมก็มองจุดร่วมของมันแล้วก็สรุปไปตามนั้น

ขอบคุณครับ

สงคราม = ปัญหา

ู^
อันบนลบไปเลยนะครับ โพสต์ไม่ติด-_-”

ขอบคุณครับ

สงคราม = ปัญหา

ขอบคุณครับ
สงคราม = ปัญหา

ขอบคุณครับ
สงคราม = ปัญหา ==ความขัดแย้ง
ตำราพิชัยสงคราม = Design Pattern ==รูปแบบการจัดการความขัดแย้ง
ถ้ามองด้วยตรรกะแบบนี้
ก็เห็นด้วยครับ
อยากได้ข้อมูลเพิ่มเติม
คือการเปรียบเทียบระหว่าง “รูปแบบ”
ที่ในบทความบอกว่าเป็นส่วนที่เหมือนกัน
ของตำราพิชัยสงครามซุนวู กับ Design Pattern
เพราะน่าจะมีในส่วนรายละเอียดของทั้งสองอย่าง
ที่มีความคล้ายคลึงกันและจะทำให้เห็นภาพความเหมือนกันชัดเจนขึ้น

Leave a response

Your response:

หมวดหมู่