Pengenalan Bahasa Dalam Pemrograman Pony.

Pengenalan Bahasa Dalam Pemrograman Pony.

Pengenalan Bahasa Dalam Pemrograman Pony. – Pony, semacam “Rust meet Erlang,” membuatnya lebih mudah untuk mengembangkan program yang cepat, aman, efisien, dan sangat bersamaan.

Pengenalan Bahasa Dalam Pemrograman Pony.

Di Wallaroo Labs, di mana saya adalah Wakil Presiden bidang teknik, kami sedang membangun prosesor aliran terdistribusi berkinerja tinggi yang ditulis dalam bahasa pemrograman Pony. https://3.79.236.213/

Kebanyakan orang belum pernah mendengar tentang Pony, tetapi ini adalah pilihan yang sangat baik untuk Wallaroo, dan mungkin juga merupakan pilihan yang sangat baik untuk proyek Anda berikutnya.

“Bahasa pemrograman hanyalah alat lain. Ini bukan tentang sintaksis. Ini bukan tentang ekspresif. Ini bukan tentang paradigma atau model. Ini tentang mengelola masalah yang sulit.” Sylvan Clebsch, pencipta Pony

Saya seorang kontributor untuk proyek Pony, tetapi di sini saya akan membahas mengapa Pony adalah pilihan yang baik untuk aplikasi seperti Wallaroo dan berbagi cara saya menggunakan Pony. Jika Anda tertarik untuk melihat lebih dalam mengapa kami menggunakan Pony untuk menulis Wallaroo, kami memiliki posting blog tentang itu.

Apa itu Poni?

Anda dapat menganggap Pony sebagai sesuatu seperti “Karat bertemu Erlang.” Fitur olahraga kuda poni yang layak dibanggakan:

  • Jenis-aman
  • Aman untuk memori
  • Pengecualian-aman
  • Bebas balapan data
  • Bebas kebuntuan

Selain itu, ini dikompilasi ke kode asli yang efisien, dan dikembangkan di tempat terbuka dan tersedia di bawah lisensi BSD dua klausa.

Itu banyak fitur, tapi di sini saya akan fokus pada beberapa yang menjadi kunci perusahaan saya mengadopsi Pony.

Kenapa Poni?

Menulis program yang cepat, aman, efisien, dan sangat bersamaan tidak mudah dengan sebagian besar alat kami yang ada. “Cepat, efisien, dan sangat bersamaan” adalah tujuan yang dapat dicapai, tetapi memasukkan “aman”, dan segalanya menjadi jauh lebih sulit. Dengan Wallaroo, kami ingin mencapai keempatnya, dan Pony membuatnya mudah untuk dicapai.

Sangat Bersamaan

Pony membuat konkurensi menjadi mudah. Bagian dari cara melakukannya adalah dengan memberikan cerita konkurensi yang berpendirian. Di Pony, semua konkurensi terjadi melalui model aktor.

Model aktor paling terkenal melalui implementasi di Erlang dan Akka. Model aktor telah ada sejak tahun 1970-an, dan detailnya sangat bervariasi dari implementasi ke implementasi. Apa yang tidak bervariasi adalah bahwa semua komputasi dijalankan oleh aktor yang berkomunikasi melalui pesan asinkron.

Pikirkan model aktor seperti ini: objek dalam pemrograman berorientasi objek adalah metode status + sinkron dan aktor adalah metode status + asinkron.

Ketika seorang aktor menerima pesan, itu mengeksekusi metode yang sesuai. Metode itu mungkin beroperasi pada keadaan yang hanya dapat diakses oleh aktor itu. Model aktor memungkinkan kita untuk menggunakan keadaan yang dapat diubah dengan cara yang aman secara konkurensi.

Setiap aktor adalah single-threaded. Dua metode dalam aktor tidak pernah dijalankan secara bersamaan. Ini berarti bahwa, dalam aktor tertentu, pembaruan data tidak dapat menyebabkan balapan data atau masalah lain yang umumnya terkait dengan utas dan status yang dapat diubah.

Cepat dan Efisien

Aktor kuda poni dijadwalkan dengan penjadwal pencurian pekerjaan yang efisien. Ada satu penjadwal Pony per CPU yang tersedia. Model konkurensi thread-per-core adalah bagian dari upaya Pony untuk bekerja bersama dengan CPU untuk beroperasi seefisien mungkin.

Runtime Pony berusaha seramah mungkin dengan CPU-cache. Semakin sedikit kode Anda meronta-ronta cache, semakin baik itu akan berjalan. Pony bertujuan untuk membantu kode Anda bermain bagus dengan cache CPU.

Runtime Pony juga menampilkan tumpukan per aktor sehingga, selama pengumpulan sampah, tidak ada langkah pengumpulan sampah “menghentikan dunia”. Ini berarti program Anda selalu melakukan setidaknya beberapa pekerjaan. Akibatnya, program Pony berakhir dengan kinerja yang sangat konsisten dan latensi yang dapat diprediksi.

Aman

Sistem tipe Pony memperkenalkan konsep baru: kemampuan referensi, yang menjadikan keamanan data sebagai bagian dari sistem tipe. Jenis setiap variabel di Pony mencakup informasi tentang bagaimana data dapat dibagikan antar aktor. Kompilator Pony menggunakan informasi untuk memverifikasi, pada waktu kompilasi, bahwa kode Anda bebas dari data-race dan deadlock.

Jika ini terdengar seperti Rust, itu karena memang begitu. Kemampuan referensi Pony dan pemeriksa pinjaman Rust keduanya memberikan keamanan data; mereka hanya mendekatinya dengan cara yang berbeda dan memiliki pengorbanan yang berbeda.

Apakah Pony Tepat Untuk Anda?

Memutuskan apakah akan menggunakan bahasa pemrograman baru untuk proyek non-hobi itu sulit. Anda harus mempertimbangkan kesesuaian alat terhadap ketidakdewasaannya dibandingkan dengan solusi lain. Jadi, bagaimana dengan Pony dan Anda?

Pony mungkin solusi yang tepat jika Anda memiliki masalah konkurensi yang sulit untuk dipecahkan. Aplikasi bersamaan adalah raison d’être Pony. Jika Anda dapat mencapai apa yang Anda inginkan dalam skrip Python utas tunggal, Anda mungkin tidak memerlukan Pony. Jika Anda memiliki masalah konkurensi yang sulit, Anda harus mempertimbangkan Pony dan sistem tipenya yang bebas ras dan sadar data yang kuat.

Anda akan mendapatkan kompiler yang akan mencegah Anda memperkenalkan banyak bug terkait konkurensi dan runtime yang akan memberi Anda karakteristik kinerja yang sangat baik.

Memulai Dengan Pony

Jika Anda siap untuk memulai dengan Pony, kunjungan pertama Anda seharusnya adalah bagian Belajar dari situs web Pony. Di sana Anda akan menemukan petunjuk untuk menginstal kompiler Pony dan sumber daya untuk mempelajari bahasa tersebut.

Pengenalan Bahasa Dalam Pemrograman Pony.

Jika Anda ingin berkontribusi pada bahasa yang Anda gunakan, kami memiliki beberapa masalah ramah pemula yang menunggu Anda di GitHub.