DART on Googlen avoimen lähdekoodin ohjelmointikieli, joka toimii verkkosivuilla ja servereissä, ja jolla voi JavaScriptiä paremmin hoitaa suurten verkkosovellusten koodaamisen. DART kielen kehitys aloitettiin 9/2011 ja 1.0-versio kielestä julkistettiin loppuvuodesta -2013. Nyt jo on olemassa lähes valmiit työkalut Chrome selainta varten. Blogger-blogien pitäjiä varten saamme ehkä kiintoisia Gadgetteja sivupalkkeihin ja muuta toiminnallisuutta verkkosivuille.
TÄMÄ blogi sisältää pääosin omia pohdintojani ja muistiinpanoja, eikä se varmaankaan tuo kovinkaan paljon uutta DART-kielen opiskeluun. Materiaali on pääosin KOPIOITU :( Dartlang-sivustoilta, josta kannattaa KÄYDÄ TARKISTAMASSA kielen viimeiset syntaksit.

keskiviikko 29. helmikuuta 2012

Ongelmia ja onnistumisia DART editorin käytössä ja asentamisessa

Dart Editori 3177 oli minulla kansiossa Julkinen\Dart_ED_3177\Dart\ ja samaa tyyliä noudatin tähän asti.  Nyt kuitenkin Editori 4577 on kansiossa Julkinen\Dart\.  Kun uusia versioita editorista tuli 2-3 viikon välein, en ehtinyt kunnolla kaikkia edes kokeilla, kun jo oli uusi tarjolla.
     Tämä DART_4577 ei eilen saanut käynnistettyä Java Runtime Environment -ohjelmaa.  Olin ladannut sen Dart hakemiston sisään JRE-hakemistoon, kuten ohjeissa käskettiin.  Kun sitten latasin editorin ILMAN tuota jre-hakemistoa, niin sitten Editori toimi.  Julkinen kansiossa oli minulla parhaimmillaan 4 versiota editorista; nyt siirsin ylimääräiset ulkoiselle levylle.
Ja vihdoinkin Editori on siis kunnossa.

JRE oli siis minulla ilmeisesti jo käynnissä ja uusi asennus vain häiritsi sitä?

Aikaisemmin myöskään osa esimerkeistä ei toiminut;  Total, Slider...    mikähän niissä sitten oli?  Jossakin vaiheessa ainakin tuli viesti:   unable to create JavaScript...
Editorin käyttöön, esimerkkeihin ja omiin ohjelmiin ei kertakaikkiaan ole riittänyt aikaa, heikko verkko on häirinnyt, ja ehkä asennusohjeet / bugit (?)  aiheuttivat myös ongelmia.

Omat ohjelmani minulla on ollut kansiossa WorkOmat, se on Dart-hakemiston alla.  Ne ovat pieniä vaatimattomia kokeiluja ja annan niiden painua unhoon ulkoisella levyllä.

DART  TIEDOSTOJEN KOOT ERI KANSIOISSA:

  • configuration    63 tiedostoa    85 kansiota    4.01 Mt
  • dart-sdk          2712                  52                  8.92 Mt
  • features                4                     2                                23 Kt
  • libraries         1566                   28                       2 Mt
  • plugins             265                  23                  37.7 Mt
  • samples            154                  21                    1.3 Mt
  • workspace          24                  17                  4.28 Mt
  • .eclipseproduct     Tiedosto,   141 tavua
  • dart.exe                  Ohjelma                                          42 Kt    Näin pieni !!
  • darteditor.ini         Tiedosto    101  tavua


WorkOmat -kansio on aloitettaessa tyhjä.  Sinne on tarkoitus tallettaa omat ohjelmat.
Oletusarvoisesti DART-editori haluaa tallettaa uudet tiedostot omaan Windows-kansiooni, minkä siis yritän estää.  Jotain välillä sinne lipsahtaa..

Pääkansion, DART, koko yhteensä asennuksen jälkeen:
                    4791  tied               236 kansiota   55 Mt,     Koko levyllä:    71.9  Mt

DART-editori on kehittynyt hurjasti, uusia ominaisuuksia tullut ja enimmät bugit korjattu.  Paljon oppimista tässä ja SDK:ssa vielä on.  Esimerkit toimivat, paitsi TOTAL.  Tässä taulukkolaskenta ohjelmassa taitaa esteenä olla se, että LapTop koneessani ei ole numeronäppäimistöä erillisenä !!
Tyytyväinen siis nyt on olo :)
.

