Artık Platformdan Bağımsız Yada En Azından Daha Az Bağımlı İşler Yapmak İstiyorum

programming-languagesArtık Microsoft’un ürünlerine bağlı olmak istemiyorum. Evet çok kolay ve güzel şeyleri çok hızlı ve kısa sürede çok rahat olarak yapabiliyorum. Aradığım bir çok şey internette mevcut. Yaşadığım bir sorun ve sıkıntıyı internette arayıp bulamamak çok zor. Eğer ki yinede bulamadıysam decompile edip yazılmış olan kodları inceleyip sonrasında çözüm üretilebiliyor. Herşey çok iyi ve güzel değil mi? Sonuçta dünyanın en büyük yazılım firması olan Microsoft çıkartmış olduğu ürünler ile en kaliteliyi ve en iyiyi son kullanıcılara (bunun içinde biz geliştiriciler de varız) verme konusunda oldukça başarılı. Ama bir süre sonra bazı şeyler tat vermemeye, bir hoşnutsuzluk hissi ile dolmaya başlıyorsunuz. Farklı arayışlar ve farklı heyecanlar arıyorsunuz. Yazdığınız kodun bir çok platformda çalışabilir olmasını istiyorsunuz.
Birisi oradan Java’mı dedi?
Javada en az C# kadar eğlenceli ve güzel ama Sun firmasının Oracle firmasına dahil olmasından sonra kafamda Java ile ilgili soru işaretleri oluşmaya başladı. Java’nın geleceği ne kadar?
Tamam biliyorum Android üzerinde Java ile geliştirme yapabiliyorsun ondan dolayı daha çok uzun seneler varlığını sürdürecek. Ama bir düşünelim neden Google Java’yı tercih etti. 

Aslında burada çok fazla bir seçeneği olmadığı için dersek acımasız bir yorum yapmış olmayız. Öncelikle en başından Platform seçiminden başlayalım.

Bilindiği üzere Android Linux üzerine üzerine Darvik VM kullanılarak oluşturulmuş olan bir platform. Yani altyapısı Linux. Windows kullanmış olsaydı maliyetleri daha fazla artıcaktı bu da pek istenmeyen bir durum. Ondan dolayı en mantıklı ve sorunsuz seçim doğal olarak Linux oluyor. Söz konusu linux ise bu platformda ki geliştirme ortamlarına bir göz atalım.

Python, Ruby, C/C++, Java, Mono, Cobol, Ada vb. bu liste böyle gider ama belli başlı ve göze çarpan seçenekler bunlar. Bu seçeneklere biraz daha yakından bakalım.
Android
Python ve Ruby: Hadi ama bunları Android’in ana geliştirme dili yapmış olsanız büyük tepkiler alırsınız. Bu dillerin eti ne butu ne derler adama.Mono: C# daha doğrusu .Net’in açık kaynak kodlu versiyonu. Şu an için oldukça güzel gidiyor, Ps Vita içerisinde kullanılıyor ama o kadarda popüler ve yaygın olmadığını düşünürsek doğru bir seçim olmazdı.Cobol, Ada: Halen bunu kullanan firmalar ve insanlar var ama çok ender ve sayılı projelerde kullanılıyor. Kurumsal projelerde artık tercih edilmiyor

C/C++, Java: Bir çift olarak tek başlık altında topladım ama elimde değil ikiside güzel ve kullanışlı bir dil. Sanki kardeş gibiler :) Neyse geyik yapmaya gerek yok. C/C++ belkide ölmeyecek ikinci dildir. İlki ASM. Her yerde ve herzaman kullanabileceğiniz, bir defa öğrendiniz mi diğer diller sizin için çerez gibi gelecek tek dil bence. Kullanımı ve yönetmesi biraz zor, okunulabilirliği biraz göz karartıcı ama her platformda kullanılabilen yegane ve biricik dil. Java ise hem çok popüler hemde kamyon yükü ile kurumsal ve açık kaynak kodlu Framework’e sahip olması onu çok güçlü ve seçimde birinci sırada olmasına neden oluyor. Şu anda bile birçok .Net için geliştirilen açık kaynak kodlu Framework’ün temel olarak Java Frameworkleri baz alındığı bir gerçek. Burada dürüst olmak gerekirse dünya çapında çok yaygın ve popüler. Java

