Прости програмски јазици

Под прости програмски јазици ги подразбираме оние програмски јазици кои се блиски до машинскиот јазик (наредби и зборови кои директно ги разбира машината или компјутерот) и посложени за учење и за работа на програмерите. Со развивањето на компјутерите првобитно се развија овие прости програмски јазици од кои потоа настанаа и сложени програмски јазици. Наредбите со кои се работи во овие јазици се прилично потешки и неразбирливи. Исто така често се работи со броеви од различни бројни системи.

Според некои дефиниции за прост програмски јазик се смета оној јазик за кој не е потребен компајлер или интерпретер за машината да го разбере.

Простите програмски јазици најчесто ги делиме на две генерации.

Прва генерација уреди

Првата генерација на прости програмски јазици ја претставува машински јазик. Тој е единствениот програмски јазик кој директно го разбира машината. Денес програмерите не го користат овој јазик бидејќи не само што бара обрнување внимание и на најмал детал што сложените програмски јазици ќе го сторат автоматски, туку и секоја наредба се запишува со одредена бројка која е тешко да се запамти а и да се погреши.

На пример програмата за пресметување на Фибоначиев број на 32-битен обработувач во машински јазик би го имала следниот облик:

8B542408 83FA0077 06B80000 0000C383
FA027706 B8010000 00C353BB 01000000
B9010000 008D0419 83FA0376 078BD98B
C84AEBF1 5BC3

Втора генерација уреди

Втората генерација на прости програмски јазици ја претставува Асемблерот или асемблерски јазик. Тој припаѓа на втората генерација бидејќи не е јазик којшто директно го подразбира обработувачот но мора да се познава структурата на обработувачот за да се програмира во овој јазик (како обработувачкките регистри и наредбите). Овие наредби директно се преведуваат во машинскиот јазик.

На пример програмата за пресметување на Фибоначиев број на 32-битен обработувач во асемблерски јазик би го имала следниот облик:

fib:
    mov edx, [esp+8]
    cmp edx, 0
    ja @f
    mov eax, 0
    ret
    
    @@:
    cmp edx, 2
    ja @f
    mov eax, 1
    ret
    
    @@:
    push ebx
    mov ebx, 1
    mov ecx, 1
    
    @@:
        lea eax, [ebx+ecx]
        cmp edx, 3
        jbe @f
        mov ebx, ecx
        mov ecx, eax
        dec edx
    jmp @b
    
    @@:
    pop ebx
    ret