E-Bülten’e kayıt olun

E-Posta:



Fikir, Plan, Program

Escher - Day and Night - Fikir

Fikir, Plan, Program

Yarın sabah erken kalkıp bilardo oynamaya gitmek gibi bir fikir aklınızda yoksa, hayatın sizi sabahın köründe bilardo oynamaya sürükleme ihtimali çok düşüktür.

Böyle bir fikriniz varsa, bu fikir üstünden bir plan oluşturursunuz. Erken kalkmak için erken yatmak planın akıllara gelen ilk bileşenlerinden biridir. Bilardo oynarken bol bol eğilip kalkacağınız için kahvaltı yapmak da öyle olmalıdır. Gideceğiniz bilardo salonunun size uzaklığını, oraya nasıl gideceğinizi de planlamalısınız.

Bilardo salonu sabah o saatte açık olacak mı? Bu sorunun cevabını bilmiyorsanız, bir miktar hayal kırıklığını da planınızın bir köşesine sıkıştırabilirsiniz.

Ne kadar dikkatli olsanız da planınızda birçok belirsizlik vardır. Sabah olduğunda kalkmamayı tercih edebilirsiniz, otobüsünüz geç gelebilir, yolda bir arkadaşınızla karşılaşıp onunla kahvaltı yapmak isteyebilirsiniz. Bilardo salonu açıksa bile dolu olabilir.

Bir anda kendinizi başka bir şey yapıyorken bulabilirsiniz, hatta bu şey hayatın sürükleme ihtimalinin çok düşük olduğu bir başka şey dahi olabilir.

 

Fikir ve ifade edildiği ortam

Bilgisayarları ve onlarla etkileştiğimiz ortamları tasarlarken belirsizlikleri ortadan kaldırmaya çalışırız. Bilgisayarlar yaptıkları işi sürekli olarak yüksek kesinlikle ve doğrulukla yapmalıdırlar fakat bu özelliklerin sadece hesaplama tarafında sağlanması yeterli değildir. İnsanlar ve bilgisayarların etkileşim arayüzünün yani insanların fikirlerini bilgisayarlara ifade ettiği ortam ve araçların da bu özellikler göz önünde bulundurularak tasarlanması gerekir.

Bilgisayarlar bir sürecin nasıl işleyeceğine dair fikirlerimizi çalıştırmamızı sağlarlar. Hem de çok hızlı şekilde. Evet, çalıştırılabilir fikirler! Bu fikirleri onlara ifade etmemiz gerekir, gündelik bir plan yapar gibi, ama bütün detaylarıyla. Çünkü bilgisayarlar çıkarım yapmak veya belirsiz durumlarda karar vermek gibi yetilere sahip değillerdir. Bir işi yaparken bir anda başka bir bilgisayarla yürüyüşe çıkmak da istemezler, siz ondan bunu istemediğiniz sürece.

Planın daha mutlak haline program denebilir. Bilgisayardan çalıştırmasını istediğimiz fikirlerin bütünü bir program belirtir, çünkü bilgisayar kesin olarak bunları gerçekleştirecektir. Bu sebeple insan ve bilgisayar arasındaki yazılı iletişim sistemlerine programlama dili denir, ama görsel arayüzler veya bir fikre karşılık gelen hesaplamanın tetiklenmesini sağlayacak herhangi başka şey de bir programlama aracıdır.

 

Programlar kimin için yazılmalı?

Ben Celaleddin, birlikte çalıştığımız insanların ve şirketlerin gerçekleştirmek istediği süreçlerle ilgili fikirleri programlar olarak ifade etme işine yardımcı olmak üzere güzel Artistanbul ekibine katıldım. Yapacağım işe sektörde yaygın olarak “yazılım geliştirme” deniyor. Çünkü bu işin yalnızca programlar yazmaktan öte bazı gereksinimleri de var.

Örneğin yapmak istediklerinizi gerçekleştirmek için dünyanın her bir yanından insanların yazdığı ve herkesin kullanabilmesi için paylaştığı programları da kullanabiliyorsunuz. Hatta kullanmanız gerekiyor, çünkü bu programlar çok fazla kişi tarafından kullanılıyor, dolayısıyla çılgınca test ediliyorlar. Bir işi yaptığı söylenen ve çevresinde bakımını yapan bir topluluğu bulunan programlar sizin çok emek harcayarak dahi ulaşamayacağımız güvenilirlikte bu işi yerine getiriyorlar.

Karmaşık süreçleri gerçekleştiren programların doğal olarak kendileri de karmaşık oluyorlar. Bu karmaşıklığın yönetilmesi ve karmaşık parçaların görece daha basit alt parçalara bölünmesi problemin ve çözümün anlaşılabilmesi için çok önemli. Özellikle birden çok kişinin geliştirdiği programlar söz konusu olduğunda ortak dil, kültür ve alışkanlıkların da önemi artıyor.

