I na pewno, jakis ich % go stworzył. Tak więc mam pytanko, czy udało wam się kiedys stworzyc język programowania.
Jesli tak, to się pochwalcie, co wam szkodzi.
Ja może zaczne.
Mój język programowania zwie się Topaz (nazwa kodowa, musze znalezć jakis zenski odpowiednik).
Powstał 3-4 dni temu. Jest to język skryptowy (nie chciałem się jebac asemblerem), oparty na bardzo lekkim VM.
Ma obsługę bibliotek standardowych C i WinApi( znaczy w trakcie budowy jest stdlib Topaza). Jako że jest bardzo fajny, można w nim napisać wirusy, które napisane w innym jezyku, zostałyby wykryte.
Jako że jestem samoukiem, po napisaniu języka odkryłem że trzeba tworzyć jakies drzewa AST (wtf is that?). U mnie translator tego nie posiada.
Język będzie domenowo-ogólno użytkowy. Paradygmaty:
-Metaprogramowanie
-Proceduralny
-Imperatywny
Jezyk jest pelny w sensie maszyny Turinga.
Troche kodu:
Kod PHP:
#import main.tpz
proc main(1);
array tab[10000];int $cc;
$cc="%i ";
main.arg0 = 0;
while main.arg0 != 9999
tab[main.arg0] = main.arg0;
printf($cc,tab[main.arg0]);
main.arg0=eval(main.arg0+1);
endwhile
printf($cc,tab[56]);
end
Kod:
NEW
NEW
NEW
NEW
MOV $14 1
MOV $16 0
MOV $15 $14
MOV $17 $16
PUSH 0
GOTO ::main
POPA
EXT
::MsgBox
NEW
POP1
MOV $18 $0
NEW
POP1
MOV $19 $0
PUSH 0
PUSH $19
PUSH $18
PUSH 0
CALL user32 MessageBoxA
RET
::puts
NEW
POP1
MOV $1A $0
PUSH $1A
CALL clib puts
RET
::printf
NEW
POP1
MOV $1B $0
PUSH $1B
CALL clib printf
RET
::system
NEW
POP1
MOV $1C $0
PUSH $1C
CALL clib system
RET
::fopen
NEW
POP1
MOV $1D $0
NEW
POP1
MOV $1E $0
PUSH $1E
PUSH $1D
CALL clib fopen
RET
::getc
NEW
POP1
MOV $1F $0
PUSH $1F
CALL clib fgetc
MOV $0 $0
RET
::fgetc
NEW
POP1
MOV $20 $0
PUSH $20
CALL clib fgetc
MOV $0 $0
RET
::fscanf
NEW
POP1
MOV $21 $0
NEW
POP1
MOV $22 $0
NEW
POP1
MOV $23 $0
NEW
STR "%s"
MOV $24 $0
PUSH $23
PUSH $22
PUSH $21
CALL clib fscanf
RET
::ShowWindow
NEW
POP1
MOV $25 $0
PUSH $25
CALL stdlib showwindow
RET
::comparestr
NEW
POP1
MOV $26 $0
NEW
POP1
MOV $27 $0
PUSH $27
PUSH $26
CALL stdlib comparestr
CMP $13 $0==1
::000CE9B9
MOV $0 =1
MOV $0 $14
RET
::000CE9B9
CMP $13 $0==0
::000CE9B9 ::0009E1C0
MOV $0 =0
MOV $0 $16
RET
::0009E1C0
RET
::comparetext
NEW
POP1
MOV $28 $0
NEW
POP1
MOV $29 $0
PUSH $29
PUSH $28
CALL stdlib comparetext
CMP $13 $0==1
::0009E1C0 ::00041166
MOV $0 =1
MOV $0 $14
RET
::00041166
CMP $13 $0==0
::00041166 ::000C2F79
MOV $0 =0
MOV $0 $16
RET
::000C2F79
RET
::concat
NEW
POP1
MOV $2A $0
NEW
POP1
MOV $2B $0
PUSH $2B
PUSH $2A
CALL stdlib concat
RET
::delete
NEW
POP1
MOV $2C $0
NEW
POP1
MOV $2D $0
NEW
POP1
MOV $2E $0
PUSH $2E
PUSH $2D
PUSH $2C
CALL stdlib delete
RET
::pos
NEW
POP1
MOV $2F $0
NEW
POP1
MOV $30 $0
PUSH $30
PUSH $2F
CALL stdlib pos
RET
::main
NEW
POP1
MOV $31 $0
NEW
NEW
STR "%i "
MOV $2742 $0
MOV $31 0
::000A2389
MOV $32+$31 $31
PUSH $2742
PUSH $32+$31
GOTO ::printf
POPA
EVAL $31+1
MOV $31 $0
CMP $31 9999
JMNE ::000A2389
PUSH $2742
PUSH $32+56
GOTO ::printf
POPA
RET
Teraz wasza kolej na chwalenie.
Zakładki