# Repl.it Jam: If you knew then what you know now

**URL:** <https://discourse.julialang.org/t/repl-it-jam-if-you-knew-then-what-you-know-now/44905>\
**Category:** Internals & Design\
**Tags:** question\
**Created:** [August 14, 2020, 2:11am UTC](https://discourse.julialang.org/t/repl-it-jam-if-you-knew-then-what-you-know-now/44905 "2020-08-14T02:11:48Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![anon67531922](https://avatars.discourse-cdn.com/v4/letter/a/48db29/32.png) [@anon67531922](https://discourse.julialang.org/u/anon67531922)\
**Post date:** [August 14, 2020, 2:11am UTC](https://discourse.julialang.org/t/repl-it-jam-if-you-knew-then-what-you-know-now/44905/1 "2020-08-14T02:11:48Z")

</div>

Hi,

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

- [Repl.it Programming Language Jam: Create your own programming language](https://repl.it/site/jam)

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? 😄)

Repl.it 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 🍻 would be fine 🙂

Cheers

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

[Edit: I didn’t see [this](https://discourse.julialang.org/t/psa-julia-is-not-at-that-stage-of-development-anymore/44872) 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](https://github.com/HarrisonGrodin/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 👍 Surely there will be one or more such languages in the not-too-distant future 🙂 ]

---

<div class="post-metadata">

**Author:** ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)\
**Post date:** [August 14, 2020, 5:35am UTC](https://discourse.julialang.org/t/repl-it-jam-if-you-knew-then-what-you-know-now/44905/2 "2020-08-14T05:35:44Z")

</div>

> [@anon67531922](#):
>
> I get the impression it is getting easier and easier to build new languages

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 Repl.it 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.

---

<div class="post-metadata">

**Author:** ![mauro3](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mauro3/32/292_2.png) [@mauro3](https://discourse.julialang.org/u/mauro3)\
**Post date:** [August 14, 2020, 9:18am UTC](https://discourse.julialang.org/t/repl-it-jam-if-you-knew-then-what-you-know-now/44905/3 "2020-08-14T09:18:34Z")

</div>

Stefan’s and Jeff’s answer to going back in time to the first commit: [Ask us anything: Jeff Bezanson and Stefan Karpinski - YouTube](https://youtu.be/vfxS6_Sx1Pk?t=2918)

---

<div class="post-metadata">

**Author:** ![anon67531922](https://avatars.discourse-cdn.com/v4/letter/a/48db29/32.png) [@anon67531922](https://discourse.julialang.org/u/anon67531922)\
**Post date:** [August 14, 2020, 9:40am UTC](https://discourse.julialang.org/t/repl-it-jam-if-you-knew-then-what-you-know-now/44905/4 "2020-08-14T09:40:03Z")

</div>

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

[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.]

---

<div class="post-metadata">

**Author:** ![Mason](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mason/32/2423_2.png) [@Mason](https://discourse.julialang.org/u/Mason)\
**Post date:** [August 14, 2020, 7:30pm UTC](https://discourse.julialang.org/t/repl-it-jam-if-you-knew-then-what-you-know-now/44905/5 "2020-08-14T19:30:55Z")

</div>

> [@Tamas\_Papp](#):
>
> Possibly — but it is not getting any easier to _design_ good languages.

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 \_\_\_\_\_”.

---

<div class="post-metadata">

**Author:** ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)\
**Post date:** [August 15, 2020, 8:08am UTC](https://discourse.julialang.org/t/repl-it-jam-if-you-knew-then-what-you-know-now/44905/6 "2020-08-15T08:08:38Z")

</div>

> [@Mason](#):
>
> Coming up with good language designs originally is _very hard_ , but recognizing good designs and ‘stealing’ them is easier (though not easy).

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.

---

<div class="post-metadata">

**Author:** ![anon67531922](https://avatars.discourse-cdn.com/v4/letter/a/48db29/32.png) [@anon67531922](https://discourse.julialang.org/u/anon67531922)\
**Post date:** [August 15, 2020, 8:38am UTC](https://discourse.julialang.org/t/repl-it-jam-if-you-knew-then-what-you-know-now/44905/7 "2020-08-15T08:38:02Z")

</div>

> [@Tamas\_Papp](#):
>
> (eg Julia: let’s combine multiple dispatch, parametricttypes, and AOT compilation; Rust: let’s design a performant language with safe memory management)

![image](https://global.discourse-cdn.com/julialang/original/3X/d/e/dee7fc91a79cd34ce14d109b0309beea3ddd29e4.jpeg)

Couldn’t resist 😃

I doubt anything serious would come out of the Repl.it JAM, but I think it would be fun 🍺

---

<div class="post-metadata">

**Author:** ![anon92994695](https://avatars.discourse-cdn.com/v4/letter/a/ce7236/32.png) [@anon92994695](https://discourse.julialang.org/u/anon92994695)\
**Post date:** [August 15, 2020, 12:48pm UTC](https://discourse.julialang.org/t/repl-it-jam-if-you-knew-then-what-you-know-now/44905/8 "2020-08-15T12:48:55Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![piever](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/piever/32/1815_2.png) [@piever](https://discourse.julialang.org/u/piever)\
**Post date:** [August 15, 2020, 3:50pm UTC](https://discourse.julialang.org/t/repl-it-jam-if-you-knew-then-what-you-know-now/44905/9 "2020-08-15T15:50:08Z")

</div>

> [@Tamas\_Papp](#):
>
> 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, parametric types, 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.

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](https://github.com/JuliaLang/julia/pull/31630)) 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).

---

<div class="post-metadata">

**Author:** ![anon67531922](https://avatars.discourse-cdn.com/v4/letter/a/48db29/32.png) [@anon67531922](https://discourse.julialang.org/u/anon67531922)\
**Post date:** [August 15, 2020, 6:41pm UTC](https://discourse.julialang.org/t/repl-it-jam-if-you-knew-then-what-you-know-now/44905/10 "2020-08-15T18:41:36Z")

</div>

> [@piever](#):
>
> I guess one way to “cheat” would be to play around with ideas that have been discussed already but aren’t quite implemented.

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 🙂

> [@anon92994695](#):
>
> Or weirder yet - in 10 years will we even be writing code? Or just giving actions to something that writes code?

Zactly.

---

<div class="post-metadata">

**Author:** ![tbeason](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tbeason/32/15898_2.png) [@tbeason](https://discourse.julialang.org/u/tbeason)\
**Post date:** [August 15, 2020, 7:24pm UTC](https://discourse.julialang.org/t/repl-it-jam-if-you-knew-then-what-you-know-now/44905/11 "2020-08-15T19:24:50Z")

</div>

Just make it fast, whatever it is.
