Bu blog sitesine uzun zamandır yazı yazmadığımı görünce önce kendimden utandım. Ardından, utanmayı da bir kenara bıraktım ve sıvadım kolarımı, yazmaya koyuldum. Biliyorum ki yazmak benim için çok farklı bir yerde. Neden bu kadar uzun zamandır yazmadığıma gelince, kodlama ile o kadar çok uğraştım ki, uzun bir süre bırakın yazı yazmayı, diğer işlerimi bile aksattım durdum.

Bu yazımda sizlerle programlama hakkında konuşmak istiyorum. Biliyorum; yapay zekâ, otomasyon teknolojileri derken neden programlamaya gerek olduğunu sorguluyorsunuz fakat işler sizin düşündüğünüz gibi değil. Bu yazımda bu konulara değinecek, programlama hakkında fikir ve tecrübelerimi paylaşacağım sizlerle. Eğer okurken bir şeyler yiyip içmeyi seviyorsanız durmayın, tren kalkıyor.

Nedir bu programlama Dedikleri?

Benim yazılarımı ya da videolarımı takip edenler bilirler ki benim tanımlarım basmakalıp ya da klasik akademik tanımlar olmaz. Kendi tecrübelerimden damıttığım, içerisinde deneyim olan tanımlardır verdiğim bütün tanımlar. Bu yazımda da programlama hakkında vereceğim tanım, her zamanki gibi aynı tatta olacak:

Programlama; yapmaktan sıkıldığımız işlerimizi dijital dünyadaki cihazlara yaptırmanın ve onlara kesin emirler vermenin en temel yoludur.

Tanımın basitliği sizi şaşırtmış olabilir. Şaşırmayın çünkü aslında işler bu kadar basit.

Programlama, ki siz ona kodlama da diyebilirsiniz,temel anlamda akıllı cihazlara neyi, nasıl ve hangi yöntemleri kullanarak yapacağını öğretmek için kullandığımız bir iletişim yöntemidir. Burada önemli bazı sorular karşımıza çıkıyor fark ettiğiniz üzere. Bu sorular özelinde de biraz tartışalım kodlama konusunu.

Programlamaya Neyi Yaptıralım?

Öyle ya! Bir sıkıntımızın olması gerek ki bunu akıllı cihazların çözmesini sağlayabilelim. Bunun için problemlerimizi, yapmak istediklerimizi ya da aklımızdaki fikirlerimizi önce kendimize ifade etmemiz gerek. Peki, bunu nasıl yapacağız?

Kodlama ya da programlama yapmadan önce, neyi programlayacağımızı anlamak için örnek bir problemi ele alalım ve bu örnek üzerinden önce problemimizi tanımlamayı, ardından da onu nasıl programlanabilir hâle getirebileceğimize bir bakalım:

Yazımızda örnek olarak ele alacağımız problemimiz şöyle:

Elimizde yaklaşık yirmi beş sayfalık bir metin var. Bu metinde yer alan,

  • Akıl yürütme;
  • Tümdengelim;
  • Tümevarım;
  • Anoloji

gibi kavramların geçtiği cümleleri ve bu cümlelerin geçtiği sayfa sayılarını bir araya toplamak istiyoruz. Bunu neden yapmamız gerekiyor bilmiyorum ama sanırım bir kavram haritası oluşturmak hedefindeyiz..

Böyle bir problemi çözmek için ilk aklımıza gelen söz konusu belgeyi açıp, elimizdeki kavramların geçtiği cümleleri ve sayfa sayılarını başka bir belgeye sürükleyerek, istediğimiz şeyi elde etmek olur, öyle değil mi? Aslında bu yöntem başlı başına doğru da, sizce bu çağda gerçekten bu kadar sıkıcı bir işi yapabilmek için saatlerimizi mi harcayacağız?

Bana sakın,

"Yapay zeka ile bu istediğimizi yapabiliriz."

demeyin. Evet aslında yapabilirsiniz ama gözden kaçırdığı cümleler olursa bunun sıkıntısını yine siz çekmeyecek misiniz?

İşte bizzat kendimizin çözmesi gereken bu problemle nasıl başa çıkacağız?

Nasıl Kodlayalım?

Kodlamanın aslında yapmak istediğimiz şeyleri bilgisayarlara ya da akıllı cihazlara anlatmanın tek yolu olduğunu artık biliyorsunuz. Burada önemli olan, hangi dili, nasıl öğreneceğimiz. Korkutucu olan şey aslında bu. Bizi programlamadan soğutan ya da ondan uzak durmamızı sağlayan şey işte bu öğrenme korkusu.

Hangi programlama dilini öğrenmeniz gerektiği, işlerinizi hangi ortamlarda yaptırmak istediğinize bağlı. Verdiğimiz örnek üzerinden gidecek olursak, metinsel veriler üzerinde çalışabilmemizi sağlayan en güzel programlama dili tabii ki Python!

Python; öğrenmesi son derece kolay, Türkçe kaynağın bol olduğu ve özellikle tekrar eden işlerinizi yaptırabileceğiniz muhteşem ve çok güçlü bir dildir. Bu dile karşı ölümüne önyargı besleyen biri olarak söyleyebilirim ki öğrenenin kesinlikle teknolojiye bakış açısı değişir, günlük işleri kolaylaşır ve kendine ayırabileceği daha çok zamanı kalır.

