Takip et

COBOL’dan Assembly’e Geçiş: Gelir Vergisi Hesaplayıcısıyla 60 Yıllık Eski Dili Anlamak

COBOL’dan Assembly’e Geçiş: Gelir Vergisi Hesaplayıcısıyla 60 Yıllık Eski Dili Anlamak

60 yıldır kullanılan COBOL, dev şirketlerin omurgasını oluşturan, ancak günümüz standartlarında yetersiz kalan bir dil. Bu makalede, basit bir gelir vergisi hesaplayıcısı örneğiyle COBOL’un temellerini kavrayacak, Assembly diline geçişin avantajlarını ve zorluklarını inceleyeceğiz. COBOL’un mirasını anlamak, modern programlama anlayışımızı zenginleştirecektir. İleri düzey teknikler ve performans karşılaştırmalarıyla, bu eski dili günümüzün teknolojileriyle karşılaştırarak daha derin bir bakış açısı kazanacaksınız.

COBOL’a Giriş: Eski Bir Dev

COBOL (Common Business-Oriented Language), iş dünyası için tasarlanmış, prosedürel bir programlama dilidir. 1959 yılında geliştirilmiş ve uzun yıllar boyunca büyük ölçekli iş uygulamalarında, özellikle finans sektöründe, yaygın olarak kullanılmıştır. Ancak, karmaşık sözdizimi, sınırlı veri yapıları ve günümüzün nesne yönelimli programlama paradigmalarına uyumsuzluğu nedeniyle eleştirilmektedir. Yine de, milyarlarca satır COBOL kodu halen aktif olarak çalışmaktadır ve bu kodların güncellenmesi veya değiştirilmesi önemli bir zorluktur. Bu nedenle, COBOL’un temel kavramlarını anlamak ve modern dillerle karşılaştırarak değerlendirmek son derece önemlidir. Örneğin, COBOL’da değişken tanımlama, modern dillerden farklıdır; 05 AD SOYADI PIC X(30). gibi bir ifade, AD SOYADI adlı 30 karakter uzunluğunda bir alan tanımlamak için kullanılır. Bu, değişken tiplerinin ve uzunluklarının önceden belirlenmesi gerektiği anlamına gelir. Bu kısıtlamalar, COBOL’un esnekliğini ve ölçeklenebilirliğini sınırlarken, aynı zamanda belli bir yapı ve düzen sağlamaktadır. Ancak, bu yapı, modern, dinamik dillerin sahip olduğu esneklikten yoksundur. Bu nedenle, COBOL’un güçlü ve zayıf yönlerini anlamak, sistemlerin bakım ve modernizasyonu için gereklidir.

COBOL’da Veri Yapıları ve İşlemler Nasıl Çalışır?

