A* için yeni bağlantılar

Daha önce A* Java gerçekleştirimiyle ilgili bir bağlantı paylaşmıştım. Bugün ise A* yol bulma temellerini ve kodta nasıl kullanıldığını gösteren iki bağlantı paylaşıyorum. Ayrıca bu bağlantıların olduğu sitede, konuyla ilgili (A* ile ilgili) başka yazılar da var.

Sürüm kontrol sistemlerinin tarihçesi

Sürüm kontrolünün tarihini anlatan yazıda bulduğum aşağıdaki resim, sürüm kontrol sistemlerinin gelişimini özetliyor.

ProjectEuler.net

Yazılımseverlere; az biraz farklı kod yazayım dediğiniz zamanlar oluyorsa, projecteuler.net sitesini tavsiye ediyorum.

Çeşitlik zorluk derecesinde 300 den fazla soru içeren sitede matematik ile yazılımı birleştirip çözümler üreterek keyifli vakit geçirebilirsiniz.

Birinci, İkinci ve Üçüncü Dünya

Çokça duyduğumuz "Üçüncü dünya ülkeleri" sözü nerden çıkmış? Üçüncü dünya ülkesi denildiğinde, dünyadaki fakir ülkelerden söz ediliyormuş gibi bir algı oluşuyor; o halde birinci ve ikinci dünya ülkeleri de kim oluyor?

Aslında soğuk savaş döneminden kalma bu ayrım ülkelerin politik duruşları sonucu oluşmuş.

Birinci Dünya: Amerika eksenli Demokratik-Sanayileşmiş ülkeler
İkinci Dünya: Komünist-Sosyalist doğu bloğu ülkeleri
Üçüncü Dünya: Bu iki kutupta yer almayan ülkeler

Bunların yanında birde 1970 lerde ortaya alıtmış olan Dördüncü dünya ülkeleri var ki bunlar da yeteri kadar tanınmayan yerli halklar veya kültürel topluluklar olarak tanımlanıyor.




Kaynak: http://www.nationsonline.org/oneworld/third_world_countries.htm

Bilimsel Araştırma için Python - 10 Neden

Python'un önemli bir özelliği bir çok alanda rahatlıkla kullanılıyor olmasıdır. Python; GNU/Linux işletim sistemlerinde sistem ve betik kodlamada kullanıldığı gibi Matlab'ın yerine bilimsel araştırmalarda, deneylerde de kullanılabilen geniş bir uygulama alanı yelpazesine sahiptir.

Yeni gördüğüm bir yazıda, Python deneyimini bilimsel araştırmada 10 neden şeklinde yazıldığını görünce, bir Python "avukatı" olarak (belirteyim ki Oracle'ın Sun'ı satın alması, Google'a karşı Oracle hamleleri beni Java yerine alternatif olarak Python'u daha sık düşünmeye itiyor) yazıyı paylaşmam farz oldu. Yazıda aşağıda özetle verdiğim başlıkların ayrıntısına ulaşabilirsiniz.

1. Özgürlük: Python özgür yazılımdır. Açık kaynak koda sahiptir (özgür yazılım olmanın gereği). Windows, GNU/Linux, Mac OS vb. işletim sistemlerinde rahatça çalıştırılabilir.
2. Okunabilirlik: Python kodları yapısı gereği oldukça rahat okunabilen kodlardır. Söz dizimi tasarlanırken okunabilirlik ana amaçlardan biri olarak düşünülmüştür.
3. Belgelendirme sistemi: epydoc gibi araçlar ve doc string'ler sayesinde kodunuzu yazarken bir taraftan o kodun belgelendirmesi de yapılabilir.
4. Yüksek seviye - düşük seviye: Python'da yüksek seviyeli programlama ile düşük seviye programlama arasında bir denge kurulabilir. Farklı makine kodu üreten araçların yardımıyla neredeyse C kodu kadar hızlı çalışan Python kodu yazmak mümkün.
5. Standart kütüphane: Düzinelerce modül içeren oldukça kapsamlı standart kütüphanesi size gereken neredeyse çoğu şeyi sunmaktadır. Python'un bu konudaki felsefesi "piller dahildir" şeklindedir.
6. Bilimsel çalışma için üçüncü parti açık kaynak kütüphaneler: NumPy, SciPy (birlikte Matlab'ın çoğu işlevselliğini gerçekleştirirler), iPython (geliştirilmiş Python kabuğu - hata ayıklama, kod kesitlendirme vb. şeyleri sağlıyor), Cython - kütüphanelerle ilgili ayrıntılı bilgi için bağlantıyı ziyaret edebilirsiniz.
7. Veri yapıları: Python listeleri, tupleları, kümeleri, sözlükleri, karakter dizilerini, iş parçacığı güvenli kuyrukları, ve bir çok veri tipini destekliyor. NumPy ve SciPy'nin eklenmesiyle n-boyutlu dizi nesnesi (Matlab'ın matrislerinden daha fazla işlevselliğe sahip) desteği de kazandırılabiliyor.
8. Modül sistemi: Python kullandığı modüler programlama sayesinde kodun hiyerarşik bir yapıya kavuşmasını sağlıyor ve kodun tekrar kullanımı da artmış oluyor.
9. Proje ölçeklenebilirliği: Python hem küçük betikler hem de oldukça büyük projeler üretilmesine olanak sağlıyor. Pythonla 20 satırlık bir kod yazabileceğiniz gibi bir çok modülden oluşan ve bir çok modülü kullanan bir büyük proje de yazabilirsiniz.
10. Farklı paradigmaları destekleme: Python fonksiyonel, prosedürel, ve nesne yönelimli programlama paradigmaları arasında rahatlıkla geçiş yapmanızı sağlar.

Kaynak: http://www.stat.washington.edu/~hoytak/blog/whypython.html
Python öğrenmeye başlamak için: http://yzgrafik.ege.edu.tr/~tekrei/dersler/bbgd_p/