Aloite Dart keskustelujen parhaimmiston siirtämiseksi DART-Wikiin


    Tämän päivän keskusteluissa tuli esille tällainen asia. 
    Hieno juttu, katsotaanpas mitä siitä kehittyy.  

    Hi all,
    I've seen we have so much more interesting information here at the mail
    list, maybe we can store all this information on a more organized format.
    I've created a wiki at Wikia: http://dart.wikia.com where we can create
    articles, I'm writing a post at my blog now, after that I will create a few
    pages.     Greetinngs


    And writer of this post was:       A. Matías Quezada  
Thanks to him, great work; we will wait and see.

maanantai 27. helmikuuta 2012

Functions in DART LangSpec 0.07


And here is this Functions  part for me to analyze.  Easy to read in Mobile phone.

Functions

Functions abstract over executable actions.
functionSignature:
   returnType? identifier formalParameterList
   ;
returnType:
     void
   | type
    ;


functionBody:
     '=>' expression ';'
   | block
   ;
block:
     '{' statements '}'
   ;
Functions include  function declarations, methods, getters, setters and function literals.
All functions have a signature and a body. The signature describes the formal parameters of the function, and possibly its name and return type. The body is a block statement containing the statements executed by the function. A function body of the form  => e is equivalent to a body of the form {return e;}.

If the last statement of a function is not a return statement, the statement return null; is implicitly appended to the function body.
Because Dart is optionally typed, we cannot guarantee that a function that does not return a value will not be used in the context of an expression. Therefore, every function must return a value. See the discussion around the return statement.

Quite simple?  Yeah.  But maybe this is also worth of a little analyzing and remarks.
.

Variables in DART, DartLang spec 0.07.


This is from Dartlang spec 0.07 and i brought this gtext to my blog for to be able to analyze this when i am travelling and cant use my computer.  So; DART EasyToUse with Mobile.



Variables

Variables are storage locations in memory.
variableDeclaration:
     declaredIdentifier (',' identifier)*
   ;

initializedVariableDeclaration:
     declaredIdentifier ('=' expression)? (',' initializedIdentifier)*
   ;

initializedIdentifierList:
     initializedIdentifier (',' initializedIdentifier)*
   ;

initializedIdentifier:
     identifier ('=' expression)?
   ;
declaredIdentifier:
     finalVarOrType identifier
   ;
finalVarOrType:
     final type?
   | var
   | type
   ;
A variable that has not been initialized has the initial value null.
A final variable is a variable whose declaration includes the modifier final. A final variable can only be assigned once, when it is initialized, or a compile-time error occurs.

A static variable is a variable that is not associated with a particular instance, but rather with an entire library or class.
A variable that is marked both static and final must be initialized to a compile-time constant or a compile-time error occurs.

Why tie together two orthogonal concepts like static and final by requiring the use of constants? Because we do not want a language where one tends to define expensive initialization computations, causing long application startup times. This is especially crucial for Dart, which is designed for coding client applications.

One time initializations using constants should incur negligible cost at run time.
If a variable declaration does not explicitly specify a type, the type of the declared variable(s) is Dynamic, the unknown type.

A top-level variable is implicitly static. It is a compile-time error to preface a top level variable declaration with the built-in identifier static.  It is a compile-time error if a top level variable is initialized with an expression that is not a compile-time constant.

So this was it, directly from Dartlang spec 0.07.  

Notes come here soon:

Concurrency and Isolates in DART.

Tässä lyhyessä tekstinpätkässä on paljon asiaa.  Sen lisäksi siinä on useita termejä, joihin aloittelija helposti kompastuu.  Tämä on DartLang spec 0.07.


Concurrency

Dart code is always single threaded. There is no shared-state concurrency in Dart. Concurrency is supported via actor-like entities called isolates.

An isolate is a unit of concurrency. It has its own memory and its own thread of control. Isolates communicate by message passing. No mutable state is ever shared between isolates. Isolates are created by spawning.


So this was directly from dartlang spec 0.07

Kirjoitan tästä aiheesta tähän postaukseen vielä lisää.  Tarkempi analysointi vie hieman aikaa, nyt kerään materiaalia muista aiheista...

perjantai 24. helmikuuta 2012

EASY TO READ DART TIPS FOR MOBILE PHONE ?

How do I Find:  DART Coocies for beginners ?
Where can I Get:   Easy To Read DartLang examples for Mobile Phone ? 
Want to learn Dart, and soon I can very rarely use my computer.

