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.
Näytetään tekstit, joissa on tunniste DartKieli. Näytä kaikki tekstit
Näytetään tekstit, joissa on tunniste DartKieli. Näytä kaikki tekstit

perjantai 15. maaliskuuta 2013

About Dart functions and Closures, Dart funktiot ja sulkemiset

Understanding Closures.. hard..  and Functions. (spec: Functions abstract over executable actions)

This conversation is from:
https://groups.google.com/a/dartlang.org/forum/?fromgroups=#!topic/misc/NOuoGrxW2nE

https://groups.google.com/a/dartlang.org/d/msg/misc/NOuoGrxW2nE/DHTVT-_qq40J
Direct link to just this piece of conversation..  Great!!

Alex Tatumizer   Mar 14 (16 hours ago)

@Ladislav:
Somehow, I overlooked the fact that whatever is called Function in dart in fact doesn't correspond to javascript notion of Function - it's really a closure, e.g.
  Function f="abcd".substring;
  print(f(0,2));

This is a great feature, so I withdraw my sarcasm. I thought dart makes distinction between Function (as pointer to function "codes") and Closure, but it probably doesn't.
Won't it be better to call it Closure, not Function then, to avoid confusion?



Ladislav Thon asvered:  

Function is just something that can be called. Even this, I believe:

class Answer {
  call() => 42;
}

main() {
  var a = new Answer();
  print(a());
  print(a is Function);
}

Some Functions are in fact closures, meaning that they carry their lexical environment, but not all of them. I'm not sure about renaming Function to Closure, I think it would make some situations more clear and some less.

Tatumizer ansvered:

Probably you are right, but then things get a bit confusing indeed for anyone coming from javascript (huge army of potential dart users).
Look at "Tour of the dart language" - they are talking about functions AND closures, without elaborating on subtleties - but this are very important subtleties, deserved to be featured much more prominently.
 Needs to be better documented maybe?  

Check link for more conversation...



And next theme:         Orthogonal  Wikipedia:  

Computer science

Orthogonality in programming language design is the ability to use various language features in arbitrary combinations with consistent results.[9] This usage was introduced by von Wijngaarten in the design of Algol 68:


The number of independent primitive concepts has been minimized in order that the language be easy to describe, to learn, and to implement. On the other hand, these concepts have been applied “orthogonally” in order to maximize the expressive power of the language while trying to avoid deleterious superfluities.[10]

Orthogonality is a system design property which guarantees that modifying the technical effect produced by a component of a system neither creates nor propagates side effects to other components of the system. Typically this is achieved through the separation of concerns and encapsulation, and it is essential for feasible and compact designs of complex systems. The emergent behavior of a system consisting of components should be controlled strictly by formal definitions of its logic and not by side effects resulting from poor integration, i.e. nonorthogonal design of modules and interfaces. Orthogonality reduces testing and development time because it is easier to verify designs that neither cause side effects nor depend on them.

