But if you still need a more formal argument:
http://www.reuters.com/article/2012/07/26/science-music-idUSL6E8IOE3320120726
See, I told you so.
Just another human being
See, I told you so.
Implicity
If there is something I really hate is when people try to hide things from me. Maybe that’s why I find Scala’s implicit stuff so annoying. They try to make things easier by, for example, allowing you to declare implicit type converters. So imagine that you have some class ChocolateCake and then you declare an implicit converter to class Cake. This means that a casting from ChocolateCake to Cake will be made implicitly when necessary. But what happens is that sometimes the compiler is able to infer this conversion, and sometimes not! And when it is not capable, it will throw a typing error on the compilation. And then you realize that you wanted to use Cake the whole time… But you notice that the objects have ChocolateCake type in lots of places. Then you stop and think: what the fuck? And you start searching the code around and find this mini-method ChocolateCakeToCake. And you search the project for places where this method is used, but you find none! So nothing more natural than commenting these three lines of code that are not called anywhere, but then what happens? Your code stops compiling!! Giving errors in places you have never touched… What the fuck, again?? You look one more time and notice the “implicit” word in front of this method. Then you google it around and finds the explanation in Scala’s documentation.
After reading it you understand, but c’mon!!! Was this really necessary? In my opinion, that is not really improving readability of the code or anything… People need to realize that hiding some implementation sometimes makes sense, but then searching for errors on something hidden is *extra* difficult. You either hide stuff that really do not matter and should not be the programmer’s concern, or just make it explicit!
PS: Also holds for the implicit factories… nothing intuitive about that! I prefer all the code duplication, really.
Map[Map[A]]
You want to declare a smart matrix of some type A, what do you do? Map[Map[A]], of course, such as in old C++. Then you want to assign some value to a position: Map(i)(j) = x, right? Wrong! Scala will give an error that Map(i) does not exist… Of course not, I am declaring its existence with this assignment. Of all the robust implementation of the various (really, millions!) of datatypes in Scala, they could not make this simple and intuitive thing work? Such a shame… In C++ it works like a charm!
Data Types
Scala users are very proud about the amount of libraries and datatypes that are already built-in the language. It puzzles me why… I don’t think that having 4 ways to represent a list is particularly good. On top of that, each of these 4 ways have tiny little annoying differences, such as different operators for concatenation. Also, some have assignment and others don’t. And because of these small differences, changing your code from using List to using Seq can be quite a headache.
Mutable and Immutable
Why having sooooo many different datatypes?? Just pick mutable or immutable objects and stick with them! This makes C pointers look like a piece of cake. And because of all the types, we never know which library scala is automatically importing for you…
This is actually a real error: type mismatch.
Found: scala. collection.Map[bla bla bla]Required: scala.collection.mutable.Map[same bla bla bla]And guess what? Importing scala.collection.mutable.Map does not help…. So what is going on? I was using a map method that returned a collection.Map (although it is applied to a collection.mutable.Map). And the weird thing is, the method is available in both types (mutable or not), but it only returns the non-mutable Map. For me this really does not make sense.
Well… there’s a lot more. Maybe if you use this language carefully, some good might come out of it. I just haven’t found it yet. We all know that programming languages, such as operating systems, are like soccer and religion: do not start a discussion on that! But I really needed to get this out of my chest, and it’s good for other anti-scala people to realize they are not alone in the world.
In Spanish
In Portuguese
In English (unfortunately, only wikipedia’s page with Spanish references)
I had written a big post telling all about this trip we made, but it got lost somehow =(
Here’s a summary of everything and everywhere (in the order in which we visited):
Salzburg:
– Mozart’s houses, both where he was born and where he lived until moving to Vienna
– Schloss Mirabell: no, it’s not a palace made of cookies. It’s very pretty though.
– Untersberg: mountain on the border of Austria and Germany, from where we can see the alps. I dare to say it was the prettiest place of the whole trip. It’s pictures are at the end of the album.
Innsbruck:
– Swarovski Kristallwelten: art exhibition of Swarovski pieces (with some disturbing parts)
– Bergisel: ski jump platform designed by Zaha Hadid
– Cafe Munding: best smelling cafe in the whole world!
Feldkirch:
– Shattenburg: medieval castle with museum
Bregenz:
– By the Bodensee
– Saint Martin’s gate and tower
– Walk of 10 kms in the rain to Lindau (Germany)
– Pfänder mountain (snow again!)
– Three country cruise
KONY 2012 from INVISIBLE CHILDREN on Vimeo.
I saw a TED talk with the creator of this website today. It’s just a very good idea… the classes are excellent and they have an innovative concept of education on this digital world that we live in. Let’s just hope it doesn’t end up with people interaction, but makes it more fruitful.
Motivated by a German class on indefinite pronouns.