Her konuda olduğu gibi bilgisayar ve programlama dünyasında da efsane haline gelmiş ancak tamamen yanlış şeyler mevcut. Bazıları saçmalık derecesinde. Bazıları çok ateşli savunuculara sahip. Bloglarda, forumlarda, orda burda, tartışılsın tartışılmasına, çok seslilik deyip geçelim de… Bu at gözlüklülerin, müşteriniz, yöneticiniz, patronunuz olduğunu düşünün. Dilim döndüğünce bu yazıda bu efsanelerden bahsedeceğim. (Aklıma geldikçe yazıyı güncelleyeceğim).
1) Açık kaynaklı yazılım her zaman bedavadır
Değildir.
3000 kişilik üretim hattına sahip bir işletmede, kullanılan açık kaynaklı yazılım yanlış bir şekilde “malzeme tedarik planlama” yaptığı için, çok hayati bir malzemenin siparişinin geciktiğini düşünün. Bu malzemenin işletmenize teslim süresinin 1 hafta olduğunu ve bu olmadan üretim yapılamadığını düşünün. Asgari, ücretli 3000 kişinin 1 hafta yatmasının maliyeti, yaklaşık 100.000 tl dir. Bu sadece işçilik maliyeti… Buna amortisman, genel giderler, kaçan satışların fırsat maliyeti, sözleşmelerden doğan yükümlüklerin maliyetleri ve diğer maliyet kalemlerini de eklerseniz zarar çok daha büyük boyutlara ulaşır. Kurumlar ve kritik projeler açısından, arkasında ticari desteği olmayan açık kaynaklı yazılımlar, aslında en pahalı seçenektir.
2) Microsoft ürünleri iyidir. Çünkü arkasında teknik destek var.
Yoktur.
Hayatım boyunca (bireysel kullanıcı olarak) önemli sayılabilecek hiçbir konuda microsoft’tan destek alamadım. Satın aldığınız yere yönlendirilir. Satın aldığınız bayi de çok cüzzi bir kar yaptığı için istese de size zaman ayıramaz. Yani aslında örneğin windows XP kullanırken, linux kullanırkenkinden daha yalnızsınızdır. Yani kendi paranızla rezil olursunuz. Amiyane tabiriyle kendinizi keriz gibi hissedersiniz. Büyük bir kuramsal müşteri değilseniz, muhatap bulamazsınız. Üstelik yasal olarak yapabileceğiniz hiçbir şey yoktur. Meşhur microsoft son kullanıcı sözleşmesinde (EULA) da utanmadan açıkça yazılmıştır; Microsof ürünlerinin hatalı olabilir ve doğabilecek her türlü zarardan microsoft sorumlu tutulamaz.
3) X Programlama dilini öğrenmek…
Yanlış kavram.
İnsanların çoğu, hatta programcıların çoğu dahi, programlama dili öğrendiğini sanar. Öğrenilen programlama dili değil, bilgisayar programlamadır. Yani bilgisayar programlamayı bilirsiniz ve bu bilginizi kullarak bir programlama dili ile somutlaştırırsınız. Çoğu programlama dili, 50 yi geçmeyen komut listesi, 10-15 mekanizma ve çok sayılmayacak bir takım kurallara sahiptir. Örneğin x programlama dilini öğrenirken zorlandığını, düşünür, aylarca hatta yıllarca süren zamanda x programlama dilini öğrendiğini sanar. Aslında öğrendiği x programlama dili değil, bilgisayar programlamadır. Hiç bilmediği programlama dili ile yazılmış yazılımı alıp, kodlarını kolayca okuyup takip edebilen insanların sayısı hiç az değil. Yalnız şu var; bazı programlama dilleri, bilgisayar programlamayı daha iyi öğretir. Örneğin C/C++… Bu nedenle hiç kullanmayacak olsa bile, her programcı, mutlaka C ile ilgilenmelidir.
4) Nesne tabanlı programlama > Prosedürel programlama
Yanlış.
Bu karşılaştırmayı yapmak bile saçma. Bu ikisi biribirini ikame edici şeyler değil, tamamlayıcı şeyleridir. Ayrıca nesne tabanlı programlamayı olmazsa olmaz diyenlere; Linux Kernel,Apache Server, Drupal ve Quake III Arena örnekleri güzel birer cevaptır. Nesne tabanlı programlama çok faydası olan bir yaklaşımdır. Ama kullanılacak yer var, kullanılmayacak yer var. Ayrıca prosedürel programlamayı spagetti kod yazmak sanan ve kendini programcı sanan insanlar bilmeliler ki, prosedürel yöntemle de modüler geliştirme yapılabilir. Nesne tabanlı programlamanın çıkış amacı, kod tekrarını önlemek değildir. Nesne tabanlı programlamayı bilmeyen ama ateşli olarak savunanlara, neden diye sorulduğunda bunu söylerler genelde… Kod tekrarını prosedürel programlama ile de engellersiniz. Hem de daha iyi yaparsınız. Nihai olarak OOP nin verdiği bazı şeyleri prosedürel veremez. Ama OOP nin imkansız olduğu ya da saçma olduğu yerler de var.
5) Nesne Tabanlı web programlama = MVC Framework
Yanlış.
Programlama yaparken framework kullanmak, işin formatını gerçekten çok değiştiriyor. Önceki yazılarımda da hep yazdım durdum. Framework mutlaka kullanılmalı. Ancak özellikle php camiasında öyle ilginç bir ön kabul var ki, hemen hemen hiç kimse bunu sorgulamıyor. Framework kullanmanın faydaları sorulunca, hemen mvc nin faydalarından bahsedilir. Sanki bütün frameworkler mvc mantığıyla yapılmış ya da yapılmak zorudaymış gibi. Asp.Net vs gibi örnekler var ki (sonradan bazı eklenti vs lerle mvc eklense de) temelde mvc ile ilgisi yoktur. Burada eleştirdiğim nokta mvc değil, yanlış anlaşılmasın. Kavram kargaşasını eleştiriyorum. Tam olarak bilmeden bir aracı nasıl kullanabilirsiniz, onu sorguluyorum. Yoksa MVC ‘yi çok seviyorum ve kullanıyorum. Herkes kullanıyor, ben de kullanayım diye, işin daha en temeldeki kavramlarını bilmeden bir araç kullanılmaz. Ayrıca MVC ile sağlanan güzelliği gerçekleştirebilmenin tek alternatifi OOP değildir. Smarty + prosedürel programlama ile de aynı işi yapan bir framework oluşturabilirsiniz. (Daha iyi olur, daha kötü olur tartışması yapmıyorum, sadece kavramların doğru anlaşılabilmesine çalışıyorum.) Aslında bunu en güzel analiz etmiş ve kendi bünyesinde uygulayabilmiş framework, Zend framework. ZF öyle bir yapı sunuyor ki ister mvc modelini kullanırsın, istersen kullanmazsın. Tüm önyargılardan uzak ve programcıyı hiçbir kalıba sokmayan tek php framework. Zor olduğu söylenir ancak bunu söyleyenler aslında programlamayı tam olarak bilmeyenlerdir. Çoğu açıdan kullanması en zahmetsiz frameworktür.
devam edecek………………
________________________