Jam: If you knew then what you know now


Julia development began in 2009 with the first public release in 2012 (according to Wikipedia). A lot has happened in the past 10+ years. Surely, there is some legacy already baked into the code base. I’m kind of curious, if you could start all over with all the lessons learned and with all modern tools available, how would you build Julia from scratch today?

I was thinking about this recently in light of

It would be fun to join the competition and build a Julia-inspired toy language, but I wouldn’t know where to start. I love multiple dispatch so that would have to be a part of any toy language I tinker with. I don’t know if there is any basis in fact here, but I get the impression it is getting easier and easier to build new languages. It would be fun to try to build something in the overlap between Julia and Rust (Rulia? :smile:) jam aside and back to Julia, I would be curious to know what would be different if Julia were built again from scratch today? What would be a rough roadmap?

Thank you for entertaining such a strange question. Responses over :beers: would be fine :slight_smile:


PS: It may be too late, but if anyone wants to try the jam, feel free to ping me here or Slack or Zulip :slight_smile:

[Edit: I didn’t see this when I posted, but I think it is coming from a similar place and I agree with the sentiment there and I’ve also seen “radical-julia” and I doubt the use of the word is a coincidence. Julia is done and rightly so. Any radical changes can be in a Julia-inspired new language :+1: Surely there will be one or more such languages in the not-too-distant future :slight_smile: ]


Possibly — but it is not getting any easier to design good languages. Based on the history of recent new languages, I would say that it takes at least 2 years for a dedicated team of smart people to come up with a promising working prototype which may not be very polished yet but is usable. Then many more years to refine rough edges.

The initiative is nice as a publicity stunt, but I would be surprised if a practical, novel language resulted from it. People have all kinds of gripes with existing languages in use, but the fact that they remain in use suggests that they are doing something well enough. Improving on that sets the bar higher than what can be done in 30 days.


Stefan’s and Jeff’s answer to going back in time to the first commit:


I love that AMA and can’t believe I forgot that was asked. Thanks! :blush:

[Edit: Although the “going back in time” question is slightly different than “what would you do if you started from scratch again today?” which is what I’m more interested in.]

I’m actually not sure I agree with that. Languages are designed standing on the shoulders of giants, and there are more, taller giants to stand on every year. Coming up with good language designs originally is very hard, but recognizing good designs and ‘stealing’ them is easier (though not easy).

I’m actually pretty optimistic about the prospects of people creating interesting and novel languages just by trying interesting and new combinations of well known features from other languages. One could argue that Julia is such a language; none of it’s features on their own are particularly novel, but together they do indeed make a novel package.

Not saying that I think a julia level language is likely to spring out of this project, but I’d certainly be interested to see some projects which amount to “Julia mashed up with _____”.


I agree with this, I just think that 30 days is really, really short for anything meaningful. There are lots of great ideas in various languages, but integrating them can be quite tricky and time-consuming, even on a basic level.

Also, I think that the best language designs are extensible without defining a completely new language. When fewer decisions are baked into the language, there is less of a compelling reason to create a new one for every specific situation.

Finally, I think that the best reason to create a new language is not some minor quibble about surface syntax with existing ones, but coming up with something a novel on a deeper level (eg Julia: let’s combine multiple dispatch, parametricttypes, and AOT compilation; Rust: let’s design a performant language with safe memory management). But novel ideas of this scale don’t seem to happen that often.

1 Like


Couldn’t resist :smiley:

I doubt anything serious would come out of the JAM, but I think it would be fun :beer:

1 Like

I’ve been thinking about stuff like this a bit. Now that we have stronger NLP models that seem to handle code ‘reasonably’ we’re approaching an interesting technological era. Where, once we have a language that is expressive enough and can touch everything it needs too (systems level, gpu, etc). Could language design be turned into an optimization problem? You know get the group theorists to do their sorcery, graph theorists to do theirs, logicians to do theirs, etc. What would it look like?

Or weirder yet - in 10 years will we even be writing code? Or just giving actions to something that writes code? If you really think about it, asking human beings to optimize code to machine specifications, or understand all the nooks and crannies in an API, is more of a “computer” task. Dunno, but if I made a language, it would be a language that could best be understood by machine learning models that are better then what they are today :P. I imagine the first Tech. Giant to creep into that domain with 90% success, and say, hoist it as a cloud service, will earn themselves billions and billions of dollars.

1 Like

I guess one way to “cheat” would be to play around with ideas that have been discussed already but aren’t quite implemented. For example something like Julia but with “immutable arrays by default” (see WIP PR) or, in general, with a stronger focus on immutabile data structures, would probably have a different “feel” (not sure if it’d count as a new language though, but it’s an interesting thing to try).


Yeah. I wouldn’t know where to start and I’m pretty sure the starting point today would be different than the starting point was back in 2009. So I’m curious what would be a rough outline of how to go about rebuilding Julia from scratch today. I imagine we could even use Julia to build a new language similar to Julia :slight_smile:


1 Like

Just make it fast, whatever it is.

1 Like