En üretken günlerimden biri, 1,000 satır kaynak kodu çöpe attığım gündü.

Ken Thompson

Bana Atılan E-Postaların Yanıtları

Sevgili Arkadaşlar...

Bu site aracılığıyla -bazıları sorulardan oluşan- pek çok e-posta alıyorum. Ancak yoğunluk nedeniyle bazılarına yanıt yazamadım.  Sakın unuttum sanmayın ve "adam bir yanıt bile yazmadı" diye düşünmeyin :-). Bundan sonra atacağınız e-postalara da daha kısa bir süre içinde yanıt vermeye çalışacağım. Gecikme için özür diliyorum...

 

Kitap Eleştirisi

Artık her hafta sitede bilgisayar alanında basılmış bir kitabın eleştirisini göreceksiniz. Umarım beğenirsiniz...

Haftanın Şarkısı

Adam And Eve
[Paul Anka]
45'lik - 1960

Birkaç kuşak üzerinde derin etkiler bırakan Paul Anka pop müziğin en tanıdık simalardan biri şüphesiz. 1960’ta 45’lik olarak piyasaya sürülmüş olan Adam And Eve şarkısı Adem ile Havva’nın bilinen hikayesini konu alıyor...

Seneler önce Ottawa’da yürürken Paul Anka caddesiyle karşılaşıncaya kadar ben onu hep Amerikalı sandım. 2006’daki İstanbul konserine gidemediğim için ise hala yanarım…


Eski Haftalar

Yeni İçerik

C#'taki Yapı ve Sınıf Nesneleri Nerede Yaratılıyor?

Pek çok C# programcısının sınıf ve yapı kavramlarıyla stack ve heap kavramlarını yanlış bir biçimde ilişkilendirdiğini görüyorum. Örneğin, “yapı nesneleri stack’te sınıf nesneleri heap’te tutulur” biçiminde yanlış anlaşılmaya yol açacak bilgiler veren yerli ve yabancı çok sayıda yazı ve makaleyle karşılaştım. Konuya biraz açıklık getirmek istiyorum.

UNIX/Linux Sistemlerinde Dosya Betimleyicilerinin Anlamı

    UNIX/Linux sistemlerinde her prosesin proses tablosu yoluyla erişilen bir dosya betimleyici tablosu (file descriptor table) vardır. Dosya betimleyici tablosu bir gösterici dizisi biçimindedir. Betimleyci tablo içersindeki her gösterici açılmış bir dosyanın bilgilerinin tutulduğu ve ismine dosya nesnesi (file object) denilen bir veri yapısını gösterir. open fonksiyonundan elde edilen dosya betimleyicisi (file descriptor) prosesin dosya betimleyici tablosunda bir indeks belirtmektedir.

UNIX/Linux ve Windows Sistemlerinde Proseslerin Çalışma Dizinleri

    Her prosesin bir çalışma dizini (current working directory) vardır. UNIX türevi sistemlerde prosesin çalışma dizini proses fork fonksiyonuyla yaratılırken üst prosesten alınır. exec işlemleri sırasında da yaratılmış olan prosesin çalışma dizini değişmez. Yani bu sistemlerde bir proses bir alt proses yarattığında yaratılan alt prosesin çalışma dizini üst prosesin çalışma dizini ile aynı olacaktır. Windows sistemlerinde de alt prosesin çalışma dizini onu yaratan proses tarafından CreateProcess API fonksiyonu çağrılırken belirlenir. Her iki grup işletim sisteminde de prosesin çalışma dizini daha sonra belirli sistem fonksiyonlarıyla değiştirilebilmektedir.

Portable Executable Dosya Formatında CLI Metadata Tablolarının Organizasyonu

    .NET, Mono ve Rotor gibi CLI (Common Language Infrastructure) standartlarına uygun ortamlardaki assembly dosyaları PE (Portable Executable) dosya formatını kullanmaktadır. PE dosya formatı Micosoft’un 32 ve 64 bit Windows sistemlerinde kullandığı genel amaçlı çalıştırılabilir (executable) bir formattır. Bu format tıpkı UNIX/Linux sistemlerinde kullanılan ELF (Executable and Linkable Format) gibi bölümlerden (sections) oluşur. Bölümlerin içerisinde programın yüklenmesi ve çalıştırılabilmesi için gerekli bilgiler vardır. 

Bilgisayar Bilimleri İçin İki Kategorizasyon Sistemi

    Bir nesne ya da olgunun bütün içerisindeki yerinin belirlenmesi ve diğer nesne ya da olgularla ilişkilerinin betimlenmesi sürecine kategorizasyon deniyor. Kategorizasyonun sentezlemeyi artırarak öğrenmeye katkıda bulunduğunu söyleyebiliriz. Sentezleme süreci de anlamsal bellek (semantic memory) içeriğindeki ilişkileri sağlamlaştırıyor olabilir.

