I am 36 years old (damn time flies by), at the moment I have job and have worked 12 years as finance administration (to be honest its really boring). I want to start a new career path something that give me a future and something that is fun/cool because I need to work till 67 ;). With that said:
Can I learn Elixer from scratch? is it friendly for beginners? Where can I start learning Elixer? What are some good books (for beginners off course)?
I love learning new things, but need some guidance where to start, many thanks in advance.
Wow thats a sharp change Do you have an idea of the area you are trying to target often times Elixir by itself will not be enough. The best Elixir book I read so far is Elixir in Action by @sasajuric but not sure it would be the best starter book. The Little Elixir & OTP Guidebook by @bentanweihao might be easier (canāt tell for sure as I have not had time to really read it through yet)).
You certainly have chosen the right place to start. Elixir has a great life expectancy and is easily the goto language for web/embedded development for the next 10-15 years. Itās hard to see beyond that, but know that its foundation - Erlang/BEAM ā has already been around for about 30 years, and is now being re-discovered due to Elixir.
I recommend that you start with the online getting started guides on the main elixir website, then choose something that interests you to build, for example, a simple web page or commandline app. Then, as you start to build the app, research and learn what you need to know to build each phase of the app.
Learning by building something makes learning much more interesting for me and helps you solidify your learning.
@andre1sk many thanks for the suggestions, i will check them and see if my local library has these books otherwise i will order them. " Do you have an idea of the area you are trying to target" to be honest, no thatās why i need some guidance (like books and some basics than I can discover more and more).
@drfreeze thanks, for the small history lesson about Elixer, will check out their main website and see if I can start with that.
What fundamentals do you need to learn a language faster?
Thanks again for the useful info you guys have posted.
Ok so. My 2 cents : elixir is great for a beginner because it gives you āeasy waysā to do some things.
But there is really little materials in elixir for complete beginners in programming. I tried to work on that type of material but it take a ton of tine. What i can advice is to look at something like āAutomating the boring things with Pythonā or Python the Hard Way" both available for free online. I advise the former as you are in accounting.
At least the first chapters.
They will help you catch the vocabulary and the basics of the field. Then you can learn the basics of any language fast.
But that is just my POV.
Welcone in Elixir anyway I will ve happy to help if you need anything or have questions
If you havenāt been exposed to programming before, then (as much as I think Elixir is a great language) you might want to not learn Elixir (per se), but learn programming. Elixir is just a language; itās the concepts of programming that will help you actually achieve something with it. And after youāre good at the programming basics, learning a language is fairly simple (as most of them has English keywords, which are really just synonyms of one another, with probably different structures).
There are probably better books and online courses that will help you get through basic programming 101 that is more suited for total beginners. Starting with courses or books that use Python might be a good idea.
Elixir in Action is envisioned for people new to Elixir/Erlang. However, it assumes that a reader is otherwise experienced programmer, so I wouldnāt advise it myself to people completely new to programming. Of the existing books, my impression is that Introducing Elixir might be the most approachable book for a complete beginner (disclaimer: I didnāt read it myself, so I might be wrong).
Yeah, every language has its own syntax and styles, but the underlying styles are the same among them all. Some expose them functionally (like Elixir) or with Actors (also Elixir), some with OOP (Java, a fair warning to stay away from OOP, it makes for horrendously unmaintainable code even if done properly). And there are just so many styles.
If you want to get something āDoneā, depends on what you want to get done for the language I would suggest. Almost anything to do with web hosting or servers, then Elixir is perfect. If you want to get other things āDoneā then it depends on what you want to do.
If you want to learn to program generically then Iād recommend (in no specific order):
Some Assembly syntax, the old Motorola one is awesome and simple, learning it will teach you how the machine itself does things.
Some ML variant (Iād recommend OCaml), it teaches you the purity of functional programming and how utterly amazing and blissful it is to work in and it teaches you styles of doing things that will help you in all other languages.
Some Lispy language (Lisp, Scheme, Clojure, etcā¦), these languages are brace-heavy but that is because the syntax is its parsable tree and vice-versa, you can dynamically edit code like data then run it again as code, these teach you that code is more dynamic and powerful than anything you could really imagine, shows you how to approach problems differently.
A low-level language, I used to recommend C but honestly donāt anymore, learn Rust instead, it teaches you how to use mutability properly and safely, this is paramount for making the fastest of programs (which you rarely if ever need unless working on system-level things or AAA games or so); it teaching you how to use mutability safely will help you in every other language that also has mutability if you follow Rusts guidelines on managing ownership and borrowing.
Elixir is a wonderful mix of functional programming, actors, and almost-lispy macroās that it is another of those languages that are a bliss to work in, the lack of typed data is a bit bothersome at many times but the rest of the language is so wonderful that it makes up for it.
Forth, or some variation of concatenative programming, these are purely stack based languages where you have to think about problems differently, it is basically lambda calculus in a pure programming form, and things you learn you can help you elsewhere as wYeah, every language has its own syntax and styles, but the underlying styles are the same among them all. Some expose them functionally (like Elixir) or with Actors (also Elixir), some with OOP (Java, a fair warning to stay away from OOP, it makes for horrendously unmaintainable code even if done properly). And there are just so many styles.
If you want to get something āDoneā, depends on what you want to get done for the language I would suggest. Almost anything to do with web hosting or servers, then Elixir is perfect. If you want to get other things āDoneā then it depends on what you want to do.
If you want to learn to program generically then Iād recommend (in no specific order):
Some Assembly syntax, the old Motorola one is awesome and simple, learning it will teach you how the machine itself does things.
Some ML variant (Iād recommend OCaml), it teaches you the purity of functional programming and how utterly amazing and blissful it is to work in and it teaches you styles of doing things that will help you in all other languages.
Some Lispy language (Lisp, Scheme, Clojure, etcā¦), these languages are brace-heavy but that is because the syntax is its parsable tree and vice-versa, you can dynamically edit code like data then run it again as code, these teach you that code is more dynamic and powerful than anything you could really imagine, shows you how to approach problems differently.
A low-level language, I used to recommend C but honestly donāt anymore, learn Rust instead, it teaches you how to use mutability properly and safely, this is paramount for making the fastest of programs (which you rarely if ever need unless working on system-level things or AAA games or so); it teaching you how to use mutability safely will help you in every other language that also has mutability if you follow Rusts guidelines on managing ownership and borrowing.
Elixir is a wonderful mix of functional programming, actors, and almost-lispy macroās that it is another of those languages that are a bliss to work in, the lack of typed data is a bit bothersome at many times but the rest of the language is so wonderful that it makes up for it.
Forth, or some variation of concatenative programming, these are purely stack based languages where you have to think about problems differently, it is basically lambda calculus in a pure programming form, and things you learn you can help you elsewhere as well.
Javascript, it is a prototype programming language, and as such it can become just about anything as well. It is frankly a horrible language, untyped, trivial to break, but it is so ubiquitous that even if you use another language that compiles ātoā it without touching JS itself, it is still worth learning so you know how it works and about its limitations. It is a good language in which to learn what ānotā to do. Even all the libraries built on it to help build functional programming or whatever else are still a pain compared to other languages.
GLSL, or some other Shader language, this is a language that compiles to and runs on video cards, it is different as you make a tiny program, trying to keep it as small as possible, but it runs thousands to millions of copies of that same program to operate on little bits of an utterly massive data-set. You can use OpenCL as a GPU/CPU similar one that is more powerful but more complex as well (try to steer clear of Cuda, it is an NVidia-only variant that really gains nothing over OpenCL except lock-in). These show you how to operate over utterly massive amounts of data efficiently.
And there are others as well, but those is what Iād recommend. :-)ell.
Javascript, it is a prototype programming language, and as such it can become just about anything as well. It is frankly a horrible language, untyped, trivial to break, but it is so ubiquitous that even if you use another language that compiles ātoā it without touching JS itself, it is still worth learning so you know how it works and about its limitations. It is a good language in which to learn what ānotā to do. Even all the libraries built on it to help build functional programming or whatever else are still a pain compared to other languages.
GLSL, or some other Shader language, this is a language that compiles to and runs on video cards, it is different as you make a tiny program, trying to keep it as small as possible, but it runs thousands to millions of copies of that same program to operate on little bits of an utterly massive data-set. You can use OpenCL as a GPU/CPU similar one that is more powerful but more complex as well (try to steer clear of Cuda, it is an NVidia-only variant that really gains nothing over OpenCL except lock-in). These show you how to operate over utterly massive amounts of data efficiently.
And there are others as well, but those is what Iād recommend.
@Ivo_N - my advice would be to find a language that you love and then learn it. Thatās what I did a few years ago when I found Ruby, and itās what I am doing again now with Elixir
I think programming might come easier to some than others and I think if I had to learn languages like C, Java, PHP (or many other similar languages) I probably would have given up - I am really not fussed on languages that have endless semicolons and brackets or are white space dependent or where the syntax or paradigm just doesnāt make sense to me.
Perhaps we are just wired differently - some people love those languages
To have a very firm grasp on things thatās a very good list, one would have to defer getting something done for a long time to complete that list though
@OvermindDL1, first all many thanks for your time for typing out such big reply, I want to focus on web development first. I love those beautiful unique websites that have become super populair.in couple years (even if they have build with Ruby or Python).
The reason why I want to focus on Elixer/Phoenix (they are buddies like Ruby & Rails - Python & Django right?) is that I am 36 old and youth is heavy competition for me :D, what I want to say is that Elixer young and starts to get populair each day, if I can master it before it becomes the next big new thing (probably already started) I have the advantage over the youth ārivalsā.
Off-course I love to learn more like machine learning and so onā¦ but that is a next next step ;).
@AstonJ@andre1sk , yea I need to clone myself or hot tub time machine to complete that list.
Then for web stuff Elixir is a fantastic server-side language to use. Now about the front-end, that, again, depends on what you want to do. ^.^
So about the same age as me.
Can definitely pick this up.
If you donāt care too much about efficiency and just want to learn the machine learning stuff, Iād say use Python as it has excellent bindings to libraries for that, probably the best of any language outside of C++ itself. C++ for efficiency, but unless you are doing stuff that needs thousands of CPU cores, generally not an issue. ^.^
For a beginner, I think Elixir is a very good programming language:
*It is based on Erlang, which gets the concurrency/fault-handling models correct from the beginning.
*Its very pragmatic, coherent and consistent.
*We are lucky that the main language designer (Jose Valim) is a super talented language nerd and actively incorporating the best parts from other languages (such as Clojure, Scala, Ruby, .Net, etc).
Iād just mention that if you are looking to use Elixir in web-dev, sooner or later you will have to deal with the front-end stack. This means a minimum working knowledge of html/css/javascript, which also takes time and devoted study.