SOLID Prensipleri

solid

Günümüzde birçoğumuz C#, Java gibi nesne yönelimli programlama dilleri kullanıyoruz. Peki kullandığımız dillerin gücünden ne kadar faydalanabiliyoruz? Geliştirdiğimiz uygulamalar, zaman içerisinde değişebilecek ihtiyaçlara ne kadar güçlü karşılık verebiliyor? Eğer object oriented programlama yapıyor isek, dünya üzerinde standart kabul edilen 5 temel prensibi bilmemiz gerekiyor.

1. (S)ingle Responsibility Principle

2. (O)pen/Closed Principle

3. (L)iskov ‘s Substitution Principle

4. (I)nterface Segregation Principle

5. (D)ependency Inversion Principle

Solid’e ek olarak Kiss, Yangi, Dry, Reuse Release Equivalence, Common Closure prensipleri de bulunmaktadır.

Şimdi kısaca bu prensiplerin neler olduğundan bahsedelim: Continue reading SOLID Prensipleri

Yapay Sinir Ağlarının Mimarisi ve Yapı Elemanları

ysa-1

Yapay Sinir Ağlarının Mimarisi ve Yapı Elemanları
Yapay sinir ağları biyolojik sinir ağlarının modellemesi olduğu için yapay sinir ağlarının çalışmasını anlayabilmek için öncelikle biyolojik sinir sisteminin yapısına bakmak gerekir. Biyolojik sinir sisteminin yapı taşı olan sinir hücreleri nöronlar, yapay sinir ağlarının da yapı taşıdır.

Biyolojik Sinir Hücresinin Yapısı
Biyolojik sinir sisteminin temel yapı taşı olan nöronların yapısı dört ana bölümden oluşmaktadır; dendrit, akson, çekirdek ve bağlantılar. Dendritlerin sinir hücresinin ucunda bulunan ve ağaç kökü görünümüne sahip bir yapıya sahiptir. Dendritlerin görevi bağlı olduğu diğer nöronlardan veya duyu organlarından gelen sinyalleri çekirdeğe iletmektir. Çekirdek dendrit tarafından gelen sinyalleri bir araya toplayarak ve aksona iletir. Toplanan bu sinyaller akson tarafından işlenerek nöronun diğer ucunda bulunan bağlantılara gönderilir. Bağlantılar ise yeni üretilen sinyalleri diğer nöronlara iletir. Continue reading Yapay Sinir Ağlarının Mimarisi ve Yapı Elemanları

Yapay Sinir Ağlarına Giriş

yapay-zeka

Yapay Sinir Ağlarının Tanımı

Yapay sinir ağları canlılarda bulunan sinir sisteminin çalışmasını elektronik ortama taşımayı hedefleyen bir programlama yaklaşımıdır. Yapay sinir ağlarının da canlılarda olduğu gibi öğrenme, hatırlama ve öğrendiklerini güncelleme gibi yeteneklerinin olması hedeflenmektedir.

Sinir sisteminin davranışlarını kopyalayabilmek için yapısının da kopyalanması gerektiğini düşünen bilim adamları yapay sinir ağlarını modellerken de sinir sisteminin yapısını örnek almışlardır. Continue reading Yapay Sinir Ağlarına Giriş

ElasticSearch’e Başlarken

Elasticsearch

Hayatımızın dijitalleşmesi ile birlikte , kontrol edilemez bir şekilde sürekli veri ürettiyoruz. Petabyte..exabyte’lar seviyesine ulaşan ve big data dediğimiz bu veri yığınları arasında kaybolmamak için elimizi güçlendirecek teknolojilere ihtiyaç duyuyoruz. Zuckerman’ın da belirttiği gibi “iyi bir arama motoruna sahip değilsek bu veri yığınları içinde kafa karışıklığı yaşamaya mahkum olacağız”. İşte tam da bu noktada bir teknoloji imdadımızı yetişiyor :)

ElasticSearch, Apache Lucene üzerine kurulmuş, Java ile geliştirilmiş açık kaynak (open source) kodlu bir full text (metin) arama motoru ve veri analiz aracıdır. Veri saklama biçimi ilişkisel değil documented oriented şeklindedir. Bu ürünü big data (büyük veri) kavramının geçtiği orta ve büyük ölçekli işletmelerde görebiliriz. Herbiri farklı kulanım senaryoları ile organizsayonlarına ES’yi, dahil etmiş, eğitimden sağlığa, finanstan, perakendeye pek çok şirket göze çarpmaktadır. Aşağıda ElasticSearch kullanan dünya devi firmalardan bazılarını görebilirsiniz. Continue reading ElasticSearch’e Başlarken

