Algoritma yeteneklerini geliştirmek için öneriler
Algoritma yeteneklerini geliştirmek için öneriler

Algoritma yeteneklerini geliştirmek için öneriler

Üniversiteye başlamadan önce kodlamayla ilgilenmeye başlamıştım, yaklaşık 15 senedir de amaç ya da araç olarak kullandığım programlama ile içiçeyim, bu durumun da olayları değerlendirmede her zaman faydasını gördüm. 

Karşıyaka’da bir kursta Visual Basic ile başlayan programlama yeteneklerimi, Shell Script’ten PHP’ye, Assembly’den Python’a, Java’dan VHDL’e Verilog’a kadar her alanda denedim, bazen beceremedim ama yine denedim ve kendimi geliştirdim. İYTE’deyken derslerde, bitirme tezimde ve stajımda sürekli bir öğrenme içerisindeydim. Özyeğin Ünivesitesi’nde asistan olarak çalışırken, temelde yazılımcı olarak çalıştım ve çok şey öğrendim. Turkcell’de çalışırken yazılımla işim olmamasına rağmen işlerimi kolaylaştırmak ve hızlandırmak için SQL ve Excel’de makro yazmakla uğraştım, PIWorks’te yine yazılımcı olarak çalışmamama rağmen, SQL, Python ve JS ile uğraşıyorum. Kimi zaman işimi kolaylaştırmak için, kimi zaman da sadece keyif aldığım için kurcalıyorum. “JQuery neymiş ya, bir de Bootstrap diye bir şey varmış ne ki o?” diyerek Google nimetinden faydalanarak öğrenmeye çalışıyorum.

programming-resources

Bugün artık herkesin bir şekilde dokunduğu yazılımlar dünyayı yönetiyor (Akıllı telefonunu açmadan, Twitter’a, Facebook’a girmeden durabileniniz var mı?). Öyle ki ABD bu konuya en hakim ülkelerden biri olmasına rağmen, yeni nesillere de aşılama politikası için Obama’nın desteğiyle ilerliyor: “Kodlama öğrenin!“. Obama öğrenin demekle yetinmiyor, siz de onun yaptığı gibi kodlayın! Özyeğin’den tanıdığım, şimdilerde MEF Üni.’li Erhan Erkut Hoca’nın da üstüne basa basa tekrarladığı gibi, fark yaratmak için programlama öğrenin.

code-the-programmed-revolution-5-638

Korkmanıza gerek yok, öğrenmek de o kadar zor değil sadece her işte olduğu gibi biraz emek ve zaman istiyor. İnternet dehlizinde milyonlarca kaynak var. Bu kaynakları benden de daha iyi bilenler elbette var ama başlamak için aşağıdakilere bakılabilir:
http://code.org/learn
http://www.codecademy.com/

İyi program yazmak için iyi algoritma kurmak gerek. İyi program dediğim de gerçekten iyi olması, yani programdan istenen girdilere göre istenen çıktıları vermesi yeterli değil, daha sonra geliştirmek istendiğinde baştan yazmak zorunda kalmamak, kullanıcının davranışlarını “tahmin” ederek sonuçlar vermesi ve üstüne bu sonuçları olabildiğince göze güzel görünecek şekilde vermesi. Bu “iyi program” kıstası göreceli olsa da “iyi şirketler” bunları paylaşıyor. Belki de Google’ın “Bunu mu demek istediniz?”  diyerek başlattığı (bana göre öyle 🙂 ), Apple’ın iPhone ile gelen tasarım ve kullanıcı deneyimi (UX) üzerine açtığı çığır,  Amazon’un “bu ürünü alanlar bunlara da baktı” şeklindeki “ekstra”ları onları farklı ve başarılı kılan özelliklerindendi.

funshirts-the-friendship-algorithm

Programlama dediğimiz kısaca, algoritmasını yazabildiğin bir problemi ya da çözümü belli kurallar ve yazım biçiminde (programlama dili) ifade etme şekli. Bir şeyler yazmak istiyorsunuz, bir program dilini biraz öğrendiniz ama ortaya sonuç çıkaramıyorsunuz (yazılımla ilgili bir ders alan 1. sınıf üniversite öğrencisinin temel problemlerinden biri!) “Zeki ama çalışmıyor” olmanızın sizi pek ileri götürmeyeceği aşikar, algoritma yeteneklerinizi geliştirmek için biraz çalışmak ve okumakta yarar olduğu gibi sosyal olmakta da fayda olduğunu düşünüyorum.

Algoritma eşittir matematik demek. Şu adreste denmiş ki algoritma dediğin Matematikçi Harezmi’den çıkmış olsa da günümüzde, bilgisayar bilimlerinde kullanılan bir terimdir. https://fiftyexamples.readthedocs.org/en/latest/algorithms.html

