original in fr John Perr
fr to en Georges Tarbouriech
en to tr Buket Benek
Yazar, 1994 yılından beri Linux kullanıcısı ve LinuxFocus'un Fransız düzenleyicilerinden biridir.
Bilgisayar ortaminda pek çok dilden daha sonra görülmeye baslamasina ragmen, Unix olmayan pek çok sistemde yaygin olarak daha önceden Unix' te bulunan betik dillerinin yerine kullanilmaya baslandi. Büyük olasilikla bu Unix kullananlarin onu nadiren tercih etmesinin asil sebebidir. Daha ilk günden Unix' te güçlü bir betimleme dili vardi. Diger betimleme dillerinde oldugu gibi BASIC çogunlukla yorumlanabilenlerdendir ve karakter dizisi ile sayi arasindaki fark bir yana veri tipleri olmayan oldukça basit bir sözdizimi kullanir. Tarihe göre dilin adi, basit olusundan ve ögrencilere kolay ögretilmesinden kaynaklanir.
Maalesef, standartlastirilmamasi pek çok çesidinin birbiriyle uyumsuzluguna neden oldu.
Biz bile BASIC' in tasinabilir olmasini zorlastiracak kadar çok çesidin oldugunu söyleyebiliriz.
Bu ve benzeri engellere ragmen, dogru programcilar BASIC' in küçük programlarin çabuk gelistirilmesinde
dikkate deger bir seçenek oldugunu hatirlatirlar. Uzun yillar bir kaç fare hareketi ile olusturulan
grafik arayüzünün bulundugu Windows çesitlerindeki Tamamlanmis Gelisim Ortami (Integrated
Development Environment) nedeniyle bu gerçekten de dogruydu. Ayrica görsel olarak adlandirilan bu çesitler
üretim uygulamalarinda macro dil olarak kullanildi ki bazi insanlarin kullanim oraninin artmasina veya
bazilarinin da hiç kullanmamasina neden olan budur.
Burada, Linux' ta bulunan bazi çesitlerini ve ya en azindan en iyi bilinenlerini inceleyecegiz ve karsilastirmaya
çalisacagiz.
Kbasic belgesinde bulunan Andrea M. Marconi's tarihçesinden:
BASIC dili (Beginners All-Purpose Symbolic Instruction Code) 1964' te New Hampshire' deki (USA) Dartmouth kolejinde yaratildi ve orada John G. Kemeney (1926-93) ile Thomas E. Kurtz (1928-) tarafindan gelistirildi. Kemeney ilk olarak Manhattan Projesi' nde (1945) çalisti. Daha sonra (1948-49) Albert Einstein'in assistani olarak çalistigi sirada 1956 yilinda Kurtz ile Dartmouth' ta tanisti.
Ikisi birlikte basitlestirilmis yeni bir programlama dili üzerinde çalismaya basladilar. Darsimco ve DOPE olarak adlandirilan dil çalismalarindan sonra, asagidaki özelliklere sahip bir dilin çalismalarina yöneldiler:
Bunlari gerçeklestirebilmek için FORTRAN ve ALGOL' dan basladilar. Son çesidi "Dartmouth BASIC" olarak adlandirildi ve 14 tane talimati mevcuttu. "Dartmouth BASIC", derlenmis olan bir çesitti ve zamanina göre oldukça hizliydi.
Kemeney ve Kurtz' un çalismalari 1 Mayis 1964 sabah saat 4'te iki BASIC programi Dartmouth Koleji' nin Genel Elektrik 225 UC' sinde ayni anda çalistiginda sonuç vermis oldu.
Kemeney ve Kurtz buluslari için bir patent ayarlamayip ortak kullanima açtilar. Bu, dilin gelismesini ve çesitlerinin artmasini sagladi. Ilk kullanicilar arasinda Dartmouth' a GE-255 satan Genel Elektrik bulunmaktadir.
Gordon Eubanks (the CEO of Symantec) 1970' te E-BASIC' in meydana çikardigi pek çok BASIC çesitlerinin köküdür. java' nin bugün yaptigi gibi pseudo code(sahte kod) kullandi. Daha sonra CBASIC ve diger çesitlere ve en sonunda 1974' te standartlari belirlemek için ANSI' ye ulasildi. 1978' de BASIC' in oldukça genis bir kullanimi oldugu zamanlarda bunlara devam edilmedi.
Bu zamanlarda (1975), Bob Albrecht ve Dennis Allison tarafindan TinyBASIC yaratildi. 2Kb RAM ile çalisabiliyordu. Ilk derlenmis BASIC te görülür. William H. Gates III (1955-, aka Bill) ve Paul Allen (1953-) tarafindan gelistirildi. Bilgisayar yapimcilari makinelerinin ROM' larina BASIC' in bir kopyasini tanitmaya basladilar. 70' lerin sonunda ilk kisisel bilgisayar kendi BASIC çesidine sahipti:
80' lerin basindan itibaren BASIC' in tarihi bilgisayarlardan biri ile baglantili devam etti. Iki ürün piyasaya hakimdi.
IBM, yorumlanmis ROM' da bulunan fakat esnek olan PC-DOS' la BASIC A' yi destekler. MS-DOS, Gee-Witz BASIC (veya GW)' i destekler.
1984' te Microsoft' un BASIC derleyicisi ortaya çikar ve Microsoft BASIC Profosyonel Gelisim Sistemi 7.1 ile
1985' te baslayip 1990' da duran QuickBasic serilerinin arasindaki pek çok çesit bunu takip eder.
Grafik arayüzlerini içeren isletim sitemleri dile tekrar degisiklik getirir. Grafik arayüzlerinin yaratilmasini saglayan Visual BASIC ortaya çikar. Visual BASIC bir nesne dili olma iddiasindadir ki bu pek çok programcilar tarafindan tartisilmisir. Fakat son zamanlardaki bir arastirmaya göre Windows 9x için gelistirilen programin %90' i Visual BASIC kullanir.
Linux' ta bulunan BASIC sayisi hakkinda bir arastirma yaparsak, daha fazlasi veya azi ileri seviye olan yarim düzine kadar proje bulabiliriz. Sourceforge' de download sayilari üzerinden bir siniflandirma veren "Basic Dökümü" bulunmaktadir:
Sourceforge.net' te EN ÇOK indirilen çesitler
Gnome ve KDE' nin birlikte Visual Basic yerine geçecek bir projelerinin oldugunu ögrendik. Ayrica, Richard Stallman' in
VB' nin yerine bagimsiz bir alternatife ihtiyaç olundugu konusunda
"the register"' a mektup' ta 10 Subat 2002' de bir konusmasi bulunmaktadir.
GNU markasindaki tek BASIC projesi olan GLBCC (GNU/Liberty Basic Compiler Collection)' nin yazari Anthony Liguori (ajl13-at-bellatantic.net)
de souceforge sahiplik yaptigi
GLBCC' nin internet sayfasinda (lbpp.sourceforge.net)
bunu sormaktadir.
Dilin olanaklari ve arayüzleri hakkinda bir fikre sahip olmak için farkli BASIC' lere bakalim:
XBasic, en iyi kullanici arayüzlerinden birine sahip olan gelisim ortamidir. Bir IDE' dir yani grafiksel bir yapi saglayan araci, hata ayiklayici ve bir derleyicisi vardir. "Nokta komut" sistemi, ana pencerenin üst sol kismindaki yazi alanina nokta ile biten komutlar yazarak arayüzleri yönetmek için mouse yerine klavye kullanilmasina olanak verir:
Özelliklerine bakildiginda, XBasic grafik arayüzlerini ve pek çok uzantilari programlayacak tüm gerekli kütüphaneleri içerir.
C dilinde yazilan fonksiyonlari çagirma özelliklerine bakildiginda ise tip tanimlamasi, degisken birlikleri
veya kütüphane yaratilmasi gibi bazi özellikleri mevcuttur.
Son olarak, XBasic Windows veya Linux için GPL altinda bulunmaktadir:
http://www.xbasic.org
SmallBASIC, Win32, Linux ve PalmOS için yazi modundaki yorumlayicidir. Gelistirici kismi hakkinda diger OS' lere
baglanmayi kuvvetlendirmek için iyi döküman vardir. Yorumlayici farkli arayüzler için derlenebilir:
Yazi veya grafik modunda çalisabilir. Asagidaki örnek System_infos.bas programinda çalisabilir:
$ sbasic System_info.bas SmallBASIC version 0.8.2, use -h for help http://smallbasic.sourceforge.net VMT Initialization... File: System_info.bas Section: Main PASS1: Line 24; finished SB-MemMgr: Maximum use of memory: 30KB PASS2: Node 3/3 Creating byte-code... Variables 20 Labels 0 Proc/Func 0 Code size 707 System Information OS: Unix/Linux version 2.4.18-6mdk (quintela @ bi.mandrakesoft.com) (gcc version 2.96 20000731 (Mandrake Linux 8.2 2.96-0.76mdk)) #1 Fri Mar 15 02:59:08 CET 2002 204018 SB: 802 Display 99x58 Colors 16 Font: 1x1 Total free memory: 127728 KB Stack size: 127728 KB Largest free memory block: 127728 KB * DONE * SB-MemMgr: Maximum use of memory: 30KB $
$ sbasic -g System_info.bas SmallBASIC version 0.8.2, use -h for help http://smallbasic.sourceforge.net VMT Initialization... File: System_info.bas Section: Main PASS1: Line 24; finished SB-MemMgr: Maximum use of memory: 30KB PASS2: Node 3/3 Creating byte-code... Variables 20 Labels 0 Proc/Func 0 Code size 707 SB-MemMgr: Maximum use of memory: 30KB $
SmallBASIC dili yeteri kadar basit ve BASIC' ten bekleyebileceginiz standart fonksiyonlara yakindir. Grafik fonksiyonlari' nda
yeni hiç bir sey yoktur ve yukarida bahsedilen herhangi bir OS' te çalisabilen klasik RECTANGLE ve CIRCLE komutlarini bulabilirsiniz.
Degiskenlerin tipleri yoktur.
Bununla beraber SmallBasic, eski TINYBasic ve QuickBasic ile uyumlu olup PalmOS ile çok iyi bütünlesmistir.
http://smallbasic.sourceforge.net' te bulunmaktadir.
wxBasic' in Quick Basic özelliklerine ve awk' de bulunan birlesik dizi gibi bazi Unix ayrintilarina sahip olarak tasarlanmistir. Küçük boyutta bir yorumlayicidir: floppy diske sigar. Dökümani tamdir ve 138 sayfalik bir pdf el kitabi olarak bulunur. X Window ve windows için program yazmayi saglayan grafik kütüphanesi vardir. Bu dil en azindan grafiksel dizayni için C++ gibi nesne yönelimli dillere yakindir. Fakat, grafiksel arayüzler elle düzenlenmelidir. Bu BASIC için bütünlestirilmis bir gelistirim arayüzü mevcut degildir.
// My first wxBasic demo... option explicit // create the window dim frame=new wxFrame(0,-1,"wxBasic App",wxPoint(10,10),wxSize(300,200)) frame.Centre() // place a panel in the window dim panel = new wxPanel(frame, -1) // add a status bar dim sBar = frame.CreateStatusBar( 1 ) sBar.SetStatusText("wxBasic Frame Demo") // attach a menubar to the window dim mBar = new wxMenuBar() frame.SetMenuBar(mBar) // build the "File" dropdown menu dim mFile = new wxMenu() mBar.Append(mFile,"&File") // populate it mFile.Append(wxID_NEW, "&New", "Creates a new file") mFile.Append(wxID_OPEN, "&Open", "Loads an existing file from disk") mFile.Append(wxID_SAVE, "&Save", "Saves current file") mFile.Append(wxID_SAVEAS, "Save &As", "Saves current file with new name") mFile.AppendSeparator() mFile.Append(wxID_EXIT, "&Exit", "Exit Application") // build the "Edit" dropdown menu etc.....
İnternet sayfası: http://wxbasic.sourceforge.net
GLBCC (GNU Liberty Basic Compiler Collection) olarak ta adlandirilan bir derleyicidir. Daha dogrusu C++' i derlemeden önce C' ye dönüstüren C++ derleyicileri gibi BASIC' i C' ye dönüstüren C GNU gcc derleyici arayüzüdür. Adindan da anlasilacagi gibi bu derleyici Liberty BASIC diline 100% uyumlu olarak olusturulmustur. Liberty BASIC 90' larda Windows platformlarinda görülmeye baslayanlardan bir tanesidir ve adindan dolayi serbest olarak bulundugundan oldukça basarili olmustur. Hakkinda daha fazla bilgi için yüksek niteliklerinden övgüyle bahseden internet sayfasina bakabilirsiniz. Bu dil serbest olarak bulunmaz fakat Liberty BASIC' in ücretsiz bir Windows çesidi internet sayfasindan indirilebilir.
Windows ve Linux için de GLBCC derleyicisi bulunmaktadir ve herhangi bir programlama dilinde yazilmis programlar kadar hizli oldugu söylenen yalniz basina çalistirilabilenler vardir. Yazarlar, GLBCC ile derlenen Liberty BASIC' in Visual BASIC' le hiz açisindan komik bir karsilastirmasi yapildigini söylerler.
Linux' ta GLBCC' yi yüklemek oldukça basittir ve arsivi açmak için sadece klasik bir "tar" komutu ile yüklemeye baslamak için
"make install" komutuna ihtiyaç duyulur.
Program, normal modda komut satiri ile kullanilir, "glbcc hello.bas" yazarak asagidaki gibi bir çikti elde edilir:
$ glbcc /usr/local/bin/lbpp -I/usr/local/lib/glbcc-lib/0.0.7/include -o out.c hello.bas gcc -g -I/usr/local/lib/glbcc-lib/0.0.7/include `gnome-config --cflags gnomeui` -o hello out.c /usr/local/lib/glbcc-lib/0.0.7/lib/lbcrt0.o -L/usr/local/lib/glbcc-lib/0.0.7/lib -lLB -lm `gnome-config --libs gnomeui` $ ls -l hello* -rwxr-xr-x 1 john john 339671 oct 13 21:55 hello -rw-r--r-- 1 john john 22 avr 14 17:41 hello.bas $ cat hello.bas print "Hello, world!" $ ./hello Hello, world!
Parametresiz kullanildiginda bir grafik diyalogu açarak kullaniciya BASIC dosyasinin ve olusturulacak çalistirilabilir çiktinin adini sorar. Programin girilen adi kendiliginden Windows' ta .exe uzantisi ile, Linux'ta uzantisiz olarak çiktiya eklenir
BASIC bir dil olarak eksiksizdir ve grafiksel arayüz GTK kütüphaneleri tabanlidir. Isin komik tarafi GLBCC' nin de BASIC' te yazilmis olmasidir.
Unix ve Windows için diger bir BASIC çesidi
Bir yorumlayicinin özelliklerini göstermesine ragmen bir yorumlayici degildir. Daha çok bir derleyicidir: islemek için bir kaynak kodu verdiginizde, onu derler ve böylece makina koduna dönüstürerek aninda çalistirir. YaBasic, komut satirindan çalistirilir. Argüman olarak dosya adini alir ve tanimladigimiz gibi dosyayi çalistirir. Argümansiz asagidaki örnekte oldugu gibi yorumlayici moduna geçer:
$ yabasic Enter your program, type RETURN twice when done. for i=1 to 10 print i,"hello, world" next i 1hello, world 2hello, world 3hello, world 4hello, world 5hello, world 6hello, world 7hello, world 8hello, world 9hello, world 10hello, world $
Bu çalisma yoluyla dosyanin ilk satirina "#!/bin/yabasic" yazarak (Unix kabuklarindaki klasik özellik) YaBasic ile Unix betikleri veya CGI betikleri bile yazilabilir ve dosya çalistirilabilir hale getirilebilir.
Bir dil olarak, degisken tiplerinin bulunmadigi Quick BASIC' e yakin standart bir BASIC' tir. Karakter dizileri ve sayilari ayirmak için degisken adlarinin sonunda $ karakterini kullanilir. Nesne yönelimli programlarin özellikleri bulunmaz fakat OS' e göre sizi X11 ve Windows için grafik moduna ulastiran kendi kütüphanelerinizi ve talimatlarinizi yaratabilirsiniz. Perl ve PHP' de bulunan yararli split() fonksiyonu, 80' lerde yapilanmis programlama ortaya çiktigindan beri BASIC' te bulunan FOR, WHILE, REPEAT UNTIL döngüleri ve IF ELSE ENDIF ifadeleri de bulunmaktadir.
X11-BASIC X11 grafik özellikleriyle birlikte yapilanmis bir BASIC yorumlayicisidir. Atari ST' de bulunan
GFA BASIC' in özelliklerini kullanir. Atari ST GEM/TOS sisteminde kullanilan BASIC' ten (80' lerin sonunda) Unix' e
bir geçistir. Bir yorumlayici olarak veya betikler, CGI' lar yazmak için kullanilabilir.
Yalniz basina çalistirilabilir dosyalar (statik mod) veya
200 KB' lik X11 basic kütüphanesine baglanabilen çalistirilabilir dosyalar (dnamik mod)
yaratmak için pseudo (sahte) derleyicisi mevcuttur. Bir pseudo (sahte) derleyicidir. Çünkü,
sonuç dosyasi CPU tarafindan direk olarak çalistirilan makine kodunu tutmak yerine
BASIC' in yorumlayicisiyla birlikte sikistirilmis halini tutar. Bu pseudo (sahte) derleyici X11-BASIC' te yazilmistir.
BASIC' in dili oldukça zengin, yapilanmis ve degisken tiplidir (tamsayi, ondalikli sayi, düz yazi, dizi, DOGRU YANLIS tipi).
Hafizaya ulasmak için C malloc() gibi veya dizilerden olusturulan matrislerin çarpimi gibi komutlar mevcuttur.
Grafik talimatlari Atari ST GFA BASIC ile aynidir fakat ancak simdi X' te benzer sonuçlar alinir.
Örnegin, MENU komutlari grafik penceresinde bir menü yaratir.
Yorumlayici bazi yerleri hala Almanca olan döküman ve pek çok örnek ile donanmistir.
Giris islemlerinin hala tamamlanmamis olmasi ve saglanan örneklerde bile hatalarin bulunmasi onun için dezavantajdir.
Bu yorumlayicinin BASIC dilinin hedefledigi kullanici kategorisi tarafindan kolaylikla kullanilmak için
beta versiyonu gibi davrandigini düsünelim.
$ xbasic *************************************************************** * xbasic V. 1.07 * * by Markus Hoffmann 1997-2002 (c) * * * * version date: Wed Sep 25 10:26:29 CEST 2002 * * library V. 1.07 date: Wed Sep 25 10:26:29 CEST 2002 * ***************************************************************X11 Basic: yorumlayıcının evi
İnternet sayfası: http://www-cip.physik.uni-bonn.de/~hoffmann/X11-Basic/
Iste ilk bakista iyi bir etki yaratan bir BASIC. Hem pek çok olanagi var hem de 7.7 MB büyüklügünde dökümantasyonu. Trolltech internet sayfasinda (http://www.troll.no) mevcut olan yükleme eger yeni bir Linux dagitim markaniz yoksa Qt-3.* gerektirir. Yeni olmasina ragmen (0.8 versiyonu) bir programcinin hayal edebilecegi tüm özellikleri saglayan tam bir gelisim ortamidir.
HBasic yazarlari: "HBasic' in su andaki versiyonu BASIC gelistiriciler tarafindan kullanilacak kadar sabit degildir. ilk 1.0 sabit versiyonu için beklemek zorundalar." diye uyarmaktadir.
GNOME Basic Visual Basic, VBA, VBscript ve diger ilgili diller ile 100% uyumlu olmayi amaçlayan projedir.
Ilk önceleri gnumeric' ten çalistirilabilir VBA makrolari yapmak için uygun görüldü fakat beklenmeyen degisiklikler yüzünden
sadece bir takim formlari çalistirabilir, VB kodunun büyük bir kismini kontrol eder ve tek ASPleri çalistirir.
BONOBO' ya daha iyi uyumuyla birlikte tam bir MS uyumlu ortam beklenebilir.
Simdilik, Gnome Basic Gnome projesi için VB uyumlu özellikler saglama girisimi içerisindedir.
Özellikle üretimsel uygulamalar için(VBA).
Proje hala alpha öncesi durumdadir ve Gnome Projesi gelistirenleri için ayrilmalidir.
İnternet sayfası: http://www.gnome.org/gb/
KBasic, diger bir Visual Basic uyumlu BASIC gelistirme girisimidir. Gelistirenler ilk 1.0 sabit versiyonunu 2003 yazinda serbest birakmayi ummaktadirlar. Simdilik, gelisme için ayrilmis tek bir uyumsuz versiyonu bulunmaktadir. Kdevelop ortamini kullanmalidir.
Asagida indirilebilen çesidinin nasil görüldügü bulunmaktadir:$ kbasic1 --help Usage: kbasic1 [OPTION]... FILE --help display this help and exit -V, --version print version information and exit -c, --copyright print copyright information and exit $ kbasic1 -V KBasic version 0.8 Copyright (C) 2000, 2001, 2002 The KBasic Team This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, to the extent permitted by law. Visit us on http://www.kbasic.org/ $kbasic1 hello.bas -- scan -- LINE 00001 PRINT STRING "Hello, world!" EOL LINE 00002 END -- parse -- STRING in line 1 EOL in line 1 parsed PRINT parsed END -- interpret -- 0000: KBASIC KBASIC 0006: VER 1.000000 0011: OPTION R OFF 0013: JMP 36 0036: DIM_STAT "Hello, world!", 1 0055: JMP 18 0018: PUSHS 1 , " Hello, world! " 0023: PRINT Hello, world! 0034: END execution ended
Gördügünüz gibi kbasic çalisir fakat müdahale edilebilir degildir. Yorumlayicinin hata ayiklayici mesajlari ve yaratilan assembly kodu simdilik kaçinilmazdir.
İnternet sayfası: http://www.kbasic.org
BASIC' in yorumlayici ve derleyicisini incelememiz bize bu konuda bilgi kazandirdi.
Her seyden önce bu itibardan düsmüs dilin yorumlayici modunda da çalisan
perl, python, Tcl/Tk ve php gibi rakiplari sayesinde oldukça güvenilir olarak çalistigi
Unix sistemlerinde bile hala bulundugu görüldü.
Serbest yazilim gelistiricileri arasinda bu dilin yarattigi etki önemlidir.
Proje sayisi oldukça fazladir ve hepsi de aktiftir. Talep muhtemelen yüsektir ve bu,
serbest yazilim gelistirilmesine ve serbest Unixlere BASIC programcilarini etkileyerek katkida bulunur.
Windows sistemlerde VisualBasic Microsoft OS, ASP' lere ve verimlilige olan tamamlayiciligi sayesinde
yaygin olarak kullanilmaktadir. Bunun yaninda test ettigimiz pek çok BASIC çesidi
her iki platformda da çalismasinin yanisira bazen diger bir kaç sistemde de çalisir.
BASIC hala bazi engellerle karsilasmaktadir. Standardinin olmamasi pek çok çesidin birbiriyle uyumsuz olmasina neden olur.
VisualBasic' i mevcut standartlara eklemek için tasarlanmis Gnome Basic veya KBasic gibi projeler
eger VB serbest olsaydi iyi olabilirdi. Monopol belki de bu duruma uygundur...
BASIC gelistiricileri için, dogru bir seçim vardir ve bazi araçlar oldukça öndedir.
IDE olarak HBasic de ümit vericidir. Sabit bir versiyonu beklerken XBasic en basarili olandir.
Bunlarin yaninda smallbasic ve yabasic, sistem tarafindan saglanan bir çok çözüm arasindan seçilen
CGI ve betik yazmak için kullanilan Unix' e yeni geçmis versiyonlardir. GLBCC de bunu saglar ancak
GCC ile derlenebilen program yaratma avantaji da vardir. IDE yoksunlugundan ve bundan dolayi kolay hata ayiklanamamasindan
bu araç ile büyük programlar gelistirip korumak zor olacaktir. Son olarak hiç bir kategoride bulunmayan wx-Basic' in,
garfik arayüzleri yaratmak gibi bazi avantajlari vardir.
Bu BASIC çesitleri tekrar derleme geregi olmadan OS bir sistemden baska bir sisteme
kolayca tasinabilirler. Açikçasi bir çogu Win32 ve Unix platformlarinda bulunmaktadir.
BASIC gelistiricisinin zor isi amacina ulasmak için dogru araci seçmektir.