Makine Öğrenimine Giriş

makineogrenimi

Makine öğrenimi yapay zekanın olmazsa olmazıdır. Peki neden makine öğrenimi, neden makine öğrenimini anlamak istiyorsunuz, makine öğrenimi hayatınızı nasıl etkiliyor?

Bütün bu sorulara verilebilinecek cevap çok basit. Çünkü makine öğrenimi bugünün ve geleceğin en çok rağbet gören, en çok etkili olan konusudur. Makine öğrenimi zamanla daha çok gelişecektir. Biz farkına varsak da varmasak da o bizim hayatımızın bir parçası haline gelmiş durumda.

Makine öğrenimi konu ve konseptlerini yazının devamında dizi şeklinde anlatımlarını bulabacaksınız. Yazıda, yüksek seviye makine öğrenimi konsepti ve konunun mantığı üzerine bir giriş yapılmış olacak. Biliyorum! öğrenmek için çok heyecanlısınız öyleyse hiç beklemeden başlayalım. Continue reading Makine Öğrenimine Giriş

Geçmiş Hatalardan Dersler Çıkarmak : Nöral Ağlar

noral-aglar

Sinema tutkunu bir Y kuşağı mensubu iseniz anımsayacaksınızdır. Lion King, “hakuna matata” mottosuyla hafızalarımıza kazınmıştı çocukluk yıllarımızda. Svahili dilindeki kalıbın çevirisi her ne kadar endişeye mahal yok olsa da filmin Türkçe dublajlı versiyonunda “geçmişi unut, geleceğe bak” şeklinde çevrilmişti. Oysa ki filmde bilge babun Rafiki’nin çok daha anlamlı bir repliği daha bulunuyordu: “Geçmiş canını acıtabilir. Sende geçmişinden kaçabilir ya da ondan ders çıkartabilirsin“. Nöral ağlar da işte bu prensibe dayanır. Hata yap ve hatalarından ders çıkar. Continue reading Geçmiş Hatalardan Dersler Çıkarmak : Nöral Ağlar

Redis Nedir ?

redis

En basit haliyle Redis, key-value şeklinde tasarlanmış bir NoSQL veritabanıdır. Memcache gibi verileri HDD yazmadan Ram üzerinde tutmaya yarayan bir platformdur. Memcaheden farklı olarak NoSql mantığıyla çalıştığı için serverin kapansa dahi verilerin kaybolmasına izin vermez.

Peki böylebir yapıya neden ihtiyaç duyarız ?

Cevabı basit aslında sql yapıları CPU kullanarak işlem yaptığı için bizim gibi big datalarla çalıştığınızda CPU ya ciddi bir yük bindiriyorsunuz, redis gibi yapılar bu yükü azaltmaya yardımcı olmakla beraber hız konusunda ciddi performans artışları sağlıyor, üstelik XML, JSON vb yapılara ihtiyaç duymadan scriptler arası haberleşmeyede fırsat veriyor. Continue reading Redis Nedir ?

Hiç bilmeyenler için 7 soruda Yazılım Geliştirme

yazlim1

1. Yazılım yapmayı öğrenmek istiyorum ama hiçbirşey bilmiyorum. Nereden başlamalıyım?

Öncelikle özellikle kızlarda gördüğüm sorunu anlatarak başlayayım. Genellikle yazılım erkek işi olarak görüldüğü için, yazılım mühendisliği okusalar dahi kadın arkadaşlarda bir çekingenlik oluyor. Hatta mezun olan kadın arkadaşlar kodlamadan çekindikleri için yönetici, test uzmanı, analist gibi pozisyonlarda çalışıyorlar. Continue reading Hiç bilmeyenler için 7 soruda Yazılım Geliştirme

OOP ( Object-Oriented Programming ) Nesneye Dayalı Programlama nedir?

oop

Nesne tabanlı programlama namı diğer Object-Oriented Programmiing uygulama geliştirmede kullanılan bir teknolojidir. OOP nin sağladığı standartlarla bileşen (component) programlamasını kolaylaştırmaktadır.

OOP (Object-Oriented Programming) temelde üç prensibe dayanır:

Continue reading OOP ( Object-Oriented Programming ) Nesneye Dayalı Programlama nedir?