Giriş Kayıt Ol
Programlamanın İncelikleri
27.08.2021 20:45:49

Algoritmalar açısından düşünmek, yemek pişirmek, telefon numarası aramak, randevu ayarlamak, alışveriş yapmak gibi birçok günlük aktivite için yararlıdır. Ama biz esas olarak bilgisayar kullanmak için algoritmalar yazmak istiyoruz. Bu nedenle algoritmayı kâğıttan nasıl çıkaracağımızı ve bilgisayar tarafından yürütülmeye nasıl başlayacağımızı anlamamız gerekiyor.

Bilgisayarların, bellekteki bitleri ters çevirme veya sıfırlama gibi yalnızca çok basit görevleri gerçekleştirebilen makineler olduğunu söylediğimizi unutmayın. Bilgisayarın gerçekleştirebildiği bu talimat dizisi, makine dili dediğimiz şeydir. Makine dilinde yazılmış bir algoritma, sırayla, bir bit ve bayt dizisidir. Bir algoritmayı makine dilinde görselleştirebilmemiz için, genellikle bir Assembly dilinde veya Assembly dilinde bir metin gösterimi yazarız.

Bu makinelerin kimyasal simülasyonlar, hava trafik kontrolü vb. gibi karmaşık görevleri yerine getirmesi şaşırtıcı görünebilir. Bilgisayarlara, yalnızca çok basit görevleri yerine getirseler bile, bu tür karmaşık görevleri gerçekleştirme talimatı vermemizi sağlayan şey, bilgisayarlar için algoritmaları makine dillerinden daha soyut bir dilde yazmamızdır.

Ama diyelim ki Türkçe bir algoritma yazdığımızda, başka biri için yazıyoruz. "Bir listeden geçmenin", "belirtilen numaraya eklemenin" vb. ne anlama geldiğini gerçekten anlayan bir bilgisayar yoktur. Bu, örneğin, "değerleri ekleyerek listede gezin" anlamına gelir. Buradaki ana zorluk, Türkçe'nin belirsiz bir dil olmasıdır ve bilgisayar bu talimatların her birinin ne anlama geldiğini tahmin edemez.

Bilgisayarın anlayacağı şekilde bir algoritma yazmak için bir programlama dili kullanırız. Yani, algoritmayı yazdıktan sonra (genellikle Türkçe veya benzer bir formatta), bir kişi, programcı, bu algoritmayı bir programlama diline çevirir. Böylece bir algoritmayı karşılık gelen bir programa dönüştürür. Programcının algoritmayı oluşturan kişiyle aynı kişi olmayabileceğini unutmayın.

Bilgisayar için açık olan bir dil, makine dilinin kendisi veya buna karşılık gelen montaj dilidir. Ancak bu, çok basit görevler için bile büyük programlar yazmak zorunda kalacak olan programcıyı mutlu etmeyecektir. Bu nedenle, normalde yazacağımız algoritmaya daha çok benzeyen, ancak bir bilgisayarın gerektirdiği kadar açık olan programlar yazabilmemiz için üst düzey bir programlama dili kullanıyoruz.

Bilişimsel Düşünme Nedir?

Hesaplamalı düşünme mutlaka bilgisayar programlama ile bağlantılı değildir. İnternete göz atma, e-posta gönderme veya sosyal medyayı kullanma yeteneği de değildir. Bilişimsel düşünme,  çözümleri modellemek ve problemleri verimli bir şekilde çözmek için bir stratejidir ve böylece tüm problem sınıfları için genel çözümler bulmaktır.

Şu anda Carnegie Mellon'da profesör ve Microsoft Research'ün başkan yardımcısı olan Jeanette Wing, bilgi işlemsel düşünmeyi, bilgi işlemciler (insanlar, bilgisayarlar veya daha iyisi, her ikisinin bir kombinasyonu) tarafından gerçekleştirilebilecek şekillerde temsil edilen sorunların ve çözümlerin formülasyonu olarak tanımladı. Bu nedenle, hesaplamalı düşünme ile tamamen ilgili olmamasına rağmen, bilgisayar, özellikle tahmin edilebilen eylem dizilerini içeren adımlarda görevleri optimize etmek için önemli bir araçtır.

Wing,  hesaplamalı düşünmeyi aşağıdaki unsurlarla karakterize eder

Kavramsallaştırma (kavramların organizasyonu) ve programlama değil

Temel beceri, mekanik değil

Bilgisayarların değil, insanların düşünme şekli

Matematiksel ve mühendislik düşüncesini birleştiren tamamlayıcı düşünme

Herkes için, her yerde

 Bilişimsel Düşünme Dört Adımda Halinde Organize Edilebilir

Ayrıştırma:  sorunu daha küçük ve dolayısıyla daha kolay problemlere ayırın.

Kalıplar:  sorunu oluşturan kalıbı veya kalıpları tanımlayın.

Soyutlama:  Birden fazla problem için geçerli olabilmesi için bir çözümün ayrıntılarını göz ardı etmek.

Algoritma:  sorunu çözmek için sırayı veya adımların sırasını belirtin.

 Belirli bir programlama dilinde yazılmış programları çalıştırmanın başka bir yolu daha vardır. Programın kaynak kodunu bir makine diline dönüştürmek ve sonra çevrilen programı çalıştırmak yerine, her bir talimatı daha üst düzey programlama dilinde tanındığı anda çalıştırabiliriz. Bu nedenle, bir derleyici kullanmak yerine, bu yerel çeviriden ve anında yürütmeden sorumlu olan, yorumlayıcı adı verilen bir program kullanıyoruz.