3 ms·
To be honest I was a bit disappointed by this presentation. I think Scala can be very simple -- at least 95% of the abstractions I use are just algebraic data t
by noelwelsh 11y ago
To be honest I was a bit disappointed by this presentation. I think Scala can be very simple -- at least 95% of the abstractions I use are just algebraic data types and type classes -- but this presentation didn't provide much clarity on "good" Scala beyond the usual pithy statements (e.g. "prefer composition over inheritance.") Beginners need very clear guidelines as they don't have the experience to make nuanced decisions.
Furthermore I found "Effective Scala" to be rather random in its presentation. I've found it much more effective to concentrate on the core Scala patterns (i.e. algebraic data types, type classes) and present language features in the context of the patterns they support.
- meddlepal 11y agoI think you've already lost most programmers when you even mention the words 'alegbraic data types' or 'type classes'. Devs on HN and /r/programming know those words (or many do), but in industry... good luck. I get blank stares and even hostility sometimes from very competent engineers when I try to explain the Java type system is not the end-all be-all of type systems and that it is in fact... not all that powerful or particularly safe either.
- noelwelsh 11y agoWhen teaching Scala I wouldn't start with the jargon first -- start from the problem, show the solution, then name the patterns used. When teaching algebraic data types, for example, we start with more familiar OO terminology like "is-a" and "has-a", and then say we have this other name for these patterns. To be clear, I have a horse in this race: I teach Scala (and have written a book on it, which you can find here: http://underscore.io/training/courses/essential-scala/ http://underscore.io/training/courses/essential-scala/). I also strongly believe Scala has been held back by poor teaching.
- pjmlp 11y agoIt depends on the country. For example, in Portugal many companies do require a CS or EE degree, which means everyone has been exposed to those terms, at least if they enjoyed a degree in universities like IST, UNL/FCT, UC and similar. Just as an example, back on my day, the Prolog and LP classes were shared between CS and EE degrees.