Using C would tie the run-time/compiled implimentation to specific set of platforms/hardware. aka each hardware platform would have it's own specific compiled C quirks/issues to deal with. aka big endian / little endian; 16/32 bit; etc.
A virutal machine is typically what is used when not targeting an actual machine/hardware. aka runtime environment.
Transpiling the language to java or webassembly would provide for wider range of hardware/platform support without requiring specific knowlege compiled C platform quirks -- big endian/little endian machine. Although, transpiling to awk with system() & named pipes/netcat, perl, javascript, and/or creating an excell 16 bit cpu[7]/virtual pc could work too.
"1st class"[0] concept implies there are no restrictions on where given language construct/concept can be used. for example: which side of the assignment operator a programming language concept/construct can be used.
"type inference"[1] is typically an interpreted/virtual machine language feature. aka C++ run time type inference (rtti) is done via instance of a virtual machine.
namespace / scoping is important aspect of modularity / avoiding code coloring issues / automatic translation between formats / 'reactivity'[2]
XL[3], oils/ysh[4], unicorn[5]/unicorn.js[6], awkgo[8], pawk[9] might be of interest.
Would suggest using ' JS/Ocaml/Rust' implimented/running under python (and/or bindings to ocaml/rust).
A related example/demo of this approach would be awk running under go[8] or python[9].
This approach would make it bit easier to experiement with doing modifications/customizations/extensions to 'js/ocaml/rust'.
Permits leveraging things that have already been written. aka editors/debuggers/graphics libraries etc.
Instead of going the 'super' environment, gawk extentions/additions to awk take the extend the 'sub-environment' direction[10] via extensions support for c/c++
unknown|2 years ago
[deleted]
prmph|2 years ago
sargstuff|2 years ago
A virutal machine is typically what is used when not targeting an actual machine/hardware. aka runtime environment.
Transpiling the language to java or webassembly would provide for wider range of hardware/platform support without requiring specific knowlege compiled C platform quirks -- big endian/little endian machine. Although, transpiling to awk with system() & named pipes/netcat, perl, javascript, and/or creating an excell 16 bit cpu[7]/virtual pc could work too.
"1st class"[0] concept implies there are no restrictions on where given language construct/concept can be used. for example: which side of the assignment operator a programming language concept/construct can be used.
"type inference"[1] is typically an interpreted/virtual machine language feature. aka C++ run time type inference (rtti) is done via instance of a virtual machine.
namespace / scoping is important aspect of modularity / avoiding code coloring issues / automatic translation between formats / 'reactivity'[2]
XL[3], oils/ysh[4], unicorn[5]/unicorn.js[6], awkgo[8], pawk[9] might be of interest.
Would suggest using ' JS/Ocaml/Rust' implimented/running under python (and/or bindings to ocaml/rust).
A related example/demo of this approach would be awk running under go[8] or python[9].
This approach would make it bit easier to experiement with doing modifications/customizations/extensions to 'js/ocaml/rust'.
Permits leveraging things that have already been written. aka editors/debuggers/graphics libraries etc.
Instead of going the 'super' environment, gawk extentions/additions to awk take the extend the 'sub-environment' direction[10] via extensions support for c/c++
----
[0] : https://medium.com/ryanjang-devnotes/who-is-first-class-citi...
[1] : https://en.wikipedia.org/wiki/Type_inference
[2] : https://www.linkedin.com/pulse/reactive-programming-principl...
[3] : https://xlr.sourceforge.io/
[4] : https://www.oilshell.org/
[5] : http://www.unicon.org/
[6] : https://alexaltea.github.io/unicorn.js/
[7] : https://github.com/InkboxSoftware/excelCPU
[8] : https://benhoyt.com/writings/goawk/
[9] : https://github.com/alecthomas/pawk
[10] : https://www.gnu.org/software/gawk/manual/html_node/Dynamic-E...