An instruction set is said to be orthogonal if it lacks redundancy (i.e. there is only a single instruction that can be used to accomplish a given task)[11] and is designed such that instructions can use any register in any addressing mode. This terminology results from considering an instruction as a vector whose components are the instruction fields. One field identifies the registers to be operated upon, and another specifies the addressing mode. An orthogonal instruction setuniquely encodes all combinations of registers and addressing modes.[citatio

torstai 29. marraskuuta 2012

Dart suomeksi. Dart:in suomentaminen. DartLang Tour suomeksi.


DartLang Tour käännettynä suomeksi.

Chapter 2. A Tour of the Dart Language:    Suomeksi, suomennettuna..      


Olen kääntämässä (vastoin parempaa tietoani) DartLang Tour-tiedostoa suomeksi. 
Alkuperäinen engl. tiedosto on tässä:  


Keskeneräinen käännöstyöni, joka alkaa olla valmis, löytyy tästä linkistä: 



Ohjelmoijat eivät tarvitse käännöstä suomeksi.  Ne, jotka aikovat ohjelmoijiksi, kyllä opettelevat englantia. Tämä on siis vain satunnaisia ohikulkijoita varten. Ja heille, jotka ovat vasta alkamassa opiskelua.


Programmers don’t need translation from english, they can read, and think on it.
Those who want to be programmers should quickly learn english and use it.
So this is for casual bywalkers..


keskiviikko 20. kesäkuuta 2012

Kuinka seuraan Googlen uuden, verkossa toimivan DART-ohjelmointikielen syntyä ja kehitystä.

Uuden ohjelmointikielen synty on harvinainen tapahtuma.  Vielä harvinaisempaa on, että osuu paikalle kielen syntyhetkellä, ja saa tilaisuuden seurata kielen kehittymistä alusta alkaen.

Sattumalta ajoitin paluuni ohjelmoinnin pariin juuri DART-kielen ensimmäisen julkistamisen hetkelle,  syksyllä 2011.  Päätin oitis, että seuraan tiiviisti sen kehitysprosessin kaikkia vaiheita, jotta näen, että kuinka tämä homma oikein tehdään, miten eri työkalut kehittyvät ja muutenkin vahvistan omaa osaamistani ohjelmoinnin alueella. 
     Urakka taitaa olla suurempi, kuin ensin ajattelin, ja se häiritsee ehkä varsinaista DART-kielen opiskeluani.  Tähän liittyvien sivujen lukeminen ei ole välttämätöntä varsinaiselle DART-kielen opiskelulle.

Mutta jos olet Ihan Oikea Nörtti, niin tässä aiheeseen liittyvät linkit:

Näistä voi tilata RSS syötteet, jos TODELLA haluaa seurata aihetta  :)
Bugilistat / Issues.    http://code.google.com/p/dart/issues/list
Bugit, joita haluaa seurata, voi tähdittää, jolloin muutoksista voi ilmoittaa.

Committed Changes
http://code.google.com/p/dart/source/list


General Dart Discussion  DART keskustelu kielen syntaksista, ongelmista ja käytöstä: 
https://groups.google.com/a/dartlang.org/group/misc/topics

Tähän ryhmään kannattaa liittyä, jolloin saa keskustelut sähköpostiin n. 25 ryhmissä.
Kiintoisat keskustelunaiheet voi tähdittää.  Ryhmää voi lukea liittymättä siihen.



Tavalliselle kielen opiskelijalla sopii paremmin:

DartLang    http://www.dartlang.org/
ja uutiset:   http://news.dartlang.org/

Aloittelijalle sopivin sivu opiskeltavaksi on luultavasti:
http://www.dartlang.org/docs/language-tour/

Ja Blogi http://c.dart-examples.com/home   on hyvin havainnollinen, ja sen kautta on myös mahdollisuus suorittaa kielen koodi klikkaamalla TRY-Dartlang-sivustolla.
http://try.dartlang.org/
= Käynnistyskuvake Try-Dartlang-sivuston vasemmassa yläkulmassa.

Oma artikkelini aiheesta tässä blogissa...
http://etdart.blogspot.fi/2012/06/kuinka-opiskelen-googlen-uutta-verkossa.html

Päivitän tätä artikkelia vielä tarpeen mukaan. 
.

keskiviikko 9. toukokuuta 2012

Koska "Interface" :a käytetään DART-kielessä.

Eräissä ohjelmointikielissä OLIOT/LUOKAT sisälsivät Interface- ja Implementation -osat.
DARTissa Interface on erikseen luokkien, Class, ulkopuolella.
Tämä on hieman erilainen ja rakenteellisesti parempi järjestely.  Tavallaan kaksitasoinen rakenne...  Siihen liittyy myös "Single Ingeritance", ... "Yksikohteinen periytyvyys", tai mikä nyt sitten olisi sille paras suomennos.
Stack-Oferflowssa on hyvä englanninkielinen keskustelu aiheesta.  Ja siihen tuli hienoja vastauksia;

http://stackoverflow.com/questions/10502649/when-to-use-interfaces-in-dart
Pitääpä perehtyä tähän, sitten kun on aikaa.