Yukarıdaki problemimize dönecek olursak, böylesine büyük ve karmaşık bir sorunu nasıl çözdüğümü, bunu Python ile nasıl yaptığımı sizlere anlatmak istiyorum:

Python o kadar geniş bir dildir ki, üzerinde çalışabildiği dosya türlerinin herhangi bir sınırı yoktur. Elimdeki belgenin PDF olması bile bu programlama dili için sorun değildir. Tabii ki burada sizlerle kod paylaşmayacağım, bunun pek bir anlamı olmaz ama yaptıklarımı aşama aşama anlatarak, kodların benim işimi nasıl çözdüğünü sizlere anlatacağım:

  1. Python'un, üzerinde çalışmasını istediğim belgeyi açmasını sağladım;
  2. Belgedeki her bir sayfayı, üzerinde çalışabileceği şekilde ayırmasını istedim;
  3. Her bir sayfa üzerinde, oluşturduğum kelime listesini aramasını; bulduğu yerlerdeki cümleleri anlamasını ve bu cümleleri benim için bir listede, sayfa numaralarıyla birlikte bir araya getirmesini söyledim;
  4. Son olarak bu listeyi bir Word belgesinde, istediğim biçimlendirme türüne uygun bir şekilde bir araya getirmesini ve belgeyi istediğim bir dizine kaydetmesini söyledim.

Bu kodları tek bir .py dosyasına yazıp çalıştırdığımda, benim belki de günlerimi alacak bir iş neredeyse bir saniyede tamamlandı ve ben geriye kalan günlerde kendi işime baktım.

İlla ki Python dilini öğrenin demiyorum tabii ki ama amacınız öğrenme süresini kısaltmak ise Python, birinci tercihimdir her zaman.

Üçüncü adımdaki cümle bulma kısmı da ayrı bir disiplin elbette fakat burada anlatmak istediğim şeyin, önemli olanın dijital düşünebilmek olduğunu sanıyorum ki anladınız. Ayrıca çok sevdiğim bir kitap olan Automate the Boring Stuff With Python (Sıkıcı İşleri Python İle Otomatize Edin)'ın yazarı, kitabın girişinde şöyle bir hikâye anlatıyor ve ardından çok güzel bir açıklama yapıyor:

"Üçümüzün iki günde yaptığını sen iki saatte yaptın."

Üniversitedeki oda arkadaşım 2000'li yılların başında bir perakende elektronik mağazasında çalışıyordu. Zaman zaman mağaza diğer mağazalardan binlerce ürün fiyatının yer aldığı bir elektronik tablo alıyordu. Üç çalışandan oluşan bir ekip, elektronik tabloyu kalın bir kağıt yığınına yazdırıyor ve kendi aralarında paylaştırıyordu. Her ürün fiyatı için mağazalarının fiyatını araştırıp rakiplerinin daha ucuza sattığı tüm ürünleri not ediyorlardı. Genellikle birkaç gün sürerdi. < < Oda arkadaşım, onları her tarafa dağılmış ve istiflenmiş kağıtlarla yerde otururken gördüğünde, "Biliyorsunuz, çıktıların orijinal dosyasına sahipseniz bunu yapacak bir program yazabilirim" dedi.

Birkaç saat sonra, bir dosyadan rakibin fiyatını okuyan, ürünü mağazanın veritabanında bulan ve rakibin daha ucuz olup olmadığını kaydeden kısa bir programa sahipti.

Programlama konusunda hâlâ yeni olduğundan zamanının çoğunu bir programlama kitabındaki belgelere bakarak geçiriyordu . Gerçek programın çalışması yalnızca birkaç saniye sürdü. Oda arkadaşım ve iş arkadaşları o gün ekstra uzun bir öğle yemeği yediler.

Bu, bilgisayar programlamanın gücüdür. Bilgisayar, sayısız görev için yapılandırabileceğiniz bir İsviçre Çakısı gibidir. Pek çok kişi, tekrar eden görevleri gerçekleştirmek için tıklayıp yazarak saatler harcıyor, ancak kullandıkları makinenin, ona doğru talimatları vermeleri halinde işini saniyeler içinde yapabileceğinin farkında değil.

Bu uzun yazıyı yazmak yerine sadece bu alıntıyı yapsam sanırım daha da açıklayıcı olabilirdim. Demek istediğim, programlamanın gücünü hafife almadan, yapay zekâ gibi teknolojilerin programlamayı öldüreceğini düşünmeden kesinlikle bir dil öğrenmeniz gerekiyor. Programlama dilleri size problem çözme becerisi, akılcı düşünebilme yeteneği ve daha neler neler kazandıran çağımızın en büyük silahıdır.


Umarım yazımı sıkılmadan sonuna kadar okuyabilmişsinizdir. Madem programlamadan konuştuk, kodlama ile alakalı en önemli sitelerden biri olan Github'a üye olarak aşağıya bir yorum bırakın. Bir sonraki yazımızda görüşmek üzere.