Teknolojik ilerleme, patolojik bir suçlunun elindeki balta gibidir.

Albert Einstein

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...

 

Lütfen Alıntılarda Kaynak Belirtiniz

Çeşitli Internet sitelerinde yazmış olduğum makalelerden, ders notlarından, çizimlerden, kaynak kodlardan vs. bire bir alıntı yapıldığını, ancak kaynak belirtlmediğini görüyorum. Lütfen bu gibi alıntlarda kaynak belirtiniz.

Kitap Eleştirisi

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

Tarihe Göre

Yeni İçerik

Proseslerin Kod, Data, BSS, Stack ve Heap Alanları

Prosesler işletim sistemlerinin sundukları sistem fonksiyonlarıyla yaratılırlar. Örneğin, Windows sistemlerindeki CreateProcess, UNIX/Linux sistemlerindeki fork proses yaratan fonksiyonlardır. Windows ve UNIX/Linux sistemlerindeki proses yaratımları arasında önemli bir fark vardır. Windows sistemlerindeki CreateProcess fonksiyonu çalıştırılabilen (executable) bir dosyadan hareketle prosesi oluşturur. (Yani yaratılacak proses yol ifadesini argüman olarak verdiğimiz programın kodlarını çalıştıracaktır.) Halbuki UNIX/Linux sistemlerindeki fork fonksiyonu prosesin özdeş bir kopyasını oluşturmaktadır. Bu sistemlerde başka bir programın kodları ancak exec türevi fonksiyonlarla çalıştırılabilir. Fakat programcı bu sistemlerde doğrudan exec fonksiyonunu kullanırsa çalışmakta olan mevcut programın bellek alanı değiştirilerek proses yaşamına başka bir kodla devam eder. Bu nedenle UNIX/Linux sisteminde hem mevcut programı sürdürmek hem de yeni bir programı çalıştırmak istiyorsak fork ve exec fonksiyonlarını beraber kullanmamız gerekir. Bu sağlamak için de, tipik olarak, önce bir kez fork yaparız, alt proseste exec uygularız. Windows sistemlerindeki CreateProces fonksiyonu UNIX/Linux sistemlerindeki fork ve exec fonksiyonlarının bileşimine benzetilebilir.

Portable Executable Dosya Formatı

Microsoft, DOS işletim sisteminde çalıştırılabilen dosya formatı olarak MZ formatını kullanıyordu.[1] MZ formatı koruma mekanizması olmayan 8086 mimarisi için tasarlanmıştı ve korumalı modun gereksinim duyduğu özelliklere sahip değildi.  Bu nedenle Microsoft 16 bit Windows sistemleriyle birlikte çalıştırılabilir dosya formatını NE (New Executable) ismiyle, 32 bit Windows sistemleriyle de PE (Portable Executable) ismiyle yenilemiştir. Bugün 32 bit ve 64 bit Windows sistemlerinde çalıştırılabilen dosya formatı olarak PE formatı kullanılmaktadır. PE formatı UNIX türevi sistemlerde kullanılan ELF (Executable and Linkable Format) formatı gibi, işlemciden bağımsız olan ve bölümlerden (sections) oluşan bir formattır. Microsoft .NET ortamıyla birlikte PE formatı üzerinde bu ortamın gereksinimlerinin karşılanması için çeşitli eklentiler de yapmıştır. PE formatının orijinali 32 bittir. Fakat daha sonraları 64 bit sistemler için bu formatın 64 bit versiyonu da oluşturulmuştur. PE formatının 64 bitlik bu versiyonuna PE+ da denilmektedir.

Dinamik Diziler (Veri Yapıları 2. Bölüm)

Programlama dillerinin çoğunda diziler bir kere yaratıldıktan sonra artık büyütülemezler ve küçültülemezler. Oysa bazı durumlarda açacağımız dizinin uzunluğunu işin başında bilemeyiz. Programın çalışma zamanı sırasında onların dinamik bir biçimde büyütülmesini ya da küçültülmesini isteyebiliriz. Programın çalışma zamanı sırasında büyütülebilen ya da küçültülebilen dizilere dinamik diziler (dynamic arrays) denilmektedir.[1]  Dinamik diziler C, C++, Java ve C# gibi dillerde temel bir veri yapısı değildir. Yani bu dillerde dinamik diziler dilin sentaksı tarafından doğrudan desteklenmezler. Bunların fonksiyonlar ya da sınıflar kullanılarak gerçekleştirilmeleri gerekir. Ancak Perl ve Ruby gibi dinamik dizilerin dilin sentaksı tarafından temel bir veri türü olarak desteklendiği diller de vardır.

Önbellek (Cache) Sistemleri

