Saya sangat menikmati desain bahasa pemrograman. Terkadang saya pikir proyek bahasa saya dan pengguna potensial mereka akan mendapat manfaat dari dokumen standar yang komprehensif. Saya telah melihat banyak standar bahasa, mulai dari yang sangat formal (C ++) hingga yang agak informal (ECMAScript), tetapi saya tidak dapat benar-benar memahami bagaimana saya harus memecah hal-hal dan mengatur dokumen seperti itu, meskipun saya pikir saya cukup pandai menulis teknis secara umum.
Haruskah saya menulisnya seperti tutorial panjang, atau lebih seperti kertas matematika formal? Bagaimana saya memperbaruinya jika saya mengembangkannya bersamaan dengan implementasi referensi? Haruskah saya menyerah dan memperlakukan implementasi dan dokumentasi sebagai standar de facto? Lebih lanjut, apakah benar-benar ada manfaat signifikan untuk memiliki standar? Apakah memerlukan standar berarti bahasanya tidak perlu rumit?
Jawaban:
Saya menemukan spesifikasi bahasa Jawa baik formal dan mudah dibaca, dan saya pikir itu memiliki struktur yang masuk akal. Beberapa spesifikasi W3C bisa menjadi contoh yang baik juga.
Melakukan pekerjaan formal dapat membantu Anda menekan kompleksitas bahasa dan melihat kasus sudut.
Judul dump otak: pengkodean sumber, lexing, tipe fundamental, literal, operator, ekspresi, pernyataan sederhana, kondisional, loop, fungsi (definisi dan panggilan), deklarasi tipe, modul, unit kompilasi, pelingkupan variabel, berbagai jenis resolusi nama (mis. impor, metode), model memori, efek samping, pengetikan, konkurensi ...
sumber
Baca banyak dan tetap sederhana
Merancang bahasa baru itu sulit. Sangat sulit. Tetapi pada akhirnya sangat memuaskan jika itu menjadi populer dan benar-benar menyelesaikan masalah yang orang alami dengan cara yang elegan.
Seperti yang saya sebutkan di komentar, saya sarankan Anda membaca Domain Specific Languages oleh Martin Fowler karena alasan berikut:
Mengenai cara menulis spesifikasi Anda, pikirkan tentang audiens Anda. Jelas, sebelum meletakkan jari ke keyboard untuk merancang bahasa Anda, Anda akan berpikir dengan hati-hati tentang apa yang dimaksudkan untuk dilakukan.
Jika ini adalah bahasa baru yang ditafsirkan untuk menggantikan JavaScript maka Anda akan menginginkan pendekatan yang sangat laissez faire untuk menjangkau pengembang web dengan rentang perhatian terbatas dan keinginan untuk hasil segera - atau lebih cepat jika memungkinkan.
Jika itu akan digunakan pada misi berikutnya ke Titan, maka spesifikasi yang sangat rinci menunjukkan bukti formal yang tepat dari perilaku masing-masing komponen akan menjadi level entri minimal.
Jadi, ini bukan hal yang mudah. Untuk mendekati spesifikasi, Anda mungkin akan lebih baik mendapatkan banyak pengalaman dalam menciptakan bahasa Anda dan juga bekerja dengan mereka yang benar-benar menggunakannya setiap hari. Jika Anda memiliki korban yang bersedia ... eh ... pengembang, di tempat kerja yang dapat meluangkan waktu untuk mempelajari bahasa Anda, maka mereka dapat memberi Anda umpan balik tentang apa yang diperlukan untuk membuat mereka menggunakannya.
Singkatnya, sederhanakan dan lebih banyak orang akan menggunakannya.
sumber
Wirth merancang dan mengimplementasikan banyak bahasa pemrograman: di antaranya, spesifikasi untuk bahasa Oberon dan Oberon2 terkenal untuk kelengkapan, kesederhanaan, dan keterbacaan di sana.
sumber
Common Lisp dan Haskell memiliki standar bahasa. Ruby dan Python memiliki implementasi dan dokumentasi. Jadi saya akan mengatakan bahwa standar bahasa tidak diperlukan, tetapi mungkin akan membantu jika Anda mengharapkan ada lebih dari satu implementasi bahasa yang Anda rancang. Di sisi lain, standar terlalu dini jika Anda mengharapkan perubahan signifikan dalam definisi bahasa Anda.
sumber
spesifikasi apa pun harus singkat dan dapat bertahan dalam ujian waktu
inilah mengapa Anda melihat abstraksi seperti BNF digunakan untuk banyak standar bahasa ... singkat dan masih akan dipahami lama setelah banyak alat kami saat ini telah ditinggalkan.
tentu saja ada lebih dari sekadar tata bahasa. lihat apa yang telah dilakukan orang lain ... perl6, skema, C ... mereka membahas masalah yang juga diperhatikan oleh implementor.
sumber