4 ms·
> Scala is one of the easiest languages to read and write once you master it I beg to differ with this. Any languages gets easy to read & write once you master
by krat0sprakhar 13y ago
> Scala is one of the easiest languages to read and write once you master it
I beg to differ with this. Any languages gets easy to read & write once you master it. After having finished the Scala course and spending considerable time trying to get grips with the language, I was still totally clueless about a majority of the features.
Although I really liked how powerful Scala it is even if you grok 30% of its features but the learning curve required to master it is extremely steep. Prof Odersky has been quite vocal about the feature bloat and lets hope the future releases are more conservative in that sense.
- Cless 13y agoThere were a lot of really complicated things added in 2.10, so now I wouldn't be so certain. I used 2.9, and personally I found it very easy to read and write, most of the time. > Any languages gets easy to read & write once you master it Perl :(
- modersky 13y agoWhat complicated things were aded 2.10 that do not require the -experimental flag to be set? Experimental means what the name implies. An experimental feature can disappear or change in the next release. It's there to experiment with but generally not to use in production code.
- Cless 13y agoAh, my bad, I didn't know they were still experimental. :)
- thescrewdriver 13y ago2.11 is definitely more conservative in terms of new features. I've been coding mostly in Scala for a couple of years now and am still learning new things. The more I learn the more I realise how powerful the features are.
- bad_user 13y agoBefore Scala, I have "mastered" until now Ruby, Python, Perl, PHP, Java, C# and Javascript as in I used them for real projects in production for at least 1.5 years each and whenever I learn a new language, I always go in depth. And I also played with half a dozen others. Scala is the language that helps you write better code. In the kinds of projects that I've been working for the last 3 years, requiring parallelism, efficient usage of resources, asynchronicity, redundancy, scalability, throughput, reliability on the whole, I can honestly say that none of the other languages could do a better job. On features, it actually doesn't have many, but the features that it does have are powerful enough that you can have bigger abstractions. For example, "async" is not a language feature such as in C#, but a library. Of course, there's much to learn, especially concepts that have been borrowed from Haskell or other FP languages with a Scala-ish twist, like persistent data-structures, type-classes, futures/promises, iteratees and in general, what's the deal with monads, monoids and applicative functors. In training beginners explaining these concepts was the most difficult part of the training, trumping all others considerations, starting from the basics like "don't use vars". Scala is difficult because it's a functional programming language, beautifully blended with OOP, being in fact a better OOP language than most mainstream OOP languages. Learning FP and then learning OOP in a way not exposed by languages like Java and then learning what good design looks like, grokking a lot of FP design patterns in the process, that can be very overwhelming. For any developer that is not familiar with a good FP language already, or that thinks OOP is what Java gives you, the transition can be pretty painful. On the other hand - I'm of the opinion that if learning a new language is not painful, then it doesn't give you anything of value, so learning it is pretty useless.
- ctolsen 13y agoWhat would you say was the best resource to learn it? I've been curious about Scala for a while, but never really taken the plunge.
- matthewking 13y agoScala School is probably a good starting point: http://twitter.github.io/scala_school/ http://twitter.github.io/scala_school/ As for books you may want to check out Scala for the Impatient and Programming in Scala.
- matthewking 13y agoAfter several months playing with Scala I felt much the same, with other languages I use regularly such as C# or Ruby I could look into any libraries I use and understand the code, make changes if required etc. With Scala I felt like the level of understanding/mastery required to truly feel at home was significantly higher than I've encountered before. Looking into some of the code in the wild gave me instant headaches. Developing in a language where you can be presented with code and draw a complete blank is not a reassuring experience. It's still a beast id like to tame, but not when I have work to get done anytime soon.
- bad_user 13y agoIf learning is not painful, then you're not learning. How long did it take you to go from zero to being able to get stuff done, when you started to learn programming? Complaining that Scala is unlike C# or Ruby doesn't make sense, since if you want C# or Ruby, might as well stick with C# or Ruby. And what came first anyway? Guess you started out with C#, since it's more popular in universities, right? Well, when you got into Ruby, where you able to understand all the meta-programming going on in like all the popular libraries? Speaking of which, after working a lot with Ruby, I still have problems in grokking other people's code when meta-programming is involved, since it's almost always a fragile design that's stitched together with spit and glue and I can never wrap my head around all the things that could happen in the right context. This is very, very unlike my experience with Scala. Yes, it's difficult to learn because many new concepts are involved, but once passed that learning curve, everything becomes much clearer instead of going down a rabbit whole.
- matthewking 13y agoThere's definitely parts of any language I feel I'll probably never understand, at least under the requirements of what I need to get done in my day to day work. With Scala though that percentage was much higher, and the code that I didn't understand felt much more daunting. I went into Scala wanting to use it for a new project, expecting to pick it up like I had other languages but unfortunately I was unprepared for the task/sheer scale and had to switch back to a language I knew well. Whenever I have time I'll continue to study it fully aware of the rewards, but with a better understanding of the time required to get to grips with it.
- laureny 13y ago> Prof Odersky has been quite vocal about the feature bloat and lets hope the future releases are more conservative in that sense. Languages never get simpler as they age, and Scala is certainly proof of that rule. If anything, advanced features that make up for good academic papers have priority over fixing bugs and streamlining the libraries. Paul Phillips, a Typesafe cofounder, recently left the company and went on a tour explaining why he thought Scala was headed in the wrong direction: http://www.youtube.com/watch?v=4jh94gowim0 http://www.youtube.com/watch?v=4jh94gowim0
- bad_user 13y agoFor real? Paul Philips is an awesome developer, contributed a lot to Scala and he did quit because he thought that Scala was headed in the wrong direction. These are the facts. On the other hand the kind of problems he described are problems that happen in every mainstream language, either due to the pressure of keeping it stable and of backwards compatibility (you know, real world concerns) or because current languages aren't equipped to handle it or because of pragmatic reasons with which he doesn't agree with. And in fact, speaking of "academic papers", some of the problems he cares about can only be fixed for real in languages with dependent types (ever heard of one?). As for "fixing bugs and streamlining the libraries", if you bothered reading the release notes on Scala 2.11-RC1 before commenting, you would know that this release is exactly about fixing bugs, modularizing the compiler, improved compilation times, streamlining the libraries, eliminating deprecated stuff and so on. By all accounts, it will be an awesome release even though it doesn't add features to the language. It won't solve all of Paul's concerns of course, but there are people that actually care and work on these problems. But then, whenever that happens, people start complaining that Scala breaks backwards compatibility too often. Apparently you can't please everybody. And btw, the Scala core devs also have plans for breaking source compatibility by implementing a Go-like source-code migrator to get rid of deprecated syntax sometimes in the future. Most importantly - at the end of that talk, Paul Philips still claims that Scala is his favorite language. But then again, you weren't really interested in what he actually had to say, did you?
- cbeustwatch 13y ago