Sure :) I think one example would be the usage of symbolic operators, or over-reliance on such operators. Another would be that sometimes a mutable variable (`var`) is actually ok, as long as it's used locally - so local mutable state is often fine, global mutable state is where problems start. Yet another instance would be using too many implicits - for cases, where normal, "explicit" parameters work just as well - this might include dependency injection. That's not unique to Scala, btw. In Java, we had a similar history with learning (on own mistakes) not to over-use inheritance, for example.
@@slizzardshroomer9666 all they literally have to do is get low-level features like pointers etc included. Then you pretty much replace c++ by 95% and be far more accessible and productive than in c++. Because c++ was when hardware/storage was very limited, not the case anymore.
That's a good question! But without a definite answer. Both Akka-Typed, Monix and ZIO are interesting technologies and learning them should be very valuable, not only because you are learning a new library, but because of the overall approach to concurrent/distributed programming that they represent. I think I would try assessing what are the use-cases for which you might end up needing a library like akka or monix or zio, and learning the one which has the highes probability of being used in practice.
I am just a Scala enthusiast, so maybe my opinion is not so useful, but I decided to start with Akka for two main reasons. 1 - It's easier to find books and other resources. 2 - It seems that Akka is more required in job descriptions in Poland (where I live) I had to start somewhere.
I'd definitely not recommend starting with Akka... It goes against the notion of functional programming in Scala (local reasoning, type-safety) and it's also way too powerful as a tool, meaning that you can apply it to anything, but eventually, it'll be a mess unless a substantial amount of work put into maintenance (which is also against FP notions)
Thanks! What about performance between Java and Scala? They still run on the JVM but what’s the difference from performance aspect, Another question is how Scala handle vs. new Java versions?
Thanks for the nice video but I always felt that code conciseness is taking away code readability in scala. HelloWorld examples always look easy but in reality, doing some complex data manipulation code looks concise but hard to understand for not only peer engineer but to myself when I read it again.
Sure, it's a fine art and you shouldn't be too concise, beyond comprehensibility. The difference with Scala is that you have the option to be concise and you have the option to create more advanced abstractions, unlike in other languages which often lack these capabilities or have them to a limited degree. Just like normal tools - an electric saw gives you much more possibilities than a hand saw, but hurting yourself is much easier as well.
Sure, in the future that will be "the way". But currently Scala 3 is at version 3.0.0-M3, so for any production application, I would still recommend using Scala 2.
For everything you need. That is ok solvable on JVM or JS. Any task you like.t Any product you like. Mostly big apps. Like twitter and Spar. Also small frontend apps in JS or Backend services or WebApps.
@@amrojjeh Bytecode is the term used for intermediary code prepared for VMs(like the Java VM) that's neither human-readable nor machine-readable(by the CPU). It can only be run by a compatible runtime environment. If you compile it to a normal executable file it's (native) machine code. So "native bytecode" isn't really a thing.
Yes it is - and works quite well. Not ideal, but still better than the alternatives. There are some alternatives, e.g. scala-cli for simpler, single-module projects, or for sharing self-contained code samples.
@@AdamWarski2 Sorry for asking "stupid" questions but i'm a bit out of loop. Last time i used Scala professionally it was 2012... . Do i remember correctly that even Intellij had some problems parsing more complicated Scala code / sbt configs at that time? Is it still worth refreshing Scala knowledge in the current (sh**ty market) ?
@@jutublizard Not stupid questions at all :) IntelliJ for Scala 2 "just works" (importing SBT, or other builds, syntax highlighting, code completion, etc.), alongside with some Scala-specific features (such as inlay hints showing intermediate operation types, or displaying the values of implicits). IntelliJ for Scala 3 still has sometimes problems, but I'd say it "mostly works". However, there's also Scala Metals (works with VS Code and other editors), which provides first-class Scala 3 support. The editor itself is not IntelliJ, but the syntax highlighting is flawless (it uses the compiler), and the compilation itself is very vast.
@@jutublizard Oh I won't attempt answering that :). From our - probably narrow and biased perspective - we are hiring senior Scala engineers (although, we do require polish as a spoken language, which limits our reach), and we do have clients asking for more Scala development capacity. However, keep in mind that Scala is one of the specialisations of SoftwareMill, so this might not represent the overall market.
Yes, and that dirty syntax makes my eyes wet with all those semicolons and return statements missing from my sight; it doesn't even look like code anymore.
This video is absurd. It's trying to convince newcomers to scala about the benefits of scala, but it's given at a pace too fast for beginners and assumes too much knowledge of scala already.
I’ve never seen scala but have no issue with the presentation. You must be coming from js or some other front end framework, I use C and targeted assembly language. I forget that most developers probably don’t have a clue how to program, there is difference between someone who builds the tools vs people that use the tools.
Wow, Andy Warski really cleaned up his act. Who knew he was this smart?
@Cody Cig Are we talking about Andy or adam?
LOL
At 2:32 you mentioned that the community learned which Scala features to avoid - can you explain more?
Sure :) I think one example would be the usage of symbolic operators, or over-reliance on such operators. Another would be that sometimes a mutable variable (`var`) is actually ok, as long as it's used locally - so local mutable state is often fine, global mutable state is where problems start. Yet another instance would be using too many implicits - for cases, where normal, "explicit" parameters work just as well - this might include dependency injection.
That's not unique to Scala, btw. In Java, we had a similar history with learning (on own mistakes) not to over-use inheritance, for example.
Could you consider making tutorials or implementing some small usecases videos in scala.
Scala is actually the best. Industry hasn't caught yet.
I wouldn't say the best but it's one of the best.
@@slizzardshroomer9666 all they literally have to do is get low-level features like pointers etc included. Then you pretty much replace c++ by 95% and be far more accessible and productive than in c++. Because c++ was when hardware/storage was very limited, not the case anymore.
good overview, thank you very much!)
What your opinion about start in scala using akka? Or is better study zio/cats?
He has written a long post comparing those: blog.softwaremill.com/scalaz-8-io-vs-akka-typed-actors-vs-monix-part-1-5672657169e1
That's a good question! But without a definite answer. Both Akka-Typed, Monix and ZIO are interesting technologies and learning them should be very valuable, not only because you are learning a new library, but because of the overall approach to concurrent/distributed programming that they represent. I think I would try assessing what are the use-cases for which you might end up needing a library like akka or monix or zio, and learning the one which has the highes probability of being used in practice.
Great! I'll read the blog post. Choose the first stack to study without know good/bad part is very hard.
I am just a Scala enthusiast, so maybe my opinion is not so useful, but I decided to start with Akka for two main reasons. 1 - It's easier to find books and other resources. 2 - It seems that Akka is more required in job descriptions in Poland (where I live)
I had to start somewhere.
I'd definitely not recommend starting with Akka... It goes against the notion of functional programming in Scala (local reasoning, type-safety) and it's also way too powerful as a tool, meaning that you can apply it to anything, but eventually, it'll be a mess unless a substantial amount of work put into maintenance (which is also against FP notions)
It was a great video. Thanks
Thanks!
What about performance between Java and Scala?
They still run on the JVM but what’s the difference from performance aspect,
Another question is how Scala handle vs. new Java versions?
Performance of the base language is comparable, but that depends more on the libraries that you use, rather than the language.
Thanks for the nice video but I always felt that code conciseness is taking away code readability in scala. HelloWorld examples always look easy but in reality, doing some complex data manipulation code looks concise but hard to understand for not only peer engineer but to myself when I read it again.
Sure, it's a fine art and you shouldn't be too concise, beyond comprehensibility.
The difference with Scala is that you have the option to be concise and you have the option to create more advanced abstractions, unlike in other languages which often lack these capabilities or have them to a limited degree. Just like normal tools - an electric saw gives you much more possibilities than a hand saw, but hurting yourself is much easier as well.
+1
Future of spark scala what to learn next
Why not model ADT with Scala 3 features like enums or sum types instead of sealed trait?
Sure, in the future that will be "the way". But currently Scala 3 is at version 3.0.0-M3, so for any production application, I would still recommend using Scala 2.
Is there Java interop yet?
It compiles to the JVM, so it's there from the start.
Yes its 100% supported and used in production.
What scala for?
What tasks you can do with it?
What products you can build with it?
2 big banks in my country uses scala on their enterprise apps that handle very large sums of money by big clients
For everything you need. That is ok solvable on JVM or JS.
Any task you like.t
Any product you like. Mostly big apps. Like twitter and Spar. Also small frontend apps in JS or Backend services or WebApps.
Native bytecode? What’s that
Hm must be a slip of the tongue :) I don't know what native bytecode is either ;)
What's the context, as I can't find where I mention that?
Essentially compiling it to a .exe file, so that it's specific to the platform and it doesn't require any third-party tools such as the JRE to run.
@@amrojjeh Well that's not bytecode anymore then.
@@SaHaRaSquad How come?
@@amrojjeh Bytecode is the term used for intermediary code prepared for VMs(like the Java VM) that's neither human-readable nor machine-readable(by the CPU). It can only be run by a compatible runtime environment. If you compile it to a normal executable file it's (native) machine code. So "native bytecode" isn't really a thing.
is sbt still a thing in scala world?
Yes it is - and works quite well. Not ideal, but still better than the alternatives. There are some alternatives, e.g. scala-cli for simpler, single-module projects, or for sharing self-contained code samples.
@@AdamWarski2 Sorry for asking "stupid" questions but i'm a bit out of loop. Last time i used Scala professionally it was 2012... . Do i remember correctly that even Intellij had some problems parsing more complicated Scala code / sbt configs at that time? Is it still worth refreshing Scala knowledge in the current (sh**ty market) ?
@@jutublizard Not stupid questions at all :) IntelliJ for Scala 2 "just works" (importing SBT, or other builds, syntax highlighting, code completion, etc.), alongside with some Scala-specific features (such as inlay hints showing intermediate operation types, or displaying the values of implicits). IntelliJ for Scala 3 still has sometimes problems, but I'd say it "mostly works". However, there's also Scala Metals (works with VS Code and other editors), which provides first-class Scala 3 support. The editor itself is not IntelliJ, but the syntax highlighting is flawless (it uses the compiler), and the compilation itself is very vast.
@@AdamWarski2 Is it still worth refreshing Scala knowledge in the current job market ?
@@jutublizard Oh I won't attempt answering that :). From our - probably narrow and biased perspective - we are hiring senior Scala engineers (although, we do require polish as a spoken language, which limits our reach), and we do have clients asking for more Scala development capacity. However, keep in mind that Scala is one of the specialisations of SoftwareMill, so this might not represent the overall market.
File1 Code -
class Abc {
//code
}
File2 Code -
Class Abc1 {
var a:Abc = null
try {
a = new Abc()
}
}
what does this line in file2 mean in scala "var a:Abc = null" where Abc is a class stored in file1
i though only c++20 and future is getting ugly syntax... :D
Isn't c++20 getting more readable tho?
The more I learn about the more I find out how ugly it is.
Yes, and that dirty syntax makes my eyes wet with all those semicolons and return statements missing from my sight; it doesn't even look like code anymore.
Julia
This video is absurd. It's trying to convince newcomers to scala about the benefits of scala, but it's given at a pace too fast for beginners and assumes too much knowledge of scala already.
This is not beginners video. There are other excellent sources on the internet for that.
I’ve never seen scala but have no issue with the presentation. You must be coming from js or some other front end framework, I use C and targeted assembly language. I forget that most developers probably don’t have a clue how to program, there is difference between someone who builds the tools vs people that use the tools.
Twitter and linked in hack not possible but facebook possible.