I don't like how much this simplification gets used. Of course there is more than one way to implement a given language. But there is also more than one way to design a language, and that can have big effects on its implementation(s), and that's usually what people mean when they speak of "fast languages."
Not to mention that many languages only have one implementation, or else many that have all converged to the same performance characteristics.
And on top of that, it's rarely a question of how fast or slow an entire implementation is, either! Individual codebases or problem spaces need different things from their languages.
Do you? You could restructure your data in memory if you wanted to, at least if the assumption is that adding a field is a rare operation.
Common Lisp for example has the assumption in the standard, that the object system is fully dynamic and supports a wide variety of live changes (adding/removing/changing of methods, classes, slots, superclasses, ...).
From the article, quoting the makers of Julia:
> We want a language that’s homoiconic, with true macros like Lisp, but with obvious, familiar mathematical notation like Matlab.
In this case, the makers of the language clearly give a nod to Lisp as an inspiration, but even were that not the case, it's basically nonsense to say that any language "has nothing to do with lisp". Lisp has been a driving force in PL for a generation, and its influences are everywhere.
The 'target audience of Julia' is everyone, not just 'Matlab converts'.
It is most focused on high performance numerics, but is a true general purpose programming language. I expect its use to grow explosively as more and more people recognize its elegance and power.
My perspective is that of a senior engineer with decades of experience with dozens of programming languages.
From https://docs.julialang.org/en/v1/manual/metaprogramming/
Julia's surface syntax, among other parts of the core, are implemented in their own lisp dialect.
https://github.com/JuliaLang/julia/blob/master/src/julia-par...
One look at that parser code makes me, a seasoned web and desktop app developer with cocky high minded "architectural" thinking, shrivel with insignificance and embarrassment.
Mad respect to the process and people that makes this possible.
[1] https://gist.github.com/brenhinkeller/44051118c2f9d18b26dc76...
Riiight... https://github.com/JuliaLang/julia/blob/master/src/ast.scm
You can use metaprogramming to edit the AST of a Julia program, like Lisp. See https://docs.julialang.org/en/v1/manual/metaprogramming/
Most of the infrastructure is there in the code, it just needs to be tied together, in such a way that juliac file.jl -o file.x results in a deployable (preferably static) binary.
The APIs are (these days) mostly web/REST-ish, though I'm starting to work on writing some wire-protocol stuff as well.
It (Julia) is an amazingly powerful language today. Excellent for data scientists and engineers, for deep and complex analytics. I am using it in a professional (e.g. paid) setting. Along side python, C++, and other things.
$ julia --lisp $ julia --lisp
; _
; |_ _ _ |_ _ | . _ _
; | (-||||_(_)|__|_)|_)
;-------------------|------------------------------------
----------------------
> (+ 1 2)
3
> (exit)
https://github.com/JeffBezanson/femtolisp