Go vs Elixir

So you're in charge and can dictate the stack that your semi-large none-specific tech heavy enterprise will incorporate throughout your business. You choose between golang and erlang/elxir. You have a lot of Python, .Net and Java resources already employed. What will you choose and why?

Attached: python-go-and-the-cost-of-concurrency-in-the-cloud-aws-reinvent-36-638.jpg (638x359, 68K)

Other urls found in this thread:

blog.paralleluniverse.co/2013/05/02/quasar-pulsar/
contributor-covenant.org/
twitter.com/SFWRedditGifs

Outsource all programming work to India and shitpost smug anime girls on Jow Forums all day long.

Attached: smug_usagi.gif (480x355, 1M)

Tried that, they don't understand human. The business relies on utilizing local workers

typescript

* excellent concurrency
* excellent deployability
* runs distributed on client machines, saves us infrastructure

>typescript
>concurrency
Depends what you are doing. Node.js is really only good at concurrency when most of the time is spent waiting for IO. Any long running processes will block the single-threaded event loop and kill your concurrency.

why not .NET or Java then?

Erlang and elixir. Shit scales well and will probably be pretty performant.
Also means not having to touch the mess that is golang.

neither, choosing a meme language would mean that we'll be losing money in 5 years when rewriting back to Java
also your pic is misleading
blog.paralleluniverse.co/2013/05/02/quasar-pulsar/

workers and worklets are a thing, you know

Go is easier to learn, it's basically just C 2.0 with automatic memory management. But in terms of concurrency IMO Go is pretty shit, sure you can spawn goroutines pretty easily, but goroutines are not a good abstraction and they tend to be obfuscated in the code, look for example at the http package, you *know* if uses goroutines on the background, but you never see them.

Elixir is much better, first you have a better Actor-based concurrency model, which means you can actually communicate to the running threads on an idiomatic way, and Tasks to run async code. Go tries to combine both things into goroutines and fails.

If you care about making something that works and works well: Elixir.

If you care about using the last hip tech made by so called language experts: Go.

>>>>>>>only supports 1-10k threads
>>>>>>>>>>>>>>>>>>>>>>>>>>only

Attached: Implications_everywhere.jpg (800x450, 60K)

It triggers me so much how they try to make it look like coroutines is anything special and that you can't do it without go. They also had to give it a stupid name "co"->"go"-routines. Why didn't they also decide to call functions "gunctions" now they're at it?

Well Erlang was essentially created for building phone exchanges so being able to have many concurrent process was priority more or less

>You have a lot of Python, .Net and Java resources already employed
Then Go because I am evidently working with run of the mill average programmers.

If given the choice starting from scratch with no employees and had the money to hire competent, brilliant, better than average programmers, Elixir or course.

where my /akka/ brolets at?

Attached: 1200px-Sun_Microsystems_logo.svg.png (1200x519, 70K)

Elixir is actually what Ruby should be, if you were to get rid of the shitty block syntax of Ruby and use more modern programming like pattern matching and comprehensions. Elixir puts in a lot of syntactic sugar that gets rid of the difficulty of functional programming. You dont actually need to learn anything about mulithreading to use Elixir because that is all done for you under the hood with a framework like Phoenix. So Elixir/Phoenix improves on Ruby/Rails by being more composable, its easier to write your own middleware in Phoenix whereas you are stuck in conventions using Rails.

Having said all that I think that Go is better than Elixir for backend web programming. Go doesnt need frameworks, so for backend web programmers who really know there stuff will find they are more productive in Go.

Go.

Brainlet can't into functional programming and I'd have to pay them more.

neither. Go is shit and Elixir is a meme

That slide doesn't answer why you wouldn't just use {Scala, Clojure, Erlang}

Play and akka are obviously top tier

Elixir, go is Nu C, and the cool kids use elixir. Stick with memes. In a few years normies will catch up

>Spawning one native thread per short-lived task
>Not having a few native threads constantly consuming queued tasks from a taskpool
>Not having taken /any/ concurrency module in uni nor read up on it yourself
The absolute state of programming

>>Spawning one native thread per short-lived task
>>Not having a few native threads constantly consuming queued tasks from a taskpool
>another node programmer who thinks he solved all concurrency problems
the problem with that idea is that not all tasks are short lived which is why event loop concurrency can never scale

what are thread pools

Use Go in heavy concurrency software don’t re write software today work OK.

Go has way way more possible employs,courses,IDE support and easy to learn from newcomers but Muh generics.

That's why I use Erlang whenever I have to write a phone exchange.

Otherwise I just use Java.

>the problem with that idea is that not all tasks are short lived which is why event loop concurrency can never scale

"Event loop concurrency" is not a thing. Maybe open a computer science book and not a JavaScript tutorial.

>"Event loop concurrency" is not a thing
I never said it wasnt a thing, brainlet. youre the one who is stupid emough it can replace spawing processes

>concurrency through threads

