8 Considerations on Choosing a Programming Language
scala-academy.comStopped reading after "strong typing is better than weak typing". Well, it is not. He/she rules out perfectly valid programming languages because of this personal opinion nowhere near a fact (http://stackoverflow.com/questions/125367/dynamic-type-langu...). In fact, it directly contradicts his/her second point. I understand the author wants to drift it towards Scala, but make an effort and choose the right arguments!
EDIT: well, at least the author states it is an "100% Opinionated View". And I finally read it all, but still not very convincing.
And this comment is also an "100% Opinionated View" of course :)
I'm the author.
Well, it is my opinion in fact, and that's why it says a "%100 opinionated view" in the subtitle.
There are many other persons with the same opinion: http://stackoverflow.com/a/43072/731933 http://blog.jooq.org/2014/12/11/the-inconvenient-truth-about... http://www.teamten.com/lawrence/writings/java-for-everything...
If we were to discuss everything in this article, starting with dynamic vs static typing, we'd still be here 3 months from now :). Which is why it is opinionated.
The problem with that section isn't so much that it is opinionated, it's that you can't really have a sensible discussion about typing on just a dynamic vs. static axis.
At the very least you should address the implications of strong vs. weak typing, and you should probably address the strength and nature of the type systems, also. After all, saying that both C and Haskell are statically largely misses the point.
You may want to move Delphi out of the list of dynamically typed languages. It is just as strongly typed as C# or Java.
Ups, thank you for that! : )
Yeah, I was just going to edit my comment to say "well, at least the author states it is 100% Opinionated View" :) But you could skip that part and have more arguments, although without it you couldn't easily rule out some languages (e.g. LISP). I have to admit I'm also biased as a Clojure fan, and I find Scala too verbose and less functional than Clojure. Oh and btw, I read it all :P
Well, I also stopped reading there.
I was weary when I saw the headline but clicked it to see if I could learn something new.
The article seems written for newbie programmers (HTML/CSS in a programming language list? seriously? And who is, nowadays,seriously considering fortran for a new project?) and have them believe a series of opinions.
Like the cartoon at the beginning, it seems like the author is just another lemming calling for other lemmings to follow him.
[EDIT] Finished the article. It is a blatant advertisement for Scala. The support for Java sounds so false that, if Scala didn't use the JVM is would be discarded like the other languages.
To choose a language you need to make a decision based on the project first, not the language's features. The language should match the project. How big is the project? Where/how will it be deployed/run? Is performance a concern? How long should the development take? Does it have special needs? (concurrency, parallelism, 3D grphics, real-time, etc...).
"HTML/CSS in a programming language list? seriously?"
I just googled "programming languages you should learn" - 3rd result: http://www.sitepoint.com/whats-best-programming-language-lea... ("What’s the Best Programming Language to Learn in 2015?") 4th "Programming Language" is...: CSS! You know that's nonsense, but a newbie doesn't
That's the problem. By including it you mean this article is (also) for newbies. And is an opinionated, biased article. The author is fostering more "lemming programmers".
> Finished the article. It is a blatant advertisement for Scala
I like Scala, but the features I like in it, eg pattern matching or tail recursion, these things don't even exist in this article.
So I'm not sure it's advertisement, it feels more like it's an anti-ad, actually. If the argument for me to use a language is that it is statically typed, man, that language must not be good at all! Static or dynamic typing is part of language philosophy, it makes sense to have dynamic typing in Python, as it makes sense not having it in Java. Python philosophy is pretty coherent, productive and fun, and dynamic typing is a part of that. It just doesn't feel like a reasonable argument.
Stopped reading after "strong typing is better than weak typing". Well, it is not.
Only in situations where other effects outweigh the fact that compile-time errors are much less bad than run-time errors.
No. That's simplifying the problem. Please read the link I posted about this subject, you'll be surprised on how deep this goes.
I did read it, and many others like it. This isn't "deep" at all, it's about what color coordinates best with your problem space and development practices and developer personalities.
"The neutrality of this article is discussed", as they say in Wikipedia.
This is more of a rant than a thought, and much substance is left out where it would be important to provide. It's obvious for which language the author is rooting, while largely dismissing the rest.
Not recommended.
Well, hosted at scala-academy.com ;)
They could do a finer, more sublime job of prodding people to the idea of choosing Scala.
This article really didn't get an objective analysis. The Scala language looks interesting, but the biggest "push" towards it was a graph of the job outlook, with the y axis at the scale of... .04? 4%? Is that supposed to convince me to use this in the industry, and apply my time?
I understand the article comes from scala-academy, but I think by offering a more objective viewpoint of different languages and the standards they impose, scala can show what niche they provide. I don't believe it is the niche of "Everyone is hiring a Scala programmer", but it should be (quoted from the article) "...implicits, underscore notation, flexible imports, multiple classes per file, multi-line strings, pattern matching, traits with variables, etc." If this article was about these points, with relations to other languages, that could be some quality content!
For everything else, either the article misrepresented other languages, or simply remained apathetic to their application.
You can read a bit more about those scala features (in this case compared to java) in this other article: http://www.scala-academy.com/resources/java-vs-scala
"Is that supposed to convince me to use this in the industry, and apply my time?" I say in the article: «- Does this mean that I should use Scala? Can you get a job you like programming Scala? If so, then: yes! (Otherwise, unless you're rich, you need to pay your bills...)» If don't think you can get a job programming Scala (because of where you live, or another reason) I explicitly say you shouldn't learn it! :)
But the rate at which Scala jobs are becoming available is relevant: I don't care if there are 200 Java jobs near me, as long as there are 3 or 4 Scala ones. As long as I have a Scala job, I don't care if the other companies are programming something else. If you can't get a Scala job - again: it's probably best to not even to take the time to learn it.
If I could downvote articles, I would have downvoted this one. It's like an upbrand, long-form youtube comment.
Haha, spot on.
> This is academic/engineering/mathematics stuff. For equations, matrices, and such. You don't build accounting systems with these things. (Of course someone must have already done it!)
As an engineer, I have to say I don't like what is going on here, what's the point in tossing academics, mathematicians and engineers aside? Many software fields, such as artificial intelligence or machine learning, benefit from the use of Matlab or R language. And of course, these are for Math stuff - I usually come to HN to read less obvious things.
Using R to build an accounting system wouldn't be that silly if there are heavy statistics to tackle. You can do mixed Java/R, R can be used in its domain. And BTW, it'd be much simpler to use Java for an accounting system than using Scala.
Also, considering that Martin Odersky who designed the Scala language is an academic who teaches at EPFL, I even feel ashamed about how this article approaches "academic stuff".
I worry about the author's qualifications if he rules out FORTRAN and Delphi for failing to be statically typed. Both languages (Delphi is Pascal with OO bolt-ons) are classic statically typed languages.
There are excellent reasons for rejecting FORTRAN, maybe Delphi too, but dynamic typing isn't one of them.
EDIT for afterthought (sorry):
I also don't see the basis for rejecting Go as "low-level like C" while singing the praises of Java - Go is not far, conceptually, from Java without generics, i.e. maybe Java 6, with a few useful new ideas, like the channel-based concurrency model and interface embedding instead of class inheritance thrown in.
Ups - I have to fix that.
Yep, I do lack experience programming Fortran and Delphi ;)
I program in FORTRAN for a living. FEAR me or pity me - as you wish! ;)
there are a lot of half truths and in there, and i haven't even read half of it yet. and i wont read the rest.
Wow. This sort of underhanded advocacy really undermines the efforts of the Scala community. The half-truths and just-plain-wrong-headedness of this article defy description.
I respect that you have an opinion, but your reasoning is disingenuous at best and idiotic at worst.
Most of the time, we don't get to choose what programming language to use. It's dictated by professors, companies, platforms, application domains, available librairies, available expertise and so on...
We still choose something to learn as a part of self-improvement and self-education.
Some languages are worth knowing even if you mostly use other languages, because of the way they change your way of thinking.
I think the author assumes you're free to learn whatever language you'd like.
That fixed header bar over the top 1/4 of my screen is very annoying. Phone displays are small enough without that crap.
Also, this article sounds like it's not entirely serious?
I think you should observe more on microsoft stack. Big change, new ceo , new policy. Some product change to open source, some product change to free
A %100 poorly articulated argument
If you can, choose a statically typed language over a dynamically typed one. Reason: more errors are caught earlier during development. The rest of the article is (in my opinion) really just pro-scala talk.
That's oversimplifying. There are much more things to take into account than just that. If it was that simple, there would be no dynamic/weak typed language, right?
Its a fact: Using a dynamically typed language you have to write more code (tests etc.) to achieve the situation where you catch the same kind of bugs that a statically typed language would inform you during analysis. Strong and weak typing is a different thing.
And I agree, it is not that simple, but only if you take other factors into account.
Why wouldn't you take other factors into account? Or better, why would you take this factor in particular as the only factor that matters?
For me that is the most important factor, because it directly influences the amount of code produced. Less code means less bugs and less code to read/understand when getting back into a codebase.
Then I guess you chose the wrong side. Dynamically-typed languages produce less code precisely because you don't need to specify the types. E.g. Scala is more verbose than Clojure.
I'm not sure that Scala code + types is more verbose than Clojure code + tests. (Which is what the OP argued.)
You need tests everywhere, statically typed doesn't mean you don't need to test.
This is a late april fool right? So much nonsense in one article ...