Oh!  What a lucky guy I am!  Just heard that Google checks what people write about DartLang, and then Dart Team can do...   well, something.   This works like Santa Clause in Christmas, I quess.  If  I, in the evening write my wishes HERE, so in the morning i can find something nice in my Mobile Phone.

 With Google Reader i check these Dart project updates / issue updates, just to get picture of developement of the language. Like this:   http://code.google.com/p/dart/issues/detail?id=1845#c0
These are EasyToReadInMobilePhone (but WordWrap dont work)
And I read Dart discussion with GMail and many Dart blogs in Google Reader.
But http://api.dartlang.org/io.html  is not easy to read, because all material is in the "tree structure".

So, here are My Dart dreams:
I travel often is buss, and so do my friends who also make programming.
Could it be possible to get small examples of dart, functions, classes, lists, maps, statements, scripts and other parts of all these big libraries.  Such material, witch we can read with mobile, when travelling.  Sutch material, witch I can recommend to my friends when I want them just to look at Dart.  Could it be possible to mark somehow all these "Small dart Coocies", "Small Dart tips" so, that reader can find them...  And for me to watch them 10:s of times until I have learnt them.

Maybe there somewhere is this kind of material, but I have not found it yet.  Or maybe there is some tricks how I can do this...    Google+ is EasyToReadInMobile an maybe someone there already have collected this material.  And GMail is suitable for reading, I can directly go to the next mail.
And Google Reader is fast.  BUT I can not order these big IO,  HTML libraries to G-Reader.

DartLang is easy, and logical.  This kind of library would be valuable for beginners during the next years to come.  Yes, Dart Coocies Library...  My quick Dart library in mobile phone. 
                       Hmmm.   Is this Christmas :)
And then ofcourse;  DartLang Tweets, small examples in 140 mark  :)


Ja tämä on DART viikoittainen uutiskirje


Julkaistu 17.2.2012.  http://news.dartlang.org/2012/02/dart-teams-weekly-digest_17.html  
Tämän uutiskirjeen voi tilata omaan sähköpostiinsa.

Dart Team's Weekly Digest,  kirjoittanut Dart News, Posted by Anders Sandholm

Quick update on what happened in Dart-land this week.

Dartium binary available. See hang-out video, blog posts and the new Dartium page for more info. On dartlang.org, we also added a Resources page and Seth had the first blog post on classes in Dart.
Adjacent string literals will be concatenated: ‘dog’ ‘house’ == ‘doghouse’. String + operator is on its way out. Moreover, Promise is removed, use Future. Finally, toString on collections will soon return their contents and deal with recursive refs intelligently.

The VM now recognizes dart:json, dart:uri and dart:utf8.

In the Dart to JavaScript Compiler, the SSA-based backend is now capable of dealing with many parts of corelib and we took the first steps towards wrapperless HTML and DOM libraries in the optimizing backend. Moreover, we fixed compiled JavaScript to run on browsers without Function.prototype.bind (Safari).
The Dart Editor continuous build bundles SDK and Dartium (except on Windows - no Dartium yet). The editor now launches Dartium by default, only compiles to JS if necessary on launch. It also had a few performance improvements and fixes and the new Welcome Page provides quick & easy access to sample

Tässäpä tämä, paljon siis tapahtuu viikoittain...

Miettimässä DART listoja, rakenne, kielioppi, käyttö

Tämä teksti on peräisin osoitteesta:  http://www.dartlang.org/docs/spec/index.html
Ja on siis   DART lang spec.0.07
Kopioin sen blogiini, jotta voin paremmin miettiä, muokata ja tarkastella sitä.
Kirjaan tähän ehkä omia huomioitani vähitelle.  Jostakin on siis aloitettava, ja listat ovat asia, joka minua on todella suuresti kiinnostanut.
X

Lists

A list literal denotes a list, which is an integer indexed collection of objects.

listLiteral:
     
const? typeArguments? '[' (expressionList ','?)? ']'
   ;
