Is it a good idea to learn Julia as my 1st coding language? If so what are some good beginner projects.
It somewhat depends on what you want to do with your 1st coding language. I think it is better than many other choices because it lets you explore many important programming concepts that are absent from other dynamic and interactive languages.
A nice prerequisite for programming in any programming language is to learn how the shell scripting works. Bash and the helper executable files the system comes with are the best start. This is my experience after 30 years of programming mostly in Python but also in ALGOL60, Basic,APL, VisualBasic, Java, JavaScript, Perl, PHP, SQL, C, C++, Golang, Rust, Ruby, Lua and in the last year a plenty of others including Julia.
Lua is 2 MByte download, Python 20 MByte, Julia 120 MByte and more … and shell scripting is there just without any download and installation.
I would reccomend to start with the basics learning how the system works … this will make learning any further language much easier.
Best … you start to think the oOo way and make the system understand what you say instead of learning the language the system can understand … These are so my 3 Cents … from someone who just started on Julia and is still not sure if it is worth to stick with it.
Notice that LLMs changed since 2023 the world of programming … if you are able to state clearly in English language what your code is expected to do, the LLMs will write the code for you … also in Julia … but being most proficient writing Python and C, C++ .
I’ll start by saying that the choice of first language doesn’t matter too much IMO. Common Lisp was my first language, then SAS, then Python…the initial difficulty is primarily in learning programming, not learning the language.
The one major exception is if you specifically want to learn to make web apps – then you should really start with javascript.
Julia is a totally fine choice. There are plenty of resources, like the MIT introduction to computational thinking course: https://www.youtube.com/playlist?list=PLP8iPy9hna6T56GkMHEdSrjCCheNuEwI0
Julia is very well suited to numerical code and data transformations. If you have a project in mind that mostly involves transforming some data in other data, I would start there.
I think that, for your first language, you are generally best off with whatever language has the most resources local to you — courses at your school, friends or colleagues or teachers who know the language and can help you, etcetera. Nowadays, that likely points most people to Python, for better or for worse.
Other than that, I’m not sure it matters too much which language you start with, as long as it’s not too idiosyncratic. But as soon as possible, even before you have fully mastered your first language, my feeling is that you should start learning your second language (and your third language, and so on…). Learning multiple languages helps you to separate the syntax (the “spelling”) from the underlying concepts, and you should be pleasantly surprised at how much easier it is to learn your second language than it was to learn the first. It’s almost impossible to truly understand programming if you know only one language.
Choosing particular language becomes a more relevant choice only later, when you want to learn something very specific that some languages do better than others (e.g. OOP or performance engineering or compilers or hardware hacking), or when you are embarked on a project where the end goal is more than just pedagogy (e.g. you want to develop a game, or a scientific simulation, or a website). At that point, knowing a variety of languages will give you more tools to work with.
This may not be true for everyone, but at least for me, I needed projects that I really care about to drive me to learn programming.
For me, I was a teacher and we needed a simple database, so I learned (shudder) Microsoft Access. Then a friend needed to scrape some data from websites, so I learned some basic Python. Then, I wanted to automate some spreadsheets in Google Suites, so I learned JavaScript.
All this to say, learning to program can be REALLY REALLY frustrating and, at times, demoralizing. So you need some goal that is sufficiently motivating to get you over those bumps.
So I would pick a language with the facilities to accomplish the task you really want to get done.
Edit: an exception that proves the rule – I kinda liked the idea of making video games, but I didn’t have a clear idea about what game I wanted to make. I downloaded Unity, poked around in the C# for a bit, got frustrated that I didn’t get it, and quit. I still don’t know C#. But if I had had a fire in me to make my dream of a game come true, I would have pushed through.
I almost always recommend Processing as a first “language” because feedback is exciting and immediate, and the resources are excellent. There are both Java and Javascript versions, and it honestly doesn’t matter which one you pick.
Download here: https://processing.org/
And learn by following along to videos here: https://www.youtube.com/@TheCodingTrain/featured (watch the p3 ones if you go with java, and the p5 ones if you go with javascript)
That said, if your immediate programming goals involve serious numerical computing (linear algebra or otherwise), I would choose julia 10 times out of 10.
Are you still there? Could you provide a bit more background about your interests? In general, I would say YEAH, Julia is a perfect language to start a coding adventure. You will keep coming back to it. The syntax and logic (at least on paper) are exceptional in this part of the universe, especially if you are interested in data science but not exclusively. However, please be advised that after writing a few thousand lines, I would also recommend diving into another language (potentially Python, and later, getting some basics of C++ and Rust). This is especially true if your interests lie in some of the hottest topics like artificial intelligence or quantum computing. It’s not that these areas aren’t present in Julia, they are, and some segments of these topics are exceptional in Julia. However, there seems to be a gap between the upper beginner and lower advanced levels in terms of the number of online educational and practical resources (Julia vs Python). In many cases, you would also need to be prepared to write a wrapper first, just to make your initial software project work, which is not the case with Python. Moreover, it is usually much easier with Python to quickly scale your computational project (as far as I know, we do not have anything like Ray or Max Engine; Distributed.jl is not quite the same, and MPI.jl is somewhat a bit mysterious in Julia). If you stay only within Julia, I believe your progress may not be as fast as you might like it to be. Regarding good beginner projects, again, please provide a bit more background about your interests. Additionally, there are frequent Julia Community Events (Community). My recommendation would be to try JuliaHPC and ML Meetups. To sum up, I think Julia is a perfect language to start your coding adventure, and you will keep coming back. Don’t worry, you will learn Bash along the way. This way or another, good luck. [Disclaimer: I am not a professional coder. I am a graduate of a business school with a background in research (law) and professional experience in information technology (not coding) and investment banking (m&a). I was in your place about three years ago.]