fbpx

Microsoft Rilis Bahasa Pemrograman Bosque – Tanpa Loop, Terinspirasi oleh TypeScript

Bahasa Pemrograman Bosque – Interview Microsoft Research telah memperkenalkan bahasa pemrograman open source baru yang disebut bahasa pemrograman Bosque yang bercita-cita untuk menjadi sederhana dan mudah dipahami dengan merangkul operasi aljabar dan teknik menghindari yang menciptakan kompleksitas.

Bahasa pemrograman Bosque terinspirasi oleh sintaks dan jenis TypeScript dan semantik MLdan Node / JavaScript. Ini adalah gagasan ilmuwan komputer Microsoft Mark Marron, yang menggambarkan bahasa tersebut sebagai upaya untuk bergerak melampaui model pemrograman terstruktur yang menjadi populer pada 1970-an.

Paradigma pemrograman terstruktur, di mana kontrol aliran dikelola dengan loop, conditional, dan subrutin, menjadi populer setelah makalah 1968 berjudul ” Go To Statement Dianggap Berbahaya ” oleh ilmuwan komputer Edsger Dijkstra.

bahasa-pemrograman-bosque Microsoft Rilis Bahasa Pemrograman Bosque - Tanpa Loop, Terinspirasi oleh TypeScript
images credits: teknoiot.com

Marron percaya kita bisa melakukan yang lebih baik dengan menyingkirkan sumber kompleksitas seperti loop, keadaan yang bisa berubah, dan referensi kesetaraan. Hasilnya adalah bahasa pemrograman bosque, yang merepresentasikan paradigma pemrograman yang oleh Marron, dalam makalah yang ditulisnya , menyebut “pemrograman yang diatur.”

“Model ini dibangun berdasarkan keberhasilan pemrograman terstruktur dan tipe data abstrak dengan menyederhanakan model pemrograman yang ada menjadi bentuk yang teratur yang menghilangkan sumber kesalahan utama, menyederhanakan pemahaman dan modifikasi kode, dan mengubah banyak tugas penalaran otomatis dari kode menjadi proposisi sepele,” Marron menjelaskan dalam makalah teknisnya.

Seperti Apa Rupa Bahasa Pemrograman Bosque

Seperti apa bentuk bahasa pemrograman bosque? Berikut ini contoh yang setara dengan forloop imperatif dalam JavaScript, di mana // menunjukkan komentar satu baris.

//Functor (Bosque) 

var a = List[Int]@{...}; 
//Pre: true 

var b = a.map[Int](fn(x) => x*2); 
//Post: List[Int]::eq(fn(x, y) => y == x*2, a, b)

Kunjungi GitHub repo untuk melihat lebih banyak contoh.

Dalam sebuah wawancara email yang dikutip dariThe Register , Marron mengatakan referensi kesetaraan – ketika dua variabel menunjuk ke objek yang sama dalam memori – merupakan contoh dari jenis kompleksitas yang dapat menyebabkan masalah.

“Tampaknya sangat sederhana tetapi begitu Anda memiliki [referensi persamaan] dalam semantik Anda harus terus-menerus memikirkannya bersama dengan penunjuk aliasing relasi yang diperkenalkannya,” katanya. “Salah satu makalah favorit saya tentang aliasing adalah dari tahun 2001 berjudul ‘Pointer Analysis: Belumkah Kita Memecahkan Masalah Ini?’ dan di sini kita berada di 2019 dengan pointer alias masalah pasti masih belum terpecahkan. “

Sebagai contoh, Marron menjelaskan metode yang sebelumnya selalu mengembalikan objek baru, yang ingin Anda optimalkan sehingga mengembalikan objek baru, sebagai pola tunggal atau dari cache.

“Dalam bahasa di mana objek memiliki identitas, ini bisa mengubah perilaku program,” katanya. “Namun, di Bosque yang tidak mengizinkan identitas objek, perubahan semacam ini selalu aman.”

