The new text is
For me, from a type system perspective,
going from TypeScript to Scala is like
going from JavaScript to TypeScript.
(I love TypeScript and write a lot of it!)The new text is
For me, from a type system perspective,
going from TypeScript to Scala is like
going from JavaScript to TypeScript.
(I love TypeScript and write a lot of it!)If I see `A`, the search space to understand where that comes from is quite large for most Scala.
package mypackage
import shapeless._
import anorm._
import mything.MyObject._
import com.seriouscompany.Foo
object MyThing {
val a = new A()
}
What does A refer to? Where does it come from?One of the 15 files in the anorm package? Does it come from one of the 40 files in the shapeless package? What about mything.MyObject and the dozen mixin traits that it has?
Alright, let me clone the repo, startup my 4GB IDE, wait 15 minutes for it to download JARs and index eveything and then I can get an answer to where `A` is defined.
Scala wildcard imports are very common in practice, but even if I eschew them, there still another 50 files in the mypackage package that could contain its definition.
---
The same thing can happen in TS with globals, but those are rather few.
Python doesn't have this problem (unless you use wildcard imports, which is often recommend against [1]).
Java does not have this problem, except for protected/internal classes which have only local use anyway (yes there are wildcard imports, but they are rather rare [2]).
Go has this problem for files in the same package, but not from other packages.
C and C++ are far from a hallmark of readability. Though there is at least a common C++ practice to at least always use the fully qualified name [3].
Ruby shares this issue.
---
What makes Scala worse is that wildcard imports are strongly encouraged by libraries and in very frequently found practice, for things such as implicits whose whole purpose is to not be explicitly named.
Plus in Scala, object, classes, fields, methods...all of these can be imported into the scope. So in practice this becomes a more common problem.
[1] https://stackoverflow.com/questions/3615125/should-wildcard-...
[2] https://stackoverflow.com/questions/147454/why-using-a-wild-...
[3] https://stackoverflow.com/questions/1452721/why-is-using-nam...
Just like every language has an untyped/unsafe method of operation. But some languages use that sparingly; others have that for the whole language.
Now that's an interesting perspective on a language that seems too magic. A whole ecosystem of objects who must not be named!