Answer the question
In order to leave comments, you need to log in
Learning Programming Through the Rock?
In programming, I'm practically 0. I know maybe a little PHP syntax, but a little C syntax. I want to start to properly delve into programming by rock (I liked his language and the niche in which he is). Where to actually start? From learning the language itself? From algorithms (according to Virtu)?
Answer the question
In order to leave comments, you need to log in
In my opinion, Scala is not suitable for the first language at all. Scala is a complex, overloaded, multi-paradigm language with an intricate syntax (moreover, in my opinion, the paradigms are not woven orthogonally). Scala needs to be learned as a language in and of itself after you've skimmed through Wirth and code decently. Otherwise, you will just get confused and drown in the concepts of the language instead of learning to program. To use the features of scala, you need to already know what they are for.
If you are 0 in programming and want to start getting into programming properly, then start with the classics - Structure and Interpretation of Computer Programs (SICP), this book lays a good foundation, and also introduces you to functional programming:
book:
web.mit.edu /alexmv/6.037/sicp.pdf
auxiliary site for self-study of the book:
https://mitpress.mit.edu/sicp
sicp.sergeykhenkin.com/sicp-exercise-solutions
translation of the book (not aware of the quality)
newstar.rinet .ru/~goga/sicp/sicp.pdf
video of lectures on the book:
ocw.mit.edu/courses/electrical-engineering-and-com...
From the point of view of Scala, in my opinion the best option is to take Scala courses on coursera.org. But below are examples and links to other sources for learning Scala programming. Cousera.org online
:
Scala specialization is one of the fundamental sources of knowledge about Scala programming. Includes video lectures, add. materials, questions for consolidation, tasks for programming, a forum for questions and discussions (all optional). In principle, instead of SICP, you can immediately start with a specialization on coursera.org, in particular, the first course in the specialization was designed by Martin in the SICP style (at least before the creation of the specialization, the course program and assignments were in the spirit of SICP).
https://www.coursera.org/specializations/scala
Links to courses from the specialization separately (for free registration):
1. Functional Programming in Scala
2. Functional Program Design in Scala
3. Parallel programming
4. Big Data Analysis with Scala and Spark
A slightly aside course about reactive programming on scala :
Principles of Reactive Programming
---
Interactive Scala Exercises from 47 Degrees (currently 6 courses std lib , cats , shapeless , doobie , scalacheck , FP in Scala )
https://www.scala-exercises.org
www.scalakoans.org - small lessons to learn
---
Big data university (with a bias in Data Science and Big Data):
Introduction to Scala
Scala for Data Science
Spark Overview for Scala Analytics
----------- -------------------------------
If you are more interested in non-interactive learning style, and thoughtful reading, then you can recommend the following books:
Books :
In Russian, unfortunately, there is only one book:
Scala for the impatient
, but for a beginner in programming, it most likely will not work.
Also in 2016, an updated version of the book by Martin Odersky, Lex Spoon and Bill Venners was released, which covers all issues related to Scala (859 pages), including all the innovations at the moment (up to Scala 2.12). This book can also be read if you are new to programming. This is probably the most fundamental source for learning Scala:
Programming in Scala, Third Edition
After getting acquainted with the basics of Scala, to deepen the functional aspects of Scala programming, you can read a wonderful book by Paul Chiusano and Rúnar Bjarnason:
Functional Programming in Scala
To learn the practical basics of designing modern applications using the capabilities of Scala and its ecosystem, using the functional paradigm, I recommend an excellent book by Debasish Ghosh
Functional and Reactive Domain Modeling
In general, there are many different books on Scala and various tools from the Scala ecosystem, so if you wish, you can to find a suitable level and interest, you should also pay attention to the selection of books on the site lightbend (formerly TypeSafe)
You can also read the translation of Scala lessons from Twitter:
Scala School!
------------------------------------------------
As for the algorithms you mentioned, you can look at a wonderful set of classical algorithms and data structures implemented in Scala in a purely functional style:
scalacaster by @vkostyukov(Twitter, Finagle)
or
scalgos by @pathikrit
--------- ---------------------------------
Ninety-Nine Scala Problems - a set of small exercises (with answers) for learning Scala
Hands-on Scala.js - Scala.js tutorial by @lihaoyi Type
-Level Programming in Scala - ten part series of posts on advanced use of Scala's type system features by Rúnar Bjarnason (co-author of Functional Programming in Scala) and Mark Harrah (developer sbt)
Scala Best Practices - a collection of good Scala programming practices by Alexandru Nedelcu
PS Also, if you want to keep abreast of what is happening in the Scala ecosystem and community, you can watch this collection of blogs and news and video resources about Scala
I join the two previous respondents:
1) https://www.coursera.org/course/progfun
2) K. Horstmann. Scala for the impatient
After, act according to circumstances and interests.
Scala, under some circumstances, can be the first language due to the fact that it has a very large community and good development tools. However, this path is really hard. Unfortunately, there is no literature that would allow this to be done effectively. Odersky adapted the course "Computer Program Structure and Interpretation" for Scala (it's easy to find in Google and Corcer), but in my opinion, not very well. But this is where you can start. In general, I share the opinion of the majority - it is too difficult to start. Python is a much better place to start.
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question