Contoh lain, katanya adalah berbagai bentuk perilaku tak tentu. “Dalam JavaScript, fungsi pengurutan tidak diperlukan untuk menjadi stabil, jadi V8 menggunakan pengurutan yang tidak stabil,” katanya.

“Secara teori ini sepertinya hal yang sepele, tetapi dalam praktiknya itu berarti bahwa setiap kali pengembang mengurutkan daftar mereka harus ingat bahwa itu tidak stabil dan memperhitungkan kemungkinan penataan ulang nilai dengan nilai sortir yang sama. Chromium bug 90 adalah dibuka pada 2008 dengan masalah stabilitas dan, sebelum akhirnya ditutup tahun lalu karena banyak keriuhan, bug ini memiliki lebih dari 1700 komentar. “

Tiga besar

Makalah teknis Marron mengeksplorasi sumber potensial dari kompleksitas bahasa pemrograman Bosque coba atasi. Tetapi dia mengatakan menghilangkan negara yang bisa berubah, loop, dan referensi kesetaraan mewakili tiga besar.

“Dalam literatur akademis masalah terkait pembaruan kuat, loop-invarian, dan analisis alias semuanya telah dikerjakan secara ekstensif selama 30+ tahun dan masih tetap menjadi masalah terbuka yang besar,” katanya. “Dengan menghilangkan fitur-fitur ini, dan kebutuhan untuk menyelesaikan masalah yang terkait, banyak hal seperti eksekusi simbolis berkurang menjadi tugas-tugas sederhana secara konseptual (seperti yang pertama kali dijelaskan oleh Floyd, Hoare, dan Dijkstra).”

Marron mengatakan tujuan awal Bosque adalah membangun validasi kode nol-usaha otomatis, pengecekan SemVer otomatis, dan kompilasi untuk menggunakan perangkat keras SIMD, seperti AVX atau SSE. “Pada titik ini kami hanya melakukan ini dengan tangan pada contoh-contoh kecil tetapi, pada dasarnya, tampaknya tidak ada hambatan yang tidak dapat diatasi untuk implementasi praktis,” katanya.

Saat ini, Marron melihat Bosque sebagai cara untuk mengeksplorasi pilihan desain bahasa dan membantu menciptakan tools developer otomatis seperti verifier dan kompiler melalui kolaborasi dengan komunitas pengembang akademik dan online.

“Harapannya adalah menggunakan Bosque sebagai bukti konsep untuk berbagai ide di ruang ini,” katanya. “Di masa depan kita dapat bekerja untuk memindahkan ide-ide ini menjadi produksi dalam beberapa bentuk.”

Saat ini, Bosque bergantung pada penerjemah yang ditulis dalam TypeScript, dijalankan pada Node.js, sebagai implementasi referensi. Ke depan, Marron bermaksud untuk mengimplementasikan kompilasi WASM dan kode asli di masa depan. Dalam beberapa bulan mendatang, katanya, dia akan fokus pada mengisi berbagai item TODO, perbaikan bug, dan mengembangkan fitur yang akan mendukung penulisan program yang lebih besar dalam bahasa tersebut.

Dia mengatakan dia memiliki dua pekerja magang tahun ini, dari University of New Mexico dan University of Colorado Boulder, yang akan fokus pada pengalaman pengembang perangkat yang lebih maju, seperti memverifikasi aplikasi bebas dari kesalahan runtime tanpa upaya programmer tambahan dan secara otomatis menetapkan batasan untuk penggunaan memori seiring waktu.

Jika Bosque menemukan tempat di ekosistem pengembangan di luar eksperimen akademis, Marron yakin itu mungkin berada di cloud atau ruang IoT karena kode Bosque dapat dikompilasi menjadi jejak kecil, dapat dimulai dengan cepat, dan dapat diverifikasi kebenarannya melalui analisis simbolik.

Ingin mempelajari lebih lanjut klik tautan ini….

Topik Lainnya: