Memilih alat atau teknologi yang tepat untuk masalah tertentu adalah salah satu aspek yang paling penting dalam pengaturcaraan. Alat yang betul adalah kunci kejayaan projek. Di sinilah kebanyakan pengaturcara gagal kerana mereka biasanya menghadapi banyak alat. Ini berkaitan dengan soalan utama, "sekiranya anda membina aplikasi anda dengan perpustakaan atau rangka kerja?" Ini adalah salah satu topik perbincangan yang paling mudah dibincangkan dalam komuniti programmer dan sering menjadi sumber kekeliruan. Sebuah pasukan kecil dengan segelintir pemaju, kebanyakannya pemula mungkin lebih baik bekerja dengan kerangka sementara perpustakaan adalah blok bangunan yang dapat digunakan di mana saja dan membolehkan fleksibilitas dan kontrol yang lebih besar.
Perbezaan utama di antara perpustakaan dan kerangka adalah "Penyongsangan Kawalan" (IoC). Orang boleh mengatakan kerangka adalah koleksi perpustakaan tetapi keseluruhan idea entah bagaimana berbeza.
Perpustakaan adalah kumpulan fungsi yang boleh diguna semula yang digunakan oleh program komputer yang bermaksud sumber yang boleh digunakan semula yang mungkin termasuk kelas, subrutin, kod pra-dikompilasi, templat mesej, dan lain-lain. Kebanyakan bahasa pengaturcaraan mempunyai perpustakaan standard mereka sendiri tetapi pengaturcara juga boleh membuat sendiri perpustakaan adat. Ia semata-mata adalah sekeping kod yang ditulis oleh pemaju lain yang boleh digunakan semula di mana sahaja. Perpustakaan boleh dimuatkan dengan lancar ke dalam projek sedia ada untuk menambah fungsian yang anda boleh akses selanjutnya menggunakan API. Pengetahuan sedikit diperlukan untuk memulakan anda.
Rangka kerja adalah sekeping kod yang menentukan bagaimana projek itu harus distrukturkan dan dijalankan. Ia hanya mengarahkan seni bina projek anda seperti menentukan parameter reka bentuk aplikasi supaya anda boleh memberi tumpuan kepada spesifik projek, dengan itu menekankan pada kebolehgunaan semula reka bentuk dan bukannya kebolehbaksanaan kod. Tidak seperti perpustakaan, kawalannya terbalik dalam kes kerangka dan kod tidak pernah memanggil kerangka, sebaliknya, rangka kerja itu memanggil anda. Tidak seperti perpustakaan, rangka kerja menekankan struktur dan piawaian.
Dalam pengaturcaraan, perpustakaan adalah koleksi fungsi yang boleh diguna semula - yang bermaksud sumber yang boleh digunakan semula - yang digunakan oleh program komputer. Sumber-sumber, kadang-kadang dipanggil sebagai modul, biasanya disimpan dalam format objek. Kebanyakan bahasa pengaturcaraan mempunyai perpustakaan standard mereka sendiri tetapi pengaturcara juga boleh membuat perpustakaan adat mereka sendiri. Secara ringkas, perpustakaan adalah satu set fungsi yang boleh anda panggil, sedangkan rangka kerja adalah sekeping kod yang menentukan seni bina projek anda. Dengan cara ini, rangka kerja dan bahasa pengaturcaraan saling berkaitan dengan bantuan dalam program komputer.
"Penyongsangan Kawalan" adalah perbezaan utama yang memisahkan rangka kerja dari perpustakaan. Perpustakaan adalah satu set fungsi dan rutin yang digunakan oleh program lain dan anda berada dalam kawalan sepenuhnya jika ia memanggil kaedah dari perpustakaan. Walau bagaimanapun, kawalan itu terbalik dalam kes rangka kerja. Ia menentukan struktur projek anda dan kod tidak pernah memanggil ke dalam rangka kerja, sebaliknya ia memanggil anda. Ringkasnya, anda hanya boleh memikirkan perpustakaan sebagai fungsi aplikasi dan kerangka sebagai rangka aplikasi di mana aplikasi menentukan ciri-cirinya sendiri.
Perpustakaan adalah satu set fungsi yang boleh digunakan di mana saja bermakna ia hanya sekeping kod yang ditulis oleh pemaju lain yang boleh digunakan semula. Mereka dimasukkan dengan lancar ke dalam projek sedia ada untuk menambah fungsi yang anda boleh mengakses menggunakan API. Mereka kebanyakannya digunakan untuk modul yang sering digunakan kerana anda tidak perlu menghubungkannya secara jelas kepada setiap program yang menggunakannya. Mereka penting dalam proses menghubungkan dan mengikat program. Di samping itu, kerangka memberikan cara yang standard untuk membina dan menggunakan aplikasi dan boleh digunakan kebanyakannya ketika memulakan projek baru dan bukannya diintegrasikan ke yang sudah ada.
Untuk lebih memahami perbezaan antara perpustakaan dan rangka kerja, mari kita lihat jQuery dan AngularJS. jQuery adalah pustaka JavaScript cross-platform yang memudahkan manipulasi DOM bersama dengan banyak perkara rumit lain seperti manipulasi CSS, kaedah acara HTML, panggilan AJAX dll. Tujuan jQuery adalah untuk mempermudah penggunaan JavaScript di laman web anda. AngularJS, sebaliknya, adalah rangka kerja struktur berdasarkan seni bina MVC yang digunakan untuk membuat aplikasi web dinamik. Ini sepenuhnya berdasarkan HTML dan JavaScript dan tidak seperti jQuery, ia tidak boleh diintegrasikan ke dalam projek yang sedia ada kerana sebagai rangka kerja, ia menetapkan bagaimana kod anda disusun dan dijalankan.
Apabila ada kekeliruan tentang membuat keputusan sama ada anda perlu menggunakan perpustakaan atau kerangka untuk membina aplikasi, semuanya akan dikawal. Perpustakaan adalah satu set fungsi yang boleh anda panggil dan setiap panggilan melakukan beberapa tugas dan mengembalikan kawalan kepada anda. Mereka boleh dimasukkan ke dalam projek yang lancar dan sedikit pengetahuan diperlukan untuk memulakan anda. Kerangka, sebaliknya, menentukan struktur keseluruhan projek anda dan tidak seperti perpustakaan, rangka kerja memanggil anda dan kod tidak pernah memanggil ke dalam rangka kerja. Perbezaan utama adalah dengan penyimpangan kawalan. Secara ringkas, perpustakaan lebih fleksibel dengan tahap kawalan yang lebih tinggi, sedangkan rangka kerja menguatkan struktur dan piawai.