Jawaban:
Saya sangat terlambat untuk menjawabnya. Tetapi, saya ingin membagikan satu contoh, yang hanya saya pikirkan hari ini. Jika saya mengatakan kepada Anda untuk memotong selembar kertas dengan dimensi 5m x 5m, maka pasti Anda akan melakukannya. Tapi misalkan saya meminta Anda untuk memotong 1000 lembar kertas dari dimensi yang sama. Dalam hal ini, Anda tidak akan melakukan pengukuran 1000 kali; jelas, Anda akan membuat bingkai 5m kali 5m, dan kemudian dengan bantuan itu Anda akan dapat memotong 1000 lembar kertas dalam waktu yang lebih singkat. Jadi, apa yang Anda lakukan adalah membuat kerangka kerja yang akan melakukan jenis tugas tertentu. Alih-alih melakukan jenis tugas yang sama berulang-ulang untuk jenis aplikasi yang sama, Anda membuat kerangka kerja yang memiliki semua fasilitas tersebut bersama dalam satu paket yang bagus, sehingga memberikan abstraksi untuk aplikasi Anda dan yang lebih penting banyak aplikasi.
Secara teknis, Anda tidak perlu kerangka kerja. Jika Anda membuat situs yang benar-benar sangat sederhana (pikirkan web kembali pada tahun 1992), Anda bisa melakukan semuanya dengan HTML kode-keras dan beberapa CSS.
Dan jika Anda ingin membuat aplikasi web modern, Anda sebenarnya tidak perlu menggunakan kerangka kerja untuk itu.
Anda dapat memilih untuk menulis semua logika yang Anda butuhkan sendiri, setiap saat. Anda dapat menulis lapisan data-persistensi / penyimpanan Anda sendiri, atau - jika Anda terlalu sibuk - cukup tulis SQL kustom untuk setiap akses basis data tunggal. Anda dapat menulis lapisan autentikasi dan penanganan sesi Anda sendiri. Dan logika rending template Anda sendiri. Dan logika penanganan pengecualian Anda sendiri. Dan fungsi keamanan Anda sendiri. Dan kerangka kerja unit test Anda sendiri untuk memastikan semuanya bekerja dengan baik. Dan milikmu sendiri ... [berlangsung cukup lama]
Kemudian lagi, jika Anda melakukan menggunakan kerangka , Anda akan dapat manfaat dari baik, biasanya peer-review dan sangat baik diuji karya puluhan jika tidak ratusan pengembang lain, yang mungkin lebih baik dari Anda. Anda akan dapat membangun apa yang Anda inginkan dengan cepat, tanpa harus menghabiskan waktu untuk membangun atau terlalu mengkhawatirkan item infrastruktur yang tercantum di atas.
Anda bisa menyelesaikan lebih banyak dalam waktu yang lebih singkat, dan tahu bahwa kode kerangka kerja yang Anda gunakan atau perpanjang sangat mungkin dilakukan lebih baik daripada Anda melakukannya sendiri.
Dan biaya ini? Investasikan waktu untuk mempelajari kerangka kerja. Tetapi - karena hampir setiap pengembang web di luar sana akan membuktikan - pasti sepadan dengan waktu yang dihabiskan untuk belajar untuk mendapatkan manfaat besar (benar-benar, sangat besar) dari menggunakan kerangka apa pun yang Anda pilih.
Ringkasan di Wikipedia (Kerangka Perangkat Lunak) (google hit btw pertama) menjelaskannya dengan cukup baik:
Kerangka kerja perangkat lunak, dalam pemrograman komputer, adalah abstraksi di mana kode umum yang menyediakan fungsionalitas generik dapat ditimpa secara selektif atau dikhususkan oleh kode pengguna yang menyediakan fungsionalitas tertentu. Kerangka kerja adalah kasus khusus dari pustaka perangkat lunak di mana mereka adalah abstraksi yang dapat digunakan kembali dari kode yang dibungkus dengan antarmuka pemrograman aplikasi (API) yang terdefinisi dengan baik, namun mereka mengandung beberapa fitur pembeda utama yang memisahkannya dari pustaka normal.
Kerangka kerja perangkat lunak memiliki fitur yang membedakan ini dari perpustakaan atau aplikasi pengguna normal:
- inversi of control - Dalam suatu kerangka kerja, tidak seperti di perpustakaan atau aplikasi pengguna normal, aliran keseluruhan kontrol program tidak ditentukan oleh penelepon, tetapi oleh kerangka kerja. [1]
- perilaku default - Kerangka kerja memiliki perilaku default. Perilaku default ini harus benar-benar beberapa perilaku yang berguna dan bukan serangkaian no-ops.
- extensibility - Kerangka kerja dapat diperpanjang oleh pengguna biasanya dengan selektif override atau khusus oleh kode pengguna yang menyediakan fungsionalitas tertentu.
- kode kerangka kerja yang tidak dapat dimodifikasi - Kode kerangka kerja, secara umum, tidak diperbolehkan untuk dimodifikasi. Pengguna dapat memperluas kerangka kerja, tetapi tidak mengubah kodenya.
Anda mungkin "membutuhkannya" karena dapat memberikan Anda jalan pintas yang bagus ketika mengembangkan aplikasi, karena aplikasi ini berisi banyak fungsi yang sudah ditulis dan diuji. Alasannya sangat mirip dengan alasan kami menggunakan pustaka perangkat lunak.
Sudah banyak jawaban bagus, tetapi biarkan saya melihat apakah saya bisa memberi Anda sudut pandang lain.
Menyederhanakan banyak hal, Anda dapat melihat kerangka kerja sebagai aplikasi yang lengkap kecuali untuk fungsionalitas sebenarnya. Anda pasang fungsi dan PRESTO! Anda punya aplikasi.
Pertimbangkan, katakanlah, kerangka kerja GUI. Kerangka kerja berisi semua yang Anda butuhkan untuk membuat aplikasi. Memang Anda sering dapat membuat aplikasi minimal dengan sedikit garis sumber yang sama sekali tidak melakukan apa-apa - tetapi itu memberi Anda manajemen jendela, manajemen sub-jendela, menu, bilah tombol, dll. Itulah sisi kerangka kerja hal-hal. Dengan menambahkan fungsionalitas aplikasi Anda dan "memasukkannya" ke tempat-tempat yang tepat dalam kerangka kerja Anda mengubah aplikasi kosong ini yang tidak lebih dari manajemen jendela, dll. Menjadi aplikasi yang nyata dan lengkap.
Ada jenis kerangka kerja yang serupa untuk aplikasi web, untuk aplikasi sisi server, dll. Dalam setiap kasus kerangka kerja menyediakan sebagian besar kode berulang yang membosankan (mudah-mudahan) sambil Anda memberikan fungsionalitas domain masalah yang sebenarnya. (Ini adalah yang ideal. Pada kenyataannya, tentu saja, keberhasilan kerangka kerja sangat bervariasi.)
Saya menekankan lagi bahwa ini adalah pandangan yang disederhanakan tentang apa kerangka itu. Saya tidak menggunakan istilah menakutkan seperti "Inversion of Control" dan sejenisnya meskipun sebagian besar kerangka kerja memiliki konsep menakutkan seperti built-in. Karena Anda seorang pemula, saya pikir saya akan mengampuni Anda jargon dan pergi dengan perumpamaan mudah.
Saya tidak yakin ada definisi "kerangka" yang jelas. Kadang-kadang satu set besar perpustakaan disebut kerangka kerja, tapi saya pikir penggunaan kata yang khas lebih dekat dengan definisi yang dibawa aioobe.
Artikel yang sangat bagus ini merangkum perbedaan antara hanya satu set perpustakaan dan kerangka kerja:
Kerangka kerja dapat didefinisikan sebagai satu set perpustakaan yang mengatakan "Jangan panggil kami, kami akan menghubungi Anda."
Bagaimana kerangka kerja membantu Anda? Karena alih-alih menulis sesuatu dari awal, Anda pada dasarnya hanya memperpanjang suatu aplikasi yang berfungsi. Anda mendapatkan banyak produktivitas dengan cara ini - terkadang aplikasi yang dihasilkan bisa jauh lebih rumit daripada yang bisa Anda lakukan sendiri dalam kerangka waktu yang sama - tetapi Anda biasanya berdagang dengan banyak fleksibilitas.
Penjelasan sederhana adalah: Kerangka kerja adalah perancah yang dapat Anda gunakan untuk membangun aplikasi.
Kerangka kerja umumnya menyediakan beberapa fungsionalitas dasar yang dapat Anda gunakan dan luaskan untuk membuat aplikasi yang lebih kompleks, ada kerangka kerja untuk semua hal. Kerangka kerja Microsoft MVC adalah contoh yang bagus untuk ini. Ini menyediakan semua yang Anda butuhkan untuk keluar dari situs web bangunan menggunakan pola MVC, menangani permintaan web, rute dan sejenisnya. Yang harus Anda lakukan adalah mengimplementasikan "Controllers" dan memberikan "Views" yang merupakan dua konstruksi yang didefinisikan oleh kerangka kerja MVC. Kerangka kerja MVC kemudian menangani pemanggilan pengontrol Anda dan menampilkan tampilan Anda.
Mungkin bukan kata-kata terbaik tapi saya harap ini membantu
di tingkat terendah, kerangka kerja adalah lingkungan, di mana Anda diberi seperangkat alat untuk bekerja dengannya
alat ini datang dalam bentuk perpustakaan, file konfigurasi, dll.
apa yang disebut "lingkungan" ini memberi Anda pengaturan dasar (pelaporan kesalahan, file log, pengaturan bahasa, dll) ... yang dapat dimodifikasi, diperluas, dan dikembangkan.
Orang sebenarnya tidak membutuhkan kerangka kerja, itu hanya masalah ingin menghemat waktu, dan yang lain hanya masalah preferensi pribadi.
Orang akan membenarkan bahwa dengan kerangka kerja, Anda tidak perlu kode dari awal. Tapi itu hanya orang-orang membingungkan perpustakaan dengan kerangka kerja.
Saya tidak bias di sini, saya sebenarnya menggunakan kerangka kerja sekarang.
Kerangka kerja menyediakan fungsionalitas / solusi untuk area masalah tertentu.
Definisi dari wiki :
Kerangka kerja perangkat lunak, dalam pemrograman komputer, adalah abstraksi di mana kode umum yang menyediakan fungsionalitas generik dapat ditimpa secara selektif atau dikhususkan oleh kode pengguna yang menyediakan fungsionalitas tertentu. Kerangka kerja adalah kasus khusus dari pustaka perangkat lunak di mana mereka adalah abstraksi yang dapat digunakan kembali dari kode yang dibungkus dengan antarmuka pemrograman aplikasi (API) yang terdefinisi dengan baik, namun mereka mengandung beberapa fitur pembeda utama yang memisahkannya dari pustaka normal.
Kerangka kerja membantu kita tentang menggunakan "sudah dibuat", metafora bisa seperti,
berpikir bahwa materi bumi adalah bahasa pemrograman,
dan misalnya "kamera" adalah programnya, dan Anda memutuskan untuk membuat buku catatan. Anda tidak perlu membuat ulang kamera setiap kali, Anda cukup menggunakan kerangka bumi (misalnya ke toko teknologi) mengambil kamera dan mengintegrasikannya ke notebook Anda.
Kerangka kerja memiliki beberapa fungsi yang mungkin Anda butuhkan. Anda mungkin perlu semacam array yang memiliki mekanisme sortir bawaan. Atau mungkin Anda memerlukan jendela di mana Anda ingin menempatkan beberapa kontrol, semua yang dapat Anda temukan dalam suatu kerangka kerja. itu semacam BEKERJA yang mencakup FRAME di sekitar pekerjaan Anda sendiri.
EDIT: OK saya akan menggali apa yang kalian coba katakan kepada saya;) Anda mungkin belum memperhatikan informasi di antara baris "BEKERJA yang membentang FRAME sekitar ..." sebelum ini semakin jatuh lebih dalam dan lebih dalam. Saya mencoba memberikan dasar untuk itu dengan harapan Anda senang:
penjelasan yang bagus untuk pertanyaan "Perbedaan antara Perpustakaan dan Kerangka Kerja" Saya temukan di sini
http://ifacethoughts.net/2007/06/04/difference-between- a-library-and-a-framework /
Di luar definisi, yang kadang-kadang hanya bisa dimengerti jika Anda sudah mengerti, sebuah contoh membantu saya.
Saya pikir saya mendapat sedikit pemahaman ketika bersantai mengurutkan daftar di. Net; contoh kerangka kerja yang menyediakan fungsionalitas yang dirancang oleh kode pengguna yang menyediakan fungsionalitas tertentu. Ambil List.Sort (IComparer). Algoritma pengurutan, yang berada dalam kerangka .Net dalam metode Sortir, perlu melakukan serangkaian perbandingan; Apakah objek A datang sebelum atau sesudah objek B? Tetapi Sort sendiri tidak memiliki petunjuk bagaimana melakukan perbandingan; hanya tipe yang disortir yang tahu itu. Anda tidak dapat menulis algoritma pengurutan perbandingan yang dapat digunakan kembali oleh banyak pengguna dan mengantisipasi semua jenis yang Anda akan diminta untuk mengurutkan. Anda harus menyerahkan sedikit pekerjaan kepada pengguna itu sendiri. Jadi di sini, urutkan, alias kerangka kerja, memanggil kembali ke metode dalam kode pengguna, jenis yang disortir sehingga dapat melakukan perbandingan. (Atau delegasi dapat digunakan;
Apakah saya benar?