Apa yang membuat perangkat lunak menjadi Engine? [Tutup]

39

Deskriptor 'Mesin' sering dilemparkan: mesin grafis, mesin RegEx, mesin AI, dll. Tetapi apa yang sebenarnya membuat perangkat lunak menjadi Mesin? Desain, Input / Output, Tujuan, Ukuran?

Spacebob
sumber
62
Bagian pemasaran.
Oded
2
@Oded: istilah 'mesin' biasanya digunakan oleh programmer sendiri. Cobalah untuk menemukan alternatif dan Anda akan tahu sebabnya.
MaR
2
mesin adalah apa yang membuat roda saya tidak ingin diciptakan kembali
Flexo
@Flexo, jadi - perpustakaan?
Vorac

Jawaban:

33

Mesin akan menjadi sesuatu yang "di bawah kap", begitu untuk berbicara. Itu tidak, atau setidaknya sangat jarang, terlihat oleh pengguna akhir. Mesin grafis, misalnya, menggerakkan semua perhitungan render tetapi meneruskan perubahan itu ke lingkungan aktual untuk dimodelkan. Input: matematika. Output: warna cantik. Mesin mungkin juga memiliki variabel kerja yang sangat berbeda dari antarmuka tingkat yang lebih tinggi. Misalnya, dalam contoh sebelumnya, ia menggunakan data numerik mentah untuk memanipulasi grafik tanpa khawatir tentang apakah sesuatu itu bayangan atau tekstur, semua itu diabstraksi ke dalam persamaan dan operasi matriks yang akan dilakukan oleh mesin itu. Anggap Mesin sebagai "Kernel" dari sistem yang diberikan sementara sisanya akan lebih seperti "Shell".

Untuk menggunakan dunia nyata, analogi CS101, sebuah mesin sama seperti mesin mobil. Dibutuhkan dua input, udara dan gas. Kemudian melewati mereka ke dalam ruang, dimana listrik digunakan untuk menghasilkan penggunaan pengelasan busur terkecil di dunia. Barang-barang kemudian meledak. Ini menghasilkan dua output, knalpot dan gelombang tekanan yang menggerakkan piston. Sisanya dipindahkan ke gerakan roda oleh berbagai poros penggerak dan semacamnya. Jadi Mesin adalah mesin dan mobil itu sendiri adalah cangkang. Anda dapat menggunakan mesin mobil untuk tujuan yang berbeda, katakanlah menggerakkan generator untuk listrik atau pabrik untuk menggiling gandum. Anda dapat menggunakan input yang berbeda jika Mesin memiliki lapisan dan semacamnya untuk menangani hal-hal seperti etanol atau biodiesel.

Singkatnya, Engine adalah perangkat lunak yang biasanya tidak ditemukan dalam isolasi. Ini bertindak sebagai kekuatan pendorong untuk perangkat lunak itu tetapi biasanya berinteraksi sangat sedikit jika sama sekali dengan dunia luar. Beberapa mesin dapat bekerja bersama untuk menghasilkan output gratis atau mungkin disatukan bersama sesuai kebutuhan. Sebuah mesin tidak melakukan hal-hal yang berkaitan dengan pengalaman pengguna secara estetika secara langsung tetapi mendorong pengalaman-pengalaman itu dengan memotivasi aliran data dan menjadi cukup responsif untuk memungkinkan kinerja aplikasi yang baik.

Insinyur Dunia
sumber
9
Jadi driver adalah alat yang mengendalikan mesin & menabrak shell?
MikeJ-UK
Saya benar-benar menyukai dan mendapat manfaat dari jawaban Anda tetapi saya pikir pertanyaannya lebih tentang bagaimana sekarang kode / perangkat lunak ini harus disebut perpustakaan atau API atau mesin? jika Anda dapat menambahkan penjelasan untuk ini juga itu akan menjadi jawaban yang sempurna
Ali
Perpustakaan dan API beroperasi pada level yang berbeda dari Engine. Lebih baik untuk tetap fokus pada istilah yang ada daripada menyimpang ke lautan variasi dan nama yang berpotensi tak ada habisnya.
World Engineer
6

The definisi mesin adalah

kata benda / ˈenjən / 
engine, jamak

  1. Mesin dengan komponen bergerak yang mengubah daya menjadi gerakan

  2. Suatu hal yang merupakan agen atau instrumen dari suatu proses tertentu

# 1 adalah setara semantik enginedalam arti perangkat lunak yang menyebabkan sesuatu terjadi. 3D Graphics Engine, mengambil input dan mengonversinya untuk bergerak di layar. Mesin regex mengambil input dan mengubahnya menjadi output yang berbeda.

# 2 seperti menggunakan kalimat sebagai mesin perubahan . Semantik ini dapat diterapkan pada perangkat lunak juga.

Perangkat lunak engineslebih dari kerangka kerja dan perpustakaan yang secara pasif melakukan sesuatu. Mesin perangkat lunak bekerja sendiri berdasarkan input, mereka tidak pasif, dan biasanya memiliki proses sendiri run loopatas kemauan sendiri.


sumber
3

Jawaban terdekat sejauh ini, menurut saya, adalah jawaban yang mengatakan hal pemasaran.

