PureBasic - Tanıtım

 



Not: GitHub.io 'da sadece Purebasic içeren yeni bir blog oluşturdum. 

PureBasic, tahmin edeceğiniz gibi, Basic programlama dilini temel alan gelişmiş bir dildir. Diskte 300 MB yer kaplayan yazılım, tek kullanıcı için 79€ ya satılmaktadır. Programı tanımak, öğrenmek veya bir exe oluşturmak için bu ödemeyi yapmanız şart değil. Sitesinden indireceğiniz program ile 800 satıra kadar olan programları ücretsiz olarak yazabilirsiniz. Yazılımın, Windows, Linux, OS X, Raspberry Pi ve AmigaOS sürümleri vardır. Yani aynı kodu, farklı platformlar için derleyebilirsiniz. Programı satın alırsanız ömür boyu güncel versiyon kullanmayı da hak etmiş oluyorsunuz. Dünyada yazılan milyonlarca satırdan oluşan programlardan sonra VB 6.0 bitti VB .Net e geçelim.. Yok o da bitti bitiyor VB .Net Core a geçelim. Neyse ki PureBasic kültüründe böyle durumlar olmuyor😁 Özetle PureBasic için, öğrenmesi kolay, hızlı ve iş bitirici diyebiliriz.




Normalde PureBasic IDE, arka fonu açık sarı renkli geliyor. Gözü yorduğundan dark tema ile değiştirdim. Github da açılan pencerede Code butonuna tıklayın. Download zip seçeneğini seçin. Koyu temayı yüklemek için, File -> Preferences menüsüne girin. Import/Export sekmesine gelin. Load From yanındaki üç noktaya tıklayın. .prefs dosyasını gösterin. Ardından Open, Include color settings, Import settings e tıklayın. Apply ve OK butonuna tıklayın.

Editör penceresinde, Ctrl tuşu basılıyken farenin orta tekerini kullanarak zoom in, zoom out yapabilmek güzel bir özellik olmuş. Aynı işlem yine Ctrl tuşu ile birlikte + veya - tuşlarına basarak da yapılabiliyor. Ctrl + 0 ise zoom seviyesini ilk haline döndürmek için kullanılıyor. Kodu bir yerden kopyalayıp editöre yapıştırdınız diyelim. Ctrl + A ile tüm kodu seçip Ctrl + I tuşlarına bastığınızda okunurluk için gereken boşluklar otomatik olarak düzenlenmektedir. Bu özellik de harika olmuş.




PureBasic ile 2D veya 3D oyunlar veya animasyonlar da yapılabiliyor. Etiket yazıcılarıyla uğraştığımdan beni cezbeden tarafı ise utf-8 (unicode), seri port ve ağ programlamayı desteklemesi oldu. Ayrıca, gelişmiş dillerde bulunan structure, procedure, map, list gibi yapıları desteklemektedir. IDE, harici bir dll dosyasına gereksinim duymadan direk exe uzantılı dosyayı oluşturabilmektedir. PureBasic IDE ile konsol veya Windows Forms uygulamaları geliştirebilirsiniz. Winforms yerine GUI yani grafiksel kullanıcı arayüzü de diyebiliriz. Yani IDE içinde, form tasarlayıcı bulunmaktadır. Form tasarlayıcıyı kullanmadan, sadece komutları kullanarak da form oluşturabilirsiniz.

Programı yazarken bir komutun üzerine tıklayıp F1 tuşuna basınca o komutla ilgili yardım dosyası açılmaktadır. Program kurulumunda, örnek (examples) programlar da diske kurulmaktadır. F1 tuşu ile ulaşılan yardım dosyasına direk internet üzerinden de ulaşabilirsiniz.

PureBasic ile ilgili 2006 tarihli ingilizce bir kitabı inceleyerek dili öğrenmeye başladım. Malesef Türkçe bir kaynak yok. Dilin temel unsurlarını basit programlarla peyderpey bu blog da anlatmaya çalışacağım. O yüzden bu sayfayı arada ziyaret etmeyi unutmayın derim. PureBasic sayfasında support sekmesini ziyaret etmeyi unutmayın. Faydalı linkleri orada göreceksiniz.

Basic’çiler bilir eskiden GW-BASIC, QBASIC gibi diller vardı. Bunlar, iş bitirici yazılımcıların kullandığı ilk dillerdi o zamanlarda. Intel 286 işlemcili bilgisayarlar piyasadaydı. Hey gidi günler hey...


Commodore 64 (ilk bilgisayarımın ekranı)

Elektrik mühendisi olmama rağmen yazılım dillerine merakım ilk olarak Commodore ile başlamıştı. Tabi o zaman mühendis değildim, çocuktum😁 Commodore’un abisi Amiga da birkaç yıl sonra çıkmıştı. PureBasic işte o eski zamanlarda yola çıkmış. Henüz 46 yaşında olan Frederic Laboureur arkadaşımızı ve ekip arkadaşlarını, "Saf gücü hisset" sloganıyla yıllardan beri tutku ile geliştirdikleri PureBasic için gerçekten tebrik ediyorum.

