Roadblocks to using Julia in a university

Yesterday, in my university, our professor had a discussion with us yesterday on what programming language we’d love to use as the defacto to teach concepts from the foundation to the expert level on concepts like:

  • Multiple Dispatch
  • Functional Programming
  • Metaprogramming
  • Data Structures and Algorithms.

Guess what we ended up with? python (with the argument that the library extensions for cases where the above concept is not built-in is sufficient).

After a 3-hour talk trying to persuade them to use Julia as multiple dispatch is its primary paradigm, making it easy to express functional programming patterns, and it even goes further to provide metaprogramming, with built-in effective data structures and C-like speed for executing algorithms, they said NO because of a common argument they kept telling me:

  • We can’t teach a programming language intensively when no book has ever written by anyone of the co-creators on learning the language from scratch and explaining the concepts above from the bottom to the top.
  • Julia has 4 co-creators and its currently developing into 2.0. If no book has ever been written by anyone of those creators explaining the language from scratch, then its a false alarm that something is wrong and missing.
  • We don’t want to pass through the hassles of going to understand the language design itself and how it seeks to explore those concepts above. The creators should have done this for us in a book, so we just have to see through their eyes.

I felt bad and now have to keep up with using python, something I dislike programming in. But then I went back and rethought some of their arguments.

How would a university adopt Julia when it keeps adding features but only provides an explicit documentation with “how-to-use these features” explanations. Not that this is bad, but its only as good as a documentation for the REPL and get-on-the-go job to execute a task you need.

Universities want a programming language where the language will have an impact on how you think about programming and its concepts in general. Julia has this of course, but man its only assumptions, there’s no explicit book on it like we have for The C++ programming language by Bjarne Stroustrup, An Introduction to Python by Van Rossum, The Java Language Specification by James Gosling, The C# programming language by Anders Hejlsberg.

The books above were written by the co-creators of those languages and when it comes to understanding the language design, you’re sure to get it there. Julia’s documentation is great, but its a documentation, its not a book explaining the language design and how it seeks to approach software development (the major reason my professors disagreed with it).

Of course a book won’t make any language go to the next version, but what I’m arguing for is that 2.0.0 should only come when a book is out there for Julia by possibly all 4 co-creators @StefanKarpinski @viralbshah.

It can be a 4000 page book, no one cares. But it should seek to explore the language design itself and tell how the language seeks to approach software development and also on areas where it has great functionality (like Linear Algebra) built-in already.

From the community, I’ve come to understand all 4 co-creators @StefanKarpinski @viralbshah are very versed in different areas of the language, imagine how great it will be if all 4 come together and write extensively on each aspect of the language they’re very good with, we will have a big gigantic textbook that any university can use to “see through the eyes of the creators”.

For now I’d have to stick to the pain of actively programming in python:man_facepalming:t6:

9 Likes

I’d love to see that book, but it seems a pretty strange criterion to choose a language.

(Jeff’s Thesis introduction is quite nice btw)

27 Likes

The Julia Manual is pretty much that, but I understand a book is a necessity in most academic environments still.

However, I don’t think this will be the best use of the core developers’ time right now, as Julia is still in rapid development and their efforts would be better spent on continuing to improve the language itself.

Note that in the case of the other languages you mentioned, the books were practically a necessity since the Internet wasn’t as easily accessible at the time they were released, and so looking things up online posed a much higher barrier than today. I’m sure they too would have loved to focus more of their time on language development efforts. Since that is a possibility in the case of Julia, it should be made use of.

I do agree with the need for a good, comprehensive book that covers the language from the ground-up. There are many good books listed at Books, and Hands-on Design Patterns and Best Practices with Julia is an oft-recommended one. However, there’s still room for many more.

8 Likes

That’s not even true, there’s not clear intention for a 2.0 right now. Where did that come from :sweat_smile:.

24 Likes

Is it? I know there’s Github issues for v2, but it doesn’t seem active and I’ve heard development is focused on implementation and features in v1.

