2018年7月28日土曜日

理学部数学科も時代の流れに生きる

 理学部数学科というと、かっては、世間離れした世界で、ひたすら「純粋数学」を研究するというイメージでした。今でも、本質は変わっていないと思います。しかしながら、数学科といえども、時代の流れにあり、市民や世間との関わりにもだんだん目を向けるようになっているような気がします。

A Walk of Hokkaido University, Sapporoより
(かっての理学部数学科は中央の通りの左の方にあった)

  実際、例えば、北海道大学理学部数学科(大学院も含めて)の場合、下記のような市民講演会もやっていることが分かりました。タイトルには、今多くの人が感心をもつ人工知能(AI)も演題に含まれていました。すでに、この講演階は終了していますが。

「AI時代における新しい生き方:数学者のデザイン力...」
http://www.math.sci.hokudai.ac.jp/wpcms/wp-content/uploads/2018/07/Math_Design.pdf
http://www.math.sci.hokudai.ac.jp

 また、オープンキャンパスでは、高校生向けに「3次方程式の解の公式と判別式」という公開講座も予定されています。2次方程式に比べて、3次方程式の解の公式は格段に複雑なので、高校生には聞き応えがあるようです。
http://www.math.sci.hokudai.ac.jp/event/hokudai-open-campus-2018-08-0506.php

 オープンキャンパスも、情報学部情報工学科と理学部数学科では、だいぶ違うなという印象もありますが、共通点もありそうです。

2018年7月17日火曜日

選択肢はあれど、Javaは使えるようにしたい

Javaプログラミングの演習をとおして、Javaの基礎を身につける。
(本記事の続編は、近々どこかに掲載します。)

Writing with pencil and typing are the basis of this world

ここでは、以下の書籍に特化して、Javaプログラミングを学び、自分の問題解決にJavaを使えるようにすることを目指します。そのためにご参考になりそうなことを書いていきたいと思います。(続編はあるかも)

立木秀樹・有賀妙子「すべての人のためのJavaプログラミング 第3版」共立出版

初版 ー 第2版 ー 第3版

■第3版についての私のコメント

初版(2000年10月発行)、第2版(2007年9月発行)、第3版(2017年10月発行)となっています。私は、大学の情報工学科でこれらの書籍を使って(一時期、別の書籍も教科書として使いましたが)Javaを教え、また、学んで来ました。現在は、学生諸君には教えていませんが、Javaプログラミングは続けています。

この教科書の第一の特徴は、「最初から」タートルグラフィックスを使って、視覚的にプログラムの動作を確認しながら、Javaの基本を学べることです。それは、初版、第2版、第3版でも変わっていません。それまで、C/C++の基礎を教えていた同僚のN先生が、私のJava授業の演習に加わった際に述べられた言葉は印象的でした。「これまでのテキスト主体の演習に比べて、こんなグラフィックスの演習はとても難しいのではないかと思っていたら、学生諸君は意外にも、グイグイとプログラムを書いて、修正して、動かしているのを見て驚きました。これは衝撃的でした!」と。

この教科書は、いわゆる「易しい教科書」に比べて、説明が緻密であり、その結果として文字数がとても多いように見えます。それが、一見、「これはかなり難しい教科書」という印象を与えるかも知れません。しかし、説明文が少なく、文字が大きく、やさしそうに見える教科書は、初心者には逆に理解し難いでしょう。なぜなら、詳しい説明がないのですから、当然そうなります。これに対して、この教科書は、説明に分からないところがあっても、例題のJavaプログラムを動かして、その結果を見ながら、プログラムの構造を見直し、さらに、本文の説明を何度か繰り返して読めば理解が深まってくるように作られています。

第3版になって、変更になった項目で大きなものは、「ラムダ式と関数型インタフェース」の導入と、「これまでのGUIが、SwingからJavaFX」へと変わったことだと思います。前者は、すでに、他の多くのプログラミング言語、例えばPythonやJavaScript等も取り入れていますので、自然な流れと思います。はじめての人は、Javaにおいて、関数をデータとして扱うことには戸惑いを感じると思います。しかし、よく馴染んでくれば、ラムダ式の導入は、従来のオブジェクト指向とうまく融合していることを感じるようになるでしょう。JavaFXへの変更は、より高度なGUI(アニメーション、マルチタッチなどを含む)を持つアプリケーションの作成容易化への要請に応えるもののはずです。なお、本書では、他の多くの書籍にみられるFXML(XMLベース)は扱っていません。これは従来のSwingからの継続性を重視したためかも知れません。

また、後半では、現代のスマートフォンからスーパーコンまでにおいて必須となっている「マルチスレッドと平行処理」に、30ページほどを費やして、丁寧な説明を行っています。その部分にも、上記の「ラムダ式と関数型インタフェース」が出て来ており、ここでも、それらの用途の理解がさらに得られるように思います。

2018年7月10日火曜日

共通のソースプログラムでiOS用とAndroid用のアプリを作れるThunkableX(その3)

(その2)に書いたことに関するものですが、iOSとAndroid用に共通のソースプログラムを書ける現状のThunkable Xに関して、現時点では失望するような投稿も見られます。