Ama bu demek değildir ki benim matematiğim süper o zaman algoritmam da süper. Çalışmak, çabalamak gerek. Bazı (aslında çoğu) problemler de daha önceden çözülmüş olduğu için onları daha sonra kullanabilmek için öğrenmek lazım, Amerika’yı yeniden keşfetmeye gerek yok. Bunları anlatan nimetlerden de faydalanmak gerekir:
Algoritma denince akla ilk akış diyagramları geliyor. Onlar nasıl çizilir, nasıl anlaşılır, öğrenmek ve denemek görmek lazım. Microsoft Visio’nuz yoksa şu iki web uygulamasına göz gezdirebilirsiniz.
Kitapları okumak, dersleri takip etmek dışında benim şöyle önerilerim var:
  1. Daha çok uygulama tanımak daha çok çözüm görmek demek. Ben hem bilgisayarıma, hem de telefonuma sürekli program kurup kaldırıyorum ve farklı insanların çözümlerini görmeye çalışıyorum. Uygulama kullanmayı ne kadar iyi bilirseniz, geliştirmenizde de o kadar çok kullanabilirsiniz.
  2. Daha çok insan tanımak daha çok perspektif görmek demek. Başka insanların açısından bakmayı öğrendiğinde de algoritma tasarımına katkısını bir süre sonra görüyorsun.  O yüzden bence sosyallik çok önemli. O yüzden özellikle üniversite öğrencilerine mutlaka bir sürü topluluğa katılın, başka başka insanlarla tanışın diyorum. O açıdan sosyal medyada, özellikle twittter’da, farklı sektörlerden ve farklı bakış açılarından hesapları takip etmenin bir yararı olabilir.
  3. Daha çok okumak ve okuduklarını DENEMEK lazım. Ne kadar çok pratik o kadar hızlı düşünme demek.
    “Algorithm is not the computer code. Algorithm are just the instructions which gives clear idea to you idea to write the computer code.”
    http://www.programiz.com/article/algorithm-programming
    “This article will dive into the principles of algorithm design. If you haven’t a clue what I’m referring to, read on!”
    http://code.tutsplus.com/tutorials/understanding-the-principles-of-algorithm-design–net-26561
  4. Lumosity, Elevate, Peak gibi “brain games” oyunları var. İnsanı daha hızlı düşünmeye, daha hızlı hesaplamaya zorlayan süper zevkli oyunlar. Mutlaka internette de vardır ya cepten oynaması da kolay.
  5. Gündelik hayattan problemler ve çözümler yaratabilirsiniz.Geçenlerde bu konuda konuştuğumuz bilgisayar müh. öğrencisi Burcu kardeşime şu örneği verdim:
    Algoritma = Problem çözme. Bugün gündelik hayatta yaptığın herhangi bir işlemi algoritmaya dökebilirsin ve bu senin gelişimine faydalı olur.
    Mesela bakkala gittin onu programla.,Ekmek aldın, kola aldın, elinde ne kadar vardı, ne kadar kaldı bunu zaten kolayca yaparsın. Sonra problemi gün gün kendi kendine zorlaştır, ay başında 300 liran vardı, ekmeğin fiyatı her ay 30 kuruş artarsa bu para yeter mi yeterse ne kadar biriktirebilirsin…
Kimi zaman hayatımı kazandığım, ama çoğu zaman keyif aldığım kodlamada kendimi geliştririrken, günlük yaşamımda yararlandıklarım yukarıdaki bahsettiğim gibi. Algoritma öğrenmek sadece işinize değil hayatınıza da fark katacaktır, o yüzden henüz başlamadıysanız bir an önce başlayın 🙂
Özet olarak, kodlama öğrenin, deneyin, yanlış yapın, tekrar deneyin!
algorithm_of_life_by_azzazian-d5s358u
Bonus:
Most Popular Programming Languages 2014

7 yorum

  1. Hocam güzel yazı olmuş lakin millet kodlama denince aklına oyun fikri geliyor yapay zeka diye arıyorum ‘bana göre oyun algoritması’ geliyor benim yapamak ve anlamak istedigim Person Of Interest deki makine gibi bir zeka yapılabilirmi veya nasıl bir yola gidilebilir.

    1. Bana göre POI’deki makine yapılabilir, aynı şekilde kullanımı olmasa da hatta yapılmış bile olabilir 🙂 (bkz: http://www.webtekno.com/person-of-interest-gercek-oluyor-cin-tum-ulkeyi-kapsayacak-yuz-tanima-sistemi-gelistiriyor-h37837.html)

      Yapay zeka, makine öğrenimi biraz daha üst seviye konular tabi. Aslında şu an için dipsiz kuyular, çünkü inanılmaz bir hızla gelişiyor, değişiyor. Udemy, coursera, edx gibi yerlerden online derslere katılarak bu konuda bilgi edinebilirsin. POI’deki makineyi “yapmak” istemek güzel hedef ancak, araba yapmak için direk araba nasıl yapılır diye aramak gibi olur, önce küçük başlamak lazım motor, şanzıman öğrenmek lazım 🙂

      1. Teşekürler Hocam hala araştırma yapıyorum ama belki milyonlarca kod satırı kombinasyonları ile belki yapılabilir buda big data işlemek gibi bişi sanırım daha cok cekidek lazım bana belkide ilerde ucular ozamana kadar bir alternatif piyasalarda olabilir

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir