« 確かにUpdateはUbuntuの方が楽。 | トップページ | デザインというか配色が一新するらしい。 »

否定するもんでもないですけどね。

はっぴーじむなすと@Linux 苦悩… もうムリ…

昔どっかのだれかがWindowsとUbuntuの比較みたいなので 「Windowsアプリは作るのが簡単。Ubuntuアプリ(Linuxアプリ)は作るのが難しい。だからWindowsの方がすぐれている。」 みたいなことを言っていました。



まあねぇ。
OSの優劣をプログラミング時の「敷居の高さ」で比較するなら、Windowsの方が優れているかも知れません。
作るのが簡単かどうか、って話だと、別に差はないかなぁ、ってのが正直な感想。
前提はありますけどね。
ある程度英語の知識があり、英語ドキュメントが読むことが出来て、ネットで検索できる環境にあるひと、って感じでしょうか。
ちょっと詳細なとこに話を突っ込むと、Windowsで用意されている標準コントロールよりも、GTKのコントロールの方が多機能なんですね。
なので、こういうことをしたい、に割と標準で対応可能というか。
その点、Windowsでも可能なんですが、コントロールのサブクラス化とか、オーナードローとか、割と突っ込んだレベルでの実装が必要とされる場合が多いです。
この辺になると、スクリプト言語では対応できなかったりして、C/C++でDLLを書くとか、そういう対応になりますかね。
今のところ、PyGTKしか使ってないので、Linux側の知識が不足している状態で、このエントリ書いてますけど、割とありがちな拡張はすでにコントロール側で行われていて、基本的な機能しか使わない場合には、機能をマスクする形でコントロールを使ってる感じになります。
なので、「綺麗なGUI」を作る場合には、たぶん、Linuxの方が簡単なんじゃないかな、と。
#簡単というと御幣があるかも。多機能な分だけ、シンプルに使いにくいってのはあるかも知れないですねぇ。

ただし、前述の通り、そこに至るまでの敷居の高さがあり、Linuxでのプログラミングは困難だ、という印象を付けているんじゃないかと思います。
たぶん、ここで困難だといわれているのは、GUIアプリケーションの開発のことだと思いますけどね。普通にCUIのアプリケーションであれば、なんら困難なことはありませんし。
いい、IDEもありますしね。
#CでCUI書くなら、anjutaでOKだと思う。変り種だとMonoDevelopかな。
ドキュメントが未整理な印象は確かにありますし、それでも探せば世界中からサンプルが得られるので、例えば、真似をしたいGUIを持つアプリケーションを探して、基本的なところはコピーしてしまうなんてことが可能なのもオープンソースならではのところじゃないか、と思うんですけどね。
車輪の再発明はしない、ってスタンスなんだと思うんですが、再利用可能なコードは利用し尽くしましょう、ってことなんでしょうね。

繰り返しになりますが、GUIアプリケーションを書こうと思うと、Linuxは敷居が高いんです。
それは標準的なIDEがないために、フレームワークを用いたスケルトン作成から自分でやらなければならない、ってことで、ある程度定型処理はツールにお任せで、「Hello World」くらいは書けないと、なかなかその先に踏み出せないんだと思います。
ちょっと勉強しようか、程度のスタンスで挑むと、「Hello World」までが大変で、ここで満足してしまったりする。
#特に無目的で、まず勉強だけ、なんて考えてるとなりがちですな。

そういう意味では、Windowsがというよりも、MSが上手いんじゃないかと思うんですけどね。
常に、標準的な開発環境を「使いやすい形で」提供している。
MSDNに代表されるドキュメントの検索/閲覧ツールも提供していますし。
Windowsの開発なら、ネットにつながらなくても、MSDNさえあれば困りません。

残念ながら、ある程度の経験者になってしまえばともかく、Linuxのプログラミング初心者には、GUIアプリ開発に限って言えばプログラム開発の敷居の高さは、Windowsには遠く及ばないのが現状なんじゃないでしょうか。
Gladeとか、非常に出来の良いGUI定義ツールなんかは出てきているので、これからな分野なのかもしれません。
デスクトップOSとしてのLinuxの認知度が高まれば、それらの統合IDEの必要性が叫ばれて、標準的な環境としてのIDEが出てくるんじゃないかと思ってるんですけどね。
ま、その前に特定言語を使用したGUI開発なんてことがナンセンスになる時代が来ちゃうかも知れませんけど。

|

« 確かにUpdateはUbuntuの方が楽。 | トップページ | デザインというか配色が一新するらしい。 »

Ubuntu」カテゴリの記事