I refuse to use Thinkable X (Thunkable Xは使わない)

https://community.thunkable.com/t/i-refuse-to-use-thunkable-x/31375

これまでの、Android用であるThunkable Classicに比べて、現時点では利用可能ブロックの少なさをその理由にあげているようだ。しかし、私は、(その2)で次のように書きました。

「しかし、これは無理もないことです。AndroidでもiPhoneでも、PCやMacに比べると著しくリソースに制約があります。そのうえ、同一ソースプログラムで、両プラットフォームで動かせるようなプログラミングシステムを設計・実装するとなれば、これは一大事業なのですから。今後に大いに期待します!」




これと同じ意見の人も多くて、少し安心しています。すなわち、私は、下記のような投稿(意見)に多いに賛成です。


The initial versions of any platform lacks many features. More and more features and bugs are solved in subsequent versions. Ever seen the first version of app inventor/eclipse ?
I feel Thunkable is doing very good progress. And it’s a matter of time when all the features are available.

(Google翻訳を少し直したもの:どのプラットフォームの初期バージョンにも多くの機能がありません。 ますます多くの機能とバグが、後続のバージョンで解決されています。これまで のApp Inventor/やeclipseの最初のバージョンをもそうなっていましたよ!
私はThunkableが非常に良い進歩をしていると感じる。 そして、すべての機能が利用可能になるのは時間の問題です。)

2018年7月9日月曜日

Google自動翻訳:leave no stone unturned

英語のひとつのidiomだけを取り上げて、Google翻訳の性能に言及するのはどうかと思いますが、ご参考までに書きます。最近のGoogle翻訳(英語<->日本語)はかなり優れたものなのですが、従来の英語辞書(紙あるいはデジタル版)の知識を全てとり入れた状態とはなっていないらしい。

2018年7月8日のニュースに、「英南部エイムズベリーで神経剤ノビチョクに接触し、意識不明の重体となった40代の英国人男女のうち、女性が死亡した。」がありました。この件に対して、英国のメイ首相が述べた言葉のなかの「leave no stone unturned」が頭に残りました。英語の表現(idiom)としてです。

leave no stone unturned
https://ja.wikipedia.org/wiki/石

「ひっくり返さない石が無いくらいに徹底的に調べる」の意味のようですが、ネイティブでない日本人はあまり使わない(使えない)英語だと思います。さっそく、Google翻訳で和訳してみましたが、うまく翻訳できません。

■ Google翻訳:X 誤訳
leave no stone unturned -> 石を打ちのめす

これに対して、従来の英語辞典では成句として、以下のように載っています。

■ ジーニアス英和大辞典:◎当然妥当
leave no stone unturned -> 徹底的に調べる
■ 研究社新英和辞典:◎当然妥当
leave no stone unturned -> 草の根をかき分けて捜す

もしかして、完全な英文の文脈でこれを使えば、Google翻訳もうまくいくかも... 残念ながらだめのようです。

■ Google翻訳:X 誤訳
The researcher left no stone unturned in her search for the original documents.
 -> 研究者は、元の文書を検索しても、何の不自由はない。

Google翻訳が、今後、従来の英語辞書にあるような成句や例文も十分に取り込んで、さらに発展することを希望します。

2018年7月2日月曜日

共通のソースプログラムでiOS用とAndroid用のアプリを作れるThunkableX(その2)

続編です。
「同じソースで、AndroidでもiPhoneでも実行できる」にこだわった例題をもう一題作ろうと思いました。

結論からいうと、現時点では、なかなか思うように行きません。というのは、Android版(Thunkable Classic)で使うことができた多様なコンポーネントや機能のうちの多くがまだサポートされていないためです。

しかし、これは無理もないことです。AndroidでもiPhoneでも、PCやMacに比べると著しくリソースに制約があります。そのうえ、同一ソースプログラムで、両プラットフォームで動かせるようなプログラミングシステムを設計・実装するとなれば、これは一大事業なのですから。今後に大いに期待します!

「同じソースで、AndroidでもiPhoneでも実行できる」の2番目の例題として作ろうとしたのは、以前、Android版で作成した、「本学ソーラーカーの鈴鹿サーキットでの走行軌跡の描画」です。

快調に?そのソースプログラムを書きました。以下のものです。

鈴鹿サーキットでの走行軌跡描画のソースプログラム

早速、まず、iPhone向けにビルドして実行させました。Goodです!

iPhoneでの実行は問題なかったのだが...

では次に、これを、Andoid用にビルドして実行させましたが... Goodではないです!
直ぐにクラッシュしてしまいました。Google Map上に、点を移動してポリラインを引く際に異常終了するようでした。

こんな時は、下記のThunkableコミュニティでのディスカッションが参考になるはず。


確かにありました。「iOSでは良いが、AndroidではMap関係がうまく行かない」「The Map component does not yet supply its own latitude and longitude so we currently recommend using the Location Sensor component」等々が述べられていました。そうで したか、しばらく待ちましょう!Thunkableメンバーの健闘を応援したい。