BaCon, Linux gibi unix tabanlı sistemlerde BASIC kodunu C koduna çevirebilen ücretsiz bir dönüştürücüdür.

BaCon, MacOSX dahil çoğu Unix / Linux / BSD platformunda çalışan Unix tabanlı sistemler için ücretsiz bir BASIC-C çeviricidir. 64 bit platformlar dahil farklı platformlarda derlenebilen araçlar oluşturmaya yardımcı olmaya yöneliktir.

BaCon bir çevirici, dönüştürücü, kaynaktan kaynağa derleyici, vb. şekillerde tanımlanabilir. Korn Shell, ZShell veya BASH yüklü sistemlerde BaCon ile yazılmış BASIC türevi kodu C koduna çevirerek GCC, Compaq C, TCC, clang/LLVM gibi derleyicilerle makine koduna derlemek mümkündür.

BaCon nasıl kurulur?
BaCon sitesinde çeşitli Linux dağıtımları için hazırlanmış paketler (.deb, .rpm gibi paketler) bulunmaktadır. Ancak kullandığınız dağıtım için hazırlanmış paket bulunmuyorsa bile şu şekilde kurulum yapabilirsiniz:
1. BaCon-x.x.x.tar.gz dosyasını indirin (versiyon numarası yerine x yazılmıştır).
2. Eğer tar.gz dosyasını açmak için grafik arayüzlü bir program yoksa komut satırına tar xvfz bacon-x.x.x.tar.gz (indirdiğiniz tar.gz dosyasının ismi, terminal dosyanın bulunduğu dizinde değilse ~/Downloads/bacon-x.x.x.tar.gz vb. şeklinde dosya yolunu da yazınız.)
3. Dosya açıldıktan sonra cd bacon.x.x.x şeklinde dizine giriniz.
4. Root olarak şu komutları sırayla çalıştırınız:
./configure
make
make install

Eğer herhangi bir problem çıkmazsa kurulum tamamlanacaktır.

BaCon ile kod yazmak için BaConGUI adında bir arayüz bulunmaktadır. .bac uzantılı dosyaları bu arayüz ile ilişkilendirebilirsiniz. Böylece dosya düzenleme işlerini daha kolay yapmanız mümkün olabilir. Bu arayüzün Tools menüsünde Convert ve Execute ile programınızı derleyip test edebilirsiniz. BASIC programcılarının hemen tanıyabileceği bir kodla bu testi yapabilirsiniz:
FOR x = 1 TO 10
PRINT “Merhaba dünya!”
NEXT x

Grafik Kullanıcı Arayüzü (GUI) nasıl oluşturulur?
BaCon ile Linux programlamaya hızlı bir giriş yapılabilir. Grafik Kullanıcı Arayüzü (GUI) oluşturmak çok kolay görünüyor. hug.bac dosyasını indirip program kodunuzun başına INCLUDE “hug.bac” şeklinde bir satır ilave ederek GUI yazabilirsiniz. Aşağıdaki kodla başlığı “Merhaba dünya!” olan bir pencere oluşturabilirsiniz:
INCLUDE “hug.bac”
INIT
window = WINDOW(“Merhaba dünya!”, 200, 200)
DISPLAY

hug.bac nedir?
hug İngilizce Highlevel Universal GUI ifadesinin kısaltmasıdır.hug.bac dosyası, grafik kullanıcı arayüzü oluşturmak için kullanabileceğiniz fonksiyonları içermektedir. Bu dosyayı INCLUDE “hug.bac” şeklinde kodunuza ekleyerek kolayca grafik kullanıcı arayüzü oluşturabilirsiniz.

HUG, BaCon’un grafik kullanıcı arayüzlerini hızlı ve verimli bir şekilde ayarlamasına olanak tanıyan basit bir dizi işlevdir. Model olarak, araçlar kümesi HTML Formlarında sıkça bulunan araçlarla (widget) sınırlıdır. Ardından, güçlü kanvas aracıyla ve bazı çizim komutlarıyla ve ayrıca klavye ve fare olaylarını sorgulamak için kullanılan yöntemlerle genişletilir.

Uygulama, GTK kütüphanelerinden gerekli işlevleri almak için BaCon IMPORT deyimini kullanarak GTK’ya dayanır. Bu yaklaşımın avantajı, elde edilen yürütülebilir dosyanın GTK ile ikili düzeyde bağımlılığı bulunmamasıdır. Bu, HUG kullanan bir programın, GTK mevcut olmadığında bile yürütülebileceği anlamına gelir.

Genel kullanım
Bir kullanıcı arayüzünü kurmak için öncelikle gerekli pencere öğelerinin tanımlandığı bir pencere oluşturulur. Çoğu pencere aracı için, bir “geri çağırma” (callback) tanımlamak mümkündür. Aslında bu, pencere aracı etkinleştirildiğinde geri çağrılan kullanıcı tanımlı bir işlevdir.

hug.bac grafik kullanıcı arayüzü fonksiyonları

ATTACH(pencere, araç, x, y)

Tür: yönerge

Bu işlev, pencereye <x>, <y> konumundaki bir pencere aracı (widget) ekler. Pencerenin sol üst köşesi referans olarak alınır (0, 0).

Bu yönerge, bir pencerenin ekranda konumlandırılması için de kullanılabilir. Bu durumda pencere adı yerine 0, araç adı yerine pencere adı yazılır: ATTACH(0, pencere adı, x, y)


BUTTON(‘başlık’, xboyut, yboyut)

Tür: fonksiyon

Bir başlığı ve <xboyut> genişliği ve <yboyut> yüksekliği olan bir düğme oluşturur. Oluşturulan düğmenin kimliğini (ID) döndürür.


CALLBACK(araç, fonksiyon)

Tür: yönerge

<araç> için bir olay gerçekleştiğinde HUG’un atlayacağı <fonksiyon> bu yönerge ile ayarlanır.



CANVAS(xboyut, yboyut)

Tür: fonksiyon

<xboyut> genişliği ve <yboyut> yüksekliği olan bir kanvas (tuval) oluşturur. Sol üst köşe konumu (0, 0) olarak tanımlanır. En son oluşturulan tuval, çizimin yapıldığı varsayılan tuval olarak kabul edilir. Varsayılan tuval DRAW fonksiyonu ile değiştirilebilir.

Sistemde GtkGlArea kitaplığı veya GtkGlext kitaplığının bulunması koşuluyla tuval aynı zamanda bir OpenGL tuvali olarak da oluşturulabilir. Bunu yapmak için, tuvali oluşturmadan önce HUGOPTIONS‘daki CANVAS seçeneğini kullanın.


CHECK(“başlık”, xboyut, yboyut)

Tür: fonksiyon

<xboyut> genişliği ve <yboyut> yüksekliği olan etiketli bir kontrol düğmesi (check button) oluşturur.