[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/09 22:44 / Filesize : 191 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Go part2



1 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 16:23:56 ]
The Go Programming Language
ttp://golang.org/

101 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 23:22:04 ]
>>99
生産性を求めるなら2chに来てはならない。

102 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 23:34:09 ]
libgoがビルドでこける

103 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 23:54:37 ]
>>99
非生産的な議論があった

104 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 23:58:39 ]
生産性も止めるなら
要望が受け入れてもらえるかもしれない公式コミュに行けばいい
まぁ大差ないだろうけど

105 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 00:02:05 ]
>>104
カスが公式コミュで暴れて生産性が止まるってかwww

106 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 00:05:29 ]
暴れてるところを見てみたい

107 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 00:27:39 ]
goroutineで0から99まで生成した(する)値を
チャンネル経由で一つずつ読んでは出力するコードを書いたんだけど
実行すると何も出力せず単に終了してしまう
どこが悪いか教えてちょ

package main
import fmt "fmt"

func genInt(dest chan int) {
  for i := 0; i < 100; i++ { dest <- i; }
}

func foo(src chan int) {
  for {
    i := <- src;
    fmt.Printf("%d\n", i);
  }
}

func main() {
  ch := make(chan int);
  go genInt(ch);
  go foo(ch);
}

108 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 00:37:56 ]
>>107
何か出力するより先にmainの終わりに達してしまうからだろ

109 名前:デフォルトの名無しさん [2009/11/15(日) 00:46:31 ]
>func genInt(dest chan int) {

ファンキーなゲニントはデストちゃんとインドなんですか?



110 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 00:51:42 ]
goのコードを一目見てとってもなつかしい感じがした。
C++やJavaにうんざりし、LispやHaskellのほうがすごいと
思っていた自分がはずかしい。これでいいのだ。

111 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 01:02:27 ]
でも obj.foo() って書きたい...

112 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 01:05:13 ]
誰かも言ってたけど REPL が欲しい

113 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 01:10:16 ]
cygwinにインストールするには
どのようにすればよいですか?

114 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 01:19:47 ]
cygwinは、まだpatch待ち
ttp://code.google.com/p/go/issues/detail?id=107

FreeBSDは、パッチがあるようだ。
ttp://code.google.com/p/go/issues/detail?id=166

115 名前:107 mailto:sage [2009/11/15(日) 01:29:52 ]
>>108
サンクス。mainの最後にSleep置いたら99まで出力してくれた

116 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 01:32:42 ]
fooのgo外すだけでいいんじゃない?
空のforは無限ループかな。fallthroughといいエッチな機能満載だな

117 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 01:47:16 ]
>>113-114
javascriptとか
javaappletで
web上で試せる環境
誰か作らないかな

118 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 01:51:36 ]
はやくHMDとかコンタクトレンズ型ディスプレイが普及して
ディバイスの小型化が進んでほしい

119 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 02:21:55 ]
AndLinux って初めて聞いた。coLinux を使ってるのか。
こういう時に Windows しか無い人は色々と大変だな。



120 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 02:23:30 ]
どんなOSでもVM上でさっと動かせる時代に何を言ってるんだ

121 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 02:30:48 ]
>>120
イチイチ仮想環境を用意するのマンドクセって事じゃないの。
手順がどうとかじゃなくて、普通は余計な事はしたくないもんでしょ。
俺は Mac ユーザだから、こういうマイナー言語は何もしなくても
サポートリストに入ってる事が殆どだけどね。

122 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 02:37:37 ]
>>116
  go genInt(ch);
  // go foo(ch);
  foo(ch);

にしてコンパイルして実行したところ出力が

[...]
98
99
throw: all goroutines are asleep - deadlock!

panic PC=0xbfc01ebc
throw+0x46 /home/name/go/src/pkg/runtime/runtime.c:74
[...]


どうやってgoroutineの終了を待てばいいんだろ
うまいパターンがあるのかwaitやjoin相当の機能でもあるのか

123 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 02:55:25 ]
>>122
コンパイルしてないけどたぶんこんな感じじゃね

func genInt() <-chan int {
  ch := make(chan int);
  go func {
    for i := 0; i < 100; i++ { ch <- i; }
    close(ch);
  }();
  return ch;
}

func foo(src <-chan int) {
  for !closed(src) {
    i := <-src;
    fmt.Printf("%d\n", i);
  }
}

func main() {
  foo(genInt());
}

124 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 02:56:21 ]
>>122
そりゃdeadlockするよ、fooのループで来ないメッセージを待ち続けてるんだから
チャネルの送信側は送信が終わったらclose(c)、受信側は<-の前にclosed(c)でチェックとかするんじゃないのかな

