Bakteriler Genlerini Neden “Aileden” Değil Komşudan Alıyor?

Evrimi çoğu zaman bir soy ağacı gibi düşünürüz: Ebeveynler genlerini yavrularına aktarır, küçük farklılıklar kuşaklar boyunca birikir ve türler zamanla değişir. Bu hikâye, bitkilerden hayvanlara kadar büyük ölçüde işe yarar. Fakat bakteriler sahneye çıktığında soy ağacının dalları birbirine uzanır, düğümlenir ve adeta kablo karmaşasına dönüşür. Çünkü bakteriler yalnızca atalarından gen miras almaz; çevrelerindeki başka bakterilerden de doğrudan gen edinebilir. Bunun adı yatay gen aktarımıdır.

Genetik paylaşım ekonomisi

Dikey gen aktarımı, genlerin ebeveynden yavruya geçmesidir. Yatay gen aktarımı ise aynı kuşaktan, hatta bazen uzak akraba türlerden hücreler arasında DNA taşınmasıdır. Bunu, bir öğrencinin yalnızca ailesinden öğrenmesi yerine, okul koridorunda karşılaştığı herkesten aniden yeni beceriler indirmesi gibi düşünebilirsiniz. Bir bakterinin başka bir bakteriden aldığı DNA parçası, ona yeni bir besini kullanma, zehirli bir ortamda hayatta kalma ya da antibiyotiğe direnme yeteneği verebilir.

Bu transferin üç ünlü yolu vardır. Transformasyon, bakterinin çevrede serbest duran DNA parçalarını almasıdır; ölmüş bir hücrenin geride bıraktığı genetik notları okumak gibidir. Transdüksiyon, bakterileri enfekte eden bakteriyofaj adlı virüslerin yanlışlıkla bir bakteriden aldıkları DNA’yı diğerine taşımasıdır. Virüs burada istemeden genetik kurye olur. Konjugasyon ise iki bakterinin fiziksel olarak bağlanıp DNA, çoğu kez plazmid denen küçük halkasal DNA parçalarını, doğrudan aktarmasıdır. Mikroskobik ölçekte gerçekleşen bu süreç, şaşırtıcı derecede etkili bir veri paylaşımıdır.

Antibiyotik savaşında görünmez ağ

Yatay gen aktarımının en çarpıcı sonucu antibiyotik direncidir. Bir antibiyotik, hassas bakterilerin çoğunu öldürdüğünde direnç geni taşıyan birkaç hücre hayatta kalabilir. Ancak mesele yalnızca onların çoğalması değildir. Bu bakteriler direnç genlerini komşularına aktarabilir. Böylece bir hastanede, çiftlikte ya da atık sularda bulunan mikrobiyal topluluk, savunma bilgisini hızla paylaşan bir ağ hâline gelir. Bir bakterinin “icat ettiği” çözüm, diğerlerinin de kısa sürede kullanabildiği ortak bir araca dönüşür.

Bu nedenle antibiyotik direnci, tek tek mikropların cesaret hikâyesi değil; ekolojik ve genetik bir ağ problemidir. Gereksiz antibiyotik kullanımı yalnızca belirli bakterileri seçmez, aynı zamanda direnç genlerinin dolaşımını destekleyen koşulları da güçlendirir. Akılcı antibiyotik kullanımı, enfeksiyon kontrolü, temiz su sistemleri ve hayvancılıkta dikkatli ilaç politikaları bu yüzden birbirinden kopuk başlıklar değildir.

“Tür” fikrini zorlayan evrim

Yatay gen aktarımı, bakterilerde tür kavramını da karmaşıklaştırır. Bir bakterinin genomu sadece uzun bir aile tarihinin kaydı değildir; aynı zamanda yaşadığı çevrede karşılaştığı organizmaların bıraktığı izlerden oluşan bir kolajdır. Bu, evrimin her zaman yavaş, çizgisel ve yalnız ilerleyen bir süreç olmadığını gösterir. Bazen evrim, yeni bir mutasyonun sabırla beklenmesi değil, işe yarayan bir genetik parçanın doğru zamanda kapıdan içeri girmesidir.

Elbette bakteriler her DNA parçasını körü körüne kabul etmez. Hücre zarları, savunma sistemleri ve DNA’yı kesen enzimler birçok yabancı diziyi engeller. Ayrıca alınan genin faydalı olması, hücrenin içinde çalışabilmesi ve enerji maliyetine değmesi gerekir. Yine de seçilim baskısı yüksek olduğunda, örneğin antibiyotik varlığında, küçük bir genetik avantaj büyük bir fark yaratabilir.

