30 Aralık 2010 Perşembe

Hangi Programlama Dili

Yıllardır bu soruya cevap veriyorum ama nedense hala öğrencilerin kafasında nedenini bilmediğim şekilde hep bir soru işareti kalıyor. Bu kadar basit bir konuyu karmaşık ve anlaşılamaz hale getiren temelde mikroişlemci mimarisini bilmemekten kaynaklanıyor. O yüzden çok kısa mimariden bahsederek başlayalım.

Öncelikle şunu bilmek gerekiyor. Mikroişlemciler farklı farklı mimarilere göre tasarlanır ve her işlemcinin kendine ait bir opcode tablosu vardır. İster Intel olsun, ister Motorola istersenizde AVR veya PIC hepsi kendisine ait bir opcode tablosuna sahiptir. Bu opcode dediğimiz şey ise komut tablosudur. Kısaca işlemcinin anlayabileceği komutların bir tablosu. İşlemciler sadece bu kodlara cevap verir. Intelin opcode kodu Motorola işlemcileri için anlamsızdır.

O halde hangi işlemciyi kullanacaksak programı onun opcode tablosundaki komutları ile yapmamız gerekmektedir. Bu değişmez bir kuraldır. Şimdi bu konuda anlaştığımıza göre ikinci konuya geçelim.

Hangi sistem üzerinde olursa olsun biz programlama dillerini üç temel grupta inceleriz. düşük,orta ve yüksek seviyeli programlama dilleri. Peki bunlar nedir dersek;

Düşük seviyeli programlama: Bu dil ailesi daha çok işlemci mimarisine yakın komut ve programlama mantığı kullanılarak yazılan programlama dillerini temsil eder. Bu dile hepimizinde bildiği assembly (makine dili) adı verilir. Adından da anlaşılabileceği gibi bu dil daha çok işlemciye yakın insandan uzak bir dildir. Öğrenmesi, yazması zordur. Uzun ve zahmetli bir yazılım süreci vardır. En basit bir işlem bile sayfalarca kod gerektirebilir. Peki avantajı varmıdır derseniz tabiki büyük bir evet olacaktır cevabı. Düşük seviyede direk olarak işlemcinin her şeyine müdahele ederek sınırlar olmadan program yazmaya olanak sağlar. Kısacası işlemcinizi en iyi sömürme yöntemidir. Her istediğinizi uzun ve zahmetlide olsa yapabilirsiniz.

Orta seviyeli programlama: Bu daha çok ne insana nede makineye yakın olarak tasarlanmış bir dil ailesidir. Bazı konularda programcıya büyük kolaylıklar sağlarken hala aynı zamanda makineyede yakın durmaktadır.

Yüksek seviyeli programlama: İnsana yakın programla dilleridir. Burada işlemci faktöründen çok insan faktörü önemlidir. Programcı için hazır sunulan bir çok imkan bulunur. Böylece program yazması çok kolaylaşır. Çok fazla deneyimi ve tecrübesi olmayanlar bile rahatlıkla bu dilleri öğrenip program yazabilmektedir. Bu hali ile insanan yakındır, doğrudur ama size sunulan imkanlar ile sınırlı kalırsınız. Dilin yapısı içinde olmayan bir özelliği kullanmanız ya çok zordur (-düşük seviyeye kaymanız gerekir) yada imkansızdır.