COBOL, hiyerarşik veri yapıları kullanır. Bu yapılar, kayıtların (records) ve alanların (fields) hiyerarşik bir şekilde düzenlenmesini sağlar. Örneğin, bir müşteri kaydı, ad, soyad, adres gibi alanları içerebilir. COBOL’da veri işleme, genellikle MOVE, ADD, SUBTRACT, MULTIPLY, DIVIDE gibi temel aritmetik ve mantıksal işlemler kullanılarak gerçekleştirilir. Program akışı, IF, ELSE, PERFORM gibi kontrol yapılarıyla yönetilir. Bu yapılar, programın farklı bölümlerinin belirli koşullar altında çalıştırılmasını sağlar. Örneğin, bir gelir vergisi hesaplayıcısında, vergilendirilebilir gelire göre vergi dilimine karar vermek için IF ve ELSE ifadeleri kullanılır. Bununla birlikte, COBOL’da döngüler genellikle PERFORM deyimiyle gerçekleştirilir, bu da modern programlama dillerindeki döngülerden (örneğin, for, while döngüleri) farklıdır. Bu farklılıklar, özellikle modern programcılar için öğrenme eğrisini etkileyebilir. Daha fazla bilgi için (https://fatihsoysal.com) inceleyebilirsiniz.

Gelir Vergisi Hesaplayıcısı: COBOL Örneği

Şimdi, basit bir gelir vergisi hesaplayıcısı örneğiyle COBOL’da programlamaya adım atacağız. Bu örnek, vergilendirilebilir gelire göre basit bir vergi hesaplaması yapacaktır. Aşağıda, bu hesaplayıcının COBOL kodunu bulabilirsiniz:

IDENTIFICATION DIVISION.
       PROGRAM-ID.  VERGI-HESAPLAMA.
       ENVIRONMENT DIVISION.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01  GELIR        PIC 9(9)V99.
       01  VERGI        PIC 9(9)V99.
       PROCEDURE DIVISION.
           DISPLAY "Vergilendirilebilir Gelirinizi Giriniz: ".
           ACCEPT GELIR.
           IF GELIR <= 10000 THEN
               MOVE 0 TO VERGI
           ELSE IF GELIR <= 20000 THEN
               COMPUTE VERGI = GELIR * 0.10
           ELSE
               COMPUTE VERGI = GELIR * 0.20
           END-IF.
           DISPLAY "Hesaplanan Vergi: ", VERGI.
           STOP RUN.

Bu kod, kullanıcının vergilendirilebilir geliri girmesini ister, daha sonra bu gelire göre vergiyi hesaplar ve ekrana yazdırır. Bu basit örnek, COBOL'un temel sözdizimi ve kontrol yapıları hakkında bir fikir vermektedir. Elbette, gerçek dünya uygulamaları çok daha karmaşıktır ve daha gelişmiş COBOL özelliklerini içerir.

COBOL Kodunun Adım Adım Açıklaması

Yukarıdaki COBOL kodunda, IDENTIFICATION DIVISION, programın adını ve diğer tanımlayıcı bilgileri içerir. ENVIRONMENT DIVISION, programın çalışacağı çevreyi tanımlar. DATA DIVISION, programda kullanılan değişkenleri tanımlar. WORKING-STORAGE SECTION, programın çalışması sırasında kullanılacak geçici değişkenleri tanımlar. GELIR ve VERGI değişkenleri sırasıyla vergilendirilebilir geliri ve hesaplanan vergileri temsil eder. PROCEDURE DIVISION, programın mantıksal akışını tanımlar. DISPLAY deyimi, ekrana bilgi yazdırmak için kullanılır. ACCEPT deyimi, kullanıcıdan veri girmesini ister. IF ve ELSE deyimleri, koşullu işlemler yapmak için kullanılır. COMPUTE deyimi, aritmetik işlemler yapmak için kullanılır. Son olarak, STOP RUN deyimi, programı sonlandırır. Bu adım adım açıklama, COBOL programlamasının temel yapısını anlamanız için yardımcı olacaktır.

Assembly Diline Geçiş: Daha Derinlemesine Kontrol

Assembly dili, makine koduna en yakın seviyede programlama yapmanızı sağlar. Bu, donanım üzerinde doğrudan kontrol sağlarken, aynı zamanda programın performansını optimize etmenizi mümkün kılar. Ancak, Assembly dili, COBOL'dan çok daha karmaşıktır ve öğrenmesi daha zordur. Her işlemci mimarisi için farklı bir Assembly dili vardır.

Assembly Diliyle Gelir Vergisi Hesaplaması

Aşağıda, x86 mimarisi için basit bir gelir vergisi hesaplama örneği verilmiştir:

section .data
    gelir dw 15000
    vergi dw 0
section .text
    global _start
_start:
    mov ax, [gelir]
    cmp ax, 10000
    jle az_gelir
    cmp ax, 20000
    jle orta_gelir
    mov bx, 20 ; %20 vergi oranı
    jmp hesapla
orta_gelir:
    mov bx, 10 ; %10 vergi oranı
    jmp hesapla
az_gelir:
    mov bx, 0 ; %0 vergi oranı
hesapla:
    mul bx
    mov [vergi], ax
    ; ... vergiyi ekrana yazdırma kodu ...
    mov eax, 1
    xor ebx, ebx
    int 0x80

Bu kod, vergilendirilebilir gelire göre vergiyi hesaplar. Ancak, bu kodun tamamlanması ve çalıştırılması için ek kodlar yazmanız gerekecektir. Bu örnek, Assembly dilinin karmaşıklığını ve düşük seviyeli programlamanın detaylarını göstermektedir. Daha fazla bilgi için (https://fatihsoysal.com) inceleyebilirsiniz.

Assembly ve COBOL Performans Karşılaştırması

Dil Performans Geliştirme Süresi Okunabilirlik
COBOL Orta Orta Orta
Assembly Yüksek Yüksek Düşük

Yukarıdaki tabloda görüldüğü gibi, Assembly dili COBOL'a göre daha yüksek performans sunar ancak geliştirme süresi ve okunabilirlik açısından dezavantajlara sahiptir.

Öğrenme Yol Haritası

[Yeni Başlayan]: COBOL'un temel sözdizimini ve veri yapılarını öğrenerek başlayın. Basit örneklerle pratik yapın. Daha sonra, Assembly dilinin temel kavramlarını öğrenin, registerlar, belleğe erişim ve temel aritmetik işlemler üzerinde yoğunlaşın.

[Orta]: COBOL'da daha karmaşık programlama yapılarını (döngüler, alt programlar) inceleyin ve gerçek dünya örnekleri üzerinde çalışın. Assembly'de, daha karmaşık programlar yazmayı deneyin, alt rutinler ve fonksiyonlar kullanın.

[İleri Düzey]: COBOL'da performans optimizasyonu tekniklerini öğrenin. Assembly dilinde, düşük seviyeli programlamanın inceliklerini kavrayın, kesmeler ve istisnaları ele alın.

Sonuç

Bu makalede, COBOL ve Assembly dillerini karşılaştırarak, eski bir dilin modern programlama dünyasındaki yerini inceledik. COBOL'un mirası inkar edilemez olsa da, günümüzün ihtiyaçlarına cevap verebilmek için Assembly gibi daha düşük seviyeli dilleri anlamak önemlidir. Assembly dili, makine üzerinde doğrudan kontrol sağlayarak performansı optimize ederken, COBOL daha yüksek seviyeli bir yaklaşım sunmaktadır. Her iki dilin de güçlü ve zayıf yönlerini bilmek, bir programcının araç kutusunu zenginleştirir.

Sıkça Sorulan Sorular

  • COBOL hala neden kullanılıyor? Milyarlarca satır COBOL kodu halen aktif olarak çalışmakta ve bu kodları değiştirmek pahalı ve zaman alıcıdır.
  • Assembly dili öğrenmek neden zor? Assembly dili, makine koduna çok yakındır ve her işlemci mimarisi için farklıdır. Bu nedenle, öğrenme eğrisi oldukça diktir.
  • COBOL ve Assembly dilleri arasında hangi dil daha iyidir? Her iki dil de farklı amaçlara hizmet eder. COBOL, iş uygulamaları için uygundur, Assembly ise performans gerektiren uygulamalar için tercih edilir.
  • COBOL'u öğrenmek için hangi kaynaklar kullanılabilir? İnternette birçok COBOL dersi ve eğitim materyali mevcuttur.
  • Assembly dilinin güvenlik açısından dezavantajları nelerdir? Düşük seviyeli erişim, kötü amaçlı yazılımlar için potansiyel güvenlik açıkları yaratabilir. Dikkat!

Yazar: Fatih Soysal

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

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

Gönder

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.
Exit mobile version