Ragam Static Typing

Tentunya para developer sudah mengenal apa yang dimaksud dengan static typing. Sudah banyak perdebatan di dunia maya mengenai static vs dynamic types. Akan tetapi, static types tidak sesederhana itu. Static types mempunyai spektrum yang sangat luas, sehingga tidak adil kalau semua jenisnya disatukan di bawah panji yang sama.

Kebetulan penulis menemukan tautan-tautan yang dirasa cukup baik untuk menjelaskan beberapa ragam (atau mungkin lebih tepatnya, fitur) static typing. Berikut di antaranya

Algebraic Data Types

Sangat membantu dalam pemodelan masalah sehingga membuat tes yang harus ditulis menjadi lebih sedikit. Sudah cukup banyak bahasa pemrograman yang memiliki fitur ini.

Higher-rank and Higher-kinded Types

Sejujurnya penulis belum mengerti tentang higher-rank types. Penulis hanya sedikit berpengalaman dengan dua bahasa yang memiliki higher-kinded types. Bisa dibilang higher-kinded types merupakan abstraksi tingkat lanjut. Tak perlu berdebat lagi dengan rekan kerja tentang kelayakan, cost, dan benefit suatu abstraksi karena abstraksi ini (dan juga algebraic data types) akan dicek oleh bahasa itu sendiri (compiler), bukan oleh developer.

Perhatian khusus patut ditujukan pada Elm yang secara sengaja tidak memasukkan fitur higher-kinded types. Elm berambisi besar menarik pengguna dan adopsi besar-besaran dengan tooling dan kemudahan ketimbang dengan fitur bahasa. Mereka menargetkan developer front-end yang tidak puas dengan front-end tooling, bukan programming language enthusiasts. Tahun ini mereka baru mengadakan konferensi yang kolokasi dengan Strange Loop. Video-video dua konferensi tersebut sudah dirilis di youtube.

Dependent Types

Penulis juga belum berpengalaman dengan fitur ini. Yang penulis tangkap, tipe ini bisa bergantung pada nilai. Jadi selain tipe List, kita juga bisa membuat tipe OrderedList di mana compiler akan menjamin semua nilai di dalam list berurutan. Bisa-bisa kita tidak perlu menulis tes lagi! Bisa dibilang bahasa dengan fitur ini masih sangat jarang dipakai oleh dunia industri, meski ada satu talk di Strange Loop yang membahas penggunaannya. Kebanyakan hanya untuk riset dan proyek hobi.

Untuk tambahan bacaan, bisa juga dilihat tulisan Gary Bernhardt (dan diskusi di bawahnya). Bagian tentang keberagaman dan perbedaan kekuatan di antara sesama static types cukup mudah untuk diikuti.

Bagaimana dengan kalian? Apakah sudah ada yang mencoba dan mempunyai favorit sendiri?