Kod Yazmak Yazılımın Neresinde
14 Nisan 2011 Perşembe
Bir kılıç ustasının eline en iyi kılıçlardan birini verirler. Ustanın gözünü kapatıp savaş meydanına sürerler. Kılış ustası hafif yaralanır ama dost düşman demeden çevresinde kim var kim yok kesip atmıştır…
Bir projeye başlarken ne yapacağını bilmemek gözleri bağlı kılıç ustasının savaş meydanında savaşmasına benzer. Kod yazılır, yeni ihtimaller doğar kod değiştirilir, farklı sonuçlar görülür baştan kodlanır tekrar en başa tekrar en başa… bu döngü uzun süre bu şekilde devam eder ta ki proje son şeklini alana kadar.
Amatör geliştirmede de yaşanan en büyük sıkıntı belki de bu. Bilgisizlikten ziyade yapılacak işin araştırılmamış olmaması. Bu yönden bakıldığında kod yazmak yazılımın neresinde acaba? En önemli yerinde mi yoksa en son kısmında mı?
Bir programlama diline baktığımızda yazılan kodlar bellidir. Basitçe örneklemek gerekirse Bir otomasyon projesinde veri tabanından okuma yazma güncelleme silme işlemi dışında yapılan iş çok azdır. Bu işlemleri biraz kendini ilerletmiş birisi rahatça yapabildiğine göre proje geliştirmeyi engelleyen ne? Elbette ki iş akışının tasarlanamamasıdır.
Bir proje ele alındığında konu ile ilgili araştırma yapılmalı, veriler kağıda dökülmeli, ihtimaller düşünülmeli, benzer uygulamalar incelenip art ve eksi yönleri çıkarılmalı. Son olarak analiz yapılıp ortaya bir model dökülmeli. Model ne kadar iyi ve esnek tasarlanırsa ileriki zamanlarda geliştirilmesi de o kadar olacaktır.
İyi bir modelleme işleminden sonra kod yazmaya geçilebilir fakat nasıl kod yazmak?
-Kod yazarken hata kontrolü yapılmalı try-catch blokları kullanılmalı. Bu durum istisnai durumlarda uygulamanızın istem dışı davranmasını engelleyecektir. Ayrıca hataların loglanması kontrolü tamamen geliştiriciye verecektir.
-Kodlama notasyonunuz olsun. Belli bir kodlama notasyonuna bağlı kalmanız hem projenizin ileriki zamanlarda okunabilirlik ve geliştirile bilirliği açısından hem de kullandığınız metotları tekrar kullanmak istediğinizde rahat kullanmanız açısından işinizi çok kolaylaştıracaktır. Kodlama notasyonu olarak Macar notasyonu gibi sık kullanılan bir notasyon tercih etmeniz sizi hem de geliştirecektir.
-Object-Oriented Mantığı ile kod yazın. Nesne yönelimli programlama ile kod tekrarlarından kurtulur hem de iş öbeklerini belirleyip projenizin daha esnek ve modüler olmasını sağlarsınız. Fakat Object Oriented ı sadece public class tan ibaret kullanırsanız bu projenizi sadece fonksiyon dosyalarına bölmenizi sağlar Nesne yönelimli yazılım tasarımlarını (Object Oriented Design)kesinlikle inceleyin ve kullanın.
-Kodlarınız içinde sıkça yorum cümlelerine ve summarylere yer verin bunlar gelişen projenizde neyi niçin yazdığınızı hatırlamanızı sağlayacaktır.
-Performans a özen gösterin. Yazdığınız kodu en iyi performansla nasıl çalıştırabileceğinizi düşünün. Örneğin veri tabanına defalarca gitmek yerine tek seferde datatable a atabilirsiniz. Ama Verileri DataTable a yüklerken fazla veri yüklememek için mümkün olduğunca parametrik metot yazmalısınız.
-Kullandığınız dil ve framework ün özelliklerini bilin. Bu size avantaj ve zaman kazandıracaktır.
-Hamallık ile Profesyonelliği karıştırmayın. Gereksiz kod yazmak hamallıktır. Ama fazladan size fayda sağlayacak kodu yazmak profesyonelliktir.
-Projenizde kullanacağınız component setleri, raporlama dll lerini inceleyin hangisinden daha fazla verim almışsanız onu kullanın.
-Bir kodu bir kez yazın ama tam yazın. Koda tekrar tekrar geri dönmek size belli bir süre çıkmaza sürükleyecektir. Bundan dolayı kodunuzu yazarken her olayı düşünerek yazın ve bir kez yazın.
…
Bu maddeler arttırılabilir fakat genel olarak özetlemek gerekirse aklıma gelenler bunlar.
Dikkat ederseniz daha kod yazma aşamasına gelmedik bahsedilen şeyler proje ihtiyaçlarının belirlenmesi, modelleme, kod nasıl yazılmalı nelere dikkat edilmeli gibi şeyler… Bunları başardıktan sonra kod yazma aşamasına geçilebilir.
Devamı
Yazılımcı Karinca
27 Mart 2011 Pazar
Eski bir hikaye arşivimde denk geldi paylaşmak istedim:

Devamı
Kendime Not-1
06 Mart 2011 Pazar
Microsoft a ait open source projeler. Projeleri kodları yapıları kesinlikle incelemek gerek
http://www.microsoft.com/opensource/directory.aspx
Devamı
Nesne Yönelimli Tasarımı Nasıl Açıklarım
05 Mart 2011 Cumartesi
Temmuz 2010’da Codeproject tarafından ödül almış bir makaledir.
Karım Farhana, kariyerine yazılım geliştirici olarak tekrar başlamak istiyor (kariyerine yazılım geliştirici olarak başlamıştı, ilk çocuğumuzun doğumu nedeni ile fazla ilerleyememişti) ve bugünlerde tecrübeli bir yazılım tasarımcısı ve geliştirici olarak ona Nesne Yönelimli Tasarımı öğretmeye çalışıyorum.
Yazılım uzmanlığımın ilk günlerinden itibaren, teknik bir meselenin ne kadar zor göründüğünü önemsememeye dikkat ederim, konuşma diline uygun biçimde açıklama, real hayat perspertifinden ve tartışmalarından olursa bu her zaman daha kolay olacaktır. Aynen bizim Nesne Yönelimli Tasarım konusunda yaptığımız verimli konuşma gibi, düşündüm ki bunu sizinle paylaşabilirim, belki birinin Nesne Yönelimli Tasarımı öğrenmesini için ilginç bir taktik olabilir.
Nesne yönelimli tasarımın bizim konuşmamızda nasıl yer aldığını izleyin.
NESNE YÖNELİMLİ TASARIMA GİRİŞ
Shubho: Hayatım, hadi Nesne yönelimli tasarımı öğrenmeye başlayalım, Nesne Yönelim ilkelerini biliyorsun, değilmi?
Farhana: Yani, Kapsülleme, Kalıtım ve Çok biçimlilikten bahsediyorsun değilmi? Evet, bu ilkeleri biliyorum.
Devamı
ENTERPRISE LIBRARY
21 Şubat 2011 Pazartesi
Son 20 gündür yoğun bir tecrübe dönemi yaşıyorum bu yazıya başlamadan önce Telerik Components, team foundation server, Enterprise Library, Elektronik Belge Yönetim Sistemi Uygulamaları gibi konular arasında gidip gelmeler sonucu Enterprise Library de karar kıldım.
Büyük ve orta dereceli proje geliştirenler için muhakkak bazı işlemleri sık sık projelerimizde yapmışızdır. Hatta firma bazında çalışanlar bilirler ki bu konuya çözüm bulmak için kendi frameworklerini oluşturur firmalar. Enterprise Library bu noktada devreye giriyor ve diyor ki “sizin sık kullandığınız şeyleri biz inceledik, araştırdık ve bu işleri yapan bir kütüphane oluşturduk buyurun kullanın”.Ayırıca açık kaynak kodlu olduğu için istediğiniz gibi geliştiebiliyorsunuz.
Enterprise Library 5.0 9 katmandan oluşuyor
-Caching Application Block (Önbellek işlemleri)
-Cryptography Application Block (Şifreleme)
-Data Access Application Block (Veri Erişimi)
-Exception Handling Application Block (Hata Yönetimi)
-Logging Application Block (Loglama)
-Policy Injection Application Block (Katmanlar arası iletişim)
-Securtiy Application Block (Güvenlik)
-Validation Application Block (Doğrulama)
-Unity Application Block()
DATA ACCESS APPLICATION BLOCK
-Farklı veritabanlarına bağlantı desteği
-Hazır veri katmanı yapısı
-Kolay Strored Procedure çağırma
-Hızlı sonuç almak
-Microsoft SQLServer ilişkili özel nesneler.
CACHING APPLICATION BLOCK
-Uygulamamızın ön bellek yönetimini kontrol etmemizi sağlar. Önbelleği fazla kullanan projelerde büyük performans kazançları sağlayabiliriz.
CRYPTOGRAPHY APPLICATION BLOCK
-Şifreleme işlemlerini yapmamızı sağlar. Hash ve simetrik şifre üretip çözme de ilgili katmandır
EXCEPTION HANDLING APPLICATION BLOCK
-Hata yönetimi yapılandırmasını etkin ve verimli kullanmamızı sağlar.
LOGGING APPLICATION BLOCK
-Standart loglama işlemlerinin yapıldığı katmandır.
SECURITY APPLICATION BLOCK
-Uygulamamızda kullanıcıları yetkilendirme, sınırlama,veri güvenliği gibi işlerin yapıldıgı classlar bulunur
VALİDATİON APPLİCATION BLOCK
Veri Doğrulama işlemlerinin yapıldığı kısımdır.
POLICY INJECTION APPLICATIoN BLOCK
Birlik inşa kesme mekanizması ile güçlendirilen bu uygulama bloğu, istisna işleme, önbelleğe alma, kayıt ve doğrulama, bir sistem genelinde gibi ortak özellikleri, uygulanması düzene durdurma politikaları uygulamak için kullanılabilir.
UNITY APPLICATION BLOCK
Bizim Uygulama config üzerinde (web ise web.config, windows ise app.config) tanımladığımız arayüzlerin ve o arayüzlere karşılık gelen sınıfların çalışma anında bir kutuya yüklenmesini ve daha sonra ihtiyaç halinde ilgili arayüz için yüklenen sınıfın istenen kişiye verilmesini sağlar. Yani yazılımcı ya da müşteri, uygulamanın konfigurasyon dosyasına sizin belirlediğiniz arayüzünüze karşılık gelecek olan sınıfın tanımını yapıyor ve buna göre o arayüz çağrıldığında size o arayüz için kullanıcının tanımladığı sınıfın örneğini yaratıp verebiliyor.
Enterprise Lıbrary'i indirmek için tıklayın
Devamı
Türkçe'den SQL e Çeviri (NALAN-TS)
17 Ocak 2011 Pazartesi
Türkçe'den SQL e çeviri yapan bir program, bir yapay zeka düşünün. Bir alışveriş sitesinde "fiyatı 1800$ dan az olan laptopları getir" diye arama yaptığınızda istediğiniz ürünlerin geldiğini düşünün. Çok güzel olurdu değilmi
.
Türkçe’ den SQL Sorgularına Çeviri Yapan Bir Doğal Dil İşleme Uygulaması (NALAN-TS).
Kullanılan Dil:Prolog
Veritabanı: Oracle
"NALAN-TS cümle çözümleyici, anlam yaratıcısı, anlam çözümleyicisi, sorgu yaratıcısı ve sorgu çalıştırıcısı bileşenlerinin bir araya getirilmesiyle oluşmuştur. NALAN-TS Türkçe ve veritabanı özlüklerini içeren sözlük tabanlı bir uygulamadır. NALAN-TS veritabanı sözlüğünü kullanarak tabloların ve sütunların neleri temsil ettiğini inceler."
Proje hakkında detaylı bilgi : http://turkoloji.cu.edu.tr/DILBILIM/ddi.pdf
Geliştirlen bir proje ileriki zamanlarda buna imkan sağlıyacak gibi görüniyor. Prolog dili ile kodlanan yapay zeka uygulamasının ayrıntılarına aşağıdaki linkten ulaşabilirsiniz.
turkoloji.cu.edu.tr/DILBILIM/ddi.pdf
Devamı
Gerçek hackerlar ve Topu geçirenler
13 Ocak 2011 Perşembe
Uzun zamandir takip etmedigim gezegen pardus adresine girdim ve Faik Uygur Adli bir arkadasimizin blog yazisi dikkatimi cekti. Blog Basligi " Gerçek hackerlar ve Topu geçirenler " idi. Fakat yazida sadece final kisminda bahsedilmis olsada anlatilanin programlamaya baslayanlar icin oldugunu anladim. Ve benim gibi programlamaya yeni baslamis veya baslayacak olan acemi programcilarin okumasini istedigim icin burada yayinliyorum. Biraz uzun olabilir ama okumadan emek harcamadanda hicbirsey olmaz..
********************************************************************
Bir şeyi gözümde büyütmekten ve ya abartmaktan hoşlanmıyorum. Ama iş hayatımda, mesleki becerilerimde ve hatta bir çok alanda farklı bakış açıları kazanmamda özgür yazılımın büyük etkisi olmuştur. Çünkü dolaylı yoldan onu oluşturan harika topluluğu keşfetmemi sağlamıştır. Gerçek hackerları…
Hacker sözcüğünün toplum genelinde özünden alakasız ve yanlış çağrışımlar yapıyor olması ne kadar üzücü. Oysa tam tersi, kelime manası itibariyle yaratıcı düşünme kabiliyeti olan, pratik düşünce ve kıvrak zekaya sahip; bir şeyleri kıran, bozan değil üreten insanlardır kendileri. Interneti yapan, C (ve ya bir başka) programlama dilini yazan, ilk grafik tabanlı interaktif kişisel bilgisayarı garajlarında geliştiren (ki kendisi yıllarca malzeme için parası yetmediğinden kağıt üzerinde tasarım yapmıştır), Unix’i, Linux’u geliştiren ve daha bir çok bugün farkında olmadan kullandığımız teknolojilerin arkasındaki insanlardır, gerçek kahramanlardır, sanatçılardır. Onlar aykırıdır, farklıdır, meraklıdır, kurcalayandır, sorgulayandır.
Tüm bu kavram karmaşasının temellerini, bilgiye ulaşmasını beceremeyen, kavrayamayan, yorumlayamayan, karşısındakini de aptal zanneden, cahil ve tembel bir takım gazete ve medya mensupları atmışlar zamanında. Ve onların hataları da, yeni nesillerin, gözlerinin önündeki bir perdede oynayan sahte dünyanın arkasındaki gerçek dünyayı keşfetmelerine, ulaşmalarına halen engel olmaya ve onları yanlış yönlendirmeye devam ediyor.
Devamı
1 2 (Toplam 14 yazi bulunmaktadır)