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?
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?
Jawaban:
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.
The definisi mesin adalah
kata benda / ˈenjən /
engine, jamak
Mesin dengan komponen bergerak yang mengubah daya menjadi gerakan
Suatu hal yang merupakan agen atau instrumen dari suatu proses tertentu
# 1 adalah setara semantik engine
dalam 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 engines
lebih 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 loop
atas kemauan sendiri.
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.
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.
IMHO, mesin hanyalah kata lain untuk subsistem, modul, atau perpustakaan. IE - satu atau lebih komponen yang secara kohesif dirancang untuk tujuan tertentu.
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.
Di pekerjaan saya, istilah itu tampaknya berarti "Satu file kode dalam format XEngine.cs
dengan 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
.