Would Julia actually be good at teaching functional programming? Sure, it has some influences, but it seems far worse than a truly functional language at teaching functional concepts like pure functions and monads. Or perhaps they only intend to teach limited functional aspects? That would make sense considering they’re fine with Python, which is a lot closer to Julia than any functional language.

This presumes that programming languages are comprehensively designed by the creators. That’s not even close to true for Julia; I’m sure the creators can cover a lot of contributions they didn’t make personally, but it’s better to include other dedicated developers of the language. It’s not even true for Python, “An Introduction to Python” has been credited to “Guido van Rossum and The Python development team” since v3.6.2 (or possibly earlier) up to the current v3.10. van Rossum stepped down as BDFL of Python in 2018, so it makes sense that more and more responsibility is out of the creator’s hands.

5 Likes

When someone really wants to use python, it is pretty easy for them to come up with reasons not to use Julia.

27 Likes

As much as I love Julia, I must admit that I still have reservations about recommending it to people who are just getting started in programming. It’s by far my favorite language for the day-to-day work that I do, but when someone is just getting started, there’s a good chance that they don’t really know what their day-to-day use cases will be. As a result, Python is pretty hard to argue against. They can learn Python and get into data science/AI/ML and then if they decide that’s not for them, they can start tinkering with a Raspberry Pi and build some cool DIY home automation/robotics type project. Or, maybe they decide they want to give web development a try, in which case they can play around with Django/Flask. And, at the end of the day, if they do end up doing the kinds of work that I think Julia is particularly great at, it’s not a huge leap to go from Python to Julia…

To be clear, I would say the same about many other programming languages as well…I love Rust but would never recommend it as a first language to anyone…unless I wanted to see them suffer and give up on programming completely…

6 Likes

In context of the original post, Julia has much to recommend it as a first language for learning the concepts of computation, over and above just giving some packages a run.

2 Likes

That’s unbelievable unfair, and surprising argument… Did Bjarne Stroustrup, Van Rossum, James Gosling, Anders Hejlsberg write a PhD thesis on their language, no I don’t think so but Jeff did, and it explains stuff!

Would I like books from the creators? I’m not opposed to that (if it helps), but note there are some good ones, even from a 15-year old! I suppose the creators could do a book, or have it ghostwritten… or not, I’m sure they could write. How is the material from them e.g. MIT not good (better than a book?)?

The worst thing, is that if this is a valid argument, there’s nothing I can do about it, besides complain about the argument. Same with [large] company support. To me Julia Computing feels like company support people do not regard highly enough.

1 Like

That’s a very weird criterion. There are many books teaching relativity from scratch and they’re not written by Albert Einstein.

11 Likes

that tag simply means the issue under consideration is too breaking can only be in v2.0, but so far I don’t think v2.0 is confirmed even, in the sense that not enough important issues require a breaking release to be fixed, the language was designed pretty well all things considered.

I personally don’t think v2.0 is ever gonna happen but I will relax that to not gonna happen in next 10 years

3 Likes

Just to avoid any ambiguity on this, NO.

There were some speculations, simply based on numbering, that after v1.9 was going to be v2.0. But the core devs (I think it was Viral Shah specifically) have emphatically said that after v1.9 is going to be v1.10, and there’s no specific plan for a Julia 2.0 in the near future.

1 Like

1.10 is after 1.9, that’s pretty much decided. In order to make 2.0 a reality there needs to be a change that offers enough benefit over the brekeage it would cause, and IMO I don’t see that anytime soon.
We can still do a lot without doing breaking changes.

3 Likes

See 27:35 for the assertion Julia 2.0 is not under work.

8 Likes

