Earlier quoted context omitted.
Thanks for the feedback. I have updated the README to use less inflammatory language and be more specific that the comparison is just for the type system. 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!)
Having written massive amounts of both Scala and TS, I'd say the #1 issue Scala has the the impossibility to understand a simple variable reference. If I see `A`, the search space to understand where that comes from is quite large for most Scala.
Show HN: Noric-bot – A bot to stress-test text-based MUDs, written in Scala 3
31–40 of 72 posts
Re: Show HN: Noric-bot – A bot to stress-test text-based MUDs, written in Scala 3
#32I can't contribute anything directly about this bot, but I'm glad to see MUDs are still being studied. I feel like I never saw the full potential of what they could do for society. Some of the social interactions were much more rewarding than anything I have experienced on so-called "social" media.
Re: Show HN: Noric-bot – A bot to stress-test text-based MUDs, written in Scala 3
#33I was an admin (wiz) on various MUDs and MUSHs many, many years ago, and of course an avid user. The mix of programming, creativity, and camaraderie was sometimes very special. Maybe my recollections are clouded by nostalgia, but it sometimes felt like a hacker fantasy, coding, role-playing, and working together for good (fun). I wish I could recapture that feeling, I wish there were time for it, and I wish there wer…
I feel the same way - I have a lot of great memories associated with those times, and some fantastic life and development skills picked up because of it (I wrote my first virtual memory subsystem for a mud to work around me not having enough ram to load the world). I feel very nostalgic about text based adventures, and really feel like a lot of gameplay is really missing the imagination and experiences that were able to be captured by such a "primitive" interface.
Re: Show HN: Noric-bot – A bot to stress-test text-based MUDs, written in Scala 3
#34Earlier quoted context omitted.
Not only that, accusing TypeScript of being "unsophisticated" is just dumb. Unsound, inconsistent, overly complicated, poorly abstracted, improper paradigms.....any of those would be a more legitimate criticism than "unsophisticated".
Typescript is flawed, but it is a godsend compared to using straight JS. You can use it like Java until you can't. And then you are forced to muck around with JS hacks just to please the transpiler. Usually that happens using generic types. They are almost completely worthless in Typescript, and have no analog whatsoever in JS. So you are mucking around just to please the transpiler but adding a type unsafe hack anyw…
Re: Show HN: Noric-bot – A bot to stress-test text-based MUDs, written in Scala 3
#35Cool project, but why engage in language flame war on the project readme: > I think Scala is the best mainstream language with a sophisticated type system. Sophisticated type systems are money in the bank. Going from TypeScript to Scala is like going from JavaScript to TypeScript.
Not only that, accusing TypeScript of being "unsophisticated" is just dumb. Unsound, inconsistent, overly complicated, poorly abstracted, improper paradigms.....any of those would be a more legitimate criticism than "unsophisticated".
> Unsound, inconsistent, overly complicated, poorly abstracted, improper paradigms
apply to the current stable version of Scala as well. You'd be comparing Typescript as it is in production right now to a best case scenario of where Scala could end up in a couple years.
Re: Show HN: Noric-bot – A bot to stress-test text-based MUDs, written in Scala 3
#36Earlier quoted context omitted.
Having written massive amounts of both Scala and TS, I'd say the #1 issue Scala has the the impossibility to understand a simple variable reference. If I see `A`, the search space to understand where that comes from is quite large for most Scala.
I’m a professional Scala dev, what exactly do you mean? Structural sharing instead of copying? Implicits?
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.
Re: Show HN: Noric-bot – A bot to stress-test text-based MUDs, written in Scala 3
#37Awesome! I'm going to have to check that out. I'm doing a human stress test on my mud project, Enceladus right now! There's over 25+ people in so far. It's the worlds first realtime crypto RPG, as in you can find ethereum in the game. Come help us test it!! https://discord.gg/S7TkGXX or http://enceladusgame.io/playtest
You should put a TLS cert on http://enceladusgame.io/playtest
Re: Show HN: Noric-bot – A bot to stress-test text-based MUDs, written in Scala 3
#38Earlier quoted context omitted.
Typescript is flawed, but it is a godsend compared to using straight JS. You can use it like Java until you can't. And then you are forced to muck around with JS hacks just to please the transpiler. Usually that happens using generic types. They are almost completely worthless in Typescript, and have no analog whatsoever in JS. So you are mucking around just to please the transpiler but adding a type unsafe hack anyw…
TypeScript's type system is actually much more expressive than Java or C#'s. You can't express OR types (sum types) like `string | number` nicely in those languages. It's the main thing that made me hate statically typed languages until I tried Rust (which also lets you express this).
You're right if by "more expressive" you meant "not really safe at all". By using the types of hacks you proposed, you end up losing type information and safety guarantees. So why bother using Typescript in the first place then? Your example is the perfect argument against Typescript.
If you were referring to generic types, then there's no good reason to do that in the first place. Use a base type. Polymorphism 101. Anything else would be duck typing, and not safe.
There's no middle ground with type safety: it is either safe or not. And if there's a chance it's not, then you've lost and all of your efforts are pointless without resorting to manual checks.
And if you were somehow referring to C++ like templating (unlikely), then Typescript doesn't support that anyway.
Re: Show HN: Noric-bot – A bot to stress-test text-based MUDs, written in Scala 3
#39Earlier quoted context omitted.
I’m a professional Scala dev, what exactly do you mean? Structural sharing instead of copying? Implicits?
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…
Re: Show HN: Noric-bot – A bot to stress-test text-based MUDs, written in Scala 3
#40Cool project, but why engage in language flame war on the project readme: > I think Scala is the best mainstream language with a sophisticated type system. Sophisticated type systems are money in the bank. Going from TypeScript to Scala is like going from JavaScript to TypeScript.
You better have money in the bank to allow for all the refactoring you will be doing once you realize your data model needs to change in unforeseen ways ;)