Linux ve Programlama

Linux işletim sistemi altında hemen hemen tüm programlama dilleri ile programlama yapılabilinir.Bu dillerin derliyicileri büyük linux sürümlerinde(red hat,slackware,suse,vb) hazır bulunur.Bu yüzden linux altında programlama ile uğraşmak isteyenler daha sonra zorluk çıkmaması için linux'un tüm paketlerini kurmalılardır.Sabit diskinde yeri az olan kullanıcılar ise bu derliyicilere internetten rahatlıkla ulaşabilirler(www.linuxapps.com, www.tucows.com). Linux altında yaygın tüm programlama dillerini destekleyen programlara bedava ulaşmak mümkündür.Şu anda borland delphi programının 500$ civarında olduğu düşünülürse amatör programcılar için linux çok avantajlı bir seçimdir. Ama şunuda eklemek gerekir ki eğer linux altında programlama yapılacaksa genelde c ve c++ seçilmelidir,çünkü c/c++ en esnek programlama dilidir ve c/c++ ile yapılmış program örneği oldukça fazladır.Linux altındaki programlar GNU lisansına sahiptir.Bu lisansın manası gnu lisanslı programı bevada kullanabileceğiniz,ne yaptığınızı belirtmek şartıyla istediğiniz değişikliği yapabileceğiniz ve yazarın adını belirterek programı kendiniz yaptığı herhangi bir programda kullanabileceğinizdir.

Programları yazmak için herhangi bir metin editörü kullanılabilinir. Windows ve dos altında syntax highlighting tabir edilen( yazdığınız koddaki fonksiyon ve değişkenlerin belli renkler alması) editörlerinin benzerleri linux otamında da mevcuttur.Bunlara örnek olarak emacs,rhide ve lpe verilebilir.Tabii ki bu editörler daha çok c ve c++ dilleri için hazırlanmıştır.Emacs çoğu linux sürümünde standart bulunur.Rhide programı borland c for dos programının bir kopyası(ama X-window altındaki terminal penresinde çalışmıyor).Lpe ise pico metin editörünün renklisi olarak düşünülebilir.

Bu işletim sisteminde visual programlamanın olmadığını zannedenler çok yanılırlar.Linux windows'u diyebileceğimiz X-window sunucusu ortaya cıkan birçok pencere yöneticisiyle MS windows'un sağladığı görselliği yakalamıştır.Özellikle red hat 6.0 sürümü ile dağıtılan gnome pencere yöneticisi birçok insanın beğenisini kazanmıştır.Malesef ne kadar çok görsellik=o kadar çok ram olduğu için düşük konfigürasyonlu bilgisayar kullanıcılarına gnome=ızdırap olacaktır. Yıllardır hemen hemen tüm linux sürümlerinde bulunan pencere yöneticisi kde ise programcılar tarafından en çok kullanılan pencere yöneticisidir.Troll tech. (www.troll.no) tarafından üretilen ve gnu lisansı ile programlama yapacak programcılar için bedava olan qt kütüphaneleri de visual programlamada büyük kolaylık saglamıştır.Linux altında visual programlama henüz emekleme aşamasında olmasına rağmen cok hızlı gelişmektedir.Şu anda beta sürümü bulunan kdevelop programı (www.kdevelop.org) linux'un c builder'ıdır.Daha önce visual c yada c builder'la uğraşanlar bu programı kullanırken yabancılık çekeceklerini zannetmiyorum.Ayrıca diyalog ya da api geliştirmek için de bir çok program internette kullanıma hazır bulunmaktadır.Bu arada delphici arakadaşlar borland'ın web sitesinde delphi'nin linux'a geçirilmesi için programcı aradığını görmüşlerdir;).

