Jump to content
'ra

Bahasa Aturcara Melayu?

Recommended Posts

Terdapat sedikit kelewatan untuk peringkat seterusnya didalam projek ini kerana kesibukkan dan terpaksa mengkaji subjek-subjek yang diperlukan degan lebih mendalam untuk membina kompiler yang lebih lengkap dan rumit dari am32.

Nampaknya saya kena lakukan sendiri kerana cuaca 'Open Source' tempatan tidak membantu memperkembangkannya. Kebanyakkannya hanya menggunakan sumber-sumber tersebut tanpa memberi balik sebarang peningkatan atau pendekatan dari perspektif berbeza.

Agak kecewa dengan keadaan ini. Tetapi sekurang-kurangnya saya mempelajari apa yang akan dihadapi dimasa akan datang kelak. Jadi taklah menaruh harapan yang terlalu tinggi dari sumber tenaga dan sumbangan tempatan. Bagi yang ingin mempelajarinya dari projek ini sila teruskan kerana hanya dari sumber ini sahaja yang dapat membantu projek ini berkembang. Saya akan cuba usahakan sebaik mungkin agar dapat kita sama-sama belajar sesama kita.

Edited by 'ra

Share this post


Link to post
Share on other sites

Terdapat sedikit kelewatan untuk peringkat seterusnya didalam projek ini kerana kesibukkan dan terpaksa mengkaji subjek-subjek yang diperlukan degan lebih mendalam untuk membina kompiler yang lebih lengkap dan rumit dari am32.

Memang ni idea yang terbaik..

Actually problemnya datang dari awak sendiri.. awak belum dapat tunjukkan

"sesuatu" yang dapat membuka mata orang yang pakar dalam bidang ni.. at least awak buat la sesuatu yang berbaloi untuk diaorang tolong awak. Part "sesuatu" tu kena fikir la smile.gif. aku pun taknak la cakap banyak karang ader yang salah tafsir plak...good luck..

ENJOY!!

Share this post


Link to post
Share on other sites

aku dah baca dari mula sampai ler ke akhir forum nie... aku masih lagi tak paham...

okay first..:

1. apa sebenarnya masalahnya..

2. macamana kita semua boleh membantu 'ra

3. apa maksud..

cuaca 'Open Source' tempatan tidak membantu memperkembangkannya

aku amatlar berminat ngan forum nie.. rasa-rasa kat mana aku 'lost' nie..

aku dah tak paham nie.. hheheheheh biggrin.gif

Share this post


Link to post
Share on other sites

Selamat berjumpa kembali. Sungguh sibuk sekali masa dekat hujung2 tahun ni.

BudakCumpung, masalah utama sekarang adalah masa dan sumber rujukkan. Rujukkan pula adalah terlalu terhad baik dari sumber tempatan atau pun dari Internet. Sebagai contoh, saya sedang mengumpulkan rujukan2 operasi konsol Win32 dari internet. Terlalu sedikit 'tutorial' dan contoh2 yang boleh perolehi. Operasi konsol ini adalah seperti pengguna fungsi2 terus dari Kernel32.DLL yang mana saya pilih untuk tidak menggunakan 'runtime' dari compiler C atau CPP seperti MSVCRT.DLL.

Mengenai cuaca Open Source tempatan pula adalah dari segi aktiviti-aktiviti sumbangan terhadap perisian baru yang masih diperingkat awal seperti yang sedang diasaskan dari perbincangan topik ini. Kebanyakkan peserta-peserta open-source tempatan mula menyumbang bila perisian itu sudah hampir kepada tahap lengkap dan boleh dikatakan sumbangan mereka itu adalah sebagai 'nasi tambah' sahaja. Ini boleh di ukur dari aktiviti sumbangan atau komplen yang diterima adalah kosong. Anda boleh lihat pergerakkan ini di website ictmelayu:

http://www.smartgroups.com/groups/ictmelayu

Tiada langsung feedback, pertanyaan atau pun apa-apa sahaja tindak-balas dari pengguna yang telah memindah turun perisian contoh seperti PAR dan AM32 yang telah saya hasilkan. Aatupun terjemahan kepada bahasa pengaturcaraan lain untuk membantu pengaturcara lain yang tak biasa dengan sumber bahasa BASIC yang saya gunakan. Nak kata kat m'sia ini ada pakar kompiler, saya amat ragu-ragu sekali ianya wujud.

Kembali kepada topik Pengaturcaraan Bahasa Melayu ini, saya amat hargai jika ada sebarang contoh2 atau 'code snippets' yang boleh membantu untuk digunakan, konsep atau pun idea untuk disumbangkan kepada projek ini. tak kira apa-apa contoh yang banyak menggunakan panggilan USER32.DLL dan KERNERL32.DLL. Di dalam topik ini saja ada boleh lihat hanya dua atau tiga orang saja yang menampilkan 'kod-kod contoh'. Itupun diperingkat awal perbincangan.

Saya akan kembali lagi bila prototaip Kompiler versi seterusnya dapat dilengkapkan.

Share this post


Link to post
Share on other sites

Kalau tukar bahasa programming jadi bahasa melayu mesti pelik bunyinya ...