wait, join相当のものはそれこそチャネルで実現出来るよね

125 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 03:01:41 ]
>>123
[main] ch <- 99;
[sub] closed(src);
[main] close(ch);
[sub] <-src;

こういう順番で実行されるとデッドロックするな。
goroutineがファイバーで実装されてるなら起こらないが、スレッドだとこうなる可能性がある。
ファイバーだとしてもチャネルの読み書き以外でコンテキストスイッチが起きると怖いが

126 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 03:15:18 ]
手元に何もないから試せないけど
ch <- ... ってデフォでブロックするんじゃなかったっけ?
確かmakeの第二引数に1以上を指定すると非同期になるとか仕様書に書いてあったような
標準ライブラリではイテレータとしてチャネルを>>123っぽく使ってた気がするから多分大丈夫かと

127 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 03:29:37 ]
そりゃ、closedをチェックしてからrecvするまでに割り込まれたり、
最後の要素をsendしてからcloseするまでに割り込まれたりすると
やっかいなことが起きるわな。

128 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 03:48:11 ]
既にcloseされたチャネルを読むのは合法なの?

129 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 07:05:38 ]
>>121
Windowsでも簡単に試せる環境用意しようか?



130 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 07:20:15 ]
おながいしまつ

131 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 07:32:06 ]
返り値を複数返せない言語は糞だ

132 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 08:30:57 ]
プログラミング言語 Go ドキュメント
go.shibu.jp/



133 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 08:46:50 ]
deadlock検出すると例外出すのか
かっけーな

134 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 10:22:32 ]
言語の歴史

------------------------
Fortran
Lisp
C
C++
Perl
Prolog
COBOL
Java
Python
Ruby
JavaScript
C#
PHP
Scheme

Haskel
Erlang
Ocaml
F#

Clojure
Scala
Noop
Go

最近は関数型言語が注目されて、
いままであった関数型言語と
新しい言語をつくってしまえっていう流れがあるな

135 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 10:32:49 ]
関数型言語の機能、概念を
手続き型、オブジェクト指向に取り入れだしている。

純粋な関数型言語は人間の思考にあわない。
人間の思考は手続き的。

136 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 10:56:34 ]
プログラマーが新しい言語・技術を待ちわびてる

古い言語で業界や職場をしきっているやつらをだしぬいて、体制や地位をひっくりかえせるからな

プログラマーの世界は技術次第だから、いつまでも古い技術にしがみついている上司を見限って
一旗あげようという気心がうずまいてる
逆に一定に地位についているやつらはその言語を使い続けるしかない。そこは強みであるが、逆に弱みでもある

137 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 11:07:19 ]
99%のレスがマ板かN速で事足りるな
無内容なのになぜか上から目線w

138 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 11:10:20 ]
VIPで流行の兆しがあるな

139 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 11:18:24 ]
>>137
ありえないくらい読解力がないなw



140 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 11:28:21 ]
なるほどclose, closed あたりを使うのか
チュートリアル以外のコードも読も

あと>>123を試してみた。コンパイルは

// go func {
go func() {

にするだけで通った。実行結果は

$ ./8.out
0
1
[...]
98
99
0 # ママ
$

0 ってなんだろ
genint の closed0 の返り値が 0 で、それを foo が受信して出力してるとしても
>>123からはそうなるようには読めない・・・

141 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 11:28:54 ]
並列処理が遅いのですが

142 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 11:34:58 ]
並列処理指向で作られた言語って遅いのばっかだよな
Erlangも遅いんじゃなかったか。Scalaくらいだな。

143 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 11:37:42 ]
Scalaはめっちゃ速い
Goは糞すぎるScalaの半分も出ない

フィボナッチ数列計算するのにErlangよりやや速いぐらいだぞw





144 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 11:40:23 ]
フィボナッチ数列を生成するgeneratorをgoで書いてみてください

145 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 11:51:58 ]
>>143
Cの10%〜20%遅いくらいなら
流石にそれはないんじゃね?

146 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 12:40:16 ]
>>145
遅いからやってみてよw

147 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 12:42:36 ]
比較に使ったコード貼って

148 名前:123 mailto:sage [2009/11/15(日) 13:15:29 ]
>>140
サンクス。

たぶん>125の問題かもしれん。
close済みのchan intを読んだら0が帰ってくるんだろう

149 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 13:35:33 ]
golang.org/doc/go_spec.html#Channel_types
golang.org/doc/go_spec.html#Close_and_closed
golang.org/doc/go_spec.html#For_statements
読んだ?



