I’m talking even without knowledge of c or matlab? and if its not possible which language should I learn first?
I believe that Julia is the perfect first language to learn. I don’t have statistics to show or any facts behind.
It should be possible. The manual is particularly friendly, combining an introduction with a reference.
It is best if you have some goal in mind, eg a project that you want to implement. Since you mention Matlab, I assume that you are trained or learning in a field that uses numerical methods. Then it may be best to learn the language by implementing something simple.
It is very likely that you will get a lot of help from this forum when you are stuck.
I wrote a series of blog posts, starting here to learn Julia as a first programming language. They are written for the previous julia version (Julia 0.6), but mostly work on Julia 1.0 (when they don’t, there should be a comment with a fix). Hope they can be of help!
Also, I think the book Think Julia doesn’t assume any prior experience in programming, so it may be a good starting point.
I agree with @tpapp
that the manual is extremely well-written and reasonably beginner-friendly
what is the best way to learn? I haven’t found any online courses for it
There should be all instructions to follow the tutorial. If you won’t get it set up ask here for help.
There is a fair amount of overlap between most programming languages. There are ways to assign values to variables, access elements in arrays and control the flow of the program using operators, such as if, and, for and while loops etc. So perhaps a better way to answer your question is to ask is whether Julia is relatively easy to learn as a first language. The short answer to this question is yes.
Here is a more elaborated answer: Languages tend to differ in terms of syntax (e.g. denoting blocks with { } or the end keyword), some design patterns, and ease of initial setup. Julia’s syntax is terse, yet expressive, and also very readable–all of which are desirable attributes. I think people have differing opinions about specific design patterns, but Julia is certainly not bad in this regard and many respected computer scientists prefer the design patterns that Julia promotes. Unlike Java, I think Julia is easy to setup and creates fewer hurdles for using packages. I would recommend starting with juliabox because it requires no installation and uses jupyter notebooks, which are ideal for learning and tutorials. In addition to the resources listed by other posters, I would recommend checking out Wiki and video tutorials. As you develop larger products, I would recommend looking into an IDE such as Atom with Juno, and organizing your code in modules.
Depends strongly on what you want to do. If you care about speed / technical computing, or want to work with ODEs then julia is a good choice.
If you want a general purpose scripting language, then I’d recommend starting with python (+ numpy / sage for mathematics): The documentation and ecosystem is much more mature and unified, especially for stuff like file handling, parsing / regex / format strings, networking, etc, and you can find tutorials for anything. Likewise, sage has a much more unified mathematical library and documentation, combined with all of the python2.7 world (and parsing even simple file formats in mathematica or matlab is not something you want to do).
That being said, python is slow. If you plan to implement algorithms instead of gluing library functions or writing proof of concepts, then you will quickly reach its limits and are better off starting with julia right away.
In my opinion it is much better to start with a non-object oriented language (Julia). For instance Python is too strongly object-centric, and everything is shoehorned into that style.
Sure, it is very possible to learn Julia as your (very) first computer language.
It may spoil you for other languages though – it’s quite nice compared to most. And do note that many people survived, even thrived, by learning Basic (old style), Fortran, or some other language that really isn’t suitable for teaching good programming habits.
Here the key problems with using Julia as your first language:
-
It’s still a little wonky due to being a “new” language so things aren’t as consistent as you would find in a ‘mature’ language. Things break for no fault of yours, and a new programmer is going to make a lot of mistakes (old programmers do too) that need to be sorted out from what’s going wrong with the system.
-
There are few if any sources (books, videos) on HOW to program, as opposed to how to use Julia – for some languages there are many books, blogs, videos on adopting a programming mindset and what constitute good habits.
If #! becomes too difficult, work in another language for a few months with a good text on learning PROGRAMMING (not the language per se).
For #2 (only) you can read and work through any of the excellen books on how to THINK and GOOD HABITS. “Programming Tools in Pascal” is still one of my favorites and it would be pretty easy to adapt most of it to Julia. (Anyone who thinks this book is about ‘Pascal’ you has missed the point completely.)
Another would be “Structure and Interpretation of Computer Programms” (SICP) and the Open Course videos on it at MIT.
There are also ‘modern’ versions of this in Pythong (both books and videos) but they are no where near the cognitive quality of the originals.
There is an excellent book on PROGRAMMING in Julia here. I would say most suitable for learning how to program as well as learning Julia.
One can certainly do worse than “Think Julia”, or any of the Think Python, Think Java etc. books.
It too suffers from many of the problems is starts by disclaiming, but at least it tries.
It’s unfortunate that this is (among?) the best we can offer on HOW TO PROGRAM. that uses Julia – this recalls issue #1: Julia is a young language, intesting built atop one of the oldest still active: Lisp.
If we were speaking personally then explaining my reasoning would allows us to have an interesting discussion, but continuing such a discussion by describing my criticisms (or most every ‘how to program book’) here wouldn’t help the beginners who will read this thread so I will leave just this quote from SICP of John Locke, as true today as it was in 1690:
The acts of the mind, wherein it exerts its power over simple
ideas, are chiefly these three: 1. Combining several simple
ideas into one compound one, and thus all complex ideas
are made. 2. e second is bringing two ideas, whether simple
or complex, together, and seing them by one another
so as to take a view of them at once, without uniting them
into one, by which it gets all its ideas of relations. 3. e
third is separating them from all other ideas that accompany
them in their real existence: this is called abstraction,
and thus all its general ideas are made.
—John Locke, An Essay Concerning Human Understanding
(1690)
Ping me or start a conversation separately if you wish to discuss more.
HerbMartin@Gmail.com also.
The Julia manual is good and mostly accessible for beginners.
The more important thing that Tamas_Papp said is this:
“…have some goal in mind,…”
THE KEY to learning to program is to WRITE PROGRAMS.
Reading, videos, blogs are each important if you can find them to supplement the writing of programs, but writing actual programs is the most important element.
Programs can be (very) simple, but this really needs to include:
- Program you care about (something you WANT to run or use)
- Finishing a program
Then you repeat - over and over along with the reading, videos, and other methods of learning how to do it better.
What does ‘finishing’ mean? Producing or Pl something you or another person will actually USE or PLAY with ACTIVELY.
It’s doesn’t mean “perfect” or “containing all features” but it needs to be USEFUL or FUN for either you or another person you care about.
Now if it is something simple, you might only care about it for a few minutes, so that is when you repeat, with something a little more ambitious and a bit more permanent.
it’s possible to learn from “homework assignments”, “problem sets on the Internet”, or “examples in books”, but having something you CARE ABOUT and FINISH is far more valuable for learning to programming rapidly.
The best reason (there are many) for this is that you must keep going when you encounter problems and that is only likely and rewarding if you care about the program.
If you USE the program, then you will come to understand what it could do better and what it lacks, which will guide learning to improve on your first efforts.
I couldn’t agree more. I would add: non-object-oriented but with a good type system.