DART-kielen kääntäminen suomeksi?!   Keskusteluissa tuli esiin myös kielen kääntäminen muihin kieliin; Googlellahan on tästä kokemusta, ja osan siitä voisi automatisoida...     MUTTA ilmeisesti tämä on käytännössä mahdotonta, koska DART-kieleen sisältyy niin paljon materiaalia; syntaksien lisäksi myös valtava määrä ohjeita ja avustavia sivuja.

ERI KIELTEN SANOJEN MERKITYS aiheuttaisi myös ongelmia, joten tämä tuskin tulee toteutumaan, ainakaan laajassa mitassa.
MUTTA minulla itselläni alkaisi olla tarve ainakin tiettyjä DART-kielen alueita kääntää suomen kielelle. Myös senkin takia, että se auttaisi minua ymmärtämään nämä asiat paremmin.
MINUN ON MAHDOTONTA SELITTÄÄ ASIAA, JOS EN OLE ITSEKÄÄN SITÄ TÄYSIN SISÄISTÄNYT.  Jos minulla suinkin olisi aikaa, niin yrittäisin kirjoittaa muutamia lyhyitä käännöksiä.

Suomalaista opiskelijaa sanasto;  Dart-Suomi, auttaisi kielen omaksumisessa.

lauantai 5. toukokuuta 2012

SQL tietokantojen käyttö DART ohjelmointi kielessä

Koska on mahdollista käyttää SQL tietokantoja DART ohjelmoinnissa?
Jokaisen ohjelmointikielen ei tarvitse ohjelmoida KAIKKEA.  Lienee luontevaa, että käytetään ulkoisia palikoita, esim. SQL-tietokantoja, HTML-kielen lomakkeita yms.  Tällöin käyttäjien ei tarvitse opetella uutta syntaxia.  DART-kielessä, joka on vasta syntymässä, nämä rakenteet eivät tietenkään vielä nyt, toukokuun alussa 2012, ole valmiina.

https://groups.google.com/a/dartlang.org/group/misc/browse_thread/thread/8dbfee57129de3ac/3c456d5f3b93141e?lnk=raot
"When will be possible for using sql databases from Dart. Is there any 
work (or plan) related to this subject in dart team. " 




https://bitbucket.org/vadimtsushko/mongo-dart    Mongolib.  
" I just wanted to hack together something just to see if I 
could even log into a mysql server from dart.  "

http://api.dartlang.org/html/SQLTransaction.html   And here they are, some API:s...  

MySQL Connector for Dart   


And who have done some nice blog text in this subject....   lets look it next....  
Some programmes surely have written somethin about this...
 For me this so important a question, that I must put this to my blog right away.  

To be continued.... 

perjantai 20. huhtikuuta 2012

Pohtimassa <> merkkien käyttöä, T, E , DART:issa

Lisäksi DART kielessä on näitä <T>   <E>  ilmaisuja.  Muiden sulkumerkkien jälkeen ne pysähdyttävät hieman miettimään...    Miksi juuri  T   ja  E  ?
(K,V)  Tarkoittaa siis Key ja Value,  sehän on selvää.
Kokoan leikkeitä ohjeista:

http://www.dartlang.org/language-tour/#generics

Generics

If you look at the API documentation for the basic array type, List, you'll see that the type is actuallyList<E>. The <...> notation marks List as a generic (or parameterized) type—a type that can declare formal type parameters.
For example, if you intend for a list to contain only strings, you can declare it as List<String> (read that as "List of String"). 
....
Generic types can save you the trouble of creating all these interfaces. Instead, you can create a single interface that takes a type parameter:
interface Cache<T> {
  T getByKey(String key);
  setByKey(String key, T value);
}
In this code, T is the stand-in type. It's a placeholder that you can think of as a type that a developer will define later.

Using collection literals

Both built-in collection types are parameterized: lists and maps. Parameterized literals are just like the literals you've already seen, except that you add <type> before the opening bracket. For example:
List<String> names = <String>['Seth', 'Kathy', 'Lars'];
Map<String, String> pages = <String>{ // specify value type: String
    'index.html':'Homepage',  // (the key type is implicitly String)
    'robots.txt':'Hints for web robots',
    'humans.txt':'We are people, not machines' };


