5 ms·
I'm really impressed with all that is happening in the Erlang/Elixir world nowadays. I didn't realize that this community was so actively introducing new featur
by xutopia 8y ago
I'm really impressed with all that is happening in the Erlang/Elixir world nowadays. I didn't realize that this community was so actively introducing new features and improvements to what is already a rock solid toolset.
- dragosmocrii 8y agoI agree. Just starting myself with Elixir, and boy do I love the pipe operator, pattern matching, and the wonderful OTP goodies. I've only practiced with Elixir for a couple weeks, but for work when I write PHP code, I feel sad, and look forward to work on the next Exercism task. Also joined the Elixir slack, never seen such an awesome community. I hope Erlang/Elixir continues to thrive
- drcongo 8y agoI recently started working through the tutorials here [1] and they're excellent, but kinda like you I get grumpy when I have to do Django at work now. [1] https://www.phoenix-tutorial.com/ https://www.phoenix-tutorial.com/
- doanguyen 8y agoJust wanted to know what's wrong with Django?
- andy_ppp 8y agoSlow, GIL, Python, ORM, no otp, no supervisions, no runtime code inspection, bad code formatter, error handling, no macros, no pipe, not immutable, not functional, very complex writing multithreaded code, 100 different ways to write doc strings, ugly docs, hidden state everywhere... etc.
- doanguyen 8y agoI would disagree with many of these, but thanks anyway.
- brightball 8y agoNothing major. Elixir is just such a good experience it has the effect of making everything else feel really clunky.
- drcongo 8y agoI agree with some of andy_ppp's list below, but my main gripe is how much Django hides from the user through magic and endless inheritance chains. When I write code I like to know what it's going to do, and when it goes wrong I like to be able to find where it went wrong without jumping through 20 classes in 10 files.
- doanguyen 8y agoAppreciate your response. I would happy to see your reaction when you're working with Laravel, lol. I fully agree that too much of magic makes Django difficult and easy to newcomers at the same time. So I switched to Flask which is much pleasure to work with and now I'm very happy.
- andy_ppp 8y agoThis is covered in hidden state everywhere...
- andy_ppp 8y agoNice! You wrote flask-security etc. right? I actually reported a bug again flask-login years ago because of the way Elixir handled a certain security issue. Small world...
- drcongo 8y agoFlask Security isn't my work, that would be Matt Wright [1], though coincidentally I did link to an article by Matt on here a few days ago. http://mattupstate.com http://mattupstate.com
- mrdoops 8y agoThe worst part of Elixir is when you're working with other languages and you know it'd be better in Elixir.
- dnautics 8y agoIt's not perfect. There's a few strange things like calling function variables with the dot notation, but it's there for a reason, and the rest of it worth the worst of the quirks. Side note, I wish variable rebinding were off by default but allowed on names with a sigil (or a ! ).
- derefr 8y ago> a few strange things like calling function variables with the dot notation, but it's there for a reason I feel like anyone who has written a Yacc-based parser for programming-language syntax will appreciate Elixir's grammar even more for these "quirks." Elixir's syntax is as beautiful as it can be while also being explicitly unambiguous. Which means that the language syntax is very easy to change or extend—unlike other PLs I could name, where the set of parsing rules resembles a late-game Jenga tower. Or, to put that another way: Elixir isn't just a joy to use; it's a joy to be a core maintainer of. (How often have you ever heard anyone consider that part of a programming language's UX?) Oh, and this simple, explicit set of parse rules also results in a highly-predictable and regular AST, which means you can write an macro-based DSL library in Elixir—one that will actually works with any arbitrary Elixir code hanging out inside your macro body—in not-much code, and without worry that a minor language change in the future will break your lib.