Emirli Programlama (Imperative Programming)

Yazan : Şadi Evren ŞEKER

Bilgisayar bilimlerinde, programlama dillerini sınıflandırmak ve bir programlama dilinin özelliklerini belirtmek için kullanılan bir terimdir. Genellikle literatürde prosedürel programlama (procedural programming) olarak da geçmektedir.

Emirli programlama ile kastedilen, bir programlama dilindeki komutların satır satır emirlerden oluşmasıdır. Örneğin bir robota komut verecek olsaydık:

Benzeri emirleri sıralamamız gerekecekti. Bu emirlere bazı kaynaklarda prosedür ismi verilmektedir. Buradaki prosedür ile anlatılmak istenen örneğin kolu döndürme işleminin alt emirlerden oluşmasıdır. Örneğin robotun nasıl bir açıyla vücudunu tutacağı, kolun hangi mafsalının kaç derecelik açı yapacağı ve kolun nasıl hareket edeceği gibi emirler bu alt prosedürlerde belirtilir.

Emirli programlamanın anlamsal olarak tam zıddı ise tanımlamalı programlamadır (veya bildirimli programlamadır , declarative programming). Bu yaklaşıma göre bir programı oluşturan parçalar belirli bir amaca yönelik kodlanır. Örneğin yukarıdaki örneğe devam edecek olursak bir robot programlamada bir odadaki bir masanın üzerinde duran elmayı almak için:

Benzeri komutlar vermemiz gerecekti. Burada dikkat edilmesi gereken nokta, verdiğimiz komutların birer amaç için verilmiş olmasıdır. Yani tanımlamalı programlamada ne sorusuna, emirli programlamada ise nasıl sorusuna cevap olacak komutlar ön plana çıkar. Elbette kapıyı açmak veya masaya yaklaşmak eylemleri de bir dizi alt hareketlerden oluşmakta ve bu hareketler de sonuçta birer emir olmaktadır ancak tanımlamalı programlama yaklaşımında yazılan her fonksiyon birer amaca hizmet eder ve daha sonra bu fonksiyonlar birleştirilerek modüler bir problem çözümü elde edilir. Öte yandan emirli programlamada hedef emirlerin doğru şekilde ve dizilimde verilmesidir. Emirli programlamadaki her fonksiyon belirli bir başka emirin alt parçalarıdır ve sürekli olarak programcının emir vermesi gerekir.

Bu anlamda tanımlı programlama sanki robotumuzun daha çok şey bilmesini, emirli programlama ise sanki robotun her işleminin emre bağlanması olarak düşünülebilir.

C, C++ veya JAVA gibi diller tanımlamalı programlamanın (declarative programming) birer örneğiyken, lisp, prolog ve scheme gibi diller emirli programlamanın birer örneğidir. Ayrıca makine dili veya FORTRAN, Algol gibi ilkel diller yapı olarak emirli dillerdir.

Örneğin scheme dilinde 1′den verilen sayıya kadar olan sayıları toplayan bir kod aşağıdaki şekilde olacaktır:

(define (topla n) (
      cond (
        ( = n 1) n)
        (else (+ n ( topla (- n 1))))))

Bu yazı şadi evren şeker tarafından yazılmış ve bilgisayarkavramlari.com sitesinde yayınlanmıştır. Bu içeriğin kopyalanması veya farklı bir sitede yayınlanması hırsızlıktır ve telif hakları yasası gereği suçtur.

Ardından programcının bu fonksiyonu bir komut (emir) vererek çağırması gerekecektir:

(topla 5)

Yukarıdaki çağırma işlemi olmazsa, fonksiyon sadece tanımlanmış olarak kalacak ve hiçbir işe yaramayacaktır. Programcı yukarıdaki tanımı yaptıktan sonra istediği kadar emir vererek fonksiyonu çağırabilir. Ancak çalışma işlemi programcının vereceği emirlere bağlıdır.

Öte yandan C dilinde bir programın çalışması için:

#include <stdio.h>
int topla(int n){
   if(n==1)
    return n;
   return n+topla(n-1);
}
int main(){
   topla(5);
}

Şeklinde program yazılır ve derlenir (compile) sonuçta bu program sadece 5′e kadar olan sayıları toplar. Şayet bu sayı kullanıcıdan okunursa bile, programın yine de bir amacı vardır ve bu amaç 1′den, verilen sayıya kadar olan sayıların toplamıdır.

Görüldüğü üzere scheme, sürekli olarak bir emir beklemekte ve verilen emir doğrultusunda kendi kurallar tabanına (rule base) bakarak en doğru karşılığı vermeye çalışmaktadır. C ise bir programı derlemekte ve derlenen bu program bir amaca yönelik olmaktadır.

Bu yazıyı beğendiyseniz, başkalarının da ilgisini çekebilirsiniz:


164 views

Leave a Reply


2 + = sekiz

Benzer Yazılar:

Bilgisayar Kavramları üzerinde şu anda okumakta olduğunuz 'Emirli Programlama (Imperative Programming)' isimli yazı 16 Nov 2009 tarihinde, saat: 03:19 'de Şadi Evren ŞEKER tarafından gönderilmiş, toplam164 defa okunmuştur.

Benzer yazıları Uncategorized kategorilerinden okuyabilirsiniz. Yazar ile irtibat kurmak için email gönderebilirsiniz. Yazıya yorum yapabilir ya da yapılan yorumları RSS 2.0 ile takibe alabilirsiniz.


Category: Uncategorized