Yazılımbilim - 1. Bölüm

0
malkocoglu
Teorik yazılımbilim, günümüzdeki bilgisayarların soyut temelini oluştuyor. Bu alanda isimleri tanıdık gelen Turing, Church gibi kimseler olduğu gibi, diğer alanlardan bilim adamları mevcuttur, mesela Kurt Gödel. Tarihçesi belki de ünlü matematikçi Hilbert'in 1900 yılında bir beyan ettiği "açık problemler"'den 10'cusuna kadar giden yazılımbilim, bir problemin çözülebilirliğini ispat etmek için algoritmanın ne olduğundan başlayarak, bazı algoritmaların çözülemeyeceğini bulmak ile devam etti, ve nihai olarak günümuz donanımının altyapısını hazırlayarak önemli bir alan olarak kendini ispat etti.
Yazılımbilim'in alt bölümü olan hesapsal yük teorisi (computational complexity) altında algoritmaların üzerindeki yükü, ne kadar hızlı işleyeceklerini ölçmeye ve bu bağlamda onları kategorileştirmeye uğraşmaktadır.

Ekteki yazılar, hesapsal yük teorisine devam etmek üzere yapılan bir giriştir. İlk önce Turing makinalarını tanımla başlamıştık, fakat bunun sayılar kuramına girmeden yapılmayacağını farkettik, ve ekteki yazılar çıktı. NP-tam'lığa geleceğiz! Seyretmeye devam edin.

Hesapsal Yük Teorisi

Sonsuza Giden İkili Sayıların Kümesi

Sonsuzluklar Arasındaki Farklar

Durmayan Turing Makinalar? Var mıdır?

Görüşler

0
sametc
helal olsun super makaleler yazılmıs ve cevrilmiş:)
0
malkocoglu
tesekkurler!
0
FZ
Wilde mı yoksa Shaw mu demişti hatırlamıyorum, klasik eserler için şöyle bir laf vardı: Herkesin bildiği ama hiç kimsenin okumadığı kitaplar. :) Doğruluk payı yok değil ;-)

Bu güzel bilgisayar bilimleri ve matematik makaleleri için teşekkürler. Bazı kavramlar gerçekten zordur. Sonsuzluk türleri, yakınsaklık vs. gibi kavramlar başlangıçta basit gibi görünmekle birlikte insan beynini alışılmış kalıpların dışına çıkmaya zorladıkları için garip ruh hallerine yol açabilirler. Cantor ve Gödel gibi aşırı yoğun ve derinlemesine düşünüp, genç yaşta çok acayip eserler veren adamların hayatı incelendiğinde bu durum daha iyi anlaşılabilir.

Bu makaleler bana yazımın başındaki sözü hatırlattı. Yani matematik ve bilgisayar bölümü öğrencileri bunları öğrenirler sonra bunların %99´u gider (en azından Türkiye´deki durum böyle :) programcı olur, genellikle de web programcısı (ITU kitaplığında son birkaç yıl içinde gerçekleştirilen kütüphane kitap alım istatistiklerine göre, mühendislik öğrencileri kendi dersleri ile ilgili kitaplardan ziyade deliler gibi PHP, MySQL ve Apache kitabı almaktadırlar, insanların kafasında olan net düşünce görüldüğü gibi veritabanına bağlı, bir miktar kullanıcı güncelleme izni olan ve hemen hepsi öyle ya da böyle birbirine benzeyen binlerce web sitesi yapmaktır, evet insanlarımız gerçekten de yaratıcıdır :). Ve o beyinler acayip rutin olan kod yazma ve saç ağartan bir iş olan hata ayıklama sürecinde büyük bir değirmende öğütülen buğday taneleri gibi öğütülür. Binlerce sayfalık dokümantasyon sürekli okunur, parametreler ezberlenmeye, API çağrıları netleştirilmeye çalışılır. Artık kimsenin Turing´di, Gödel´di, Cantor´du, vs. düşünecek hali yoktur. Özellikle de banka ortamında yazılım geliştiriyorsanız sizden kafayı gömmenizi ve çek, senet, hesap, SQL, ORACLE, gene SQL, Java, sınıflar, binlerce sınıf, metod, özellik, gene SQL, hadi deadline geldi, aaa kodda hata çıkmış, bu nasıl programcı, evet daha çok çalışmalıyız, sistemler daha ucuza gelmeli, her zaman beklenenden daha çabuk bitirilmeli, evet yeni versiyon çıkmış yeni dokümantasyon beyne kazınmalı... Bu delirtici döngü böyle sürer gider.

