GW-BASIC

GW-BASIC adalah sebuah dialek bahasa BASIC yang dikembangkan oleh Microsoft dari BASICA untuk Compaq. GW-BASIC kompatibel dengan Microsoft/IBM BASICA, tetapi GW-BASIC disimpan di dalam cakram (disk), tidak seperti BASICA yang disimpan di dalam ROM. GW-BASIC dibundel dengan sistem operasi MS-DOS untuk komputer kompatibel dengan IBM PC. Seperti halnya semua versi BASIC komputer mikro, GW-BASIC tidak memiliki struktur yang cukup untuk disebut sebagai sebuah bahasa pemrograman terstruktur, seperti halnya variabel lokal. Selain itu, kecepatan eksekusi program-program GW-BASIC terbilang relatif lambat, mengingat memang BASIC merupakan bahasa pemrograman yang diinterpretasikan. Meski demikian, GW-BASIC menawarkan banyak perintah grafik. Fleksibilitas yang dimilikinya cukup bagi seseorang untuk menulis permainan komputer sederhana, program bisnis dan beberapa program lainnya. Karena GW-BASIC dimasukkan ke dalam MS-DOS, maka GW-BASIC tersedia dalam setiap komputer berbasis IBM PC atau kompatibelnya. Karena itu, GW-BASIC merupakan cara yang murah untuk para pemrogram awal untuk belajar bagaimana caranya memprogram komputer.
Saat Microsoft merilis MS-DOS 5.0, GW-BASIC pun digantikan oleh Microsoft QBASIC, sebuah versi kompiler Microsoft QuickBASIC yang ringan (tidak semua fiturnya dimiliki). Kemajuan besar GW-BASIC terhadap BASICA adalah bahwa GW-BASIC tidak membutuhkan interpreter BASIC di dalam ROM, sehingga dapat digunakan di dalam komputer selain IBM PC.

GW??

Inisial "GW" dalam "GW-BASIC" mungkin diambil dari Greg Whitten, seorang karyawan awal di Microsoft Corporation yang mengembangkan standar-standar di dalam jajaran kompiler bahasa BASIC Microsoft. Teori lainnya adalah bahwa GW merupakan singkatan dari Gee Whiz, seperti yang ditulis dalam buku manual pengguna untuk GW-BASIC yang diterbitkan oleh Microsoft Press. Teori lainnya mengatakan bahwa GW juga singkatan dari "Gates, William", nama asli dari Bill Gates (William Henry Gates III). Dan teori terakhir adalah "Graphics and Windows", mengingat kedua fitur tersebut tidak dimiliki oleh BASICA.

Lingkungan pemrograman

GW-BASIC memiliki sistem Integrated Development Environment (IDE) yang bersifat command-line yang dibuat berdasarkan aslinya yang dikembangkan di Dartmouth College; semua baris program harus diberi nomor angka baris, dan semua baris yang tidak diberi nomor angka baris dianggap sebagai perintah langsung yang akan dieksekusi secara langsung. Antarmuka pemrograman yang digunakannya hampir semuanya bersifat command-line, kecuali untuk jalan pintas (shortcut) tombol fungsi yang diletakkan pada bagian bawah layar dan peringatan hak cipta pada atas layar. Semua berkas yang dibuat oleh GW-BASIC akan disimpan dalam format biner terkompres GW-BASIC, tetapi GW-BASIC juga menawarkan pilihan untuk menyimpan berkas BASIC dalam format teks biasa (berkas ASCII). IDE GW-BASIC memiliki perintah-perintah untuk RUN (menjalankan), LOAD (memuat), SAVE (menyimpan), LIST (menampilkan) program yang sedang terbuka atau SYSTEM (untuk keluar ke sistem operasi yang digunakan). Meskipun perintah-perintah tersebut dapat digunakan sebagai statemen program, penggunaannya sangatlah jarang kecuali untuk perintah SYSTEM.

Pemrograman dengan GW-BASIC

GW-BASIC sebenarnya mendukung sedikit pemrograman terstruktur, akan tetapi hal tersebut justru terlalu banyak bagi para programmer GW-BASIC untuk membuat struktur program yang baik. Semua pernyataan bersyarat IF...THEN...ELSE harus ditulis dalam satu buah baris, meskipun pernyataan WHILE...WEND dapat ditulis dalam beberapa baris. Fungsi-fungsi hanya dapat didefinisikan dengan menggunakan statemen DEF FNf(x)=<fungsi matematika dari x> (contoh DEF FNLOG(basis, angka)=LOG(angka)/LOG(basis).
Variabel-variabel juga kadang ditulis dengan menggunakan simbol jenis data pada akhir namanya, A% untuk integer, A$ untuk string, dan lain-lain. Sekelompok variabel yang tidak didefinisikan juga dapat diset ke dalam sebuah jenis data tertentu berdasarkan huruf pertamanya dengan menggunakan perintah DEFINT, DEFSTR dan lain sebagainya. Tipe data yang diguakan oleh variabel yang tidak mengikuti penamaan ini adalah bilangan floating-point dengan presisi tunggal.
Karena banyak programmer GW-BASIC memprogram tanpa adanya latihan formal, kadang-kadang mereka tidak menggunakan struktur sederhana untuk program yang mereka buat. Hasilnya, mereka membuat program yang kurang teratur khususnya untuk penggunaan statemen GOTO.
GW-BASIC mengizinkan penggunaan joystick dan perangkat input sejenis pena pada saat itu, tetapi tidak untuk mouse. GW-BASIC dapat membaca dan menulisi berkas, port LPT, dan port COM; bahkan ia dapat melakukan "jebakan" terhadap port-port tersebut, meski ia tidak dapat menangani perangkat tape.
GW-BASIC dapat memainkan musik sederhana dengan menggunakan statemen PLAY, dengan menggunakan nada-nada yang ditulis dalam string, seperti PLAY ""edcdeee2dfedc4". Kontrol suara yang arasnya lebih rendah lagi dapat dilakukan dengna menggunakan statemen SOUND, yang dalam argumennya terdapat frekuensi dalam Hertz dan panjang beep-nya dihitung dalam waktu internal speaker PC dalam mesin IBM PC. Akan tetapi, penggunaan suara terbatas hingga beep yang bersifat monoaural (satu kanal) saja. Meski demikian, beberapa PC rumahan seperti Tandy 1000 mengizinkan penggunaan tiga buah kanal suara untuk perintah SOUND dan PLAY. GW-BASIC juga mengimplementasikan perintah NOISE, yang memiliki 8 efek suara yang dapat diubah parameter pitch, speed, dan length-nya.