Hi @josevalim !
This is my Elixir repl :
Erlang/OTP 21 [erts-10.0] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [hipe]
Interactive Elixir (1.6.5) - press Ctrl+C to exit (type h() ENTER for help)
As you have mentioned, yes I am not running the latest Elixir build - I am sorry about that, I will try to figure out how to get Elixir updated. In the meantime I have a few things to say :
I have watched a lot of your talks and would like to say you are doing a brilliant job !
I do not know how to thank you enough for trying to bring Erlang/OTP to the 21st Century, you must have invested a lot of your time and software needs more people like you.
It’s doubly impressive since your project is competing with the likes of golang which has strong financial backing - so you are arguably winning because of pure merit.
However I am having a tough time understanding Elixir, believe it or not I found Erlang easier to understand and get started compared to Elixir !
A few specific quirks (I hope you do not mind constructive criticism ) :
use ExUnit.Case
doctest KV
test "greets the world" do
assert KV.hello() == :world
end
where is test
,assert
coming from ? is it being imported from ExUnit.Case
?
… but in your own docs it states:
https://elixir-lang.org/getting-started/alias-require-and-import.html#use
Since use allows any code to run, we can’t really know the side-effects
of using a module without reading its documentation. For this reason,
import and alias are often preferred, as their semantics are defined by
the language.
I strongly agree with this statement - it reminds me of Python’s:
import * from numpy
which we can all agree is not a good idea, it completely threw me off as a beginner.
In nodejs
you do not have to learn how to do TDD before trying to figure out how nodejs
works, I understand the immense value of TDD and no serious application in 2018 should release without doing TDD - but if you are a beginner its going to be another extra hill you need to climb.
Imagine this - I have worked with C
,C++
,nodejs
,Lua
,haskell
and its still quite difficult to see how Elixir is working - imagine a first year Computer Science student
is it not a goal
to show them the beauty of Elixir first ?
For example in nodejs
the bare bone project has :
node_modules
package.json
main.js
in Elixir its :
_build
config
lib
mix.exs
README.md
test
and my code entry point is lib/foo.exs
? How do I know that ? where is it being made explicit ?
A first year CS student wont know the importance of README.md
how it relates to git
(what is git ?) and how README.md
is used by github.com
, what is markdown again ?
Imagine if Elixir
just had mix.exs
and an entry point file made explicit in mix.exs
.
Why is config not specified in mix.exs
?
I am sorry, I might just not have enough knowledge regarding why those decisions were made - but I felt I had to let my opinions be know so that Elixir can truly compete with with nodejs
in terms of ease of use. I truly want Elixir to take off in a big way.
Cheers !