2009-08-11 10 views
11

Po prostu myślałem dzisiaj. Spędziłem trochę czasu w trybie debugowania IE, przeglądając sieć jak zwykle, i oh, czy widzę wiele błędów :) Większość z tych błędów wynika z tego, że niektóre wartości są innego typu niż oczekiwano (przynajmniej tak daleko, jak interpretuję błąd wiadomości).Czy javascript i podobne języki skryptowe mogą być silnie wpisane?

Jakie są powody, dla których JavaScript i podobne języki skryptowe nie są silnie wpisane? Czy jest to po prostu uczynienie języków "łatwiejszymi", aby je zrozumieć i łatwiej dostępnymi, czy też brak "kompilacji" prawdziwym problemem?

+0

Powinieneś raczej dodaj swoją opinię jako odpowiedź - ocenić, jak mocno ludzie (DIS) zgadzają – karim79

+0

Wyjaśnienie: Nie ma nic Cię powstrzymuje od parsowania javascript lub innego języka dynamicznego. To, o czym mówisz, to semantyczna ocena analizowanego tekstu. – JaredPar

+0

Dodano moją własną oppionion jako odpowiedź. A wy, Jared, ale zakładając środowisko przeglądarki, nikt o tym nie wie (przynajmniej nie według mojej wiedzy?). Gdybyś miał mocno napisany język skryptowy, byłbyś do tego zmuszony, jak sądzę? :) – cwap

Odpowiedz

15

To zdecydowanie powinno mieć silne wpisanie dostępne. Actionscript 3 jest silnie wpisany, ale nadal ma dziedziczenie prototypowe i typ wieloznaczny, jeśli potrzebujesz obiektów dynamicznych.

Nie ma wady, że ta funkcja jest dostępna, i muszę powiedzieć, że w przypadku projektu o rozmiarach od średniego do dużego, silne pisanie zapobiega TONIE problemów. Aby uzyskać jak najwięcej z tego, potrzebujesz wsparcia dla IDE, aby mógł zgłaszać błędy i zapewniać opcje autouzupełniania, ale JavaScript byłby w zupełnie nowym świecie, gdyby miał prawdziwe zajęcia i silne pisanie.

+0

+1 dla "Co za szkoda w dodaniu"; ludzie, którzy nie chcą tego, nie muszą z niego korzystać. –

+0

Po 6 latach jest to bardzo zbliżone - JavaScript z prawdziwymi zajęciami. Chociaż nie jestem zbyt pewny silnego pisania. –

1

Moja własna oppinion: Możesz sparsować skrypty przed ich wykonaniem. Spowoduje to wychwycenie większości błędów typu i oznacza, że ​​użytkownik nie musi widzieć częściowo wykonanego, a następnie zakończonego, wyniku skryptu. Nawet lepiej, byłoby o wiele łatwiej debugować rzecz, gdyby miał parser :)

2

Zyskuje elastyczność, ponieważ nie jest wpisywany. Osobiście cieszę się słabo napisanymi językami.

Odpowiedź brzmi, że istnieją zalety i wady.

Dla osób, które chcą w przeglądarce mocno napisanego języka, dostępne są GWT i Script #.

+0

Nie powiedziałbym, że są elastyczne, ponieważ wprowadzają całą klasę błędów, którym można zapobiec automatycznie, i robią to, nie oferując żadnych dodatkowych funkcji. Możesz mieć gwarancję, że ten obiekt, który przekazałeś, będzie obsługiwał metodę, której potrzebujesz, ale nigdy się nie dowiesz, chyba że ta linia kodu zostanie wykonana ... – weberc2

0

Buduję system szybkiego prototypowania dla e-learningu w ActionScript 2, kiedy. Moim największym problemem było to, że AS2 nie był mocno napisany i powoduje wiele bólów głowy podczas debugowania. Myślę, że silnie wpisywanie spraw sprawia, że ​​kod jest łatwiejszy do odczytania. Myślę, że słabo napisany język oferuje większą elastyczność.

Pochylam się bardziej w kierunku czytelności, kiedy muszę wrócić i dowiedzieć się, co do diabła dzieje się w kodzie napisanym 6 miesięcy temu.

+1

AS2 jest silnie wpisany. Po prostu określ typ po zmiennej. np .: var vector1: Vector – Marius

1

Podobają mi się słabe, typowane aspekty większości języków skryptowych. Jedynym powodem, dla którego chciałbym mocno napisać, poza wydajnością, jest to, że narzędzia są łatwiejsze do refaktoryzacji języków mocno napisanych niż słabe.

+0

Ponadto, silne pisanie wydaje się eliminować całe klasy błędów i ułatwia zapamiętywanie metod obsługiwanych przez obiekt. W JavaScript dwa obiekty tego samego typu mogą mieć zupełnie inne metody. Yippee! – weberc2

2

Czy javascript i podobne języki skryptowe mogą być silnie typowane?

Tak, to oni, JavaScript 2.0 wprowadza type system:

Typ systemu JavaScript 2.0 obsługuje pojęcie typu, który może być traktowany jako podzbiór wszystkich możliwych wartości. Istnieje kilka wbudowanych typów, takich jak Object, Number i String; każda klasa zdefiniowana przez użytkownika (sekcja 6) jest również typem.

zobacz także: http://timkadlec.com/2008/04/an-objective-look-at-javascript-2-0-strong-typing/

Generalnie, wsparcie dla silnego typowania zapewnia wiele ciekawych możliwości dla kompilacji i optymalizacji przechodzi.

0

Microsoft zrobił długą drogę do rozwiązania silnego wpisywania problemu w międzyczasie za pomocą maszynopisu. Rzucić okiem:

http://www.typescriptlang.org/

Powiązane problemy