Yatay gen aktarımı bize yaşamın yalnızca rekabetten ibaret olmadığını hatırlatır. Mikroplar rekabet eder, ama aynı zamanda bilgi sızdırır, taşır ve yeniden kullanır. Bu görünmez gen alışverişi, doğanın en eski ağlarından biridir: İnternetten milyarlarca yıl önce kurulmuş, şifresiz olmayan ama son derece hızlı bir paylaşım sistemi.

Zaman Neden Geri Sarmaz? Entropinin Sessiz Darbesi

Bir bardağı masadan düşürüp kırdığınızda, parçaların neşeyle zıplayıp tekrar bardak biçiminde birleştiğini hiç görmediniz. Yumurtanın tavada pişip sonra kabuğuna geri kaçtığına da rastlamadınız. Evrenin bize her gün fısıldadığı basit ama ürpertici bir gerçek var: Zamanın bir yönü var. Fizik yasalarının çoğu ileri ve geri çalışabilir görünse de, hayatımızdaki olaylar tek yönlü bir yürüyüşe benzer. İşte bu yürüyüşün görünmez trafik polisi entropidir.

Entropi çoğu zaman karmaşa diye anlatılır; bu doğruya yakın ama eksik bir tanımdır. Daha dikkatli söylersek entropi, bir sistemin kaç farklı mikroskobik düzenlenişle aynı makroskobik görünüme sahip olabileceğinin ölçüsüdür. Bir odanın toplu olması çok özel bir durumdur: kitapların rafta, çorapların çekmecede, kahve fincanının masada olması gerekir. Dağınık olması ise neredeyse sonsuz farklı biçimde mümkündür. Evren, özel durumları sevmediğinden değil, olasılıkların ezici çoğunluğu dağınıklık tarafında olduğundan oraya sürüklenir.

Zamanın oku nereden çıktı?

Newton denklemleri, hatta kuantum mekaniğinin temel denklemleri, çoğu durumda zamanı tersine çevirdiğinizde de çalışır. Bir bilardo masasındaki topların hareketini kameraya çekip geri sardığınızda, fizik açısından tamamen imkansız bir şey görmeyebilirsiniz. Fakat kahvenize damlattığınız sütün geri çekilip bembeyaz girdaptan tek damla hâline gelmesi akıl dışı görünür. Neden? Çünkü süt moleküllerinin kahveye karışması için sayısız yol vardır; ayrışması için ise inanılmaz ölçüde hassas, neredeyse mucizevi bir koordinasyon gerekir.

Bu yüzden zamanın oku, temel yasalardan çok başlangıç koşullarından doğar. Evren şaşırtıcı derecede düşük entropili bir başlangıçtan, yani olağanüstü düzenli bir durumdan yola çıkmış gibi görünür. Büyük Patlama sonrası evren sıcak ve yoğun olsa da, özellikle kütleçekim açısından düşük entropiliydi. Zamanla yıldızlar oluştu, galaksiler kümelendi, kara delikler belirdi. İlginçtir: Kütleçekim için maddeyi bir araya toplamak düzen değil, çoğu zaman entropi artışıdır.

Bilgi neden çürür?

Entropi yalnızca buzdolabındaki sebzelerin kaderi değildir; bilgi de zamanla yıpranır. Bir hard diskteki veriler, bir beyindeki anılar, bir toplumun arşivleri, hatta bir uygarlığın ortak hafızası sürekli bakım ister. Çünkü bilgi düzen demektir. Bir dosyanın anlamlı olması için bitlerin belirli bir sırada durması gerekir. Rastgele birkaç biti değiştirin; şiir bozulur, fotoğraf lekelenir, program çöker. Gürültü, hata, unutma ve bozunma bilgi evreninin küçük entropi ajanlarıdır.

Bu noktada teknolojiye hafifçe şapka çıkarabiliriz. Hata düzeltme kodları, yedekleme sistemleri, arşivleme protokolleri ve şifreleme yöntemleri entropiye karşı kurulmuş küçük kalelerdir. Fakat her kale enerji ister. Veriyi korumak için elektrik harcarız, sunucuları soğuturuz, insanları eğitiriz, kurumlar kurarız. Düzen bedava değildir. Bir kitaplığı düzenlemek bile kalori yakar; bir veri merkezini düzenli tutmak ise şehir ölçeğinde enerji tüketebilir.

