Professional Documents
Culture Documents
Yeni Nesil İş Uygulamalarının Mimarı C# Ve Diğer Diller
Yeni Nesil İş Uygulamalarının Mimarı C# Ve Diğer Diller
programlama dili ile projeyi en etkin ve en hzl ekilde mterime sunabileceim hale getirebilirim? Bu sorunun zmne ulamak o kadar da kolay olmuyor maalesef. zme zor ulamada programlama dillerinin fazla olmasnn etkisi omakla beraber her bir programlama dilinin sunduu standart ktphanenin farkl olmasnn da etkisi olduka fazladr. zellikle gnmz i uygulamalar birden fazla platformu destelemek zorunda kalmtr. Buda seilecek uygulama gelitirme ortamnn nemini akca gstermektedir. Uygulamalarn internet ortamna tanmas ile birlikte bir programlama dilinden beklenen zelliklerde doal olarak deimitir. 1970 li yllarda bir mikroilemciyi programlamak ne denli nemli olduysa 2000li yllarda interneti programlamak o kadar nemli olmutur. nternetin i dnyasna girii ile birlikte gelitirilen uygulamalardan beklenenler de deimitir. Bu durum doal olarak uygulama gelitiricileri dorudan etkilemitir. nternet ortamnda alan ve datk yapda alabilen ok ynl bir uygulama gelitirmek eski yntemlerle imkansz deildir ancak inanlmaz derecede zaman ve insan gc gerektirmektedir. Bu zoruluklar amak iin gelien teknolojiye ve isteklere paralel olarak programlama dilleri de doal geliim iine girmitir. Bu yazda son yllarda i ve kiisel uygulama gelitiricilerin adn ska duyduu C# programlama dili ve dier dillerle olan ilikisi anlatlacaktr. C# programlama dilinin sunduu imkanlar anlatmaya balamadan nce programlama dillerinin tarihsel geliimine gz atmak gerekir. Zira C# dili yllardr youn bir ekilde kullanlan C,C++ ve JAVA dillerinin temelleri zerine kurulmutur. unu da hemen belirtelim ki, son gelitirilen ilk gelitirilenden ou zaman daha iyi olacaktr. Bu yzden eski ile yeniyi karlatrrken ticari amalar bir kenara brakp objektif bir gzle deerlendirmek gerekir. C# konumadan nce C, C++ ve C# ile yakndan ilikili olan JAVAdan bahsetmek gerekir.
programlama modeli her ne kadar C dilinden nce de yaplyor idiyse de asl byk gelimeler C dili ile birlikte olmutur. C gibi makine diline gre yksek seviyeli programlama dilleri ile byk projeler yaplabiliyordu. Artk uygulamalar sadece bilimsel alma arac olmaktan kp i dnyasnda kullanlabilen uygulamalar haline geldi. Btn bu iyi gelimelerin yannda zaman su gibi akp gidiyordu, buna paralel olarak projeler byyor ve teknoloji artan ivmeyle geliiyordu. Yava yava anlald ki C dili ok byk projelerde yetersiz kalyordu. Yeni bir programlama modeline ihtiya duyuldu ve C++ dilinin temelleri atld.
uygulamay hem Microsoft platformunda hemde Unix ve Linux platformlarnda altrabilmek hedeflenmitir. Bylece gelitirilen uygulamalar iletim sistemi ve ilemciden bamsz hale gelecektir. Peki sistemler aras bu yksek tanabilirlik nasl olmaktadr? Cevab basit : Ara Dil. Evet, JAVA dilinde yazlm kodlar derlendiinde kodlar makine komutlarn evrilmeden ara kod denilen bytecode a evrilmektedir. Bytecodea evrilen program altrldnda Java Sanal Makinesi devreye girer ve uygulamann altrld sisteme zgn makine kodunu retir. Bu durumda Sun firmasnn bir ok sistemde alabilecek Java Sanal Makinesi retmesi gerekiyordu. Nitekim zamanla gnmzde yaygn kullanlan btn sistemlerde sorunsuz alabilecek Java Sanal Makineleri gelitirildi. Hatta u an iin baz cep telefonlar ve eitli sim kartlarnda bile JAVA programlarn altrabilecek Java Sanal Makineleri mevcuttur. JAVA ile C++ dili her ne kadar birbirine ok benzer olsada ayn kategoride deildir. Elmayla armutu kartrmamak gerekir. Eer JAVA m C++ m diye bir soru sorulursa cevap her ikisi de olacaktr. nk ikisininde kullanm amac farkldr. Bir firma bir proje iin hibir zaman bu iki dilden birisini semek durumunda kalmayacaktr. JAVA ile ayn kefeye koyabileceimiz dil birazdan anlatacam C# dilidir.
bu dil Anders Hejlsberg tarafndan gelitirilen C# (C Sharp)tan baka bir ey deildir.. JAVA, C++ diline nasl benziyorsa C# dilide C++ ve JAVAya benzemektedir. Programlama modeli yine her ortamda da nesne ynelimlidir. Deien ey bu modelin uygulan eklidir. C++ta kaynak kod derleyici tarafndan makine koduna, JAVAda bytecodea C#ta ise IL(Intermediate Language-Ara Dil)a evrilmektedir. Burda vurgulanmas gereken en nemli nokta JAVAda bytecode JAVA sanal makinesi tarafndan yorumlanarak altrlrken, .NETte IL kodlar derlenerek altrlmaktadr. Hemen unu da belirtelim ki, derleme ilemi yorumlama ileminden performans asndan daha ndedir. C# dil olarak C++ ve JAVAya ok benzemektedir. Bu yzden C# dilini konuurken .NET platformunu gz nnde bulundurmalyz. Dilleri sadece birer ara olarak grmemizde fayda var. sterseniz laf daha fazla uzatmadan JAVA/J2EE ve C#/.NETi karlatrp benzerliklerini ve farkllklarn ortaya koyalm ardndan C# dier .NET dillerinden ayran zellikleri inceleyip neden C# sorusuna cevap arayalm.
btn uygulamalar ayn ara koda dntrld iin .NET dilleri arasnda byk performans farkllklar meydana gelmez. 5-) Web Servisi Kullanm : Web Servisleri datk yapda gelitirilen uygulamalarn temel paras olmutur. zellikle iletiimin XML tabanl olmas web servislerinin nemini gstermektedir. Her iki dil ile web servislerine erimek mmkn olsada C# ile bir web servisini kullanmak olduka kolaydr. C# ve .NETin web servislerine kolay erimesi bir avantaj olarak grlebilir. 6-) Bellek Ynetimi : C#ta aynen JAVAda olduu gibi kullanlan nesneleri toplama programcnn grevi deildir. Kullanlmayan gereksiz nesneler gereksiz nesne toplaycs tarafndan zaman geldiinde bellekten silinirler. Buna ramen C# programclar isterse bellei kendileri de ynetebilir. Yani C# dilinde bellek adreslerini tutan gstericiler(pointer) hala kullanlabilmektedir. JAVA dilinde bu imkan yoktur. C# JAVA dan ayran en byk fark budur. Zira gsterici kullanm sayesinde geriye dnk uyumlulukta salanabilmektedir. rnein parametre olarak bir gsterici alan sistem fonksiyonunu C#ta kullanmak mmkndr. 7-) Veri Tipleri : C# dilinin temel felsefesi hereyin bir nesne olmasdr. Temel veri trleride dahil olmak zere herey birer nesne olarak tanmlanr. C# ve JAVA salad temel veri trleri bakmndan birbirlerine ok yakndr. 8-) Tekrar Kullanlabilirlik : Nesne ynelimli programlama modelinin en nemli zellii gelitirilen snflarn paketlenerek sonradan tekrar tekrar farkl uygulamalarda kullanlabilmesidir. C# ta snflar isim alanlar(namespace) ierisinde paketlenerek dier uygulamalar iinde kullanlabilir. Javada ise snflar package dediimiz bir kavramla paketlenir. Sonu olarak her iki dilde eit oranda bu zellii desteklemektedir. Ancak C#ta snflarn organizasyonu daha estetik bir ekilde dzenlenmektedir. 9-) Kontrol Mekanizmalar : Kodlarn iinde en ok grlen bloklar olan for,while ve if gibi yaplar her iki dilde de vardr. C#ta JAVA dilinde olmayan ayrca foreach dngs bulunmaktadr. foreach dngs ile koleksiyon tabanl nesnelerin elemanlar arasnda tek ynde rahata dolalabilmektedir. 10-) Tretme ve ok Biimlilik : Nesne ynelimli programlama modelinin C++ dilinden beri kullanlan mekanizmalar olan tretme ve ok biimlilik her iki dilde de mevcuttur. C++tan farkl olarak C# ve Javada sadece tekli tretme mevcuttur. 11-) stisnai Durumlar Ynetme : Uygulamlarn en byk dman olan istisnai durumlarn(exceptions) her iki dilde de ele aln biimi hemen hemen ayndr. 12-) Snf Ktphanesi : Veritaban ve dosya ilemleri gibi burada sayamayacamz bir ok temel ii yapan snflar .NET ve J2EE platformunda mevcuttur. Gerek bu snflarn organizasyonu gerekse de snflarn kullanl biimi bakmndan .NET platformunun daha avantajl olduunu syleyebiliriz. Btn bu maddeler bir btn olarak ele alndnda C#n JAVAdan bir kademe nde olduu grlmektedir. Bu durum elbette proje yneticilerinin seimlerini
etkilemektedir. Microsoft faktrnde gz nnde bulundurursak C# ve .NETin gelecekte ok i yapacan sylemek iin mneccim olmaya gerek yok. Bu arada JAVAnn halen yaygn bir ekilde kullanldn da gzard etmemeliyiz. Bu durum C# ve JAVAnn seiminde sadece teknik zelliklerin deil ayn zamanda Windows ve Linuxte olduu gibi sosyal etkenlerinde rol bulunduunu gsteriyor. Buraya kadar sylediklerimden belki yle bir soru iareti domu olabilir : C# m JAVA m sorusunu C# m C++ m eklinde sorsak neler deiir? Cevap : ok ey deiir. Evet C#n JAVA ile olan ilikisi C++ ile olan ilikisinden tamamen farkldr. C# ile JAVAy ancak saf dil olarak karlatrabiliriz. Yani dilin sentaksndan bahsediyorum. Bu iki dilin kullanld ortam farkldr. Birinde bir sisteme zgn makine kodu retilirken dierinde sistemden bamsz ara bir kod oluturulmaktadr. Bu durumda C++ ve C# bir btn olarak karlatrmay kiisel olarak doru bulmuyorum. nk ikisi farkl kategorilerde yaryor. Eer bir gn .NETin rettii ara koddaki komutlar ile alan mikroilemci gelitirilirse o zaman belki C# ile C++ karlatrabiliriz. Peki C# m C++? Cevap : Her ikiside. Eer irketiniz Intel ilemciler iin bir iletim sistemi gelitiriyorsa elbette C++ ve C dilleri seilmelidir. irketiniz datk yapda ok geni bir alma a olan bir uygulama gelitiriyorsa o zaman C# ve .NETi semeniz daha doru olacaktr. Bu seim bir projede hangi dilin kullanlacan deerlendirmek iindi. e bir de programclar asndan bakalm. Bir programcnn hem C++ hem C# hemde JAVA bilmesine gerek var m? Bence gerek var yada yok. Kesin bir cevab verilemez bu sorunun. Daha dorusu bir programc ihtiya dahilinde herhangi bir programlama dilini kullanabilmelidir. Ancak unu da unutmayalm ki iyi bir programc ok sayda programlama dili bilen demek deildir. yi bir programc .NET platformunda olduu gibi programlama dilinden bamsz kod retebilmelidir.
neredeyse kalkmtr. Bunda btn temel veri trleri de dahil olmak zere btn snflarn Object diye adlandrlan bir snftan tretilmesinin etkisi vardr. C# dili g ve hzllk arasndaki dengeye estetik bir ekilde korumaktadr. Temsilci ve olaylarla VBdeki olay mantna benzer bir model sunarken ayn zamanda gstericileri kullanmaya imkan vererek C++ dilinin gl zelliklerinden yoksun brakmamtr. .NET snf ktphanesinin byk bir ksm C# ile gelitirilmitir. Yani bu ktphaneyi en etkin biimde C# ile kullanabiliriz. Dahas C# dili .NETin alma mimarisi de gznnde bulundurularak sfrdan tasarland iin .NETin btn olanaklarndan en etkin biimde C# ile faydalanabiliriz. C# iin sylenebilecek son sz : C#, modern programlama tekniklerine tam destek veren, internet ann gerektirdii tm yazlm bileenlerini gelitirmeye izin veren, hzl ve etkin bir ekilde kodlama yaplabilen, C++ ve JAVAnn gzel ynlerini alp geriye dnk uyumluluu JAVAda olduu gibi gzard etmeyen bir programlama dilidir.
Sonu
nternetin ve haberleme teknolojisinin ok ileri bir seviyede olduu bir dnemde internet zerinde kullanlabilecek yazlm bileenlerini programlamak son derece nem kazanmtr. Her ne kadar C# ve JAVA ncesi dillerle herey yaplabiliyor olsada projelerin boyutlarnn bymesi bu dillerin artk yetersiz olduunun bir gstergesidir. zellikle yeni nesil i uygulamalarnda C# ve JAVA, C++tan bir adm nde grnyor. Tabi bu durum C++ dilinin kt olduunu gstermez. Nitekim C# ve JAVA dillerinin her ikiside C++ dilini rnek almtr. Deien tek ey gnn ihtiyalardr. Ayn zamanda C# dili JAVA, C++.NET, VB.NET ve J# gibi diller nnde de bir adm nde grnyor.