Programlama Hataları
Programlama yaparken bazı şartlara tabii tutuluruz. Yani eğer bu şartları gerçekleştirmezsek yazdığımız programlar derlenmez ya da yorumlanmaz. Derlenebilen ya da yorumlanabilen tüm dillerde durum böyledir. Bu aslında programlamada kuralcı bir yapı olduğunu bize gösterir.
Python yorumlanan bir dildir. Python yorumlayıcısı da programları en baştan en sona kadar okur ve eğer hata yok ise programı çalıştırır. Eğer hata var ise programı çalıştırmaz, hata ile ilgili bilgi gösterir.
Programlamada üç çeşit hata görürüz: Yazım Hatası, Çalışma Zamanı Hatası ve Anlama bağlı hatalar.
1- Yazım Hataları:
Dediğim gibi Python yorumlayıcısı yazılan programı baştan sona kadar okur ve sadece kurallara uyan programları çalıştırır. Yazım hatası derken sözdizim ya da syntax de diyebiliriz. Syntax, programın yapısını ve o programın oluşturulmasına dair kuralları ifade eder. Python'da programlama diğer dillere göre farklılıklar gösterebilir. Python'da ekrana bir değer yazdırmak istediğimizi düşünelim. Bu işlemi print()
işlevi ile yaparız. Bu cümleyi iki tırnak arasında yazdırmamız gerekiyor. Eğer ki tırnaklardan birisi eksik olursa hata alırız:
print('Merhaba Dünya)
Bu kod bize şu hatayı verecektir:
File "<stdin>", line 1
print('Merhaba Dunya)
^
SyntaxError: EOL while scanning string literal
Burada gördüğümüz SyntaxError
hatası bize sözdizimsel bir hata olduğunu gösterecektir. Hadi bu hata nasıl düzeltilir görelim:
print('Merhaba Dünya')
Bu kodun çıktısı şöyle olacaktır:
>>> Merhaba Dünya
Evet hata giderilmiş gördüğümüz gibi.
2- Çalışma Zamanı Hataları:
Bu tip hatalar programın hatalı yazılmasından daha ziyade, programın çalışma anında beklenmedik koşullarla karşılaşmasında ortaya çıkar. Örneğin veritabanı bağlantısı yaptığınız bir programda veritabanı dosyası bulunamadı ya da veritabanı server bağlantısı yapılamadı ise bu program doğal olarak çalışma anında hata verecektir.
3- Anlamsal Hatalar:
Programcı burada programı düzgün bir şekilde yazmıştır, program çalışırken hata vermemektedir. Fakat programcının istediği ile programın verdiği sonuç farklıdır. Örnek verecek olursak:
5+8/2
işleminin sonucu 9'dur. Fakat programcı aslında 5 ve 8 rakamlarının toplanıp 2'ye bölünmesini istemiştir. Bu durumda yapması gereken şey (5+8)/2
olmalı. Programcının istediği sonuç bu işlemin sonucu olan 6.5 değeridir.
Anlamsal hataların dezavantajı, ayıklanmasının zor olmasıdır. Çünkü diğerlerine göre bu tarz hatalarda program hatasız çalışmaktadır. Eğer ki programımız çok büyük dosyalardan yani binlerce satırdan oluşuyor ise ve sağlam bir debugger kullanmıyor isek bu hataları bulmak için çok fazla zaman harcarsınız.