'ra 0 Report post Posted July 28, 2004 Hi!Agak-agak bilakah kita dapat melihat perisian pengaturcaraan buatan tempatan. Tidak kiralah dalam bahasa Inggeris ke, Melayu ke, ada tak di antara saudara/saudari yang lebih berpengetahuan dari saya ni, mampu membina satu compiler ataupun interpreter ringkas?Melihatkan semakin banyak perisian yang penghasil perisian (compiler) kini dalam bentuk sumber terdedah (Open Source), tidak siapakah dari kita yang mempunyai keinginan untuk membina satu penghasil perisian yang berciri-ciri pemikiran tempatan (kita)?Ataupun, membina satu penterjemah perisian seperti dari bahasa Basic ke Assembly yang menyokong pelantar/flatform 32bit?Diharapkan, sudi-sudilah membincangkan hal ini. Saya mempunyai minat yang tinggi untuk menyertai sebarang projek yang mempunyai dasar open source untuk membina bahasa pengaturcaraan kita sendiri. Sekurang-kurangnya, sebagai penguji-gunanya (beta-tester). Quote Share this post Link to post Share on other sites
DevGuy 0 Report post Posted July 28, 2004 hai again..anyway kalau nak buat satu compiler kena guna bahasa pengaturcaraan SML maksud nyer functional language..anyway memang masa kat universiti dulu kita org kena buat bahasa sendiri base on yg ada kat internet...cuba check kat functional programming atau SML.. now SML.NET dah kuar..anyway memang lama tinggal benda nii..tapi b4 this memang minat nak buat bahasa sendiri but bila fikir2 bahasa melayu memang tak sesuai.. cu check this code i mean syntax.kalau i = 5 kemudian keluarkalautak ...tamat kalau.anyway dulu buat macam ni tapi hmm i dont know la .. maybe we need some new syntax for malay..what da ya thinkanyway i really like to continued this thing using sml.net...or other way we can develop RAD for malay.. like using VB or REalbasic or create new language like VBMalay or somethin else..have an idea?? Quote Share this post Link to post Share on other sites
siti 0 Report post Posted July 28, 2004 sudah ada tetapi tidak dikormesialkan (internal use only). apa yang dia orang buat adalah scripting engine dengan menggunakan bahasa simplified c++ & java. vm pula based on java vm machine. Quote Share this post Link to post Share on other sites
encik pot pet 0 Report post Posted July 28, 2004 kalau awak bersungguh2 nak buat...kan bagus awak mulakan dulu...nanti ada hasil sket..so orang boleh tengok dan join sekali Quote Share this post Link to post Share on other sites
'ra 0 Report post Posted July 28, 2004 tapi b4 this memang minat nak buat bahasa sendiri but bila fikir2 bahasa melayu memang tak sesuai.. cu check this code i mean syntax.kalau i = 5 kemudiankeluarkalautak ...tamat kalau.anyway dulu buat macam ni tapi hmm i dont know la .. maybe we need some new syntax for malay.. memang kelakar. tapi ia boleh diperbaiki lagi sintaksnya dengan seringkas yang boleh. Contohnya: Jika i = 5 Maka      ' If.. then   Benda.Kiri = 14    ' Object.Left i.e. Form   Benda.Atas = 20    ' Object.Top   Benda.Pamer      ' Object.Show JikaLain i = 7 Maka    ' ElseIf..then   Benda.Sorok      ' Object.Hide Lain            ' Else   Borang.Tutup      ' Object.Close Dah Jika          ' End If Kalau diperhatikan betul-betul, ianya macam bahasa pasar. Yang penting bahasa yang mudah tu ramai yang faham dan senang nak belajar. Kalau nak kira mula-mula Basic keluar dulu, orang putih tu ketawakan kerana guna 'broken language'. Nak simple punya pasal, lama-lama semua orang tahu apa itu Basic compiler. Tu Bill Gates punya kerjalah, dia tak tahu programming. Partner dia Allen sape ntah seorang programmer. Teruk dia kena kerjakan mengubah-suai Basic compiler yang original. Agak sukar juga kalau nak pilih perkataan yang sesuai untuk Jenis Data Pernomboran seperti Long, Short, Single, Byte, Word, Dword dan Double. Tapi boleh cuba juga, macam: Nak Abu   sbg Luas   'Dim x As Long Nak Siti   sbg Dekat  'Dim x As Short Nak Suiz   sbg Tunggal 'Dim x As Single Nak Tombol  sbg Ganda  'Dim x As Double Nak Secubit sbg Bait   'Dim x As Byte Nak Nilai  sbg Nombor  'Dim x As Integer Nak Julie  sbg BerDua  'Dim x As Dword Nak Joe   sbg SeDua  'Dim x As Word SiLuas  Karim = 1     'DEFLNG x  sama dgn DIM x AS LONG SiDekat Labu (1 hingga 10) = {1,2,3,4,5,6,7,8,9,10} Saya rasa tak sesusah yang dijangka dalam pemilihan sintaks untuk arahan-arahan dan jenis-jenis data. Cuma bagi pengaturcara yang dah biasa dengan bahasa HLL Inggeris akan merasa kekok. Bagi orang baru, ianya boleh masuk otak lebih pantas dari menghabiskan secawan kopi sambil bersembang kat kedai mamak.Sebaik-baiknya, ia bermula dengan sesuatu yang ringkas dan menangani isu pengiraan dulu sebelum sintaks dan object untuk fungsi-fungsi yang lebih kompleks. Ataupun suatu experiment boleh dilakukan menggunakkan perisian yang telah ada dengan menggunakan sintaks directive, seperti:$DEFINE SBG AS$DEFINE LUAS LONG$DEFINE JIKA IF$DEFINE LAIN ELSE$DEFINE DAH ENDKemudian secara beransur-ansur, pemindahan kod asas ke 'compiler' Melayu dilakukan setelah ujian dasar memberikan hasil yang memuaskan.Ini hanyalah pandangan secara logik ringkas saya sebagai orang biasa. Quote Share this post Link to post Share on other sites
'ra 0 Report post Posted July 28, 2004 kalau awak bersungguh2 nak buat...kan bagus awak mulakan dulu...nanti ada hasil sket..so orang boleh tengok dan join sekaliHi zeph,Keinginan tu ada. Masalahnya macam bertepuk sebelah tangan. Saya cuma menguasai satu bahasa aturcara saya iaitu Basic menggunakan Rapid-Q basic. Jadi, jika saya nak membuat sekurang-kurangnya 'translator' ke bahasa aturcara yang lain, kenalah mendalami bahasa aturcara yang lagi satu.Jika dilakukkan dalam projek berkumpulan, contohnya kod akhir 'compiler' Melayu ini akan disusun-ikat menggunakan Assembler seperti Fasm, kenalah ada salah seorang dari ahli kumpulan itu tahu bahasa Assembly Fasm. Dengan adanya intergrasi dua pengetahuan ini pastinya prototaip awal dapat dihasilkan dan diuji.Lebih-lebih lagi saya tiada asas pendidikkan IT peringkat tinggi, untuk mempelajari satu lagi bahasa aturcara secara sendirian akan mengambil masa yang agak panjang. Yang ada cuma ilham dalam kepala ni je. Jadi kena cari 'team' nak buat projek ni. Barulah boleh Ilham tu di turunkan ke atas kertas sebagai 'blue-print' untuk model 'compiler' Melayu ni..Pada pendapat patiklah, pacal yang hina ni Quote Share this post Link to post Share on other sites
aRmsTer 0 Report post Posted July 28, 2004 benda ni xmustahil.. cuma pertama sekali kena buat kajian terperinci untuk senarai term dlm bahasa melayu yg akan digunakan : contohnye utk "if"... nak guna perkataan "JIKA" ke, "andaikata" ke, "bilamana" ke, "jikalau" ke, "kalau" ke, etc. pasal sume perkataan ni merefer pada perkataan yg sama ("if")...jadi selagi pemilihan perkataan tu masih tersangkut... xbole la proceed ke next stage (create compiler ape sume) Quote Share this post Link to post Share on other sites
encik pot pet 0 Report post Posted July 28, 2004 (edited) yang pastinya... benda ni bukannya boleh dikomersilkan.. dan hanya utk kegunaan orang malaysia yang faham bahasa melayu. projek ni hanya utk hobbyist..and kalau berjaya.. memang tak dinafikan berapa banyak ilmu pengetahuan yg kita dapat timba...1. yang penting sekali macam mana nak design language..limitation dia, oop ke structural, etc.2. compiler/interpreter constructionlinks:http://dinosaur.compilertools.net/http://epaperpress.com/lexandyacc/index.htmlhttp://catalog.compilertools.net/good readinghttp://www.softpanorama.org Edited July 28, 2004 by zeph Quote Share this post Link to post Share on other sites
'ra 0 Report post Posted July 28, 2004 (edited) jadi selagi pemilihan perkataan tu masih tersangkut... xbole la proceed ke next stage (create compiler ape sume)Pada sayalah, perkataan untuk sintaks/arahan adalah hasil sebuah 'compiler'. 'Compiler' tersebut belum dihasilkan lagi. Jadi kerja asas ialah membuat enjin 'compiler' itu dahulu. yang pastinya... benda ni bukannya boleh dikomersilkan.. dan hanya utk kegunaan orang malaysia yang faham bahasa melayu. projek ni hanya utk hobbyist..Wawasannya adalah utk jangka masa yg panjang. Bila ada Penyusun-ikat (compiler) dalam bahasa Melayu, lebih ramai lagi akan belajar mengenainya. Walaupun utk perbelajaran, ianya menyediakan pengetahuan asas utk kumpulan pelajar dalam teknologi perisian. Bila mereka sudah biasa dengan pengaturcaraan asas, memasuki institusi pengajian untuk memperlajari teknologi penghasilan perisian menjadi lebih mudah. Lebih ramai yang mempelajarinya, lebih ramai Graduan dalam bidang ini boleh menampung keperluan didalam teknologi perisian. (mimpi disiang hari la ko 'ra...). Sememangnya didalam process penghasilannya, hobbyist menjadi faktor menyumbang kepada teknologi baru. Bila hasilnya diperolehi, barulah ada pihak-pihak swasta dan persorangan yang bermurah hati untuk menyumbangkan sokongan dalam bentuk material seperti wang ataupun peralatan sokongan untuk memajukan lagi hasilnya. Dari sinilah peruntukkan seperti ruang web dan lain-lain peralatan datang dengan sendirinya. Cuma di Malaysia ni, saiznya adalah kecil. Kecualilah individu2 dan pihak2 berkaitan dari negara jiran kita (Indonesia dan Singapura) juga menaruh minat kepada projek ini maka saiz sokongannya akan menjadi lebih besar. Itulah kelebihan Open-source. Jika hanya utk keuntungan hari ini saja, projek semacam ini tak akan menjadi kenyataan di hari perancangannya lagi. Kecualilah ianya dihasilkan oleh Syarikat komersil. Itupun Bajet R&D dan pembangunan terlalu tinggi kerana syarikat komersil kena mengeluarkan produk yang berkualiti sebelum boleh menjualkannya. Maka, risiko dan tekanannya amat tinggi.Berbeza bagi hobbyist, mereka melakukan kerana kepuasan, peningkatan upaya dan pengetahuan diri sendiri dan tiada tekanan dalam projek seperti ini. Ini kerana walau macamana pun hasilnya, ianya adalah untuk orang yang berminat sahaja. Jika ianya sangat bagus, lebih ramai lagi yang berminat dan ceritanya akan berterusan...;------------------------------Kembali kepada topik asal, ini adalah rujukkan utk dikongsi bersama yang saya sediakan hasil dari permerhatian dan bacaan yang terdapat di Internet. Kemungkinan ada beberapa kesilapan kerana kurang pengetahuan saya terhadap bahasa pengaturcaraan yang lain. Diharapkan silalah perbetulkan yang mana salah.Perbandingan arahan-arahan pengiraan bahasa2 pengaturcaraan -----------+-----------+-----------+----------------+----------------   Basic  |  Pascal  |  C/C++  |  Assembler   | Komen(Asm Melayu?) -----------+-----------+-----------+----------------+----------------   A=0   |  A:=0;   |  A=0;   |  mov A,0    | masuk 0   ke A -----------+-----------+-----------+----------------+----------------   A=A+1  |  A:=A+1;  |  A++;   |  inc A     | tambah 1  ke A -----------+-----------+-----------+----------------+----------------   A=A+B  |  A:=A+B;  |  A=A+B;  |  add A,B    | campur B  ke A -----------+-----------+-----------+----------------+----------------   A=B*6  |  A:=B*6;  |  A=B*6;  |  mov eax,B   | masuk B   ke eax       |      |      |  imul eax,6   | darab 6   ke eax       |      |      |  mov A,eax   | masuk eax  ke A -----------+-----------+-----------+----------------+----------------  A=B*C+D  | A:=B*C+D; |  A=B*C+D; |  mov eax,B   | masuk B   ke eax       |      |      |  mov ebx,C   | masuk C   ke ebx       |      |      |  imul ebx    | darab ebx  ke eax       |      |      |  add eax,D   | campur D  ke eax       |      |      |  mov A,eax   | masuk eax  ke A -----------+-----------+-----------+----------------+----------------  H=X:X=Y  | H:=X;X:=Y;| H=X;X=Y;  |  mov eax,X   | masuk X   ke eax  Y=H    | Y:=H;   | Y=H;    |  xchg Y,eax   | salin eax  ke Y       |      |      |  mov x,eax   | masuk eax  ke X -----------+-----------+-----------+----------------+----------------  A=B/15   | A:=B div  |  A=B/15;  |  xor edx,edx* | lekat edx* ke edx       | 15;    |      |  mov eax,B   | masuk B   ke eax       |      |      |  mov ebx,15  | masuk 15  ke ebx       |      |      |  idiv ebx    | belah ebx  ke eax       |      |      |  mov A,eax   | masuk eax  ke A -----------+-----------+-----------+----------------+---------------- ps - zeph, terima kasih untuk pautan2 web mengenai pembangunan 'Compiler'. Edited July 29, 2004 by 'ra Quote Share this post Link to post Share on other sites
encik pot pet 0 Report post Posted July 28, 2004 nampaknya awak dah buat research sedikit sebanyak.. mungkin jika awak lebih bersungguh,, projek yg awak mimpi2kan ni akan tercapai.. sokongan drp orang2 lain juga amat penting.. susah jugak nak buat sorang..tunggu la kalau ada orang lain yg berminat terutama sekali bebudak yang ambik course Computer Science/ITdia orang kebanyakan belajar pasal theory compiler..cya Quote Share this post Link to post Share on other sites
'ra 0 Report post Posted July 28, 2004 Sebelum perbincangan ini menjadi lebih giat lagi atau terhenti setakat di sini, saya ingin mengucapkan ribuan terima kasih kepada saudara dan saudari yang sudi meluangkan sedikit masa melayan persoalan saya mengenai Aturcara Bahasa Melayu?. sebarang komen yang telah diketengahkan di atas, adalah amat membantu dan memberikan maklumat yang tak ternilai bagi saya.Saya cuma boleh berharap pada sesiapa yang pernah mempelajari teori penghasilan compiler ketika belajar dahulu, berilah sebarang komen-komen yang membina dan yang tak membina asalkan berkaitan dengan topik ini. Kemungkinan pengetahuan anda itu tidak lagi diperlukan di dalam tugas anda hari ini, tetapi walau macamana kaburnya ingatan mengenainya, setiap cebisan maklumat itu amat bernilai kepada orang seperti saya dan mungkin juga pelawat2 lain sememang tercari-cari topik seperti ini.Cukuplah utk saya hari ini, mungkin esok akan lebih ramai lagi berminat utk membincangkan topik ini. Jika lebih ramai yg berminat, saya akan menambahkan lagi maklumat untuk rujukkan bersama hasil dari rujukkan yang telah saya buat sebelum ini.Sila teruskan dengan pandangan dan pendapat anda... Quote Share this post Link to post Share on other sites
encik pot pet 0 Report post Posted July 29, 2004 btw...awak boleh gunakan thread ni untuk report progress.. Quote Share this post Link to post Share on other sites
'ra 0 Report post Posted July 29, 2004 btw...awak boleh gunakan thread ni untuk report progress..Terima kasih zeph.Untuk hari ini, saya telah membuat satu eksperimen ke atas pembuat compiler merujuk kepada penulisan Jack Crenshaw yang bertajuk "Let's Build A Compiler". Ianya hanya sebuah enjin compiler yang sangat ringkas dan hanya menerima Huruf sebagai variable dan nombor digit sebagai nilai. Dan ianya lebih kepada bentuk Interpreter dan bukannya Compiler yang lengkap.Adaptasi ini di-olah mengunakan perisian Rapid-Q Basic dan tidak lah sukar untuk membuat sedikit pindaan untuk di compile menggunakan VB atau QuickBasic.Penyediaan Fail Sumber ArahanCara penggunaannya, sediakan satu fail yang mengandungi barisan-barisan arahan dan diakhiri dengan noktah tanda (.). Anda boleh gunaka notepad ataupun sebarang text editor untuk menulis fail sumber arahan ini dan simpan dengan nama fail yang mempunyai sambungan ".par" atau ".txt". Ini adalah contoh kandungan fail cuba.par: A=10-2 !A ?C ?D B=A*(D-(C/2)) !B E=10-6*4/2 !E F=(10-6)*4/2 !F . Penggunaan Program Cara melancarkan Interpreter ini, ialah dari Command-line pada mod konsol (DOS PROMPT) dan dengan memberikan nama fail yang hendak ditafsir dan dilancarkan arahan-arahannya. Contohnya: PAR.EXE CUBA.PAR ataupun: PAR.EXE CUBA.TXT Pangawal Ralat Jika anda melancarkan program ini tanpa sebarang masukkan nama fail, ia akam memaparkan skrin Ralat dengan keterangan ringkas mengenai penggunaannya seperti yang ditunjukkan di bawah: ----------------------------------------   PAR - Pentafsir Arahan Ringkas ---------------------------------------- Arahan: Elak guna [SPACE] atau [TAB] Kod   Mesti diakhiri dgn noktah (.) !    Pamer nilai wakil pada skrin ?    Tunggu dari papan kekunci A-Z   Sebanyak 26 wakil boleh diguna +-*/=() Pengendali yang boleh digunakan ---------------------------------------- RALAT: Cara Guna: PAR.EXE NAMAFAIL.PAR ----------------------------------------     tekan ENTER untuk keluar Fail Sumber Kod Utama Berikut adalah kod lengkap dari fail yang saya olah kepada Bahasa Basic dan failnya diberi nama PAR.BAS: '-------------------------------------------------------------------------- ' Adaptasi dari buku "Let's build a compiler" ' oleh Jack Crenshaw ke Rapid-Q Basic oleh 'ra. ' Nama Fail: Par.bas '-------------------------------------------------------------------------- $APPTYPE CONSOLE                 ' Perisian Konsol $TYPECHECK ON                  ' Pastikan Jenis Data '-------------------------------------------------------------------------- const TRUE    = 1               ' Nilai keadaan yang sah const FALSE    = NOT (TRUE)          ' Nilai sebaliknya const fmBukaBaca = 0               ' Cara buka sesuatu fail const ctab$    = CHR$(9)            ' kunci Tab (sebagai string$). const CR     = 13              ' kunci ENTER sbg nilai ASCII. const LF     = 10              ' Baris Baru sbg nilai ASCII. '-------------------------------------------------------------------------- declare sub ERROR (s$ as STRING)         ' Hantar Ralat keluar ke fail. declare sub ABORTCOMP (s$ as STRING)       ' Lapor Ralat dan Pemberhentian. declare sub EXPECTED (s$ as STRING)       ' Lapor setiap yang ditunggu. '-------------------------------------------------------------------------- declare function UPCASE (x as SHORT) as SHORT  ' Beri kod ASCII huruf besar                         ' jika terima huruf kecil. declare function LOWCASE (x as SHORT) as SHORT  ' Beri kod ASCII huruf kecil                         ' jika terima huruf besar. '-------------------------------------------------------------------------- declare function ISALPHA(x as SHORT) as SHORT  ' Kenalpasti huruf Alpha declare function ISDIGIT(x as SHORT) as SHORT  ' Kenalpasti nombor digit declare function ISADDOP(x as SHORT) as SHORT  ' KenalPasti pengendali + - declare function ISMULOP(x as SHORT) as SHORT  ' Kenalpasti pengendali * / '-------------------------------------------------------------------------- declare sub GETCHAR               ' Baca satu huruf dari salur                         ' masuk. Sebagai "Pam" utama. declare sub NEWLINE               ' Kenalpasti dan lompat ke                         ' barisan baru. declare sub MATCH (x as SHORT)          ' Padankan sesuatu huruf masuk declare function GETNAME as SHORT        ' Ambil sesuatu penanda. declare function GETNUM  as SHORT        ' Ambil sesuatu nombor. '-------------------------------------------------------------------------- declare sub ASSIGNMENT              ' Hantar dan terjemah satu                         ' penyataan. '-------------------------------------------------------------------------- declare function TERM    as SHORT       ' Hantar dan terjemah dialek declare function FACTOR   as SHORT       ' Hantar dan terjemah faktur declare function EXPRESSION as SHORT       ' Hantar dan terjemah penyata '-------------------------------------------------------------------------- declare sub CONSINPUT              ' Kendali kemasukkan declare sub CONSOUTPUT              ' Kendali pengeluaran '-------------------------------------------------------------------------- declare sub INITTABLE              ' Sediakan ruang Pewakil declare sub INITIALIZE              ' Penyediaan Pentafsir declare sub ENDCOMP               ' Penyelesaian yg berjaya declare sub INTERPRET              ' Mula Kilang utama '-------------------------------------------------------------------------- '_______________________________ PEWAKILAN ________________________________ '-------------------------------------------------------------------------- DEFSHORT look = 0     ' Pemerhati Char(0..255) sbg 16bit (lebih stabil) dim vtable(0 to 25) as SHORT   ' 26 susunan utk pemboleh-ubah huruf ALPHA '-------------------------------------------------------------------------- '_______________________________ QOBJECTS _________________________________ '-------------------------------------------------------------------------- dim InputFile as QFILESTREAM           ' Pengendali kandungan fail '-------------------------------------------------------------------------- '_____________________________ SUB PROGRAMS _______________________________ '---------------------- Pengeluaran & Lapor Ralat ------------------------- sub ERROR (s$ as STRING)       ' hantar pesanan Ralat pada pengeluaran   print "----------------------------------------"   print "   PAR - Pentafsir Arahan Ringkas"   print "----------------------------------------"   print "Arahan: Elak guna [SPACE] atau [TAB]"   print "Kod   Mesti diakhiri dgn noktah (.)"   print "!    Pamer nilai wakil pada skrin"   print "?    Tunggu dari papan kekunci"   print "A-Z   Sebanyak 26 wakil boleh diguna"   print "+-*/=() Pengendali yang boleh digunakan"   print "----------------------------------------"   print "RALAT: "+s$        ' Pamer ralat pada skrin utk rujukkan   print "----------------------------------------"   input "     tekan ENTER untuk keluar";s$ 'sleep 5 end sub sub ABORTCOMP (s$ as STRING) '___________________' Lapor Ralat dan hentikan   ERROR s$   end end sub sub EXPECTED (s$ as STRING) '_____________________' Lapor apa yang ditunggu   ABORTCOMP s$+" dinantikan" end sub '__________________________________________________________________ '---------- Pewakil dari PASCAL disesuaikan dgn 1 SHORT (16bits). --------- function UPCASE (x as SHORT)  ' beri kod ASCII utk huruf besar bila terima                ' huruf kecil   if (x >= 97 and x <= 122) then    UPCASE = x - 32   else    UPCASE = x   end if end function function LOWCASE (x as SHORT) ' beri kod ASCII utk huruf kecil bila terima                ' huruf besar.   if (x >= 65 and x <= 90) then    LOWCASE = x + 32   else    LOWCASE = x   end if end function '_____________________________________________________________ '------------ Hantar 0 jika bukan, selainnya sah, 16 bits ----------------- function ISALPHA(x as SHORT) as SHORT '________ Kenalpasti satu huruf ALPHA   ISALPHA = (UPCASE(x) >= 65 and UPCASE(x) <= 90) end function function ISDIGIT(x as SHORT) as SHORT '_______ Kenalpasti satu nombor digit   ISDIGIT = (x >= 48 and x <= 57) end function function ISADDOP(x as SHORT) as SHORT '__________ Kenalpasti pengendali + -   ISADDOP = (x = ASC("+") or x = ASC("-")) end function function ISMULOP(x as SHORT) as SHORT '__________ Kenalpasti pengendali * / ISMULOP = (x = ASC("*") OR x = ASC("/")) end function '_____________________________________________________________ '-------------------------------------------------------------------------- sub GETCHAR '_______ Baca huruf baru dari salur penerima. "Pam" masuk utama   look = InputFile.ReadNum(1) end sub sub MATCH (x as SHORT ) '_________ Padankan simbol dgn satu huruf yg masuk   if look <> x then EXPECTED "'"+CHR$(x)+"'"   GETCHAR end sub sub NEWLINE '________________________ Kenalpasti jika baris baru dan turun   if look = CR then    GETCHAR    if look = LF then      GETCHAR    end if   end if end sub function GETNAME () as SHORT '_______________________ Dapatkan pengenalan   if not ISALPHA(look) then EXPECTED "Nama"    ' Pewakil   GETNAME = UPCASE(look)   GETCHAR end function function GETNUM () as SHORT '____________________________ Asingkan Nombor   DEFINT value = 0          ' Pewakil utk kegunaan dalaman shj.   if not ISDIGIT(look) then EXPECTED "Nombor"   while ISDIGIT(look)    value = (10 * value) + (look-48)    ' 48 ialah "0" dalam ASCII    GETCHAR   wend   if (value > 32767) or (value < -32768) then EXPECTED "Nombor 16bit"   GETNUM = (value) end function '_____________________________________________________________ '-------------------------------------------------------------------------- sub ASSIGNMENT '________________ Tukar dan Tafsir kandungan sesuatu penyata   DEFSHORT iname            ' Pewakil utk kegunaan dalaman shj.   iname=GETNAME   MATCH ASC("=")   vtable(iname-65) = EXPRESSION end sub function FACTOR () as SHORT '_______________________ Beri satu nilai faktor   if look = ASC("(") then    MATCH ASC("(")    FACTOR = EXPRESSION    MATCH ASC(")")   elseif ISALPHA(look) then    FACTOR = vtable(GETNAME-65)             ' 65 = ASCII "A"   else    FACTOR = GETNUM   end if end function function TERM () as SHORT '_________ Tukar dan Tafsir satu maksud pengiraan   DEFINT value = 0           ' Pewakil utk kegunaan dalaman shj.   value = FACTOR   while ISMULOP(look)    select case look      case ASC("*")        MATCH ASC("*")        value = value * FACTOR      case ASC("/")        MATCH ASC("/")        value = value / FACTOR      case ELSE        EXPECTED "Pengendali gandaan" ' MULOP    end select   wend   TERM = value end function function EXPRESSION () as SHORT '__________________ Beri sesuatu penyataan   DEFINT value = 0                   ' Pewakil dalaman   if ISADDOP(look) then 'cuba mula dgn 0. Utk tolak:(0-1) dari guna (-1)    value = 0   else    value = TERM   end if   while ISADDOP(look)    select case look      case ASC("+")        MATCH ASC("+")        value = value + TERM      case ASC("-")        MATCH ASC("-")        value = value - TERM      case ELSE        EXPECTED "Pengendali tambahan" ' ADDOP    end select   wend   EXPRESSION = value end function '_____________________________________________________________ sub CONSINPUT '_________________________________________ Kendali kemasukkan   MATCH ASC("?")   input vtable(GETNAME-65) end sub sub CONSOUTPUT '_______________________________________ Kendali pengeluaran   MATCH ASC("!")   print vtable(GETNAME-65) end sub '__________________________________________________________________ '-------------------------------------------------------------------------- sub INITTABLE '_____________________________________ Sediakan ruang pewakil   DEFSHORT i              ' Pewakil utk kegunaan dalaman shj.   for i = 0 to 25     vtable(i) = 0   next end sub '__________________________________________________________________ sub INITIALIZE '"mulakan pam utama"----------------------------------------   if COMMANDCOUNT <> 1 then ABORTCOMP "Cara Guna: PAR.EXE NAMAFAIL.PAR"   if FILEEXISTS(COMMAND$(1)) = False then ABORTCOMP "MENUNGGU Fail Masuk"   InputFile.Open(COMMAND$(1), fmBukaBaca)   if InputFile.Size = 0 then ABORTCOMP "Tiada maklumat di dalam fail"   print "----------------------------------------" ' Garis hiasan mula                           ' pelancaran.   INITTABLE                     ' panggil penyedia utk                           ' ruang "ingatan".   GETCHAR                      ' Mula "pam" utama end sub sub ENDCOMP '_________________________________________ Tutup pentafsir ini   print "----------------------------------------" ' Garis hiasan penutup                           ' penggunaan.   InputFile.Close                  ' tutup pengendali fail end sub '___________________________________________________________________ '--------------------------------------------------------------------------- sub INTERPRET '______________________________________ Gelungan program utama   INITIALIZE                    ' sediakan pelancaran   do    select case look      case ASC("?")        CONSINPUT      case ASC("!")        CONSOUTPUT      case else        ASSIGNMENT    end select    NEWLINE   loop until look = ASC(".")  ' Perhatikan simbol utk tamat penggunaan(.)   ENDCOMP                        ' penafsiran tamat. end sub '___________________________________________________________________ '__________________________ MULAKAN PROGRAM ________________________________ '--------------------------------------------------------------------------- INTERPRET                  ' Lancar process pentafsir utama end Jika terdapat sebarang pertanyaan mengenai syntax yang ingin ditukarkan ke Bahasa Aturcara lain, silalah ajukan di dalam thread ini ataupun topik Rapid-Q Basic. Hasil Pelancaran Ketika ianya dilancarkan ia akan mempamerkan nilai A (8) dan kemudian akan berkelip-kelip menunggu anda masukkan sesuatu nombor digit untuk nilai C. Anda harulah tekan ENTER untuk meneruskannya. Kemudian, ia akan berkelip-kelip lagi menunggu and memasukkan nilai D. Selepas itu, tiada lagi menunggu sebarang masukkan dari pengguna dan terus menunjukkan nilai B. E dan F dan keluar dari program. Lihat hasil yang ditunjukkan di bawah ini: ---------------------------------------- 8 34 <- nilai C dari pengguna 26 <- nilai D dari pengguna 72 -2 8 ---------------------------------------- Nota mengenai nilai 34 dan 26 adalah tambahan dari saya untuk menunjukkan di mana sesuatu masukkan itu dibuat. Ini semua bergantung dengan kod arahan yang ada tulis. Sila rujuk fail cuba.par di atas.KesimpulanDari asas sumber kod compiler PAR di atas, peningkatan keupayaannya boleh lagi ditingkatkan. Apa yang saya ingin lihat atau harapkan, ada di antara para pengguna perisian lain seperti C/C++ ataupun Assembler, mengubah-suaikan sumber kod ini kepada bahasa aturcara masing-masing dan dikongsi bersama setelah ianya berjaya di compile dan di-uji. Quote Share this post Link to post Share on other sites
Admin 0 Report post Posted July 30, 2004 Hai `ra,Mencipta sebuah programming language dalam bahasa melayu termasuk dalam salah satu angan-angan saya.Pada pendapat saya, 1. pembangunan bahasa baru ini tidak semestinya merupakan terjemahan langsung dari mana-mana bahasa yg ada2. bahasa yg dibangunkan mestilah boleh dijadikan sebagai penggalak kepada lebih ramai programmers melayu, bermula dari sekolah rendah - inilah visi sebenar! Mungkin suatu hari- budak sekolah rendah boleh start belajar programming dari sini!3. tapi bukanlah sebuah bahasa yg level bebudak sahaja, tetapi cukup powerful untuk develop useful application.4. can be extended, using open source libraries.5. tak perlu go on komersil, tapi biarlah viable jika nak apply research grant (contohnya MSC) - biarpun peringkat awal ni bukan nak apply apa-apa grant pun.okay.. Quote Share this post Link to post Share on other sites
DarkWan 3 Report post Posted July 30, 2004 (edited) bahasa pengaturcaraan wajah malaysia (dibaca:melayu)saya pernah terjumpa laman web MalayBasic. tapi dah lama dah benda ni. mcm tak update jer. setahun lebih dah sy since my last visit kat sana.check kat http://malaybasic.tripod.com/malaybasic/ Edited July 30, 2004 by DarkWan Quote Share this post Link to post Share on other sites
'ra 0 Report post Posted July 30, 2004 (edited) Hai Shanai,1. pembangunan bahasa baru ini tidak semestinya merupakan terjemahan langsung dari mana-mana bahasa yg adaSebenarnya, tiada peraturan mengenainya yang menentukan reka-bentuk bahasa "baru" untuk tujuan pembelajaran dan target audience tempatan. Yang menjadi perkara penting ialah adakah ianya mudah untuk dipelajari? Bagi saya, jika saya pernah mengeluarkan beberapa versi compiler sebelum ini, barulah saya mampu menghasilkan suatu yang sepenuhnya berbeza dari yang lain.Untuk permulaan, biarlah belajar merangkak dahulu, kemudian diakhiri dengan belajar berlari. Tak lupa juga belajar bagai mana nak berhenti... 2. bahasa yg dibangunkan mestilah boleh dijadikan sebagai penggalak kepada lebih ramai programmers melayu, bermula dari sekolah rendah - inilah visi sebenar! Mungkin suatu hari- budak sekolah rendah boleh start belajar programming dari sini!Saya setuju dengan pendapat ini. Tidak dipertikaikan lagi. Straight to the point. No hanky-panky.3. tapi bukanlah sebuah bahasa yg level bebudak sahaja, tetapi cukup powerful untuk develop useful application.4. can be extended, using open source libraries.Ia adalah lebih bergantung kepada progress sesuatu projeck bahasa aturcara itu berkembang. Kalau report card dia selalu merah aje, tak semua bahasa aturcara mampu berkembang maju kehadapan. Ade juga yang layu bila baru nak memperkenalkan penampilannya.5. tak perlu go on komersil, tapi biarlah viable jika nak apply research grant (contohnya MSC) - biarpun peringkat awal ni bukan nak apply apa-apa grant pun. he..he.he.. ingin ikut serta dan mempunyai access kepada sumber kodnya? Biar kita lihat dari perspetif yang berbeza. Saya setuju kepada koncep Open-Source, dan paling pentingnya, ahli-ahli yang terlibat dalam project seperti ini dengan sendiri mempelajari pelbagai perkara-perkara baru mengenai teknologi penghasilan compiler.Seperti dalam kenyataan saya terdahulu di atas, projek seperti ini dimulai dengan minat ataupun sebagai hobi. sebabnya, banyak yang perlu dipelajari seperti:- Mengatasi Pepijat/debugging yang menjadi kesukaran bagi semua pengeluar perisian. Tak kira yang kecil atau pun besar. Khidmat bantuan pengguna/Users support services. Bahagian ini adalah kritikal untuk membantu meningkatkan pendedahan perisian dan penyelesai kepada penggunaan dan kerasian terhadap berbagai versi Sistem Operasi yang menjadi 'rumah' kepada sesuatu program aturcara. Juga tentang perpindahan penggunaan kepada pelantar/flatform yang berbeza. Keserasian adalah kuci utama di sini.Jika anda memulakan satu bahasa aturcara baru dan terus sahaja mengkomersilkan dengan angan-angan yang menyatakan ia akan popular dalam sekelip mata, saya ucapkan "Selamat berjaya. Kalau ada masa datang jumpa kami lagi bermain pula dengan compiler kami. Kami sentiasa terbuka dan menerima sesiapa sahaja yang ingin menyumbang."Projek seperti ini juga akan menjadi sumber kepada sesiapa saja yang ingin mengambil sebahagian atau hampir keseluruhan sumber kod untuk dikomersilkan. Tetapi, tanggung-jawab terhadap risiko yang dihadapi tidak akan mempunyai sangkut-paut dengan mana-mana ahli yang terlibat dalam projek sumber terbuka ini. Perkara seperti ini haruslah diperjelaskan dahulu agar tiada tanggungan yang bakal diterima oleh penyumbang teknikal terhadap tindakan individu-individu yang mempunyai penilaian kormersil yang lemah dan tidak bertanggung-jawab.saya pernah terjumpa laman web MalayBasic. tapi dah lama dah benda ni. mcm tak update jer. setahun lebih dah sy since my last visit kat sana.Hai DarkWan,Nampaknya, ianya terhenti setakat tahun November 2001 sahaja. Kemungkinan mempunyai kelemahan pengurusan dan user supports seperti yang saya nyatakan di-atas. Sayang sekali, jika ianya mempunyai dasar terbuka, mungkin ianya dapat dilihat di gunakan dengan meluas walaupun untuk kegunaan tempatan.Nampaknya, hampir keseluruhan syntax-nya mudah digunakan, cuma terdapat terlalu banyak simbol-simbol yang tak perlu dilekatkan bersama keywords-nya menjadikan ianya "berbulu-bulu". Ini akan mengelirukan bila merujuk semula sumber kod untuk menambah perubahan-perubahan baru.CASE STUDYSaya tertarik dengan pendekat Negara India dalam memperkembangkan pengetahuan IT mereka. Mereka menghasilkan perisian percuma untuk mengatasi masalah yang amat nyata seperti keperluan sektor pertanian yang agak lemah dari segi pengurusan dan kurang teratur. Dengan membina satu perisian mudah dan di pasang di dalam PDA yang ringkas, ia di berikan percuma kepda ketua-ketua kampung di seluruh daerah untuk membantu penjadualan musim dan pengiraan hasil pertanian di sesuatu kampung.Oleh kerana pennggunanya tidak tahu mengenai komputer, mereka telah menterjemahkan kepada bahasa tamil yang mudah dan antara-muka pengguna yang minima untuk penggunaan. Bayangkan sebuah kalkulator. Hampir semua orang tahu menggunakkannya. Begitulah konsep yang diguna-pakai.Setiap tahun juga gaduan IT dalam teknologi perisian di India, mampu mengaturcara dan menghasilkan perisian database dan akauntasi lengkap untuk kegunaan perniagaan. Di sini, graduan kita yang keluar masih tak tahu perbezaan ah, ax dan eax (register 8bit, 16bit dan 32bit). Bukan nak merendahkan, tapi kenyataan yang hari-hari saya dengar. Maka saya ni yang belajar tak setinggi mana, nak tukarlah situasi itu dengan wawasan kecil ini sekurang-kurangnya dengan membantu dari segi pengujian jika ada projek-projek seperti ini. Edited July 30, 2004 by 'ra Quote Share this post Link to post Share on other sites
DarkWan 3 Report post Posted July 30, 2004 harap2 projek 'ra jadi kenyataan.sy hya mampu beri sokongan dari jauh. nak menolong .. tak mampu. why .. i am not a good programmer .. even belajar assembly, c++, java, asp (vbscript) pon .. tp scr rambang je.kat sini (malaysia), (kebanyakan) programmer baru start program masa kat U/kolej/IPT. tengok kat Luar, masa internet-boom dulu, ada dh jadik jutawan kecik silicon valley sbb usia blom masuk skolah menengah lagi dh jual syarikat dot com dengan harga juta-juta US.bayangkan programmer ni ibarat pokok kelapa sawit. masa tanam, tak ada hasil. lepas 3 tahun, baru dpt hasil. tapi hasil dia tu tak matang lagi la. mmg boleh dituai, tp tak berapa besar lagi. lepas 10 tahun, baru matang betul. baru sedap. so, programmer kita kat sini, lepas kuar U, mana la reti sangat nk program nih. kalo buat pun, tak tentu mantap lagi. maklumla .. baru 3 tahun. (mmg ada yg terer giler walau baru belajar setahun .. tp ini RARE cases yg sy penah jumpa .. hrp programmer kt sini jgn marah ngan statement sy nihs ok)my lecturer .. pompuan - keluarga kaya .. program PASCAL masa umur 9 tahun. skarang ni, mmg otai la. dah pun jadi timbalan pengarah akademik kt sini.(skang ni umur dia pun dah 40+)bg sy, mslh kita mgkn terletak kat penggunaan bahasa inggeris. in the age of 7 to 9, mgkn agak sukar derang nk differentiate int, char mcm dlm C berbanding Dim yg digunakan dlm VB. penggunaan english can lead to confusion .. maklumla kkadang english ni taboo sket dlm msykt Melayu. (skang ni sy blom kawin lagi. tp mmg sy dh tanam cita2 sejak 4 tahun yg lepas .. bila aku dh ada anak nnt .. aku nk expose dia ngan ilmu programming since dia 7 tahun lagi ) Quote Share this post Link to post Share on other sites
Ancient One 3 Report post Posted July 31, 2004 aku ader bahasa pengaturcaraan melayu aku sendirik. Guna fasm macro . Contoh ringkas : macro salin destinasi, sumber { Â Â mov destinasi, sumber } macro tambah dest, sumber { Â Â add dest, sumber } salin eax, ebx tambah eax, ecx bleh laaa kannnnnn... Quote Share this post Link to post Share on other sites
'ra 0 Report post Posted July 31, 2004 (edited) salin eax, ebxtambah eax, ecxWoi Ancient One! Kenapelah tak terfikir menggunakan FASM punya macro yang semudah itu! Caya lah! awak punya penyelesaian adalah yang paling simple!Care to spend a little time to help us creating most frequently used fasm keywords in Malay macro-instruction sets? Boleh gak nanti guna fasm sebagai back-end compiler. Senang sikit nak check dia punya asm translations dari front-end compiler. Awak faham fasm lebih dari yang lain. Jadi, kurang lah sikit kesilapan maksud bagi setiap Commands, Target Register dan Operand dia.Sebelum ni saya dok fikir terus guna assembly dengan buat macro instructions untuk syntax compiler Melayu ni. Tapi susah nak maintain dan debugging mesti pening habis. Kalau breakdown-kan dia jadi dua compiler module (front and back end) lebih mudah nak maintain bagi mana-mana group yang menyelenggaranya.Lebih-lebih lagi, dapatlah kite semua belajar assembly dengan lebih singkat dari biasa. Edited July 31, 2004 by 'ra Quote Share this post Link to post Share on other sites
encik pot pet 0 Report post Posted July 31, 2004 Setiap tahun juga gaduan IT dalam teknologi perisian di India, mampu mengaturcara dan menghasilkan perisian database dan akauntasi lengkap untuk kegunaan perniagaan. Di sini, graduan kita yang keluar masih tak tahu perbezaan ah, ax dan eax (register 8bit, 16bit dan 32bit). Bukan nak merendahkan, tapi kenyataan yang hari-hari saya dengar. Maka saya ni yang belajar tak setinggi mana, nak tukarlah situasi itu dengan wawasan kecil ini sekurang-kurangnya dengan membantu dari segi pengujian jika ada projek-projek seperti ini.masalah yang kita hadapi sebenarnya kat sini..aku rasa sepatutnya computer programming fundamental kena ajar kat sekolah rendah lagi..lagi satu.. aku tak berapa setuju kat kolej/universiti ajar semaksimum programming language.. java,c,c++,cobol,vb,etclebih baik ajar 1-2 programming language jer..dalam programming ni,,yang penting sekali ialah implementation data structure, algorithm.. kalau reti semua programming lang sekalipun..and tak reti nak implement something,..memang totally useless..just my humble opinion Quote Share this post Link to post Share on other sites
'ra 0 Report post Posted July 31, 2004 lagi satu.. aku tak berapa setuju kat kolej/universiti ajar semaksimum programming language.. java,c,c++,cobol,vb,etclebih baik ajar 1-2 programming language jer..dalam programming ni,,yang penting sekali ialah implementation data structure, algorithm.. kalau reti semua programming lang sekalipun..and tak reti nak implement something,..memang totally useless..IMHO, syllabus yang di sediakan untuk IPTA/S lebih mementing keperluan untuk perniagaan secara umum dan jangka pendek. seharusnya ia lebih specific seperti teknologi perisian, Assembly programming seharusnya menjadi bahasa aturcara yang paling pertama di ajar sebelum lain-lain bahasa HLL (High Level Language).Kalau kat luar negara, mana-mana graduan yang tak ader atau tak familiar dengan Assembly programming kira setakat cukup makan. Kenapa Assembly? Ia adalah bahasa yang paling dekat sekali dengan bahasa mesin(CPU). Programming sebenarnya adalah untuk menghasilkan penyelesaian. Utk menyelesaikan masalah perkomputeran, seseorang programmer itu bagaikan seorang penimbang-tara. Harus mengetahui memahami situasi kedua-dua belah pihak. Situasi mesin dan pengguna yang request kepada sesuatu penyelesaian.Bila memahami kedua-duanya, suatu penyelesaian yang dihasilkan itu adalah tepat, tidak membazir masa dan wang. Sebab itu lebih-kurang 10 tahun dulu, seorang programmer itu juga adalah seorang system analyst yang memahami system architecture. Lebih-lebih pada masa sekarang setiap komputer itu menjadi lebih canggih yang mempunyai berbagai-bagai interface yang mudah dicapai oleh pengguna. Tetapi adalah sukar bagi programmer kerana tidak memahami binaan/architechture sesuatu mesin/pc baru secara mendalam.Sebagai contoh, Setiap kali sesuatu sistem baru dikeluarkan oleh Intel, lihat ruang webnya dibahagian developer. Berpuluh-puluh mega-bait maklumat mengenai register baru dan opcode dikeluarkan dengan percuma agar para programmer dan system analyst dapat menyesuaikan dengan perisian binaan mereka. Dari aspect lain, pengeluar system seperti Intel dan lain-lain juga masih mengekalkan keserasian dengan struktur binaan 80386. Ini kerana kebanyakkan mata-pelajaran yang di sediakan di IPTA masih bemula dengan mengenali struktur system jenis ini. Jika keserasian ini tidak di-ambil kira, pelanggan mungkin tidak mahu membeli sistem mereka lagi kerana tiada sesiapa yang dapat menyesuaikannya dengan penghasilan perisian baru.Mungkin anda pernah mendengar M$ tidak pernah menggalak penggunanya menggunakan bahasa assembly untuk menghasilkan perisian. Mereka lebih menggalakkan menggunakan perisian HLL keluaran mereka seperti C++, VB dan .NET series. Ini kerana, jika ramai mengetahui bahasa Assembly, perisian mereka akan kurang dijual. Kerana, ramai yang akan tahu apakah keperluan mesin/pc ketika membina perisian baru.Walaupun begitu perisian HLL ini ada sama penting untuk keperluan di bidang-bidang yang spesifik untuk memudahkan tugas dan menjimatkan masa. Yang sebaiknya sebelum menggunakan bahasa aturcara HLL, haruslah mempunyai sedikit pendedahan dan pengetahuan mengenai Assembly ataupun sekurang-kurangnya bahasa C yang mempunyai keupayaan kepada penggunaan inline assembly.Bagi kebanyakkan hobbyist, bahasa BASIC dan C yang mempunyai access kepada penggunaan Assembly sering digunakan utk keperluan mereka sendiri di samping meningkatkan pengetahuan mereka tentang mesin komputer. Kebanyakkan remaja di luar negara menggunakan perisian ini untuk mengisi masa lapang mereka dalam projek-projek persendirian. Oleh itu, anda sering lihat projek Open Source Basic dan C di Internet.ps - takde sape-sape ke yang berminat menterjemah contoh sumber compiler yang saya berikan kat atas tu kepada bahasa aturcara lain? Ia nampak terlalu ringkas dan tak grand macam compiler yang lengkap. Tapi, cuba perhatikan betul-betul, macam mana si kecil tu dapat menyelesaikan masalah arithmatic/matematik dengan baik. Pada dasarnya itulah asas sebuah compiler. Penyelesaian pengiraan. Kemudian barulah tambah kepada keupayaan yang lain seperti pengurusan huruf dan ayat-ayat (string). Komputer hanya tahu bahasa nombor. Jadi kita guna nombor utk mengarahkannya kepada tugas-tugas yang lain. Quote Share this post Link to post Share on other sites
C-Fu 0 Report post Posted August 2, 2004 check kat http://malaybasic.tripod.com/malaybasic/ ako punye dok pikir name Basic yang mamat tu buat, tak ingat2 ako. naseb baek ko ingat aah site tu tak update2 langsung. ako takut tripod akan remove page tu je pasal inactive dah lame. so since PDP ko tengah rajin tu elok ko pegi mirror site tu. Quote Share this post Link to post Share on other sites
Ancient One 3 Report post Posted August 7, 2004 Trend orang sekarang, diaorang bukan setakat reka bahasa pengaturcaraan baru lagi, tapijuga "machine" yang baru. Basically hasilnya adalah language seperti Java, dan seimbaslalu kiter bleh tengok C# (specifically) adalah jawapan M$ kepada Sun Java. Java is notjust a language. Ia define architecture machine tersebut, so kiter bleh bina pemprosesdi mana bahasa aras rendahnya adalah java assembly. Thats why Windows/UNIX platform kiterperlukan "virtual" machine untuk run application written in Java language. Kebaikannyaseperti yang kiter tau - it can run on any machine yang ader java virtual machine (jvm),tak kira ler mesin basuh ke, microwave ke, jam ke. Running applications dalam virtual machinedah tentulah ader slack sikit tang speed since vm kena interpret setiap arahan dan convertplak kepada native instructions yang difahami oleh host platform. Since kiter define abstractmachine kat sini, so basically takde hal biler kiter nak bina, let say C/C++ compiler yangconvert C/C++ source code into java machine instruction instead of machine instruction native to thecompiler. Seperti yang dikatakan oleh 'ra, penggunaan bahasa melayu sebagai bahasa pengaturcaraanmemang sukar diterima biler kiter dah terbiasa dengan bahasa omputih. Memangla benda baruagak sukar nak sebati dengan kiter. Sama la macam kiter dengar/belajar bahasa omputih kecik2dulu. Let say kiter ader bahasa pengaturcaraan baru yang dibina dengan bahasa melayu seperti Selagi (i > 0) Buat {   ...   i = i - 1; } Of course pertama kali kiter tengok nampak pelik. Yang peliknya... kiter tak plak rase pelik biler tengok versi omputihnya while (i < 0) do {   ...   i = i - 1; } Tapi biler kiter dah terbiasa dengan Selagi (...) Buat {...}, takla rase pelik sangat biler tengok plak perkataan melayu yang lain dalam bahasa pengaturcaraan. Actually banyak gak syntax dan bahasa yang pelik2 dalam bahasa pengaturcaraan yang sedia ader terutamanya kalau kiter biasa buat shell script dan juga beberapa scripting languages yang popular sekarang. Benda ni actually bleh diatasi kalau LECTURERs kiter kat IPT ni ader inisiatif sendiri untuk membina pengkompil dan design suatu bahasa pengaturcaraan yang baru. Kemudian jadikan bahasa ni sebagai alat bantu pengajaran (atau sebagai medium untuk mempelajari bahasa pengaturcaraan lain). Bagi para pelajar yang benar2 baru dalam bidang sains komputer ni, diaorang akan rase tertarik dan tahap rase pelik diaorang bila tengok kod dalam melayu sama je bila tengok kod yang ditulis dalam bahasa omputih since diaorang tak pernah tengok aper2 bahasa pengaturcaraan pun. Kat maner lagi nak mula kalau bukan kat IPT ye tak. Lagipun kat IPT la tersimpannya para cerdik pandai kiter. Actually kiter ader dua masalah kat sini. (1) Language Design. (2) Compiler Writing. Kiter perlukan PAKAR dalam kedua bidang ni. Trime je la kenyataan dalam aper jua bidang pun, kalau setakat ader MINAT tak kire sedalam maner pun, kiter takkan berjaya merealisasikan perkara ni. Kiter kena ader resources yang cukup untuk RESEARCH. Aku rase la, part research ni ler yang orang kiter lemah. Kiter kena ader resources yang cukup dari segi pengetahuan, masa, wang dan lain2 lagi. Kiter kena tau kat maner kemampuan kiter setakat ni. Biler dah tau tuh, kiter kena evaluate plak kemampuan kiter. Cukup ke tak. Kalau tak cukup tu pepandai la nak cukupkan. Taun lepas aku ader laa nak test buat java program (*.class format) using x86 assembler (fasm). Lagipun aku suka gunakan fasm sebagai file generator instead of assembler . Tapi memandangkan ader slack sikit part nak hasilkan constant pool table (fasm nyer directives and macros tak cukup power) dan ader beberapa jvm instructions aku tak reti nak encode (tableswitch, for example) so tak lengkap laaa. Lagipun aku kena ngaku fasm tak cukup hebat. This is just keje sampingan maser aku nak create class file disassembler untuk sorang client dulu. Bleh amik kat sini. Seperti yang korang tengok, part nak tulis kod tu dah ok dah. Nampak automatik. Tapi part nak insert item kat constant pool table tuh (tu aku just buat secara manual). Biler aku buat menda alah ni, aku pun teringin nak cuba gantikan arahan assembly x86 dengan bahasa melayu, atau buat macroinstructions dalam bahasa melayu untuk "menyembunyikan" arahan2 native. Tapi aku takleh dapat sintaks yang menarik dan natural plak dah (aku rase RosAsm lebih baik dalam hal nih). Lagipun asm dalam bahasa melayu? aper yang aku dapat selain daripada ringkasan perkataan? Kemudian nak try design asm aku sendirik.. buat nyer buat, pikir nyer pikir.. tak jadik plak.. hehehe.. payah gak keje lone ranger nih. Meh kiter define satu "virtual machine" dengan bahasa himpunan kiter sendiri. Firstly, kiter kena design environment dia dulu. Contohnya, 10 registers (temporary storage) yang setiap satunya bersaiz 32 bits. Kiter bagi laaa aper2 nama untuk mewakili setiap registers ni dalam kod. Contohnya S0 hingga S9 (S maknanya STOR, tempat simpan barang ). Brape banyak memory yang machine kiter bleh addresskan dan sebagainya laaa. Kemudian kiter define plak instruction set untuk virtual machine ni. Contohnya SIMPAN, TAMBAH, TOLAK dan sebagainya laahh.. Kalau nak lebih advanced lagi, kiter bukan setakat define basic machine, tapi complete machine yang lengkap ngan input/output so kiter bleh la define instruction yang dapatkan input dan paparkan output . Ataupun kalau dah payah sangat, kiter amik je processor yang antik (8 bit processors la at least) cam 6502 ke (teringat maser main Super Mario series kat NES). Nak dapat feels pasal instruction ni kiter bleh la try dulu kod aper2 pun :   SIMPAN 10 > S1   SIMPAN 20 > S2   TAMBAH S2 < S1 Basically format instruction kiter seperti di atas laa. Kat tengah tu bleh jadik > atau < untuk instruction yang terima 2 operands dan ia menunjukkan "arah" instruction tersebut. Dalam kes   SIMPAN 10 > S1 maknanya kiter simpan constant bernilai 10 kepada stor S1. Dengan penunjuk arah ni, bleh ler kiter nak tulis kod yang lebih fleksible, e.g SIMPAN S1 < 10 dan sebagainya. Tapi ia akan jadi kompleks plak. Arahan TAMBAH plak tambah dua operands dan simpannya di dalam stor yang ditunjuk oleh > atau <. Aper yang kod kat atas buat adalah secara matematiknya camni :   S1 = 10   S2 = 20   S2 = S1+S2 Biler kiter buat sedikit keje dengan virtual machine instructions kiter, InsyaAllah kiter akan dapat menambahkan idea secara tak langsung. Kat sini juga kiter mungkin bleh ringkaskan arahan ni (e.g buang a,e,i,o,u dalam perkataan). Let say kiter tambah plak arahan untuk melompat (jump/branching) :   SMPN   S3 < 100   SMPN   S4 < 0 Label:   SMPN   10 > S1   SMPN   S2 < 10   TMBH   S2 < S1   TLK   S3 < 1   BNDG   S3 < S4   LJLB   Label Sekarang, SMPN mewakili SIMPAN, TMBH mewakili TAMBAH, TLK mewakili TOLAK, BNDG mewakili BANDING, LJLB mewakili LOMPAT JIKA LEBIH BESAR. Walaupun sekarang tak nampak elok (aku sendiri pun rase segan gak ), tapi biler kiter dah selalu gunakan arahan seperti ni, lama kelamaan kiter akan terbiasa dengannya. Maner tau suatu hari nanti kiter rase pelik plak biler tengok arahan MOV, SUB, ADD, JG dan sebagainya . Sekarang kiter dah ader bahasa himpunan dengan bahasa kiter sendiri (ringkasan jerrr), lain kali kiter bleh plak create new compiler untuk cipta bahasa aras tinggi yang akan dikompil kepada bahasa himpunan virtual machine kiter. Tapi jangan luper plak since kiter define "virtual machine" kat sini, kiter kena la bina interpreter plak. Untuk interpret dan laksanakan arahan2 bahasa himpunan ni. Untuk encode bahasa himpunan kat atas plak, kiter blehla allocate 1 byte untuk pegang arahan. Contohnya opcode untuk SMPN adalah 0x01, TMBH - 0x02 dan sebagainya laaa. So dalam interpreter kiter ader la kononnya main loop yang akan amik opcode ni dan process.   /*main loop of interpreter*/   do {     CurrentInstructionPointer += ProcessInstruction(CurrentInstructionPointer);   } while (!EndOfProgram()) Walaupun realitinya tak semudah ni, tapi cukup laa kan, sekadar sebagai introduction. Lebih baik daripadatakde langsung! Kiter bleh tengok contoh yang dilakukan oleh banyak bahasa aras tinggi (mostly object oriented) seperti .NET (using MSIL, M$ Intermediate Language).BABAI... Quote Share this post Link to post Share on other sites
Ancient One 3 Report post Posted August 7, 2004 Kenapelah tak terfikir menggunakan FASM punya macro yang semudah itu! Caya lah! awak punya penyelesaian adalah yang paling simple!Care to spend a little time to help us creating most frequently used fasm keywords in Malay macro-instruction sets? Boleh gak nanti guna fasm sebagai back-end compiler. Senang sikit nak check dia punya asm translations dari front-end compiler. Awak faham fasm lebih dari yang lain. Jadi, kurang lah sikit kesilapan maksud bagi setiap Commands, Target Register dan Operand dia.Sebelum ni saya dok fikir terus guna assembly dengan buat macro instructions untuk syntax compiler Melayu ni. Tapi susah nak maintain dan debugging mesti pening habis. Kalau breakdown-kan dia jadi dua compiler module (front and back end) lebih mudah nak maintain bagi mana-mana group yang menyelenggaranya.Lebih-lebih lagi, dapatlah kite semua belajar assembly dengan lebih singkat dari biasa. Well.. aku dengan senang hatinya bleh membantu.. fasm memang sesuai jadik back-end compiler sebab dia ader multipass assembler dan bleh optimize asm code (not modify it!) dengan lebih baik. Nanti aku balik rumah pikir pasal ni.. Quote Share this post Link to post Share on other sites
1kHz 0 Report post Posted August 9, 2004 tahniah kepada 'ra atas inisiatif yang baik ni.. tapi saya sebenarnya rasa idea yg lebih baik ialah mencipta konsep dan tools yg dpt menolong menghasilkan aplikasi dgn jangkamasa lebih pantas, spt RAD tools, etc (mcm konsep webforms dlm ASP.NET).. bukan nak kata projek 'ra ni tidak baik, tapi ni mcm reinventing the wheel je.. kesannya utk 'ra mungkin sgt baik, utk menambah ilmu dsb, tapi utk org lain tak seberapa kot..rasanya sekarang ni masa utk kita mencipta IC (integrated circuit), bukan lagi masa pencipta transistor..ini cuma pendapat saya semata2, bukan nak jatuhkan semangat 'ra dsb.. sekali lagi inisiatif 'ra ni cukup baik, teruskan.. satu lagi saya tak berapa pandai dlm low level programming, mungkin kelebihan yg dilihat dari sudut itu saya tak nampak..jealous sebenarnya tgk org rajin buat projek ni, saya satu projek hapa pun takde.. Quote Share this post Link to post Share on other sites