I’ve changed the title to hopefully more encapsulate the topic at hand. @uje I hope that this matches your desire for this discussion; let me know if not.
In case it is helpful, here are links to Jeff Bezanson’s master and PhD theses:
Github hosted copy:
My pain is that the next ground breaking stuff on Julia should be a book where a lot of the concepts are taught from ground up. The reason is because if Julia wants to get into universities then it needs to be deeply rooted, not just a “how-to” documentation style.
The core developers might not write it, @tim.holy is now a part of the development and he’s a professor, so he can help as well. There are others as well.
Someone highlighted above about the core developers focusing on just developments. Well you’re utterly correct, but if new tools keep getting built and word is not out to tell people of them and better still how to effectively use them (which is the problem on HN with people using Julia the wrong way and then getting pissed), how then is the language going to be massively adopted? Look at Java, man that language alone had everyone rethink programming. They made the OOP thing popular. OOP wasn’t better than Fp, but at least it sold more than FP did. That didn’t happen by just new tools, it happened because new tools were developed and people got to know about the tools deeply and how it can attack large scale problem.
@viralbshah when asked about Julia growth, said HN was a big part of it. That’s to tell you new “hidden” tools don’t help as much as “getting in the news”. Python doesn’t do a better job than Julia, but its popular and that alone translates into everything you see it doing today.
When python came out, people sticked to BASIC, fast-forward 20 years later, you have the popularity of BASIC die down.
So yes, it doesn’t have to be the core devs, but I just can’t think of any other person who knows the language so well to explain it concepts on how to effectively use it to attack large scale problem on any computing field.
But there are already a good number of Julia books, including books explicitly targeting at undergraduate learning from the ground up:
IMO the lack of textbooks in Julia is certainly makes it difficult to learn the language. It will
certainly help adoption if more textbooks are written (not necessarily by creators). The available textbooks cover only the elementary topics.
On the other hand for languages like C, python there is a wide range of books available targeting different audiences.
Maybe the manual is sufficient for people with CS background but difficult topics like “Value types” etc. are not very well explained.
I think you’re referring to my comment. I wasn’t arguing that they shouldn’t explain anything. Rather, I think that the people that are actively interested in writing books continue doing that and they continue focusing on good documentation. Both are occurring.
It sounds like what you’re asking for is an official source on all programming concepts from the perspective of Julia. I don’t really see how that can exist for any language. Python doesn’t have every programming concept implemented, so how do you teach everything only using Python?
I’m talking in respect to the concepts I mentioned in the original post, and that is where Julia says it shines, so you get it?
I just assumed you were interested in more than the four you mentioned. All four of those topics are covered in books to some degree (some with entire books dedicated to them).
I’m curious what you see as special about Tim here as opposed to other contributors. Is it because he is a professor of neuroscience? Tim is an important contributor, but there are many other academics involved.
He has a reputation for getting things done and has a last name suggesting angelic qualities?
When I called his name I’m talking about other contributors in general. He’s the only one I know by name apart from @kristoffer.carlsson toffer.carlsson
See the following link for more contributors:
Tagging users not involved in a conversation sends them an email/notification and brings them into the conversation. Sending them a notification that you think they should write a textbook is not how anyone would decide to dedicate many hundreds or even thousands of hours to writing a book — hours that aren’t spent developing Julia itself or packages or on their day jobs.
Have you evaluated the existing books?
Maybe i’m too far away from that for too long, but weren’t universities the place you do experimental stuff?
I can understand a lecturer doesn’t want to go into “julia consulting” mode, but this “first we need to see a book” seems strange.
I’m not aware of any source that claims Julia shines or even prioritizes functional programming. I have seen several forums remind people how Julia isn’t like functional languages: imperative looping blocks, impure functions, mutable data structures, mostly eager evaluation, lack of tail call optimization. Some sources do mention that Julia has a functional aspect: functions are treated as first-class citizens, which allows higher order functions. However, nobody would consider learning the use of higher order functions alone to be equivalent to learning functional programming.
I agree that a book explaining ground-up concepts in Julia would be good, and those already exist. If there is a problem with accessing those books, maybe there might be some ways to address that.
I think you’re wrongfully expecting that standardized teaching must incorporate groundbreaking features. It’s actually quite feasible to publish a book version every year that includes new features, e.g. “An Introduction to Python”. But are students expected to purchase a new, nearly identical edition every year just to read about new features? Are your teachers going to rewrite their curriculum every year to incorporate those new features? If the purpose is to teach established concepts or applications (rather than a particular tool like a language), then rapidly changing the curriculum and textbooks will only confuse students.
Programming languages rapidly change, and while dedicated studying in a 10-week course with a textbook gets you the fundamentals (e.g. multiple dispatch), you need long-term lower-intensity attention to keep fully up to date (e.g. v1.8’s type-annotated globals). Learning history in classes with a few good textbooks gives you the fundamentals for understanding world events, but you still need to keep up with the news.
I guess if you don’t want to change you can come up with a million excuses. So I guess there’s that so don’t take things too literally. To me mostly it’s just laziness, as in it’s not worth putting in the work when they don’t know Julia themselves so it’s just too much work and alot of risk for them. Kinda makes sense.
Anyway, I bet the Java → Python transition has experienced this as well.
I do wonder why they chose multiple dispatch as a concept to teach. Might be a new thing.
There is Think Julia [Book]
Book written by the creator of the language is not necessarily a paragon of clarity.
No disrespect to Strustrup, but I have read much better books on programming C++ (Holub, for instance).
It’s built into a handful of programming languages and available as third-party libraries in a couple more, the wikipedia article on multiple dispatch / multimethods showcase some. I imagine this led them to think that multiple dispatch is catching on and might be worth introducing to students. Still bizarre that they chose Python to teach it, most of the other languages mentioned in the article do it a lot more smoothly.
Bear in mind a couple things when reading the wikipedia article though: 1) “dynamic dispatch” means runtime types are used to select methods; it’s not a contradiction with how Julians say “static dispatch” occurred during compile-time because Julia just happens to compile after getting runtime types, 2) some of the statistics they use to compare language’s multimethodness isn’t quite reflective of Julia as a whole; the data was calculated from
Base functions in 2017).
I just want to jump in here and say that my first attempt at learning a contemporary language, was Python. I knew BASIC and LOGO and even some Assembly from the 80’ but largely became distracted by other activities, family, career etc. I have uses for learning a contemporary language now and attempted Python several times along with Java. I read about Julia and looked into it and starting to play with it. I found it very easy to understand, the syntax made a lot of sense the command words chosen aren’t some esoteric jargon that only academic CS people understand. There weren’t these odd rules about bracketing, which brackets to use and when that made little sense. There was no worrying about whitespace and indentation was not required for stuff to actually work, it is highly recommended for others to understand what you have done.
Basically Python is far to verbose for me to get something done. All those commands with methods upon methods to accomplish a task. I do not feel that Python is the best go to language for beginners and it is clearly able to handle more advanced tasks such as AI or ML.
Just my 2 cents as a self taught, and probably a pretty piss poor programmer.