asdf1234
Agreed. The vast majority of the time I see Russia brought up it's being used by mainstream Democrats to dismiss criticism from both the right and the left. Basically anyone that's not a staunch neoliberal gets accused of being a Russian or a Russian puppet.
They're using it as a scapegoat and it seems to be working.
If you really want to learn a functional programming language I'd strongly suggest looking at Haskell, Ocaml or F#. Functional programming only really starts to shine with a good static type system and dialyzer simply doesn't cut it.
Frameworks like Rails and Django cover a ton of functionality and gluing together and maintaining a set of packages to cover even a fraction of that functionality is a ton of work that's often for very little gain.
I work at one of the big 4 right now and almost all the serious ML is done in C++ and Java. Python is purely used during exploratory phases and even that is being phased out. Most of the other things I said aren't even controversial so I'm just going to ignore you from now on. Enjoy thinking Python and Go are well designed languages.
Bullshit. Python is often used for early exploration but the people doing serious work in ML almost always end up using C++, Java or Scala.
> you're dismissing them for decidedly stupid reasons
So having relatively poor tooling, poor package management, poor performance and bad concurrency support aren't good reasons for dismissing a language? Go and Python aren't even particularly well designed languages. That's far more than you've given for dismissing Java and claiming that alternatives are "vastly better for a typical startup."
I agree and I never said otherwise. I specifically addressed three of the languages you named (Python, Go and C#).
> Now we are traversing into "my opinion is fact here".
I'd love to see someone argue that Go or Python have superior tooling to Java and the JVM.
> Yes, let's dismiss every other language
I'm not dismissing every other language, I don't even use Java regularly, I'm dismissing two of the "modern" languages you named.
None.
Go is hardly a "modern language" from a language design perspective so you're not gaining much over Java here. It has horrendous package management and the IDEs, debuggers, profilers and live monitoring tools are probably a decade or more behind the tools available for Java and the JVM. It's also much harder to find Go programmers than it is Java programmers.
Python is a very slow dynamically typed language with a horrible deployment and concurrency story. A lot of big companies justifiably won't even consider a dynamically typed language. Again all the tooling from package management to profilers to debuggers is way behind what's available for Java and the JVM.
C# is a real competitor but for the most part it's still tied to Windows. This is slowly changing but the vast majority of C# libraries still require the full .NET runtime on Windows and the open source community around C# is a small fraction of the size of the community around JVM languages.
Even a lot of the really basic stuff like file uploading and image handling libraries aren't in a good state yet. For example, there's nothing that comes close to Carrierwave, Paperclip or Shrine and the Image Magick libraries are nowhere close to their equivalents in Ruby or Python.
For building a traditional monolithic website with server side rendering Rails and Django are far faster to develop in than anything in Go, Java or Node and the overwhelming majority of websites will never run into any performance problems with either.
> By way of contrast several years ago I benchmarked a real application hitting 1000 requests/s on a $20 per month Linode box
I have Rails applications that hit the database on every request doing 1000 rps on $10 a month Digital Ocean boxes. 1000 rps is not that much and all of these performance metrics are meaningless without extensive knowledge of how the application works and exactly what it is doing.
In the Techempower benchmarks the Phoenix tests had a ton of errors and there was no preview run so whoever submitted them wasn't able to fix them. Look at the error column. I assume they'll be fixed in the next run.
Using Atom or VS Code instead of Emacs cuts my battery life by a few hours. The Spotify desktop app that uses a ton of JavaScript is also horribly inefficient and has a big impact on battery life.
None of this is negligible.
Chris McCord talks about it here https://www.reddit.com/r/elixir/comments/48ke69/any_reason_w...
Erlang is very slow when it comes to CPU bound tasks. It's nowhere near Java for tasks like this.
.NET core hasn't seen an official release and there's still quite a bit of work to be done. Even with that, the overwhelming majority of .NET libraries don't work on OS X or Linux and it's going to take a significant amount of time to port just a small fraction of them.
.NET core might turn out to be a great cross platform solution but it's nowhere near that right now.
ints.asSequence().filter { it > 0 }.map { it * it }
and then you can convert it to a concrete collection type with toList, toHashSet, toArrayList etc.I don't see why. It's explicit and allows you to chain higher order methods without building up a ton of intermediate data structures and convert to any data structure you like very efficiently.
It's still not efficient as imperative approaches but it's close enough and far better than most collection libraries.
It's a good solution in Haskell though.