คำว่า "Engine" ในทางคอมพิวเตอร์ มันคืออะไร? หมายความว่าอะไร?กันแน่คะ
และ ในการเขียน โปรแกรมภาษาคำว่า "Engine" มันคืออะไร หมายความว่าอะไร? คะ ช่วยอธิบายให้กระจ่างหน่อยนะคะ ไม่ทราบจริงๆ ค่ะ ไปถามคนอื่นก็ไม่ได้คำตอบที่กระจ่าง
(ไม่รู้ว่าตั้งกระทู้ถูกหมวดหรือเปล่า ถ้าไม่ใช่ก็ขออภัยด้วยนะคะ เพิ่งสมัครเข้ามาอ่ะค่ะ)
***พอดีไปอ่าน Code ของคนๆนึง ที่เขียน app ด้วย java มาอ่ะค่ะ ไม่เข้าใจจริงๆ
ขอบคุณทุกท่านที่ช่วยมาให้คำตอบนะคะ
ในทาง เกมโปรแกรมมิ่ง นะครับ
เอนจิ้น จะหมายถึง ไลบรารี่กองหนึ่ง และโปรแกรมที่เป็น Tools สำหรับการสร้าง หรือแก้ไขข้อมูล ให้เป็นฟอร์แม็ทที่เหมาะกับไลบรารี่ตัวนั้นๆ
เช่น เอนจิ้นเกม 3D มักจะมี Tools สำหรับสร้างไฟล์ Map ที่เอาโมเดลต่างๆในเกม มาจัดวางเป็นฉาก แล้วเซฟเป็นไฟล์เฉพาะ และมีไลบรารี่สำหรับ อ่านไฟล์ฉากดังกล่าว มาแสดงผลเป็นฉากในเกม
อันนี้เฉพาะ เกมเอนจิ้นนะครับ อาจจะมีความหมายอื่นอีกซึ่งผมไม่รู้
My Blog
Engine กับ Framework มันต่างกันมากแค่ไหน หรือเหมือนกันตรงไหนบ้างครับ
Framework เหมือนเป็นการจำกัดกรอบคร่าว ๆ ของ Application ให้เราพัฒนาต่อยอดขึ้นไปครับ
นึกถึงตอนเอาโครงลวดมาพอกด้วยดินน้ำมัน ไอ้ตัวหุ่นที่ปั้นขึ้นมาจะถูกบังคับโดยโครงให้มีลักษณะประมาณนึง แต่ว่าวิธีการพอกดินน้ำมันให้มันเป็นหุ่นจะทำให้หุ่นแต่ละตัวดูแตกต่างกันครับ
Engine เหมือนเป็น Blackbox อันนึงที่ พอเราโยน Input เข้าไป (พร้อม Logic บางส่วน) มันจะสร้าง Output ออกมา อย่างเช่น ถ้าเราเขียนเกม ถ้าเราโยนกราฟิค พร้อมกับกำหนดกฎหลัก ๆ บางส่วนของเกมลงไปใน Engine มันก็จะสร้างเกมออกมาให้เราเล่นได้ (ซึ่งต่างกับการเขียนเกมด้วยการเขียนโปรแกรมที่ต้องเขียนมันหมดทุกอย่าง ทั้งวิธีการแสดงผล วิธีการรับอินพุต ฯลฯ)
จะมองว่า Engine เป็น Application ที่เกือบจะเสร็จแล้ว ขาดแต่ Content บางอย่างที่จะทำให้ทำให้ Application ออกมาแตกต่างกัน
... อ่าน ๆ ไปแล้วก็งง ๆ อันที่จริง ๆ ผมว่ามันก็ก้ำกึ่ง ๆ กันนะ ... ผมว่ามันแตกต่างกันที่ความสมบูรณ์ของ Lib มากกว่า
Framework เหมือนจะเป็นแค่โครงที่กำหนดวิธีการคร่าว ๆ เรายังต้องสร้างอะไรเข้าไปต่อเติมอีกเยอะกว่าจะออกมาเป็นโปรแกรมได้ ในขณะที่ Engine เนี่ย มันเหมือนเกือบจะเสร็จแล้ว แค่หาอะไรใส่เข้าไปอีกหน่อยก็สมบูรณ์เป็นโปรแกรมละ
ทั้งนี้ทั้งนั้น นิยามตรงนี้มันก็จะต่างกันไปในแต่ละคน (คำว่า Framework มีนิยามค่อนข้างตายตัว แต่ Engine เนี่ยจะหลากหลายกันไปหน่อย) ดังนั้นก็คงมีคนที่เห็นไม่ตรงกับผมครับ (อย่างข้างบนนี้ก็มีคนนึงล่ะ)
ในทาง distributed system มันหมายถึงกลไกที่ทำงานอย่างต่อเนื่องแบบ preemption ที่สามารถประมวลผลหรือดำเนินงานตาม flow ของงานอื่นๆ (เช่น โปรแกรมอื่นๆ)
อาทิเช่น คำว่า Compute Engine อันเป็นตัวอย่างที่ใช้บ่อยมากสำหรับเขียนโปรแกรมแบบ client/server ซึ่ง Compute Engine ที่ทำงานบนฝั่ง server สามารถรับโปรแกรมใดๆจากฝั่ง client แต่โปรแกรมนั้นๆต้องพัฒนาหรือมีีีรูปแบบถูกต้องตามที่ผู้พัฒนา engine กำหนดไว้ (เช่น implement อินเทอร์เฟซที่กำหนด) แล้ว server สามารถประมวลโปรแกรมดังกล่าวได้
ผมเจอใน wikipedia ก็มีอธิบายไว้นิดหน่อยในหัวข้อ Engine (computer science) และยังมีคำว่า engine อื่นๆอีกจำนวนหนึ่ง จาก Engine (disambiguation) เช่น Game Engine อย่างที่คุณ Thaina อธิบายไว้แล้ว เป็นต้น
My Blog / hi5 / Facebook / Follow me
My Blog
ไปอ่าน Code ของคนอื่นที่ ทำ app เขียนโดย java มาอ่ะค่ะ
แล้วก็เป็น client/server อย่างที่คุณ javaboom บอกไว้เลยอ่ะค่ะ
เห็น ชอบเรียกกัน engine จะได้รู้สักทีว่าคืออะไร
แปลตรงๆ ว่า เครื่องยนต์ ครับ :P
โปรแกรมที่มีเครื่องยนต์เดียวกัน ก็จะวิ่งเร็วพอๆกัน ใช้พลังงานเหมือนๆกัน ต่างกันแค่รูปร่างภายนอก กะ คอนโซล เฉยๆ
เช่น เกม Kingdom underfire ใช้ Engine ของเกม Starcraft จะเห็นว่าตัวเกมคล้ายกันมาก
เช่น มวยสิงอี้ ซึ่งมีท่าร่างมากมาย พอพัฒนาเอาแต่ Engine ออกมาไม่เอาท่าร่าง เลยกลายเป็นมวย อี้เฉวียน
ปล อธิบายมั่วๆ ไถๆ ไป 5555 อย่าคิดมากนะเอาฮา
Engine คือเครื่องยนต์
เครื่องยนต์ ก็จะประกอบไปด้วยส่วนเล็กๆน้อยๆ เช่นฟันเฟืองต่างๆ ระบบเล็กๆน้อยๆ หลายๆระบบรวมกัน โดยจะผลิตในบริษัทเดียว หรือนำเข้าชิ้นส่วนจากต่างประเทศก็ได้
เครื่องยนต์ก็จะมีความสามารถ และมีวิธีการทำงานของมัน
Engine ในทางการเขียนโปรแกรม ก็เช่นกัน มันคือโค้ด ที่เปรียบได้กับเครื่องยนต์ มีส่วนเล็กๆน้อยๆ ที่ทำงานร่วมกีัน ประสานงานกันอย่างมีประสิทธิภาพ โดยชิ้นส่วนนั้น จะเขียนขึ้นมาเองทั้งหมด หรือนำของคนอื่นมาใช้ก็ได้เหมือนเครื่องยนต์เลย (นำมาใช้ภายใต้การอนุญาต ของผู้เป็นเจ้าของ โค้ดนั้นๆ)
ยกตัวอย่างเช่น Engine ของเกม ก็จะประกอบไปด้วย การแสดงผล การเดิน การยิง ซึ่งถูกเขียนไว้ให้ทำงานได้อย่างดี และมีประสิทธิภาพแล้ว ง่ายต่อการนำไปใช้งาน
Engine เอง จะยังไม่สามารถใช้งานได้ เหมือนเครื่องยนต์ ที่ตั้งเอาไว้ก็เป็นเศษเหล็ก
เราต้องนำมันมาใช้งาน สาเหตุที่ต้องทำ Engine หรือเครื่องยนต์แยกไว้ เพราะว่า เราจะสามารถนำมันมาใช้งานได้หลากหลาย
ยกตัวอย่างเช่น Engine ของคูโบต้า สามารถนำมันมาเป็นรถอีแต๋นก็ได้ นำมาประกอบส่วนอื่นๆและใช้ไถนาก็ได้
หรือนำสายยางมาต่อ ทำเป็นเครื่องสูบน้ำเข้านา ก็ยังได้
Framework แปลตรงตัวคือ กรอบการทำงาน
Framework คือการที่เราตั้งกฏ ขึ้นมา ให้ทำงานได้เร็วขึ้น โดยไม่ต้องทำความเข้าใจเหตุผล (แต่ถ้าอยากเก่ง ก็ต้องทำความเข้าใจ)
เช่น การประกอบรถยนต์ เรารู้แค่ว่า เอาล้อ มาต่อตรงนี้ ตัวถังต่อตรงนี้ เครื่องยนต์ ต่อในห้องเครื่อง (เครื่องยนต์ก็คือ Engine ที่อธิบายไป)
เมื่อต่อครบ จะได้รถวิ่งได้ จะเห็นได้ว่า เราทำความเข้าใจกับเหตุผลน้อยมาก แค่ทำตามกฏ ก็จะได้รถออกมา
เปรียบเทียบกับ Framework ในทางการเขียนโปรแกรม ยกตัวอย่าง CakePHP เป็น Framework ในการเขียนเว็ปไซท์
เราแค่ ตั้งค่า ดาต้า้เบส นำส่วนต่างๆไปวางไว้ที่โฟลเดอร์ที่กำหนดไว้ ตั้งชื่อไฟล์ตามกฏ
โดยเราแทบจะไม่ต้องรู้เลยว่า แล้วทำไมต้องบังคับกรูตั้งชื่อไฟล์ด้วยวะ
แต่สุดท้าย เมื่อทำตามกฏที่ว่า จะได้เว็ปไซท์ออกมา ในเวลาที่รวดเร็ว
+1
ขอบคุณมากครับ กระจ่างใจมากๆ
อ่า ผมขออนุญาตนำข้อความนี้ไปลงในที่อื่นด้วยนะครับ เป็นประโยชน์มากเลย
หากว่าไม่ได้ ช่วยบอกด้วยนะครับ
ได้ครับ ยินดี
+1 เห็นภาพ
Oakyman.com
ขอขอบคุณ พี่ๆทุกท่านที่มาให้ความกระจ่างนะคะ