niedziela, października 16, 2011

Poskramianie Darta ;-)

Chciałbym się móc pobawić Dartem, ale Google nie lubi Windowsa.
Nawet gdzieś mi po głowie chodzi by kupić sobie takiego małego niby ultrabooka (czy prawie, 13.1 cala, 4 albo 8 GB RAM, 500 GB HDD do tego około 8 godzin pracy na baterii, system to Win7, ale Ubuntu jakieś można pewnie postawić, szczególnie w wersji Wubi czy jak to to się zowie (taka, którą się instaluje z Windowsa)) by się na Linuksie pobawić Dartem. Zabawka to jakieś 3k, więc się da ;-)

Ale ktoś był miły i zrobił binarki dla Windowsa :-) [działają pod Win7, podobno pod XP nie], link pojawił się w dyskusji na General Dart Discussion w wątku Win32 Binaries].
Żeby było prościej tu linki do 2 najważniejszych plików:

http://www.kelleysoft.com/dart/dart.exe
http://www.kelleysoft.com/dart/libdart.dll

No i są problemy ;-) Uruchomienie mojego programu do testowania szybkości, tego od całkowania numerycznego trwa wieki, 1 iteracja w wersji skompilowanej do JavaScript'u i wykonywanej w Chrome to było około 2.8 ms, w przypadku użycia wirtualne maszyny Darta jest około 370 ms ;-)
Czyli wirtualna maszyna w wersji jaką mam jest 132 razy wolniejsza od skompilowanego Darta do JavaScript'u ;-)
Na 99% chodzi o brak optymalizacji, którą może i da się włączyć, ale nie znam magicznego przełącznika do tego.

Przy okazji odkryłem kilka ciekawostek w Dart'cie :-)
Po pierwsze Clock.now() nie zwraca czasu w milisekundach! Tzn. czasem zwraca ;-) ale tak naprawdę czas w sekundach to:
Clock.now()/Clock.frequency()
Po skompilowaniu do JavaScriptu Clock.frequency() zwraca 1000, co oznacza, że Clock.now() zwraca czas w milisekundach, w przypadku maszyny wirtualnej zwraca milion, czyli czas z Clock.now() to mikrosekundy :-) 
Po drugie, int w Darcie to odpowiednik Java'oweg BigDecimal :-) Nie ma ograniczeń innych niż rozmiar pamięci. Nie głupi pomysł.
Po trzecie, Dart daje możliwość używania "modułów" czy jak to nazwać ;-) Nie znam jeszcze wszystkich szczegółów, ale chcąc w 1 pliku Darta użyć rzeczy z innego wystarczy użyć na początku pliku dyrektywy #source("nazwaPliku") :-)

Szczerze już dawno żaden język mi się tak na dzień dobry nie spodobał. Stąd liczę, że jednak świat się do Darta przekona ;-)



Podobne postybeta
Całkujący Dart ;-)
Raspberry Pi to nie jest demon prędkości ;-)
Dart - się mnie podoba :-)
Koszmarek - Small Basic ;-)
Dart - to działa i ma sens :-)

3 komentarze:

  1. Z tym int, to nie do końca jest tak.

    Specyfikacja dopuszcza dowolne ograniczenia w implementacji. Tak więc może kiedyś powstanie tinyDart gdzie int będzie 0..255?

    OdpowiedzUsuń
  2. @Red - na czym opierasz swoje twierdzenie?
    Ja w specyfikacji znalazłem tylko:
    Integers are not restricted to a xed range. Dart integers are true integers, not
    32 bit or 64 bit or any other xed range representation. Their size is limited only
    by the memory available to the implementation.

    OdpowiedzUsuń
  3. Sorki, cofam wypowiedź ;)

    oko przeskoczyło nad zdaniem zbyt szybko i wyszło "limited only by implementation"....

    Swoją drogą ciekaw jestem jak przyjmie się ten język. Spodziewałem się że zainteresowanie będzie głównie w środowisku JS. Może faktycznie rośnie następca języków średnio wyższego poziomu takich jak Java?

    Tak swoją drogą, zależności potrzebne do kompilacji Dart, są porażające... C++ + Java + Python + Javascript :)

    OdpowiedzUsuń