パソコン・インターネット」カテゴリの記事

日記・コラム・つぶやき」カテゴリの記事

コメント

何か、Gentooの開発者が言ってたんですが、ドキュメンテーション文化で言うとFreeBSDの方が優れている、とか書いてましたね。キッチリと文書化しよう、と言う辺りでは徹底してる、とか。
つまり、新参のGNU系(これはまさしくそうで、あらゆるフリーウェアはGNUが出来た後発展している)だとそこまで統制が取れてないんでしょう。

例えば、Emacsのelisp拡張ファイルなんかでも、新しいスクリプト言語系(特にRubyなんか)だと、コメンタリーが不足していて、設定方法が分からない、なんてのは結構見かけます。
もちろん、ネット検索すれば事足りるケースが多い(つまり、どっかの誰かが何かしら書いている)わけですが、それでも一次情報元はまずその拡張ファイルに書かれているべきなんじゃないか、とか思うんですけど、そうじゃなかったりしますね。アティテュードがバラバラなんですよねえ。

考えてみると、プログラマの立場では「ドキュメンテーション」が一番大変なのかもな、とは思います。実際、

「コメントを書け」

とは言われてもコメント書くだけで億劫なわけでしょ(笑)?コメントの他に文書化、とか言われると頭痛くなってくる、ってのはあるんでしょうね(笑)。だからやりたがらない(笑)。
JavaDocって言うんでしょうか。何かコメント書く時点で索引検索出来ちゃうような機構を付ける、ってのはこの「横着さ」の裏返しなのかな、とか思います。Common Lispの第3引数がそのまま文書として成り立つ、みたいなのも同様な発想でしょうし。Pythonにもそんな機能ありましたよね。それくらい「書きたくない」ってのはあるんでしょうね(笑)。

他に、プログラミング言語によってもあるでしょうね。比較的ユーザーが多いPythonなんかわりにしっかりしてるのかもしれませんが、Common Lispのフリーライブラリなんか、文書類が全然整備されてない、なんて事もあるんで、元ネタの方の人の意見も確かに分かります。探すだけで時間かかって終わり、なんてのはザラですしねえ。

高林哲氏がヤック・シェービングとか書いてましたね。

yak shaving で人生の問題の80%が説明できる問題:
http://0xcc.net/blog/archives/000196.html

投稿: cametan | 2009年8月14日 (金) 02時38分

まあ、プログラマは物書きじゃないので、すでに動作しているプログラムに対して、ドキュメントを起こすなんてことはなるべくやりたくないのです。(笑)
んでも、実際のアプリケーションならともかく、ライブラリで、ドキュメントがないってのはマズイでしょ、と。
そもそもライブラリなんてのは「使ってもらう」前提で作られるもんなので、ドキュメントも含めてライブラリだとは思うんですよね。

とまあ、その辺は建前のところで。
ドキュメントがしっかりしているのって、割とMSだけじゃないのかな、と思います。
他社製のライブラリなんかも使ったことありますが、引数間違ってたり。(笑)
ドキュメントと実装のバージョンが食い違うなんてことはありがちだったりしました。
#特に昔。紙の製本が間に合わないというか、そっちはアップデート掛からなかったりしましね。

元記事の気持ちも理解できますが、ドキュメントがないなら使わなければいいんじゃないのかな、と思ったのも本音です。
PyGNOMEって、たぶん、PyGTKですべて賄えてしまうので、誰も使ってないってだけじゃなかろうか、と。
なのでドキュメントも整備されてないだけなんじゃなかろうか、と思ってたりするんですけど、Linuxの実装の流儀が解ってないので、実は間違ってるかもしれません。

勉強の場合は、もちろん、なにが正しいのかを解って実装するのが正しい姿なのだとは思いますが、結局それは「お勉強」でしかないよな、ってのがワタクシのスタンスです。(笑)
プログラムは何のためにあるのか、って目的を忘れて、手段であるプログラミングの習得だけを目的にしてしまうと、そんな柔軟性のないプログラマなんて現場では役に立たなかったりするんですよね。
#実は、そういうひとも必要で、それこそライブラリ開発なんかには、そういう「筋を通すべき」体質の人が多かったりしますが。

現場のプログラマは、土方と一緒なので、「その時どうにか出来る手段でどうにかする」必要があるので、ぶっちゃけ、資料探しに時間がかかるようなら、その手段は切り捨てる、って判断も必要になるんですよ。
仕事になっちゃうと、どこまでもお金と時間のトレードオフなので、その時に一番安上がりな手段で実現しなくちゃならない。
ま、そんな土方仕事に慣れてしまうと、夢も希望もなくなるんですが。(笑)