Şimdi yukarıda ki seçenekleri inceleyince siz olsanız hangisi seçerdiniz?

Ada ve Cobol değil herhalde. Tabiki de Java’yı ve C/C++’ı tabiki de.

Yani Android’in Java ve C/C++ seçmesinin hiçte haksız ve rastlantısal bir durum değil. Tamamen doğru ve yerinde bir seçim.

Ama bu demek değil ki Java’nın geleceğinin kuşkulu olmadığı manasına gelsin. Belki de en büyük handikap Java’nın Oracle gibi hantal bir firma tarafından geliştiriliyor olmasından kaynaklıdır.

Google firmasının Java ile ilişkisi uzun senelerden beri geliyor. Neredeyse çıkartmış olduğu her API’nin mutlaka bir Java SDK’sı bulunuyor. Neyse Java ve Android uzun bir süre daha beraber yürüyecekler orası kesin. 

Peki bu kadar uzun bir yazıdan sonra asıl gelmek istediğim şeye geleyim artık. Java yada C# kullanmak istemiyorum artık. Aslında hiç bir interpreted yada bytecode çevrilen bir dil kullanmak istemiyorum artık. 500KB uygulama için 50MB uygulama yüklemek gerçekten de bana zor geliyor. Bir kere yüklüyorum sonrasında gerek yok ıvır zıvır tamam tamam tamam. Ama genede istemiyorum. 

Ne mi istiyorum?

c-cplusplusArtık C/C++ öğrenip QT’de yazmak istiyorum :) Qt’de bir Framework ama onu kurmaya gerek yok. Kendisi zaten uygulama ile birlikte DLL olarak geldiğinden dolayı sorun yok.

Üstelik hem hızlı hem de bir çok platformda kullanabiliyorsun. Yani Windows üzerinde geliştirme yapma zorunluluğu yok. Microsoft amcaya VS için, Windows için ve sonrasında ki diğer artı ürünleri için ücret ödeme zorunluluğun yok. Aslında şu anda da ödemiyorum ama düşününce öbür tarafta fazi ile ödetecekler :)

C/C++ ile birlikte kullanılabilecek tek Framework’ler bunlar değil elbet. Bir çok kaliteli ve açık kaynak kodlu proje mevcut. Aynı zamanda mobil platformlar içinde multiplatform frameworkler var. Örnek vermek gerekirse MySync ve Marmalade SDK bunlar arasında en çok gözüme çarpanlar. Her ikisin de C/C++ kullanıyorsun.

Bir de şöyle bir durum var yazmış olduğunuz kodlardan ziyade kullandığınız VM’den kaynaklı açıklarda oluyor. CLR yada JVM altyazpısından kaynaklı bazı açıklar gene bunun üreticisi tarafından kapatılması gerekiyor. Birde bu tarz dillerin en büyük sorunlardan birisi olan Decompile işlemini öncelemek o kadarda kolay olmuyor. Üçüncü parti uygulamalar ile tam olarak kodlar kapatılmasa da okunamaz hale getirilerek bir şekilde önüne geçilmeye çalışılıyor.

Delphi, C/C++ gibi dillerde ki gibi Native uygulama üreten platformlar için böyle bir sıkıntı söz konusu değil. Sadece Asm ‘ye çevrilebiliyor, ehh artık onu çözüpte birşey yapıyorsa hakkıdır ne isterse yapsın.

 

Son olarak yahu artık bırakın şu Visual Basic ile yazmayı. Kanser eder adamı. Zombilerle uğraşmaktansa dirilerle uğraşın 😉

programminglanguages

Facebook Comments

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir