Bertahun-tahun yang lalu, saya belajar Applesoft Basic. String selalu sufiks dengan $
dan array memiliki sufiks %
. Itulah cara kerjanya. Anda melihat sesuatu, Anda tahu apa itu. Saya tidak pernah menyelidiki terlalu jauh ke dalam juru bahasa untuk memahami mengapa ini adalah kasus atau keputusan desain yang membuatnya begitu.
Sigil di php berasal dari pengaruh perlnya (yang dipengaruhi oleh awk
dan sh
). Sigil dalam perl sedikit lebih dari sekadar $
karena dapat mengidentifikasi berbagai jenis:
$
skalar
@
daftar
%
hash
&
kode kunci
*
typeglob
Sigil mengidentifikasi bagian struktur tabel simbol apa yang Anda lihat. Di belakang layar, entri tabel simbol untuk foo (diakses melalui *foo
- typeglob) memiliki semua yang mungkin foo. Ada $foo
, @foo
, %foo
, yang format yang foo
, &foo
, foo filehandle, dll ...
Ini juga memungkinkan membuat alias dari satu variabel ke variabel lain:
#!/usr/bin/perl
$foo = "foo";
@qux = (1,2);
*bar = \$foo;
*bar = \@qux;
print "$bar @bar\n";
Cetakan ini foo 1 2
- di perl, ini adalah apa yang sigils yang benar-benar untuk, tidak bahwa Anda harus melakukan ini melainkan bahwa ada ini di balik hal adegan yang mereka lakukan.
Sigil tidak begitu banyak untuk dibaca, melainkan agar seseorang dapat memiliki $foo
dan @foo
tanpa tabrakan di namespace (bandingkan bahasa lain di mana seseorang tidak dapat memiliki keduanya int foo; int[] foo;
)
Sigils untuk keterbacaan adalah sesuatu yang dipelajari sebagai bagian dari bahasa apa pun - membaca sintaksis. Anda dapat, secara hipotetis, menegakkan tipe itu sendiri (sebagai notasi hungaria) untuk menjadi bagian dari pengidentifikasi.
Sesuatu dalam lex di sepanjang baris:
typeChar [is]
capLetter [A-Z]
letter [a-z]
digit [0-9]
%%
{typeChar}{capLetter}(letter}|{digit})* { prientif("iddentifier");}
%%
Dan kemudian Anda dapat memiliki kode seperti
iFoo = 42;
sFoo = "a string";
iBar = iFoo * 2;
Saya tidak mengatakan ini adalah ide yang baik, tetapi seseorang yang terbiasa dengan bahasa akan dapat membaca ini secara asli dan berpikir bahwa itu meningkatkan keterbacaan sementara seseorang yang tidak terbiasa dengan bahasa mungkin berpikir bahwa itu hanya menambah banyak suara ke bahasa.
Namun, setelah bekerja dengan bahasa yang didefinisikan seperti ini, saya mungkin bisa membacanya tanpa kesulitan.
Beberapa orang menyukai mereka, beberapa orang tidak. Ada banyak perang suci di berbagai forum yang memperdebatkan hal ini dan itu benar-benar memengaruhi seberapa banyak Anda telah menggunakannya.
Orang bisa mendesain bahasa baru untuk non-programmer yang menggunakan sigils dan siapa pun yang belum pernah memprogram sebelumnya tidak akan pernah mengeluh sedikit pun tentang mereka. Di sisi lain, Anda tidak dapat memilikinya sebagai bagian dari bahasa dan kemudian memiliki programmer ruby atau perl mengeluh bahwa mereka kehilangan beberapa informasi penting.
Itu tidak masalah. Yang penting adalah bagaimana sigils akan cocok dengan bahasa jika Anda menggunakannya atau tidak. Apakah Anda ingin dapat melakukan "123 $foo 456"
atau harus melakukannya "123 " + foo + " 456"
? Di sinilah keputusan harus dibuat.