Dizi (array) içindeki elemanları sıralama algortimasını içeren bir prosedürü PureBasic ile yazabilirsiniz. Ama daha kolayı var. SortArray komutunu kullanmak. Tekerleği yeniden keşfetmeye gerek yok. Yok ben severim tekerlekle uğraşmayı derseniz başka. O zaman assembly dilini deneyin bakalım😁 Örneğin çok daha hızlı çalışmasını istediğiniz bir kod bloğunu PureBasic içinde assembler dili ile kodlamanız da mümkün.

Basic dilinin gelişmiş hallerinden biri de .Net kütüphanesini kullanan Visual Basic .Net tir. Bu dili kullanmak için öncelikle devasa bir Visual Studio programını bilgisayara kurmanız gerekir. İşte bu noktada, benim gibi amatör bir yazılımcı iseniz ve işinizi görecek küçük bir program yazmak istiyorsanız, PureBasic kesinlikle size hitap etmektedir. PureBasic kelimesini artık PB olarak kısaltmak istiyorum. PB, temel olarak prosedürel programlamayı destekler, nesne tabanlı programlamayı desteklemez. VB .Net, Java, C# bunların hepsi nesne tabanlıdır. OOP olarak geçen nesne tabanlı programlama olayı nedense bana hep zor gelmiştir. Bu açıdan da PB derdimize derman olabilecektir. Prosedürel programlamada program yukarıdan aşağıya doğru çalışır. PLC programında olduğu gibi. OOP tekniğinde ise programın nereden nereye gittiğini anlamak gerçekten zor bir olaydır. Nesne tabanlı programlamada, çok biçimlilik (polymorphism), kalıtım (inheritance), veri soyutlama (data abstraction) gibi manyakça kavramlar kullanılmaktadır (C# veya Java yazılımcıları bana kızabilir😁) PB de bunlara gerek kalmadan daha basit bir yol ile, hızlı çalışan programlar yazılabilmektedir.

Hızlı çalışan program deyince aklıma geldi. Yakın zamanda yaşadığım bir olayı anlatayım size. Müşterimiz olan bir arkadaş telefonla beni aradı. Kendisi bir fabrikada çalışan, etiketi yazan ve konveyörden geçen kutuya etiketi yapıştıran bizim makinelerden birine özel bir yazılım geliştirmişti. Senaryoda etiket makinesi, konveyörden geçen herbir kutuya farklı etiket bilgisi yazarak yapıştırmaktadır. (seri no veya ağırlık bilgisi gibi) Video da izleyeceğiniz senaryoda kutuların daha sık ve daha hızlı geldiğini hayal edin. Senaryo şöyle çalışıyor :

1- Kutu konveyörde ilerlerken bilgisayara bağlı bir sensör (barkod okuyucu veya checkweigher de olabilir) tarafından görülür. Kutuya özel etiket, bilgisayarda koşan yazılım tarafından yazıcıya gönderilir.

2- Yazıcıya bağlı sensör kutuyu görünce yazıcı etiketi yazar ve kutuya yapıştırır.

3- goto 1. Yani aynı işlemler sıradaki kutu için tekrarlanır.

Bu senaryoda makinenin veya yazıcının etiketi basıp yapıştırabilmesi için önce etiket bilgisinin makineye gelmesi gerekir. Arkadaşım, programı, Visual Studio ile yazarken kullanıcıya hoş gözükmesi için DevExpress isimli harici kütüphaneyi kullanmayı da ihmal etmemişti. Beni, zaman zaman oluştuğunu söylediği problemle ilgili aradı demiştim. Problemi tarif etmek için bana yolladığı videoyu izledim. Birkaç kutu geçerken etiketler gayet güzel yapıştı. 4. kutudan itibaren etiketler kutuya doğru değil, boşluğa doğru gitti. Problem esnasında kutu geçtikten sonra yazıcı etiketi yazmaya başlıyordu. Yani yazılım, etiket bilgisini yazıcıya yollarken gecikiyordu. İşte bu noktada tavsiyem şu olacaktır. Evet, programın güzel ve profesyonel gözükmesi iyidir. Ama ne yazık ki yeterli değildir. Bundan çok daha önemli olan konu ise programın düzgün çalışmasıdır. Microsoft Windows gerçek zamanlı (real-time) çalışan bir işletim sistemi değildir. Neyi ne zaman yapacağının garantisini veremezsiniz. Çözüm oluşturması adına ağır ve büyük bir exe dosyası yerine küçük ve hızlı çalışan bir exe kesinlikle denenebilir.. Bu açıdan da PB bu tip dertlere derman olabilir diye düşünüyorum. 

Yine aynı problemin çözümü için denenebilecek bir yol daha var. Windows da görev yöneticisinde CPU sekmesine bakarsanız, bilgisayarda aynı anda çalışan işlem sayısını görürsünüz. İşlem sayısının fazla olması, (hele ki eski bir bilgisayara sahipseniz) Windows'u daha tutarsız hale getirmektedir. Aynı anda çalışan işlem sayısını azaltmak, bilgisayarın rahatlamasına ve dolayısı ile hızlanmasına neden olacaktır. Bu konuyu incelemek için traşlanmış Windows yazımı okumanızı tavsiye ederim.

Not: GitHub.io 'da sadece Purebasic içeren yeni bir blog oluşturdum. 

Yorumlar

Bu blogdaki popüler yayınlar

VBA - Mscomm (seri port) ile veri loglama

RJ45 2 - Novexx barkod yazıcıya, S7-1200 plc ile etiket yazdırma

Köpüğü alınmış Windows AtlasOS