Sizin yazdığınız programları gelecekteki sizin, takım arkadaşlarınızın ve hatta müşterilerinizin anlayabilmesi gibi bir ideal ortaya koyulabilir. Bu ideale ulaşabilmek için programlama dillerinde ifade gücünü yükseltmek hedefiyle ortaya birçok fikir atılmış ve atılıyor. Hatta farklı alanlarla ilgili fikirleri ifade etmek için o alanlara özgü programlama dilleri geliştiriliyor. Bu konuyla ilgili Harold Abelson ve Gerald Jay Sussman “Structure and Interpretation of Computer Programs” adlı kitaplarında şöyle diyorlar¹: Programlar insanların okuması için ve yalnızca tesadüfen bilgisayarların çalıştırması için yazılmalıdır.

Artistanbul’da fikirleri ifade etmek için uzun yıllar Python programlama dili kullanılmış ve hâlâ da kullanılıyor. Geliştirici ekibin üyeleri yıllar içinde değişse de, Python çevresindeki ekosistem ve kültür ile yoğurulmuş değerli bir bilgi birikimi ortaya çıkarılmış. Tabii ki bu birikim içinde farklı diller ve kültürlerden de izler var. Her organizasyonda olduğu gibi birikimin eşsiz olmasını sağlayan da bu farklı alanlardan etkileşimler. Önümüzdeki dönemde bu bilgi birikiminden öğrenmek ve bu birikime katkıda bulunmak için ben de elimden ve zihnimden geleni yapacağım.

Belki ekiple birlikte yazılım dünyasındaki mevcut sınırları iteleyip kendimize yer açmaya çalışır, fikirlerden fikir seçip kendimizinkilerle harmanlar ve Alan Kay’in dediği gibi² kimin ne yapacağıyla ilgili endişelenmeyiz, çünkü Alan’a göre geleceği tahmin etmenin en iyi yolu onu icat etmektir. Neden olmasın?

 

İlk iki haftam

Yaklaşık iki haftadır Artistanbul‘da çalışıyorum. Burada bir işletim sistemi olan Pardus ile ilişkili geçmişleri sebebiyle GNU/Linux sever bir topluluk var. Sevmelerinin başka sebepleri de vardır tabii. Ekip arkadaşlarımın çoğu işletim sistemi olarak Fedora kullanıyor. Ben de bilgisayarıma Fedora kurdum. Yaklaşık beş aydır kullandığım ve çok sevdiğim pencere sistemi i3‘ü de içine yerleştirdim. İki yıldır tutkuyla kullandığım editör olan Spacemacs‘i, terminal çoklayıcı tmux‘ı ve kullanım alışkanlıklarımla ilgili yapılandırmalarımı da sisteme ekleyince, geliştirme ortamım hazır hale gelmiş oldu. Vim zaten yüklü geliyor.

Spacemacs

Spacemacs’in web sayfasından bir ekran görüntüsü

 

Bu iki haftada şu anda şirket bünyesinde yürütülen projelerin bağlamlarıyla ilgili hikâyeler dinledim. Bu projelerin wiki’lerinde, kaynak kodlarında ve iş geçmişlerinde küçük gezintilere çıktım. Artistanbul’da şimdiye kadar çalışmış insanların bazı blog yazılarını okudum. Bol bol bilgisayarımla boğuştum.

Bir sürü insanla tanıştım. Artık haftanın birçok günü birlikteyiz ve tanışmaya devam ediyoruz.

Her neyse, konumuza dönüyorum. Olur da bilardo salonu kapalı olursa haber verin, buluşup birer bardak bitki çayı içelim. Dilerseniz oynadıktan sonra da buluşabiliriz. Hatta başka bir gün birlikte de oynarız belki.

 


1. “Programs must be written for people to read, and only incidentally for machines to execute.” – Abelson ve Sussman

2. “Don’t worry about what anybody else is going to do. The best way to predict the future is to invent it.” – Alan Kay

Giriş görseli: Day and Night, M.C. Escher, 1938

Celaleddin Hidayetoğlu
1 Yorum
  • Fahri Hidayetoğlu
    Yanıtla
    Gönderim22:03, 13 Aralık 2019

    Tek nefeste (tek hevesle ve heyecanla diyelim, tek nefes için biraz uzun bir metin) okudum. Baban olarak yine gururlu ve mutlu ama teknik eleştri olarak yorumsuzum. Yeni işinde başarılı olacağına eminim, yeterli mutlu kal…

Yorum Yaz

Yorum
İsim
E-Posta
Website