Dalam artikel Eric Lippert Ada Apa Dengan Notasi Hongaria? , ia menyatakan bahwa tujuan Notasi Hongaria (jenis yang baik) adalah untuk
memperluas konsep "tipe" untuk mencakup informasi semantik di samping informasi representasi penyimpanan.
Contoh sederhana adalah awalan variabel yang mewakili koordinat X dengan "x" dan variabel yang mewakili koordinat Y dengan "y", terlepas dari apakah variabel-variabel tersebut adalah bilangan bulat atau mengambang atau apa pun, sehingga ketika Anda secara tidak sengaja menulis xFoo + yBar
, kodenya jelas terlihat salah.
Tetapi saya juga telah membaca tentang sistem tipe Haskell, dan tampaknya di Haskell, seseorang dapat mencapai hal yang sama (yaitu "memperluas konsep tipe untuk mencakup informasi semantik") menggunakan tipe aktual yang akan diperiksa oleh kompiler untuk Anda. Jadi, dalam contoh di atas, xFoo + yBar
di Haskell sebenarnya akan gagal untuk mengkompilasi jika Anda merancang program Anda dengan benar, karena mereka akan dinyatakan sebagai jenis yang tidak kompatibel. Dengan kata lain, sepertinya sistem tipe Haskell secara efektif mendukung pemeriksaan waktu kompilasi yang setara dengan Notasi Hongaria
Jadi, apakah Hongaria Notasi hanyalah bantuan band untuk bahasa pemrograman yang sistem tipenya tidak dapat menyandikan informasi semantik? Atau apakah Notasi Hongaria menawarkan sesuatu yang melebihi apa yang ditawarkan sistem tipe statis seperti Haskell?
(Tentu saja, saya menggunakan Haskell sebagai contoh. Saya yakin ada bahasa lain dengan sistem tipe ekspresif (kaya? Kuat?) Yang serupa, meskipun saya belum menemukan satu pun.)
Untuk lebih jelasnya, saya tidak berbicara tentang memberi anotasi nama variabel dengan tipe data , melainkan dengan informasi tentang arti variabel dalam konteks program. Sebagai contoh, suatu variabel dapat berupa bilangan bulat atau mengambang atau ganda atau panjang atau apa pun, tetapi mungkin makna variabel adalah bahwa itu adalah koordinat x relatif yang diukur dalam inci. Ini adalah jenis informasi yang saya bicarakan penyandian melalui Notasi Hongaria (dan melalui jenis Haskell).