Friday, September 4, 2009

คำว่า "Engine" ในทางคอมพิวเตอร์

  • อ่านบทควาทที่ www.blognone.com แล้วได้ความรู้ update สมองเยอะเลยครับ
  • เรื่องนี้เค้า ถาม - ตอบ กันเกี่ยวกับ Engine ในทางคอมพิวเตอร์
  • ชอบคำตอบของคุณ heart มากเลยอ่านแล้วเข้าใจง่ายไม่ต้องตีความอาไรมาก


คำว่า "Engine" ในทางคอมพิวเตอร์ มันคืออะไร? หมายความว่าอะไร?คะ ไม่ทราบจริงๆช่วยมาตอบหน่อยนะคะ

tags:

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

(ไม่รู้ว่าตั้งกระทู้ถูกหมวดหรือเปล่า ถ้าไม่ใช่ก็ขออภัยด้วยนะคะ เพิ่งสมัครเข้ามาอ่ะค่ะ) ***พอดีไปอ่าน Code ของคนๆนึง ที่เขียน app ด้วย java มาอ่ะค่ะ ไม่เข้าใจจริงๆ



Submitted by heart on 31 August, 2009 - 11:20. (#121965)

Engine คือเครื่องยนต์

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

เครื่องยนต์ก็จะมีความสามารถ และมีวิธีการทำงานของมัน

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

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

Engine เอง จะยังไม่สามารถใช้งานได้ เหมือนเครื่องยนต์ ที่ตั้งเอาไว้ก็เป็นเศษเหล็ก

เราต้องนำมันมาใช้งาน สาเหตุที่ต้องทำ Engine หรือเครื่องยนต์แยกไว้ เพราะว่า เราจะสามารถนำมันมาใช้งานได้หลากหลาย

ยกตัวอย่างเช่น Engine ของคูโบต้า สามารถนำมันมาเป็นรถอีแต๋นก็ได้ นำมาประกอบส่วนอื่นๆและใช้ไถนาก็ได้

หรือนำสายยางมาต่อ ทำเป็นเครื่องสูบน้ำเข้านา ก็ยังได้


Framework แปลตรงตัวคือ กรอบการทำงาน

Framework คือการที่เราตั้งกฏ ขึ้นมา ให้ทำงานได้เร็วขึ้น โดยไม่ต้องทำความเข้าใจเหตุผล (แต่ถ้าอยากเก่ง ก็ต้องทำความเข้าใจ)

เช่น การประกอบรถยนต์ เรารู้แค่ว่า เอาล้อ มาต่อตรงนี้ ตัวถังต่อตรงนี้ เครื่องยนต์ ต่อในห้องเครื่อง (เครื่องยนต์ก็คือ Engine ที่อธิบายไป)

เมื่อต่อครบ จะได้รถวิ่งได้ จะเห็นได้ว่า เราทำความเข้าใจกับเหตุผลน้อยมาก แค่ทำตามกฏ ก็จะได้รถออกมา

เปรียบเทียบกับ Framework ในทางการเขียนโปรแกรม ยกตัวอย่าง CakePHP เป็น Framework ในการเขียนเว็ปไซท์

เราแค่ ตั้งค่า ดาต้าเบส นำส่วนต่างๆไปวางไว้ที่โฟลเดอร์ที่กำหนดไว้ ตั้งชื่อไฟล์ตามกฏ โดยเราแทบจะไม่ต้องรู้เลยว่า แล้วทำไมต้องบังคับกรูตั้งชื่อไฟล์ด้วยวะ

แต่สุดท้าย เมื่อทำตามกฏที่ว่า จะได้เว็ปไซท์ออกมา ในเวลาที่รวดเร็ว




Submitted by mr_tawan on 26 August, 2009 - 20:10. (#121164)

Framework เหมือนเป็นการจำกัดกรอบคร่าว ๆ ของ Application ให้เราพัฒนาต่อยอดขึ้นไปครับ

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

Engine เหมือนเป็น Blackbox อันนึงที่ พอเราโยน Input เข้าไป (พร้อม Logic บางส่วน) มันจะสร้าง Output ออกมา อย่างเช่น ถ้าเราเขียนเกม ถ้าเราโยนกราฟิค พร้อมกับกำหนดกฎหลัก ๆ บางส่วนของเกมลงไปใน Engine มันก็จะสร้างเกมออกมาให้เราเล่นได้ (ซึ่งต่างกับการเขียนเกมด้วยการเขียนโปรแกรมที่ต้องเขียนมันหมดทุกอย่าง ทั้งวิธีการแสดงผล วิธีการรับอินพุต ฯลฯ)

จะมองว่า Engine เป็น Application ที่เกือบจะเสร็จแล้ว ขาดแต่ Content บางอย่างที่จะทำให้ทำให้ Application ออกมาแตกต่างกัน

... อ่าน ๆ ไปแล้วก็งง ๆ อันที่จริง ๆ ผมว่ามันก็ก้ำกึ่ง ๆ กันนะ ... ผมว่ามันแตกต่างกันที่ความสมบูรณ์ของ Lib มากกว่า

Framework เหมือนจะเป็นแค่โครงที่กำหนดวิธีการคร่าว ๆ เรายังต้องสร้างอะไรเข้าไปต่อเติมอีกเยอะกว่าจะออกมาเป็นโปรแกรมได้ ในขณะที่ Engine เนี่ย มันเหมือนเกือบจะเสร็จแล้ว แค่หาอะไรใส่เข้าไปอีกหน่อยก็สมบูรณ์เป็นโปรแกรมละ

ทั้งนี้ทั้งนั้น นิยามตรงนี้มันก็จะต่างกันไปในแต่ละคน (คำว่า Framework มีนิยามค่อนข้างตายตัว แต่ Engine เนี่ยจะหลากหลายกันไปหน่อย) ดังนั้นก็คงมีคนที่เห็นไม่ตรงกับผมครับ (อย่างข้างบนนี้ก็มีคนนึงล่ะ)


No comments:

Post a Comment