Javaのvarを使った変数型推論宣言

JDK10から使えるようになったvarによる型推論変数宣言(言い方がこれで良いのかどうか分からない)だけど、JDK10からなそうのか試していないが、JDK12ではチョット厭らしい事が出来てしまうようだ。
本来なら、以下のような構文はエラーとして欲しいと思うんだけど・・・

int num = Integer.parseInt(args[0]);
var x = num == 0 ? 1 : “Hello”; // 結果が整数又は文字列

xの型が、実行時まで決まらないというのは如何な物だろうか?バグの温床となりそうな気がするのだが・・・
(JavascriptのvarやVBのdimのみ(variant型)と同じイメージだよね?)

なお、C#では同様の構文はコンパイルエラーとなる。同じ事をやりたければ、dynamicを使用する必要がある。

カテゴリー: java, 技術系 | コメントする

Swift

Apple嫌いだから、無視してたんだけど、まぁ、どんな言語か位は見てみようかと・・・

とりあえず、Windows on Linux(Ubuntu)で動かしてみたが、REPLが動いてくれない。

仕方ないので、普通にソースを喰わせて実行してみた。

以下、感想等。

  1. Swifにはクラスは存在する。継承も可能。
  2. 恐ろしいことに、配列は値型!参照(ポインタ)では無い。
  3. 変数,定数は基本、nil(null)の代入が禁止されている。
  4. nil許容型はunboxingしないとコンパイルエラーになる。面倒。
  5. 引数は基本名前付きで呼び出し。面倒。

iXXX用のアプリ作る気ないし、まぁ、ほぼ使うことは無いだろう。

swiftサンプル

swiftサンプル

 

カテゴリー: その他言語, 技術系 | コメントする

Go言語

Go言語をチョット触ってみた。

本当にC言語を作った人が設計したの?
以下、触ってみた感想(?)

  1. 変数宣言は型が変数名の後に来る(あまり好きじゃ無い)
  2. 関数はfuncで定義
  3. 最近の言語には珍しく、ポインタがある。でも、メンバーには”->”じゃなくて”.”でアクセス
  4. クラスは無い。(structでクラスっぽいものは作れるが、継承は言語仕様的には存在しない)
  5. 関数は複数の値を返すことができる
  6. スレッドが簡単に作成可能
  7. 構造的な例外処理が無い

わざわざ、この言語を使おうとは思わないな。

これしか使えないと言うなら別だけど・・・

Go言語サンプル

Go言語サンプル

カテゴリー: その他言語, 技術系 | コメントする

↓と思ったら・・・

もうJava11が出てるじゃぁないか。

言語面では大きな機能追加は無いようだね。

削除される標準ランタイムが結構あるようだけど・・・

カテゴリー: java, 技術系 | コメントする

java10

知らないうちに、Java10がリリースされていた。

新機能はまだ詳しくは調べていないのだが、C#とかと同じく、変数宣言にvarが使用できるようになったようだ。

var p = new Person();

のような感じで、右辺の型が推測可能なものに使用できる。上記の場合は、変数pはPerson型となる。C#ではおなじみの文法だ。

C#ではLINQ等を使用するときによく使うので、Javaで同じような機能を持つ、Streamで使用できるかどうか試してみた。

var q = personel.filter(p->p.getAge() > 20);

C#ならば、この後で、変数qに対してforeach文を使用することができるのだが、javaの場合は上記のqに対してforEachメソッドを使用することになる。

q.forEach(・・・);

個人的には、foreach(拡張for)も使用できるといいような気がするんだけどね。

このように、Streamを途中の状態で変数に格納することによって何ができるかと考えたんだけど、条件によって、複数の抽出条件を付加するとかはできそうだね。

var q = personel.filter(・・・); // 抽出条件1
if (・・・)  { // ある条件ではさらに絞込
q = q.filter(・・・); // 抽出条件2
}

C#だと、上みたいな形も取れるし、Expressionを使用して式を動的に作ってもいいんだけど。

カテゴリー: java, 技術系 | コメントする

Windows10 Fall Creators Update

Windows10 Fall Creators Updateで、Windows Subsystem for Linuxが正式にサポートされて、Microsoft StoreからUbuntuやopenSUSEがインストールできるようになったので、ちょっとお試し。

UbuntuとopenSUSEにmonoをインストールして、WindowsにはフリーのX Server “Xming”をインストールの後、同じソースをWindows,Ubuntu,openSUSEで動作させてみた。

↓同じソースをWindows,Ubutu,openSUSEでコンパイルして、実行してみた結果。

ちなみに、Ubuntuでは、デフォルト状態で動作したが、openSUSEでは、x-windowの日本語フォントをインストールしないと、実行時にFontFamily Not Found Exceptionが発生する。

カテゴリー: Windows, 技術系 | コメントする

ようやく復活・・・

これ、さくらのVPSで動いてるんだけど、以前の環境がCentOS5だったのでサポート期限切れのためプロダクトのアップデートとかが面倒になったので、CentOS6に変更。

しかし、アップグレードパスが無いため、入れ直しとなり、まっさらな状態から設定を行ったんだよね。

前に、設定したのがかなり昔のことなので、ある程度の環境が整うまでに結構時間がかかってしまった。

特にこのサーバでやりたいことがあるわけでもないので、最低限ということで、以下の環境をセットアップ。

  • apache httpd
  • php
  • mysql
  • mono

このうち、monoの設定に時間がかかってしまった。mono自体のインストールは特に問題ないのだけど、xspとmod_monoに時間を費やした。

xspは単なる、Pageディレクティブの記述ミスで訳の分からないエラーが出ていて、それに気づくまでに時間がかかってしまった(^^;

mod_monoはyumのパッケージを見つけられなくて、結局ソースからmakeかけたんだけど、よく見たら、apache2-mod_monoたら言うパッケージがあるではないか・・・monoだから、頭がmono*だろうと思って探していたから・・・

とりあえず、次はつまらないwebコンテンツでも作るかな・・・

カテゴリー: 日記的なもの | コメントする