# Gratuitous, Annoying Changes for Julie 2.0

**URL:** <https://discourse.julialang.org/t/gratuitous-annoying-changes-for-julie-2-0/66170>\
**Category:** Offtopic\
**Tags:** humor\
**Created:** [August 11, 2021, 4:33am UTC](https://discourse.julialang.org/t/gratuitous-annoying-changes-for-julie-2-0/66170 "2021-08-11T04:33:54Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![blackeneth](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/blackeneth/32/10353_2.png) [@blackeneth](https://discourse.julialang.org/u/blackeneth)\
**Post date:** [August 11, 2021, 4:33am UTC](https://discourse.julialang.org/t/gratuitous-annoying-changes-for-julie-2-0/66170/1 "2021-08-11T04:33:54Z")

</div>

In a another thread (that has gone on way longer than I expected) @StefanKarpinski stated

> we are not interesting in making gratuitous annoying changes in Julia 2.0.

Where some may hear an idea and say, “Why?”, I see it and say **why not?**

Below, therefore, are a list of gratuitous annoying changes for Julie 2.0. I’m pretty sure some changes, like switching to the EBCDIC character set are locked-in, so I’ll just concentrate on those changes that are in the final stages of development and just require a little polishing.

**Name and Logo**

The existing name, “Julia”, was thought to be a little pretentious and off-putting. Therefore, the language will be renamed to Julie, which is considered to be more informal, friendly, and accessible. The new logo may look something like this:

 ![Julie](https://global.discourse-cdn.com/julialang/original/3X/1/6/163e63d56f6215950e9a936b1a5a6e25008edca0.png)

**Scoping Rules**

A lot of confusion has been experienced with the existing scoping rules. Is it a global variable? Local? Who knows?

Therefore, the decision has been made to put everything in the global scope. There will no longer be any local scopes.

A big side benefit is that the syntax can be simplified by eliminating functions entirely. Instead, the existing @label @goto syntax will be used.

For example, here is a Julie 2.0 program that prints several anti-primes:

```julia
# print anti-primes; natural numbers with more factors than any smaller than itself 
begin 
    c = -999
    n = 0 
    t = 0 
    d = 0 
    @label j20
        n += 1
    @goto j60
    @label j40 
        if t==20 
            @goto j200
        end
    @goto j20
    @label j60 
        d = 0
    for f in 1:Int(round(n/2))
        if mod(n,f) == 0
            d += 1
        end
    end
    if d > c 
        @goto j120
    end 
    @label j70 
        @goto j40
    @label j120 
        c = d
        t += 1
        println(n)
    @goto j70
    @label j200 
        println("the end")
end 

```

Isn’t that so much clearer and understandable that Julia 1.x.x. code? Recent research has shown that Dijkstra was wrong, and the GOTO statement is essential for writing clear, maintainable code. J̵u̵l̵i̵a̵ Julie 2.0 be at the cutting edge of the renaissance of the GOTO statement.

**One Import Keyword**

In [Issue #39235](https://github.com/JuliaLang/julia/issues/39235), discussing having just one import keyword for J̵u̵l̵i̵a̵ Julie 2.0, an offhand suggestion was made to copy the Python `from module import *` syntax. To which, @StefanKarpinski replied:

> I hate `from Module import blah` with all my guts and will die on that hill. One of the major benefits of being able to do all imports with a single keyword is that a block imports can look more consistent and is easier to read. If some imports look like `import Foo` and then interspersed with that are these hideous `from Bar import baz` statements, then not only is that benefit lost, but I might as well just stick needles in my eyes and then I don’t have to worry about this problem anymore.

Well, everyone agreed that they really wanted to see that, so `from module import *` is a mortal lock to be in Julie 2.0.

**Simplified Error Messages**

Current error messages often try to indicate the cause of the error, and sometimes even suggest how the user might correct the problem [which brings up the question, if the compiler knows how to correct it, why doesn’t it just fix it? It’s like the infamous “missing semicolon error” in Pascal – if the compiler knows the semicolon is missing, why doesn’t it put one in? But I digress.]

Informative error messages have been a tremendous burden on the developers, so most Julie 2.0 error messages will be simplified to:  
 ![error-msg](https://global.discourse-cdn.com/julialang/original/3X/f/d/fdf040fb5801dccc004430813ff944f8d01c154f.png)

**Batteries Included – Including FORTRAN!**

In order to end the [What is the advantage of Julia over Fortran?](https://discourse.julialang.org/t/what-is-the-advantage-of-julia-over-fortran/65964/102) thread, the decision was taken to just add all the Fortran syntax to Julie 2.0. Julie 2.0 will be able to compile and run Fortran programs, even those written 70 years ago. An additional benefit will be the users will be able to code `Do loops`, as God intended.

A suggestion was made to include all of Python syntax as well, but so many people in the meeting started barfing that the meeting had to be adjourned and no decision was taken.

**Your Turn**

The definition of Julie 2.0 has not yet been finalized, so you still have a change to suggest gratuitous and annoying changes. The success of Julie 2.0 depends on the contributions of users like you.

---

<div class="post-metadata">

**Author:** ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)\
**Post date:** [August 11, 2021, 4:39am UTC](https://discourse.julialang.org/t/gratuitous-annoying-changes-for-julie-2-0/66170/2 "2021-08-11T04:39:41Z")

</div>

I don’t know if this is the right direction. I don’t think we should be copying MATLAB’s design philosophy.

---

<div class="post-metadata">

**Author:** ![Gnimuc](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gnimuc/32/2194_2.png) [@Gnimuc](https://discourse.julialang.org/u/Gnimuc)\
**Post date:** [August 11, 2021, 4:43am UTC](https://discourse.julialang.org/t/gratuitous-annoying-changes-for-julie-2-0/66170/3 "2021-08-11T04:43:54Z")

</div>

😆 😅 🤣 :troll:

---

<div class="post-metadata">

**Author:** ![blackeneth](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/blackeneth/32/10353_2.png) [@blackeneth](https://discourse.julialang.org/u/blackeneth)\
**Post date:** [August 11, 2021, 4:49am UTC](https://discourse.julialang.org/t/gratuitous-annoying-changes-for-julie-2-0/66170/4 "2021-08-11T04:49:07Z")

</div>

Your comment reminded me that I left something out!

Julie 2.0 will cost $5000 (per user) to download. Each package you download will cost $1200 (per user).

Per year.

---

<div class="post-metadata">

**Author:** ![Albert\_Zevelev](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/albert_zevelev/32/11844_2.png) [@Albert\_Zevelev](https://discourse.julialang.org/u/Albert_Zevelev)\
**Post date:** [August 11, 2021, 5:52am UTC](https://discourse.julialang.org/t/gratuitous-annoying-changes-for-julie-2-0/66170/5 "2021-08-11T05:52:44Z")

</div>

It’s not April fools, bad timing

---

<div class="post-metadata">

**Author:** ![learned\_fool](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/learned_fool/32/21934_2.png) [@learned\_fool](https://discourse.julialang.org/u/learned_fool)\
**Post date:** [August 11, 2021, 5:54am UTC](https://discourse.julialang.org/t/gratuitous-annoying-changes-for-julie-2-0/66170/6 "2021-08-11T05:54:41Z")

</div>

No one wants to litter the code base with `.` everywhere. I want Julie 2.0 to use R like broadcast to make my life easier. It’s just so much faster and easier on the eyes

---

<div class="post-metadata">

**Author:** ![lobingera](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lobingera/32/211_2.png) [@lobingera](https://discourse.julialang.org/u/lobingera)\
**Post date:** [August 11, 2021, 5:54am UTC](https://discourse.julialang.org/t/gratuitous-annoying-changes-for-julie-2-0/66170/7 "2021-08-11T05:54:44Z")

</div>

There are use cases of julia in which this is negligible cost.

---

<div class="post-metadata">

**Author:** ![oheil](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oheil/32/220745_2.png) [@oheil](https://discourse.julialang.org/u/oheil)\
**Post date:** [August 11, 2021, 6:33am UTC](https://discourse.julialang.org/t/gratuitous-annoying-changes-for-julie-2-0/66170/8 "2021-08-11T06:33:03Z")

</div>

> [@blackeneth](#):
>
> A suggestion was made to include all of Python syntax as well, but so many people in the meeting started barfing that the meeting had to be adjourned and no decision was taken.

If this will not be in Juli ~~a~~ e 2.0 I insist, that syntactic indentation is recognized and `end` keyword is optional. I finally want my loops to be:

```julia
start=1
end=10
for i = start:end
    println(i)
println("Isn't that so much more readable?")

```

If not I change to Tuplex as my only language for all future:

> **[Tuplex: Indentation Syntax](https://tuplexlanguage.github.io/site/2020/11/29/Indentation_syntax.html)**
>
> The Tuplex Programming Language

Good bye.

---

<div class="post-metadata">

**Author:** ![blackeneth](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/blackeneth/32/10353_2.png) [@blackeneth](https://discourse.julialang.org/u/blackeneth)\
**Post date:** [August 11, 2021, 7:34am UTC](https://discourse.julialang.org/t/gratuitous-annoying-changes-for-julie-2-0/66170/9 "2021-08-11T07:34:12Z")

</div>

The R assignment operator ← would be great as well!

---

<div class="post-metadata">

**Author:** ![johnh](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/johnh/32/3615_2.png) [@johnh](https://discourse.julialang.org/u/johnh)\
**Post date:** [August 11, 2021, 7:39am UTC](https://discourse.julialang.org/t/gratuitous-annoying-changes-for-julie-2-0/66170/10 "2021-08-11T07:39:38Z")

</div>

> [@blackeneth](#):
>
> will be able to compile and run Fortran programs, even those written 70 years ago.

Excellent! I shall get some of my old card decks ready to run then.  
Hollerith constants are good enough for anyone.

---

<div class="post-metadata">

**Author:** ![fgerick](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/fgerick/32/13228_2.png) [@fgerick](https://discourse.julialang.org/u/fgerick)\
**Post date:** [August 11, 2021, 8:29am UTC](https://discourse.julialang.org/t/gratuitous-annoying-changes-for-julie-2-0/66170/11 "2021-08-11T08:29:06Z")

</div>

I know this thread is in offtopic and tagged _humor_, but I’m afraid the mocking of other language designs will look very arrogant and uninviting to people from other communities.

---

<div class="post-metadata">

**Author:** ![johnh](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/johnh/32/3615_2.png) [@johnh](https://discourse.julialang.org/u/johnh)\
**Post date:** [August 11, 2021, 9:01am UTC](https://discourse.julialang.org/t/gratuitous-annoying-changes-for-julie-2-0/66170/12 "2021-08-11T09:01:50Z")

</div>

The Pascal assignment operator would be excellent :=  
I always read that as ‘becomes equal to’

---

<div class="post-metadata">

**Author:** ![Eben60](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/eben60/32/13475_2.png) [@Eben60](https://discourse.julialang.org/u/Eben60)\
**Post date:** [August 11, 2021, 10:06am UTC](https://discourse.julialang.org/t/gratuitous-annoying-changes-for-julie-2-0/66170/13 "2021-08-11T10:06:18Z")

</div>

I would suggest to use Pascal := for assignment by value, and R operator ← for assignment by reference. Then the equal sing = can be used in comparisons, eliminating the source of many errors.

---

<div class="post-metadata">

**Author:** ![oheil](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oheil/32/220745_2.png) [@oheil](https://discourse.julialang.org/u/oheil)\
**Post date:** [August 11, 2021, 12:22pm UTC](https://discourse.julialang.org/t/gratuitous-annoying-changes-for-julie-2-0/66170/14 "2021-08-11T12:22:43Z")

</div>

> [@fgerick](#):
>
> I know this thread is in offtopic and tagged _humor_ , but I’m afraid the mocking of other language designs will look very arrogant and uninviting to people from other communities.

That’s true. Let’s mix some Julia oddities in (because any language has some):  
…Well I am bad in doing this, but I think Julias _Scoping Rules_ are quite special …

Let’s make them more confusing for Juli ~~a~~ e 2.0!

---

<div class="post-metadata">

**Author:** ![fabiangans](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/fabiangans/32/2624_2.png) [@fabiangans](https://discourse.julialang.org/u/fabiangans)\
**Post date:** [August 11, 2021, 12:53pm UTC](https://discourse.julialang.org/t/gratuitous-annoying-changes-for-julie-2-0/66170/15 "2021-08-11T12:53:06Z")

</div>

Let’s make AbstractArrays covariant by simply defining

```julia
const NewAbstractArray{T,N} = AbstractArray{<:T,N}

```

(and making this type the new default `AbstractArray`)  
Then finally, in Julie 2.0 we can happily write

```julia
f(x::AbstractArray{Number}) = my definition

```

---

<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 11, 2021, 3:41pm UTC](https://discourse.julialang.org/t/gratuitous-annoying-changes-for-julie-2-0/66170/16 "2021-08-11T15:41:28Z")

</div>

And to think I almost skipped over this thread because of the title…

---

<div class="post-metadata">

**Author:** ![ptoche](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ptoche/32/23554_2.png) [@ptoche](https://discourse.julialang.org/u/ptoche)\
**Post date:** [August 12, 2021, 2:16am UTC](https://discourse.julialang.org/t/gratuitous-annoying-changes-for-julie-2-0/66170/17 "2021-08-12T02:16:12Z")

</div>

from Julie 2.0 humor will be banned, so enjoy it while it lasts!

---

<div class="post-metadata">

**Author:** ![dlakelan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dlakelan/32/8491_2.png) [@dlakelan](https://discourse.julialang.org/u/dlakelan)\
**Post date:** [August 12, 2021, 3:33am UTC](https://discourse.julialang.org/t/gratuitous-annoying-changes-for-julie-2-0/66170/18 "2021-08-12T03:33:12Z")

</div>

Julia already has `@goto` for Julie 2.0 I think we really need `@comefrom`

---

<div class="post-metadata">

**Author:** ![natgeo-wong](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/natgeo-wong/32/10965_2.png) [@natgeo-wong](https://discourse.julialang.org/u/natgeo-wong)\
**Post date:** [August 12, 2021, 6:00am UTC](https://discourse.julialang.org/t/gratuitous-annoying-changes-for-julie-2-0/66170/19 "2021-08-12T06:00:53Z")

</div>

Humor is banned but Humour is not.

---

<div class="post-metadata">

**Author:** ![Per](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/per/32/10387_2.png) [@Per](https://discourse.julialang.org/u/Per)\
**Post date:** [August 12, 2021, 6:47am UTC](https://discourse.julialang.org/t/gratuitous-annoying-changes-for-julie-2-0/66170/20 "2021-08-12T06:47:17Z")

</div>

One thing that Julie 2.0 definitely needs to adopt from Matlab is displaying a gratuitous, annoying plot for a couple of seconds before giving you a REPL.

That will stop people complaining about the time to first plot.

[Next page](https://discourse.julialang.org/t/gratuitous-annoying-changes-for-julie-2-0/66170.md?page=2)