Shit idea. Make everything async and use Java instead.

Good post, dont fall for Go, stick with java

C/C++

Aren't Erlang's "lightweight" threads also green threads and can't take advantage of other CPUs?

Pic is misleading. Makes it sound like go can have 1000s of threads when it uses a combo of coroutines on top of c threads. During blocking io a different coroutine is switched to. This is can be done in c too. Not coroutines, but work pools and switch between jobs on blocking io. After all, go is written in c/c++ and they cannot magically do something c/c++ cannot. In other words, literally anything go supports can be done in c. It just might be more difficult and not as straitforward or straight up ugly or nonsensical.

>(e.g. in Java, C/C++ vs. just typing "go func()")

ExecutorService go = Executors.newCachedThreadPool();
go.submit(() -> func());

Attached: 1463696945268.png (396x400, 25K)

Are you suggesting that work queues don't work? You may find it interesting to know that JavaScript etc coroutines use work queues to choose what coroutine to run next. Although, not always across multiple threads. What was that you were saying about work queues being bad? Take a data structures class then a parallel programing class and kys.

Attached: 1525395708261.png (625x773, 111K)

I would choose neither OP
I look at the fact that both Go and Elixir have a Code of Conduct which tries to enforce liberal ideology on the users
Nothing of the sort exists for C
Nothing of the sort exists for OpenJDK
C & OpenJDK are real languages
Go & Elixir are nerf town for virtue signaling children who only have a vague understanding of what is going on under the UI and will end up suing the business for hostile work environment/sex harassment claims
Bad languages attract bad coders which ruin the business

Your post had too many buzzwords. Stop.

those aren't buzzwords
do some reading, kid

Different user.The picture explicitly says that go had lightweight threads. This is dishonest. The threads are literally c threads with the added benefit of handling blocking io for you. The argument strongly implies that c cannot do the same. In c, you can handle blocking io. In fact, since go is written in c/c++, you by necessity can handle blocking io in c/c++. You cannot throw around words together as an argument and expect people not to pick them apart. So yes, in the context of the discussion when comparing these languages to native language, these words are just buzzwords. They don't mean anything. They describe things that native languages can and always have been able to do.

>both Go and Elixir have a Code of Conduct which tries to enforce liberal ideology on the users

From Go's code of conduct:

> Be friendly and welcoming
> Be patient (Meaning and tone can be lost in translation.)
> Be thoughtful (Think about how your words will be interpreted.)
> Be respectful
> Be charitable (Interpret the arguments of others in good faith)
> Avoid destructive behavior (stay on topic; no snark; don't be openly bigoted)
> It is the responsibility of all parties to de-escalate conflict when it arises.

no hits for ctrl+f liberal my dude, don't really see the problem with it

>What will you choose and why?
Fire a few scripting employees to regain the benefits overhead and use the money to subcontract a software engineer or systems engineer who actually knows how to develop a software project instead of scripting "solutions" that break, have shit readability, and try catch exceptions to print to a log before crashing instead of error checking beforehand to prevent a runtime exception.

>enterprise
quality?
>You choose between golang and erlang/elxir.
No I don't.
>You have a lot of Python,
Fire as in set on fire everyone involved with that.
>.Net and Java resources already employed. What will you choose and why?
C# or Java

erlang/elixir because go would foster lower quality code. i really should learn elixir but i find C comfy

supreme kek

The same thing happens with the Rust CoC, it was actually made by a man that was pissed by how opensource communities descended into shitposting.

The cancerous CoC is this one: contributor-covenant.org/

That's the one everyone bitches about, and with reason, basically if you say something on, let's say twitter, that doesn't hold with your average liberal thought, SJWs that didn't even fucking programmed would hunt you down and demand all FOSS projects that you where involved to ban you from contributing.

In reality most CoC are nothing like that, most are just "don't be a dickhead".

While others like that one I mentioned are literally: "WOMAN HAVE TO CONTRIBUTE, IF YOU DON'T HAVE WOMEN IN YOUR PROJECT YOU ARE A MYSOGYNISTIC FUCK AND I FUCKING HATE YOU".

Attached: f27e9c396bbc30319f6a15a34bdd558eb64a39c4849c6be0d9045cd90f2367e0.gif (296x368, 954K)

Elixir is just as easy though?

i wanna fondle her asschecks

Go. I already implemented something similar recently so working with a language I'm familiar with will be easier. Besides the package management hell I was stuck with for like a day (because some moron used an ancient version of Dep) there were no particular hiccups I'd note. Fresh graduates picked up Go incredibly fast compared when we were using PERL, that helps as well as we're fishing for new blood off campus.

But Linus is my hero and therefore I want to be a dickhead at a certain level of technical mastery too!

Why would anyone use such a retarded and disgusting piece of shit such a go to do anything

Just go for elixir, user. I use clojure, it's OK except for the JVM part (limitations and shit). CSP is implemented even better there with core.async