Bilgisayar sistemlerinde pek çok durumda erişim hızı bakımından iki tür belleğin söz konusu olduğunu söyleyebiliriz: Yavaş bellek ve hızlı bellek. Yavaş bellek ucuz ve boldur, hızlı bellek ise pahalı ve kıttır. Tabi buradaki yavaş ve hızlı kavramları görelidir.  Sistemden sisteme yavaş ve hızlı bellekler farklılaşabilir. Örneğin bir sistemde RAM hızlı belleği temsil ederken disk yavaş belleği temsil ediyor olabilir. Başka bir sistemde ise RAM yavaş belleği temsil ederken işlemci içerisinde bulunan bellek hızlı belleği temsil ediyor olabilir. Ya da bir web sayfasının sunucuda saklandığı yer yavaş belleği temsil ederken onun istemcide bir dosyada saklanmış hali yavaş belleği temsil ediyor olabilir. Önbellek (cache) yavaş belleğin belli bölümlerinin hızlı bellekte tutularak yavaş belleğe erişim oranını azaltmak için kullanılan bir bellek yönetim tekniğidir. Önbellek sistemleri donanımsal ya da yazılımsal bir biçimde ya da karma bir biçimde gerçekleştirilebilmektedir.

UNIX/Linux Sistemlerinde Boru Haberleşmeleri

Boru haberleşmeleri yalınlığından dolayı en çok tercih edilen prosesler arası haberleşme yöntemlerindendir. Yöntem kendi içerisinde eşzamanlılığı da barındırdığından programcının ayrıca eşzamanlılık sorunuyla uğraşmasına gerek kalmaz. Boru haberleşmeleri ilk UNIX sistemlerinden beri neredeyse tüm UNIX türevi sistemlerce desteklenmiştir. Yöntem başta Windows olmak üzere pek çok işletim sisteminde de benzer biçimde uygulanmaktadır.

Temel Veri Yapıları (Veri Yapıları 1. Bölüm)

Programlarımızda tanımladığımız nesneler ya tek parçadan ya da birden fazla parçadan oluşurlar. Tek parçadan oluşan nesnelerin türlerine tekil türler, birden fazla parçadan oluşan nesnelerin türlerine ise bileşik türler denilmektedir. Örneğin, int türü tekil bir türdür. Çünkü int türden bir nesne tek parçadan oluşmaktadır. Halbuki diziler bileşik türlerdir. Bir dizi türünden nesne tanımladığımızda o nesne kendi içerisinde birden fazla parçadan oluşmaktadır. Örneğin:

C'de Bağlanım (Linkage) Nedir, Ne Değildir?

C'de kullanılan her değişken (identifier) için bir bildirimin yapılmış olması gerekir. Bağlanım (linkage) farklı bildirimlerdeki aynı isimli değişkenlerin aynı nesneyi ya da fonksiyonu belirtip belirtmediğini anlatan bir özelliktir. C'de değişkenlere ilişkin üç  bağlanım durumu söz konusudur:

Temmuz
03
2009

