Bagaimana cara membuat bahasa pemrograman sendiri [bagian 2]

Jika Anda belum membaca bagian pertama, silakan klik [sini]

Merancang Syntax

Seperti yang sudah dibahas di bagian pertama, setelah Anda membuat daftar kelemahan bahasa pemrograman yang Anda pakai. Maka selanjutnya Anda harus merancang sintaks bahasa pemrograman Anda.

Untuk dapat merancang sintaks bahasa pemrograman yang baru, beberapa poin berikut yang harus diperhatikan:

  • Pertama, Anda harus menguasai bahasa pemrograman yang Anda pakai sekarang (C++, dsb)
  • Kedua, tentukan jenis bahasa pemrograman yang Anda buat, apakah Interpreting, langsung compiling, atau, hanya berupa parser (pemeriksa sintaks), untuk kemudian di-compile atau di-interpret oleh tool lain.
  • Tentukan bahasa pemrograman yang dipakai untuk membuat tool translator, Anda pun harus menguasainya.
  • Anda tentunya harus menguasai struktur sintaks bahasa pemrograman Anda sendiri.

Merancang sintaks bahasa pemrograman baru dengan berpedoman pada sintaks lama, akan lebih mudah untuk dikembangkan, sebagai contoh:

Anda merasa bahwa C tidak perlu memakai typedef, maka di sintaks baru, typedef tersebut dihilangkan. Selain menghilangkan statement, Anda juga bisa mengubah command (perintah), misalkan dalam Terminal Linux dirasa terlalu panjang memakai ‘export’ sebagai perintah assignment, maka di sintaks yang baru bisa diganti dengan command ‘set’, atau malah menggunakan metacharacter assignment, yaitu menggunakan karakter assignment = >> atau := (var = isivariabel, dsb.), Anda dapat mempertimbangkan untuk menggunakan include dibanding import. Atau Anda dapat melakukan pengurangan perintah (command reduction), jika sintaks keseluruhan sudah baik menurut Anda. Misalnya: dalam AutoHotkey perintah ‘FileSelectFile’ bisa direduksi menjadi ‘SelectFile’. Atau dalam C++ MessageBox direduksi menjadi MsgBox.

Atau hal yang paling ekstrem, misalnya saja Anda sudah menganggap keseluruhan bahasa pemrograman yang Anda gunakan sudah sangat baik, hanya saja terlalu banyak bahasa asing yang menyulitkan programmer pemula. Untuk itu Anda memutuskan untuk mentranslasikan (menterjemahkan) bahasa pemrograman yang berbahasa Inggris, ke dalam Bahasa Indonesia (atau bahasa lainnya) untuk memudahkan pemahaman dan pengajaran konsep. Hal ini tentu lebih cocok untuk para ‘totally beginner’, ketimbang programmer medium sampai Advanced yang sudah kadung familiar dengan istilah asing yang dimaksud.

Bahasa pemrograman berbahasa Indonesia

Dalam hal ini, pengubahan hanya pada bahasa native pemrograman sebelum, ke bentuk Bahasa Indonesia akan lebih mudah lagi, karena Anda tidak perlu lagi memikirkan kelemahan pemrograman sebelumnnya. Contoh bahasa pemrograman berbahasa Indonesia adalah AYU, Bahasa AYU ini sebenarnya hanya di-parse dan ditranslasi ke dalam bahasa C#, dan di-compile. Namun, pembuatan parser dan translator AYU tidaklah semudah memikirkannya, pasti akan ada kesulitan dalam hal logika, hingga pembuatnya harus menetapkan berbagai aturan dalam parser dan translatornya.

(Terinspirasi oleh) Bahasa Nusa

Saya sangat terkesan oleh bahasa pemrograman Nusa, bahasa Nusa ini sebelumnya bernama Batak, dinamai Batak karena ketidaksukaan pembuatnya (Pak Bernaridho) terhadap Java. Beliau menghilangkan beberapa statement yang dianggapnya tidak perlu, dan saya rasa, sangat efisien dan lebih mudah ketimbang bahasa lain. Tapi, Nusa di-parse dan di-translate bukan kedalam bahasa C# atau C++. Nusa ditranslasikan ke bahasa Low Level, yaitu Assembly. Mendengar Assembly sudah pasti sangat sulit menterjemahkan dari bahasa yang mirip C, Pascal, dst kedalam Assembly. Nah, disinilah letak kesulitannya.

Membuat parser dan translator