Termodinamiğin ikinci yasası bize şunu söyler: Kapalı bir sistemde entropi azalmaz, genellikle artar. Ama canlılık, kültür ve teknoloji kapalı sistemler gibi davranmaz. Bizler Güneş’ten enerji alır, bu enerjiyle bedenlerimizi onarır, evlerimizi toplar, dilleri yaşatır, düşünceleri kayda geçiririz. Yerel düzen yaratırız; fakat bunu yaparken çevremize daha fazla entropi yayarız. Bir insanın zihninde doğan berrak bir fikir bile evrenin muhasebe defterinde ısı, metabolizma ve atık olarak görünür.

Burada tuhaf bir güzellik var: Hayat, entropiye karşı savaşan değil, onun akışını kullanarak düzen kuran bir girdaptır. Bir nehirde oluşan burgaç gibi. Burgaç suyun akışını durdurmaz; aksine akış sayesinde var olur. İnsan bilinci de böyle olabilir: Evrenin dağılma eğilimi içinde kısa süreli, parlayan, kendini düzenleyen bir desen. Bu desen şiir yazar, denklem kurar, aynaya bakıp zamanın neden geçtiğini sorar.

Sonunda bardak kırılır, yıldızlar söner, dosyalar bozulur, anılar silikleşir. Ama bu karamsar bir masal değildir. Entropi bize her düzenin değerli olduğunu öğretir. Toplanmış bir oda, korunmuş bir arşiv, sevgiyle hatırlanan bir hikaye, doğru çalışan bir algoritma: Bunların hepsi olasılık denizine karşı açılmış küçük yelkenlerdir. Zaman geri sarmaz; fakat biz ileri giderken anlam inşa edebiliriz. Belki de insan olmak, kaçınılmaz karmaşanın içinde geçici ama parlak düzenler kurma sanatıdır.

En İyi Arayüz Neden Görünmez Olur?

Bir kapının kolunu düşünün. Onu nasıl kullanacağınızı anlamak için kullanım kılavuzu okumaz, eğitim videosu izlemez, ekranda parlayan bir ok beklemezsiniz. Eliniz doğal olarak uzanır, kolu çevirir ve geçersiniz. Kapı kolu, tam da bu yüzden iyi tasarlanmıştır: Varlığını bir nesne olarak değil, eyleminizin sessiz uzantısı olarak hissettirir. Dijital arayüzlerin büyük hayali de budur. Kullanıcıya kendini göstermeden iş görmek.

Bu ilk bakışta tasarımın görünmez olması gerektiği fikrini doğurur. Fakat mesele tasarımın gerçekten yok olması değildir. Kötü tasarım da çoğu zaman görünmezdir; ancak kullanıcı hata yaptığında, kaybolduğunda veya sinirlendiğinde bir anda ortaya çıkar. İyi tasarım ise görünmezliğini sürtünmeyi azaltarak kazanır. Kullanıcı bir banka uygulamasında para transferini tamamladığında, uygulamanın menü hiyerarşisini takdir etmez. Sadece parasını gönderdiğini düşünür. Başarı tam burada yaşanır: Araç, amaçmış gibi davranmayı bırakır.

Dikkatin ekonomisi ve sessiz başarı

Her arayüz kullanıcının dikkatinden pay ister. Bildirimler, renkler, butonlar, açılır pencereler ve küçük zafer konfeti animasyonları bu pay için yarışır. Fakat dikkat sınırsız bir kaynak değildir. Bir insan yemek siparişi verirken restoran uygulamasının görsel dehasını çözmek istemez; açlığını çözmek ister. Bir öğrenci ödev yüklerken dosya sisteminin karakter gelişimini izlemez; teslim tarihini kaçırmamayı ister. Bu nedenle iyi arayüz, dikkat çekmek yerine dikkati doğru yere yönlendirir.

Burada ince bir ayrım vardır: Görünmez arayüz, kişiliksiz arayüz demek değildir. Bir ürün sıcak, eğlenceli, hatta şaşırtıcı olabilir. Ancak bu nitelikler görevin önüne geçmemelidir. Bir yükleme ekranındaki küçük mizah, beklemeyi katlanılır kılabilir. Buna karşılık her tıklamada dans eden bir animasyon, kullanıcının zamanını rehin alır. Tasarımın estetik gücü, eylemi gölgelediğinde değil, eylemi anlaşılır ve güvenli kıldığında değer kazanır.

