original in en Georges Tarbouriech
en to trMurat Kaplan
Georges uzun zamandır bir Unix kullanıcısı. GNUstep'i ve bu büyük oluşumun hazırladığı araçları seviyor.
RAD, "Rapid Application Development" (Hızlı Uygulama Geliştirme araçları) kelimeleri yerine kullanılır. Seksenlerin sonunda, NeXTstep çıktığında, InterfaceBuilder. ProjectBuilder adında, bir flash içinde grafik uygulamaları oluşturmaya izin veren başka bir araçla birlikte kullanıldı. GNUstep bu araçların Gorm.app and ProjectCenter.app adındaki serbest sürümlerinin dağıtıcısıdır.
Bilgisayarların tarih öncesi döneminde, yazılım geliştirmede büyük bir mücadele
vardı. Bilgisayarlar oldukça düşük güçte olmalarına karşılık boyut olarak bir o kadar
büyüktüler. Çok pahalıydılar, sayıca fazla değildiler ve geliştirenler diğer insanlarla
paylaşmak zorunda olduklarından istedikleri sıklıkta kullanamıyorlardı.
Bu durumda araştırmacılar, verimliliği yükseltmek ve bilgisayarların
aynı anda birden fazla görevi yürütmesi için bir yol bulmaya çalıştılar.
Açıkçası, kullanılabilir makinaların kötü kaynaklarını hesaba katarak bir programlama
dilini sıfırdan tasarlamak ve yaratmak zorundaydılar.
Böylelikle, 60'lar süresince çeşitli yeni programlama dilleriyle karşılaşıldı: LISP,
FORTRAN, BASIC, Algol68, BCPL, vb. Sonra BCPL'den B dili türetildi ve onu da
C dili izledi. Bu sonuncu programlama dünyasını değiştirdi.
Sonrasında "görsel devir" ile birlikte "nesneye yönelik" (SmallTalk, Objective C, C++,
vb) diller göründü.
Seksenlerde bazı makinalar grafiksel işletim sistemleri sunuyorlardı (Apple Macintosh,
Commodore Amiga, Atari ST, vb) ve X Window System sahnedeydi. Aynı anda,
Presentation Manager adında bir şirket IBM OS2 için bir grafik arayüz üzerinde
çalışıyordu. Bu çalışma sona ermeden önce, şirket kendi DOS 'u için "kendi"
grafik arayüzü Windos'u piyasaya sürdü. İlk iki sürüm oldukça kullanışlıydı, ancak...
sonunda üçüncüsü geldi. MvAI (Microsoft very Artificial Intelligence) doğdu!
Böylelikle bütün kullanıcılar bilgisayar bilimci oldu. O zamandan itibaren
Excel yada Word ve Visual Basic kullanılarak yazılan "büyük" uygulamalar gördük:-(
Her neyse!
Neyseki, biz bu durumu geride bırakmadan çok önce, NeXTstep doğdu ve onunla birlikte
InterfaceBuilder geldi. Bu araç, uygulamanız için çok kısa bir sürede ve
kolaylıkla bir grafik arayüz oluşturmanızı sağlar. Oradan bu tür araçlar
yayılmaktadır. Dğerleri için de Omnis, 4D, Delphi, Kylix, vb. 'den bahsedebiliriz.
Çoğunluğu Windows'a yönelik iken bir kaçı "multiplatform" 'dur.
Böyle bir düşünceyi kullanmak için Gtk (Gimp Tool Kit) gibi ücretsiz
"toolkit"'ler olduğunu da söyleyelim.
Lisanslı Unix'ler de bu tür araçları sağlar.
Bu aaçların en önemli özelliği, kodu uygulamanın 200 penceresi için yazmak
zorunda olmamanızdır. Veriyi yönetmek için sadece bir pencere yeterlidir.
Burada tür araçlardan hoşlanıp hoşlanmamanız önemli değildir. Önemli olan
geliştirme süresinin kısalığıdır: bu bir gerçek (bu sebeple adı "Hızlı Uygulama
Geliştirme araçları")
GNUstep bize serbest RAD araçları sağlar.
Bu araçlar Gorm ve ProjectCenter isimlerini taşırlar. Doğal olarak bu araçlar
oldukça "genç" 'tirler ama işe yararlar. Onlara bir bakalım.
Gorm ve ProjectCenter 'ın ikisini de kullanabilmek için GNUstep'i kurmanız
gerekir. Bunun nasıl yapılacağı bu makalenin konusunun ötesindedir. Gereksinim
duyacağınız herşeyi GNUstep sanalyöresinde
bulabilirsiniz. Bu adreste kaynak kodunu, kaynak yazıları vb bulabilirsiniz.
Ayrıca bu makalelere bakabilirsiniz:
GNUstep, the open source OpenStep ve GNUMail.app, the portability evidence.
Önceki makale için FreeBSD 4.7 ile Window Maker 0.80.1, gnustep-make-1.5.0,
gnustep-base-1.5.0, gnustep-gui-0.8.2 ve gnustep-back-0.8.2 kullanılarak testler
yapıldı. Bunlar GNUstep'in en son, kararlı olmayan sürümleridir. İsterseniz
kararlı sürümleri de kullanabilirsiniz. Son ama sonuncu olmayan gcc 3.0.4
derleyicisini kullandık.
Gorm Graphic Object Relationship Modeler 'ın baş harflerinden oluşur (yada belki
BENIOKU dosyasında yazdığı gibi GNUstep Object Relationship Modeler). NeXTstep
Interface Builder 'ın bir benzeridir (yada bugünlerin MacOS X'inin).
Gorm, projeyi başlatan Richard Frith-Macdonald'ın ürünüdür.
Bugün projeyi Gregory Casamento, Pierre-Yves Rivaille ile birlikte yürütmektedir.
Programın güncel sürümü 0.1.9. En yeni CVS görüntüleri
http://savannah.gnu.org/projects/gnustep adresinden edinilebilir..
En son kararlı sürümü GNUstep sanalyöresinden indirilebilir.
Gorm'un (ve Interface Builder'ın) arkasındaki düşünce, kullanıcıya paletlerde
bulunan nesneleri boş pencerelere düşürerek uygulamanın grafiksel parçalarını
hazırlamasını sağlamaktır.
Nesneler, düğmeler, alanlar, paneller ve benzerleri olabilir. Böylelikle, bir
pencereye ekleyebileceğiniz herşey ile kullanıcı dostu olur. Sonrasında
denetleyicileri kullanarak onları iyileştirebilirsiniz. Denetleyicilerden
seçilen nesnelerin özelliklerini, tanımlanmış bağlantıları, boyutları, yardım
ve işletim sınıflarını değiştirebiliriniz. Bir sınıf oluşturduktan sonra
nesneye yol ve eylem ekleyebilirsiniz.
Sonra Gorm ana penceresinde yeni bir (örnek) nesne yaratan sınıf örneklenir
ve yollarla eylemleri uygun bölümlere bağlarsınız. Bunu sadece
fareyi örnekten seçilen nesneye yoları bağlamak için ve nesneden örneğe
eylemleri bağlamak için çekerek yaparsınız. Son olarak, kaynak dosyalar sınıfının
iskeletini oluşturursunuz, ve bitirdiniz. Daha fazlası daha sonra.
ProjectCenter, isminin de söylediği gibi, bir projenin "kalbi"'dir. Project Builder in
NeXTstep ve Mac OS X altında bulunan benzeridir.
ProjectCenter, Philippe C.D.Robert'ın ürünüdür ve güncel sürümü 0.3.0'dır.
Gorm gibi GNUstep sanalyöresinden, "Developer apps" bölümüne giderek
indirebilirsiniz. Tabi ki en son CVS görüntülerini edinebilirsiniz: biz bu makale
için 0.3.1 sürümünü kullandık.
ProjectCenter'dan bir proje yaratabilir, arayüzünü oluşturabilir (Gorm kullanarak),
kaynak kodunu yazabilirsiniz; projeyi oluşturabilir ve çalıştırabilirsiniz
(hata ayıklayıcı henü kullanılabilir değil). Kısaca proje için gereken bütün kaynakları
yönetebilirsiniz: kaynak kod, kaynak yazı, kitaplıklar, alt projeler, arayüzler vb.
Yeni bir proje oluşturduğunuzda tipini seçebilirsiniz. Uygulama, paket, araç,
kitaplık ve Gorm uygulaması arasından seçebilirsiniz.
ProjectCenter diğer şeylerin arasında, Gorm iskelet kodunu tamamlayabileceğiniz
bir editörle gelir.
Gorm ve ProjectCenter'in birlikte çalışması nasıl? Çok güzel, teşekkürler!
Daha ciddi olarak, bunu anlatmak için iki örnek kullanacağız
Bu makale bir "kılavuz" DEĞİLDİR. Düşünce, bu araçların kullanım kolaylıklarını
aynı kodu GNUstep ve MacOS X'te (yani bir çok Unix ortamında... ve "çabalamak"'tan
hoşlanıyorsanız Windows altında da) kullanabileceğinizi ısrarla göstermektir.
Sadece arayüzü her ortam için tasarlamanız gerektiğinde, nib dosyaları
(InterfaceBuilder yada Gorm) henüz (şimdilik) taşınabilir değildir.
Yukarıda sözü edilen GNUMAil.app makalesi taşınabilirliği bir kullanıcının
bakış açısından gösterir. Bu makale ise geliştiricinin bakış açısından, hala
düşüncedeki taşınabilirlikle odaklanacaktır. GNUMail.app 'de Ludovic ve
arkadaşlarıyla bunu yaptık ve burada bir GUI uygulamasını GNUstep ve MacOS X
için oluşturuyoruz.
MacOS X yada GNUstep için bir çok kaynak yazıya ulaşılabilir. GNUstep için
GNUstep sanalyöresinden yada
http://www.gnustep.net'den, birkaçını da biz söyleyelim.
- An application using Gorm and
ProjectCenter Pierre-Yves Rivaillei'den.
- The Nicola Pero's tutorial page
- Bir HTMLEditor'ü oluşturmak için daha eski bir kılavuz: http://stepwise.com/Articles/Technical/HTMLEditor/
Daha fazlasını öğrenmek için var olan GNUstep uygulamalarının kaynak kodlarını, nib
dosyalarını ve tabi ki gnustep örneklerini kontrol edebilirsiniz.
Sanal ortamdan InterfaceBuilder için erişilebilir sayısız MacOS X kılavuzu
arasından biz bir ilk örnek olarak aşağıdakini seçtik:
http://www.macdevcenter.com/pub/a/mac/2001/05/18/cocoa.html. Yazar Mike Beam
http://www.macdevcenter.com/pub
/ct/37'dan edinilebilecek birçok karışık kılavuz yazdı.
Niçin bu? Çünkü bir tek satır kod yazmadan çalışan bir metin editörü sağlar.
Bu MacOS X yada GNUstep altındaki geliştirme aracının gücünü gösterir.
GNUstep altında ProjectCenter.app ve Gorm.app kullanarak kesme, kopyalama, yapıştırma
işlemlerini yapabilen çok basit bir metin editörü oluşturalım. Aslında çalışmanızı
kaydedemeyeceksiniz: hatırlayın, tek bir satır kod yazmayacağız. MacOS X altında
ProjectBuilder ve InterfaceBuilder'ı kullanarak aynısını yapacağız. Açıkçası, bu
editörü iyileştirmek için bir çok şey yapmak gerekir ve biz bunu bir alıştırma olarak
okuyucuya bırakıyoruz. Birkez daha belirtelim, bu makale bir "kılavuzu" değil!
Şimdi başlayalım.
ProjectCenter.app'ı açın ve Editor adında yeni bir proje oluşturun. Adını kaydetmeden
önce pencerenin altında bir Gorm Application projesi seçin. Bu size ProjectCenter'ın
sol sütununda bir "Interfaces" parçası sağlar.
Interfaces 'i tıklamak Editor.gorm'u gösterir. Editor.gorm'u
çift tıklayın ve Gorm.app açılır. Öntanımlı pencereyi seçin (MyWindow) ve araç
denetleyicisini kullanarak ismini "Attributes"'te Editor olarak değiştirin.
Paletten Editor penceresine bir TextView çekin. TextView, "Paletler" pnceresinin
en üstünde ensağ ikonu kullanan, seçilen palette bulunan en büyük
nesnedir. Bu nesnenin boyutlarını pencereyi dolduracak şekilde değiştirin, ve
bitirdiniz.
Yeniden, GormInternalViewEditor denetleyicisini kullanarak (TextView seçili iken)
, Size'ı seçin ve değerleri Editor penceresinin boyut değerlerine uyacak
şekilde değiştirin. Bu sonuncusu aynı şekilde sağlanır, yani, pencere seçilerek
ve GormNSWindow denetleyicisindeki boyut kontrol edilerek. Örneğin X ve Y değerlerini
değiştirmezseniz pencerenin boyutlarını değiştirseniz de değiştirmeseniz de editörün
bütün genişliğini kullanamazsınız.
Gorm Document menüsünde hepsini kaydedin ve ProjectCenter'a dönmek için çıkın.
"Build" ikonunu seçin ve pencerenin ikinci yatay kısmındaki "new build" ikonunu
tıklayın. Eğer derleyiciniz, "debugger"'ınız vb. için doğru seçimleri yaptıysanız
herşey doğru gitmiş olmalı. Örneğin FreeBSD kullanırken ProjectCenter'ın "Settings"
ikonunu tıklayarak make'i gmake olarak değiştirmelisiniz. Yolları da ProjectCenter'da
"Preferences" menüsünden kontrol etmelisiniz.
Eğer oluşturma başarılı olduysa (olmalı!), aynısını Run ile yapın ve Editor
uygulamasını göreceksiniz. Yazarak, keserek, yapıştırarak oynayabilirsiniz. Sonra
"openapp" buyruğunu kullanarak yeniden başlatabilirsiniz.
Ne kadar sürdü? Aslında, birkaç dakika diyebilirim.
Yukarıda yapılanların aynısını yapacağınızdan söylenecek fazla birşey yok.
GUI'nin tasarımı sırasında aşağıdaki gibi görünmeli:
Şimdi Mike Beam'dan bir başka örnek seçelim. Bu sefer veriyi yönetebilen,
tam olarak çalışan bir uygulama: bir adres defteri. Mike 'ın adres defteri
kılavuzunun (diğerleri gibi) düşüncenin nasıl işlediğinin anlaşılması
için okunması önerilir. Ayrıca Mike aynı uygulamayı iyileştirmeyi sağlayan
farklı geliştirme işlemleri önerdiğinden kılavuz listesi de kontrol edilmelidir.
Yine uygulamayı hem GNUstep'te hem de MacOS X'de oluşturup çalıştıracağız.
Editör örneğinde yaptığınız gibi, ProjectCenter.app 'ı başlatın. Bir Gorm
uygulaması seçip "AddressBook" adını verin. ProjectCenter'dan "Interfaces"'de
-> AddressBook.gorm 'u çift tıklayarak Gorm'u başlatın. Paletten öntanımlı
pencereye bir "TableView" çekin. Başka bir deyişle, Mike'ın kılavuzunu
MacOS X altında olduğu gibi takip edin. Gorm'da ve InterfaceBuilder'da farklı
çalışacaklarından birkaç şeyi uygun hale getirmelisiniz.
Örneğin, "TableView"'deki sütun sayısı Gorm'da "attributes inspector"'dan
tanımlanamaz. Bazı şeyleri basit tutmak için bir sütunu kopyalayıp sonrakine
gerektiği kadar kopyalayın (burada 4 kez). Benzer şekilde bitirmiş olmalısınız:
Mike Beam bütün işi yaptı: ekleyebileceğim başka ne var?
Açıkçası GNUstep geliştirme araçları Apple'ınkiler kadar önde olamaz.
Apple ve NeXT yüzlerce geliştiriciyle birlikte 15 yıllık fazla deneyime sahiptir.
GNUstep bir yaşam için daha başka (serbest) birşeyler yapan bireysel bir oluşumdur.
Bu sebeple, örneğin erişilebilir sınıfların InterfaceBuilder'da
Gorm'dan çok daha fazla olması şaşırtmamalıdır. Gorm henüz
0.1.9 (yada 0.2.0) sürümünde.
Üstelik biz testleri "zor" yoldan yaptık. OS X 'den GNUstep'e taşıdık.
Yukarıda bahsedilen araçlar arası farklardan dolayı başka yoldan gitmek daha
kolay olabilir.
Örneğin oldukça iyileştirilmiş yeni Apple geliştirme araçları kullanılana kadar
MacOS X 10.2 altında geliştirilmiş uygulamaları taşımak çok daha zor olabilir.
Daha önce de söylendiği gibi, ulaşılabilecek birçok yeni yada özenli sınıf vardır.
Her nasılsa, aynı düşünceye güvenen araçlar GNUstep yada MacOS X altında çalışırlar
... ve GNUstep her geçen gün iyileşmektedir. Birşey bana çok hoş görünüyor:
GNUstep'te insanlar gerçekten birlikte çalışıyorlar. Farklı projeler düşünüldüğünde
her birine yardım ediyorlar ve GNUstep çekirdeğinin gelişimine de katkıda bulunuyorlar.
Bu benim hoşlandığım Serbest Yazılım'ın çalışma şekli. Mr.Fedor ve arkadaşlarına
böyle bir tavırdan dolayı tebrikler.
Bu makalenin amacı GNUstep "RAD" aracının, Gorm.app ve ProjectCenter.app'ın
gücünü göstermekti. Gençliklerine rağmen oldukça kolay şekilde hoş uygulamalar
geliştirmenize yardım edebilirler.
Daha fazlası, bu araçlar oldukça başarılı bir şekilde çok hoş bir çalışma tarzı
sağlarlar. Nesnel C oldukça tıkız bir dildir ve fikrimce birinin C ile
birlikte C++ öğrenmesinden çok daha kolaydır (Biliyorum, daha önce de söylemiştim!).
Bu daha küçük boyutlarda tutarak hoş görünen uygulamalar tasarlamayı sağlar
(tamam, bu zevk meselesi ama ben bu durumu seviyorum).
Kabul etmeliyim ki ilk NeXT makinasıyla tanışmamda yaşadığım şoktan hiç
kurtulamadım. Apple NeXTstep'in ileri bir sürümünü üreterek beni sevindirdi.
Bu aynı zamanda benim GNUstep yada Window Maker gibi projeleri neden çok
sevdiğimin de sebebi. Herneyse, serbest yazılımı seviyorum diye "tutucu" değilim,
ve buna uygun olarak sahipli yazılımlara karşı değilim (aslında, belki özel bir
kelime işlemciye biraz karşı olabilirim... ama, sadece biraz!).
GNUstep Apple'dan yararlanabilir... ama Apple da GNUstep'den yararlanabilir.
GNUstep Apple'ın bir rakibi değil, serbest bir yazılım. Bildiğim kadarıyla
serbest yazılımlar OS X'de oldukça kullanılıyor. Bu demektir ki Apple'a
çok daha fazla serbest yazılım getirmek kötü birşey olmayabilir.
Ludovic ve rakadaşlarının GNUMail.app ile yaptıkları ne olabileceğine çok güzel
bir örnek.
"Bir rüya gördüm"... Apple geliştirme araçlarının çoğunun kaynak kodlarını GNUstep'e
sunuyordu. GNUstep ve Apple geliştiricileri Unix kullanıcılarına olağan üstü
uygulamalar sunmak için birlikte çalışıyorlardı. Ve yavaş yavaş insanlar Windos
olmadan yaşayabileceklerinin farkına varıyorlardı...
Ne yazık ki, bir rüyaydı ;-)
Her neyse, GNUstep ve uygulamalarını bilmiyorsanız, bir denemek için rahat olun.
Hatırlayın, GNUstep size herşeyi keşfetmek ve oluşturmak için Gorm ve ProjectCenter
gibi bir ortam ve araçlar sağlar. Başka bir deyişle, biraz hayal gücü ile,
bugünlerde görebildiğinizden -Widos uygulamaları benzerlerinden!- çok farklı
"ürünler" geliştirebilirsiniz.
Önemli bir zamanda yaşıyoruz!
GNUstep insanları: A.Fedor, N.Pero, G.Casamento, P.Y.Rivaille, N.Roard, L.Marcotte,
R.Frith-Macdonald, P. C.D.Robert, E.Sersale, A.Froloff, F.Kiefer, M.Viviani,
M.Guesdon ve unuttuğum herkese bu büyük iş için, hem bu ortam ve hem de uygulamalar
için.
Window Maker insanlarına: A.Kojima, D.Pascu ve bize X için serbest bir NeXTstep
arayüzü sağlayan arkadaşlara.
J.M.Hullot ve B.Serlet'a InterfaceBuilder'ı ürettikleri için.
"Steve Jobs INC."'e bize NeXT, NeXTstep ve MacOS X'i sağladıkları için.
Burada bahsedilmeyen, profesyonel yaşamımızın oluşumunda az çok katkısı olan herkese