Michael Jackson’ın Ardından...

    Gecenin bir yarısı üzerinde çalıştığınız programı tam da derleyip çalıştıracakken telefonunuz çalsa ne yapardınız? Derlemenin sonucunu mu beklerdiniz, yoksa bir donanım kesmesi oluşmuşçasına telefona mı koşardınız? İşte geçen gün ben derlemenin sonucunu beklemeyi tercih ettiğim için çalan telefona yetişemedim. Fakat sonra içimi bir endişe kapladı. Yoksa gecenin bu saatinde kötü bir haberin iletilmesi için mi aranmıştım?..
    
    Tıraş olma zamanımın gelmiş olduğunu düşündüğümden, o sabah kalktıktan sonra hemen berberin yolunu tuttum. Ilımlı İslamcı, milliyetçi ve daha birkaç şeyin karışımı olan bir berberim var. Tıraş sırasında hep bir yandan da tartışırız.  Hani bir gün elindeki usturayı yanlışlıkla (!)  boğazıma kaydırırsa şaşırmayın. İşte berberim bu tartışmalı tıraş sırasında -herhalde lafı ahirete getirmek için olsa gerek- ansızın “abi bak Michael Jackson da öldü işte” demesin mi? Önce şaka yaptığını sandım. Çünkü berbere giderken arabada radyo dinliyordum ve “eğer Michael Jackson ölmüş olsaydı herhalde duyardım” diye düşündüm. O Michael Jackson ki, Elvis Presley ve Beatles’tan sonra zaman içerisinde kalıcı olacağına bizi inandıran tek kişiydi...
 
     Berberden çıktım. Michael Jackson ölmüş müydü gerçekten? Arabaya atladım. Ve nihayet radyodaki haberlerden Jackson’ın gerçekten ölmüş olduğunu anladım. Elvis gibi kalpten gitmiş adam...

    Görülen o ki, Jackson ailesi tam bir müzisyen üretim atölyesiymiş. Jackson kardeşlerden oluşan Jackson 5 bir tıfıl grubu olmasına karşın 70’li yıllarda önemli başarılar elde etti. Ben onların birkaç parçasını daha o yıllarda dinlemiştim. 80’li yıllarda Michael’ın çıkış yaptığı sıralarda bu adamın hangi Jackson olduğunu tam olarak çıkaramasam da bütün dikkatlerin yavaş yavaş onun üzerinde yoğunlaşmakta olduğunu şaşkınlıkla izledim. Artık o bir mega star olarak anılmaya başlamıştı. Thriller albümü tüm dünyada olduğu gibi Türkiye’de de ortalığı kasıp kavurdu. Açık söylemek gerekirse tüm eklemlerine kadar her yeri oynayan bu adamın dansı da müziği de benim tarzım değildi. Hem zaten ben Beatles aşkı ile doluydum ve John da daha yeni öldürülmüştü. Kimdi ki bu milyonlarca plak satan çömez? Ancak adamın yeteneği de görmemezlikten gelinemezdi... Perde aralığı dar olan yavaş şarkıları söylemek zor değildir. Fakat bu adam inişli çıkışlı parçaları hızlı bir tempoda hiç frekans kaydırmadan olağanüstü bir biçimde söylüyordu. Hatırlayanlarınız olacaktır; 70’lerin ortalarından sonra tüm dünyada başlayan dans furyası 80 darbesinden sonra Türkiye’yi de etkisi altına aldı. Michael’ın patlama dönemi disko müziğinin de yükseldiği bu yıllara denk geliyor. O artık popun kralı olmuştu...Şöyle bir baktığımda Michael'ın Beat It klibinin bu zamana kadar yapılmış en iyi müzik klibi olduğunu görüyorum. Harlem serserileri, çakıdan bozma itler, sustalı birileri... şiddet, müzik ve dans... Bu klipte Michael formunun zirvesindedir. 

    Michael Jackson’ın bir gün Paul McCartney’e telefon ederek “Paul yeni hitler yaratmaya var mısın?” dediği rivayet olunur. Her daim zirveye yakın bir yerde bulunmak isteyen Paul bu yeni yetmenin davetini kabul ediyor. İşte Girl Is Mine, Say Say Say bu işbirliğinin sonucu olarak ortaya çıkmış şarkılar...    

     Bağımlılığın en önemli göstergelerinden biri tolerans geliştirmedir. Bağımlılık yaratan maddeye organizma uyum sağlar ve artık onsuz yapamaz hale gelir. Önceki alınan miktar aynı etkiyi sağlamak için bir süre sonra yetersiz kalır. Böylece doz artırımına gidilir. Bazen artırım dikkatsizce yapılır. Halk arasında altın vuruş diye bilinen vakaların çoğu böyle gerçekleşmektedir. İşte iddia ediyorum ki şöhret de tıpkı sigara gibi, alkol gibi, eroin gibi bağımlılık yapan bir olgudur. Şöhrete ve onun getirdiklerine alışmış starlar artık onsuz yapamaz hale gelirler. Sıradan insana dönmek korkusu onları yer bitirir. Bizler gibi sıradan insanlar onların çektikleri bu acıları anlayamayız (!). Yaşları ilerledikçe bir miktar çaptan da düşen starların bu acıklı durumları pek çok biyografide ayrıntılarıyla ele alınmaktadır. Üstelik bunların çoğunun etrafında yalakaları ve yiyicileri de vardır. İşten anlamayan bu starlar yanlış yatırımlara da kolaylıkla yönlendirilebilirler. Zencilerdeki gidiş daha da kötü olma eğilimindedir. Kim ne derse desin istatistikler -renkleri açılmış olsa bile- zencilerin batma olasıklıklarının beyazlardan daha yüksek olduğunu göstermektedir. (Örneğin, Rock and Roll’un kurucularından olan, O herkesin örnek aldığı Chuck Berry 80’inin üzerinde para kazanmak için hala orada burada sahne almaktadır.) İnanıyorum ki böyle bir süreç, kendine yeteri kadar bakmayan starların damarlarını tıkayan, kalp ritimlerini bozan etkenlerden bir bölümünü de oluşturmaktadır... 
        
    O gün öğlene doğru İzzet aradı ve bir süre Michael Jackson’ın ölümü üzerine konuştuk. “Ben dün gece öğrendim. Sana haber vermek için aradım. Ama açmayınca uyuyorsundur diye üstelemedim” dedi. Demek endişelenmekte haklıymışım...

    Michael Jackson farklı biriydi. Ölerek aynı zamanda ölümsüzlüğe de adım atmış oldu. O düzgün sesiyle, müzikal zekasıyla ve kıvrak danslarıyla aklımızın bir köşesinde, kaybettiğimiz diğer insanlarla birlikte hep kalacak. Tüm sevenlerinin başı sağolsun...

 

Haftanın Böceği Yukarı