As for "how heavy" are various languages, interpreted as the time taken to start up and run a trivial script and quit, 100 times...
Just the results, in order by wall time:
0.143s awk
0.158s bash
0.162s ksh
0.278s zsh
0.329s perl
0.344s tcsh
0.530s lua
1.957s tcl
2.519s emacs lisp
3.009s python
4.568s ruby
4.979s javascript
15.207s C (compiled each time)
I'd rather use perl than tcl or any of the shells. It has proper syntax and variables and is not based on hairy text interpolation and re-parsing. It was explicitly designed to be a shell replacement for system admins. Where perl falls down is if you want data structures more complex than a simple array or dictionary e.g. nested data structures, trees, graphs etc. The syntax can also be cryptic.
Lua is almost as fast starting up (and much much faster than python or ruby) and is better for writing "real" programs with data structures, OO code than perl. It has more conventional syntax. It doesn't have as much built in for doing system kinds of things but there is os.execute() and io.popen().
Emacs turns out to be surprisingly fast to start up, beating python, ruby, and javascript and surprisingly not far behind tcl. Lisp is a real programming language, suitable for writing very large programs if you're so inclined. The syntax is not for everyone, but personally I find it better than python.
Javascript (node.js) is not all that much slower to start up than python or ruby, has the most C-like syntax if you like that kind of thing, has a huge ecosystem of libraries (similar to python I guess), and so much time and money has been put into the v8 engine that if you want to write complex algorithms then it's by far the fastest language in the above list, coming close to C++ / Java / C#.
Tests run on an M1 Mac.
Details:
bash
Mac-mini:programs bruce$ time (for x in `seq 100`; do bash -c 'echo $((3*14))' >out;done)
real 0m0.158s
user 0m0.042s
sys 0m0.089s
tcsh
Mac-mini:programs bruce$ time (for x in `seq 100`; do tcsh -c '@ r = (3 * 14);echo $r' >out;done)
real 0m0.344s
user 0m0.068s
sys 0m0.188s
python
Mac-mini:programs bruce$ time (for x in `seq 100`; do python3.10 -c 'print(3*14)' >out;done)
real 0m3.009s
user 0m1.875s
sys 0m0.559s
perl
Mac-mini:programs bruce$ time (for x in `seq 100`; do perl -e 'print 3*14,"\n"' >out;done)
real 0m0.329s
user 0m0.076s
sys 0m0.140s
ruby
Mac-mini:programs bruce$ time (for x in `seq 100`; do ruby -e 'print 3*14,"\n"' >out;done)
real 0m4.568s
user 0m3.269s
sys 0m0.964s
awk
Mac-mini:programs bruce$ time (for x in `seq 100`; do awk 'BEGIN {print 3*14}' </dev/null >out;done)
real 0m0.143s
user 0m0.033s
sys 0m0.081s
lua
Mac-mini:programs bruce$ time (for x in `seq 100`; do lua -e 'print(3*14)' >out;done)
real 0m0.530s
user 0m0.176s
sys 0m0.150s
javascript
Mac-mini:programs bruce$ time (for x in `seq 100`; do node -e 'console.log(3*14)' >out;done)
real 0m4.979s
user 0m3.459s
sys 0m0.871s
tcl
Mac-mini:programs bruce$ time (for x in `seq 100`; do echo 'puts [expr 3*14]' | tclsh8.6 >out;done)
real 0m1.957s
user 0m1.057s
sys 0m0.383s
emacs
Mac-mini:programs bruce$ time (for x in `seq 100`; do emacs --batch --eval '(print (* 3 14))' >out;done)
real 0m2.519s
user 0m1.340s
sys 0m0.662s
C
Mac-mini:programs bruce$ time (for x in `seq 100`; do ((echo '#include <stdio.h>';echo 'int main(){printf("%d\n",3*14);}') | gcc -xc -;./a.out) >out;done)
real 0m15.207s
user 0m3.927s
sys 0m1.616s