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