ตัวอธิบาย 'Engine' ถูกโยนทิ้งไปมากมาย: เอ็นจิ้นกราฟิก, เครื่องยนต์ RegEx, AI engine ฯลฯ แต่จริงๆแล้วอะไรที่ทำให้ชิ้นส่วนของซอฟต์แวร์เป็น Engine? ออกแบบอินพุต / เอาต์พุตวัตถุประสงค์ขนาด?
ตัวอธิบาย 'Engine' ถูกโยนทิ้งไปมากมาย: เอ็นจิ้นกราฟิก, เครื่องยนต์ RegEx, AI engine ฯลฯ แต่จริงๆแล้วอะไรที่ทำให้ชิ้นส่วนของซอฟต์แวร์เป็น Engine? ออกแบบอินพุต / เอาต์พุตวัตถุประสงค์ขนาด?
คำตอบ:
เครื่องยนต์จะเป็นสิ่งที่ "อยู่ใต้ฝากระโปรง" ดังนั้นต้องพูด มันไม่ได้หรืออย่างน้อยก็แทบจะมองเห็นได้โดยผู้ใช้ ยกตัวอย่างเช่นเอ็นจิ้นกราฟิกส์ขับเคลื่อนการคำนวณการเรนเดอร์ทั้งหมด แต่ส่งผ่านการเปลี่ยนแปลงเหล่านั้นไปยังสภาพแวดล้อมจริงเพื่อทำโมเดล อินพุต: คณิตศาสตร์ เอาท์พุต: สีสวย เอ็นจิ้นอาจมีตัวแปรการทำงานที่แตกต่างจากอินเทอร์เฟซระดับสูง ยกตัวอย่างเช่นในตัวอย่างก่อนหน้านี้มันใช้ข้อมูลตัวเลขดิบเพื่อจัดการกับกราฟิกโดยไม่ต้องกังวลว่าบางสิ่งจะเป็นเงาหรือพื้นผิวทั้งหมดนี้จะถูกสรุปในสมการและการดำเนินการเมทริกซ์ที่จะดำเนินการโดยเอ็นจิ้นนั้น คิดว่าเอ็นจิ้นเป็น "เคอร์เนล" ของระบบที่กำหนดในขณะที่ที่เหลือจะเหมือนกับ "เชลล์" มากกว่า
หากต้องการใช้โลกแห่งความเป็นจริง CS101 คล้ายคลึงกันเครื่องยนต์ก็เหมือนกับเครื่องยนต์ในรถยนต์ มันใช้สองอินพุตอากาศและก๊าซ จากนั้นจะผ่านเข้าไปในห้องโดยที่กระแสไฟฟ้าจะถูกใช้เพื่อสร้างการเชื่อมอาร์กที่เล็กที่สุดในโลก สิ่งของก็ระเบิด สิ่งนี้ทำให้เกิดสองเอาต์พุตไอเสียและคลื่นความดันซึ่งขับเคลื่อนลูกสูบ ส่วนที่เหลือจะถูกถ่ายโอนไปยังการเคลื่อนไหวของล้อโดยเพลาขับต่างๆและเช่นกัน ดังนั้นเครื่องยนต์คือเครื่องยนต์และตัวรถเองก็คือเปลือก คุณสามารถใช้เครื่องยนต์รถยนต์เพื่อจุดประสงค์ที่แตกต่างกันเช่นขับเครื่องกำเนิดไฟฟ้าเพื่อผลิตกระแสไฟฟ้าหรือโรงสีเพื่อบดเมล็ดพืช คุณสามารถใช้ปัจจัยการผลิตที่แตกต่างกันหากเครื่องยนต์มีการเคลือบและเพื่อจัดการสิ่งต่าง ๆ เช่นเอทานอลหรือไบโอดีเซล
เพื่อสรุปผล Engine คือซอฟต์แวร์ที่ไม่สามารถแยกได้ มันทำหน้าที่เป็นแรงจูงใจสำหรับชิ้นส่วนของซอฟต์แวร์นั้น แต่โดยทั่วไปแล้วจะมีการโต้ตอบน้อยมากหากกับโลกภายนอก เครื่องยนต์จำนวนมากอาจทำงานร่วมกันเพื่อสร้างผลลัพธ์ที่ให้บริการฟรีหรืออาจถูกวางท่อเข้าด้วยกันตามต้องการ เอ็นจิ้นไม่ได้ทำสิ่งต่าง ๆ ที่เกี่ยวข้องกับประสบการณ์ของผู้ใช้ในแง่สุนทรียะโดยตรง แต่ผลักดันประสบการณ์เหล่านั้นไม่น้อยไปกว่าการกระตุ้นดาต้าโฟลว์และตอบสนองได้ดีพอที่จะทำให้แอปพลิเคชันมีประสิทธิภาพดีขึ้น
คำนาม / ˈenjən /
เครื่องยนต์, พหูพจน์
เครื่องที่มีชิ้นส่วนที่เคลื่อนไหวซึ่งแปลงพลังงานเป็นการเคลื่อนไหว
สิ่งที่เป็นตัวแทนหรือเครื่องมือของกระบวนการเฉพาะ
# 1 เป็น semantic equivelant engine
ในแง่ของซอฟต์แวร์ที่ทำให้บางสิ่งเกิดขึ้น 3D Graphics Engine รับอินพุตและแปลงสิ่งนั้นให้เคลื่อนไหวบนหน้าจอ เอ็นจิน regex รับอินพุตและแปลงไปเป็นเอาต์พุตอื่น
# 2 ก็เหมือนใช้ประโยคเครื่องมือของการเปลี่ยนแปลง ความหมายนี้สามารถใช้กับซอฟต์แวร์ได้เช่นกัน
ซอฟต์แวร์engines
เป็นมากกว่าเฟรมเวิร์กและไลบรารีที่ทำสิ่งต่าง ๆ อย่างอดทน เอ็นจิ้นของซอฟต์แวร์ทำหน้าที่ของตัวเองตามอินพุตพวกมันไม่ได้อยู่เฉยๆและมักจะมีrun loop
การประมวลผลด้วยความตั้งใจของตัวเอง
ในความคิดของฉันคำตอบที่ใกล้เคียงที่สุดคือคำตอบที่บอกว่าเป็นสิ่งทางการตลาด
ลองคิดดูว่าการใช้คำในบริบทนี้มาจากไหน
แน่นอนว่ารถยนต์หรือเครื่องยนต์เจ็ทไม่ได้ถูกเรียกเช่นนั้นเพราะพวกมันรับอินพุตและสร้างเอาต์พุตบางอย่าง ถ้าเป็นแบบนั้นไม่ได้มีแค่ฟังก์ชั่น แต่มีหลายสิ่งในชีวิตที่เป็นเครื่องยนต์
ในความคิดของฉันมันไม่ใช่เรื่องบังเอิญโดยที่วัวนั้นไม่ใช่เครื่องยนต์ไม่ใช่การพูดเชิงเทคนิคและไม่ใช่การพูดอย่างมีสติ
เครื่องยนต์ใช้พลังงานหลายประเภทและเปลี่ยนเป็นการเคลื่อนที่ (เช่นพลังงานชนิดพิเศษ)
ทำไมเราใช้ซอฟต์แวร์นี้? ฉันจะบอกว่าการเดาที่เหมือนจริงที่สุดก็เพราะว่ามันฟังดูเท่ห์ เหตุใดเราจึงเรียกโปรแกรมเมอร์ 'สถาปนิก' บางคน เหตุผลเดียวกันถ้าคุณถามฉัน
อีกเหตุผลหนึ่งก็คือผู้เขียนโปรแกรมส่วนใหญ่มักใช้คำอุปมาอุปมัยเพื่ออธิบายส่วนต่าง ๆ ของซอฟต์แวร์ดังนั้นพวกเขาจึงสามารถเข้าใจได้ง่ายกว่า
ลางสังหรณ์ของฉันคือการใช้คำอุปมาอุปมัยในทางที่ผิดเป็นการกระทำที่ทำให้โดเมนแอปพลิเคชันของคุณเต็มไปด้วยพวกเขา ฉันคิดว่ามันจะมีประโยชน์เมื่อพูดคุยกับลูกค้าหรือคนที่ไม่รู้จักหรือสนใจเกี่ยวกับการเขียนโปรแกรม นอกเหนือจากนั้นแผนภูมิการไหลและไดอะแกรมที่เรียบง่ายก็ใช้งานได้
Engine เป็นสิ่งที่จะเข้าบางกระบวนการที่ป้อนข้อมูลและส่งมอบสิ่งที่เป็นเอาท์พุท โดยคำจำกัดความนี้เอ็นจิ้น CMS เป็นส่วนที่สร้างการตอบสนอง HTTP ได้ทันทีตามการป้อนข้อมูล เอ็นจิ้นฐานข้อมูลคือสิ่งที่ต้องใช้แบบสอบถามดึงแผนการดำเนินการและดำเนินการและส่งคืนผลลัพธ์
เทคนิคการพูดแม้แต่วัวก็เป็นเครื่องยนต์ชนิดหนึ่ง ต้องใช้หญ้าประมวลผลและส่งนม
อย่าลืมว่าคำว่า engine ถูกใช้ในวิศวกรรมเครื่องกลมากกว่าและมันก็เหมือนกันทุกประการ
อีกแง่มุมของเครื่องยนต์คือการเป็นแกนหลักของระบบ ตัวอย่างเช่นโปรแกรมฐานข้อมูลเป็นแกนหลักของ RDMS ใด ๆ อย่างไรก็ตาม IDEs เพื่อเชื่อมต่อกับเอ็นจิ้นนั้นในขณะที่รับอินพุตและส่งคืนผลลัพธ์จะไม่ถือเป็นเอ็นจิ้น
IMHO เอ็นจิ้นเป็นอีกคำหนึ่งสำหรับระบบย่อยโมดูลหรือไลบรารี IE - องค์ประกอบอย่างน้อยหนึ่งองค์ประกอบได้รับการออกแบบมาเพื่อการทำงานร่วมกัน
เอ็นจิ้นนั้นเป็นซอฟต์แวร์ที่สามารถขยายเพื่อสร้างบางสิ่งได้
ตัวอย่างเช่นในเกมคุณจะได้ยินเกี่ยวกับเครื่องมือเกม 'บางอย่าง' มาก ซึ่งหมายความว่าซอฟต์แวร์เฉพาะได้รับการแก้ไขและขยายเพื่อสร้างเกมที่ไม่เหมือนใครโดยสิ้นเชิง
ที่งานของฉันคำว่าหมายถึง "ไฟล์รหัสเดียวในรูปแบบที่XEngine.cs
มีหลายคลาสในไฟล์รหัสนั้นซึ่งทั้งหมดไม่มีอะไรเลยนอกจากวิธีการคงที่" ฉันโยนข้างในเล็กน้อยทุกครั้งที่ฉันมองมัน อาจรวมถึงโมดูล VB6
โดยส่วนตัวแล้วฉันจะไม่ใช้คำศัพท์นี้มันคลุมเครือและไม่มีความหมาย (เว้นแต่ฉันคิดว่าคุณกำลังเขียนซอฟต์แวร์ที่จำลองรถยนต์หรือเกมแข่งรถ) ในกรณีส่วนใหญ่ มันก็เหมือนเก่า "ผู้จัดการ" เรียนของสมัยก่อน - ชื่อบอกคุณไม่มีอะไรอื่นที่ไม่ใช่ "นี้ไม่มากของสิ่งที่เป็น" SOLID
และมักจะหมายความว่ามันเป็นละเมิด