Belki de Programlamanın Tao´sunda dendiği gibi ( http://www.fazlamesai.net/modules.php?name=News&file=article&sid=976 ) C ile çekirdek kodlayan programcıların işi bu bakımdan daha kolaydır :)

Neyse, ben susayım artık :)
0
malkocoglu
Vallahi bizim de doktora planlari olmasa herhalde bu konulara pek ilgimiz olmayacakti; uzun zamandir biz de bilgi islemde Java siniflari, SQL kodlari ile ugrasmaktayiz, herhalde bir sure de ugrasmaya devam edecegiz. Aslinda, bilgi islem sektorune sahsima ilk altin bilezigi sagladigi icin mutesekkirim. Proje idaresi, teknik liderlik, vs. konularinda cok sey ogrenmemize vesile oldu. Hatalar, dokumantasyon gibi cok hammaliyesi oldugu dogru ama! Aah su yazilim muhendisligi bir matematiksel tabana oturtulsa. Hangi tasarimin daha iyi olacagini karar vermek icin Mortal Kombat yapmaya gerek kalmamali. Sektor su anda agirlikli tecrube (heuristics) temelli gitmektedir. Bu yuzden tecubelerin paylasilmasi hayati onem tasiyor. Sizin de sitenizden, bizim de yapmaya calistigimiz bu zaten...


Görüş belirtmek için giriş yapın...

İlgili Yazılar

Yazılım Mühendisliğinde Çıkmaz Sokak Tarifleri: Anti-Patterns

FZ

Bilgisayar yazılımları geliştirmekle yıllardır uğraşılmakta. Son yarım yüzyılda ortaya çıkan bu alanda çeşitli paradigmalar (prosedürel, nesne tabanlı, fonksiyonel, vs) ve çeşitli modeller (code reuse, unit testing, component model, extreme programming, design patterns) ortaya atıldı. Daha çok "Özgür Yazılım'' ile birlikte dağıtık geliştirme yöntemleri gündeme geldi. Tasarım, uygulama ve test aşamalarını kapsayan geniş bir açıdan baktığımızda bize önerilen çeşitli "doğru'' geliştirme yöntemleri var.

Diğer her alanda olduğu gibi dengeli ve sağlıklı bir kavrayışa sahip olmak için doğruların yanında "yanlış'' yöntemler hakkında da bilgi sahibi olmak gereklidir. Bu konuda yaşanmış çok tecrübe olmakla birlikte, yazılı olarak birkaç kaynak dışında ciddi bir eksiklik bulunmaktaydı. Bu makale, ağırlıklı olarak yazılım mühendisliği ile ilgili birkaç Internet sitesinden derlenmiş, daha çok özgür yazılım alanını ilgilendiren bu tür çıkmaz yolları tanıtmaktadır. Ortak noktaları:

* Çoğu bir problemi çözmek isterken ortaya çıkar
* İlk bakışta harika bir fikir gibi gözükebilirler
* En çok tasarım aşamasında görülürler
* Sizden çok daha üretken ve başarılı grupları batırmışlardır!

Gürer Özen'in Anti-Patterns çevirisinin devamını burada okuyabilirsiniz.

Kargo Kültü Bilim

FZ

Meşhur fizikçi Richard Feynman'ın 1974 yılındaki önemli bir konuşmasının metnini FM camiası ile paylaşmak istedik. Önemli bir kılavuz olduğunu düşündüğümüz bu metnin okurken bir hayli eğleneceğinizi ve bir şeyler kapabileceğinizi düşündük.

e-Bergi Kasım 2008 Sayısı Çıktı!

anonim

e-bergi Kasim 2008 sayısıyla bu ay da sizlerle! Hala tıklamadınız mı?

Yeni Başlayanlar için Özgün Debian GNU/Linux Rehberi

FZ

Yeni başlayan ya da bilgilerini gözden geçirip tazelemek isteyenler için hazırlanmış, Türkçe Gayriresmî Debian Başlangıç Rehberi.

Emeği geçenlerin eline sağlık diyoruz.

Windows Üzerinde Kaynak Kod Versiyon Kontrol Sistemi ve CVSNT.

ae

Özellikle yazılım geliştirme dünyasında iseniz, yazdığınız kodların güvenilir bir şekilde saklanması, versiyonların takip edilmesi, kodun gelişimine katkıda bulunanların ve kodun kontrol altında tutulması ihtiyacınız doğmuştur. Windows ortamında kaynak kod güvenliğini ve versiyonlama takibini yapabilmek için bir kaç alternatifiniz bulunuyor. Özellikle MS ürünleri ile yazılım gerçekleştiriyor iseniz mutlaka karşınıza çıkmış olan Visual Source Safe, açık kod dünyasından RCS , SVN, CVS ve CVSNT Yabancı terimlerin Türkçeye çevrilmesindeki bazı güçlüklerden dolayı açıklamaların başında Türkçe manasını verip metin içinde orjinal kısaltmaları kullanmaya çalışacağım.