It feels like Martin is detached from the greater flow FROM the JVM…. Would be great to hear a more official and stronger focus on cross platform goals. Scala could have been what Rust is becoming.
It really can't. Rust is cross-platform, but it's quite low-level on all platforms. JVM has memory management, Rust doesn't. In Rust you have to manage the memory yourself and have the compiler try and check your manual memory management for errors. Also, while on the JVM you still have to care about particular datastructures like lists, trees etc (less so in Python and Javascript) you don't have to care as much about details like how many bits in what integer datatype and so on. For a large part of software development, these details just don't matter that much. But Rust requires you to know these things, and keep them in mind, to at least a minimal degree more than in Java or Scala. Rust is basically C with some modern language features on top. Sort of C++ in an alternate universe.
Hm - it's kind of interesting and a missing piece that Scala was THE language to write custom DSLs in, and now it's effectively discouraged to do so. I don't think that's a bad move, we evolve and learn. But interesting!
@@MrDejvidkit i guess removing the possibility of writing object method calls using space (hence without dot) makes it a bit less able to look like a domain (specific) language
I think you are missing the nuance. The DEFAULT will be to strongly opinionated about discouraging specific redundantly expressive pathways. However, library authors will be able to override the default and bypass the expressive pathway limits. This will force library authors into ensuring what they are producing is an appropriate trade-off of concerns between a highly expressive custom DSL and what the mainstream default idiomatic simplified Scala is to the bulk of the non-library writing developers; i.e. the mid-level Enterprise IT backend server Software Engineers.
He says something about modules, that they are important but that people don't understand them. I'm one of those people. Where can I learn what he means by that?
I think he means traits and objects extending that trait. If you import a package, "nothing" happens, as opposed to Javascript and Python, where importing always means some code is run to create all the symbols you need, and often some initialization (though you shouldn't do that). In C# and Java/Scala etc importing just means linking and importing the compiled code, and maybe importing symbols to namespaces. No initialization. I'm too new to know exactly when it happens, either when importing the package or when using the object, code in the object is run and the object is actually instantiated. An object could actually connect to the database or have other sideeffects.
@@joan38 To ask that question is to admit that I won't ever convince you. The complexity is baked in from the beginning. I remember trying to work through the very first examples from Odersky's original Scala course. Odersky chose college level math concepts and glossed over them as if everyone would understand. I never went to college. This one anecdote reveals why Scala is perceived as complex by so many of us. It's like a professional musician not understanding why most people think playing their instrument is hard. I spent 2 years writing Scala professionally. Every day with it was a grind of waiting for the slow, buggy complier; dealing with the odious incomprehensible sbt, debugging implicits, trying to fathom the impenetrable standard library (which, itself, is hopelessly complex). Most dev's impression of Scala is that it's complex. It's not a rare belief.
I'm surprised there were no mentions to Spark in the early days of Scala.
It feels like Martin is detached from the greater flow FROM the JVM….
Would be great to hear a more official and stronger focus on cross platform goals.
Scala could have been what Rust is becoming.
It really can't. Rust is cross-platform, but it's quite low-level on all platforms. JVM has memory management, Rust doesn't. In Rust you have to manage the memory yourself and have the compiler try and check your manual memory management for errors. Also, while on the JVM you still have to care about particular datastructures like lists, trees etc (less so in Python and Javascript) you don't have to care as much about details like how many bits in what integer datatype and so on. For a large part of software development, these details just don't matter that much. But Rust requires you to know these things, and keep them in mind, to at least a minimal degree more than in Java or Scala. Rust is basically C with some modern language features on top. Sort of C++ in an alternate universe.
Hm - it's kind of interesting and a missing piece that Scala was THE language to write custom DSLs in, and now it's effectively discouraged to do so. I don't think that's a bad move, we evolve and learn. But interesting!
Was that in the video?
@@MrDejvidkit i guess removing the possibility of writing object method calls using space (hence without dot) makes it a bit less able to look like a domain (specific) language
I think you are missing the nuance.
The DEFAULT will be to strongly opinionated about discouraging specific redundantly expressive pathways.
However, library authors will be able to override the default and bypass the expressive pathway limits. This will force library authors into ensuring what they are producing is an appropriate trade-off of concerns between a highly expressive custom DSL and what the mainstream default idiomatic simplified Scala is to the bulk of the non-library writing developers; i.e. the mid-level Enterprise IT backend server Software Engineers.
He says something about modules, that they are important but that people don't understand them. I'm one of those people. Where can I learn what he means by that?
I think he means traits and objects extending that trait. If you import a package, "nothing" happens, as opposed to Javascript and Python, where importing always means some code is run to create all the symbols you need, and often some initialization (though you shouldn't do that). In C# and Java/Scala etc importing just means linking and importing the compiled code, and maybe importing symbols to namespaces. No initialization. I'm too new to know exactly when it happens, either when importing the package or when using the object, code in the object is run and the object is actually instantiated. An object could actually connect to the database or have other sideeffects.
I’ve never understood Martin’s use of “simple” when describing Scala. There is nothing simple about Scala.
What part is complex to you?
@@joan38 To ask that question is to admit that I won't ever convince you. The complexity is baked in from the beginning. I remember trying to work through the very first examples from Odersky's original Scala course. Odersky chose college level math concepts and glossed over them as if everyone would understand. I never went to college. This one anecdote reveals why Scala is perceived as complex by so many of us. It's like a professional musician not understanding why most people think playing their instrument is hard.
I spent 2 years writing Scala professionally. Every day with it was a grind of waiting for the slow, buggy complier; dealing with the odious incomprehensible sbt, debugging implicits, trying to fathom the impenetrable standard library (which, itself, is hopelessly complex). Most dev's impression of Scala is that it's complex. It's not a rare belief.
Unfortunately the wokeness destroyed Scala.
Example?
can you elaborate?