2012-04-15 12 views
21

Oba języki twierdzą, że naprawiają zauważone braki JavaScriptu. Chciałbym zrozumieć kluczowe różnice w sposobie, w jaki CoffeeScript i Dart (skompilowane do JavaScript) starają się to osiągnąć. W szczególności,Jakie są główne różnice między korektami CoffeeScript i Dart przy JavaScript?

  • Czy model obiektowy jest taki sam jak w JavaScript?
  • Są one wpisane statycznie lub dynamicznie? Silny czy słaby?
  • Jak zamknięcia działają w obu językach?
  • Czy obsługują one coroutines?
  • Jakie są główne różnice w składni?
  • Ile bibliotek natywnych mogę używać?
  • Czy mogę korzystać z istniejących bibliotek JavaScript?

Jestem nie zainteresowany rzeczy, takich jak osobiste preferencje, kursów przysposobienia, pomocy narzędzia lub przydatności do określonego celu.

+0

Może być lepiej dopasowany do http://programmers.stackexchange.com/ –

+0

@TrevorBurnham Dzięki, rozważę to. Czy to sugeruje pytania, które nie są konstruktywne w przypadku stackoverflow, lub że jest mniej tylko zastraszanie programistów.stackexchange.com? IOW, dlaczego to pytanie powinno być "nie konstruktywne" tutaj, ale czy jest OK? – Tobias

+0

Nie wydaje mi się to szczególnie mało konstruktywne, choć może było to trochę niejasne. Edytowane, ponownie otwarte. – Shog9

Odpowiedz

19

Seth Ladd ma blog post gdzie porównuje pewne aspekty coffeescript z rzutki i JavaScript. Nie dotyka wszystkich twoich pocisków, ale może być początkiem. Opublikował także ten numer discussion w odpowiedzi na artykuł Coffeescript i Dart dotyczący nettuts.

+1

Wielkie dzięki, właśnie tego rodzaju informacji szukam. – Tobias

1

Aby dodać do świetnych linków Richarda G: Możesz używać JavaScriptu wewnątrz CoffeeScript http://coffeescript.org/#embedded Przetestuj CoffeeScript na tej stronie; mnóstwo świetnych przykładów.

IIRC, Dart był jego własny język w pierwszej kolejności. Gdy społeczność deweloperów nie była tak otwarta dla Dart ("meh" lub "ugg"), Google zahaczyło o JavaScript, który kompilował Cross do Dart. Native Dart ostatecznie musi konkurować z JavaScript. Dart ma teraz jakość alfa; Pominęłbym to, chyba że dużo testujesz.

Dla mnie lepszym pytaniem byłoby: „Czy mogę rozwijać w coffeescript lub Haxe JS?”

+5

W rzeczywistości Dart jest zaprojektowany do kompilacji (i kompilacji) do JavaScript od pierwszego dnia. Obecny kompilator (dart2js) jest tak naprawdę "pierwszym" dartem -> kompilatorem JavaScript (najpierw był to dartc, potem żaba, potem noga, która ostatnio została przemianowana na dart2js). – Ladicek

+0

"http://www.haxejs.org/" jest zgłaszane jako źródło złośliwego oprogramowania przez Chrome! – George

0

Znalazłem nowy vid na MarakanaTechTV, który ma pewne porównanie z Dart vs JS (głównie związane z VM Dart, a nie po renderowaniu do JS od Dart). Highlights:.

  • Więcej klasa oparta (w przeciwieństwie do prototypów JS-tych, które są podobne, ale dart jest bardziej jak Java & C++ tutaj pomaga to sprawia Dart szybciej, ponieważ rozmowy nie muszą podróżować do łańcucha prototypów.)
  • Objects sizes may be static & gęste, pomagające obiektowo-macierz działać szybciej. Choć możesz użyć "mapy", jeśli chcesz holely tablice.
  • Int maths są łatwo dostępne, które są szybsze niż podwójnych pływaki (co JS bardziej lub mniej zawsze).
  • Dart has SIMD który może zmniejszyć duży zestaw danych Wykorzystanie CPU (np zdjęcia, audio, wideo, 3D, ogromne tabelach). Chociaż nie planujesz przetwarzania grafiki, dźwięku lub dużych tabel liczb w przeglądarce, nie ma to dla ciebie znaczenia. (BTW, nie zgadzam się z prelegentem, moje własne tłumaczenia na SIMD dla DSP, pokazujące przejście na SIMD, wymagają pewnego "nakładu", ponieważ kod SIMD wykonuje 1 lub więcej cykli ponad typowym opc podwójnym/int, &, który musisz wydać opcodes do tłumaczenia między SIMD & "starych" matematyki.Mimo to, nawet używając SIMD do 2-kanałowego (jak stereo audio), możesz zaoszczędzić co najmniej 20% procesora, &, aż do 3,7-krotnego zwiększenia prędkości, jeśli używasz wszystkich 4 kanałów).

I kolejny film "Why Dart?" dla twórców stron internetowych. Poręczny cukier/skróty językowe: o nazwie constrictors, leksykalny "this", kaskady metod. Wbudowane powiązanie danych, takie jak Angular.js.

Powiązane problemy