Perpustakaan program
| English | Bahasa Indonesia |
|---|---|
| program library/ˈprəʊɡræm ˈlaɪbrəri/ | perpustakaan program |
| subroutines/ˈsʌbruːtiːnz/ | subrutin |
| library routines/ˈlaɪbrəri ruːˈtiːnz/ | rutin perpustakaan |
| static library/ˈstætɪk ˈlaɪbrəri/ | perpustakaan statis |
| executable/ɪɡˈzekjʊtəbl/ | file yang dapat dieksekusi |
| dynamic library/daɪˈnæmɪk ˈlaɪbrəri/ | perpustakaan dinamis |
Sebelas baris yang merusak internet
- Pada Maret 2016 seorang programmer menghapus sebuah perpustakaan kecil bernama
left-paddari repositori publik. Ukurannya sebelas baris: ia menambahkan spasi di awal sebuah string. - Dalam hitungan jam, proses build gagal di perusahaan-perusahaan di seluruh dunia. Ribuan program belum pernah menulis sebelas baris itu. Mereka semua meminjamnya, dan peminjaman tersebut tak terasa hingga saat ia berhenti berfungsi.
- Begitulah cara pembuatan perangkat lunak modern. Perpustakaan program adalah peminjaman ini, dilakukan secara sadar, dan pelajaran ini membahas apa yang diperoleh pengembang, biayanya, serta dua cara perpustakaan ini dapat melekat pada sebuah program.
Apa itu perpustakaan program
- Sebuah perpustakaan program adalah kumpulan rutinitas, subrutin, kelas dan modul yang telah ditulis sebelumnya dan diuji, yang dapat digunakan sebuah program alih-alih menulis sendiri.
- Perpustakaan matematika, perpustakaan grafis, jaringan, penemuan jalur, kompresi: masing-masing menyelesaikan satu bidang masalah sekali, untuk setiap program yang membutuhkannya.
- Perangkat lunak yang sedang dikembangkan biasanya dibangun dari rutinitas perpustakaan seperti ini ditambah kode yang spesifik untuk program baru.

Kode baru adalah bagian kecil; kode yang dipinjam adalah bagian besar
Laboratorium konsep komputasi
Klasifikasikan contoh konkret berdasarkan ide komputasi yang ditunjukkannya.
Perpustakaan program adalah:
Perpustakaan menyediakan kode siap pakai dan teruji (matematika, grafik, jaringan...) yang dapat dipanggil program alih-alih menulis sendiri.
Kumpulan kode siap pakai, dapat digunakan kembali, dan teruji adalah program ______.
Perpustakaan menghemat waktu dan mengurangi bug.
Manfaat bagi pengembang
- Rutinitas sudah ditulis dan diuji, sehingga pengembangan lebih cepat dan murah.
- Mereka dapat diandalkan: digunakan oleh banyak program, sehingga sebagian besar bebas error.
- Pengembang tidak memerlukan keahlian khusus di bidang itu, grafis, enkripsi, penemuan jalur, dan dapat menghabiskan waktu untuk fitur-fitur unik programnya.
- Program menjadi lebih mudah dijaga, karena kode umum berada di satu tempat, dan tim dapat bekerja secara paralel, setiap anggota menggunakan rutinitas yang sama.
Manfaat menggunakan perpustakaan adalah kodenya:
Kode perpustakaan diuji, digunakan luas, dan distandarisasi — menggunakannya kembali menghemat waktu dan meningkatkan keandalan.
Manakah yang merupakan manfaat bagi pengembang dalam membangun perangkat lunak dari rutinitas perpustakaan? Pilih semua yang berlaku.
Rutinitas teruji, tidak butuh keahlian, pemeliharaan lebih mudah. Kode program itu sendiri tetap harus diuji.
Kerugian
- Rutinitas tersebut mungkin tidak sesuai dengan kebutuhan yang spesifik, dan pengembang tidak dapat mengubahnya, sehingga mereka harus beradaptasi dengan keterbatasannya.
- Program bergantung pada pustaka: sebuah bug, pembaruan yang hilang, atau pencabutan pustaka, seperti
left-pad, menjadi masalah bagi program tersebut. - Lisensi pustaka mungkin membatasi cara program dijual atau dibagikan, dan rutinitas yang tidak digunakan dapat membuat program lebih besar.
Contoh terpecahkan: robot restoran
- Sebuah tim yang menulis perangkat lunak untuk robot restoran menggunakan pustaka program yang mencakup rutinitas untuk menemukan jalur terpendek antar meja. Jelaskan dua manfaat dan satu kerugian bagi tim tersebut.
- Manfaat: rutinitas tersebut sudah ditulis dan diuji, sehingga tim menghemat waktu dan dapat mempercayai hasilnya. Manfaat: tim tidak perlu memahami algoritma pencarian jalur itu sendiri dan dapat menghabiskan waktu untuk fitur-fitur khusus robot.
- Kerugian: rutinitas tersebut mungkin tidak menangani kebutuhan spesifik restoran, seperti perpindahan kursi atau lorong satu arah, dan tim tidak dapat mengubahnya, sehingga mereka mungkin harus beradaptasi dengan keterbatasannya.
- Hubungkan setiap poin ke tim ini dan rutinitas ini. Pernyataan umum "menghemat waktu" mendapatkan nilai lebih rendah daripada "menghemat waktu penulisan dan pengujian algoritma pencarian jalur".
Manakah yang merupakan kekurangan bagi tim robot dalam menggunakan rutinitas penemuan jalur dari perpustakaan?
Tim tidak dapat mengubah kode perpustakaan, jadi ketidakcocokan apa pun dengan kebutuhan mereka harus diatasi. Tidak perlu memahami algoritma adalah keuntungan, bukan kekurangan.
Pustaka statis
- Pustaka statis disalin ke dalam program eksekusi saat program dikompilasi dan dilink.
- Program kemudian berdiri sendiri: tidak memerlukan file lain untuk berjalan.
- Biayanya: setiap program membawa salinan sendiri, sehingga program eksekusi menjadi lebih besar, dan pembaruan pustaka berarti membangun ulang setiap program yang menggunakannya.
Perpustakaan statis berbeda dari perpustakaan dinamis karena ia:
Perpustakaan statis dibangun ke dalam executable; perpustakaan dinamis dimuat saat waktu berjalan dan dibagikan antar program.
Pustaka dinamis dan file DLL
- Pustaka dinamis, Dynamic Link Library (DLL) di Windows atau file
.sodi Linux, tetap sebagai file terpisah dan dimuat ke dalam memori hanya ketika program memanggilnya, pada waktu jalankan. - Program eksekusi lebih kecil; beberapa program yang berjalan berbagi satu salinan dalam memori; dan DLL dapat diperbarui sekali, perbaikan bug atau dukungan perangkat baru, tanpa kompilasi ulang program yang menggunakannya.
- Memori hanya digunakan sementara pustaka dibutuhkan. Biayanya: program tidak akan berjalan jika DLL hilang atau versi yang salah.