Mari kita coba pikirkan dari mana penggunaan kata dalam konteks ini berasal.

Tentu saja mesin mobil atau jet tidak disebut seperti itu karena mereka mengambil input dan menghasilkan beberapa output. Jika itu dia, maka bukan hanya fungsi, tetapi banyak hal dalam hidup akan menjadi mesin.

Menurut saya, bukanlah suatu kebetulan bahwa seekor sapi jelas bukan mesin, tidak secara teknis, dan tidak dalam cara bicara yang waras.

Mesin menggunakan berbagai jenis energi dan mengubahnya menjadi gerak (yaitu jenis energi khusus).

Mengapa kita menggunakannya dalam perangkat lunak? Menurut saya tebakan yang paling realistis adalah karena itu terdengar keren. Mengapa kita memanggil beberapa programmer 'Arsitek'? Alasan yang sama, jika Anda bertanya kepada saya.

Alasan lain bisa jadi bahwa pemrogram umumnya suka menggunakan metafora untuk menggambarkan bagian-bagian dari perangkat lunak mereka, sehingga mereka dapat lebih mudah dipahami (karena tentu saja mereka sering tidak).

Firasat saya adalah bahwa praktik buruk untuk menyalahgunakan metafora sedemikian rupa sehingga domain aplikasi Anda penuh dengannya. Saya pikir itu bisa berguna ketika berbicara dengan klien, atau orang yang tidak tahu atau peduli tentang pemrograman. Selain itu, bagan dan diagram alur sederhana melakukan pekerjaan untuk saya.

Yam Marcovic
sumber
1

Engine adalah segala sesuatu yang membutuhkan input, memproses input itu, dan memberikan sesuatu sebagai output . Dengan definisi ini, mesin CMS adalah bagian yang menghasilkan respons HTTP dengan cepat berdasarkan input. Mesin basis data adalah apa yang mengambil kueri, menggambar rencana eksekusi, dan mengeksekusinya, dan mengembalikan hasilnya.

Secara teknis, bahkan seekor sapi adalah sejenis mesin. Dibutuhkan rumput, mengolahnya, dan memberikan susu.

Jangan lupa bahwa istilah engine lebih banyak digunakan dalam teknik mesin, dan itu persis sama.

Aspek lain dari mesin, adalah inti dari suatu sistem. Sebagai contoh, mesin basis data adalah inti dari setiap RDMS. Namun, IDE untuk terhubung ke mesin itu, sambil mengambil input dan mengembalikan hasil, tidak dianggap sebagai mesin.

Saeed Neamati
sumber
5
+1 untuk "mesin susu", saya sedang makan yoghurt dan hampir tersedak ketika saya membaca itu. ;)
FrustratedWithFormsDesigner
5
Definisi Anda akan membuat setiap fungsi menjadi mesin.
back2dos
Tidak setiap fungsi adalah fungsi dari inputnya.
Michael Burge
Saya harus setuju. Penjelasan Anda terdengar agak kabur dan sewenang-wenang.
Yam Marcovic
1
Seorang programmer juga merupakan mesin. Dibutuhkan kopi pada input dan menghasilkan kode pada output.
SF.
1

IMHO, mesin hanyalah kata lain untuk subsistem, modul, atau perpustakaan. IE - satu atau lebih komponen yang secara kohesif dirancang untuk tujuan tertentu.

Heath Lilley
sumber
2
downvoters: tolong jelaskan. Bahwa mesin (misalnya, Mesin Gempa) adalah subsistem, modul, atau perpustakaan tidak jelas salah.
keppla
3
Sementara mesin diimplementasikan secara khas sebagai subsistem, istilah ini biasanya hanya digunakan untuk subsistem "di bawah kap". Mereka tidak digunakan sebagai sinonim.
MaR
Premis dari pertanyaan ini adalah bahwa sebuah mesin bukan hanya sebuah subsistem, ini adalah tipe subsistem tertentu.
Will Sheppard
0

Mesin pada dasarnya adalah perangkat lunak yang dapat diperluas untuk menciptakan sesuatu.

Misalnya, dalam bermain game, Anda akan banyak mendengar tentang mesin permainan 'sesuatu'. Ini berarti perangkat lunak tertentu telah dimodifikasi dan diperluas untuk membuat permainan yang benar-benar unik.

jzm
sumber
0

Di pekerjaan saya, istilah itu tampaknya berarti "Satu file kode dalam format XEngine.csdengan beberapa kelas di dalam file kode itu, yang semuanya tidak mengandung apa pun kecuali metode statis". Saya muntah sedikit di dalam setiap kali saya melihatnya; mungkin juga merupakan modul VB6.

Saya pribadi tidak akan menggunakan istilah itu, ini ambigu dan tidak berarti (kecuali, saya kira, Anda sedang menulis perangkat lunak yang mensimulasikan mobil atau mungkin permainan balap) dalam banyak kasus; itu seperti kelas "Manajer" lama dahulu - namanya memberi tahu Anda tidak lain dari "Ini melakukan banyak hal" dan biasanya itu berarti itu merupakan pelanggaran berat terhadap SOLID.

Wayne Molina
sumber