FARK EDÝLMEYEN EFSANE DÝL “OBJECT PASCAL” | Kategori: Programlama Yazlma: 07.04.2007 | Okunma: 2829 | Yorumlanma: 0 Aþaðýdaki makale'yi ceviz.net'te okudum, kiþisel projelerimde bende Lazarus kullandýðým içinde çok beðendim. Hiç deðiþtirmeden aynen burdada yayýnlamak istiyorum. Okumak için lütfen "devamýný göster.." link'ine týklayýn. :: FARK EDÝLMEYEN EFSANE DÝL “OBJECT PASCAL” :: { BÝRAZ MAZÝ, PASCAL'IN ALT YAPISI VE GÜCÜ } Sanýrým yazým için ilginç bir baþlýk: "Fark edilmeyen efsane dil". Açýkçasý böyle bir baþlýk atmamdaki amaç, bu dilin hakettiði konumda olmamasý ve bundan duyduðum derin üzüntüdür. Sizlere "Object Pascal" dilinin güzellikleriyle beraber bu dili kullanan araç ve derleyicileri tanýtacaðým ilginç bir yazý ele almak istedim. Pascal'ýn tarihçesinden falan baþlamak istemiyorum. Bu yazýyý okuyan herkesin bunlarý bildiðini farzederek yazýyý ele alýyorum. Birçok kiþi algoritma geliþtirme konusunda aslýnda dilin fazla bir öneminin olmadýðý, kurgu ve mantýðýn hazýrlanmasýndan sonra bunun herhangi bir dille rahatlýkla kodlanabileceðini söylemeleri bir noktada doðru olsa da kullanýlacak dil de önem arz eder. Neden mi? Rahatlýk, kolaylýk, okunabilirlik, taþýnabilirlik, makinaya hakimiyet... diye uzayýp gidebilir liste. Önceleri yapýsal programlama ile bir devrim baþlamýþ ve daha rahat kod yazýlabilir ve proje geliþtirilebilir olmuþtu. Bu teknikleri adam akýllý kullanan iki dil vardý piyasada "C ve Pascal". Ýkisinin de güçleri orantýlýydý o zamanlar.(modülerlik ve fonksiyonerlik açýsýndan) Tabi C dilinin makinaya daha yakýn oluþu ve sistem programlama için geliþtirilmesinden ötürü daha elit kesimce bolca kullanýlmaya baþlanýldý. Bundan önce iþletim sistemi yazýmlarýnda pascal da kullanýlýyordu. Meselâ ilk Macintosh iþletim sisteminin çoðu TEX Pascal ile yazýlmýþtýr. (bkz http://en.wikipedia.org/wiki/Pascal_programming_language) Pascal ve C dilleri yaklaþýk ayný zamanlarda geliþtirilmiþlerdir ve aralarýnda önemli benzerlikler vardýr. Orijinal Pascal ile C'nin ikisi de yapýsal programlama fikrini gerçekleþtiren küçük ve prosedürel dillerdir. Ýkisinde de dinamik bellek ayýrma ve iþaretçi iþleme (Ýng. pointer manipulation) mümkündür. Ancak, bu iki dil dýþarýdan bakýldýðýnda farklý görünürler (C programlarý genelde Pascal programlarýndan kýsadýr). Tartýþma yaratan farklýlýklardan bir tanesi, Pascal'ýn atama için := ve karþýlaþtýrma için = imlerini kullanmasýdýr. Matematikte = imi her iki amaç için de kullanýldýðýndan, programcýlar bazen yanlýþlýkla Pascal'da :=, C'de ise == kastedildiði halde daha kýsa olan = imini kullanýrlar. C'nin tasarýmcýlarý atama iþleminin karþýlaþtýrma iþleminden daha sýk kullanýldýðýný, dolayýsýyla kýsa olan imin atama iþlemi için kullanýlmasý gerektiðini savunurlar. Pascal'ýn savunucularý ise, yanlýþlýkla atama yapmanýn yanlýþlýkla karþýlaþtýrma yapmaktan çok daha tehlikeli olduðunu savunurlar. Bu savunma, eðer, C'de olduðu gibi, bir if ifadesi içinde atama yapýlabiliyorsa, kesinlikle doðrudur. Bu tartýþma, iki dilin tasarým mantýklarý arasýndaki farka iþaret eder. Pascal, en azýndan kýsmi olarak, bir eðitim dili þeklinde tasarlanmýþtýr. Yanlýþlýklara yol açabilecek sözdizimi yapýlarýndan kaçýnýlmýþ, sözdiziminin anlaþýlmasý kolay olmasýna dikkat edilmiþtir. C'nin tasarýmcýlarý ise dili, programlarýn kýsa olmasý için tasarlamýþlardýr.Bu iki dil arasýndanki baþka bir fark da, Pascal'ýn "strongly typed" olmasýdýr. Yani, bir deðiþken kullanýlmadan önce belirli bir tipe sahip olmak üzere tanýmlanmalýdýr ve faklý tiplerden iki deðiþken birbirlerine atanamazlar. Bu sýnýrlama pek çok programlama yanlýþýný önler. C'nin tersine, Pascal'da içiçe fonksiyon tanýmlamak mümkündür. Buradan da anlaþýlacaðý gibi geliþtirilen dillerin de kendince bazý bakýþ açýlarý ve amaçlarý vardýr. Pascal dilindeki amaç, okunabilirliðin kolay olmasý ve daha rahat ve temiz kod yazýmýna izin vermesidir. Bunlar Pascal dilinin bakýþ açýsý ve dil görüþüdür. 1980'lerde ve 1990'larýn baþýndaki kadar olmasa da hala popüler olan Pascal, yine de "ciddi" programlama için uygun olmadýðý ve yalnýzca eðitim için kullanýlabileceði savýyla eleþtirilmiþtir. C'nin yaratýcýlarýndan olan Brian Kernighan, 1981'de yazdýðý makalesi Why Pascal Is Not My Favorite Programming Language (bkz http://www.lysator.liu.se/c/bwk-on-pascal.html) (Pascal Niçin Benim En Sevdiðim Dil Deðildir) ile bu eleþtirileri özetlemiþtir. Öte yandan, 1980'lerde Apple Lisa ve Macintosh gibi büyük projeler Pascal'a dayanýyorlardý. Aradan geçen zaman içinde, Pascal geliþmeyi sürdürmüþ ve bu sayede Kernighan'ýn eleþtirileri artýk modern Pascal versiyonlarý için geçerli olmaktan çýkmýþtýr. Yeterli bilgiye sahip olmayan pek çok kimse bugün hala bu eleþtirilerin geçerli olduðunu düþünmektedir. Pascal üzerindeki bu haksýz damga, bugün Pascal'ýn önündeki belki de en büyük sorundur. Zaman geçtikçe projeler için yazýlan kodlarda arttý. Artýk daha fazla kod yazýlýyordu ve böyle büyük projelerin içinde boðulmak ciddi bir sorundu. Bu yüzden programlama için farklý bir felsefe arz eden Object Oriented Programming Türkçesi, Nesneye Yönelimli Programlama(NYP) fikri geliþtirildi. 1995'ten sonra Microsoft'un çýkarttýðý Visual(Görsel) dil olan Visual Basic ile bu yaklaþýmda yaygýnlaþmaya baþladý. Diller de artýk yazýlýmcýlarýn ihtiyaçlarýný karþýlamak için yeni üretilen teknikleri bünyesine katarak geliþimlerine devam ediyorlardý. Bunun sonucu C -> C++, Pascal -> Object Pascal adlarýyla geliþimlerini sürdürmeye baþladýlar ve bunlarýn yanýnda C# gibi %100 nesne yönelimli programlama dilleri de çýktý. Borland firmasý 1995 yýlýnda efsane Turbo Pascal'ýn Win32 platformlu görsel uygulamasýný hazýrlamaya koyuldu. Ýlk baþta proje adý Visual Pascal'dý. Daha sonra projenin kod adý olan Delphi adý ile deðiþtirildi. Delphi 1.0'da firma güzel bir iþ çýkartmýþtý. Delphi, Pascal dilini temel alan görsel bir RAD aracýydý. Sonralarý Borland, daha geniþ bir nesne yönelim desteði istediðine karar verip, Apple'ýn önerdiði (hala bir standart olmayan) Object Pascal taslaðýný kullanarak Delphi'yi geliþtirmeye baþladý. Borland da baþta bu dili Delphi'de Object Pascal olarak adlandýrdýysa da, sonradan dilin adýný da Delphi olarak deðiþtirdi. Pascal'ýn bu 'lehçesini' destekleyen baþka derleyiciler de vardýr. Az sonra bunlarada deðineceðim. (Günümüzde Microsoft 'un gelecek vaadeden C# dilinin baþ mimarý Anders Hejlsberg ayný zamanda 80 'li yýllarda büyük baþarý saðlayan Turbo Pascal derleyicisini yazan ve Delphi projesi baþ mimarý olan bir programlama dehasýdýr. 13 yýl Borland'da çalýþmýþ ve 1996 yýlýnda Microsoft'a geçmiþtir.) Pascal ve C dilleri genel amaçlý dillerdir bu yüzden her tür proje ve algoritma geliþtirmeye müsaittirler. Ýster bu yapay zekâ uygulamlarý olsun, ister ticarî programlar, isterse de kiþisel programlar. Bu dillerle saydýklarým çok rahat yapýlabilir. Yalnýz az önce de deðindiðim gibi her dilin bir bakýþ açýsý ve amacý olduðundan farklý amaçlara yönelikte daha farklý diller geliþtirmeye devam ediliyor.(Lisp, Prolog... gibi) { NEDEN OBJECT PASCAL ? } Bunun için bir çok neden var. Þimdi bunlarý sýralayalým: 1- Disiplinli ve kurallý bir dil olmasý: Pascal dili, programcýyý belli bir disiplin içinde kod yazmaya sevk eder. Bu durum hem hata takibini kolaylaþtýrýr hem de okunaklýðý artýrýr. Meselâ kullanýlacak deðiþkenlerin önceden belli bir blokta tanýmlanmasýný istemesi gibi. Bu noktada diðer dillerden ayrýlýr. Basic dilinden Pascal'a geçenlerin zorlanmasýnýn da temel nedeni budur. Çünkü Basic dili çok daha özgür ve kuralsýz bir dildir. Deðiþken tanýmlama yapmadan kod yazýmýna izin vermektedir. Aslýnda bu çok kötüdür. Kodlamanýn sayýsý arttýkça karýþtýrmalarda bunla orantýlý artacaktýr. Kod takibi zor olacaktýr. 2- Prosedürel ve Fonksiyonel bir dil olmasý: Yapýsal programlamayý içinde barýndýrmasý. Bunu takiben bir baþka güzelliði de Pascal dilinin prosüdür ve fonksiyonun bariz bir þekilde belirtilmesidir ve fonksiyon içinde fonksiyon tanýmlayabilme özelliðinin bulunmasý. Bunlar C ve Basic'de böyle deðildir. 3- Sembolikten ziyade okunabilirliðe önem vermesi: C dili daha sembolik bir dil olduðundan Pascal'a nazaran daha az kod yazýlabilir; ama bu anlaþýlmayý ve okunabilirliði zorlaþtýrmaktadýr. Pascal dilinin felsefesi buna aykýrýdýr. Günlük konuþma diline yakýn bir dille kod yazýmýný savunmaktadýr. Buna örnek olarak C'deki “{“ iþaretinin Pascal'da “begin”, “}” iþareti de “end” e karþýlýk gelmesi gibi. 4- Hata takibinin kolay olmasý: Diðer dillere nazaran Pascal'da hata takibi daha kolaydýr. Bu da dilin felsefesinden kaynaklanmaktadýr. 5- Genel amaçlý bir dil olmasý: Pascal yüksek seviyeli bir dil olmasýna raðmen içinde assembly kodlarýnýn yazýlmasýna da imkan tanýmaktadýr. Bu tür özellikleriyle çok amaçlý bir dil de olduðunu söyleyebiliriz. Meselâ en son Delphi derleyicisi Intel x86 komut setlerini tam olarak desteklemekle beraber Intel Pentium® Pro, Pentium III, Pentium 4, Intel MMX,. SIMD, Streaming SIMD Extensions, SSE, SSE2, and SSE3, and AMD® 3DNow! 32 bit inline assembler komut setlerini desteklemektedir. 6- Modüler olmasý: Pascal'da uzun kodlar için “unit”ler oluþturularak daha düzenli kodlar yazýlabilmektedir. Program içinde bu unitlerin kullanýmý için de “uses” ifadesinden sonra kullanýlacak uniti yazmak yeterlidir. Böylece uzun projeleri böl-parçala mantýðý ile daha düzenli ve çoklu geliþtirmeye müsait hale getirilebilmektedir. 7- Geniþ nesne yönelimli programlama desteði: Turbo Pascal 5.5 ile kýsmi olarak kullanýlan NYP tekniði 1995 yýlýndan sonra Borland'ýn, Apple'ýn önerdiði (hala bir standart olmayan) Object Pascal taslaðýný kullanarak Delphi'yi geliþtirmeye baþladý ve çok geliþmiþ bir dil haline getirdi. Delphi'deki NYP'nin diðer dillerle kýyaslanmasý için (bkz þekil 1) Þekil-1 Resimde de görülmek üzere OOP(NYP) tekniðini en üst düzeyde kullanan dil Delphi'dir. (Kaynak: Delphi in a Nutshell- Ray LISCHNER) Hatta Borland, Object Pascal'daki NYP ile yazdýðý Visual Component Library (VCL) adýnda bir alt yapý geliþtirerek bunu Delphi'ye entegre etti. Þu anda .NET için kullanýlan komponent tabanlý diller (C#) gibi Delphi'den alýntýdýr. 8- Dilin tip bakýmýndan zengin olmasý: Pascal strongly typed türü bir dildir. Kullanýlacak deðiþkenlerin önceden tipleri belirlenmelidir. Belirlenecek tipler bakýmýndan da oldukça zengindir. Bu tipler: “char, pchar, variant, string, ansistring, widestring, smallint, integer, word, byte, real, double, comp, int64, cardinal, longword, real48, extended, single, currency, boolean” dýr. Bunu göz önüne aldýðýmýzda diller arasýnda tip bakýmýndan en zengin dil Object Pascal'dýr. Bu noktada Basic dili baðayý bir vasat durum çizer. Çünkü bu dilde tip kavramý yoktur. Program içinde baðýmsýz deðiþkenler kullanýlabilir, böylece Basic dilinde yazýlmýþ programlarýn deðiþken tipleri, çalýþma zamanýnda tespit edilir. Bu da hýz bakýmýndan yavaþlýk, kod bakýmýndan düzensizlik, hafýza bakýmýndan da gereksizlik demektir. Çünkü Object Pascal'da “Var sayac: Word;” ifadesi ile sayac deðiþkeni için hafýzadan “0..255” karakterlik yer ayýrdýðýmýzý önceden belirtiriz. Bu durum Basic dilinde for sayac=1 to 10 print sayac Þeklinde tipi belirtilmeden kullanýldýðýndan çalýþma anýnda belirlenir ve hafýzadan ne kadar yer ayrýlacaðý da muammalý bir durumdur. 9- Diðer dillerdeki güzellikleri bünyesine katmasý: Pascal dili Niklaus Wirth'ten bu yana epey bir yol kat ederek günümüze çok geliþmiþ bir dil olarak gelmiþtir. Bunda Borland firmasýnýn payý çok fazladýr. Object Pascal(Delphi) adý ile birçok yeni teknikleri bünyesine katan Borland, diðer dillerdeki güzel özellikleri de Pascal'a taþýmýþtýr. En son Delphi 9(Delphi 2005) ile gelen “for...in....do” sözdizimi gibi. { GÜNÜMÜZ VE GELECEKTE OBJECT PASCAL'IN DURUMU } Günümüz açýsýndan adam akýllý Object Pascal'ýn geliþimi 2 taraflýdýr. Birincisi ”Free Pascal” adýnda bir grup tarafýndan geliþtirilen çok platformlu Pascal derleyicisi. Bu grup Borland'ýn dile kazandýrdýðý standartlarý örnek alarak Delphi'ye uyumlu derleyici geliþtirmektedir. IDE olarakta baþka bir grubun geliþtirdiði “Lazarus Projesi” vardýr. Free Pascal, Lazarus IDE'sini kullanýr. Delphi'nin VCL'sini kendine örnek alarak Delphi ile uyumlu geliþtirilmektedir. Delphi'deki bazý kodlarý hiç deðiþiklik yapmadan Free Pascal ile derlenebilir. Free Pascal, Win32-FreeBSD-Linux- MacOsX platformlarýnda çalýþmaktadýr.(Ayrýntýlý bilgi için bkz http://www.elektronist.com/linux/programlama/lazarus/lazarus.html , http://www.linuxfocus.org/Turkce/November2004/article356.shtml , http://www.lazarus.freepascal.org/modules.php?op=modload&name=Screenshots&file=index adreslerine bakabilirsiniz.) Lazarus gerçekten component tabanlý bir IDE'dir ve Free Pascal derleyicisini kullanýr. En son verdiðim baðlantý adresinden Lazarus'un ekran görüntülerine bakabilirsiniz. Açýk kaynak kodlu geliþtirilmiþ olduðundan katkýda bulunmak isterseniz http://lazarus.sourceforge.net adresine uðrayýn. LAZARUS'A GENEL BAKIÞ Lazarus'un Win32 IDE'sinden bir görünüm. Delphi'yle neredeyse her þeyiyle birebir.(kýsayol tuþlarý da). Lazarus IDE'si: Delphi model alýnarak geliþtirildiðinden hemen hemen tüm özellikleriyle benzerlik göstermekte. Bu yüzden Delphi IDE'sini kullananlar Lazarus'u seveceklerdir. Yalnýz code insight teknolojisi henüz Lazarus'ta yok. Kodlarý yazarken otomatik tamamlayan sistem þimdilik Lazarus'ta mevcut deðil. Component(birleþen) tabanlý bir IDE'ye sahip olmasý da fevkalade güzel; ama Delphi'deki zengin birleþenleri Lazarus'ta göremeyeceksiniz. Nede olsa geliþtirilmekte olan bir IDE. Kullandýðým Lazarus IDE'si sürümü 0.9.2 BETA idi. Beta oluþundan muhtemel hatalarla karþýlaþmanýz doðal. Çünkü daha kararsýz bir sürüm. IDE kýsayol tuþlarý da Delphi ile birebir ayný. Alt tuþuna basarak fonksiyonun üzerine gelip fare ile týklanýldýðýnda o fonksiyonun tanýmlandýðý modüle gitmesi buna en güzel örneklerden biri. Yalnýz þunuda eklemek istiyorum ki çok hýzlý geliþtirilen bir proje. Her hafta site düzenli güncellenerek eklenenler ve düzeltilenler kullanýcýlara duyrulmakta. Lazarus Derleyicisi: Lazarus Gpl açýk lisansý ile geliþtirilmekte olan bir tümleþik geliþtirme ortamý(IDE)'dir. Derleyici olarakta yine açýk lisanslý olan Free Pascal derleyicisini kullanýr. Alt yapýsýnda iþleyen derleme sistemi Free Pascal ekibine aittir. Free Pascal, sadece derleyici olarak geliþtirilmekte olup, kendine has IDE'si yoktur. Bu yüzden Lazarus projesi geliþtirilerek birlikte kullanýlmaktadýr. Grubun hedefi, Delphi'nin daha iyisini yapmak. Çünkü derleyici Win32, FreeBSD, Linux, MacOSX platformlarý için derleme yapabilmekte. Lazarus Free Pascal derleyicisi Delphi'den hýzlý deðil, fakat çok yavaþta deðil. Geliþim evresinde olan bir program için normal hýzlarda derlemekte. Optimisazyonda ilk ayarlar yapýlmadýðý takdirde sadece bir form yapsanýz dahi 5 mb olmakta. Bunun için compiler options kýsmýndan þekil-2'deki þekliyle ayarlarý düzenleyin. Böylece dosya boyutu 1.5 mb kadar inmekte ve tam bir win32 platformlu bir exe oluþmaktadýr. Optimizasyon konusunda grubun biraz daha çalýþmasý gerek. Delphi de sadece bir form derlenerek yapýlsa 300 KB bir exe oluþmakta. Bu Lazarus'ta 1.5 mb boyutlarýnda. Yalnýz ASPack veya UPX gibi packlar kullansanýz bu 1.5 mb, 400 KB'a kadar inmekte. Þekil-2
YAZAN Bu Kategorideki Yazlar: < 18 Mart Çanakkale Zaferi Þehitleri Anma Günü || Oyun iþini abartýyorum galiba... > Bu yazya yorum yaplmam. |
Güvenlik (3) Lagara Lugara (15) Pardus (2) Programlama (13) Sokak Yarýþlarý (2) Rapid Roll Extra (5905) MySQL, Delphi ve Zeos Bileþenleri (3242) FARK EDÝLMEYEN EFSANE DÝL “OBJECT PASCAL” (2829) Rubik (Zeka) Küpü (2697) 1161 Adet .DLLl Dosyasýnýn Açýklamasý (2616) Virus sildim makinamdan! (2505) Sokak Yarýþlarý Projesi 0.3 (2420) Cepte Blog (2314) Doðum Günüm (2257) IBM developerWorks (2241) Diðer yarým... Free Pascal Lazarus Project Pardus RSS Desteði |
powered by Hasta Blog v2
|