From 4f0d18124b055f90dd0093937228b00e809ba05e Mon Sep 17 00:00:00 2001 From: Lars Westergren Date: Fri, 2 Sep 2022 18:50:28 +0200 Subject: [PATCH] Docs update - remove obsolete links and unmaintained tools, add new books, tools, Youtube channels --- docs/INSTALLATION.md | 18 ++++++++++++------ docs/LEARNING.md | 23 +++++++++++++++++++---- docs/RESOURCES.md | 15 +++++++++++---- docs/TESTS.md | 7 +------ testgen/build.sbt | 6 +++--- testgen/project/build.properties | 2 +- 6 files changed, 47 insertions(+), 24 deletions(-) diff --git a/docs/INSTALLATION.md b/docs/INSTALLATION.md index 323d86b3f..47073868c 100644 --- a/docs/INSTALLATION.md +++ b/docs/INSTALLATION.md @@ -1,13 +1,18 @@ # Installing [Scala](http://www.scala-lang.org) +Scala can run on the JVM, but also has support for JS integration and even compilation to native code. +For help install various dependencies, consider using [Scala-CLI](https://scala-cli.virtuslab.org/) -In addition to the exercism CLI and your favorite text editor, practicing with Exercism exercises in Scala requires: +Another alternative is [SDKMAN](https://sdkman.io/) +to manage your Java and Java-adjacent development tools and libraries. + +If you do wish to have full control over package installation, you need to manually install * Java Development Kit (JDK) 17 or later. Use your preferred vendor or grab one from [Adoptium](https://adoptium.net/) -* [Scala 2.13.x](https://www.scala-lang.org/download/scala2.html) +* [Scala 3.1.x](https://www.scala-lang.org/download/) * [sbt 1.7.x](https://www.scala-sbt.org/download.html) -If you don't want install these various dependencies by hand, consider using [SDKMAN](https://sdkman.io/) to manage your java and java-adjacent development tools and libraries. + --- @@ -20,7 +25,8 @@ To get started, see "[Running the Tests](https://exercism.org/docs/tracks/scala/ # Scala IDEs * [IntelliJ IDEA with Scala Plugin](https://www.jetbrains.com/idea/) -* [ScalaIDE](http://scala-ide.org/index.html) +* [VS Code with Metals](https://scalameta.org/metals/docs/editors/vscode) +* [Vim or Neovim with Metals](https://scalameta.org/metals/docs/editors/vim) +* [Sublime with Metals](https://scalameta.org/metals/docs/editors/sublime) +* [Emacs with Metals](https://scalameta.org/metals/docs/editors/emacs) * [NetBeans with Scala Plugin](https://netbeans.org/) -* [Metals with VS Code](https://scalameta.org/metals/docs/editors/vscode) -* [Metals with Vim or Neovim](https://scalameta.org/metals/docs/editors/vim) diff --git a/docs/LEARNING.md b/docs/LEARNING.md index d48e3092a..f47a3bc00 100644 --- a/docs/LEARNING.md +++ b/docs/LEARNING.md @@ -1,14 +1,29 @@ # Learning +## Online Courses + + +* [The Scala Center](https://docs.scala-lang.org/online-courses.html) - The Scala Center is an independent not-for-profit center focused on open source and + learning. They have a syllabus and links to various learning platforms. +* [Functional Programming Principles in Scala](https://www.coursera.org/learn/progfun1) - In this course you will discover the elements of the functional programming style and learn how to apply them usefully in your daily programming tasks. You will also develop a solid foundation for reasoning about functional programs, by touching upon proofs of invariants and the tracing of execution symbolically. +* [Functional Program Design in Scala](https://www.coursera.org/learn/progfun2) - In this course you will learn how to apply the functional programming style in the design of larger applications. + ## Books +* [Learn Scala 3 the Fast Way - Alvin Alexander](https://alvinalexander.com/scala/learn-scala-3-the-fast-way-book/) +* [Hands on Scala Programming - Li Haoyi](https://www.handsonscala.com/) * [Programming Scala - Dean Wampler, Ph.D.](http://shop.oreilly.com/product/0636920033073.do) * [Programming in Scala - Oderksy, Spoon, Venners](http://www.artima.com/shop/programming_in_scala_3ed) * [Functional Programming in Scala - Chiusano, Bjarnason](https://www.manning.com/books/functional-programming-in-scala) * [Scala for the Impatient - Cay S. Horstmann](http://horstmann.com/scala/) -* [Hands on Scala Programming - Li Haoyi](https://www.handsonscala.com/) -## Online Courses +## Free Online Books -* [Functional Programming Principles in Scala](https://www.coursera.org/learn/progfun1) - In this course you will discover the elements of the functional programming style and learn how to apply them usefully in your daily programming tasks. You will also develop a solid foundation for reasoning about functional programs, by touching upon proofs of invariants and the tracing of execution symbolically. -* [Functional Program Design in Scala](https://www.coursera.org/learn/progfun2) - In this course you will learn how to apply the functional programming style in the design of larger applications. \ No newline at end of file +* [EBook Foundations List of Free Programming Books](https://github.com/EbookFoundation/free-programming-books/blob/main/books/free-programming-books-langs.md#scala) + +## Youtube channels + +* [Dr Mark Lewis](https://www.youtube.com/user/drmarkclewis) +* [Scala In The City](https://www.youtube.com/c/ScalaintheCity/) +* [Konfy](https://www.youtube.com/c/Konfy/) +* [DevInsideYou](https://www.youtube.com/c/DevInsideYou) diff --git a/docs/RESOURCES.md b/docs/RESOURCES.md index 7a75d37b7..b33e64ffe 100644 --- a/docs/RESOURCES.md +++ b/docs/RESOURCES.md @@ -4,13 +4,20 @@ Exercism provides exercises and feedback but can be difficult to jump into for those learning Scala for the first time. These resources can help you get started: -* [Scala - Getting Started](http://www.scala-lang.org/documentation/getting-started.html) -* [StackOverflow](http://stackoverflow.com/) +* [Scala - Getting Started](https://docs.scala-lang.org/getting-started/index.html) +* [StackOverflow](https://stackoverflow.com/) * [Scala Exercises](https://www.scala-exercises.org/std_lib) * [The Neophyte's Guide to Scala](https://danielwestheide.com/books/the-neophytes-guide-to-scala/) ## Linting -Scala projects can be linted for further code analysis via a third party tool - [Scalastyle](http://www.scalastyle.org/). +Scala projects can be linted for further code analysis via a third party tool -There are several ways of using Scalastyle including Maven, SBT, Gradle, IntelliJ and Eclipse. For instructions on usage visit [Scalastyle](http://www.scalastyle.org/). +* [Scalafix](https://scalacenter.github.io/scalafix/) +* [Scalafmt](https://scalameta.org/scalafmt/#Scalafmt-codeformatterforScala) + +## REPLs and scripting + +* [Scastie - browser REPL](https://scastie.scala-lang.org/) +* [Ammonite shell REPL and scripting tools](http://ammonite.io/) +* [ScribbleNinja - Scala.js in your browser](https://scribble.ninja/) \ No newline at end of file diff --git a/docs/TESTS.md b/docs/TESTS.md index b61f008ac..6efb3b16c 100644 --- a/docs/TESTS.md +++ b/docs/TESTS.md @@ -16,9 +16,4 @@ $ sbt Note that all tests have been disabled except the first one for you to work on. To continue, just remove the `pending` keyword from the beginning of each test case. -Tests can also be run within the following IDEs - -* [IntelliJ IDEA with Scala Plugin](https://www.jetbrains.com/idea/) -* [ScalaIDE](http://scala-ide.org/index.html) -* [NetBeans with Scala Plugin](https://netbeans.org/) - +Tests can also be run within the IDEs listed on the "Installing Scala Locally" page. diff --git a/testgen/build.sbt b/testgen/build.sbt index 812c3eadf..0d1bdded5 100644 --- a/testgen/build.sbt +++ b/testgen/build.sbt @@ -1,6 +1,6 @@ name := "ExcercismScalaTestGenerator" -scalaVersion := "2.13.6" +scalaVersion := "3.1.3" ThisBuild / scalacOptions ++= Seq("-deprecation") @@ -10,8 +10,8 @@ lazy val root = (project in file(".")) Compile / TwirlKeys.compileTemplates / sourceDirectories += (baseDirectory.value.getParentFile / "src" / "main" / "twirl")) -libraryDependencies += "com.typesafe.play" %% "play-json" % "2.9.2" +libraryDependencies += "com.typesafe.play" %% "play-json" % "2.10.0-RC6" libraryDependencies += "org.scala-lang.modules" %% "scala-parser-combinators" % "2.1.0" -libraryDependencies += "com.typesafe.play" %% "twirl-api" % "1.5.0" +libraryDependencies += "com.typesafe.play" %% "twirl-api" % "1.6.0-M6" diff --git a/testgen/project/build.properties b/testgen/project/build.properties index 13ecfea59..38c0109bf 100644 --- a/testgen/project/build.properties +++ b/testgen/project/build.properties @@ -1,2 +1,2 @@ -sbt.version=1.6.1 +sbt.version=1.7.1