Skip to content

Instantly share code, notes, and snippets.

@kell18
Last active February 9, 2024 18:39
Show Gist options
  • Save kell18/f0995ce988d82f9607bebd9c09eff9c7 to your computer and use it in GitHub Desktop.
Save kell18/f0995ce988d82f9607bebd9c09eff9c7 to your computer and use it in GitHub Desktop.

If you're just starting in programming

If you don't have prior programming experience some Java (or Python, C#, ...) courses would help to get the basics, for example:

If you already have some experience in programming

Chats (beginner friendly)

  1. Gitter rooms
  2. Telegram scala_en and scala_ru

Use Scastie (online code editor) for code related questions.

Introductory talks and articles

Courses

Books

Articles and more

General recommendations

  • Be patient, Scala may seem like better Java at first but it's deeper then it looks partially becayse Scalaa is a combination of 2 paradigms (object-oriented and functional).
  • Experienced buddy in Scala or any other functional (or object-oriented) programming could help a lot, also you can ask any questions in Scala gitter channels as well.
  • Environment: Intellij with Scala plugin are quite nice. VS Code with Metals plugin super as well. Eclipse Scala IDE seems a bit outdated to me.
  • In Scala instead of using frameworks, we tend to use libraries that are compatible with each other by means of type-classes and/or monads (Cats.effect is an example of such compatibility layer). That way code is simpler and more extensible. For example, Akka-Http/Tapir/Http4s instead of Play Framework. Or Future/Monix/IO/Fs2/ZIO instead of Akka Actors.

Jobs

Podcasts

  1. CoRecursive w/ Adam Bell - for me the episode#004 with Runar Bjarnason was eye-opening in terms of FP and functinal design
  2. FlatMappers (Russian)
  3. Scalalaz (Russian)

News

  1. Scala Times
  2. Data times

Some terminology

  • FP - a way of writing programs so it's very composable and easy to reason about by omitting mutable state, side effects (eg. blocking threads, throwing exceptions, etc), non-local reasoning (dependency injection, actors, runtime class loading, reflection)
  • Cats - enhancement of standard lib for basic FP
  • Cats.effect - furthermore provides a way to write programs without side-effects (IO type) and concurrently
  • Tofu - alternative to Cats.effect
  • ZIO - also alternative to Cats.effect but with quite different approach
  • Akka - Actors library
  • Read on A Glossary of Functional Programming by John De Goes
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment