Apa itu infinite loop?
infinite loop — kadang juga disebut endless loop — adalah bagian dari kode yang tidak punya mekanisme keluar yang berfungsi, sehingga akan terus berulang tanpa henti. Dalam pemrograman komputer, loop adalah urutan instruksi yang dijalankan berulang kali sampai kondisi tertentu tercapai.
Infinite loop bisa digunakan secara sengaja maupun tidak sengaja karena kesalahan pemrograman atau adanya bug. Ada juga yang disebut pseudo-infinite loop, yaitu loop yang terlihat seperti tidak akan pernah selesai, tapi sebenarnya akan berhenti di titik tertentu.
Istilah infinite loop kadang juga dipakai buat menggambarkan situasi iterasi tanpa akhir dalam proses feedback DevOps atau pengembangan perangkat lunak.
Apa itu loop dalam pemrograman?
Loop dalam pemrograman komputer dibuat ketika serangkaian instruksi dijalankan berulang-ulang sampai kondisi penghentian tertentu tercapai. Biasanya, ada proses yang didefinisikan — misalnya mengambil data dan mengubahnya — lalu dicek apakah suatu kondisi sudah terpenuhi, misalnya nilai sebuah counter sudah mencapai angka tertentu. Kalau sudah, maka loop akan berhenti.
Loop digunakan untuk mengeksekusi kode yang sama berkali-kali. Contohnya, program yang ngecek kehadiran setiap siswa di kelas bisa mengembalikan Y untuk hadir dan N untuk tidak hadir. Program harus membaca daftar 26 siswa dan melakukan pengecekan satu per satu. Program akan berhenti setelah seluruh 26 siswa dicek.
Ada berbagai jenis loop, dan setiap bahasa pemrograman punya sintaks loop yang berbeda. Beberapa jenis loop antara lain:
- For loop: Mengulang blok kode sebanyak jumlah yang sudah ditentukan. Biasanya digunakan untuk iterasi melalui daftar dan menjalankan kode untuk setiap item di daftar itu.
- While loop: Akan terus berjalan selama kondisi tertentu terpenuhi. Kondisinya dicek dulu sebelum kode loop dijalankan.
- Do loop: Menjalankan kode dulu, baru setelah itu memeriksa kondisi.
- Do-while loop: Mirip while loop, tapi kondisinya ada di akhir, jadi loop akan berjalan setidaknya sekali meskipun kondisinya tidak terpenuhi.
Terlepas dari jenis loop atau sintaks bahasa, hampir semua loop punya kondisi keluar (exit condition) yang menentukan kapan loop harus berakhir.
Bagaimana cara kerja infinite loop?
Infinite loop akan terus berjalan selama kondisi keluar tidak terpenuhi. Loop tanpa kondisi keluar bisa terjadi kalau salah satu hal berikut ini terjadi:
- Loop tidak punya kondisi penghentian sama sekali.
- Loop punya kondisi penghentian tapi kondisi itu tidak mungkin dipenuhi.
- Loop punya instruksi untuk kembali ke awal dan mulai lagi.
Kalau ambil contoh program pengecekan kehadiran tadi, siswa diberi nomor dari 1 sampai 26. Loop seharusnya berhenti setelah 26 siswa dicek. Tapi, hal berikut bisa bikin loop-nya jadi infinite:
- Tidak ada kondisi penghentian, sehingga loop akan kembali ke siswa pertama dan terus mengulang daftar tanpa akhir.
- Kondisi penghentiannya ditulis dengan angka yang tidak masuk akal, misalnya -1 atau 316.
- Ada instruksi dalam loop yang menyuruh program kembali ke siswa pertama sebelum mencapai siswa ke-26, atau ada `break` statement yang malah bikin loop tidak berjalan sebagaimana mestinya.
Dalam semua kasus tersebut, kalau kondisi tertentu tidak bisa dipastikan atau tidak pernah terpenuhi, maka program akan terus mengulangi instruksi dari awal. Biasanya ini akan terus terjadi sampai program dihentikan secara paksa oleh user, atau sistem operasi (OS) memaksa program berhenti karena error.
Kenapa infinite loop digunakan?
Biasanya infinite loop terjadi karena kesalahan pemrograman, misalnya kondisi keluar ditulis dengan salah.
Tapi, ada juga kasus di mana infinite loop memang digunakan secara sengaja, misalnya untuk membuat program yang harus terus berjalan. Contohnya:
- Sistem tertanam (embedded systems). Game berbasis cartridge adalah contoh sistem tertanam yang menggunakan infinite loop. Game akan berjalan terus-menerus sampai konsol dimatikan, karena tidak ada OS di baliknya untuk kembali ke sistem utama.
- Sistem operasi. OS itu sendiri berjalan dalam loop tak berujung, terus-menerus menunggu input dari user dan merespons sesuai kebutuhan, sampai perangkat dimatikan atau di-restart.
- Web server. Web server dirancang untuk menerima request, mengembalikan halaman web, dan menunggu request berikutnya tanpa batas waktu.
- Virus. Malware bisa menggunakan infinite loop untuk membebani CPU dan bikin komputer crash. Teknik ini biasa digunakan dalam serangan DDoS untuk menghabiskan resource jaringan atau komputer target.
Ada lelucon yang cukup menggambarkan semangat infinite loop seperti yang dipakai malware:
- Q: Kenapa programmer meninggal di kamar mandi?
- A: Karena botol shampo-nya bertuliskan “lather, rinse, repeat.”
Si programmer, yang mikir kayak komputer, terus-terusan mencuci rambutnya tanpa berhenti, sampai kehabisan tenaga, kelaparan, atau tenggelam.
Contoh infinite loop
Berikut contoh kode infinite loop dalam Python:
i=1 while i <= 7 print ("still looping")
Di sini, program ngecek nilai i, lalu jika i kurang dari atau sama dengan 7, maka program akan mencetak “still looping.” Kondisi keluar adalah jika i lebih besar dari 7. Tapi karena tidak ada perubahan nilai i, maka kondisi keluar tidak akan pernah terjadi. Program akan mencetak “still looping” tanpa henti sampai komputer dimatikan atau crash.