Sezgi denen şey aslında öğrenilmiş dünyadır

Tasarımcılar sıkça sezgisel deneyimden söz eder. Oysa sezgi gökten inmez; geçmiş deneyimlerin, kültürel alışkanlıkların ve fiziksel dünyanın birikimidir. Çöp kutusu simgesinin silmeyi çağrıştırması, gerçek dünyadaki çöp kutusuyla kurduğu metafordan gelir. Fakat bu metaforlar evrensel ve sonsuz değildir. Genç bir kullanıcı için disket simgesi, tarih öncesi bir fosil kadar yabancı olabilir. Bu yüzden görünmezlik, tanıdık semboller koymaktan ibaret değildir; kullanıcının bağlamını araştırmayı gerektirir.

Erişilebilirlik de bu görünmezliğin ahlaki boyutudur. Sadece fareyle kullanılabilen, düşük kontrastlı veya ekran okuyuculara kapalı bir arayüz, bazı kullanıcılar için hiç görünmez değildir; tam tersine aşılması gereken sert bir duvara dönüşür. İyi tasarımın sessizliği, ancak herkesin o sessizlikte ilerleyebilmesiyle anlamlıdır. Klavye ile gezinme, açık hata mesajları, anlaşılır dil ve yeterli kontrast, süs değil altyapıdır.

Sonuçta arayüz tasarımı, sahnedeki başrol oyunculuğu değil, iyi bir sahne düzenidir. Işık doğru açıdan gelir, dekor oyuncuyu engellemez, kapılar gerektiğinde açılır. Seyirci oyunun sonunda dekoru değil hikâyeyi hatırlar. Kullanıcı da görevini tamamladığında butonları, ikonları ve akış şemalarını değil, elde ettiği sonucu hatırlamalıdır. Tasarımın en zarif anı, kendini alkışlatmadığı; insanın niyetini neredeyse fark edilmeden dünyada bir etkiye dönüştürdüğü andır.

Bir Yıldız İşaretinden Daha Fazlası: Regex’in Gizli Dil Hiyerarşisi

Bir metinde e-posta adresi bulmak, log dosyasından hata kodu çekmek ya da bir form alanının yalnızca rakam kabul etmesini sağlamak için yazdığımız .*, +, ? ve köşeli parantezler ilk bakışta mütevazı araçlardır. Fakat bu semboller, bilgisayar biliminin en zarif fikirlerinden birine açılan kapıdır: Her desen aynı türden değildir; her dili aynı güçte bir makine tanıyamaz. Regex yazarken aslında, çoğu zaman fark etmeden, Chomsky Hiyerarşisi denen matematiksel bir karmaşıklık merdiveninde dolaşırız.

Desen aramak mı, dil tanımlamak mı?

Regex çoğu geliştiricinin zihninde bir “metin bulma aracı”dır. Oysa kuramsal açıdan düzenli ifade, bir dili tanımlar: Kabul edilecek tüm karakter dizilerinin kümesini. Örneğin ab*, önce bir a, ardından sıfır veya daha fazla b içeren dizileri tanımlar: a, ab, abbb gibi. Bu küçük ifade, sonsuz sayıda olası metni birkaç sembolle tarif eder. Gücü tam da buradadır: Sonlu bir tariften sonsuz bir davranış üretmek.

Chomsky Hiyerarşisi dilleri dört ana katmanda sınıflandırır. En altta düzenli diller vardır. Bunlar sonlu otomatlarla tanınabilir: Geçmiş hakkında sınırlı bilgi tutan, belirli durumlar arasında geçiş yapan küçük makineler. Bir e-posta alanında belirli karakterlerin geçip geçmediğini denetlemek veya bir log satırının biçimini sınıflandırmak gibi görevlerde bu model son derece etkilidir. Regex motorlarının hızlı olmasının temel nedeni de çoğu zaman budur: Sorunu sınırlı bellekle çözebilirler.

Parantezler dengelenince oyun değişir

