Dart – DECODE https://decode.red/blog data decode, decoder or decoded ... design of code Mon, 15 Dec 2025 06:15:00 +0000 ja hourly 1 https://wordpress.org/?v=4.7.29 Dart Programming Language ../../../202104181278/ Sun, 18 Apr 2021 06:28:35 +0000 ../../../?p=1278 DartはもともとGoogleによって作られたJavascritにかわるWebスクリプト言語ですが、現在はクロスプラットホームの開発言語としてより幅広く使われています。
今回は、しばらくiOS,Androidの開発から遠ざかっていたので、Dart事はじめの意味とデータ処理にかかせないコレクションのコードをテストしました。(Flutterとか行く前に..)
プログラミングとは、シンプルに言えばデータを処理することにつきますが、最近のモダンな言語では「文」でなく「式」で処理する傾向にあると思います。Haskellなどの関数型言語はまさにこういう考え方で作られていますが、MicrosoftのLINQなど言語を拡張した形で使われるものもあります。(下記で以前にテスト)

http://crossframe.iiv.jp/category/linq/

DartはWebの世界をネイティブアプリのようにすべくJavaScriptを大活用したGoogleの思想の延長にある分、あらゆるものが盛り込まれている印象を持ちます。Webプログラミング特有の考え方に非同期というのもがありますが、処理の順序が記述順序にならないことがあります。JavascriptのjQueryをよく使っていたころにそれを痛感しました。いわゆるコールバック地獄というもので、これを解消するたメソッドチェーンなどの手法が使われました。これは「式」の考え方に通じるものと思います。
データの記述や処理を「文」で書きたくない私にとって、Dartのカスケード記述はとても好みです。
ということで、インストールからコンパイルまで試してみました。

https://dart.dev/get-dart

このサイトに従ってUbuntu 16.04にインストールしました。

sudo apt-get install apt-transport-https
sudo sh -c ‘wget -qO- https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -‘
sudo sh -c ‘wget -qO- https://storage.googleapis.com/download.dartlang.org/linux/debian/dart_stable.list > /etc/apt/sources.list.d/dart_stable.list’
sudo apt-get update
sudo apt-get install dart
echo ‘export PATH=”$PATH:/usr/lib/dart/bin”‘ >> ~/.profile

test.dart

void main(){
        var week = ['S', 'Mon', 'Tue', 'Wed']
                ..add('Tue')
                ..add('Fri')
                ..[4] = 'Thu'
                ..removeWhere((item) => item.length == 1);

        week.insert(0, 'Sun');
        week.add('Sat');
        print(week);
        var s = week.where((w) => w.startsWith('S')).toList();
        print(s);
}

あまり意味のないことをやっていますが、リスト操作のテストです。

実行方法

dart test.dart

実行結果

[Sun, Mon, Tue, Wed, Thu, Fri, Sat]
[Sun, Sat]

起動が遅いのでコンパイルしてみました。
コンパイル方法

dart compile exe -o test test.dart

サイズは、5888536 byte です。

ひとまずLinuxのレガシーなやり方でできることにほっとしました。(古い人間ですね)
個人的には一つの言語ですべてやるというのでなく、目的にあったプログラミング言語・ライブラリを使い分ければいいという考え方ですが、最近はIDEなどの環境を含めての評価になるので、複数の環境を切り替えるよりは一つの環境で、という流れになってくるとこのDartは有力な言語になってきます。

下記SwiftのPlaygroundについてのテストですが、新しい言語ゆえ、バージョンアップにより文法が変わってしまうので、それに適応していくのに手間がかかった記憶があります。

Swift / Xcode playground

Dartもまだいろいろとありそうです。
https://medium.com/dartlang/announcing-dart-2-3-optimized-for-building-user-interfaces-e84919ca1dff

今回のテストで使ったのは

Dart SDK version: 2.12.4 (stable) (Unknown timestamp) on “linux_x64”

です。

まずは第一歩でした。

]]>