NO?  Näyttää siltä siis, että <> merkinnän sisällä on "tyyppi"...
..
To specify one or more types when using a constructor, put the types in angle brackets (<...>
..

Generic collections and the types they contain

Dart generic types are reified, which is a fancy way of saying that they carry their type information around at runtime. 
= = = = = = = = = = = = = = = = = = = = = = = = = 



SIIS:  E   T   K   V 
What is this T  in <T>  ?

Interface Future<T>

A Future is used to obtain a value sometime in the future. Receivers of a Future obtain the value by passing a callback to then. 

========================================================

What is this   E   in <E>  ?  

===========================================

Typedefs can be parameterized.
typedef int Compare<T>(T a, T b);

class SortedCollection<T> {
  Compare<T> compare;
  SortedCollection(this.compare);
}

main() {
  SortedCollection<int> s = new SortedCollection<int>((a,b) => a - b);
  print(s.compare is Compare<int>);  // true
  print(s.compare('a','b'));  // checked mode throws exception
}
dartlang  0.08

typeParameter:
identifier (extends type)?
;
typeParameters:
`<' typeParameter (`,' typeParameter)* `>'
;
A type parameter T may be suffixed with an extends clause that specifies
the upper bound for T.

A type parameter T may be suffixed with an extends clause that specifies
the upper bound for T.   ....

Tässäpä hieman sulattelemista...    Täydennän tekstiä vielä...  


http://c.dart-examples.com/learn/variables/collections
Tämä kirjoitus tuo hieman lisävalaistusta asiaan...

.

tiistai 27. maaliskuuta 2012

Overloading, mitä se tarkoittaa, DART ym. kielet

Like most dynamically-typed languages, Dart doesn't support overloading....

http://japhr.blogspot.com/2012/02/overloading-dart-operators-for-great.html
Overloading Dart Operators for Great Evil

http://en.wikipedia.org/wiki/Overloading

Constructor and function/method overloading, in computer science, a type of polymorphism where different functions with the same name are invoked based on the data types of the parameters passed
Operator overloading, a form of functional or method overloading where the action being overloaded is an operator, such as + or -

http://www.parashift.com/c++-faq-lite/operator-overloading.html

It allows you to provide an intuitive interface to users of your class, plus makes it possible for templates to work equally well with classes and built-in/intrinsic types.
Operator overloading allows C/C++ operators to have user-defined meanings on user-defined types (classes). Overloaded operators are syntactic sugar for function calls...



Ja tähän Dart-kielestä esimerkkejä...



Oct 30, 2011 ... I'm progamming complex object and I am a little dissapointed with some aspect like it haven't got Methods Overloading. I think here could be ...
https://groups.google.com/a/dartlang.org/.../c282bd61297ef727
LabeledDiscussions
Feb 12, 2012 ... Subject: Constructor overloading ... Why Dart doesn't allow to overloadconstructors. I have to define ... Subject: Re: Constructor overloading ...
https://groups.google.com/a/dartlang.org/.../2d74393610ed7fef
LabeledDiscussions
Feb 13, 2012 ... I have seen this in other languages as an overloading of the "Convert" operator. Is this possible in Dart? For example: class Material{ ... } ...
https://groups.google.com/a/dartlang.org/.../822fee56f2077512
LabeledDiscussions

http://www.dartlang.org/articles/idiomatic-dart/ 

Named constructors

Like most dynamically-typed languages, Dart doesn't support overloading. With methods, this isn't much of a limitation because you can always use a different name, but constructors aren't so lucky. To alleviate that, Dart lets you define named constructors:
class Point {
  num x, y;
  Point(this.x, this.y);
  Point.zero() : x = 0, y = 0;
  Point.polar(num theta, num radius) {
    x = Math.cos(theta) * radius;
    y = Math.sin(theta) * radius;
  }
}
Here our Point class has three constructors, a normal one and two named ones. You can use them like so:
var a = new Point(1, 2);
var b = new Point.zero();
var c = new Point.polar(Math.PI, 4.0);
Note that we're still using new here when we invoke the named constructor. It isn't just a static method.
.