« Kernel 2.6.25.6 | トップページ | Opera 9.50 »

SPE

狂ったようにガンダムを作っていたので、今日はUbuntuネタがありません。(爆)

というのもアレなんで。

Python用のエディタとして、Ericというのを使ってたんですが、なんだかイマイチな気がしていて。
ネットで適当に探していたら、即ヒットしたSPEというエディタというかPython環境を今、試しています。

英語ではありますが、Screenletsのライブラリのヘルプっぽいのも参照できるようで、意外に使えるかも、とは思っていますが。

まあ、インストールして初日なので、まだなんとも言えない状態なんですが、もう少し使い込んでみたら、なんか書けるかも知れません。

ま、ガンダムの方は、そのうち画像でも公開します。(爆)
#素組なんで、公開するほどのものでもありませんが。

|

« Kernel 2.6.25.6 | トップページ | Opera 9.50 »

Ubuntu」カテゴリの記事

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

コメント

良さそうですね、SPE。
これは元々KDE用のツールなのかしら?

惜しむらくは

「やっぱり日本語入力を受け付けない」

ですね。
っつーか、やっぱこれってSCIM/Anthy側の問題だよなあ。
早くこのバグ直してほしいんですが……。
Ubuntu Japanese Teamって無視しますねえ、こう言う部分。

投稿: cametan | 2008年6月13日 (金) 00時28分

ホントだ。
日本語入力時に、入力している文字列見えませんし、確定しても反映されないですね。
なんだろ?
KDEというかQtの問題なのかなぁ。
ちなみに、ATOKでもNGみたいです。


ちょっとそれだと使いにくいかなぁ。

投稿: かおりん | 2008年6月13日 (金) 05時59分

僕がLinuxに鞍替えした理由は色々あるんですが、結局最後に背中を押したのが


「VistaにPythonがインストール出来なかった」


と言う部分なんです。どうしてもインストーラが途中で止まっちゃって。そうなると、Vistaじゃプログラムの勉強が出来ない。
それでUbuntu入れたんですが……今度はこの「日本語」の問題が生じちゃって(笑)。
2.4のIDLEはイイんです。これは問題無いんですが、2.5から日本語が通らなくなった。
「あれ???」ってんでUbuntu Japanese Teamにバグ報告したんですけど、全然改善なされていません(殆ど一年経過しています)。
まあ、それで、Tck/tkのIDLEって見た目汚いですし、Tcl/tk自体もUnicodeとあんまり相性が良くない、ってのもあって、他のPython関係のエディタは軒並み試しましたね。それこそEricから始まって色々と……。でも殆ど日本語受け付けないんですよ。
結果、残ったのは、


1.gedit
2.Emacs
3.eclipse


の三つくらいですか?
geditはWindowsのメモ帳なんかと違ってデフォルトエディタとしては確かに超強力なんですが、起動する度に一々設定変更しなきゃなんないのがメンド臭くって。特にインデント調整に難アリ、だと。
Emacsが一番無難ですが、実はあんまりPython向きでもないな、と。設定もメンドいし。
eclipseは起動が遅すぎ。日本語の情報は「知名度のワリには無い」って言ってもいいくらいで、あってもその殆どがJava絡みなんでこれも適さない、と。


結局、今の時点ではUbuntuでPython書くのってあんまり向かないんですよ。ディストロ基盤では死ぬほどPythonのソース入ってる筈なんですが、生憎「SCIM経由で日本語が通らない」この一点でハブされています。つまり、日本でのUbuntu弄りは海外と違ってPythonを経過してない(あるいはしづらいか)。
「Ubuntuが開発向きじゃない」と言う国内の評価はこれが原因でしょうね。UTF-8対応謳っていても、実質「入力ツール」であるSCIMが空回りなんです。従って、日本では、従来のEUC-JPベースのディストロに現時点では「負けてる」んです。理想的な「UTF-8ベースのディストロ」のフリしていますが、現時点では「ウワベだけ」ってのがある意味事実なんですね。


