Mekanisme konkurensi apa yang disediakan oleh Raku dan bagaimana cara mengevaluasinya? [Tutup]

Dec 28 2020

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

14 JonathanWorthington Dec 29 2020 at 05:39

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/ takemekanisme 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 Promisemekanisme untuk menyampaikan hasil tunggal dari operasi asynchronous adalah banyak seperti Promisedalam JavaScript atau Taskdi Net (semantik yang sedikit lebih dekat dengan yang terakhir).
  • A Supplyadalah 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 Channeladalah antrean serentak, yang memiliki mekanisme untuk menyampaikan penyelesaian dan kesalahan, yang berarti Anda dapat dengan mudah melakukan transisi antara paradigma Supplydan Channel. Perbedaan utamanya adalah Channelpenyimpanan memiliki - Anda dapat memasukkan nilai ke dalamnya, dan segera melanjutkan untuk melakukan hal lain - sementara jika Anda mengirimkan nilai ke dalam, SupplyAnda membayar biaya pemrosesan (memberikan mekanisme tekanan balik). Beragam arsitektur dapat dibangun menggunakan Channels, seperti arsitektur berbasis peristiwa yang dipentaskan .

Konsep paling khas dalam Raku, yang tidak ada secara langsung dalam bahasa lain, adalah react/ supply/ wheneverkonstruksi. 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
9 jjmerelo Dec 28 2020 at 17:53

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.

5 p6steve Dec 29 2020 at 04:10

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.