ラベル プログラム言語 の投稿を表示しています。 すべての投稿を表示
ラベル プログラム言語 の投稿を表示しています。 すべての投稿を表示

Javaの“常識”、“非常識”

ネットでたまたま見つけた記事
Javaの“常識”、“非常識”

最初から最後まで全部読んでしまった。

Javaを知らない人が読んだら全然つまらんけど、中級者くらいが読むと
いい読み物ではないかと思います。

HTML5の話

先日横浜で行われたGoogleDeveloperDayの模様がYouTubeにアップされていた。

下記はHTML5の話。



HTML5という用語は、これに関係する記事を見て初めて意識するようになったのだけど、
要するに、いろいろなことが、HTML標準で出来るようになるというらしい。

うがった見方をすると、フラッシュなどのテクノロジで出来ていたことなんで
それでいいジャンといえばそれまでなんだけど。

標準になると何がいいんだろか?とちょっと考えてみたけど、
正直何がいいのか良くわからなかった。
開発者にとっては、フラッシュなどを使わなくて良くなるので、敷居が低くなるのは
間違いないけども、ユーザにとっては、あまり変わらないのかもと思う。

世の中には、ユーザ指向でない技術も多くあるけど、この技術はどうなるのだろうか。

Javaは開発者を取り込んだことによって流行った部分もある言語なんで、
それと同じ道をたどるのならば、標準的な技術になるのかもしれない。

リンク:GoogleDevelopersJA

AutoIt

Windowsアプリケーションの機械的な作業をいっぺんにやりたいというような場合に
利用できるソフトウェアがこちらです。先日ちょっと使ってみたのだけど、なかなかおもしろい。

ダウンロードはこちらから可能です。
AutoIt v3 - Automate and Script Windows Tasks - For Free

いろいろ機能がありすぎて、まだまだ十分に使いこなせていないが、
とりあえず、キー操作するのとマウス操作の命令までは、自分の意図通りに
掛けるようになった。

これの基本は、下記の3つです。
Run("XXXX.exe") 
 →exeの起動
WinWaitActive("画面タイトル")
 →このタイトルがアクティブになる待つ
Send("送信する文字")
 →画面にこの文字を送信する
 このメッセージでは、キー操作も送ることが可能。
 詳細は、下記のリンクに説明がある(英語)
http://www.autoitscript.com/autoit3/docs/functions/Send.htm

これで、全ての操作がキー入力で出来るような画面であれば完璧に
外部から操作が可能です。

また、こちらには、インストーラを自動的に進めてしまうスクリプトの
例が記述されています。

WinZip Installation

使いこなすのには時間がかかりそうだけど、これからちょっとずつ
やってみようかなと思っているツールの一つ。

java Diff

ここ数日、テキストファイルの差分を分析するソフトをつくろうかなと思って

いろいろ探していたら、JavaDiffというのがあり、これは、なかなか便利に使わせてもらった。

使い方はこんな感じ
java-diff

で要するにList同士を比較してくれるという仕様のようです。

このクラスを利用すれば、いわするシンプルなテキスト比較の機能は

実現可能です。(追加部分、変更部分、削除部分)

テキストファイルをListに入れればテキスト同士の比較も出来ました。

Javaでなんかの差分をとりたい場合には、是非利用するといいのではないかと感じました。

プログラム言語の選択

世間では、Javaが流行っているんだけど、なんでJavaってこんなに流行っているんだろうと思ったけど、この本を読んでなんとなく分かった。
Javaでなぜつくるのか

ちなみに私の知っているプログラム言語は、COBOL、Java、C言語、Delphi(Pascal)です。それ以外の言語は知らないので触れません。

Javaはよく、どのプラットフォームでも動作するからいいというけれども、実際は、C言語やCOBOLなどのプログラム言語を使えば、別にそれは実現できる。プラットフォームごと(OS毎)にコンパイルが必要になるが、そんなの大した問題ではないしなぁと思っていた。だから、Javaの魅力はここにはないと思う。
(この本の著者はそれも大きなメリットといっていたけど、そうかなぁと思った)
Javaのいい点というのは、やはり完全なオブジェクト指向言語ということである。
オブジェクトいいところは、再利用だというひとがいるけども、まぁこれも確かにいいとことだけど、
再利用という部分は、実際にはやろうと思えば他の言語でも出来る。だからそれほどのメリットには
ならないと思う。

私がオブジェクト指向の一番のメリットと感じた部分は、この本を読んで再認識したのだけど、
コーディングのルールを遵守させることが出来る部分かと思った。
クラスを設計する人が数人いて、プログラムを書く人が多くいるようなケースにおいては
設計者の意図を遵守させることが出来るというのはこのオブジェクト指向のいい点である。

WebプログラムでJavaが利用されるのも、このWebサーバに必要なコードのしきたりというものが
完全に遵守しやすいというJava言語のメリットからWebでよく利用されているんだろうと思う。

一方、Javaのデメリットは、やはりパフォーマンスになると思う。
Hot-Spotという高速化の技術はメモリを大量に消費し、またバーチャルマシンという性質上
どうしても、パフォーマンスは悪くなるし、また、オブジェクト指向を追及すればするほど、
パフォーマンスというのは悪くなっていくと思う。

Javaで処理しても数秒の処理であれば、正直どちらの言語を選択してもいいと思うが、
特に大量データを扱い、処理に1時間以上かかるような超大量データの処理を行う場合
それは、やはりJavaは適していないと思う。

Javaで20秒かかるけど、C言語では10秒で終わるのであれば、生産性や再利用性を
重視してJavaで作るというのはありだと思う。

しかし、Javaでは2時間、Cでは1時間という処理速度でしかもメモリ使用量はJAVAが
10倍とかいう状態ならやはり、C言語で作るべきだと思う。

バッチ処理に関しては、ネイティブのマシン後に変換されるような、COBOLやCで
作成するのがいいだろうなと思う。
また、COBOLとCの違いは、やはり、数値計算か文字列処理化によって一長一短が
あるように思う。
C言語は、可変長の配列が扱いやすいのでやはり文字列の処理をするには向いてると思う。
一方のCOBOLは数値計算を行うのであればそれは、そちらの方が向いているように思う。

結論として、Javaは大量処理、思い処理には避けるべき言語であると思っている。
バッチ処理は、少しでもリソースを使わないように、少しでも高速に動作するように設計する
というのが、ソフトウェア開発者の責任ではないかなと感じている。

というわけで、本日は、久々に長く語って見ました。