Transparansi referensial
Transparansi referensial adalah fitur dari bagian-bagian program komputer. Suatu bagian dari program disebut "referentially transparent" jika dapat diganti dengan nilai yang diberikannya kembali tanpa mengubah perilaku program. Fungsi yang transparan secara referensial harus murni - harus selalu memberikan output yang sama jika mengambil input yang sama, dan tidak boleh memiliki efek samping - bagian dari program yang melakukan tindakan selain memberikan nilai kembali. Kebalikan dari transparansi referensial adalah referential opacity.
Dalam matematika, semua fungsi bersifat transparan secara referensial, karena fungsi matematika hanya dapat mengambil nilai masuk dan mengeluarkan nilai keluar. Dalam pemrograman, hal ini tidak selalu benar - sebuah fungsi mungkin juga dapat mengetahui hari apa tahun ini, atau mencetak pesan ke layar. Karena perbedaan ini, beberapa orang menggunakan nama lain untuk fungsi dalam pemrograman, seperti prosedur.
Transparansi referensial memungkinkan programmer dan kompiler untuk memikirkan kode sebagai sistem penulisan ulang - sesuatu yang mengambil ekspresi dan menggantinya dengan sesuatu yang lain. Hal ini dapat membantu dengan beberapa tugas, seperti:
- Membuktikan bahwa program atau kode itu benar-bahwa program atau kode itu melakukan apa yang seharusnya dilakukan, apa pun yang terjadi.
- Membuat algoritma lebih sederhana.
- Sehingga lebih mudah untuk mengubah kode sambil tetap yakin bahwa kode tersebut melakukan apa yang seharusnya.
- Membuat kode berjalan lebih cepat atau dengan cara yang menggunakan lebih sedikit memori.
Ada beberapa cara untuk melakukan tugas terakhir - yang paling terkenal adalah memoisasi (menyimpan jawaban setelah pertama kali), eliminasi subekspresi umum (mencari tahu apakah layak untuk menggabungkan dua bagian kode yang sama), evaluasi malas (tidak menemukan jawaban sampai kode benar-benar membutuhkannya), dan paralelisasi (mengerjakan beberapa masalah pada saat yang sama).
Pertanyaan dan Jawaban
T: Apa yang dimaksud dengan transparansi referensial?
J: Transparansi referensial adalah fitur bagian dari program komputer di mana suatu bagian dari program dapat diganti dengan nilai yang dikembalikannya tanpa mengubah perilaku program.
T: Apa kebalikan dari transparansi referensial?
J: Kebalikan dari transparansi referensial adalah opasitas referensial.
T: Apakah semua fungsi dalam matematika bersifat transparan secara referensial?
A: Ya, semua fungsi dalam matematika transparan secara referensial karena fungsi matematika hanya dapat mengambil nilai dan mengeluarkan nilai.
T: Bagaimana transparansi referensial membantu programmer dan kompiler?
J: Transparansi referensial memungkinkan programmer dan kompiler untuk memikirkan kode sebagai sistem penulisan ulang - sesuatu yang mengambil sebuah ekspresi dan menggantinya dengan yang lain. Hal ini membantu tugas-tugas seperti membuktikan bahwa program atau kode sudah benar, membuat algoritme menjadi lebih sederhana, memudahkan untuk mengubah kode sambil tetap memastikan bahwa kode tersebut melakukan apa yang seharusnya, dan membuat kode berjalan lebih cepat atau menggunakan lebih sedikit memori.
T: Apa saja teknik yang digunakan untuk membuat kode berjalan lebih cepat atau menggunakan lebih sedikit memori?
A: Beberapa teknik yang digunakan untuk membuat kode berjalan lebih cepat atau menggunakan lebih sedikit memori termasuk memoisasi (menyimpan jawaban setelah pertama kali), eliminasi subekspresi umum (mencari tahu apakah layak untuk menggabungkan dua bagian kode yang sama), evaluasi malas (tidak menemukan jawabannya hingga kode benar-benar membutuhkannya), dan paralelisasi (mengerjakan beberapa masalah pada saat yang bersamaan).
T: Apakah ada perbedaan antara fungsi dalam pemrograman dibandingkan dengan fungsi dalam matematika?
A: Ya, ada perbedaan antara fungsi dalam pemrograman dibandingkan dengan fungsi dalam matematika -Dalam pemrograman, sebuah fungsi juga dapat mencari tahu hari apa dalam setahun atau mencetak pesan ke layar, sedangkan hal ini tidak mungkin dilakukan dengan fungsi matematika.