Sunday, November 18, 2012

Copy/Paste Programcı (Yazar :Özcan Acar)


Ayrintili bilgi icin tikla

Internetin bu kadar büyümesi ve özellikle Google gibi arama motorlarının günlük iş hayatımızın bir parçası haline gelmesi biz programcılar için ne kadar hayırlı oldu, bilemiyorum. Pek te hayırlı olmadığı kanısındayım. Açıklamaya çalışayım.

Çalıştığım projede bir çalışma arkadaşımın masasında algoritmalarla ilgili kalınca bir kitap gördüm. Havadan, sudan konuşurken kendisi böyle kitapların artık gereksiz olduğunu, çünkü internette istediğin algoritmayı bulup, kullanabildigini söyledi. Doğru, haklıydı.
Bugünlerde Pratik Spring Core 3 isminde yeni kitabım üzerinde çalışmalarımı sürdürüyorum. Spring ile XML bazlı deklaratif transaksiyon yönetimi konfigürasyonu nasıl yapılır diye internette araştırma yaparken, birkaç klasik blog sayfasına rastladım. Bu klasik blog yazılarını tanırsınız. Basit bir örnek üzerinde belli bir konfigürasyonun nasıl yapıldığını gösterirler. Bu örnekleri copy/paste yaparak programcının kendi uygulamasına eklemesi zor değildir. Zamanında az yapmadık. Copy/paste işlemi esnasında insan keşfettiği örneğin altındaki konseptlerin ne olduğunu sorgulamıyor. Programcı için önemli olan bir şeyleri çalışır hale getirebilmek. Ve bunu başardıktan sonra, “ya, bunu çalışır hale getirdim ama, bu işin temelindeki konseptler nelerdir” şeklinde bir sonuca varmıyor ya da varamıyor. İşte internet üzerinden bilgiye bu kadar hızlı, sorgusuz ve sualsiz erişmenin getirdiği hayırsızlıkta bu noktadan itibaren başlıyor. Programcı bir bilgiyi edindi ve kullandı. Ama o bilginin neyi temsil ettiğini, yani temelinde neler olduğunu bilmiyor. Spring ile XML bazlı deklaratif transaksiyon yönetimi konfigürasyonu örneğinde 3 satırlık copy/paste edilen XML konfigürasyonunun altında AOP (Aspect Oriented Programming) ve Proxy tasarım şablonu gibi konseptler var. İki satırlık konfigürasyonu kopyaladım, ama temelinde yatan bu bilgileri kopyalayamadım. Bunlar internette kalmaya devam etti. Benim kopyaladığım cansız, iki satırlık kod parçası.
Kod örneğiyle, kodun temelindeki konseptlerin zahmetsiz bir şekilde beyne nasıl kopyalandığını Matrix filmede gördük. Neo anında Karate-Kid olmuştu. Bizim böyle bir imkanımız yok. Böyle bir şeyin gelecekte mümkün olacagını da düşünmüyorum. Geriye kalan, kaynağını bulup, copy/paste yaptığımız bilgilerin temelinde yatan konseptleri ögrenmek ve uygulamak. O zaman hayırsız olarak tabir ettiğim işlemi hayırlı bir işleme dönüştürebiliriz.
Copy/paste zihinlere o kadar yerleşmiş ki, bilgiye sahip olmanın değil de, bilgiye nasıl ulaşabileceğini bilmenin daha önemli olduğunu savunanlar var. Bu artık copy/paste filozofisinin mükemmelleştirilerek, getirildiği en son noktadır, yani bu akımın en tepesindeki noktadır. Bu filozofiye sahip olanların, iş görüşmelerinde bu tür ifadelerde bulunmamalarını tavsiye ediyorum, çünkü iş verenin en sevmediği ve iş görüşmesini anında sonlandırabileceği durumların başında, iş görüşmesi yaptığı şahsın “ufak bir internet araştırması ile bu sorunu çözebilirim” tarzı söylemlerde bulunmasıdır. Böyle bir şey söyleyen şahıs aslında “ben bu bilgiye sahip değilim, başkaları sahip, ama bir bakayım, bakalım, bir yerlerden bulabilir miyim” demektedir. Böyle bir şey söyleyen bir programcıyı siz olsanız işe alır mıydınız?
İyi bir programcı olabilmek için iyi bir temele sahip olmak gerekir. Bu temel edinilmiş ve zaman içinde edinilen bilgiden oluşur. Programcı tüm yeteneklerini bu temel üzerine inşa eder. Zaman zaman internetten bir şeyleri copy/paste etmek suç ya da günah değildir. Bu hepimizin yaptığı bir şeydir. Lakin programcı copy/paste yaptıktan sonra, copy/paste yaptığı kod parçasının temelinde yatan bilgiyi sahip olduğu temele eklemekle yükümlüdür. Aksi taktirde bu bakkaldan bir sakız alıp, parasını ödememek gibi bir şey olur. Copy/paste yapılan şeyin bedeli ödenmelidir. Copy/paste edilen kodun üzerinde fiyat etiketi olmadığı için beleş sananlar vardır. Hayır, beleş değildir. Bedeli ödenmeden kullanılan bilgi, temeli sağlam olmayan bir binanın en ufak bir rüzgar esintisinde sallanması misali programcıya zarar verir.
Copy/paste yapalm, ama bedelini ödeyerek…


Ayrintili bilgi icin tikla



EOF (End Of Fun)
Özcan Acar



Tuesday, November 13, 2012

JavaScript ile sayfa icerisinde arama yapmak

1. Adim



2. Adim



3. Adim

Monday, November 12, 2012

Maven Nedir?



         Maven, Jakarta Turbine projesinin geliştirilme sürecinde, proje aşamalarını basitleştirmek için kullanılmıştır. Maven ile standart bir yol ile projeleri geliştirmek, anlaşılır bir açıklama ile hangi proje ne içeriyor, projeleri kolayca yayınlamak ve JAR dosyalarını projeler arasında paylaştırmak için tasarlanmıştır.

         Sonuç olarak, bu araç herhangi bir Java tabanlı projenin geliştirilmini ve yöneyimini sağlayabilmektedir. Umulan Maven ile Java geliştiricilerine daha rahat bir ortam yaratmakla birlikte, Java tabanlı projelerin anlaşılabilirliğini arttırmaktır.

          Maven’ın temel amacı, projenin bütün durumlarını en kısa biçimde programcıya anlatabilmektir. Maven bu amaca bir kaç değişik yolla ulaşır:

               • Projenin geliştirme adımlarını kolaylaştırmak
               • Tek bir geliştirme standardı sağlamak
               • Projenin niteliklerini bilgi olarak sağlamak
               • Projenin geliştirilmesinde iyi çözümleri yol göstermek
               • Projenin yeni özelliklerine anlaşılır bir geçiş sağlamak                                                                                                   Yazinin devamini bu linkten okuyabilirisniz.