Ancak bazı desenler, yalnızca sonlu sayıda durumla yakalanamaz. Klasik örnek dengeli parantezlerdir: (), (()) ve (()()) geçerli olsun; fakat ())( olmasın. Burada makinenin açılan her parantezi hatırlaması gerekir. Kaç tane açıldıysa, o kadar kapanış beklenir. Bu görev bir sayaçtan da fazlasını, yığın benzeri bir belleği gerektirir. İşte bu noktada bağlamdan bağımsız diller ve yığıtlı otomatlar sahneye çıkar.

Programlama dillerinin sözdizimi bu yüzden yalnızca “klasik regex” ile güvenilir biçimde çözülemez. İç içe fonksiyon çağrıları, bloklar, parantezler ve ifadeler, yapısal ilişki taşır. Bir derleyicinin ayrıştırıcısı sadece karakterleri sırayla görmez; onların hiyerarşik mimarisini kurar. Kod, düz bir metin değildir. İçinde başka yapılar taşıyan, katmanlı bir nesnedir.

Hiyerarşinin daha üstünde bağlama duyarlı diller ve teorik olarak Turing makinelerinin tanıyabildiği genel diller bulunur. Bu katmanlarda kurallar, çevredeki sembollere veya sınırsız hesaplama adımlarına bağlı olabilir. Pratik yazılım mühendisliğinde her problemi bu en güçlü seviyeye taşımak cazip görünse de bu çoğu zaman kötü bir fikirdir. Daha güçlü ifade gücü, daha zor analiz, daha yüksek maliyet ve daha fazla hata olasılığı demektir.

“Regex” sözcüğünün küçük tuzağı

Burada önemli bir ayrım vardır: Günlük hayatta regex dediğimiz araçların bazıları, kuramsal düzenli ifadelerden daha güçlü özellikler sunar. Geri başvurular, örneğin (\w+)\s+\1 ile aynı kelimenin tekrarını aramak, klasik düzenli dillerin sınırını aşabilir. Bazı motorlar özyinelemeli kalıplar veya koşullar da destekler. Yani bir programlama dilindeki “regex”, her zaman matematik dersindeki regex değildir.

Bu güç artışı bedelsiz gelmez. Özellikle geri izlemeli motorlarda kötü tasarlanmış kalıplar, masum görünen bir girişte olağanüstü uzun süre çalışabilir. Buna katastrofik geri izleme denir. Çözüm, daha karmaşık bir desen yazmak değil; çoğu zaman problemi doğru katmana bölmektir: Önce regex ile biçimi ayıkla, sonra ayrıştırıcıyla yapıyı doğrula, en son uygulama mantığıyla anlamı denetle.

Chomsky Hiyerarşisi bize yalnızca dilleri sınıflandırmayı öğretmez; araç seçmenin ahlakını da öğretir. Bir çekiçle her şeyi çivi saymak yerine, metnin gerçekten ne istediğini sormayı önerir. Bazen bir yıldız işareti yeterlidir. Bazen bir yığın gerekir. Bazen de aradığınız şey metindeki desen değil, metnin taşıdığı yapıdır.

Python Rahat Koltuksa, C Neden Hâlâ Motor Odasında Terletiyor?

Programlama dilleri arasında hız tartışması çoğu zaman bir pist yarışına benzetilir: Python ağır adımlarla yürüyen zeki bir profesör, C ise yağ lekeleri içinde çalışan, homurdanan ama inanılmaz hızlı bir mekanik canavar. Bu benzetme komiktir ama eksiktir. Çünkü mesele yalnızca kimin daha hızlı koştuğu değildir; kimin neyi, hangi bedelle, hangi bilinç düzeyinde yaptığıdır. Python ile C arasındaki fark, aslında insanın konfor arzusu ile gerçekliğin çıplak maliyetleri arasındaki kadim pazarlığın bilgisayar ekranına düşmüş gölgesidir.

Python: Düşüncenin Hızlı Prototipi

Python’un büyüsü, işlemciden çok insan beynini hızlandırmasındadır. Bir fikri dakikalar içinde koda dökebilirsiniz. Dosya okuyabilir, veri işleyebilir, grafik çizebilir, yapay zekâ modeli kurabilir, web servisi ayağa kaldırabilirsiniz. Üstelik noktalı virgül ayini yapmadan, bellek yönetiminin karanlık koridorlarında kaybolmadan. Python, programcıya şunu fısıldar: “Sen problemi düşün, ben ayrıntıların bir kısmını hallederim.”

Bu konforun bedeli vardır. Python çoğunlukla yorumlanan, dinamik tipli ve yüksek seviyeli bir dildir. Değişkenin türünü çalışma zamanında anlamak, nesneleri esnek biçimde yönetmek, otomatik bellek temizliği yapmak, soyutlamaları kullanıcıdan saklamak zaman alır. CPU’nun gözünde bu nezaket pahalıdır. Makine, sizin şık bir satırda yazdığınız şeyi anlamak için sahne arkasında onlarca küçük kontrol, çağrı ve düzenleme yapar. Yani Python’un zarafeti, silikon düzeyinde bürokrasi üretir.

C: Makineyle Yapılan Sert Pazarlık

C ise bambaşka bir anlaşma teklif eder: “Sana hız veririm, ama hatalarının sorumluluğunu da alırsın.” Belleği kendin ayırırsın, dizinin sınırına çarparsan kimse seni nazikçe uyarmayabilir, yanlış işaretçiyle evrenin karanlık tarafına geçebilirsin. C, programcıya büyük güç verir; ama bu güç, kullanım kılavuzu olmayan bir elektrik santrali gibidir. Yanlış hamlede program çökmez bile; daha kötüsü, çalışıyor gibi görünür.

C’nin hızlı olmasının temel nedeni, donanıma yakın konuşmasıdır. Derleyici kodu makine diline çevirir, tipler nettir, bellek düzeni daha öngörülebilirdir, soyutlama katmanları daha incedir. Bir döngüde milyarlarca işlem yapacaksanız, her küçük ek maliyet büyür ve Python’un rahatlığı bir anda sırt çantasına konmuş tuğlalara dönüşür. C burada acımasız gerçekçidir: İşlemci ne yapacaksa onu söyler, fazla şiir yazmaz.

Hız Nedir, Kime Göredir?

Yine de “C hızlıdır, Python yavaştır” demek bazen düşünsel tembelliktir. Hangi hızdan söz ediyoruz? Programın çalışma hızı mı, geliştirme hızı mı, bakım hızı mı, ekibin anlama hızı mı? Bir veri analisti için Python, üç saatlik işi üç dakikaya indirebilir. Bir gömülü sistem mühendisi için aynı Python, mikrodenetleyicide lüks bir yük olabilir. Bir oyun motorunun fizik çekirdeğinde C ya da C++ parıldarken, bir otomasyon betiğinde Python kral gibi davranır.

Ayrıca Python ekosisteminin büyük sırrı şudur: En hızlı Python kodu çoğu zaman Python’da çalışmaz. NumPy, TensorFlow, PyTorch gibi kütüphaneler arka planda C, C++ veya CUDA gibi daha düşük seviyeli katmanlara yaslanır. Kullanıcı Python ile orkestrayı yönetir; ağır enstrümanları ise alt katta kaslı müzisyenler çalar. Bu, modern yazılımın güzel ikiyüzlülüğüdür: Üstte konfor, altta ter.

Yaşam Felsefesi Olarak Soyutlama

Python ve C bize yalnızca teknik değil, felsefi bir ders de verir. Hayatta da soyutlamalarla yaşarız. Para, hukuk, takvim, unvan, arayüz: Hepsi karmaşık gerçekliği yönetilebilir hale getiren yüksek seviyeli yapılardır. Ama kriz anlarında soyutlama katmanları soyulur. Banka uygulamasındaki rakamın arkasında enerji, emek, lojistik ve güven vardır. Python satırının arkasında da bellek, register, önbellek, derleyici ve işletim sistemi vardır.

Bilge programcı, konforu küçümsemez; ama onun bedelini bilir. Düşük seviyeyi romantikleştirmez; ama onun disiplinini anlar. Her şeyi C ile yazmak, şehirde her yere tankla gitmeye benzer. Her şeyi Python ile yazmak ise bazen dağa terlikle tırmanmaktır. Ustalık, aracın karakterini problemle eşleştirmektir.

Sonuçta Python bize düşüncenin akışını, C ise gerçekliğin sürtünmesini öğretir. Biri zihnin hızını artırır, diğeri makinenin nabzına dokundurur. İyi mühendis ikisini düşman gibi değil, farklı cephelerde savaşan iki müttefik gibi görür. Çünkü yazılımda da yaşamda da asıl soru şudur: Nerede rahatlık satın almalı, nerede bedeli doğrudan ödemeliyiz?