Peki daha önce windows altında c ile uğraşanlar linux da yabancılık çekeceklermidir?Eğer ansi c ile uğraşacaklarsa bu sorunun cevabı hayırdır.Şunuda burdan belirtmek zorundayım; windows'dan linux'a transfer olan her kullanıcı "conio.h" headerını bulamamaktan şikayet eder. Maalesef conio header'ı ansi c'nin bir parçası değildir.:)Visual programlama yapacak arkadaşların ise iyi derecede c++ bilmesi pek bişey ifade etmiyor çünkü hazır kütüphaneler içinde oldukça fazla class ve fonksiyon var.

İlk c programımı yazdım nasıl compile ederim?Bunun bir çok yolu var.gcc yada cc komutlarını kullanmak.Yazdığınız programın adı deneme.c olsun;

cc deneme.c
satırını komut olarak girdiğinizde a.out adında bir dosya yaratmasıdır.Çoğu windows kullanıcısı komut satırına a.out girerek programın çalışmasını bekler tabii çok bekler.Bir
executable yani çalıştırılabilir dosyayı çalıştırmak için başına "./" konmalıdır (aman tırnakları koymayın).yani a.out dosyasını çalıştırmak için

./a.out
yazmanız yeterlidir.Her potansiyel linux kullanıcısı linux'un özellikle linux komut satırının kolaylıklar dünyası olduğunu bilmelidir.Şöyle ki;eğer aynı dizinde birçok program derliyorsanız yukardaki komut ile her derlediğiniz dosya bir önceki executable'ın üstüne yazılacaktır.Bu durumdan kurtulmak için;

cc deneme.c -o deneme ya da gcc deneme.c -o deneme
yazarsanız derlediğiniz dosyanın adı deneme olacaktır.Bunu yazması biraz uzun olduğu için bash kabuğu burda devreye girer.Nasılmı?Önce deneme dosyasını silin ve komut satırına

make deneme
yazın.Linux'umuz bu komutu bir yukardaki komuta dönüştürecek ve deneme isimli bir executable dosya oluşturacaktır.Yalnız şunu unutmayın make komutunu kullanmak için c dosyanızı uzantısı olmadan yazın(make'in yanına) yoksa linux hata verip "işinizi görmiyecektir ".cc ve gcc komutlarının görmek bile istemiyeceğiniz onlarca parametresi vardır.Neyseki bunlara çok standart bir programcinin ihtiyaci olmaz.gcc komutunun cc'den farkı eger program c++ komutlarını içerirse c++ derlemsi yapar.cc komutu c++ kodlarını derleyemez.g++ komutu ise anlıyacagınız üzre ansi c kodlarını derleyemez. Linux altında programlarınızı debug lıyabileceğiniz bir komut da vardır "gdb" . gdb program.c yada program.cpp yazilarak debugger'a program yüklenir.Çok basit komutlarla programınızın istediğiniz yerine breakpoint koyup programın nerde hata verdiğini rahatlıkla görebilirsiniz.(help komutuyla program icinde yardim alinabilir)

Programcılıkla az çok ugraşmış herkes run time error'ler (programın hatasız derlenmesi ama çalışma esnasında hata vermesi) ile karşılaşmıştır.Linux un hataya vereceği tepki daha doğrusu ekrana yazacağı mesaj "segmentation fault \n core dump" tır.Bu mesajdan sonra programın calıştığı dizinde bir core dosyası oluşturacaktır.Linux core dosyasını oluştururken o program ile ilgili herşeyi dosyanın içine atar.Bu yüzden dosya manalı manasız bir çok karakterden oluşur. Eğer
bu segmentation fault giderilemiyorsa core dosyasının incelenmesi hatanın öğrenilmesini sağlar.Yalnız bu iş her baba yiğidin harcı değildir ve ileri düzey assembly ve c bilgisi ister.Ama şimdiden söyliyeyim sık sık bu hatalarla karşılaşıyorsanız öncelikle kullandığınız pointer'lara hafızada yer açıp açmadığınıza bakın(malloc()) genelde bu hatalar pointer'ların hafıza alanı olarak programın çalıştığı hafıza alanını kullanmak istemesiyle oluşur.

Aldemir AKPINAR ( aldemir.akpinar@sci-stud.ankara.edu.tr )

 

0 yorum: