µTest
cf020031308
µTest | cf020031308 | |
---|---|---|
2 | 1 | |
479 | 0 | |
-0.4% | - | |
4.8 | 0.0 | |
3 days ago | about 2 years ago | |
Scala | ||
- | - |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
µTest
-
From First Principles: Why Scala?
Let's clarify some points for folks not so familiar with Scala.
> * Scala minor version are binary incompatible, so maintaining Scala projects is a big pain. Upgrading Spark from Scala 2.11 to Scala 2.12 was a massive undertaking for example.
Scala just chose a strange naming scheme. Other languages would have just increased their major version instead. The scala minor version is increased every few years and not every month or so.
> * Scala has tons of language features and lets people do crazy things in the code.
Actually, that's not true. Or rather: compared to what language?
Scala has surprisingly few language features, but the ones it has are very flexible and powerful. Take Kotlin for example. It has method extensions as a dedicated feature. Scala just has implicits which can be used for method extension.
> * Scalatest is stil used by most projects and is annoying to use, as described here: https://github.com/lihaoyi/utest#why-utest. The overuse of DSLs in Scala is really annoying.
I agree with the overuse of DSLs. Luckily that got much better, but older libraries like scalatest still suffer from that.
> * Li's libs (os-lib, upickle, utest) have clean public interfaces, but most Scala ecosystem libs are hard to use, see the JSON alternatives for examples
I think that just comes from using the library in a non-idiomatic way. In most applications, you will need to use the whole json anyways, and then you use (or can use) circe like that:
{
cf020031308
-
From First Principles: Why Scala?
After a number of years with Python, I started a position working in Scala about 6 months ago. I really wanted to learn something new, and become acquainted with functional programming concepts.
I agree with most of the above. A couple of additional thoughts:
sbt -- I still have a lot of coming up to speed to do here, but the manual is like 500 pages and it's somewhat overwhelming. There are tons of little oddities, like why can't I run `sbt --version` and instead have to do `sbt sbtVersion`?
The functional side is fascinating -- I'm still studying the cats library. I can almost describe a Monad! It's a pretty big mountain, though, and there are times where I have doubts whether the benefits will be worth it. Would love to hear some re-assurance! ;)
The ecosystem for microservices seems pretty closely tied to akka & lagom. These are quite complex in their own right and we've been having trouble with the latter in particular. Curious to learn about alternatives. ZIO?
Re: DSLs. Also not a huge fan of DSLs. One refreshing thing about python is that often configuration can just be in Python itself (as in Django, for example). See also:
[1] https://erikbern.com/2018/08/30/i-dont-want-to-learn-your-ga...
[2] https://github.com/cf020031308/cf020031308.github.io/blob/ma...
[3] https://twitter.com/antonycourtney/status/589238574429515777
What are some alternatives?
ScalaMock - Native Scala mocking framework
ScalikeJDBC - A tidy SQL-based DB access library for Scala developers. This library naturally wraps JDBC APIs and provides you easy-to-use APIs.
Diffy
kotlin-spark-api - This projects gives Kotlin bindings and several extensions for Apache Spark. We are looking to have this as a part of Apache Spark 3.x
scalaprops - property based testing library for Scala
dotty - The Scala 3 compiler, also known as Dotty.
Scala Test-State - Scala Test-State.
PyCall.jl - Package to call Python functions from the Julia language
Gatling - Modern Load Testing as Code
Quill - Compile-time Language Integrated Queries for Scala
Scalive - Connect a Scala REPL to running JVM processes without any prior setup
Slick - Slick (Scala Language Integrated Connection Kit) is a modern database query and access library for Scala