BI:

If (ayam != kambing)

{

ayam = lembu;

}

BM:

Kalau (ayam tu bukan kambing)

{

ayam tu lembu lah;

}

Ni baru sikit jer ... belum ayat programming yang komplex macam 'Struct', 'Process32First', 'SetThreadPriority' dan memacam lagi ...

haha ... Just kidding ...

Tapi kalau susun ayat bahasa Melayu Programming tu ngan betul aku rasa oklah gak bunyinya ...

Share this post


Link to post
Share on other sites

Tiada langsung feedback, pertanyaan atau pun apa-apa sahaja tindak-balas dari pengguna yang telah memindah turun perisian contoh seperti PAR dan AM32 yang telah saya hasilkan.

ako ingat ako ade pos dah kat sini, tapi takde lak post ako.

nak tau nape?

1. smartgroups? wth. ako tak penah dengar pon tempat tu sampai mase skarang. and judging from the forum response ako rase takde sesape nak join another forum just untuk post comments. ako rase orang dah post kat sini cukup la. and i doubt kalo ko buat registration-free kat forum ko tu akan ade mamat yang nak spam kat programming forum laugh.gif

2. dah iklankan kat forum lain? ittutor? punyela banyak mamat oss kat situ. ako boleh iklankan macam ape yang ako selalu buat, tapi ako bz

3.

Tapi kalau susun ayat bahasa Melayu Programming tu ngan betul aku rasa oklah gak bunyinya ...

ako slalu gelak bile dengar komen camni. macam ayat2 dalam BI tu make sense sangat. struct tu betul sangat ke? what about if then else? yang client server lak? joystick != gayingot?

4.

Kalau (ayam tu bukan kambing)

ako suke kalo bebaru nye language macam ni, ape ek panggil ako lupe. semantically correct language, elok for beginners. leh intro kat skolah pon kalo dah besar2 nanti. better than kalau ayam != kambing IMHO.

if because of these simple annoyance yang membuatkan ko dah fedap then elok takyah buat langsung. nak suruh orang contribute time dan masa daripada keje skolah cam ako or keje opis or keje oss lain untuk projek sampingan ko takes time and a lot of shaits mate. sabo lerrrrr. kun fayakun, kalo Tuhan tu nak bagi Die bagi la

Edited by C-Fu

Share this post


Link to post
Share on other sites

Rakyat Malaysia memang suka buat kerja utk upah.. Kalau tak ada pulangan, tak ada pasal nak buat.. itu masalah rakyat Malaysia.. yang sampai sekarang tak maju-maju lagi..

Share this post


Link to post
Share on other sites

Wa lase aaa lagi baik guna itu omputih punye compiler... lu kalu mau bikin sampai tua pun talak siap.. lagipun aaa.. itu compiler international punye glup  sudah bincang bincang kasi itu teknologi power... apa kate kita semua gabung sama itu olang lua negale kasi power lagi itu compiler yang sedia ade....

wa dulu ale bikin compiler... tapi bila wa compare sama omputih punye compiler haa.. wa mau nangis... sebab wa lase wa punye compiler boleh taluk dalam tong sampah... hahaha... at least wa masih usaha...mau kasi maju itu melayu punye name

Contoh orang yang tak ada wawasan.. dan ikut telunjuk dan suka ikut orang.. betul?

Share this post


Link to post
Share on other sites

'ra

Jangan risau, semua orang support anda.. pasti..

C-Fu,

bila ada programming language sendiri, bolehlah create syntax sendiri.. ye tak?

Share this post


Link to post
Share on other sites

Terima kasih NaRa di atas sokongan anda. smile.gif

(Ciayo-ciayo... biggrin.gif )

Saya ingin mencuba dengan 'approach' yang berbeza kerana corak menulis kod sumber untuk compiler 'melayu' masih lagi ter-ikut2 compiler tradisi yang mungkin susah untuk orang yang tak pernah tulis program. Jadi saya ada satu atau dua perkara yang ingin dibincangkan bersama-sama anda semua agar sesuatu kompiler baru itu lebih berorientasikan pengguna.

1. Tafsiran Jenis Data

Apakah terjemahan yang paling sesuai untuk Jenis-jenis data berikut di dalam bahasa melayu? Sila berikan cadangan anda. Mungkin ada yang dapat memberikan terjemahan yang lebih simbolik dan mudah diingati. Jenis-jenis data tersebut ialah seperti berikut disertai dengan terjemahan mengikut pendapat saya secara kasar shj:

Byte            ->  Butir
Short           ->  Rapat
Long            ->  Jarak
Integer         ->  Biasa
Boolean         ->  Tentukan
Word            ->  Ungkap
Dword           ->  DwiUngkap
Single/Float    ->  Apung
Double          ->  Gandaan  (Gandaan (kpd Apungan)
String          ->  Sebutan
2. Kaedah Penulisan Kod Sumber Saya rasa corak menulis kod simbolik untuk bahasa pengaturcaraan 'Melayu' ini haruslah mudah tanpa memeningkan kepala orang yang baru belajar. Contohnya untuk membina satu Window pengguna kita menggunakan panduan penulisan megikut cara ini:
Borang NamaBorang [

    # Sifat-sifat borang pengguna
    Ukuran [Lebar,Tinggi]
    Tajuk  [Teks Tajuk]
    Warna  [Nama Warna]
    
    # Kaedah-kaedah gunaan
    Bulat [Lebar,Tinggi,Jejari,Warna]
    Tengah       # Letak borang ditengah2 desktop
    Tunjuk       # Tunjukkan borang
    Tutup        # Tunjukkan borang

    # Pengurus Perintah
    BilaDiTunjuk [Nama Kaedah]
    BilaDiLukis  [Nama Kaedah]
    KunciDiTekan [Nama Kaedah]
    KunciDiLepas [Nama Kaedah]
    TetikusDiTekan [Nama Kaedah]
    TetikusDiLepas [Nama Kaedah]
    BilaDiTutup  [Nama Kaedah]
]
Sebagai contohnya kita tulis begini untuk hasilkan 'Window' pengguna kita:

Butir [Kunci]

Borang Contoh1 [
    Ukuran [140,140]
    Tajuk  [Contoh]
    Warna  [Kuning]
    Tengah
    KunciDiTekan [TekanKunci]
]
Contoh1.Tunjuk
Tamat

Kaedah TekanKunci [
    Jika Kunci = ESC, Buat [Contoh1.Tutup]
]

Maka hasilnya adalah seperti gambar di bawah ini: user posted image Ataupun dengan cara menggunakkan perkataan yang lebih mudah difahami seperti berikut:
Data Butir
Kunci

Borang [

  Nama
  Contoh1
  
  Ukuran  
  140,140

  Tajuk
  "Contoh"

  Warna
  Kuning

  Kedudukkan
  Tengah

  KunciDiTekan
  TekanKunci

]

TunjukBorang
Contoh1

Perisian
Tamat

Kaedah 
TekanKunci [

    Jika Kunci 
    Sama [ESC] [

    Contoh1
    Tutup

    ]

]

Ini adalah hanya suatu cadangan sahaja dari saya. Mungkin anda mempunyai suatu cara yang lebih simbolik dan mudah ditulis. Dari pemilihan ini, kita boleh membentuk kompiler mengikut kehendak majoriti dari menghasilkan satu cara sahaja kemudiannya terpaksa menggubahnya dengan banyak kerana setelah sama-sama mengkajinya didapati sukar untuk diikuti oleh pengguna baru.

Sila berikan pandangan anda...

Edited by 'ra

Share this post


Link to post
Share on other sites

ako kire dari kite dok pening pale nak pikir direct translation ke BM yang leh memeningkan pale bebudak yang nak gune bendeni nanti (pasal bile diorang dah besar and nak convert ke C++/Java terus konfius) elok cipta ayat BM baru untuk bende ni. jangan harap la DBP nak tolong.

macam byte sebelum era komputer memang tak bawak ape2 maksud setahu ako, tapi bile pc dibuat diorang reka la bende tu. so kita pon elok reka jugak la. karang nak taip butiran panjang sangat, susah sangat, leceh sangat.

ni draft proposal ako

Byte            ->  Bait
Short           ->  Dek
Long            ->  Jang
Integer         ->  Integer
Boolean         ->  Bul
Word            ->  Kata
Dword           ->  DwiKata
Single/Float    ->  Apung
Double          ->  Ganda
String          ->  ??????? String of words = ??? kata

but then again, kalo objektif ni nak jadi semantically-correct language maka susah sket nak pakai ayat2 cam Jang, Dek dll

Share this post


Link to post
Share on other sites

Baru terbaca semula posting 'ra dari mula

Sasaran software ini utk bebudak 15+ keatas ? Nara sudi jadi lead beta tester utk software nih.. utk bahagian kanak2 ribena test.. smile.gif sbb nara umur 15.. ade jugak menda yang boleh jadi 'mainan' cuti nih.. amcam?

Share this post


Link to post
Share on other sites

LAP

PAMER "Assalamualaikum dan salam sejahtera.."

LEWAT 3

PAMER "Ini adalah percubaan pertama oleh nara a.k.a Izwan menggunakan aturcara am32 di mana arahannya 100% dalam Bahasa Melayu dan tidak memeningkan kepala anda!!!"

PAMER "Ucapan selamat menjalankan ibadah puasa kepada semua umat Islam khususnya di Malaysia, Brunei Darussalam, Indonesia, Singapura dan jiran-jiran terdekat.. 'Selamat mengerjakan rukun Islam yang keempat..'"

LEWAT 15

LAP

PAMER "Firman Allah s.w.t.:"

PAMER ""

PAMER "'Beberapa hari yang ditentukan itu ialah bulan Ramadhan, bulan yang di dalamnya diturunkan permulaan Al-Quran sebagai petunjuk bagi manusia dan penjelasan-penjelasan mengenai petunjuk itu dan pembeda antara yang hak dan yang bathil.' Surah Al-Baqarah:185"

PAMER ""

LEWAT 10

pamer "Profil nara"

pamer "Nama......: Mohamad Izwan bin Zakaria"

pamer "Umur......: 15 (23 Julai 1989)"

pamer "Jantina...: Lelaki"

pamer "Lokasi....: Kulim, Kedah, MALAYSIA"

pamer "Forum.....: Tanya@Putera (sejak tahun 2002), Ittutor.net (2004), Webmastermalaysia.com (2004), Sifoo.com (2004), iexbeta.com (2004), Lowyat.net (2004)"

pamer "Pekerjaan.: Pelajar"

pamer "Sekarang..: Menghabiskan masa dengan mempelajari bahasa aturcara seperti C/C++, PASCAL, Visual Basic, am32 dll, mempelajari bahasa ASP, PHP, JavaScript sepanjang cuti persekolahan sambil menunggu keputusan peperiksaan PMR2004, berharap dapat menghasilkan sebuah permainan mudah setelah habis mempelajari bahasa aturcara tersebut. Insya Allah !"

pamer ""

pamer ""

pamer ""

pamer "XxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXx"

PAMER "Hakcipta Terpelihara © 2003-2004 Jangnara Technology. All Rights Reserved."

PAMER "http://www.jang-nara.net // http://www.jjangnara.com"

PAMER "Dibina menggunakan bahasa aturcara am32 oleh 'ra"

PAMER "http://www.smartgroups.com/groups/ictmelayu"

pamer "XxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXx"

Banyakkan lagi syntax... ada masalah dengan syntax :

GUNA tu..

Share this post


Link to post
Share on other sites

... ada masalah dengan syntax :

GUNA tu..

Masalah yang bagaimanakah yang anda hadapi? Lebih maklumat yang dapat diberikan akan lebih membantu di dalam mengenal pasti jenis permasalahan itu.

Syntax GUNA adalah sama denga RUN dari menu Start pada desktop OS anda. Ia betindak sebagai saluran untuk pengaturcara memanggil perisian luar untuk dilancarkan semasa perisian anda sedang beraksi.

Contoh1:

GUNA "Dir/w"
Ini akan melancarkan arahan bina dalam DIR dari cmd.exe pada OS NT/XP ataupun command.com pada OS Win9x/Me. Semua arahan DOS Batch boleh di panggil dengan menggunakan arahan GUNA. Selain itu anda boleh memanggil perisian am32 yang lain dengan arahan ini. Sebagai contoh:
GUNA "bantuan.exe"
Dari arahan di atas, ia akan memanggil perisian contoh yang datang bersama pakej am32. Lokasi bagi perisian yang dipanggil haruslah dituliskan sekali jika perisian yang anda tulis itu terletak diluar kawasan/direktori am32. Lihat contoh dibawah:
GUNA "c:\am32\contoh\bantuan.exe"
ataupun;
GUNA "c:\am32\contoh\demo2.exe"

Mengenai syntax-syntax tambahan, sila nyatakan syntax-syntax bagaimana ingin ditambah ataupun keupayaan seperti yang bagaimana ingin ditambah. Dengan cara ini, syntax-syntax baru boleh ditambah secara berperingkat-peringkat. Begitulah sesuatu perisian Kompiler itu berkembang. Jika dapat disertakan rujukkan dan contoh-contoh, pastinya lebih mudah difahami sesuatu kehendak pengguna itu. smile.gif

Edited by 'ra

Share this post


Link to post
Share on other sites

Ok.. apa latest news berkenaan dengan 'ra ?

Nak experiment am32 nih pun, tatau dah apa lagi ynag boleh experiment ?

Share this post


Link to post
Share on other sites

Sintax untuk tunjuk borang tu rasanya dah ok.

Buat masa ini ra bercadang nak buat beberapa properties sahaja untuk borang tu seperti kedudukan,luas,warna,nama,tajuk.

Mungkin boleh prepare dlm coding compiler tu untuk memudahkan penambahan properties untuk akan datang. Mungkin...ada banyak lagi yang boleh dimasukkan. P.Language sedia ada , ada banyak lagi propertiesnya.

Sintak

Tunjuk contoh1

kalau ada tunjuk mesti ada tutup.

Tutup contoh1

Dan katakan apabila ada borang kedua. Katakan nama borang tu:contoh2

Mesti ada kawalan sama ada ia perlu diclearkan dulu atau takperlu untuk kembali ke borang pertama (contoh1).

Tujuan kiriman saya ni hanya sekadar perencah dan sbg memberitahu betapa berlikunya proses nak buat bahasa aturcara ni.

...Affendi

Share this post


Link to post
Share on other sites

Betul tu Affendi. Setiap yang dimulai mesti diakhiri. Dari contoh pertama kaedah kod Borang tu lebih kelihatan jelas kerena ada Contoh1.Tunjuk and Contoh1.Tutup seperti yang tertera dari kod dibawah ini.

# pentakrifan data
Butir [Kunci]

# pentakrifan antaramuka
Borang Contoh1 [
   Ukuran [140,140]
   Tajuk  [Contoh]
   Warna  [Kuning]
   Tengah
   KunciDiTekan [TekanKunci]
]

# panggilan kaedah utama
Contoh1.Tunjuk
Tamat

# kaedah pengguna (proc)
Kaedah TekanKunci [
   Jika Kunci = ESC, Buat [Contoh1.Tutup]
]
Saya ada buat sedikit kesilapan di dalam menulis kaedah 2 dimana ia ditulis:
Kaedah
TekanKunci [
  .
  Contoh1
  Tutup
]
sepatutnya:
Kaedah
TekanKunci [
  .
  TutupBorang
  Contoh1
]
Kebanyakkan bahasa aturcara kini adalah berorientasikan objek/OOP. Saya terfikir untuk membuat sesuatu yang berlawanan iaitu berorientasikan Kaedah/Methods untuk panggilan diluar skop binaan [ ]. Contohnya:
# antara muka pengguna
Borang Contoh1[
]

Kiri.Contoh1 = 20
Atas.Contoh1 = 20
Tunjuk.Contoh1
Lukis.Contoh1 [x1,y1,warna]
Sorok.Contoh1
Tutup.Contoh1

# contoh gunaan objek pengurusan fail menggunakan
# skop [ ]
Fail Buku1 [
    Buka [NamaBuku.txt,CaraBuka]
    BacaBinari [4]
    Tutup
]

# Hasil yang sama dengan kaedah skop [] 
# di atas
Buka.Buku1 [NamaBuku.txt,CaraBuka]
BacaBaris.Buku1
BacaBinari.Buku1 [4]  #Baca binari data sebanyak 4 bytes
Tutup.Buku1
Mesti ada kawalan sama ada ia perlu diclearkan dulu atau takperlu untuk kembali ke borang pertama (contoh1).
Ya, ini amat diperluka jika Borang tersebut mempunyai 'child/pengikut' seperti butang/button dan sebagainya. Properties tambahan diperlukan untuk ini dan juga pengendalian Borang kedua yang tidak dihubungkan dengan borang pertama. Seperti:

# pengistiharan kaedah-kaedah pengguna
# sama seperti prototype, declare dan
# procedure

Deraf Kaedah [TekanBut1]
Deraf Kaedah [TekanBut2]

Borang Brg1 [
    Tajuk [Borang Utama]
    Tengah     # aka center
    Butang Punat1 [
        Tajuk [Buka Borang 2]
        Aksi [TekanBut1]
    ]
]

# Binaan Butang kedua
Butang Punat2 [
    Pautan [Brg1]            # Pasang pada Brg1
    Tajuk  [Tutup Borang 2]
    Aksi   [TekanBut2]
]

# Binaan Borang kedua
Borang Brg2 [
    Tajuk [Borang kedua]
    Letak [20,20]    # petunjuk: [X,Y]
    Saiz  [120,240]  # petunjuk: [Tinggi,Lebar]
]

# program utama
Tunjuk.Brg1
Tutup.perisian


# --- kaedah-kaedah pengguna ---
Kaedah TekanBut1 [
    Tunjuk.Brg2
]

Kaedah TekanBut2 [
    Tutup.Brg2
]
# ------------------------------

Apa yang saya perlukan adalah suatu teknik 'Pertukangan' untuk membina objek2 sebegini dan 'Pengembang' upaya objek binaan dalaman supaya pengguna boleh membina objek2 dan mengembangkannya melalui fail-fail selitan seperti:
Bina Butang [
  Lindung:                   # Private
    Rujuk [Jarak [KawalBut]] # Object Handle
    Kelas [BUTTON]           # Win32 classString "BUTTON"

  Bebas:                    # Global/Public
    TambahSifat Tajuk[Ungkapan [s]]
    TambahSifat Letak[Jarak [x], Jarak [y]]
    TambahSifat Saiz [Jarak [h], Jarak [l]]

    # ----------------------------------
    # Tambah pada kaedah umum [Sembunyi]
    # Sebelum ini Sembunyi.Borang, kini
    # ditambahkan Sembunyi.Butang
    # ----------------------------------
    TambahKaedah Sembunyi [
           # sama dgn SendMessageA (KawalBut, 0, Hide, 0)
           HantarMesej [[Rujuk.Butang], Gaya, NilaiHide, Nilai]
    ]

    TambahKaedah Timbul [
           # sama dgn SendMessageA (KawalBut, 0, Show, 0)
           HantarMesej [[Rujuk.Butang], Gaya, NilaiShow, Nilai]
    ]

    TambahKaedah Tunjuk.[Borang] [
           # sama dgn CreateWindowEx()
           KawalBut CiptaObjekBaru [
               GayaTambahan,
               [Kelas.Butang],
               [Tajuk.Butang],
               [Letak.Butang],
               [Saiz.Butang],
               [Rujuk.MenuSistem],
               [Rujuk.Borang],
               [Rujuk.Perisian],
               [Rujuk.Selitan]   # wParam
           ]
    ]

    # Inherit Acara/Event pada WM_LMBUTTON = NilaiHex
    # pada Pengurusan WndClass
    TambahAcara Aksi[Jarak [k], NilaiHex]
]


# Contoh Penggunaan Objek Butang

Deraf Kaedah [Ketuklah]

Borang Bor1 [
    Butang But1 [
        Tajuk [Contoh Butang]
        Letak [10,10]
        Saiz  [20,60]
        Aksi  [Ketuklah]
    ]
]


Tunjuk.Bor1
# --------------------------------------
# Bila borang ditunjukkan, dalam masa
# yang sama Butang juga dibina jika ia
# di daftarkan dibawah borang.
# --------------------------------------

Tamat.Perisian      # ExitProcess(0)

Kaedah Ketuklah [
    Sembunyi.But1   # sembunyikan Butang
    Lewat.Saat [2]  # Selepas 2 saat
    Timbul.But1     # Tunjuk semula butang
]

Dengan cara ini pengguna2 yang sudah expert didalam bahasa aturcara yang lain boleh membina objek2 and menambah kaedah kedalam Kaedah Global yang sedia ada tanpa memerlukan kompiler ini di 'upgradekan' pada setiap kali. Jadi ia akan berkembang dengan lebih mudah.

Ini hanyalah pada pendapat saya sahaja, mungkin anda mempunyai teknik dan idea yang lebih efektif lagi.

Saya juga amat berterima kasih jika ada yang sudi menambahkan atau memberikan kod contoh yang boleh disesuaikan untuk mengenal-pasti objek binaan pengguna dan pengurusannya dari sudut dalaman kompiler ini.

Edited by 'ra

Share this post


Link to post
Share on other sites

Kat sini aku ader buat sedikit keje, sebagai respon kepada post `ra (Jul 31 2004, 05:40 PM). Buat masa sekarang, ia hanya sebagai eksperimen, dan ia tidak lebih daripada hanya terjemahan (ikut suker ati aku) set arahan x86 assembly dan juga fasm (khusus untuk Win32). So, basically, it's just an x86 assembly language written in bm. Buat masa sekarang jugak, tak semer arahan disokong; hanya sebahagian daripada general purpose (integer) instructions. Takde fpu, mmx dan sebagainya. Tapi bleh dikatakan ia nampak menarik gak. Aku panggil benda ni sebagai amf (takde kena mengena ngan am32 dan juga benda alah yang lain). Layout kod kiter dalam amf simple jer (yang wajib ader) :

;ATURCARA <Penerangan>, [APLIKASI | FUNGSI]
ATURCARA "Tajuk/Penerangan", APLIKASI
;MOD [GRAFIK | KONSOL]
MOD GRAFIK

;permulaan aturcara
!MULA

;RUTIN <Nama> [__c | __win | __pascal], [Param1, Param2, ..., Paramn]
;<Pembolehubah_Setempat> (nama mesti didahului dengan titik ".")
;MULA
;   <Arahan_Asm> (semua label di dalam RUTIN seharusnya local label)
;TAMAT

;RUTIN dengan nama "Utama" adalah wajib dan ia adalah entrypoint program
RUTIN Utama __c
MULA
   ;letak arahan asm kat sini
TAMAT

;penamatan aturcara
!TAMAT
Please note amf ni ditulis sepenuhnya dengan fasm nyer syntax. So, kiter perlukan fasm compiler (version 1.56). Tapi sudah tentu kod di atas takleh dikompil terus secara direct oleh fasm, so aku tulis sebijik program kecik (amf.exe) yang akan invoke fasm bagi pihak kiter (aper yang ia buat hanyalah memasukan baris include "%amf/fmu.inc" di awal baris kod kiter dan hantar kod ni sebagai argument kepada fasm. Aku sengaja biarkan fasm.exe dan amf.exe guna stdout yang sama for debugging purpose. Kalau aku rase keje ni berbaloi, lain kali aku akan buat yang lebih besh lagi, termasuklah modification kepada fasm compiler itu sendiri. Fail "arahan.inc" adalah fail yang mengandungi terjemahan arahan (x86 asm dan fasm). Aku tak tau ler nama2 tu sesuai ke tak, aku taip balik aper yang aku mimpi smile.gif. Semua arahan adalah arahan pendek. Contohnya sln (salin) -> mov). Aku nak tulis sebagai sal takleh gak sebab aku teringat pasal "shift arithmetic left". Nak guna arahan pindah takleh gak. Tak ngam. Sesetengah arahan pendek ader nama panjang. Contohnya sln -> salin. Contoh kod tradisional nenek moyang kiter (menggunakan MessageBox) :
ATURCARA "Sampel", APLIKASI
MOD GRAFIK

!MULA

Tajuk   TEKS "Sampel"
Isi     TEKS "Selamat Datang Ke Putera.com."
IkonMaklumat = 0x40

RUTIN Utama __c
MULA
    eatau   ebx, ebx   ;"ekslusif atau" (eax = 0)
    tekan   IkonMaklumat
    tekan   Tajuk
    tekan   Isi
    tekan   ebx
    panggil [MessageBox]
    tekan   ebx
    panggil [ExitProcess]
TAMAT

!TAMAT
Program yang sama, dengan arahan pendek :
ATURCARA "Sampel", APLIKASI
MOD GRAFIK

!MULA

Tajuk   TEKS "Sampel"
Isi     TEKS "Selamat Datang Ke Putera.com."
IkonMaklumat = 0x40

RUTIN Utama __c
MULA
    eatau   ebx, ebx
    tkn     IkonMaklumat Tajuk Isi ebx
    pgl     [MessageBox]
    tkn     ebx
    pgl     [ExitProcess]
TAMAT

!TAMAT
Program yang sama, dengan menggunakan arahan SERU (for calling Win32 API) :
ATURCARA "Sampel", APLIKASI
MOD GRAFIK

!MULA

IkonMaklumat = 0x40

RUTIN Utama __c
MULA
    eatau   ebx, ebx
    SERU    MessageBox, ebx, "Selamat Datang Ke Putera.com.", "Sampel", IkonMaklumat
    SERU    ExitProcess, ebx
TAMAT

!TAMAT
Dah tentu untuk menggunakan amf, korang kena tau asm dan juga Win32 programming. Namun demikian, kiter bleh permudahkan lagi tugas pengaturcaraan dengan macro yang lebih berkuasa, yang membolehkan kiter menulis kod seolah-olah dalam bentuk HLL. Contohnya :
ATURCARA "Contoh Konsol", APLIKASI
MOD KONSOL

!MULA

RUTIN Utama __c
MULA
    Konsol.ModPaparan Konsol.SkrinPenuh
    Aplikasi.Lengah 2
    Konsol.PadamSemua
    Aplikasi.Lengah 2
    Konsol.Tulis " >> Selamat Datang Ke Putera.com << \n"
    Aplikasi.Lengah 2
    Konsol.ModPaparan Konsol.SkrinBiasa
    Aplikasi.Lengah 2
    Konsol.PadamSemua
    Aplikasi.Keluar
TAMAT

!TAMAT

Dah tentu ini tak mustahil. Buktinya ader diberikan dalam fail cth00.asm. Although still far from perfect, it's already usable (just to show something on screen). The complete implementation still under experiment (console i/o, complete wrappers to the console APis). Kalau aku ader maser aku akan cuba kumpulkan semer dan postkan hasilnya. Due to the limitation of fasm's preprocessor, kiter takleh la code something like this :
    pMem = GlobalAlloc GPTR, 1024
tapi mungkin kiter bleh kod camni :
    set pMem, <GlobalAlloc, GPTR, 1024>
dan bagi aku ianya sama cantik ngan yang first tadi smile.gif. Dalam pakej amf (http://www26.brinkster.com/paipx/amf.zip) ader fail amf.exe yang bertindak sebagai "orang tengah". fasm.exe version 1.56 sebagai pengkompil utama. arahan.inc dan fmu.inc adalah include files utama (kat sini korang bleh tengok semer definitions. Ia dimasukkan secara automatik dan korang takleh sertakan fail2 ni secara langung. Dalam direktori imp ader beberapa fail yang merupakan "import libraries" (aku amik dari xp pro DLLs). Kalau korang nak impot fungsi dari DLL lain selain yang ader kat sini senang je, gunakan arahan IMPOT atau RUJUKAN :
;RUJUKAN <Nama DLL>, (<Label>, <Nama Fungsi>)*
RUJUKAN mydll.dll, FungsiA, "FungsiA",\
                   Fungsi, "SuatuFungsi",\
                   abc, 13,\ ;import by ordinal
                   Data1, "Data1"
dan call maner2 fungsi tersebut, e.g :
    pgl     [FungsiA]
    sln     eax, [Data1]
    sln     eax, [eax]
maklumat dll dan fungsi akan disertakan dalam import table hanya jika ia digunakan (dipanggil) oleh kod anda (fleksibel). Please note cuma dua dll jer yang diimpot secara automatik -> user32.dll dan kernel32.dll. So kalau nak guna fungsi registry, katakan, korang kena masukkan baris arahan serta "%amf%/imp/advapi32.lib". Dalam folder lib plak ader standard libs, sebagai wrappers kepada Win32 functions. Currently cuma Konsol.inc dan Aplikasi.inc jer yang ader isi. Tu pun sekadar cukup makan jer.. Sebab aku tengah fikir cara yang lebih elegan smile.gif. Idea dah ader.. cuma implementation je takde. Aku malas! Mengenai translation BI ke BM ni.. my personal opinion, takde salahnya kiter adopt bangsa asing nyer perkataan. Contohnya dari byte menjadi bait, word menjadi wud smile.gif. I'm sure kalau bangsa kiter yang sejak dulu menguasai bidang ni dan bukannya diaorang, dan katakan kiter yang cipta istilah bait tersebut, diaorang akan gunakan istilah yang sama bunyinya (mungkin byte) jugak. Dalam keje2 pengaturcaraan, aku lebih gemar dengan singkatan berbanding ngan keyword asalnya. Contohnya
byte - i8
word - i16
dword - i32
fword - i48
qword - i64
dqword - i128
single precision fp (float) - p32
double precision fp (double) - p64
double extended precision fp - p80
yang mana i bermaksud nombor integer dan p bermaksud nombor perpuluhan. Dalam translation `ra dan C-Fu, aku cuma bleh tahan ngan terjemahan (other than integer) bait (untuk byte) dan bul (untuk boolean). Mungkin dah terpengaruh sangat ngan bahasa omputihnya la kot. Tapi takde salahnya kiter adakan istilah baru seperti yang C-FU katakan. Bagi orang baru yang start ngan compiler awak, agak mudah bagi diaorang untuk menggunakannya sebab bagi diaorang, byte ngan bait sama peliknya. Tapi bagi orang lama..ia dah tentu akan ambil masa (in my case.. i don't like it at all). Kalau awak nak start revolusi, just buat terjemahan yang awak fikir sesuai (afterall.. it's your compiler), tetapkan penggunaannya dan abaikan jer komplen daripada user mengenai penggunaan istilah2 yang (pada mulanya) pelik nih. Unless, of course kalau diaorang bleh bagi better translation.
Rujukkan pula adalah terlalu terhad baik dari sumber tempatan atau pun dari Internet. Sebagai contoh, saya sedang mengumpulkan rujukan2 operasi konsol Win32 dari internet. Terlalu sedikit 'tutorial' dan contoh2 yang boleh perolehi. Operasi konsol ini adalah seperti pengguna fungsi2 terus dari Kernel32.DLL yang mana saya pilih untuk tidak menggunakan 'runtime' dari compiler C atau CPP seperti MSVCRT.DLL.
The official reference should be inside M$ Platform SDK. Base Services->DLL, Processes, and Threads->Character-Mode Applications. Cuba jugak kat MSDN. Other tutorials taklaa penting sangat since most of them just elaborate aper yang ader kat PSDK (atau aper yang langsung takde kat PSDK - "undocumented" functions). Aku lebih suker bacer PSDK dan articles dari MSDN berbanding ngan tempat lain, walaupun kadangkala orang lain lebih betul dari orang M$ sendiri. Awak bleh tengok dalam fail Konsol.inc beberapa penggunaan console functions, tapi tu actually cuma sikit jer.
Tiada langsung feedback, pertanyaan atau pun apa-apa sahaja tindak-balas dari pengguna yang telah memindah turun perisian contoh seperti PAR dan AM32 yang telah saya hasilkan. Ataupun terjemahan kepada bahasa pengaturcaraan lain untuk membantu pengaturcara lain yang tak biasa dengan sumber bahasa BASIC yang saya gunakan. Nak kata kat m'sia ini ada pakar kompiler, saya amat ragu-ragu sekali ianya wujud.
Kiter mungkin takde pakar compiler, tapi kiter ader pakar bahasa, pakar matematik dan sebagainya. Cuber kumpulkan semernya smile.gif. Secara ikhlasnya, terjemahan kepada bahasa pengaturcaraan yang lain hanya buang maser setakat ni. Just use what you're using now. Awak ngan orang lain bleh communicate ngan generalized syntax, e.g pseudo-code. Selalunya orang hanya maintain kod compiler dalam satu language jer. Biler compiler awak dah betul2 jadi compiler, kiter dah tentu tak perlukan basic. Instead, kiter akan tulis semula am32 compiler in a new programming language, called am32. Mengenai am32, actually takde la penting sangat buat masa sekarang, tapi just to share information :
  • Biler kiter remove parameter dari stack lepas return from C function, jangan gunakan pop eax, sebab ia digunakan untuk return value, instead use pop ecx atau add esp, ....
  • import table yang awak buat tu tak lengkap (but still valid and perfectly usable). Tertinggal original first thunk (exactly a same copy of first thunk), so sepatutnya import table yang perfect cam kat bawah :
section '.guna' import data readable writeable
dd jadual_msvcrt1,0,0,RVA pautan_msvcrt,RVA jadual_msvcrt2
dd 0,0,0,0,0   ;terminator
jadual_msvcrt1:
dd RVA msvcrt.system
dd RVA msvcrt.puts
dd RVA msvcrt.getchar
dd RVA msvcrt.exit
dd RVA msvcrt.sleep
dd 0
jadual_msvcrt2:
kon.guna dd RVA msvcrt.system
kon.cetak dd RVA msvcrt.puts
kon.nanti dd RVA msvcrt.getchar
kon.tamat dd RVA msvcrt.exit
kon.lewat dd RVA msvcrt.sleep
dd 0
pautan_msvcrt db 'MSVCRT.DLL',0
msvcrt.system   dw 0
                db 'system',0
msvcrt.puts     dw 0
                db 'puts',0
msvcrt.getchar  dw 0
                db 'getchar',0
msvcrt.exit     dw 0
                db 'exit',0
msvcrt.sleep    dw 0
                db '_sleep',0

Share this post


Link to post
Share on other sites

Tapi bagi orang lama..ia dah tentu akan ambil masa (in my case.. i don't like it at all).

ako pon. tapi ako tak rasa yang market untuk program ini adalah untuk orang lama. or orang hardcore programmers. very, VERY hard untuk panggil hardcore programmers satu dunia or satu mesia untuk sama2 develop bahasa ni or develop software dengan bahasa ni, dengan limited scope die. tak masuk lagi bab sekuriti yang for sure mesti akan ade orang tampil nye.

pada ako bahasa ni lebih kepada hobby language, cam BASIC arguably. potensi berlipat ganda lagi besar utnuk ajo budak sekolah daripada untuk ajo budak C++ ape.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...