Menurut saya, pekerjaan yang paling sulit dalam membuat bahasa pemrograman (interpreted language) adalah: Pertama membuat Parser, kemudian translator, mengapa demikian? Karena parser memilah source code, memeriksa keabsahan script, dan ini sangat rumit, sekalipun dibantu Regular Expression. Belum lagi mengolah sintaks assignment, bertolak belakang dengan translator yang hanya menerima input dari parser dan menulis ke file output. Pandangan terhadap tingkat kesulitan ini tentu berbeda tiap jenis pemrogramannya (hanya translasi atau interpretasi, atau keduanya). Yang pasti translasi lebih mudah dari interpretasi, karena translasi cukup mengolah barisan teks sintaks, sedangkan interpretasi harus merangkap translator plus harus berurusan dengan garbage collection, variable, penanganan event, dan sebagainya.

Mind Controlling

Semua kesulitan diatas bisa diatasi dengan Mind Controlling, apa itu Mind Controlling? Yaitu mengendalikan pikiran agar kita tidak terlalu terbebani memikirkan, mengatur, menulis, testing, debugging bahasa pemrograman yang akan dibuat. Bagaimana caranya?

Seperti yang ditulis dibagian pertama, kita harus punya motivasi, sesuatu yang membuat kita memiliki tujuan untuk apa membuat bahasa pemrograman, seperti yang dialami saya sendiri. Kala itu saya membuat bahasa baru bernama SubDot, yang memiliki misi untuk mengadopsi kekuatan C++, dan kelebihan AutoHotkey, namun untuk siapa bahasa ini dibuat, inilah motivasi yang tidak saya miliki. Dan kehancuran SubDot datang. Selang beberapa minggu, saya termotivasi membuat bahasa baru, untuk mengajari teman yang kesulitan belajar pemrograman, begitu saja ide terus mengalir. Akhirnya bahasa pemrograman yang saya rancang selesai prototipnya, dan saya beri nama Plowbig, kependekkan dari “Programming Language Originally Written By IG (aka Adjie)”. Bahasa Plowbig ini akan dibahas di artikel mendatang.

Merancang parser dan translator

Setelah Anda merancang sintaks Anda sendiri, maka tahap selanjutnya adalah membuat parser dan translator, saya tidak akan menjelaskan cara membuat parser dan translator di artikel ini, karena sudah pasti masing-masing programmer berbeda sintaksnya dan cara pengolahannya. Bila Anda sudah merancang sintaks yang mirip VBS misalnya, berarti Anda harus memparse tiap baris perintah untuk dianalisa dan diekstrak tiap perintah berikut parameternya.

Anda dapat merancang parser dan translator dalam satu executable atau secara terpisah (executable parser dan translator masing-masing). Namun disini kita berbicara kemudahan, Anda bisa mempertimbangkan pilihan kedua. Nah, setelah parser dan translatorselesai dibuat, Anda dapat menggabungkannya.

Lain VBS, lain C++. Dalam C++, C++ berbasis function. Jadi untuk mentranslasikan bahasa yang mirip C++, bisa saja Anda parse perbaris, namun untuk parsing, selalu ingat bahwa C++ (dan beberapa yang lain) menggunakan function Main() sebagai entry-pointnya, akan lebih rumit membuat interpreter-nya.

Tool interpreter, parser, dan translator bisa dibuat menggunakan bahasa apa saja yang menurut Anda cukup powerful, untuk bahasa sejenis VBS (Scripting), cari bahasa pemrograman yang mendukung RegEx, ini adalah solusi termudah daripada harus mentrace setiap string (sangat melelahkan). Praktis, Anda pun harus menguasai RegEx. Lalu bahasa pemrograman yang digunakan (untuk membuat parser dst) harus dapat menangani input/output file (kebanyakan bahasa dapat melakukannya). Bahasa Perl pun bisa dijadikan parser dan translator. Karena Perl memang dibuat untuk keperluan pengolahan string (teks).

Buat Dokumentasi

Ini adalah salah hal yang paling penting. Tanpa dokumentasi, orang lain tak pernah tahu bagaimana cara menggunakan bahasa Anda. Bisa saja Anda mengajarkan langsung kepada user target Anda. Namun, apakah mereka lantas menguasainya seperti Anda? Tentu tidak, terkadang user pun bisa belajar sendiri berbekal dokumentasi. Disamping itu, sertakanlah beberapa sampel script yang dibuat dengan bahasa Anda. Tentu untuk lebih memudahkan lagi.

Adakan Support