150 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 13:46:41 ]
C (4) の置き換えを狙ったから、go (5) って、つけたの?

151 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 13:56:06 ]
>>149
ありがとう。いま読んだ。
でも、chanから帰ってくる最後の0がsendされた値なのかそうでないかを判別する方法がわからない

152 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 14:04:29 ]
そのためのclosed

153 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 14:26:33 ]
>>152
closedを見たときにはまだ閉じられてないけど、
その直後にreceiveしたときには既に閉じられているということが起こりうるんだよ。

154 名前:デフォルトの名無しさん [2009/11/15(日) 14:30:22 ]
>>150
前スレで外出

155 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 14:34:34 ]
受信した後にさらにclosedを見ればいいんじゃね

156 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 15:00:16 ]
>>153
というよりreceiveしないとclosedかどうかわからんということだろう。
feof()と同じ感じじゃないかな。

Close and closed

For a channel c, the predefined function close(c) marks the channel as
unable to accept more values through a send operation. After any
previously sent values have been received, receive operations will
return the zero value for the channel's type. After at least one such
zero value has been received, closed(c) returns true.

157 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 15:09:16 ]
>>156
ああ、それそういう意味なのか。ちょっと誤読してた

x, ok := <-ch;
とすれば読めたかどうかがブーリアンでとれるみたいだが、
non-blockingになってしまってなんの意味もない

158 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 19:27:50 ]
Windows用コンパイラのバイナリ提供は明日ですか?

159 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 20:29:23 ]
コンパイラを移植するのは楽だろうな。
ライブラリの対応がめんどうなだけで



160 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 21:20:58 ]
他パッケージのクラスにかってにメソッド追加とかはできないのか

161 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 21:44:10 ]
>>160
出来ない
そもそもクラスはない

162 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 21:46:22 ]
とするとOOPはどうやるつもりなんだろう…

163 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 21:51:36 ]
こんなのどうだろ

import "fmt"

type R struct {
  value int ;
  eos bool;
}

func genInt(start int, stop int, dest chan R) {
  for i := start; i < stop; i++ {
    dest <- R{i, false};
  }
  dest <- R{0, true};
}

func main() {
  ch := make(chan R);
  go genInt(1, 20, ch);
  for r := <- ch; !r.eos; r = <- ch {
    fmt.Printf("%d\n", r.value);
  }
}

164 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 21:55:52 ]
字面に慣れたら生産性上がりそう?

165 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 22:02:49 ]
OOP的な仕組みはあるけど用語がわからん

166 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 22:04:23 ]
ファイル分割するときはどうするの?
package hoge
とかして、使いたいところで
import "hoge"
ってやればいいだけ?

167 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 22:06:38 ]
>>163
そのコード、OOP関係ない。
従来からあるただのCの手続きコードと同じ。

168 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 22:10:18 ]
>>162
実装を継承することは出来ない
インターフェイスは共有できる

169 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 22:15:21 ]
>>167
ごめん端折りすぎた

>>163は上でやってたGoroutineの終了を
チャンネルの向こうにいる受信側にどう通知するかって話



170 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 22:20:17 ]
>>168
実装の継承、出来ますよ
kwskは仕様書のSelectorの項目に書いてあったはず

型情報の継承は出来ませんが、
かわりにinterfaceを使えばいいことなので、OOPに求められる要素は全て揃っていると思われます

171 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 22:24:30 ]
昨日うpしたOOPの機能を使った例:
seiga.nicovideo.jp/bbs/sg351/1-

もしよかったらみんなのデスクトップも見せてね!

172 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 22:27:11 ]
>>169
OOPなのができるとは、計算終了の通知をどうするかじゃなくて、その場合は相互のmessagingを言語としてはどう表現するかですよ。
計算終了ならなにも並列じゃなくwaitでいいわけでして。
OOPは並列計算とかlisp的な考え方とはまったく関係ないんでこの際OOP概念を勉強してみてはどうですか。

173 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 22:28:17 ]
Kenがついにスペルミス直したぞ
hg log -r3956 -p


174 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 22:39:46 ]
>>163
closed()かrangeを使えばいいんでわ

import "fmt"

func genInt(start int, stop int) chan int {
  c := make(chan int);
  go func() {
    for i := start; i < stop; i++ {
      c <- i;
    }
    close(c);
  }();
  return c;
}

func main() {
  c := genInt(1, 20);
  for {
    i := <-c;
    if closed(c) {
      break;
    }
    fmt.Printf("%d\n", i);
  }
  // もしくわ
  for i := range genInt(1, 20) {
    fmt.Printf("%d\n", i);
  }
}

