Mekanisme konkurensi apa yang disediakan oleh Raku dan bagaimana cara mengevaluasinya? [Tutup]
Saya seorang mahasiswa yang saat ini mengerjakan disertasi saya tentang Raku, yang mana saya telah memutuskan untuk mengevaluasi apakah Raku (Perl 6) adalah bahasa yang baik ketika berhadapan dengan konkurensi tinggi.
Saya belum dapat menemukan makalah apa pun tentang konkurensi Raku kecuali untuk situs resminya. Juga, saya tidak tahu bagaimana mengevaluasi konkurensi Raku (misalnya, program apa yang harus saya gunakan, bahasa mana yang harus dibandingkan dengan Raku, dll.).
Mekanisme konkurensi apa yang disediakan oleh Raku? Di mana ini didokumentasikan? Bagaimana fungsionalitas dan kinerjanya dievaluasi?
Jawaban
Raku menyediakan sejumlah mekanisme konkurensi yang berbeda (dan lebih jauh lagi menyediakan sejumlah pendekatan pemrograman paralel juga, tetapi saya akan menganggap pertanyaannya benar-benar hanya tentang konkurensi). Mayoritas dari apa yang ada di Raku dapat ditemukan dalam bahasa lain; sebagai contoh:
- The
gather
/take
mekanisme untuk malas memproduksi nilai-nilai. Ini terlihat dalam berbagai bahasa sebagai fungsi generator; di Raku, bagaimanapun, tidak ada batas frame stack tunggal, jadi mereka sangat kuat. (Ini tidak dalam konteks apa pun yang melibatkan pemrograman asinkron, tetapi masih memenuhi definisi konkurensi). - The
Promise
mekanisme untuk menyampaikan hasil tunggal dari operasi asynchronous adalah banyak sepertiPromise
dalam JavaScript atauTask
di Net (semantik yang sedikit lebih dekat dengan yang terakhir). - A
Supply
adalah aliran nilai asinkron. Ini memiliki sedikit kesamaan dengan ekstensi reaktif (Rx) , namun telah memilih penamaan dan API yang cocok dengan keseluruhan desain bahasa Raku (misalnya, nama metode cocok dengan dual sinkron mereka pada urutan). - A
Channel
adalah antrean serentak, yang memiliki mekanisme untuk menyampaikan penyelesaian dan kesalahan, yang berarti Anda dapat dengan mudah melakukan transisi antara paradigmaSupply
danChannel
. Perbedaan utamanya adalahChannel
penyimpanan memiliki - Anda dapat memasukkan nilai ke dalamnya, dan segera melanjutkan untuk melakukan hal lain - sementara jika Anda mengirimkan nilai ke dalam,Supply
Anda membayar biaya pemrosesan (memberikan mekanisme tekanan balik). Beragam arsitektur dapat dibangun menggunakanChannel
s, seperti arsitektur berbasis peristiwa yang dipentaskan .
Konsep paling khas dalam Raku, yang tidak ada secara langsung dalam bahasa lain, adalah react
/ supply
/ whenever
konstruksi. Prosesor penulisan beberapa aliran asinkron sering kali menantang (manajemen langganan, kontrol konkurensi); konstruksi menyediakan pendekatan pemrograman terstruktur untuk itu. Di luar itu, sebagian besar masalah integrasi bahasa menjadi sedikit lebih kuat di Raku, daripada memperlakukan hal-hal ini hanya sebagai perpustakaan.
Seperti yang telah dicatat oleh orang lain, belum banyak dokumen formal yang digunakan. Namun, slide ini mungkin menarik (penafian: itu milik saya; Saya berkontribusi pada desain konkurensi Raku, dan menemukan react
/ supply
/ whenever
).
- 8 cara untuk melakukan konkurensi dan paralelisme di Perl 6
- Pengertian bereaksi, suplai, dan kapanpun
- Di dalam Perl 6 concurrency - melihat bagaimana penerapannya
Makalah tentang konkurensi Raku : Jika Anda ingin penjelasan tentang cara kerja konkurensi, tidak ada makalah akademis yang saya ketahui. Anda dapat mencari di beberapa publikasi Kalender Advent, misalnya yang ini tentang konkurensi di server HTTP . Kebanyakan buku tentang Raku, seperti Resep Raku saya sendiri (diterbitkan oleh Apress), berisi bab tentang Concurrency, jadi itu sesuatu yang bisa Anda lihat juga. Akhirnya, makalah yang saya tulis bersama ini menggunakan konkurensi Raku untuk komputasi evolusioner, untuk hasil yang baik.
Bagaimana mengevaluasi konkurensi Raku: * Raku menggunakan proses sekuensial berkomunikasi , dan menggunakan Channels sebagai objek kelas satu. Dalam hal ini, ini mirip dengan Go . Di sisi lain, ia dapat melakukan utas otomatis aliran data melalui hyper / race dengan cara yang sama seperti yang dilakukan Julia melalui makro. Jadi itu bisa jadi dua target pembanding.
Mungkin milis pengguna perl6 bisa menjadi tempat yang lebih baik untuk mengajukan pertanyaan seperti ini.
CSP yang dibangun untuk raku adalah model konkurensi mapan yang disusun oleh Tony (Anthony) Hoare. Anda mungkin juga ingin mencari pekerjaan oleh Bill (William) Roscoe yang melanjutkan penelitian Tony. Perhatikan bahwa ini akan menjadi penelitian CSP umum. Saya ragu apakah ada referensi yang dapat dilakukan secara khusus pada Raku.