お陰で僕はUbuntuでLispに傾倒してしまった、と言う流れになっちゃったのです(笑)。LispとEmacsだったら相性抜群ですしね(笑)。今のトコ「ストレス感じるPython環境」から離れざるを得なかった、って事もあるんです。

投稿: cametan | 2008年6月13日 (金) 06時47分

Emacsは今のところ使う気なし、なんですが。(笑)
#Vineの頃は選択肢がなかったんで使ってましたけど。


自分用のプログラム書くだけなんで、日本語は通らなくても構いませんけどね。
コメントくらいだし。
メッセージは理想はリソースファイルとして別に持つ方向だし、まあ、エディタからコピペでも大丈夫でしょう、きっと。
ダメならダメでなんとか。


開発環境のエディットコントロールって、たぶん、そこそこカスタム化されているから、こんなことが起きるんでしょうね。
通常のエディタなら問題ないのに、って感じで。
正直JapanTeamで対応は困難じゃないのかなあ。本家でやって貰わんと、国際化対応は。(笑)


Lispかぁ。触ったことないですね、ってのはウソか。Emacsのマクロでちょっと触ったくらい。
C/C++な人間なんで、ちょっと取っつきづらいです。(笑)

投稿: かおりん | 2008年6月13日 (金) 07時15分

>Emacsは今のところ使う気なし、なんですが。(笑)
>#Vineの頃は選択肢がなかったんで使ってましたけど。


これ、ホントに評価分かれますよ。
40代以上のプログラマですね、評価する人の殆どは。若手の(30代を若手に含めていいのかどうかは疑問ですが・笑)プログラマにはあんま評判良くない、ってのがホントのトコです。
そのうち、Emacs使いって死滅するような気もするんですが(笑)。


>エディタからコピペでも大丈夫でしょう、きっと。


あ、それ良くやります(笑)。
DrScheme(Lispの一方言)で、geditで日本語記述してコピペ、とかやりますね。


>開発環境のエディットコントロールって、たぶん、そこそこカスタム化されているから、こんなことが起きるんでしょうね。
>通常のエディタなら問題ないのに、って感じで。


多分、JapaneseTeamの連中は開発自体はUbuntu用いてない、とか思ってます。恐らくRedHat系のディストロ使ってるのではないか、と。
ニコニコ動画でそんな話していたビデオ観ました(笑)。会社でRedHat系使ってるから「自宅でもある」らしいです。


>正直JapanTeamで対応は困難じゃないのかなあ。本家でやって貰わんと、国際化対応は。(笑)


結局そうなるんですよねえ(笑)。
確かに「ローカル」だ(笑)。


>Lispかぁ。触ったことないですね、ってのはウソか。Emacsのマクロでちょっと触ったくらい。
C/C++な人間なんで、ちょっと取っつきづらいです。(笑)


いやいや、Lispじゃないと出来ない事あるらしいですよ。
ネタなんですけど(笑)、FizzBuzzってあるじゃないですか?それで「世界のナベアツの芸をプログラムしよう」ってお題があって(笑)。まあ、お遊びなんですが。
んでRuby辺りで実装するのも難儀だったようです。


世界のナベアツにGauche(Scheme)で挑戦する:
http://d.hatena.ne.jp/yshigeru/20080418/1208523696


いや、このプログラムがおかしいんですが(笑)。
これ、C/C++で実装可能なのかしら?と言うか「全ての言語はチューリング等価」だとしてもかなり難解なプログラムになるような気が。良く分かりませんが。
C/C++版作ってslみたいにお笑いフリーウェア化して楽しませて下さい(笑)。


slコマンド:
http://www.tkl.iis.u-tokyo.ac.jp/~toyoda/

投稿: cametan | 2008年6月13日 (金) 08時01分

仕様がよく解らないんですが、これってコマンドラインの引数とかから、出力条件選択可能な使用なんですかね?
ちなみに、「世界のナベアツ」そのものの挙動が解ってないので、数値が被った場合の動作が不明なんですけど。(笑)


