# Completely new to programming and Elixir

**URL:** <https://forum.elixirforum.com/t/completely-new-to-programming-and-elixir/16112>\
**Category:** Resources Chat/Questions\
**Tags:** learning-elixir\
**Created:** [August 27, 2018, 12:50pm UTC](https://forum.elixirforum.com/t/completely-new-to-programming-and-elixir/16112 "2018-08-27T12:50:00Z")\
**Posts on this page:** 19\
**Page:** 1

<div class="post-metadata">

**Author:** ![Nopp](https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/n/a87d85/32.png) [@Nopp](https://forum.elixirforum.com/u/Nopp)\
**Post date:** [August 27, 2018, 12:50pm UTC](https://forum.elixirforum.com/t/completely-new-to-programming-and-elixir/16112/1 "2018-08-27T12:50:00Z")

</div>

Hey guys and girls,

i am completely “new” to programming, recently played a bit with Python, Ruby and PureBasic, but i want to try something different (PureBasic was a lot different too, though…), so i came across different slant suggestions for Elixir and i want to give it a try.

I am a system administrator and have a small startup myself located in germany, so please beware that my english will have some errors 🙂  
In the future i want to be able to offer more than just System administration and consulting in this topics.  
I want to have the knowledge to build “small” or even bigger (web-)applications myself or in a small team and i think Elixir as the backend can help me with that.

My questions are:

1. What yould you think is the best way to get me started through funtcional programming and Elixir as the language?
2. Regarding Elixir itself: How can i imagine that Elixir need to have BEAM installed? Is this like the Java Runtime Environment most clients have installed?  
So if i have a client Software written in Elixir, the client has to install BEAM with it?  
And if i have a Webapplication the webserver has to run BEAM i suppose?

I hope i made everything clear!  
Greetings from germany,

Nopp

---

<div class="post-metadata">

**Author:** ![stefanchrobot](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/stefanchrobot/32/7657_2.png) [@stefanchrobot](https://forum.elixirforum.com/u/stefanchrobot)\
**Post date:** [August 27, 2018, 1:15pm UTC](https://forum.elixirforum.com/t/completely-new-to-programming-and-elixir/16112/2 "2018-08-27T13:15:55Z")

</div>

Welcome to Elixir! 😃

1. I’d suggest you go through [Elixir for Programmers](https://codestool.coding-gnome.com/courses/elixir-for-programmers) or [Programming Elixir](https://pragprog.com/book/elixir16/programming-elixir-1-6). The latter has a lot of exercises which is a great thing to do if your programming experience is limited. After that, I’d suggest [Elixir in Action](https://www.manning.com/books/elixir-in-action) to understand the power of BEAM.
2. Yes, BEAM is the VM required for Elixir (Elixir+BEAM is like Scala+JVM, just better!). When you’re going to release your software, you’d probably use something like [Distillery](https://github.com/bitwalker/distillery) that will package BEAM and your code as one deployment unit. Or you might want to use PaaS like [Gigalixir](https://gigalixir.com/) where everything is taken care for you.

---

<div class="post-metadata">

**Author:** ![benwilson512](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/benwilson512/32/1457_2.png) [@benwilson512](https://forum.elixirforum.com/u/benwilson512)\
**Post date:** [August 27, 2018, 1:28pm UTC](https://forum.elixirforum.com/t/completely-new-to-programming-and-elixir/16112/3 "2018-08-27T13:28:04Z")

</div>

Hey @Nopp welcome!

Let me see if I can address your questions:

1. I personally feel like [Search](https://pragprog.com/book/elixir/programming-elixir) is the best introduction to the language for folks who are newer to programming. It has a very gentle learning curve, and has lots of little examples to work with.

2. The vast majority of programs written in Elixir / Erlang run on something like a server, they are not generally programs that people install and run on their individual computers. That said, there are basically two ways you can run Elixir programs: compiled and run on the same computer, and as a packaged release.

- Compiled / Run in the same computer: For development work, you’ll want to have erlang and Elixir installed on your computer in full so that you can compile and run the code that you write. Personally I’m a fan of using [GitHub - asdf-vm/asdf: Extendable version manager with support for Ruby, Node.js, Elixir, Erlang & more · GitHub](https://github.com/asdf-vm/asdf) to get these installed.

- As a release: Once you’ve got a working program you can build what’s called a release. A release is a self contained package that includes your compiled code AND the BEAM. This means that if you go put this on your server you can execute it even if the server does not have the BEAM installed at all! Here’s the catch: The operating system that you run the package on needs to match the operating system it was built on.

---

<div class="post-metadata">

**Author:** ![Nopp](https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/n/a87d85/32.png) [@Nopp](https://forum.elixirforum.com/u/Nopp)\
**Post date:** [August 27, 2018, 1:30pm UTC](https://forum.elixirforum.com/t/completely-new-to-programming-and-elixir/16112/4 "2018-08-27T13:30:03Z")

</div>

@stefanchrobot Thanks for your answer. In my excitement i directly purchased this course: [The Complete Elixir and Phoenix Bootcamp (Udemy/self-published)](https://forum.elixirforum.com/t/the-complete-elixir-and-phoenix-bootcamp-udemy-self-published/2271) without any knowledge of it, besides the ratings.  
I hope it’s good. The price is way down than normal, so…

Thanks for your answers. I have to read a lot through the Elixir related stuff, like Distillery, Gigalixir etc.

---

<div class="post-metadata">

**Author:** ![Nopp](https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/n/a87d85/32.png) [@Nopp](https://forum.elixirforum.com/u/Nopp)\
**Post date:** [August 27, 2018, 1:35pm UTC](https://forum.elixirforum.com/t/completely-new-to-programming-and-elixir/16112/5 "2018-08-27T13:35:02Z")

</div>

Regarding @benwilson512 Nr.2:

- so it is not possible to write an application with elixir, which is installed on multiple clients, so they connect to another server instance or database?  
Like a “normal” client-server application? Outlook for example.

- So if i want to release my program to Windows 7 and Windows 10, i have to “built” it two times, or am i misunderstanding something?

Thanks for your answer 🙂

---

<div class="post-metadata">

**Author:** ![benwilson512](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/benwilson512/32/1457_2.png) [@benwilson512](https://forum.elixirforum.com/u/benwilson512)\
**Post date:** [August 27, 2018, 1:50pm UTC](https://forum.elixirforum.com/t/completely-new-to-programming-and-elixir/16112/6 "2018-08-27T13:50:13Z")

</div>

> [@Nopp](#):
>
> so it is not possible to write an application with elixir, which is installed on multiple clients, so they connect to another server instance or database?  
> Like a “normal” client-server application? Outlook for example.

It’s not very common to have Elixir as the client part of that, there aren’t really tools for building high end native UIs, it just isn’t a targeted use case of the platform. On the server side though the platform really shines, because it can easily handle interfacing with many clients simultaneously through its unique concurrency model.

> [@Nopp](#):
>
> So if i want to release my program to Windows 7 and Windows 10, i have to “built” it two times, or am i misunderstanding something?

I can’t speak to windows specifically, I don’t know if a release built for windows 7 will run on Windows 10. Generally speaking though the answer would be yes. On this note though, there’s sort of an option in the middle of the two options I gave before. If your windows 7 computer and your windows 10 computer DO have erlang installed already, then you could probably build 1 release that would work on both. They’d just need to already have erlang available, whereas in a normal release they don’t.

---

<div class="post-metadata">

**Author:** ![leifericf](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/leifericf/32/39367_2.png) [@leifericf](https://forum.elixirforum.com/u/leifericf)\
**Post date:** [August 27, 2018, 1:52pm UTC](https://forum.elixirforum.com/t/completely-new-to-programming-and-elixir/16112/7 "2018-08-27T13:52:13Z")

</div>

Hi, @Nopp and welcome to the community!

I won’t be able to give you a specific answer for your questions about learning functional programming in general and your questions about BEAM, but I can share some of my thoughts on learning Elixir.

My approach to learning Elixir has been to read books and do practical exercises. I can recommend [Programming Elixir](https://pragprog.com/book/elixir16/programming-elixir-1-6) and [Programming Phoenix](https://pragprog.com/book/phoenix14/programming-phoenix-1-4) to get a flying start.

If you are completely new to programming (depending on your current level), you might want to check out [Learn Functional Programming with Elixir](https://pragprog.com/book/cdc-elixir/learn-functional-programming-with-elixir) before you move on to Programming Elixir. I have not read this book myself, so I cannot personally vouch for it, but I have heard good things about it.

Since The Pragmatic Bookshelf is one of our community sponsors, you can get a generous 35% discount on those books and others by using the coupon code: ElixirForum

I also listen to these three podcasts: [ElixirTalk](http://elixirtalk.com/), [Elixir Outlaws](https://elixiroutlaws.com/) and [Elixir Mix](https://devchat.tv/elixir-mix/). I have found that listening to experienced developers talk about their way of thinking when solving problems is very beneficial to my learning process, as it help me to “think like an Elixir developer.”

Other than that, I like to share my thoughts and experiments on this forum to get feedback.

Different people learn more effectively by different methods, so I’m not sure whether this approach would work for you. This is just my preferred approach to learning.

---

<div class="post-metadata">

**Author:** ![Nopp](https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/n/a87d85/32.png) [@Nopp](https://forum.elixirforum.com/u/Nopp)\
**Post date:** [August 27, 2018, 1:59pm UTC](https://forum.elixirforum.com/t/completely-new-to-programming-and-elixir/16112/8 "2018-08-27T13:59:20Z")

</div>

@benwilson512  
Hmm, okay so Elixir is mainly used for web applications i suppose?  
Still fine for me. I read about a lot of tools for this, like elm or Clojurescript for example.

Regarding an installed client application:  
Is it possible to use another language for a UI and Elixir in the backend?  
What language paires well with Elixir for accomplishing this task?  
Or is this really never ever common with Elixir and i should move to another language when i want to perform those kind of tasks?

---

<div class="post-metadata">

**Author:** ![leifericf](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/leifericf/32/39367_2.png) [@leifericf](https://forum.elixirforum.com/u/leifericf)\
**Post date:** [August 27, 2018, 2:01pm UTC](https://forum.elixirforum.com/t/completely-new-to-programming-and-elixir/16112/9 "2018-08-27T14:01:17Z")

</div>

> [@Nopp](#):
>
> Hmm, okay so Elixir is mainly used for web applications i suppose?

Elixir is a general purpose language, which may be used for many different domains and purposes. See [Nerves](https://nerves-project.org/) as an example of a different domain. Due to the Phoenix web framework, many people have the impression that Elixir is only for web. Elixir is to Phoenix what Ruby is to Rails (sort of).

---

<div class="post-metadata">

**Author:** ![Nopp](https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/n/a87d85/32.png) [@Nopp](https://forum.elixirforum.com/u/Nopp)\
**Post date:** [August 27, 2018, 2:01pm UTC](https://forum.elixirforum.com/t/completely-new-to-programming-and-elixir/16112/10 "2018-08-27T14:01:57Z")

</div>

@leifericf Thanks for the links and your words.  
I have to say, that i am not the person reading hardcover books for learning purposes.  
For entertaining, sure, but not for learning.  
If there is a PDF or ebook version, this might suit me well better, or even a video course.  
Thanks!

---

<div class="post-metadata">

**Author:** ![benwilson512](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/benwilson512/32/1457_2.png) [@benwilson512](https://forum.elixirforum.com/u/benwilson512)\
**Post date:** [August 27, 2018, 2:03pm UTC](https://forum.elixirforum.com/t/completely-new-to-programming-and-elixir/16112/11 "2018-08-27T14:03:34Z")

</div>

Elixir is a fantastic backend for really any language. It’s been the case for a while now that the clients and servers use some sort of standard API to communicate, so you can pair basically any language on the client side and any language on the server side, it doesn’t much matter.

> [@Nopp](#):
>
> I read about a lot of tools for this, like elm or Clojurescript for example.

These are languages that run on the client side actually. They’re run in the web browser and talk back to the server, they aren’t languages that run serverside.

> [@Nopp](#):
>
> Elixir is mainly used for web applications i suppose?

That’s probably it’s most common use case. Erlang (also on the BEAM) is perhaps best known for being a control layer in telecommunication systems. It’s also the language used to power the chat service WhatsApp which has over a billion users.

---

<div class="post-metadata">

**Author:** ![leifericf](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/leifericf/32/39367_2.png) [@leifericf](https://forum.elixirforum.com/u/leifericf)\
**Post date:** [August 27, 2018, 2:06pm UTC](https://forum.elixirforum.com/t/completely-new-to-programming-and-elixir/16112/12 "2018-08-27T14:06:55Z")

</div>

> [@Nopp](#):
>
> I have to say, that i am not the person reading hardcover books for learning purposes.

That’s totally fine; some people learn more effectively by having other people show them the ropes in-person, or from doing exercises, etc. You might want to check out the Elixir track at [Exercism](https://exercism.io/). Perhaps that will be a learning approach with which you would be more comfortable.

Also, if you live in a large city in Germany, chances are that there might be an Elixir user group in your city. Perhaps you could join a meetup and learn from other people there 🙂

---

<div class="post-metadata">

**Author:** ![Nopp](https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/n/a87d85/32.png) [@Nopp](https://forum.elixirforum.com/u/Nopp)\
**Post date:** [August 27, 2018, 2:11pm UTC](https://forum.elixirforum.com/t/completely-new-to-programming-and-elixir/16112/13 "2018-08-27T14:11:45Z")

</div>

> [@benwilson512](#):
>
> These are languages that run on the client side actually. They’re run in the web browser and talk back to the server, they aren’t languages that run serverside.

Okay, thanks for pointing this out.  
So if i write a server application for maybe “time tracking” in elixir, i could write the GUI in Clojure/“AnyOtherLanguage capable building UIs”?  
Note: No web application. A “normal” desktop app.

---

<div class="post-metadata">

**Author:** ![leifericf](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/leifericf/32/39367_2.png) [@leifericf](https://forum.elixirforum.com/u/leifericf)\
**Post date:** [August 27, 2018, 2:17pm UTC](https://forum.elixirforum.com/t/completely-new-to-programming-and-elixir/16112/14 "2018-08-27T14:17:02Z")

</div>

By the way, here another tip that might be useful for you to find resources:

This forum has pretty good search capabilities. If you [search for “learning functional programming”](https://forum.elixirforum.com/search?q=learning%20functional%20programming) (for exmaple) you will find many similar threads from other learners, where other members of the community have suggested different approaches, books, videos, courses, etc.

---

<div class="post-metadata">

**Author:** ![dokuzbir](https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/d/ed8c4c/32.png) [@dokuzbir](https://forum.elixirforum.com/u/dokuzbir)\
**Post date:** [August 27, 2018, 3:00pm UTC](https://forum.elixirforum.com/t/completely-new-to-programming-and-elixir/16112/15 "2018-08-27T15:00:16Z")

</div>

I nearly started learning programing with elixir. I just had some basic ruby background. Structure of language elixir is great for first language. Because everything is clear in elixir. But most of elixir community experienced developers, good at min 3 programing language. That makes libraries and tutorials not suitable for beginners. Elixir is like a katana more than swiss army knive. After elixir i realised how deep is programing. So if you want just get things done elixir can be overkill. But if you really want to dive programing elixir is perfect for you.

> [@Nopp](#):
>
> [https://www.udemy.com/the-complete-elixir-and-phoenix-bootcamp-and-tutorial/](https://www.udemy.com/the-complete-elixir-and-phoenix-bootcamp-and-tutorial/)

For a beginner good course.

---

<div class="post-metadata">

**Author:** ![AstonJ](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/astonj/32/15_2.png) [@AstonJ](https://forum.elixirforum.com/u/AstonJ)\
**Post date:** [August 27, 2018, 4:09pm UTC](https://forum.elixirforum.com/t/completely-new-to-programming-and-elixir/16112/16 "2018-08-27T16:09:39Z")

</div>

If you are new to programming you should definitely check out:

> [@Joy of Elixir (self-published) (free)](https://forum.elixirforum.com/t/joy-of-elixir-self-published-free/7341):
>
> [2aa789edd4936774010d7cb5a65e3554594f91b4] [https://joyofelixir.com](https://joyofelixir.com) by Ryan Bigg Joy of Elixir came about because I saw that there was not very much when it comes to absolute beginner material for learning Elixir. There's the excellent [Getting Started guide on elixir-lang.org](https://elixir-lang.org/getting-started/introduction.html) and the [Programming Elixir](https://pragprog.com/book/elixir13/programming-elixir-1-3) book, but those feel like they're more targeted towards experienced programmers. They teach Elixir with a lot of assumed knowledge about programming languages. They're great books, but the…

I haven’t read it yet but have read other books from Ryan and he’s a great author :023:

After that I would be inclined to recommend what I have done myself to date:

> [@Functional programming learning path](https://forum.elixirforum.com/t/functional-programming-learning-path/15811/2):
>
> I come from an OOP background (Ruby!) and this is what I have done so far and highly recommend 003[https://forum.elixirforum.com/t/programming-elixir-pragprog/5882](https://forum.elixirforum.com/t/programming-elixir-pragprog/5882)[https://forum.elixirforum.com/t/elixir-in-action-manning/5884](https://forum.elixirforum.com/t/elixir-in-action-manning/5884)[https://forum.elixirforum.com/t/elixir-for-programmers-pragdave-currently-on-offer-for-30/6335](https://forum.elixirforum.com/t/elixir-for-programmers-pragdave-currently-on-offer-for-30/6335)[https://forum.elixirforum.com/t/learn-functional-programming-with-elixir-pragprog/5114/21?u=astonj](https://forum.elixirforum.com/t/learn-functional-programming-with-elixir-pragprog/5114/21) That last one is an excellent look into functional programming 023 Che…

---

<div class="post-metadata">

**Author:** ![rvirding](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/rvirding/32/1409_2.png) [@rvirding](https://forum.elixirforum.com/u/rvirding)\
**Post date:** [August 27, 2018, 10:59pm UTC](https://forum.elixirforum.com/t/completely-new-to-programming-and-elixir/16112/17 "2018-08-27T22:59:53Z")

</div>

> [@Nopp](#):
>
> @benwilson512  
> Hmm, okay so Elixir is mainly used for web applications i suppose?  
> Still fine for me. I read about a lot of tools for this, like elm or Clojurescript for example.

While Elixir is use a lot for web applications the Erlang/OTP system on which it is based is used for many different types of systems by for example Ericsson, WhatsApp, Cisco, Adroll, … So there is nothing limiting Elixir to web applications.

---

<div class="post-metadata">

**Author:** ![7stud](https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/7/57b2e6/32.png) [@7stud](https://forum.elixirforum.com/u/7stud)\
**Post date:** [August 28, 2018, 4:10am UTC](https://forum.elixirforum.com/t/completely-new-to-programming-and-elixir/16112/18 "2018-08-28T04:10:27Z")

</div>

> [@Nopp](#):
>
> i could write the GUI in Clojure/“AnyOtherLanguage capable building UIs”?

You can build GUI’s in both ruby and python, and python has kivy, which can be used for programming iOS and Android.

---

<div class="post-metadata">

**Author:** ![Nopp](https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/n/a87d85/32.png) [@Nopp](https://forum.elixirforum.com/u/Nopp)\
**Post date:** [August 28, 2018, 7:45am UTC](https://forum.elixirforum.com/t/completely-new-to-programming-and-elixir/16112/19 "2018-08-28T07:45:12Z")

</div>

Thanks for all the answers, i really appreciate it.  
Good to know, that i can just use nearly any langage for the GUI.
