Ad esempio, una lingua che stavo guardando di recente- Terra. Puoi rispondere alla domanda nel contesto di qualsiasi lingua, mi sento più a mio agio con Lua, quindi partirò da lì.
Il Terra Language può essere metaprogrammato con Lua ed è retrocompatibile con il codice C. C può essere usato al suo interno e il suo codice può essere usato all'interno di C. Darò alcuni esempi di codice dalla pagina principale.
terra hello(argc : int, argv : &rawstring)
-- Here we call a C function from Terra
C.printf("Hello, Terra!\n")
return 0
end
-- You can call Terra functions directly from Lua, they are JIT compiled
-- using LLVM to create machine code
hello(0,nil)
hello:disas()
--[[ output:
assembly for function at address 0x60e6010
0x60e6010(+0): push rax
0x60e6011(+1): movabs rdi, 102129664
0x60e601b(+11): movabs rax, 140735712154681
0x60e6025(+21): call rax
0x60e6027(+23): xor eax, eax
0x60e6029(+25): pop rdx
0x60e602a(+26): ret
]]
Save Terra code to an external representation such as an object file, or executable. filetype can be one of "object" (an object file *.o), "asm" (an assembly file *.s), "bitcode" (LLVM bitcode *.bc), "llvmir" (LLVM textual IR *.ll), or "executable" (no extension).
Ora, quello che voglio sapere (in relazione a Terra e / o in generale):
- Questo significa che posso scrivere un sistema operativo in Lua? (È questo il livello di criteri che dovrei cercare quando si esaminano i framework e le lingue?)
- In tal caso, posso implementare anche librerie Lua come Torch? (Tutte le lingue hanno librerie, quindi sono curioso di sapere cosa definisce quanto possono farne uso attraverso lo sviluppo del sistema operativo).
- Esiste un modo o un linguaggio oggettivamente migliore per farlo? (Come in quando una lingua soddisfa pienamente la critica ma non mantiene la redditività quando si tratta dello sviluppo del sistema operativo?)