ただ、開発者を今後増やしたいと思うなら、体系的なドキュメント整備は必須なんだと思います。
そうじゃないと、変なノウハウが先に身につかないとプログラム開発ができないなんてことになるので。
他人の書いたプログラムを読んで、ライブラリの使い方を身につける、なんてのは、本来やるべきことじゃないんですよね。
#ドキュメントの中にあるサンプルプログラムは話が別ですが。サンプルは非常に重要なので。
きちんとドキュメントを読んで、それに従って実装できるような環境が実現しないと、開発者に取って、敷居の高い状態が続くんじゃないんでしょうかね。
ライブラリその物は高機能でも、アプリケーションから、それを利用出来ないんじゃ、宝の持ち腐れですからね。
たぶん、今後はドキュメントのしっかりしてないライブラリは淘汰されて、使われなくなるんじゃないかと思ってますけど。
#PyGTKはそこそこ揃ってるみたいでよいですよね。

投稿: かおりん | 2009年8月14日 (金) 02時59分

本文修正しても良かったんですが、コメントで。

一方で、単純にプログラムを書く、という前提(GUIに限らない)だと、Linuxの方が敷居が下がります。
例えばシェルスクリプトなんかも立派なプログラムですが、Windowsには、こんな機能は標準ではありません。
#PowerShellとか出てきましたけどね。

ちょっとしたことを、プログラムを組んで処理したい、という要求に対しては、実はLinuxの方が柔軟性があり、かつ間口が広かったりします。
別にGUIなんぞなくてもやりたいことが実現できればOKであれば、Linuxの方が簡単なんですよね。
既存のコマンド組み合わせて結果を繋いで行って、結論を出力するとか。
例えばCSVファイルの加工とかね。

Windows慣れしていると、プログラミングって必ずGUIな印象があるから、Linuxのプログラムは難しい、なんて言われるのかもしれませんが、「やりたいことを実現する」前提だと、Windowsの方がよっぽどプログラムは難しくて敷居が高かったりするんですけどね。
#特にファイル入出力。VB6なんて悲惨。(爆)

標準入出力を使ったパイプ処理なんて、Windowsで書こうと思うと結構面倒だし、コマンドラインの引数なんかもね、結構手間。そういう使い方を想定してないから、出来ないことはないけど、それ用のライブラリが貧弱だったりします。

ま、前提が変われば、難易度に対する味方も変わるよ、って程度の話です。

投稿: かおりん | 2009年8月14日 (金) 03時22分

PyGtkもよくできていて「基本的なこと」はものすごく簡単にできるんですが、
ちょっとで高度なことをしようとすると、いっきにとてつもなく難しくなってしまうんですよね~

こういうところはUbuntuにも似ているような気がしますが(笑

僕が初めに組んだGUIプログラムというのはJavaで、日本語のドキュメントも整備されており、インターネット上にころがっている情報も多くて簡単に組めました。Gtkは基本的な部分以外日本語のドキュメントがほとんどなく、英語のドキュメントすら怪しい部分がありますが、Javaにくらべて簡潔に書くことができると思います。なのでもう少しLinuxが広まってドキュメントが整備されれば強力な存在になってくれると思います。

Sunあたりがやってくれそうですけどねえ。日本語のドキュメントなんて。

投稿: わさびー | 2009年8月14日 (金) 20時57分

あら、わさびーさん、コメントありがとうございます。
見に来てたんですね。(笑)

英語ドキュメントの怪しい部分が解りませんが、英語ドキュメントがきちんと揃ってない状態では、日本語訳も厳しいかも知れませんね。
Pythonが日本発症の言語でない限り、日本語ドキュメントの方が充実しているってことはなさそうなので。

それはそれとして。
Javaと比較して完結に書けるってのはそうかも知れません。
Pythonの方がライブラリへの依存率が高い気がします。
まあ、逆を言えば、それだけ有用なライブラリが揃ってるってことでもありますけどね。
JavaとPythonかあ。
比較したことないなぁ。
個人的には、Javaは好きじゃないんですけどね。
インタプリタというか、中間言語という点では差がないんですが、JavaよりもPythonの方が潔い感じがして、まだマシかなあ、って気がしています。
ま、好みの問題ですかね。

投稿: かおりん | 2009年8月15日 (土) 01時24分

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/500703/45920650

この記事へのトラックバック一覧です: 否定するもんでもないですけどね。:

« 確かにUpdateはUbuntuの方が楽。 | トップページ | デザインというか配色が一新するらしい。 »