例えば、3の倍数で、犬ので、かつ、5の倍数でアホだと、15の場合は、犬とアホの両方が適用になるんですか?
ん〜コンパクトには出来ないかも。
たぶん、この「挑戦」ってどれだけコンパクトに解りやすくってのがキモなんですよね?
実装は出来ますが、どうなのかなぁ?
普通に犬なら、こう変換、アホならこう変換とかの関数作って、条件満たしたときに関数コールして出力文字列変換すればいいだけかとは思うんですけど、それじゃ「挑戦」にならないのかな?


仕様の困難さが解ってません。(^^;

投稿: かおりん | 2008年6月13日 (金) 14時29分

>「世界のナベアツ」そのものの挙動が解ってないので、数値が被った場合の動作が不明なんですけど。(笑)


ああ、なるほど(笑)。
「世界のナベアツの挙動」はこちらを参考に(笑)。


なべあつ、三の倍数のあほ、五の倍数の犬
http://www.fooooo.com/watch.php?id=28919b38bc33b3cf407784390b7fd34d


新春レッドカーペット 8の倍数は気持ち良くなる
http://www.fooooo.com/watch.php?id=ea7d7405896fe6fb1dece6c16fc279d5


投稿: cametan | 2008年6月13日 (金) 15時04分

ああ、被るんですね。先に挙がってる条件の方が優先して適用される、と。
#3の倍数、アホ、3がつくときアホ、5の倍数イヌという順番で適用される、みたいですね。
仕様は解りました。(笑)

基本的には、フラグ処理と文字列処理ですか。
まあ、書けますが、エレガントに書けるかどうかはちと疑問。

組まなきゃダメですか?(爆)

投稿: かおりん | 2008年6月13日 (金) 15時14分

きちんとは作ってないですが、こんな感じ?
C#ですけど。

本格的に作るなら、出力するところに文字列変換関数作成すれば、まあ、それっぽくなるんじゃないかと思いますけど。
簡略化するなら、switch〜case使わないで、ifでフラグを順次チェックでしょうか。
拡張性考えるなら、switch〜caseの方が、のちのち全然違う処理にする場合にも有利な気はしますけど。
まあ、どうなんでしょうね。(笑)

http://kaoru-linux.cocolog-nifty.com/blog/files/Main.cs

投稿: かおりん | 2008年6月13日 (金) 15時37分

C#のコードって初めて見ました。
ちょっと関数型みたいな書き方するんですね。
と言うより、「プロのコードはキレイ」って事なんでしょうか。


こう言う形が心臓部で、Console.WriteLineって関数を呼び出して……aってデータ(オブジェクト)を変換表示、って読み方で良いのでしょうか?
オブジェクト指向って良く分かんないんですが、なるほど、プロって違いますね。
僕とかがオブジェクト指向使おうとすると、明らかにスパゲッティコードになりそうです(笑)。

投稿: cametan | 2008年6月13日 (金) 23時36分

キレイにかけるとこだけ書いたので。(笑)
シンプルなメインロジックだけの記載です。
たぶん、文字列変換する関数の方は、けっこう泥臭いコードになるんじゃないですかね。
まあ、文字列操作なので、キレイにってのも限界あるだろうし。


結局はC#にせよ、C++にせよ、Cからの派生言語なんで、設計からOOPの言語とは違うんじゃないでしょうか。基本的には関数型の考えで実装してます。
まあ、大がかりなコードになれば、当然クラス化して、データ隠蔽してとかやりますけど。(笑)
この手の簡単なロジックのジョークプログラムでそこまでする必要あるのかな?という程度の話です。
却ってステップ数増えますし。


ご紹介の動画見たら、1〜40までのカウントだったので、それをループカウンタ兼データとして扱ってます。
で、カウンタの値で挙動が変わるので、フラグ処理をして、フラグに従って出力しているだけ、のプログラムです。
出力結果を「世界のナベアツ」に合わせるなら、フラグ処理をしているswitch〜caseの構文の中で、出力文字列を生成して、画面に出力、って流れになるでしょうか。
今回省いているのは、「世界のナベアツ」の台詞に合わせてるコードですね。


画面出力は、.NETなので、ConsoleオブジェクトのWriteLineというメソッドを使ってる、ってだけで、これがC言語なら、printfになるだけです。
aのフラグ処理で文字列化してますが、これもC言語なら、一度sprintfで配列に出力するだけですかね。
この辺はC言語系なら、手順は同じなんじゃないかな。


同じロジックならPythonでも書けるんでしょうけど、あっちの方は構文をきちんと覚えてないので、C#の方が手軽で早く書けるってだけで選択しました。(笑)
慣れの問題ですね。


でも、誰が書いてもこんな感じじゃないですかね。
キレイに書くひとなら、もっとフラグ処理んとこキレイに書けそうですけど。
#テーブルで処理するとか。


あまり凝らずに書いたんで、こんな感じってことです。(笑)

投稿: かおりん | 2008年6月14日 (土) 00時36分

>たぶん、文字列変換する関数の方は、けっこう泥臭いコードになるんじゃないですかね。
>まあ、文字列操作なので、キレイにってのも限界あるだろうし。


例のページのコードは正規表現処理使ってるみたいですね。良く分かりませんが(笑)。
場合によっては(可能だったら)Perl呼び出して継ぎ接ぎ、ってのもテですよね(笑)。


>結局はC#にせよ、C++にせよ、Cからの派生言語なんで、設計からOOPの言語とは違うんじゃないでしょうか。基本的には関数型の考えで実装してます。


そうですね。多分Eiffelなんかとは違うと思います。
まあ、C++は「スタンダード形式」とは捉えられていますが。
C#ってクロージャ使えるのかな?コード見た感じ、結構「ダイレクトに」変換噛ましてるように読めました。


>今回省いているのは、「世界のナベアツ」の台詞に合わせてるコードですね。


あのページのコードは凄いですよ(笑)。あんなん思いつきません。はあ、こうやってクロージャ使うんだ、とか感心してました。普通の言語だとかなり実装難しい感じがします。
Lisp系言語とか「関数を返り値とする関数を書ける」部分が特徴なんです。「高階関数」とか言うんですが。
いわゆる「アキュムレータ」とか言うヤツですか?「引数をnとして"引数にnを与える"関数」を書いたり出きるんですよ。
例のページのコードはそうやって作った「関数を返す関数」の命令列挙させて「セリフ」にしてる、と。恐ろしい発想です(笑)。
ひょっとしたら、C#がJavaScriptみたいにクロージャ使えるんでしたらああ言う形に持っていけるかもしれません。


>.NETなので、ConsoleオブジェクトのWriteLineというメソッドを使ってる


Cと言うより、ちょっとPascalっぽい命令ですよね。好きな人は好きかも。


>あまり凝らずに書いたんで、こんな感じってことです。(笑)


いやいや、題意見てちゃちゃちゃってプロトタイプ組み上げられる、ってのは素人には無理なんで、さすがだな、と感服しております。

投稿: cametan | 2008年6月14日 (土) 02時07分

>場合によっては(可能だったら)Perl呼び出して継ぎ接ぎ、ってのもテですよね(笑)。
正規表現での文字列操作ライブラリは.NETにはあるんじゃなかったかな?
まあ、それほど複雑じゃないなら、自前で書いてしまった方が速いんですけどね。


>C#ってクロージャ使えるのかな?コード見た感じ、結構「ダイレクトに」変換噛ましてるように読めました。
使えるようですね。>クロージャ
あんまりやらないですけど。(^^;
#というか、よく知りません。(爆)


>例のページのコードはそうやって作った「関数を返す関数」の命令列挙させて「セリフ」にしてる、と。恐ろしい発想です(笑)。
言語の慣れの問題が大きいので、アレなんですが。(笑)
正直、何やってるのかは解りませんでした。
なんとなく処理の流れは読めたんですが、まあ、構文解ってないんでしょうね、きっと。
ネタなんでしょうけど、言語サンプルみたいなイメージなんですかね。
その言語の特徴押さえて書くにはよいネタなのかも知れません。>「世界のナベアツ」

投稿: かおりん | 2008年6月14日 (土) 08時37分

コメントを書く



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




トラックバック

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

この記事へのトラックバック一覧です: SPE:

« Kernel 2.6.25.6 | トップページ | Opera 9.50 »