DENEYENE KADAR COBOL'DAN NEFRET ETMEYİN

COBOL Başlangıç Eğitimi için tıklayınız.

COBOL, Rodney Dangerfield’in programlama dilidir ve hiç saygı görmez. Laf kalabalığı olarak görüldüğü için rutin olarak kabul edilmez ve arkaik olarak reddedilir. Oysa COBOL ölü bir dilden uzaktır . Tüm ticari işlemlerin yaklaşık% 85'ini işlemektedir ve her yıl 5 milyar satırlık yeni COBOL kodu yazılmaktadır.

Gizemli Bir Bug

Aşağıda, sipariş gönderim ücretini ve beklenen gönderim tarihini hesaplamaya çalışan bir sorun kodu örneği verilmiştir:

 

Daha önce COBOL kodunu hiç görmemiş olsanız bile mantığını izlemesi kolaydır. Gönderim yöntemi "FX" ise, müşteri ertesi gün gönderim alır, aksi takdirde gönderim iki hafta sürer. (90'lı yıllar)

Sorun, 19'un sonundaki döneme aitti. O zamanlar, bunu takip etmek için bazı dedektiflik çalışmaları gerekiyordu, ancak modern sözdizimini vurgulayan editörler bunu hemen işaretleyecekti. Fakat bu neden bir problemdi? 22. satırın sonundaki durumla tamamen mutluyken COBOL neden bu periyodu sevmedi?

[H25 – SAP HANA 2025’te Tek Bir Veritabanında Çalışacak yazımızı okumak için tıklayın.]

Bloklar Yerine Cümleler

Bu soruyu cevaplayabilmek için 1950'lerin sonları olan COBOL'un kökenlerine geri dönmeliyiz. COBOL, o zamana kadar çoğu dil bilimsel ve mühendislik problemlerini çözmek için tasarlanmıştı, bu yüzden sözdizimleri matematiksel denklemlere benziyordu. (Fortran, bu dilin klasik bir örneğidir.) Diğer taraftan, COBOL işletme bilgisayarları için tasarlanmıştı. Sıradan insanların öğrenmesini kolaylaştırmak için Grace Hopper, Savunma Bakanlığı ekibi ve IBM mühendisleri COBOL'a İngilizce bir sözdizimi verdi. Birçok modern dilin yinelemeli sözdizimi yerine, COBOL programları hiyerarşik bir yapıya sahiptir. Bloklar yerine, COBOL ifadeleri birlikte “cümleler” halinde gruplandırılır ve tıpkı İngilizce'deki gibi her cümle bir süre ile sonlandırılır.
Bu teoride iyi bir fikir gibi görünse de, uygulamada problemli olduğu kanıtlandı. Bir gezinti süresi beklenmedik biçimde bir bloğu sonlandırabileceğinden, kodun etrafa taşınmasını zorlaştırdı. Dönemleri de fark etmek zordu - bunlar 90'lı yılların CRT terminallerinde sadece tek bir pikselden ibaretti. Fakat burada, COBOL ilk geliştirildiğinde, programcıların kod yazmasıyla ilgili daha derin bir problem vardı.

Delikli Kartlar

Sabit sürücüler COBOL tasarlandığında çok pahalıydı, bu yüzden çoğu program delikli kartlara yazılmıştı. En yaygın delikli kartlar, bir 1 ve bir delik içermeyen bir deliği temsil eden 12x80 ızgaradan oluşuyordu. Her sütun, tek bir 12 bit karakterdi ve her kart tek bir 80 karakterlik bir metin satırıydı. Programınızı çalıştırmak için, her bir kart okuyucuya, bir dizi delik alırsınız. Her kartın ilk altı ve son sekiz sütunu, sıra numaraları ve tanımlayıcılar için ayrıldı. Bu şekilde destenizi düşürdüyseniz - ki bu da programınızın tek kopyası olabilir - kartları doğru sıraya koymak için mekanik bir sıralayıcı ile besleyebilirsiniz.
Bunun anlamı, COBOL'un 72. sütundan sonra herhangi bir karakteri yoksaymasıdır. Bu bir dönem olsaydı, kodunuzun tüm mantığı değişebilirdi ve şimdiye kadar tahmin edilebilecek hiçbir şüphe duymadığınız gibi, 19. satırdaki dönem 73. sütundaydı. İşte COBOL derleyicisinin gerçekte bu satırları yorumlaması:

Günümüzde COBOL

COBOL-85 standardı , son-if gibi kapsam sonlandırıcıları ekledi , bu nedenle artık cümleleri sona erdirmek için gerekli değildi. COBOL 2002 standardı, birçok derleyiciden daha önce destek vermesine rağmen serbest biçimli kod buna izin verdi. 2002 standardına yazılan aynı kod daha çok modern bir programlama diline benziyor:

COBOL'u öğrenmek açık kaynak meraklıları için zor olmuştur. COBOL derleyicileri geleneksel olarak kapalı kaynak ve pahalı olmuştur ve çoğu COBOL kodu şirket ortamlarında yazılmıştır. Ancak, OpenCOBOL adlı bir açık kaynak kodlu derleyici üzerinde çalışma 2002 yılında başlamıştır. 2013 yılında resmi olarak GNU paketi olarak kabul edilmiştir ve GnuCOBOL adını almıştır.

COBOL eğitimleriyle ilgili detaylı bilgi için tıklayın.

 



Eğitimlerle ilgili bilgi almak ve diğer tüm sorularınız için bize ulaşın!

Son Blog Yazılarımız

Sitemizi kullanarak çerezlere (cookie) izin vermektesiniz. Detaylı bilgi için Çerez Politika'mızı inceleyebilirsiniz.