Ramai orang mengalami kesukaran atau kecewa dengan bahasa pengaturcaraan yang mereka gunakan setiap hari. Ada yang menginginkan sesuatu ditangani dengan lebih abstrak, sementara yang lain tidak suka melaksanakan ciri yang mereka kehendaki adalah 'standard'. Sama ada anda seorang profesional IT atau hanya penggemar hobi, berkali-kali anda mungkin ingin membuat bahasa pengaturcaraan baru.
Langkah-langkah
Langkah 1. Membiasakan diri dengan teknologi
Anda tidak boleh membuat bahasa pengaturcaraan jika anda tidak tahu menggunakan komputer.
Langkah 2. Biasakan dengan istilah
Penulis penyusun sering menggunakan istilah yang tidak dikenali. Baca kompilator sebelum meneruskan. Pastikan anda mengetahui semua perkara yang perlu anda ketahui.
Langkah 3. Tentukan masalah apa yang diselesaikan oleh bahasa anda
Adakah ini menangani masalah khusus domain, atau apakah itu bahasa tujuan umum?
Langkah 4. Fikirkan tentang semantik bahasa anda dan konsepnya
- Adakah anda akan membenarkan akses penunjuk langsung atau tidak?
- Apakah jenis data bahasa anda?
- Adakah bahasa statik atau dinamik?
- Apakah model memori anda? Adakah anda akan menggunakan pengumpul sampah atau pengurusan memori manual? (Sekiranya anda menggunakan pengumpul sampah, bersiaplah untuk menulisnya atau menyesuaikan yang ada dengan bahasa anda.)
- Bagaimana cara menangani serentak? Adakah anda akan menggunakan model threading / locking yang sederhana atau sesuatu yang lebih kompleks seperti Linda atau model pelakon? (Sejak sekarang komputer mempunyai banyak teras.)
- Adakah terdapat fungsi primitif yang terdapat dalam bahasa atau semuanya akan datang dari perpustakaan?
- Apakah paradigma atau paradigma bahasa anda? Berfungsi? Berorientasikan objek? Prototaip (seperti JavaScript)? Berorientasikan aspek? Berorientasikan templat? Atau sesuatu yang sama sekali baru?
- Bagaimana bahasa anda akan berinteraksi dengan perpustakaan dan bahasa yang ada (terutamanya C)? Perkara ini penting jika anda membina bahasa khusus domain.
- Akhirnya, beberapa jawapan untuk soalan-soalan ini akan dijawab oleh langkah kedua dan akan membantu anda menjawab langkah seterusnya.
Langkah 5. Fikirkan beberapa tugas khusus yang ingin dilakukan seseorang dengan bahasa anda
Sebagai contoh, 'mereka mungkin ingin mengarahkan robot mengikuti garis' atau 'mereka mungkin ingin membuat program desktop yang agak mudah alih di dalamnya' atau 'mereka mungkin ingin membuat aplikasi web dengannya'.
Langkah 6. Eksperimen dengan idea sintaks (teks bahasa) untuk contoh di atas
Berhati-hatilah untuk memastikan bahasa anda berada dalam kategori bahasa tanpa konteks atau sesuatu di dalamnya. Penjana penghurai anda dan anda akan menghargainya di kemudian hari
Langkah 7. Tuliskan tatabahasa formal untuk sintaksis
Langkah 8. Tentukan sama ada bahasa itu akan ditafsirkan atau disusun
Maksudnya dalam dunia yang ditafsirkan pengguna anda biasanya akan mengedit program anda dalam editor, dan menjalankannya secara langsung pada jurubahasa; semasa berada di dunia yang disusun, pengguna anda akan menyunting program anda, menyusunnya, menyimpan hasil yang dapat dilaksanakan di suatu tempat dan menjalankannya.
Langkah 9. Tulis pengimbas dan penghurai bahagian depan atau cari alat yang membantu anda dalam hal ini
Juga, fikirkan bagaimana penyusun / jurubahasa anda akan memberi amaran kepada pengguna anda mengenai kesalahan program dan kesalahan sintaks
Langkah 10. Gunakan maklumat penghurai untuk menulis kod objek atau perwakilan perantaraan
Minta pengurai membuat AST, kemudian buat kod objek anda dari AST menggunakan tiga kod alamat atau SSA kakaknya, kemudian buat jadual simbol untuk menentukan fungsi anda, pemboleh ubah global, dll.
Juga, bergantung pada bahasa anda, anda mungkin juga ingin membuat jadual penunjuk maya atau jadual maklumat untuk kelas anda (untuk menyokong refleksi atau RTTI)
Langkah 11. Tulis pelaksana atau penjana kod yang akan mengikat semuanya bersama-sama
Langkah 12. Tulis banyak program ujian untuk menguji bahasa
Anda ingin membuat program yang menekankan beban tatabahasa formal anda untuk melihat bahawa penyusun anda menerima semua yang ada di dalam definisi anda dan menolak semua yang berada di luarnya
Langkah 13. Pertimbangkan bagaimana pengguna akan menyahpepijat program mereka sendiri
Langkah 14. Sekiranya bahasa anda menggunakan perpustakaan standard, anda pasti mahu menulisnya
Bersama dengan pengutip sampah atau ciri runtime lain jika anda memerlukannya.
Khususnya, jika anda menulis penyusun, anda memerlukan kod yang akan dilaksanakan oleh sistem operasi untuk mula menjalankan kod pengguna (misalnya, memperuntukkan semua pemboleh ubah global)
Langkah 15. Terbitkan bahasa anda, bersama dengan spesifikasi untuknya dan beberapa contoh perkara yang boleh anda lakukan di dalamnya
Jangan lupa untuk mendokumentasikan bagaimana anda boleh berintegrasi dengan perpustakaan, bahasa dan cara menggunakan ciri runtime dan / atau perpustakaan standard
Video - Dengan menggunakan perkhidmatan ini, beberapa maklumat dapat dikongsi dengan YouTube
Petua
- Mulakan dengan merancang bahasa anda dan jangan menulis kod apa pun, sehingga anda berpuas hati dan telah menjawab semua (atau sebahagian besar) soalan atau masalah yang berkaitan dengan reka bentuk anda kerana lebih mudah untuk menukar reka bentuk lebih awal daripada kemudian.
- Ketahui platform sasaran anda (sistem operasi dan perpustakaan) untuk penyusun / jurubahasa anda, bagaimanapun, anda akan menggunakannya dan memanipulasinya.
Amaran
- Fikirkan jika anda benar-benar memerlukan bahasa baru, dan apa yang dimiliki oleh bahasa anda yang baru yang tidak dimiliki oleh bahasa lain (Ini mungkin merupakan gabungan ciri atau satu ciri).
- Menulis bahasa sukar jika anda tidak tahu apa yang anda lakukan. Ia juga memerlukan banyak latihan.
- Bersiaplah untuk meluangkan masa dalam reka bentuk bahasa, kerana anda tidak akan berpeluang mengubah bahasa anda setelah anda menulis penyusun dan melewati titik reka bentuk.
- Jangan cuba menjadikan ciri-ciri anda menjadi gabungan beberapa bahasa, seperti mengatakan bahawa bahasa anda akan menjadi gabungan bahasa X, bahasa Y dan bahasa Z. Sejarah telah menunjukkan kepada kita bahawa bahasa yang diciptakan sedemikian tidak akan pernah berjaya, atau semua orang akan memprogram PL / 1 dan bukannya sesuatu berdasarkan C.