İşte bunları anladı isek hemen programlama dillerinin durumlarına bakabiliriz. Assembly daha öncede söylediğimiz gibi düşük seviyeli bir programlama dilidir. Ama paskal,C ise orta seviye programlama dilleri grubuna girer. Delphi, Visual studio (C#, VB) ise yüksek seviyeli programlama dilleri ailesindendir.

Kullandığınız işletim sistemide dil tercihlerinde önemlidir. Örneğin delphi ile windows ortamında derlediğiniz bir kodu gidipte unix üzerinde çalıştıramazsınız. Çünkü program derlenirken sadece işlemcinize göre derlenmez. Kullanmakta olduğunuz işletim sisteminin kaynaklarınıda kullanır. Dolayısı ile işletim sisteminizden alacağı kaynaklar farklı bir işletim sisteminde bulunmayacağı için programlar farklı işletim sisteminde çalışmazlar. Bunun için örneğin dephi kodunuzun unix üzerinde çalışmasını istiyorsanız kodunuzu Delphi Kylix üzerinde derlemeniz gerekmektedir. Tabi bu durumda da bu derlenmiş kod windows ortamında çalışmayacaktır.

Peki mikrodenetleyicilerde iş nasıl yürüyor. Gelip ben C'mi kullanayım yoksa Basic'mi dediklerinde verecek cevabım onların kafasında sanki gerçekten C veya Basic kullanacakları imajını oluşturuyor. Aslında hayır. Böyle bir şey yok.

Temelde mantık şu; mikrodenetleyiciler yeni bir sistemdir. Fakat uzun zamandır mikroişlemciler farklı dillerde programlanmakta ve toplum üzerinde bir programcılık yeteneği, geleneği oturmuş durumdadır. Kimisi C ile çalışırken kimisi Delphi veya Basic kullanmaktadır. Temelde bu dilleri birbirinden ayrıyan şey komutların yazılım şeklidir. Biz buna syntax diyoruz. Bir dil printf derken diğer dil print diyor sadece ve yazarken kimisi sonuna ; alıyor kimisi almıyor. Bu temel gelenek mikrodenetleyiciler için yüksek seviye program dili oluştururken gündeme gelmiş ve hepimizin bildiği bir dil ailesi dururken farklı bir dil ailesi oluşturmamak amacı ile aslında C olmayan bir C veya aslında Basic olmayan bir Basic dili geliştirilmiştir. Daha açık olarak söylersek pic programlamak için kullanılan C dili aslında gerçek C dili değildir. Pic için yazılmış ama kod yazılım tekniği ve komutları C dilinden esinlenilmiş farklı bir dildir. Basic içinde aynısı söylenebilir. Özetle şunu kesin olarak söylemek mümkün Visual Studio açılıp oradan C seçilip yazılan kod asla ve asla Pic üzerinde çalışmaz. Çünkü zaten en başta hedef işlemciler farklıdır.

Peki biz C'mi seçeceğiz Basic'mi dersenizde bu durumda siz daha önce en az bir programa dili biliyorsanız bu dile en yakın hangisi ise onu seçmenizi öneririm. Örneğin ben yıllardır C'nin yazılım tekniğine alışamamış ve sevememiş birisi olarak (-C'de okumam vardır ama yazmam yoktur) ben Delphi'yi tercih etmiştim. Mikrodenetleyici programlamaya geçtiğimde de bu dile en yakın olan PicBasic tercihim oldu. Bu basic içinden de Proton PicBasic'i seçerek kullanmaya başladım. Sizlerde daha önce dediğim gibi bir dili seçecekseniz alışkanlıklarınıza, size yakınlığına bakarak karar vermeniz gerekmektedir.

Bu yazının devamında yeri geldiğinde farklı dillerden bahsedecek ve örnekler verecek olmama rağmen ağırlıklı olarak örnekler Proton PicBasic üzerinden verilecektir.

4 yorum:

  1. Hocam Bilgi İçin Tşkr Ederim...

    YanıtlaSil
  2. İlginiz için ben teşekkür ederim...

    YanıtlaSil
  3. Yazınızın Sonlarında, "Peki biz C'mi seçeceğiz Basic'mi dersenizde bu durumda siz daha önce en az bir programa dili biliyorsanız bu dile en yakın hangisi ise onu seçmenizi öneririm."

    demişsiniz Peki Hocam Hiç Bir Programlama Dili Bilmiyorsam Hangisinden Başlamayı Tercih Etmeliyim... Okulda assembly dilini görmeye başladık fakat komut yapısı çok uzun olduğu için bu dil ile micro Denetleyi programlamayı Düşünmüyorum...

    iki Seçenek Arasında Hala Bocalayıp Duruyorum,
    C mi? Yoksa Visual Basic mi?
    VB Basit olmasına rağmen C'dili Komutları Daha hızlı mı işler? VB ile C Arasındaki Yazılan Bir Komut Arasında hız farkı var mıdır?

    Ben Bu iki Programlama dillerinden Hangisini Seçeceğimi Şu Kriterler Göre Belirleyecek ; 1)Micro Denetleyici ile ilgili En çok Hangi Programlama Dilinden Kaynak Bulabilrim.
    2)Türkçe Kaynak En çok Hangi Dilde Kaynak var.

    Teşekkürler

    YanıtlaSil
    Yanıtlar
    1. Benim tercihim belli. Ben yazılım yapısı bakımından basic dilini seçtim. Tabi bunu seçerken delphi (paskal) dili ile de program yazdığım için bu dili seçtim. Siz yapısal olarak size en uygununu seçmeniz en iyisi olacaktır. Örneğin bende C ile okuma vardır ama yazma yoktur. Bir türlü C dilinin yazım algoritmasına alışamadım. Kaynak konusunda her iki dilde de yeterince kaynak mevcut. Tabi bir çoğu ingilizce.

      Sil