Disalin saat kompilasi, atau dimuat dan dibagikan saat waktu jalankan
Perpustakaan dinamis dapat dibagikan oleh banyak program dan diperbarui sekali untuk semuanya.
Karena dimuat saat waktu berjalan, satu perpustakaan dinamis yang dibagikan melayani banyak program; memperbaruinya memperbaiki semuanya tanpa perlu membangun ulang masing-masing.
Cocokkan setiap sifat dengan perpustakaan statis atau dinamis.
Linking statis menyalin kode ke dalam executable (lebih besar, mandiri); linking dinamis memuat perpustakaan yang dibagikan saat waktu berjalan (lebih kecil, dapat diperbarui sekali untuk semua).
Susun peristiwa penggunaan rutinitas DLL oleh sebuah program.
Pemuatan terjadi saat waktu eksekusi, pada panggilan pertama, dan satu salinan melayani setiap program.
Contoh terpecahkan: manfaat file DLL
- Seorang pengembang perangkat lunak menggunakan file DLL. Jelaskan manfaatnya. [4]
- File eksekusi lebih kecil, karena kode pustaka tidak disalin ke dalamnya.
- Satu salinan DLL dalam memori dibagikan oleh setiap program yang berjalan yang menggunakannya, menghemat memori.
- DLL dapat diperbarui untuk memperbaiki bug atau mendukung perangkat baru tanpa kompilasi ulang atau instalasi ulang program yang memanggilnya.
- Pustaka dimuat hanya ketika diperlukan, sehingga memori hanya digunakan selama rutinitas sedang digunakan.
Memilih antara statis atau dinamis
- Program harus berjalan di mesin di mana tidak ada yang dapat diinstal, perangkat tertanam, atau satu file unduhan tunggal: statis, karena program eksekusinya mandiri.
- Banyak program dalam satu sistem berbagi rutinitas yang sama, atau rutinitas sering berubah: dinamis, karena satu salinan bersama lebih kecil dan diperbarui sekali untuk semua.
- Justifikasikan dengan kompromi: mandiri tetapi besar dan dibangun ulang untuk pembaruan, atau kecil dan dibagikan tetapi bergantung pada keberadaan file.
Program yang harus berjalan dari satu file tunggal pada perangkat di mana tidak ada yang lain dapat diinstal seharusnya menggunakan pustaka dinamis.
Pustaka dinamis adalah file terpisah yang harus ada. Pustaka statis disalin ke dalam file eksekusi, yang merupakan apa yang dibutuhkan oleh program mandiri.
⟦⟧ Nilai yang sering terlewat
- DLL dimuat pada waktu jalankan, bukan waktu kompilasi. Frasa tunggal itu adalah poin penting.
- Manfaat ditujukan kepada pengembang: sudah ditulis dan diuji, tidak diperlukan keahlian, pemeliharaan lebih mudah. "Program berjalan lebih cepat" tidak termasuk dalam daftar.
- Pustaka adalah kode, bukan alat. IDE adalah alat; pustaka adalah apa yang dipanggil program.
- Kerugian harus merupakan kerugian dari penggunaan pustaka: tidak dapat diubah, mungkin tidak sesuai, ketergantungan. "Biayanya mahal" jarang menjadi poin utama.
Anda telah memahaminya
- pustaka program adalah kode yang telah ditulis dan diuji sebelumnya yang dipanggil program alih-alih menulis sendiri
- manfaat: pengembangan lebih cepat dan murah, rutinitas andal, tidak diperlukan keahlian di area tersebut, pemeliharaan lebih mudah, tim bekerja secara paralel; kerugian: mungkin tidak sesuai, tidak dapat diubah, ketergantungan
- statis: disalin ke dalam program eksekusi saat kompilasi, mandiri tetapi lebih besar dan dibangun ulang untuk pembaruan
- dinamis (DLL): file terpisah yang dimuat saat waktu jalankan, lebih kecil, dibagikan oleh banyak program, diperbarui sekali untuk semua