JuliaLang: The Ingredients for a Composable Programming Language
Julia is a language I really wanted to like, and to a certain extent I do.  However after spending some time working with it and hanging out on the Discourse channels (they certainly have a very friendly and open community, which I think is a big plus), I&#x27;ve come to the tentative conclusion that its application domains are going to be more limited than I would have hoped.<p>This article hits on some of the issues that the community tends to see as advantages but that I think will prove limiting in the long run.<p>&gt; Missing features like:<p>&gt; Weak conventions about namespace pollution<p>&gt; Never got around to making it easy to use local modules, outside of packages<p>&gt; A type system that can’t be used to check correctness<p>These are some of my biggest gripes about Julia, especially the last two.  To these I would add:<p>* Lack of support for formally defined interfaces.<p>* Lack of support for implementation inheritance.<p>Together with Julia&#x27;s many strengths I think these design choices and community philosophy lead to a language that is very good for small scale and experimental work but will have major issues scaling to very complex systems development projects and will be ill-suited to mission critical applications.<p>In short I think Julia may be a great language for prototyping an object detection algorithm, but I wouldn&#x27;t want to use it to develop the control system for a self-driving car.<p>Unfortunately this means that Julia probably isn&#x27;t really going to solve the &quot;2 language problem&quot; because in most cases you&#x27;re still going to need to rewrite your prototypes in a different language just like you would previously in going from, for example, a Matlab prototype to a C++ system in production.