Czy wraz z kolejnymi standardami ECMAScript zmienią się bebechy JavaScriptu?

0

JavaScript ma wiele ciekawych elementów, co do których nie jest pewne, czy były by design czy by bug. Nie mniej jednak działają i mają swoje smaczki.
Dla przykładu, realizacja dziedziczenia za pomocą prototypu ( pole proto), różne konwersje przy porównywaniu, no i inne takie które z pewnością znacie z tematów na StackOverflow i 4p.
Moje pytanie jest takie, czy to zawsze takie pozostanie czy kolejne wersje ES mogą to zmienić? Bo np klasy z ES6 dalej pod spodem działają tak, jak osiągało się dziedziczenie za pomocą różnych "hacków" że tak to nazwę.
Czy więc można się spodziewać w kilkuletnim obszarze czasu jakiś sporych, rewolucyjnych, niszczących zmian w JS czy dalej będzie to "nadbudówka" na to co jest obecnie?
Dla przykładu porównam to do Scali, której wszystkie featury tak naprawdę to cukier składniowy a bytecode Scali i Javy będzie podobny.

0

Dla przykładu porównam to do Scali, której wszystkie featury tak naprawdę to cukier składniowy a bytecode Scali i Javy będzie podobny.

Scala kompiluje się do:

Każda implementacja Scali ma nieco inną semantykę. Z drugiej strony zarówno w Scali.js jak i Scali-Native implementuje się trochę zamienników dla standardowych Javowych klas po to, by móc łatwiej pisać przenośny kod, tzn kod który jednocześnie kompiluje się pod Scalą, Scalą.JS i Scalą-Native.

Nie powiedziałbym więc, że Scala jest cukrem składniowym dla Javy. Jest to trochę zbyt naciągane. Mamy takie wynalazki jak https://github.com/Frege/frege który jest w zasadzie wierną implementacją standardu Haskella na JVMa. Czy to znaczy, że Haskell jest cukrem składniowym dla Javy?

Duże znaczenie ma to czy abstrakcje ciekną ( https://en.wikipedia.org/wiki/Leaky_abstraction ). Jeśli w JSie wszyscy przeniosą się na klasy, zabawa z prototypami będzie niepotrzebna, a same prototypy nie będą o sobie dawać znać to nie trzeba będzie sobie nimi głowy zaprzątać. Wydaje się to jednak mało prawdopodobne.

0

Wątpię, żeby zmienili coś mocno w samym środku JavaScript, bo by cały internet się rozwalił.

Nawet jakby wszyscy zaczęli używać tylko klas, to i tak spora część stron będzie zawierała kod operujący bezpośrednio na prototypach (już pomijając to, co jest lepsze, chodzi po prostu o to, że nie zlikwidujesz prototypów z języka, ponieważ ludzie od dawna z tego korzystają i ciężko byłoby zmieniać wszystkie strony jakie są w internecie).

Więc chyba wtedy by musiały jednocześnie dwie wersje JSa istnieć (coś jak Python 2 i Python 3).

jak osiągało się dziedziczenie za pomocą różnych "hacków" że tak to nazwę.

Dziedziczenie samo w sobie jest zwykle hakiem.

Swoją drogą dziedziczenie po prototypach wydaje się być bardziej czystszą formą dziedziczenia niż zabawa w klasy (tj. dziedziczenie po prototypach to po prostu delegacja do innego obiektu, a dziedziczenie klasowe, to w zasadzie 2 delegacje naraz - instancja odwołuje się do klasy, a klasa odwołuje się do klasy bazowej).

1 użytkowników online, w tym zalogowanych: 0, gości: 1