175 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 22:51:11 ]
>>170
これ?
golang.org/doc/go_spec.html#Selectors

176 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 22:56:45 ]
>>174
ああそうか、>>123のように

1. closedか確認する
2. 1でclosedでなければチャンネルから読む

だと、1と2の間にclosedされた場合に問題が起きるけど、

1. ひとつ読む
2. closedか確認して閉じてたらもうrecvせずに抜ける

ならclosedされたチャンネルから0を読み込むようなことが起こらないわけだ
>>124,125他で指摘されてたことがようやく飲み込めた。どうもありがとう

177 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 23:04:39 ]
OOPすら関係ねーじゃん。
おまえが構造化プログラムを一度も書いたことも無いってのが露見しただけw

178 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 23:15:50 ]
>>177
>>163>>162氏へのレスになっていると勘違いされているのでは?
>>176氏の文脈は>>107から続いているもので、OOPの話題とは関係ないように見えますが(参照:>>169)

179 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 23:16:06 ]
OO=クラスだと思ってるアホが暴れてますね



180 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 23:18:28 ]
>>176
goを使うには修行が足らん
まずはCからやれ

181 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 23:40:27 ]
ニコ動久しぶりに見たけど見るまでの手続き色々面倒なのに変わってるね

182 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 23:51:10 ]
ごめん。>>111 は普通に出来た。

183 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 23:59:19 ]
GC とクロージャがあって、 OOP が出来て、ネイティブコンパイルできて
コンパイル速度が暴速の C だと思えば割と良いもんじゃん。

184 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 00:05:00 ]
並列処理が遅くて看板に偽り大有りです
食品なら食品偽装レベル
電化製品なら製造物責任法で書類送検レベルの大問題です

185 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 00:08:49 ]
なんで for each にしなかったんだろう

186 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 00:09:06 ]
cythonよりpsycoの方が速いんか

187 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 00:57:50 ]
クラスが無いからC++系ライブラリをそのまま流用出来ないんですけど

188 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 01:15:23 ]
逆に考えるんだ。クラスが無いから恥ずかしくない。
クラスがあるのに流用出来なかったら最悪だろ。

189 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 01:19:25 ]
斬新な発想の転換だな。



190 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 04:09:22 ]
やっぱ派生クラス100個あったらswitch文とかで100個 new class CXXX(); とかしないとダメなのかな。
簡単に言うとコンストラクタをオーバーライドしたい。

191 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 06:42:02 ]
MacOSX で試してるんだが、UniversalBinaryは吐けないのかな?

192 名前:デフォルトの名無しさん [2009/11/16(月) 07:48:37 ]
「Emacsは馬鹿避けのためにある」ってホント名言だったなw



193 名前:デフォルトの名無しさん [2009/11/16(月) 07:54:49 ]
隔離ソフトwww

194 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 10:26:52 ]
visualstudio系はともかくなぜかeclipseと自己同一化してるヤツはなんかひどいの多いな
「車に乗ると性格が変わるヤツ」というか、IDEのパワーと自分のパワーをごっちゃにして威張るw
「新言語を評価する」の類のイレギュラーな事象に対応可能にしておくためにIDE依存度をあまり上げすぎないようにするくらいの知見もなく、
IDEのオペレーション自体は「技術」の範疇じゃなくて、入れれば誰でも使えるアプリの一つでしかないのに


195 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 11:14:09 ]
>>191
たぶんGoogle内部的にPPC(笑)だと思われ
10.6的な意味で

でもそれとは別にGoがPPC環境でどれくらいの早さで動くかは興味ある
バックエンドgccのgccgoならその筋の人がいろいろいじればなんとかなりそうだったり?

196 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 13:19:00 ]
週末暴れてた人はアク禁喰らったのか?

197 名前:デフォルトの名無しさん [2009/11/16(月) 13:25:29 ]
visualstudioとeclipseを区別す理由がいまいち不明だな

198 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 14:52:17 ]
>>194
セルシオとかポルシェとか運転したことあってそういうこといってるの?
おれは幾人かの友達が持ってるから運転させてもらったことあるけど。
それと同じで、君は偉そうなことをいっちょまえにいうけどそれぞれのIDEを使いこなせるようになってるわけでもないでしょ。

199 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 15:08:38 ]
自分のクルマじゃないトコがかわいくてワロタw




200 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 15:17:39 ]
いいね

package main
import "fmt"

func main() {
a := 1;
f := func() int { return a };
fmt.Println( f() );
a = 2;
fmt.Println( f() );
}


201 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 15:50:44 ]
>>200
最近の言語なら普通じゃない?






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<191KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef