Menü
Avatar von Entwurfsmuster
  • Entwurfsmuster

mehr als 1000 Beiträge seit 05.11.2003

Re: Wer Java liebt hat einen sehr eingeschränkten Horizont!

BubbaBub schrieb am 13.06.2018 12:49:

Nalathni schrieb am 13.06.2018 10:25:

Deine ersten 5 Kritikpunkte sind tatsächlich bei C# besser gelöst als bei Java. Aber natürlich hat auch C# gewisse Probleme, allen voran die Null-Referenzen, die es ja leider so in vielen Sprachen gibt (wundert mich, dass das nicht in Deiner Liste auftaucht).

https://en.wikipedia.org/wiki/Null_pointer#History

Das ist ein erheblicher Vorteil von Sprachen wie Rust, Swift oder Kotlin, finde ich, die Null-Referenzen nur explizit bei Option-Types erlauben.

Es taucht im Bezug zu Sum Types auf. Rust benutzt Sum Types(enum) um einen Option Type anzubieten. Soweit ich weiß löst Swift das genauso. Zudem sind alle meine Kritikpunkte in vielen Sprachen besser gelöst nicht nur C#.

Optional gibt es seit Java 8:
> https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html

Es ist nur leider kaputt:
> https://developer.atlassian.com/blog/2015/08/optional-broken/

Und besonders ironisch: Es ist deshalb kaputt, weil man versucht hat, damit NullPointerExceptions zu vermeiden!

Das geht aber nicht, jedenfalls nicht in Sprachen, die Null als Wert von Referenztypen zulassen!

(Haskell ist hier besonders, weil es dort tatsächlich kein Null gibt. Dort funktioniert Option als Ersatz für Null, bzw. Maybe, wie es dort heisst).

In Scala hat man es anders herum gelöst, mit dem Ergebnis, dass Some(null) möglich ist:
> https://www.scala-lang.org/old/node/6464

BubbaBub schrieb am 13.06.2018 12:49:

Aber selbst wenn es Sum Types in Java gäbe wie Option<T>, bleibt das Problem das Option<int> nicht erlaubt wäre.

Warum sollte das ein Problem sein? Ein int kann per Definition nie null sein, warum das in ein Optional stopfen?

Bewerten
- +
Anzeige