Saya terus mendengar tentang bagaimana seseorang harus belajar teori kategori untuk benar-benar memahami teori bahasa pemrograman. Sejauh ini, saya telah belajar banyak PL tanpa pernah melangkah ke bidang kategori. Namun, saya pikir sudah waktunya untuk melakukan lompatan untuk melihat apa yang telah saya lewatkan.
Sayangnya, tidak ada sumber yang bisa saya temukan yang membuat koneksi untuk mengetik sistem atau pemrograman. Mereka mengatakan itu adalah pengantar teori kategori untuk ilmuwan komputer, tetapi kemudian beralih ke omong kosong abstrak umum (saya katakan ini dengan penuh kasih) tanpa memberikan contoh atau aplikasi praktis.
Saya kira pertanyaan saya sebenarnya dua kali lipat:
- Apakah teori kategori penting untuk memahami "konsep mendalam" dalam PL?
- Apa sumber yang menjelaskan teori kategori dari sudut pandang aplikasi praktis untuk mengetik sistem dan pemrograman?
Sejauh ini, yang terjauh yang saya dapatkan adalah konsepsi kabur dari functors (yang tampaknya tidak terkait dengan functors di ML, sejauh yang saya tahu). Saya takut abstraksi yang harus saya ingat untuk memahami monad dari sudut pandang kategori-teoretis.
Jawaban:
Teori kategori tidak perlu untuk memahami bahasa pemrograman, bahkan tidak perlu melakukan penelitian lanjutan pada bahasa pemrograman. Kebanyakan orang bahasa pemrograman tidak tahu banyak tentang teori kategori.
Kategori metode teoritis telah berguna sebagian besar dalam sebagian kecil penelitian bahasa pemrograman, yaitu dalam analisis pemrograman fungsional, khususnya, sejak penemuan besar Moggi bahwa beberapa efek komputasi memiliki struktur monadik. Pada 1990-an, setelah terobosan Moggi, banyak penelitian dilakukan untuk memperluas metode kategorikal ke bentuk lain dari bahasa pemrograman. Namun, sejauh yang saya ketahui, metode kategorikal belum menemukan semua yang berguna untuk OO, perhitungan konkuren, paralel, dan terdistribusi, perhitungan waktunya atau kompiler. Karena alasan ini, orang-orang sebagian besar telah meninggalkan memperluas metode kategorikal.
Pendekatan kategoris pada pemrograman mengetik bekerja dengan baik dalam fungsi murni. Memang beberapa sistem pengetikan sederhana adalah kategori. Ini dijelaskan dalam misalnya
Sekarang ada banyak pekerjaan pada jenis untuk proses bersamaan (misalnya jenis sesi) dan tidak ada yang bersifat kategoris pada September 2016.
Yang mengatakan, orang tidak akan pernah tahu terlalu banyak matematika, dan mengetahui teori kategori berguna. Jadi ini masalah biaya / manfaat. Jika Anda menyukai matematika, jika mungkin Anda memiliki sedikit latar belakang aljabar (mis., Apa yang kelompok bebas lebih dari set, dering gratis dll) maka belajar teori kategori akan mudah, dan jika Anda berencana melakukan pekerjaan yang (terinspirasi oleh) pemrograman fungsional, mengetahui kategori akan bermanfaat.
Akhirnya, teori kategori adalah matematika yang indah, dan layak dipelajari hanya karena sangat rapi.
Lihat kontribusi Uday Reddy dalam diskusi ini untuk pandangan berbeda.
sumber
Teori kategori pembelajaran adalah investasi waktu yang sangat besar, dan pertanyaan apakah layak itu sangat valid. Saya masih berjuang dengan ini juga , dan saya sudah tahu mengapa saya harus mempelajarinya. Saya menulis:
Idenya di sini adalah menggunakan kategori alih-alih set atau "bit yang tidak ditentukan" sebagai kemungkinan semantik untuk teori tipe tertentu atau bahasa pemrograman. Mengapa orang ingin melakukan ini? Pertimbangkan dualitas antara tindakan dan observasi. Pengamatan yang berbeda (atau setidaknya urutan waktunya) tidak saling mengganggu (di luar mekanika kuantum), tetapi ini tidak selalu benar untuk tindakan yang berbeda. Prasangka berakar tentang logika yang tertanam dalam teori himpunan membuatnya sulit untuk memodelkan tindakan, dibandingkan dengan pengamatan pemodelan.
Saya tidak yakin bahwa benar-benar ada korespondensi yang sempurna antara teori kategori dan teori tipe seperti yang diklaim di sini :
Memang benar bahwa teori kategori dapat memberikan semantik untuk teori jenis (yang dapat sangat berguna), tetapi saya ragu bahwa teori jenis benar-benar memberikan bahasa sintaksis formal yang cukup kuat untuk mengekspresikan semua perhitungan yang dilakukan dalam teori kategori.
Dalam praktiknya, kegunaan teori kategori dapat muncul dengan menyarankan pertanyaan dan analogi yang bermanfaat. Tetapi teori kategori juga dapat menyarankan kegiatan dan pertanyaan yang pada akhirnya berubah menjadi gangguan (buang-buang waktu) dari masalah yang sangat penting. Dan Anda tentu bisa belajar logika dan mengetik teori tanpa peduli tentang teori kategori.
sumber