Saya tahu sedikit tentang FORTH jadi saya akan membatasi diri untuk itu. Ini adalah bahasa tingkat rendah, memberi Anda akses programmer ke semua sumber daya perangkat keras. Jadi Anda bisa melakukan apa pun yang Anda suka.
Konkurensi
Untuk memiliki program paralel (sunting: digunakan untuk mengatakan program konkuren nyata), Anda memerlukan setidaknya dua unit eksekusi (CPU-s). Agak sepele untuk mengimplementasikan kata dalam FORTH yang mengatakan, sebagai contoh, "jalankan kata ini pada prosesor 2 menggunakan dua argumen ini". Kata akan mengalokasikan dua tumpukan yang diperlukan pada prosesor 2 dan mulai menjalankan kata. Anda perlu membatasi diri Anda dalam konstruksi apa yang dapat Anda gunakan dalam program itu.
Jika jumlah program bersamaan lebih besar dari jumlah unit eksekusi Anda akan pergi untuk program "pseudo parallell". Pada dasarnya ada dua cara untuk melakukan itu: coroutine atau preemptive multitasking. Bagaimanapun juga adalah mungkin (tidak mudah, tetapi dijelaskan dengan baik dalam literatur) bagaimana mencapai hal ini dan FORTH memungkinkan Anda untuk mengakses semua hal tingkat rendah yang Anda butuhkan.
Evaluasi malas
Tentu saja Anda dapat melakukan ini dalam FORTH seperti pada hampir semua bahasa pemrograman. Itu tidak akan seanggun atau "built-in" seperti di katakanlah Haskell. Saya akan menggunakan contoh yang sangat naif.
Idenya adalah Anda mendefinisikan "fungsi" (digunakan secara longgar di sini) yang mengembalikan serangkaian hal. Salah satu contohnya adalah fungsi yang mengembalikan semua bilangan bulat. Anda kemudian melakukan operasi pada set ini dan ketika Anda selesai memberikan hasilnya. Sebagai contoh, Anda mungkin ingin menjumlahkan semua bilangan bulat hingga jumlahnya lebih besar dari 1000. Evaluasi yang tidak malas pertama-tama akan mengalokasikan semua bilangan bulat sebagai himpunan, yang tidak mungkin karena ada jumlah bilangan bulat yang tak terbatas. Kemudian akan mulai bekerja pada set ini. Implementasi yang malas akan memiliki cara "beri saya nilai berikutnya dalam set". Melakukan ini benar-benar hanya membutuhkan satu variabel di funktion "nilai terakhir memberi".
Haskell melakukan hal-hal seperti ini. Tentu saja menangani situasi yang lebih rumit tetapi idenya sama. Ini menutup evaluasi dengan cara yang memungkinkan Anda sebagai programmer untuk berkonsentrasi pada masalah, bukan pada bagaimana menyelesaikannya.