Gorm ve ProjectCenter, GNUstep Hızlı Uygulama Geliştirme (RAD) araçları

ArticleCategory:

Applications

AuthorImage:

Georges Tarbouriech

TranslationInfo:[Author and translation history]

original in en Georges Tarbouriech

en to trMurat Kaplan

AboutTheAuthor:

Georges uzun zamandır bir Unix kullanıcısı. GNUstep'i ve bu büyük oluşumun hazırladığı araçları seviyor.

Abstract:

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.

ArticleIllustration:

ProjectCenter and Gorm

ArticleBody:[The article body]

Başlangıçta...

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.

GNUstep

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.app

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.app

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

Bir kaç not

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.

Sadece "ÇokBasitEditor"

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.

GNUstep altında

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.

Geliştirme aşamasında böyle görünüyor olmalı:

EdDev

ve sonuçlanan uygulama:

Editor

MacOS X altında

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:

EdDev

Burada editör "çalışırken":

Editor

Ve şimdi... doğru çalışan bir uygulama

Ş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.

GNUstep altında

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:

ABdev


Bunu bitirdiğinizde herşeyi kaydedip kodu çalıştırmak yada iyileştimek için ProjectCenter'a dönün. Bazı hatalar yaptıysanız da Mike bütün uygulama kodunu veriyor. Eğer kodu indirdiyseniz kopyalayıp Gorm tarafından üretilen kendi Controller.m ve Controller.h dosyalarına yapıştırmanız yeterlidir. MacOS X için saklanan Cocoa.h ( Nesnel C terimlerinde "import") dahil olmasın. Aynı şekilde Grom tarafından "yazılan" iskeleti tutup birkaç şeyi değiştirmelisiniz. Örneğin Controller.h ve Controller.m içindeki void'i "IBAction" ile değiştirin. Controller.h'de "outlets id" den önceye "IBOutlet" ekleyin.
Herneyse, hoşlandıysanız önerilen kodun tamamını tutabilirsiniz: sadece "cocoa inclusion"'ı #import <AppKit/AppKit.h> ile değiştirin. Artık uygulamayı kurup çalıştırabilirsiniz.
Bu durumda: yeni adres defterinizle oynamaya başlayabilirsiniz.
Burada neye benzediğini görebiliriz:

AddressBook

MacOS X altında

Mike Beam bütün işi yaptı: ekleyebileceğim başka ne var?

Burada MacOS X altında geliştirme işleminden bir görüntü var:

ABdev

Sonlanmış uygulama:

AddressBook


Yani? GUI'nin tasarımı birkaç dakika tuttu ve bütün kod 2000 byte'dan biraz fazla. Hiç kötü değil değil mi?
Yine yapılabilecek bir sürü iyileştirme var ama bütün özellikler çalışıyor! Artık daha iyi bir adres defteri olması için koduyla oynayabilirsiniz...

GNUstep ve MacOS X

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.

Hayal et...

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!

Teşekkürler...

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