Adakalanya Anda merasa dokumentasi Anda sudah sangat baik, tapi apakah para ‘totally beginner’ tahu istilah-istilah dalam dokumentasi Anda? Adakan bantuan dengan mailist, Blog, forum, dsb.

Terus kembangkan

Selalu kembangkan bahasa pemrograman Anda, tingkatkan efisiensi dan kemampuannya, bila perlu, Anda dapat membentuk tim untuk membantu Anda. Dan (bila dikehendaki) Anda bisa meminta donasi (atau meminta bayaran).

Uji kemampuan bahasa pemrograman Anda

Ada sesuatu yang menarik bila Anda telah menciptakan sebuah bahasa pemrograman. Setelah Anda bersusah payah membuat parser, translator, dan menguji bahasa pemrograman Anda sendiri. Anda bisa menguji seberapa hebatkah kemampuan programming language Anda di www.rosettacode.org, di situs ini bahasa pemrograman Anda akan disandingkan dengan bahasa yang berkali-kali lipat lebih populer. Dan, Anda ditantang untuk bisa melakukan suatu ‘task’ dengan bahasa pemrograman Anda, bila bahasa pemrograman Anda mampu melakukan hal-hal umum terlebih spesifik yang ditawarkan rosettacode.org, Anda bisa jadi meraih popularitas tak terduga sebelumnya. Banyak bahasa pemrograman yang masuk dalam rosseta’s challenge mulai dari C++ (yang terkenal) hingga bahasa E (Anda pernah dengar bahasa ini?), semua bahasa pemrograman tersebut mungkin menginspirasi Anda untuk mengembangkan bahasa pemrograman lebih lanjut.

Kesimpulan

Masih banyak hal lain yang harus diperhatikan, terlebih bila bahasa pemrograman impian Anda termasuk kompleks, namun saya hanya memberikan sebagian dasar yang saya tahu, Anda dapat menentukan langkah Anda berikutnya, bussiness planning, cara memasarkannya. dan sebagainya.

Penutup

Demikian tutorial membuat bahasa pemrograman sendiri, semoga bermanfaat. Saya akan membahas Plowbig, mulai dari perkenalan, membuat parsernya, translator, hingga pemakaian sintaksnya di artikel depan.

Referensi:

www.id.wikipedia.org/wiki/Bahasa_pemrograman

15 thoughts on “Bagaimana cara membuat bahasa pemrograman sendiri [bagian 2]

  1. AJI saya rasa anda sudah mengenali saya
    saya adalah teman sekelas waktu SMP kelas 7
    bisa tolong asih detailnya gg klo perlu
    mampir ke rumah saya buat ngasih tau detailnya dan mungkin mempraktekannya di rumah saya

    TERIMAKASIH……..

  2. Hebat, ditunggu nih bahasa pemrogramannya. BTW, “Kedua, tentukan jenis bahasa pemrograman yang Anda buat, apakah Interpreting, langsung compiling, atau, hanya berupa parser (pemeriksa sintaks)” adalah kurang akurat. Bahasa pemrograman independen terhadap cara code-translation.

    Untuk membuktikan hal tersebut, code-translation bahasa pemrograman NUSA ada yang bersifat full-compilation, full-interpretation, dan mixed. Yang mixed inipun masih dibagi atas dua kategori lagi.

    Contoh nyata: source-code pada HTML tidak selalu di-interpret. Ada yang memakai compile sehingga ada CHM (Compiled HTML). SQL tidak selalu di-interpret. Dulu ada Clipper yang compile source-code dalam SQL.

  3. Sedikit koreksi tentang NUSA.

    Tergantung cara code-translationnya, source-code dalam NUSA tidak selalu di-translate ke C/C++. Hanya untuk compile barulah source-code dalam NUSA di-translate ke C/C++, itupun internal dan temporer.

    Setelah itu compiler translate source-code dalam C tersebut ke intermediate-code dalam format tertentu. Jadi tidak benar di-translate ke Assembly language.

    Encoding runnable-code dan intermediate-code bersifat mixed (ada text, ada nontext). Ini pendekatan yang modern yang dipakai secara umum. Tapi runnable-code yang dihasilkan Linker NUSA adalah runnable-code.

    1. Wah mohon maaf baru dibalas, Plowbig dulunya sudah ada draftnya, dan sudah dibuat interpreter sederhananya. Tapi naasnya tahun 2014 harddisk saya rusak. Jadi malas lagi buat dari awal.

      Anyway, terima kasih sudah berkomentar. 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *