Syntax nedir? Sıkça karşılaşılan hatalar neler?

Syntax; bir yazılımı yazarken uyulması gereken kurallar bütünüdür. Her dilin birbirine benzer, fakat farklı bir düzeni vardır.

Buna örnek olarak Python, C, C# ve Assembly’i örnek gösterebiliriz. Şimdi hepsinde, standart yazılımcılığa başlangıç uygulaması olan “Hello, World!” uygulamasını yazalım. 🙂

Python 2.x sürümünde şu şekilde yazılmaktadır;

print "Hello,World!"

Python 3.x sürümünde ise buna benzer olarak şöyle yazılıyor;

print("Hello, World!")

Bakın fark ettiyseniz ikisi de Python dili fakat sürümsel farklılıktan dolayı farklı Syntax’a sahipler. Şimdi birde C’yi inceleyelim.

#include <stdio.h>
 
int main()
{
  printf("Hello world\n");
  return 0;
}

Gördüğünüz üzere Python’dan farklı olarak ilkte bir kütüphane çağırıyoruz, sonra main adında bir fonksiyon oluşturuyoruz ve süslü parantezler içine kodlarımızı yazıyoruz. Ayrıca her kod satırının sonuna noktalı virgül koyarak kodu bitiriyoruz.

Şimdi birde C#’ı inceleyelim.

using System;

public class Hello
{
	public static void Main()
	{
		Console.WriteLine("Hello, World!");
	}
}

Burada da System kütüphanesini tanımlıyoruz önce ve ardından C’den farklı olarak önce bir class tanımlıyoruz, daha sonra ise public tanımlı bir void fonksiyonunun içine kodumuzu yazıyoruz. Yine C’de olduğu gibi süslü parantezler ve noktalı virgüller var fakat biraz daha fazla. Bu; bu çeşit basit programlarda gereksiz gibi gözükse de büyük projelerde hayat kurtarıyor.

Şimdi geldik bütün yazılımların babasına. 🙂 Sırada Assembly ile “Hello, World!” yazacağız ama önceden uyarı yapmak durumundayım. Şimdi görecekleriniz bilinç altınızda ağır hasarlar oluşturabilir. 🙂

section .text
global _start ;must be declared for linker (ld)

_syscall:
 int 0x80 ;sistem çağırma noktası
 ret

_start: ;linker fonksiyon başlangıcı

push dword len ;mesaj uzunluğu
push dword msg ;mesajdan yazıya
push dword 1 ;dosya açıklaması (stdout)
mov eax,0x4 ;sistem çağırma numarası (sys_write)
call _syscall ;kernel'i çağır

add esp,12 ;yığını temizle

push dword 0 ;kodtan çıkış
mov eax,0x1 ;sistem çağırma numarası (sys_exit)
call _syscall ;kernel çağırılıyor

msg db "Hello, World!",0xa ;Yazımızın bulunduğu kısım
len equ $ - msg ;Yazımızın uzunluğu

Şimdi C ve C#’tan çok Python 2.x’e benzediğini fakat daha meşakkatli bir yazılım dili olduğunun farkındayım ama Assembly’nin işlemci programlamakta kullanıldığını düşünürsek aslında çokta normal bir dil olduğunu söylemek yerinde olur. Ayrıca bir çok yazılım dilinin Assembly’den türetildiğini (alt mimarisinin Assembly’den oluştuğunu) söylemekte yerinde olur. Burada noktalı virgüller açıklama satırı olarak kullanılmaktadır.

Şimdi ikinci konumuz olan Syntax hatalarına gelelim. Syntax hatalarının en büyük sebebi dikkat dağınıklığıdır, bunun çözümü ise bir bardak kahveden geçmektedir. O yüzden mutlak surette yazılımla uğraşırken bir bardak kahveniz bulunsun. 🙂 Ayrıca kodları mutlak surette Visual Studio 2017’de yazmaya özen gösterin. Visual Studio 2017’de Python derleme eklentisi de bulunmaktadır.

Yazdığınız dil C veya türevi bir dil ise büyük ihtimal ya süslü parantezi yada noktalı virgülü unutmuşsunuzdur. Eğer yazdığınız kodda hiç hata yoksa ama istediğiniz gibi çalışmıyorsa büyük ihtimal algoritmasal bir hatadır. Algoritmanızı baştan sona kontrol edin.

 

Konu PDF’i: http://link.tl/1kZSd

Yorum bırakın