Beatles sonrası en iyi albüm?

Band on the Run (Wings-1973)

Bilgisayar alanında günde kaç saat çalışıyorsunuz?

20 seneden fazla bir zamandır günde kemiksiz en az 7 saat (ilerleme amacıyla yapılan çalışmaları kastediyorum. Para kazanmak için yapılanları değil). Bunun yarısı teorik yarısı pratik çalışma...

Bugüne kadar sınıfta öğrencilerin sorduğu en ilginç soru nedir?

"Hocam, babanız ne iş yapıyor?.."

Burcunuz nedir?

Burçlara inanmam. Bence tam bir zırvalık. Toplumun burçlara yoğun ilgisi 80'li yıllarda başladı galiba.  İşte o zamanlarda bir gün Ortaköy'deki bir çay bahçesinde bir grupla oturmuş sohbet ediyorduk. Gruptan bir kız bana burcumu sordu. "Bilmiyorum" dedim. O da bu kez ne zaman doğduğumu sordu. Ben de söyleyince "aaa sen oğlaksııın" demesin mi? Tuhaftır,  tam olarak ne zamandı, kimler vardı hiç hatırlamıyorum. Ama o yüz ifadesini çok iyi hatırlıyorum.

C ismi B'den geliyor. Peki B ismi nereden geliyor?

Ben de eskiden Bell Lab'ın B'sinden ya da BCPL'in B'sinden geldiğini sanırdım. Fakat Ken Thompson bir röportajda karısı Bonnie'nin B'sinden geldiğini şaka yollu söylüyor. Nasıl, romantik değil mi?

C/C++'ta main neden anahtar sözcük değil?

Teknik olarak bir atomun anahtar sözcük olması için derleyicinin ona diğer değişken atomlardan farklı bir işlem uygulaması gerekir. Yani anahtar sözcükler parse işlemi sırasında diğer değişkenlerden (identifiers) ayrılmaktadır. Halbuki C ve C++'ta her ne kadar main fonksiyonunun diğer fonksiyonlardan farklı bir özelliği varsa da derleyici bu bu ismi gördüğünde buna diğer değişkenlerden farklı bir işlem uygulamamaktadır. main derleyici tarafından değil, bağlayıcı (linker) tarafından aranır. Ayrıca main anahtar sözcük olmadığı için bu isimde başka değişkenler bildirilebilir.

CSD İşletim Sistemi Çekirdeği ne zaman bitecek?

Bunu bilemem. Bundan sonra kaç kişinin görev alacağına ve bu işe ne kadar zaman ayıracağımıza bağlı. Fakat iki sene içerisinde biteceğini umuyorum.

Darbe olur mu?

Gereken bir düzine koşulun neredeyse hiçbiri tam olarak sağlanmadığından darbe marbe olmaz; güldürmeyin beni... Zaten en küçük bir risk olsa bazı çevreler bu kadar pervasızca hareket edebilir mi ? :-). Tabi yine de temkinli konuşmakta yarar var. Yeterli koşullar oluşursa bırakın Türkiye'yi Amerika'da, İngiltere'de ve hatta Fransa'da bile darbe olur :-).

Derleyici projesi ne zaman bitecek?

Şu anda kod optimizasyonu üzerinde çalışıyorum. Optimizasyonsuz beta versiyonunun Eylül 2009'da çıkacağını umuyorum.

Derleyici ve işletim sistemi gibi temel sistem programlarını yazmaya çalışmanın ne anlamı var? Bunların zaten yazılmışı yok mu, bunların bir bölümü zaten açık kaynaklı değil mi?

Olanı incelemek ya da değiştirmek hiçbir zaman sizi onları yazanların düzeyine getirmez. Bu kafayla da bir yere varılmaz. Zaten dediğiniz yazılımları yazanlar da sizin kafada olsalardı bu yazılımlar asla gerçekleştirilemezdi.Şunu unutmamak gerekir ki bu tür projeler gerçekleştirilirken pek çok kişi yetişmekte ve önemli deneyimsel kazanımlar elde edilmektedir. Belli aşamalardan geçmemiş olan bizim gibi ülkelerin bu kazanımları kestirmeden elde edebilmeleri mümkün değildir. Zaten teknolojiyi dışarıdan alarak onların önüne geçmiş olan bir ülke modeli de yoktur.

El bilgisayarları işe yarıyor mu?

Malesef hayır. Bazı ürünler vardır çok bir işe yarayacağını sanırsınız, fakat pek bir işe yaramazlar. El bilgisayarları da böyle işte.

En beğendiğiniz 45'lik?

She Loves You / I'll Get You (The Beatles-1963)

En beğendiğiniz köşe yazarı?

İlhan Selçuk.

En beğendiğiniz müzik grubu?

The Beatles.

En iyi IDE hangisidir?

En iyi olduğunu sandığınızdır. Bu konuda sizi ikna edemem.


Haftanın Böceği Yukarı