The way to interpret version numbers is (breaking, nonbreakingrelease), as opposed to a decimal number. So the first number will remain unchanged if the release isn’t breaking. The second number indicates the sequential non-breaking release number. So 1.9 indicates that it’s the ninth release that doesn’t break anything after 1.0 was tagged. Naturally, the 10th release that doesn’t break anything will be labelled 1.10. At this point, it’s best to ignore the first number altogether, since it’s unlikely that the core developers want to break user code without good reason. The second number can keep increasing with each release.

Python is a good language, including for teaching. But it’s just bizarre that it is intended to teach multiple dispatch and functional programming. It’s not impossible, but it seems harder to learn those in limited sources using obscure or atypical Python code when most sources use different languages that prioritize the concepts.

For example, when I was curious about what a monad was, I ran into a wall for most readily searched articles because I didn’t understand Haskell. I found a few Python examples, but it was awkward Python that could only somewhat approximate the concept. If I was motivated enough to keep trying to understand the purpose of monads, I would’ve learned Haskell.

5 Likes

The author of languages are not necessarily great writers or teachers so that’s a very bizarre criterion, unless these books are available for free and that’s your most important criterion. Van Rossum created Python for teaching but I never read his book to learn Python so I have no idea how good it is.

To learn FP no doubt Haskell is the best language and there are great books from Manning to learn it.

Julia is in my view the best language overall and certainly great for multiple dispatch and FP as well. Erik Engheim has a great book for beginning programmers which is being redone for Manning.

Python is good for OO and worth learning as it is most popular language and easy to learn and use as well.

You would be doing students a favor if you have them learn all three languages (or drop Haskell if you really think that’s too demanding). A good programmer should be multilingual.

Of course universities always seem to be behind the times. Many were still teaching Pascal (a great language btw) when it was long out of use in industry. To be more industry friendly, they switched over too and still teach Java or C++, which while widely used, are awful language to work with when learning or teaching core concepts. Way too much syntactic sugar that gets in the way.

2 Likes

Perhaps in this post there is the underlying goal of spreading julia more rapidly - and thus a book would be just the thing?
If there was something like Microcontrollers.jl to use julia for
IOT robot industrial hobby projects, etc. To do everything in julia even install an os on microcontrollers. To make it so much easier than using eg arduino.
That may be the thing that allows julia to get huge adoption growth.

Some quick thoughts:

  1. Your title seems to be about the next Julia version but the conversation seems to be about managing expectations and motivating immigration to Julia. It’s not clear to me what you’d like out of this convo, so this could get away from us a bit.
  2. Books are great for college classes because they show that you have a curriculum based on something. I’ve taken one course in grad school that was heavy programming and it was a waist. I learned everything on the job and only used books as a point of reference. We actively developed documentation (not perfect but improving every day) and there are books dedicated to the use of Julia. From an academic standpoint requiring a book for a programming class seems only like a way to get away with not creating ones own curriculum.
  3. The line between the status quo and innovation is problematic in teaching technologies in academics. For example, everyone in my department uses Matlab. The only reason it’s better in any way than Julia is because the packaging for their specific projects is established and they don’t want to use extra time to teach general computer science skills (in a biology department). As soon as students leave they have to go to a lab that uses a proprietary tool or learn a new programming language. That’s an education that has failed you. You taught a tool instead of a skill. So ask yourself if Python is being taught to learn important computer science concepts that will be translatable or to just support everyone’s existing setup. If it’s the latter, they can learn translatable concepts but also learn a bunch of bad habits that aren’t how code should work but are a language level compromise.

These points are mostly aimed at this: programming books are for reference and we have books and actively developing documentation for reference in Julia. In terms of efficiency, having core devs write a book out of obligation is a complete waste of time. I’d rather they continue to develop the language than write a book to sell the language.

  1. Personally, I think a de facto standard language to teach a concept is a mistake. If the goal is to teach class inheritance and you only taught how class inheritance works in python you have failed. There are pros and cons to all design choices and I think that’s often lost when people get rooted in a single language. No one would teach the concept of a data dictionary and only teach a single data structure, so why do we insist on having a single language represent how programming works?
6 Likes