A list may contain zero or more objects. The number of elements in a list is its size. A list has an associated set of indices.  An empty list has an empty set of indices. A non-empty list has the index set {0 … n -1} where n is the size of the list. It is a runtime error to attempt to access a list using an index that is not a member of its set of indices.
If a list literal begins with the reserved word const, it is a constant list literal and it is computed at compile-time. Otherwise, it is a runtime list literal and it is evaluated at runtime.
It is a compile time error if an element of a constant list literal is not a compile-time constant. It is a compile time error if the type argument of a constant list literal includes a type variable.
The binding of a type variable is not known at compile-time, so we cannot use type variables inside compile-time constants.
The value of a constant list literal  const <E>[e1... en] is an object a that implements the built-in interface List<E>The ith element of a is vi+1, where vi is the value of the compile time expressionei.  The value of a constant list literal  const [e1... en] is defined as the value of a constant list literal const <Dynamic>[e1... en]. It is a run-time error to attempt to modify a constant list literal. 
Let list1 = const <V>[e11... e1nand list2 = const <U>[e21... e2nbe two constant list literals and let the  elements of list1 and list2  evaluate to  o11... o1n and o21... o2n respectively. Iff o1i ===o2i for 1 <= i <= n and V = U then list1 === list2.
In other words, constant list literals are canonicalized.
A runtime list literal <E>[e1... en]  is evaluated as follows:
  1. First, the expressions e1... en are evaluated in left to right order, yielding objects o1... on.
  2. A fresh instance a that implements the built-in interface List<E> is allocated.
  3. The ith element of a is set to oi+10 <= i <= n.
  4. The result of the evaluation is a.
Note that this specification does not specify an order in which the elements are set. This allows for parallel assignments into the list if an implementation so desires.  The order can only be observed in checked mode: if element i is not a subtype of the element type of the list, a dynamic type error will occur when a[i] is assigned oi-1.
A runtime list literal  [e1... en] is evaluated as  <Dynamic>[e1... en].

There is no restriction precluding nesting of list literals. It follows from the rules above that
<List<int>>[[1, 2, 3], [4, 5, 6]] is a list with type parameter List<int>, containing two lists with type parameter Dynamic.
The static type of a list literal of the form  const <E>[e1... en]  or the form <E>[e1... en] is List<E>. The static type a list literal of the form  const [e1... en]  or the form [e1... en] is List<Dynamic>.
It is tempting to assume that the type of the list literal would be computed based on the types of its elements. However, for mutable lists this may be unwarranted. Even for constant lists, we found this behavior to be problematic. Since compile-time is often actually runtime, the runtime system must be able to perform a complex least upper bound computation to determine a reasonably precise type. It is better to leave this task to a tool in the IDE. It is also much more uniform (and therefore predictable and understandable) to insist that whenever types are unspecified they are assumed to be the unknown type Dynamic.

So this was it, Dartlang spec 0.07. it is subject to changes, so watch the original page.



DART kielen kehittyminen ja oma oppimiseni jatkuu

And I am using here two languages, finnish and english...  what a shame :(
Huomasin juuri, että Dart 0.07 Spec on peräisin yli kuukauden takaa:
The current version (0.07) was released January 20, 2012.
Luulisi, että aika monet asiat ovat siinä jo muuttuneet... vai?  

Nyt kuitenkin aloittelen seuraavaa oppimis/tutustumis/lukemis jaksoani.  Oma taitoni kehittyy samaan aikaan, kuin Dart-kieli valmistuu.  Ei välttämättä kuitenkaan samaan tahtiin:    

Tähän siis merkitään eräitä opillisia ja tapahtuma-päiviä merkkipaaluksi tälle polulle. 
Ja näitä kertyykin tiheään tahtiin.   17.3.2012  Pääsin tämän jakson loppuun.
Materiaalia alkaa tulla niin monelta taholta, että on jo runsauden pula.
Artikkeleita tulee monelta kirjoittajalta, hienoja diasarjoja yms.
Tärkeintä on kuitenkin omat muistiinpanoni EverNote-ohjelmassa.  

60 %  Editori 5549 toi uuden tiedostojen käsittelyn, asennus ja testaukset. 17.3.
           Toimii hyvin, esimerkin avautuvat ja kääntyvät JavaScriptiksi.
           Hienoa, että pääsee Dart-tiedostoja selaamaan näin kätevästi.  
59 %  Viikoittaisen uutiskirjeen, keskustelujen ja bugiluettelojen läpikäynti  15
58 %  http://www.dartlang.org/articles/    Uusia artikkeleita                       16.3.
56 %  Dart Editori 5104 Ja viikoittainen uutiskirje                         9.3.2012
55 %  Keskustelujen seuraamista ja Issues / Updates

54 % DartEditorin 4577 Asennus ja malliohjelmien testaukset. Total ei toimi.

53 %  Huono artikkeli mutta hienot kommentit ohjelmoijilta.  Hyvin valaisevaa.
http://www.webmonkey.com/2012/02/googles-new-dart-language-to-get-a-starring-role-in-chrome/

52 %  Keskusteluissa pysyn jo ajan tasalla, ryhdyn tähdittämään aiheita   29.2.2012
      Alku hyvään keskusteluun:  About #library, #source, #import and the Dart editor
      Change:      Static variable initialization opened up to any expression

Dart Team Weekly Digest sisälsi varsin mielenkiintoisia artikkeleita, ja paljon! 
 http://news.dartlang.org/2012/02/dart-teams-weekly-digest_24.html
51 %  Tässäpä riitti opiskeltavaa                                                   24.2.2012  
.

keskiviikko 15. helmikuuta 2012

DART uutisia, linkkejä, työkaluja ja ohjelmointi-projekteja

Dart projekti etenee ja tuottaa nyt kiintoisaa materiaalia monella taholla. Dart produces very interesting material now in many places.
Dart Team wekly newsletter http://news.dartlang.org/2012/02/dart-teams-weekly-digest.html

Building Web Apps? Check out our Field Guide
http://www.html5rocks.com/webappfieldguide/toc/index/
This comprehensive guide provides an introduction to many of the skills and best practices you need to build modern web apps. This field guide is designed to help you create great user experiences in your web apps.

10 Dart projects from the community We put out a call to learn what the community is building, and we heard some really interesting projects. Dart is being used for UI frameworks, games, cryptography, 3D, MVC frameworks, and more!
http://news.dartlang.org/2012/02/10-dart-projects-from-community.html 

Ja muistakaa myös;
http://ajlopez.wordpress.com/2012/02/14/tdd-links-news-and-resources-2/
AjLopez kerää uskomattoman määrän erilaisia ohjelmointiin liittyviä linkkejä.

 Minä seuraan edelleen tiiviisti DART-kielen syntyprosessia. Jopa niin tiiviisti, että se häiritsee varsinaista kielen opiskelua. MUTTA tämä on ainutkertainen tilaisuus. Uusia ohjelmointikieliä tekniikan huipulle syntyy vain harvoin. Siksi opiskelu on tämän tutkimuksen rinnalla toisarvoinen. Siinä ei pieni viivästyminen haittaa.
Kaipaisin materiaalia, jonka voi helposti lukea mobiili-laitteella, siis puhelimessa. Kielellisiä rakenteita, luokkia, funktioita jotka voi esittää parilla ruudulla. Minun olisi syytä tehdä tästä aloite keskusteluun; se olisi minun 2-pence, minun panokseni. Olisi helppo jakaa kavereille vinkkejä ja itsekin opiskella bussilla matkustellessa.
Opiskeluni siis junnaa 50% vaiheessa, mutta projeksi silti etenee. Tää on kivaa!

maanantai 6. helmikuuta 2012

Testing Dartboard in web site, Temporary posting

main() { print('Hello, Dart!'); }

Kuinka Dartboard sovellusta käytetään suoraan omalta verkkosivulta


    Keskustelu ryhmässä oli tarjolla tällainen koodi; katsotaanpas...
    <html>
    <head>
    <title>Example Dartboard</title>
    </head>
    <body>
    <code class="codes">
    main() {
    print('Hello, Dart!');
    }
    </code>
    <script type="text/javascript" src="http://try.dartlang.org/
    dartboard.dart.app.js"> </script>

    </body>
    </html>

torstai 2. helmikuuta 2012

Fresh Docs From Google Dart, Fine Stuff!


    This is all from:    Bob Nystrom      post to GoogleDart Group Discussion   Feb 01 05:32PM -0800

    " Happy Wednesday, Dartisans!

    We've just pushed a new batch of documentation to api.dartlang.org. It
    includes a slew of fun new things:

    1. We now show subclasses, subinterfaces, and implementing classes for each
    type. You can now see the full graph of types and click around to see how
    things are related to each other.

    2. Docs for the server libraries! One of the most frequent questions we get
    is "what can I do on the standalone VM?" The libraries that answer that are
    still being fleshed out, but we've got nice documentation up now for what's
    there. No more hunting through old samples to try to guess at things. It's
    all right here: http://api.dartlang.org/io.html.

    3. Last, but not least, we have documentation for our DOM and HTML
    libraries. The DOM is a *huge* API and documenting it is a monumental
    undertaking. Fortunately, the Mozilla folks and an army of honorable
    volunteers have tackled that at https://developer.mozilla.org/en/DOM.

    Even better, they've graciously done so under a Creative Commons license (
    https://developer.mozilla.org/Project:Copyrights). This lets us include
    that documentation on api.dartlang.org, which you'll see now if you look at
    the dart:dom and dart:html docs (for example:
    http://api.dartlang.org/html/UListElement.html).

    I can't tell you how much we appreciate being able to share this
    documentation and how cool it is of Mozilla and the contributors to allow
    this.

    Cheers,   - bob   "