1 名前:login:Penguin [2009/07/05(日) 14:31:59 ID:IdyQQEIy.net] C#ライクなGNOMEのプログラミング言語Valaについて語り合いましょう 【GNOME Live!】 Vala live.gnome.org/Vala Tutorial live.gnome.org/Vala/Tutorial 【SourceForge】 ValaによるGNOMEアプリケーションのプログラミング sourceforge.jp/magazine/08/12/15/0143207
85 名前:login:Penguin mailto:sage [2009/12/20(日) 16:13:54 ID:0O/mIIzO.net] Vala Releases Vala 0.7.9 released on December 19, 2009 Changes * Support array and string slicing. * Add --symbols commandline option. * Add avahi-gobject bindings (Sebastian Noack). * Add ccss-1 bindings (Ali Sabil). * Add libarchive bindings (Julian Andres Klode). * Add libmagic bindings (Jens Georg). * Add readline bindings (Jukka-Pekka Iivonen). * Add twitter-glib-1.0 bindings (Adrien Bustany). * Many bug fixes and binding updates. git repositoryにはあったようだけれど、 公式?が更新されてWindows版バイナリもDL出来る状態だったので一応報告
86 名前:login:Penguin mailto:sage [2009/12/21(月) 02:33:26 ID:2kmz3FOO.net] 相変わらず変更点の解説がないな… * Support array and string slicing. これはどういうことだ?
87 名前:login:Penguin mailto:sage [2009/12/21(月) 02:47:50 ID:2kmz3FOO.net] テストコードが追加されてた // slices t = s[2:4]; assert (t.length == 2); assert (t[0] == 'l'); assert (t[1] == 'l'); っていうことだな。
88 名前:login:Penguin mailto:sage [2009/12/27(日) 19:03:24 ID:nUx8bWnY.net] gtk-button.vala:8.5-8.26: error: The name `connect' does not exist in the contex t of `null' window.destroy.connect (Gtk.main_quit); ^^^^^^^^^^^^^^^^^^^^^^ gtk-button.vala:10.5-10.26: error: The name `connect' does not exist in the cont ext of `null' button.clicked.connect ((source) => { ^^^^^^^^^^^^^^^^^^^^^^ Compilation failed: 2 error(s), 0 warning(s) 0.5.4 でコンパイルしてみたらエラーが出て通らなかた イベントハンドルは += ではなくてなるべく connect を 使うのが推奨されてる…とかどこかで読んだような記憶があるようなないような…
89 名前:login:Penguin mailto:sage [2010/01/01(金) 00:06:48 ID:sfh07iOR.net] あけおめ。 今年こそ1.0がリリースされますように( ̄人 ̄)
90 名前:login:Penguin mailto:sage [2010/01/05(火) 02:22:15 ID:68YcuKLZ.net] >>86 しかし古いバージョン使ってるな。今の最新は0.7.9なんでそれで 一回コンパイルしてみ。
91 名前:login:Penguin mailto:sage [2010/01/06(水) 02:08:55 ID:sJSR3xqj.net] www.mechanicalcat.net/richard/log/Python simple な静的 html 出力ツール entitycrisis.blogspot.com/2009/08/simple-pygame-wrapper.html billmill.org/multi_line_lambdas.html mail.python.org/pipermail/python-dev/2006-February/060654.html 下から順に時系列で、なんとなく流れとして
92 名前:login:Penguin mailto:sage [2010/01/14(木) 13:47:25 ID:f9MyO6F7.net] // helloworld.cs using System; using System.Text.RegularExpressions; class HelloWorld { public static void Main() { System.IO.StreamReader sr = new System.IO.StreamReader(@".\\hello.gs"); //内容を
93 名前:すべて読み込む string gscode = sr.ReadToEnd(); //閉じる sr.Close(); Console.WriteLine(gscode); Regex r = new Regex(@"\(.*?\)", RegexOptions.Singleline); System.Text.RegularExpressions.MatchCollection mc = r.Matches(gscode); foreach (System.Text.RegularExpressions.Match m in mc) { //正規表現に一致したグループを表示 Console.WriteLine(m.Value); string before = m.Value; string after = before.Replace("\r\n", "").Replace(" ", ""); gscode = gscode.Replace(before, after); } Console.WriteLine(gscode); } } >csc hello.cs これと等価なコードって vala だとどう書いたらいいか わからないんだよな… [] [ここ壊れてます]
94 名前:login:Penguin mailto:sage [2010/01/14(木) 13:52:45 ID:f9MyO6F7.net] [indent=4] def foo(arg1: string, arg2: string): string return arg1 + arg2 init print foo( "hello ", "world" ) print foo("hello ", "world") /* EOF */[indent=4] def foo(arg1: string, arg2: string): string return arg1 + arg2 init print foo( "hello ", "world" ) print foo("hello ", "world") /* EOF */ hello.gs はこんなかんじ 空白は半角に置換しないと動かないかも…
95 名前:login:Penguin mailto:sage [2010/01/14(木) 13:58:24 ID:f9MyO6F7.net] なんか張り間違えてるしorz
96 名前:login:Penguin mailto:sage [2010/01/30(土) 14:42:11 ID:0hh2Dj8z.net] www.newtek.com/lightwave/core/lightWave_3D_with_CORE_technology_Features_Document.pdf 次期 lightwave はQTなんだな... COLLADAにBulletにPython載るとか C単体でトランスレータで組むのは 厳しいというが現状という...
97 名前:login:Penguin mailto:sage [2010/02/11(木) 08:53:33 ID:OAcrTRrZ.net] trac.yorba.org/browser/shotwell/trunk/vapi/FStream.vapi?rev=1036 vapi is simple. or vapi maintenance is hard and hard ...
98 名前:login:Penguin mailto:sage [2010/02/13(土) 17:13:42 ID:fQoCmgtg.net] >>94 乙
99 名前:login:Penguin [2010/04/02(金) 00:33:45 ID:rvSB9vMK.net] 0.8.0リリース上げ! experimental な機能以外はバグフィックスが主なリリースだな。
100 名前:login:Penguin mailto:sage [2010/04/16(金) 19:47:55 ID:/6r9tkwK.net] .bashrc export GOROOT=$HOME/go export GOARCH=386 export GOOS=linux $hg clone -r release https://go.googlecode.com/hg/ $GOROOT $cd $GOROOT/src $./all.bash Note: fedora case selinux error: groups.google.com/group/golang-nuts/browse_thread/thread/5ffcecb0814b01b8 $hg clone https://gobuild.googlecode.com/hg/ gobuild $make error: gobuild.go:62: undefined: os.Dir edit: os.Dir -> os.PathInfo $make $cp gobuild $HOME/bin $hg clone https://gopages.googlecode.com/hg/ gopages $cd gopages $gobuild gopages.go $cp gopages $HOME/bin $gobuild main.go $./main gopages serving on :9999
101 名前:97 mailto:sage [2010/04/16(金) 19:52:41 ID:/6r9tkwK.net] >>97 ad-hoc rhtml like template is good stuff. ^^;
102 名前:login:Penguin mailto:sage [2010/04/21(水) 01:15:16 ID:nUefU5z/.net] テキストファイルを読み込んで string を返すようにしようと思ったら、 意外とすっきり書けないな。 一番シンプルに書こうとするとどんな感じになるかな?
103 名前:login:Penguin mailto:sage [2010/04/21(水) 01:41:59 ID:nUefU5z/.net] 自己解決した。 var file = new MappedFile ("hoge.txt", false); var text = (string) file.get_contents (); でいいかな。
104 名前:login:Penguin mailto:sage [2010/04/22(木) 23:52:50 ID:Nm7c6dz1.net] >>100 gitorious.org/lethal-works/valagtkdoc/blobs/master/sectionsgenerator.vala --pkg vala-1.0 参考になるかも
105 名前:login:Penguin mailto:sage [2010/04/25(日) 01:04:30 ID:j8R9B01z.net] ありがと。見たところ読み込みにはMappedFileを使っているみたいだから、 やっぱりMappedFileで良さそうだ。
106 名前:login:Penguin mailto:sage [2010/05/01(土) 18:58:09 ID:lTmE6Ym2.net] >102 ちょっと遅いけど。 live.gnome.org/Vala/GIOSamples こっちの方が、順次データを読み取っていく分でかいファイルを扱う時に良さげ。
107 名前:login:Penguin mailto:sage [2010/06/08(火) 02:51:18 ID:RC5oVszE.net] void main () { int[] a = { }; a += 1; a += 1; } これをCに変換すると static void _vala_array_add1 (gint** array, int* length, int* size, gint value) { if ((*length) == (*size)) { *size = (*size) ? (2 * (*size)) : 4; *array = g_renew (gint, *array, *size); } (*array)[(*length)++] = value; } static void _vala_array_add2 (gint** array, int* length, int* size, gint value) { if ((*length) == (*size)) { *size = (*size) ? (2 * (*size)) : 4; *array = g_renew (gint, *array, *size); } (*array)[(*length)++] = value; } と全く同じ関数が2つ出来るのは無駄過ぎる…。バグだよなぁ。
108 名前:login:Penguin mailto:sage [2010/06/08(火) 23:45:06 ID:RC5oVszE.net] 0.9.1 リリース記念上げ! 今年中に 1.0 のリリースもあるかな。
109 名前:login:Penguin [2010/06/22(火) 00:49:34 ID:TjdwcnPd.net] 0.9.2 リリース記念上げ!
110 名前:login:Penguin [2010/07/22(木) 10:29:41 ID:14B/bjH4.net] 遅くなったけど、 0.9.3 リリース記念上げ!
111 名前:login:Penguin [2010/08/01(日) 23:45:56 ID:9Z4W30qB.net] 0.9.4 リリース記念上げ!
112 名前:login:Penguin mailto:sage [2010/08/11(水) 09:30:49 ID:biiTT6x9.net] Valaってリファレンスカウント?
113 名前:login:Penguin [2010/08/16(月) 13:38:29 ID:+2cG0APL.net] 今までRuby/Gtk2で書いてたけど、Vala結構いいな。
114 名前:login:Penguin mailto:sage [2010/09/04(土) 09:53:44 ID:QHFWA809.net] マクロとインライン関数とインラインアセンブラを使いたいっ
115 名前:login:Penguin [2010/09/06(月) 23:38:41 ID:me8osAkX.net] 0.9.8 リリース記念上げ!
116 名前:login:Penguin mailto:sage [2010/09/06(月) 23:47:04 ID:me8osAkX.net] やっと書き込めるようになったよ…とほほ >>109 リファレンスカウントだよ。 >>111 インライン関数は、-O3でコンパイルすればコンパイラの判断で小さい関数は インラインになるから、特別必要ではないかな。 マクロは使わずにジェネリックスを使うべし。 インラインアセンブラもCの関数内に書いて、Valaにインポート(.vapi)するので いいんじゃない?
117 名前:login:Penguin mailto:sage [2010/09/08(水) 15:47:24 ID:0olPHVFE.net] >>113 Valaの言語仕様見たら、これでもうC++,C#いらないんじゃない?
118 名前:login:Penguin mailto:sage [2010/09/10(金) 00:42:35 ID:CnYQUcwL.net] >>114 いらなくなるって事はないだろうけど、C++,C#の良いとこ取りで ある事には違いない。 それに、C++はライブラリを作ってもC++からしか(直接)呼び出せないけど、 Valaでクラスライブラリを作ってもCからも使えるのが最高。
119 名前:login:Penguin mailto:sage [2010/09/10(金) 08:06:49 ID:luUlP4sj.net] 文字コードの変換がうまくできん sjis->utf8で、iconvと同じで〜とかが入ってると死ぬ
120 名前:login:Penguin mailto:sage [2010/09/11(土) 01:16:19 ID:m+SVumir.net] Valaって、C++やgtkmmの知識は必要ないの?
121 名前:login:Penguin mailto:sage [2010/09/11(土) 01:25:28 ID:80Xsc9fh.net] >>116 Valaで文字コードの変換をやった事がないんでよく分からん。 まぁ、基本UTF-8だからね… >>117 まったく必要ないよ。C#にそっくりだけど、C#を知っている必要もないし。
122 名前:login:Penguin mailto:sage [2010/09/11(土) 21:16:11 ID:bAfz4iHt.net] 全部単一のソースファイルに書いているうちはいいとして、 複数のファイルにわけたくなった場合の分割コンパイルってどうやるの?
123 名前:login:Penguin mailto:sage [2010/09/11(土) 23:23:42 ID:80Xsc9fh.net] 自分はCMake使ってるけど、それがやってる手順は ・必ず valac -C *.vala(全部のValaソース) を実行する valac は内容が同じだと *.c のタイムスタンプを更新しない それに、必ず全Valaソースを valac に掛けないと、ちゃんと*.cが出来ない ・更新された *.c をCコンパイラでコンパイルする その時にヘッダーファイルはいらないようになってる。 (使っているライブラリのはいる) ・で、出来た *.o をリンクする って感じかな。
124 名前:login:Penguin mailto:sage [2010/09/12(日) 18:31:31 ID:FtkVyF/Q.net] 速くなんのかそれ? 分割コンパイルの意味ほとんどなさそー。
125 名前:login:Penguin mailto:sage [2010/09/13(月) 21:43:56 ID:sTXZUSGC.net] -C は*.cの日付しか比較してないかな。 感覚的には、g++よりはだいぶ早いよ。 だた巨大なプロジェクトだとどうなるか分からん。
126 名前:login:Penguin mailto:sage [2010/09/14(火) 22:01:58 ID:q84SH/q/.net] 配列のソートをやるときにPosix.qsortが出てくるのがださいな。 array.sort(〜); ってやらせてほしい。最新版だとできるのかもしれないけど。
127 名前:login:Penguin mailto:sage [2010/09/14(火) 23:46:50 ID:v9kG5jgm.net] Array を使えば Posix.qsort を使わなくてもいいけど、Array 自体が ダサイんで、その辺りでもっとモダンなAPIを使いたかったら ttp://live.gnome.org/Libgee がいいよ。
128 名前:login:Penguin mailto:sage [2010/09/14(火) 23:52:59 ID:q84SH/q/.net] libgeeか。libgeeも標準でついてくればいいのに
129 名前:login:Penguin mailto:sage [2010/09/15(水) 00:29:40 ID:GF+yTf6g.net] まぁ、Vala は余計なランタイムがいらないのが売りだから、 標準でついてくる事はなさそう。 Array がもっと洗練されたインターフェースになれば必要なくなるのに。
130 名前:login:Penguin mailto:sage [2010/09/15(水) 23:28:28 ID:e37Wp/kJ.net] 盛り上がってきたな。
131 名前:login:Penguin mailto:sage [2010/09/16(木) 07:53:18 ID:aySYUnZ7.net] 日本語の情報すくなすぎわろす
132 名前:login:Penguin mailto:sage [2010/09/18(土) 01:37:41 ID:8ySMdkov.net] ちょっとしたTIPS。 printf にファイル名と行番号を一緒に表示したい時とかあっても、 Vala は __FILE__ や __LINE__ とかが使えない。そこで、 message ("hoge"); ってやれば、 ** Message: hoge.vala:15: hoge みたいに、ファイル名と行番号が表示されるよ。
133 名前:login:Penguin mailto:sage [2010/09/18(土) 02:14:47 ID:8ySMdkov.net] >>121 今一番デカい Vala 使ったプロジェクトって何か分からないけど、 Vala 自身が結構デカいんで、>>120 の速度を検証してみた。 vala-0.9.8/vala/ 以下に *.vala が145ファイルあって、全く 依存性のない valacomment.vala を日付だけ変えて make を したところ、valac に145ファイルを一気に渡してるけど、 その時間が10秒ぐらい掛かってた。(core2 duo 2.16GHz) その後のビルドは gcc なんで、g++ に比べるとかなり早い。 まぁ、ちゃんと細かくライブラリに分けて valac にあまり ファイルを渡さないようにするのが吉だな。
134 名前:login:Penguin mailto:sage [2010/09/18(土) 08:03:56 ID:ZMH1fM+O.net] >>129 Log.FILEとLog.LINEでおk
135 名前:login:Penguin mailto:sage [2010/09/18(土) 13:57:49 ID:dKwk8Vzz.net] 誰もきいてないg++との比較を唐突に持ち出して自分を慰めるスレ
136 名前:login:Penguin mailto:sage [2010/09/19(日) 00:09:32 ID:bLHejXEb.net] >>131 おぉ、それは知らなんだ。ありがとう。
137 名前:login:Penguin [2010/09/19(日) 08:12:10 ID:bLHejXEb.net] 0.10.0 リリース記念上げ!
138 名前:login:Penguin mailto:sage [2010/09/25(土) 06:12:27 ID:auRxQl39.net] >>113 の-O3でのインライン関数は、gccだと同じファイル内にstatic宣言されている 関数だけしか自動的にインラインにならなかった。 だから、インライン関数はやっぱりValaが対応してくれないと駄目だね。 場合によっては、パフォーマンスに大きく影響する所だから早めに対応して欲しいな。
139 名前:login:Penguin [2010/10/13(水) 01:01:14 ID:uqtJdPnG.net] おっと、忘れた。 0.11.0 リリース記念上げ!
140 名前:login:Penguin [2010/10/13(水) 17:24:27 ID:yOuawncH.net] Fedoraに続いてUbuntuでもF-Spotに代わってShotwellが標準に。
141 名前:login:Penguin mailto:sage [2010/10/15(金) 10:02:51 ID:vZDRagAZ.net] >>137 脱mono&.netって流れですな。 こりゃ吉報だ
142 名前:login:Penguin mailto:sage [2010/10/16(土) 13:10:02 ID:ArVLh3zF.net] >>137 おぉ、Valaが少しずつ浸透していってうれしいなぁ。 後はGTK+とWindowsの相性がもっと良くなってくれればいいんだが。
143 名前:login:Penguin [2010/10/27(水) 01:52:27 ID:uug/Y6Un.net] 0.11.1 リリース記念上げ! なぜ 0.12 じゃないのか分からん…
144 名前:login:Penguin mailto:sage [2010/10/27(水) 08:19:44 ID:zAy76E0j.net] リリースノートとか見てないけど、よほど小規模なんだろう。 それかバージョンの上げ方を変えたとか
145 名前:login:Penguin mailto:sage [2010/10/28(木) 02:52:40 ID:tk8GPYzV.net] ん? 0.10.1 リリース記念あ…いや上げない 0.11 が開発ブランチで、0.10 が安定ブランチらしい。 そんで、0.12 が 1.0 になるかもだって。
146 名前:login:Penguin [2010/11/10(水) 00:38:44 ID:ygmS3jMN.net] 0.11.2 リリース記念上げ! 基本的にバグフィックスバージョンだけど、 出力されるCのソースが綺麗になった気がする。
147 名前:login:Penguin mailto:sage [2010/11/23(火) 02:17:51 ID:McaRlFmi.net] string が単なるバイト列になったので utf-8 の日本語を1文字づつ処理する方法。 void main() { string name = "焼肉定食"; for (string utf8 = name; utf8.length > 0; utf8 = utf8.next_char()) { unichar chr = utf8.get_char(); stdout.printf("%s\n", chr.to_string()); } }
148 名前:login:Penguin mailto:sage [2010/12/05(日) 04:35:31 ID:DrFQ2hQ2.net] 今,Shotwell co してるんだけどvala ぽい
149 名前:login:Penguin mailto:sage [2010/12/05(日) 05:07:33 ID:bhyZjHqe.net] >>145 >>137 で既出なんだけど、こういうGTK+のアプリを作るにはうってつけなんだよね。
150 名前:login:Penguin mailto:sage [2010/12/05(日) 05:16:17 ID:bhyZjHqe.net] それと、>>144 は unowned を使わないと効率が悪かった。 Cに変換して g_strdup がやたら使われていたら大抵 unowned のし忘れだね。 最近 const も使えるようになったんで使ってみた。 void main() { const string name = "焼肉定食"; for (unowned string utf8 = name; utf8.length > 0; utf8 = utf8.next_char()) { unichar chr = utf8.get_char(); stdout.printf("%s\n", chr.to_string()); } }
151 名前:login:Penguin mailto:sage [2010/12/13(月) 21:33:08 ID:smRVrdmh.net] 結局吐いたCのソースを眺めてたりするよなw
152 名前:login:Penguin mailto:sage [2010/12/21(火) 01:12:22 ID:ABvoFods.net] バイナリファイルの読み書きはこんな感じかな。 namespace Binary { struct Bin { int param0; float param1; } static int main (string[] args) { var bin = Bin (); bin.param0 = 321; bin.param1 = 456.0f; try { // 書き込み FileUtils.set_contents ("data.bin", (string) (&bin), (ssize_t) sizeof (Bin)); // 読み込み var file = new MappedFile ("data.bin", false); Bin* bin_in = (Bin*) file.get_contents (); print ("%d:%.2f\n", bin_in.param0, bin_in.param1); } catch (Error e) { print ("%s\n", e.message); } return 0; } }
153 名前:login:Penguin mailto:sage [2010/12/30(木) 02:30:08 ID:TDGgyZNr.net] GLib の API は使った後に g_free しないといけないものがたくさん あるんで、メモリリークせずにちゃんと書こうとしたらスゲー大変。 (別に GLib が悪いという訳ではない) Vala は C 並の速度でありながらメモリリークを気にしなくていいんで、 それだけでもすんげー便利なんだよね。
154 名前:login:Penguin [2011/01/01(土) 00:08:35 ID:I3WGYOP1.net] あけおめ! 今年も Vala の進化が楽しみだね。
155 名前:login:Penguin [2011/01/10(月) 04:18:42 ID:DHLV8UY4.net] 0.11.3 リリース記念上げ! 新機能が追加されなくなってきたんで、1.0のリリースが近いのかも。
156 名前:login:Penguin [2011/01/16(日) 10:24:21 ID:8UPlgNHy.net] 0.11.4 が昨日出てた なんとなくだけど、しばらく停滞するんじゃないべか… という希ガス
157 名前:login:Penguin mailto:sage [2011/01/19(水) 00:53:33 ID:AHjWAb2g.net] 停滞じゃない安定だ ただ、停滞も安定もして欲しくないけどね
158 名前:login:Penguin [2011/02/01(火) 00:53:13 ID:wZrZvTv6.net] 質問だけど、*.vala を *.c にした時にインクルードされるファイルって どうやって決定されるんだ? インクルードして欲しいファイルがインクルードされずにちょっと困ってる…
159 名前:login:Penguin mailto:sage [2011/02/01(火) 12:34:11 ID:tDJ1c7gg.net] [CCode (cheader_filename = "nobita/sanno.h")]
160 名前:login:Penguin mailto:sage [2011/02/05(土) 23:27:54 ID:+01ndB4N.net] >>156 ありがとう。vapiにそれが足りないだけだった。
161 名前:login:Penguin mailto:sage [2011/02/06(日) 16:09:57 ID:f8dHhTIQ.net] my.opera.com/btiffin/blog/opencobol-vala-genie-c-livin opencobol.no-ip.org/download.html itpro.nikkeibp.co.jp/article/Watcher/20101119/354329/ www.lancard.com/diary/ jp.opencobol.org/modules/newbb/viewtopic.php?topic_id=148&forum=1&viewmode=flat&order=ASC&start=0 継続は力なり帳票は文化なりと…
162 名前:login:Penguin [2011/02/16(水) 01:18:26 ID:qQvuhHNh.net] 0.11.6 リリース記念上げ! だいぶ安定してきたなぁ
163 名前:login:Penguin mailto:sage [2011/02/16(水) 01:31:17 ID:qQvuhHNh.net] Valaのfor文をCに変換すると変な書き方になるよなぁ。例えば for (int i = 0; i < 10; ++i) { if (i == 3) { print ("test\n"); } } は gint i; i = 0; { gboolean _tmp0_; _tmp0_ = TRUE; while (TRUE) { if (!_tmp0_) { i = i + 1; } _tmp0_ = FALSE; if (!(i < 10)) { break; } if (i == 3) { g_print ("test\n"); } } } となるけど、アセンブラにするとほぼ同じになる。
164 名前:login:Penguin mailto:sage [2011/02/20(日) 19:34:08.24 ID:gtuQ5lXO.net] mail.gnome.org/archives/vala-list/2011-January/msg00173.html Monoとの比較結果が出てるけど、個人的にはValaの方が圧倒的かなと 思ってたんで、ちょっと意外だった。まあgobject自体そんなに 軽い代物じゃないから仕方ないかもしれないけど。 このレポートに対応して、g_signal関連の修正が入るみたいだし、 結果的にはよかったね。
165 名前:login:Penguin mailto:sage [2011/02/21(月) 23:51:29.57 ID:xkookBj5.net] >>161 Valaのお陰で他のオブジェクトシステムと簡単に比較出来るようになったんで GObjectの重さが露呈されてきたと思う。 やっぱりベースの部分なんで、どんどんチューニングして欲しいもんだ。
166 名前:login:Penguin mailto:sage [2011/02/28(月) 00:46:09.95 ID:pa7jLov5.net] valaを知ってから心の勃起が収まらない。 けど、シンタックスだけ同じでベースがgobjectじゃないvalaっぽい言語が欲っしいなっ。
167 名前:login:Penguin mailto:sage [2011/03/01(火) 00:21:13.12 ID:fI1dwocM.net] >>163 Dova profileってのがあるよ。 Valaだけを使って、glib、gobjectを再実装している。 それはそうと、Genericsが未完成過ぎて泣けてくる…
168 名前:login:Penguin mailto:sage [2011/03/02(水) 01:23:52.25 ID:W0TOUp0F.net] いつの間にか可変個引数使えるようになってた。
169 名前:正義の下着:コスモパンティー mailto:sage [2011/03/06(日) 10:12:39.50 ID:VJ0f/vyY.net] genieって日本語使えないの?valaをもっと簡潔表現した言語のように 感じてます。
170 名前:login:Penguin mailto:sage [2011/03/08(火) 00:55:14.96 ID:Qg/iQa8Q.net] なんか、ちゃんとsetlocaleしないと日本語が表示されなくなった… これはValaもGenieも同じ。 [indent=4] init Intl.setlocale (LocaleCategory.ALL, "") var f = new Foo () print f.bar ("世界") class Foo : Object def static bar (name : string) : string return "こんにちわ " + name
171 名前:login:Penguin mailto:sage [2011/03/08(火) 00:56:36.53 ID:Qg/iQa8Q.net] > return "こんにちわ " + name じゃなくて > return "こんにちは " + name だった…
172 名前:login:Penguin [2011/03/18(金) 09:16:24.29 ID:7nzfGrJF.net] 0.11.7 リリース記念上げ!
173 名前:login:Penguin mailto:sage [2011/03/19(土) 08:02:59.57 ID:3X5j4uKl.net] ttp://live.gnome.org/Vala/ValaForCSharpProgrammers#Not_Available で、C# にあって Vala にない機能一覧があるけど、それぞれ私見を書いてみた。 Not Available * No LINQ (not planned for 1.0, maybe later) -> 実装待ち * No operator overloading (vala-list) -> あって欲しい…。ただ、[](インデクサー)は追加出来る * No method or constructor overloading (use different method names / named constructors instead, as described above) -> 別名関数とオプショナル引数を使う事で問題無し どうしてもというなら、method overloading は GValue を使うことで可能 (mail.gnome.org/archives/vala-list/2008-July/msg00017.html ) * No extension methods -> 通常使うべきでない機能 (www.atmarkit.co.jp/fdotnet/csharp30/csharp30_05/csharp30_05_01.html ) * No constraints on generic type parameters (i.e. no where) -> あって欲しい… * No generic delegates -> 現状で使用可能 (0.9.3 で追加) * No generators (yield return, planned) -> 実装待ち * No variable length argument lists (params, planned), for C-Bindings already possible, e.g. stdout.printf(string format, ...) -> 現状で使用可能 * No conversion operators (i.e. no explicit and implicit) -> あった方がいいが、obj.to_hoge() を都度追加するようにすれば問題無し * No partial classes and methods -> 通常使うべきでない機能 (Vala のソースを自動生成するツールには必要かもしれないけど)
174 名前:login:Penguin mailto:sage [2011/03/19(土) 08:04:03.51 ID:3X5j4uKl.net] 続き * No sealed classes (planned) -> 実装待ち (無くても問題ないけど) * No static classes (use nested namespaces instead. Vala supports namespace methods, they are implicitly static) -> ネームスペースを使えば問題無し * No goto, no labeled statements -> 特に問題なし。goto はエラー処理で便利だが、例外を使えばいい * No constructor initializers -> base が使えるので問題無いはずだが… * No bounds checking for arrays (optional support planned) -> 実装待ち (これに頼らず、ちゃんと assert を仕込むべき) * No checked, unchecked, fixed, stackalloc, readonly -> checked, unchecked は特殊用途でしか不要なはず -> fixed はガベージコレクションの方法が違うので、そもそも不要 -> stackalloc は大体同じ事がより直感的に可能なので不要 -> readonly はプロパティを使えば可能だが、オーバーヘッドはデカいのであった方がいい機能 実装予定機能 * LINQ (1.0 以降) * generators * sealed classes * bounds checking for arrays 実装して欲しい機能 * operator overloading * constraints on generic type parameters
175 名前:170 mailto:sage [2011/03/21(月) 08:55:03.50 ID:qRJv0v7y.net] > -> readonly はプロパティを使えば可能だが、オーバーヘッドはデカいのであった方がいい機能 これは > -> readonly はプロパティを使えば可能 (若干オーバーヘッドが大きい) だね。間接参照が入るだけなんで、デカいという程じゃなかった。 実装予定機能 * LINQ (1.0 以降) → これは実装されるとは思えん… * generators → これもC言語の兼ね合いで難しいと思うけど、どう実装されるか楽しみ * sealed classes → これは主にライブラリ向けの機能だけど、GObject との兼ね合いで実装は無理だね * bounds checking for arrays → これも必要な所に assert を仕込めばいいけど、それを自動化してくれれば助かる 実装して欲しい機能 * operator overloading → 有用なのは行列演算だけなんだけど… * constraints on generic type parameters → これがないと Generics がかなり不便な気がするんだけど…
176 名前:login:Penguin [2011/04/05(火) 00:35:52.41 ID:7KO6Qhrh.net] 0.12.0 リリース記念上げ! >>147 を0.12.0の新機能で実装すると以下のようにシンプルに書ける。 void main() { const string name = "焼肉定食"; int index = 0; unichar c; while (name.get_next_char(ref index, out c)) { stdout.printf("%s\n", c.to_string()); } }
177 名前:login:Penguin mailto:sage [2011/06/05(日) 17:00
] [ここ壊れてます]
178 名前::28.73 ID:kbYNy4xN.net mailto: 0.12.1 リリース記念上げ! MonoもQtも先行き不安な状態だけど、ValaとGTK+はマイペースに進化してるかな。 [] [ここ壊れてます]
179 名前:login:Penguin mailto:sage [2011/06/05(日) 19:45:44.98 ID:z8MV5qJg.net] >先行き不安 kwsk Monoはモバイルの方に向かってるんだっけ?
180 名前:login:Penguin mailto:sage [2011/06/05(日) 22:26:15.15 ID:z8MV5qJg.net] java( or C#)のように書けて、Cとして出力し、GObjectの恩恵が受けられる ってのはかなり魅力あると思うんだが、普及するのはまだまだ先なのかなぁ…
181 名前:login:Penguin mailto:sage [2011/06/06(月) 01:05:26.08 ID:rgr9QUMR.net] >>175 金を出してくれてた会社から独立したからだけど。 確かにiPhoneとかの方に向かってるけど、iPhoneでMonoを使うメリット ってあるんだろうか… >>176 基本的にGLib,GTK+の世界でなきゃ、旨味が少ないんでそれの普及次第だと思う。 GTK+界隈ではそこそこ普及してると思うよ。 dconfエディタとか割と重要なソフトも使うようになったし。
182 名前:login:Penguin mailto:sage [2011/06/06(月) 01:48:22.73 ID:fOI8aekF.net] >GTK+の世界でなきゃ そうだった、あまりの便利さに視野が狭くなってた ところでValaのクラス変数(static)はJavaのそれと違って少しつまずいた 例えば下のコード class Hoge { static Hoge foo = new Hoge(); static void check_foo { assert( foo != null ); } public Hoge(){} } Hoge.check_foo() を呼び出しても Hoge.foo は初期化されていないから Hoge.init() を用意して対処するようにしたんだけど、これでいいのかな
183 名前:login:Penguin mailto:sage [2011/06/06(月) 02:02:47.47 ID:4QezmLvV.net] class Hoge { static Hoge foo = new Hoge(); public static void check_foo() { assert( foo != null ); print("foo = %p\n", foo); } public Hoge(){} } void main() { var hoge = new Hoge(); hoge.check_foo(); } これで、問題無く動いたよ => foo = 0x9c2e000
184 名前:login:Penguin mailto:sage [2011/06/06(月) 02:08:09.55 ID:4QezmLvV.net] さらに言うと、 class Hoge : Object { ってしないと、hoge.cにGObjectの代わりに自前のオブジェクト作成 コードを書き出すから、行数が多くなる。 : Object なし→259行 あり→114行
185 名前:login:Penguin mailto:sage [2011/06/06(月) 02:28:04.77 ID:fOI8aekF.net] 例えが中途半端ですまん、実はインスタンスを作らずにそのまま呼び出したいんだ X) new Hoge().check_foo() O) Hoge.check_foo() 普段は理解もせずObjectを継承するようにはしてたんだけど そういった違いがあったのか