I recently got to learn about Scala and Scala 3. I’m looking to learn scala and create and deploy my own Website/SPA for my personal portfolio. I am not too new to functional programming, but I have never done web programming before.
Scala 2 is still fairly popular in the ecosystem it seems. Should I still learn Scala 2?
More importantly, is there any books to teach me web programming with Scala? Not only backend, a bit of front end primer would help too. I know about TCP sockets, Unix pipes, message passing, shm etc but I have never gone beyond that. I know HTML and CSS and a bit of JS (which was ages ago, HTML 4.1 days).
Hi and welcome!
First, yeah you probably want to first learn Scala 2 and then checkout what are the differences with Scala 3.
For Web development with Scala there are 2 common approaches: Using a Web framework like Play that let’s you manage everything, or having two independent projects a SPA and an API, both can be written in Scala thanks to ScalaJS.
About learning, I personally would recommend focusing first in learning the language basis before diving deep into a project. But, I understand some people prefer a more hands-on approach; my only word of caution would be to be careful of not picking too much at once because it could be overwhelming.
- The Scala Specialization in Coursera.
- Essential Scala from Underscore.
- Scala your first programming language by Devinsideyou.
- Hands-on Scala programming by Haoyi Li
- Creative Scala from Underscore.
After getting comfortable with the language, the next step would be to search for libraries / frameworks that are compatible with your preferences; The Scala community is very big and there are many different sub-communities.
I have a number of playlists on YouTube for learning programming with Scala and doing web development with Play. If you already know how to program you might not find the introductory material as useful as a true beginner would, but the web development playlist is for my students who have never done server-side work before. I don’t spend much time on the client-side aspect making things look pretty. The videos focus more on functionality.
Here are some links. For the introductory material, I’m just linking to my course from the last time I taught it because it breaks out the topics in a way that might be helpful.
CS1 Material - CSCI1320-F19
CS2 Material - CSCI1321-S21
Web Development - https://www.youtube.com/playlist?list=PLLMXbkbDbVt8tBiGc1y69BZdG8at1D7ZF
There are a lot of different options for frameworks and this only hits on Play, React, and Scala.js then using Slinky for React. I think it gives a reasonable foundation for learning other things, but no resource can cover all the things that you might want to learn.