プログラミング言語 Scala 8冊目
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
2012/04/21(土) 22:14:38.18ttp://www.scala-lang.org/
日本Scalaユーザーズグループ
ttp://jp.scala-users.org/
■前スレ
プログラミング言語 Scala 7冊目
ttp://toro.2ch.net/test/read.cgi/tech/1315134454/
■Scalaの紹介文(さわり)
Scalaは簡潔かつ優雅で型安全な方法でよくあるプログラミングパターンを表現できるように
設計された汎用プログラミング言語です。
Scalaはオブジェクト指向と関数型言語の特徴をスムーズに統合しておりJavaやその他の言語を扱う
プログラマをより生産的にすることができます。(以下略)
ttp://www.scala-lang.org/node/25
■Scalaに関する書籍(英語)
ttp://www.scala-lang.org/node/959
リファレンスマニュアルや草稿のPDFなども充実しているのでそちらも参照してください。
日本語の資料には、チュートリアルの訳やIBM dW、IT Pro, @ITの連載記事、各々で開かれた勉強会の資料などがあります。
0002デフォルトの名無しさん
2012/04/22(日) 15:18:47.79乙
0003デフォルトの名無しさん
2012/04/24(火) 06:48:39.080004デフォルトの名無しさん
2012/04/24(火) 23:33:26.10Scala REPL を楽しみ始めました。
なんとか UTF-8 で漢字も使えるし、上矢印キーで前回入力時の
文字列を再度使ったり、TABキーでメソッド補間もできる(jlineが
動いている)ようになりました。
ただ、前回入力時の文字列を再表示させてカーソルキーで修正しようと
するときに全角文字の位置ではカーソル位置が半角文字のように動作し
ます。これは、java の jlineが日本語に完全対応でないこととして
あきらめるべきなんでしょうか。
scala REPL 起動時は、
$ scala
Welcome to Scala version 2.9.2 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_03).
Type in expressions to have them evaluated.
Type :help for more information.
と表示されます。
0005デフォルトの名無しさん
2012/04/24(火) 23:46:17.92rlwrap
http://hitai.blog72.fc2.com/blog-entry-78.html
cygwin?
http://sites.google.com/site/genyamaguchi0/scala-1
諦めてvmplayer&lubuntuとか
0006デフォルトの名無しさん
2012/04/26(木) 06:10:35.39ありがとうございます。rlwrap を使う前に jline をoffにする方法が
私には難しそうです。-Xnojline で :silent と同じ状態になりエコー
バックしないのです。
また、jline も別途バージョンアップ継続中(jline2)らしいので、
今後に期待し、現状のままで使ってみます。
Cygwin 上の scala REPL で UTF-8 が使えてるので、scala REPL 内で
"ls"等を呼び出して Windows7 のファイルを簡単に処理できそうです。
Windows7 の日本語ファイル名は UTF-8 ですから。
0007デフォルトの名無しさん
2012/04/26(木) 06:16:43.55出てもいます(カーソル位置が半角判断になるだけで)。
scala> val 歌 = "咲いた咲いたチューリップの"
歌: java.lang.String = 咲いた咲いたチューリップの
scala> 歌.
+ asInstanceOf charAt
codePointAt codePointBefore codePointCount
compareTo compareToIgnoreCase concat
contains contentEquals endsWith
equalsIgnoreCase getBytes getChars
indexOf intern isEmpty
isInstanceOf lastIndexOf length
matches offsetByCodePoints regionMatches
replace replaceAll replaceFirst
split startsWith subSequence
substring toCharArray toLowerCase
toString toUpperCase trim
scala> 歌.matches(".*チューリップ.*")
res2: Boolean = true
0008デフォルトの名無しさん
2012/04/27(金) 23:18:02.55普通にWindows上でやるのと比べてどういうメリットがあるのだろう?
あと VirtualBoxとかでLinux立ち上げて、そこでScalaやるのじゃだめなの?
0009デフォルトの名無しさん
2012/04/28(土) 00:41:56.200010デフォルトの名無しさん
2012/04/28(土) 10:51:00.996 です。
VMPlayerでLinuxも使ってます。けど、エクセル等のMS-Officeでの作業をし
なきゃならない時に、CSVファイルにして、さくっと Cygwin で Linux 的に
終わらせる、のが第1の目的です。日本語ファイル名で苦労するのは嫌なの
です。Scala だとXMLファイルの処理が簡単にできそうで楽しみです。
Windowsアプリ間のファイル形式変換ツールが簡単に作れそう。
0011デフォルトの名無しさん
2012/04/28(土) 15:47:00.83普段Cygwinを使ってるからそれに加えてちょっとしたスクリプトにScalaも使ってる。
Scala単体で使うなら別にCygwinはなくてもいいし、Eclipseたちあげて大物書くときも
Cygwinなくてもなんとかなる。
メリットっていってもgrepやsedと組み合わせられるとか/dev/や/procで
Windowsのクリップボードやプロセスと連携できるくらいかな。
0012デフォルトの名無しさん
2012/04/28(土) 16:51:12.520013デフォルトの名無しさん
2012/04/28(土) 23:43:11.480014デフォルトの名無しさん
2012/04/29(日) 21:45:31.85単純に、Windowsでは、コマンドラインが使いづらいってだけだったら、nyaosで十分解決するよね。
だけど、Cygwin使う人は、やっぱり、それなりのUnix環境がほしい人なんだろうかな、って思って。
ただ、数年前と比べると最近はCygwinを使っている人は減ったみたいで、
仮想環境にLinux入れてやるって人が最近増えてきているみたい。
0015デフォルトの名無しさん
2012/04/30(月) 08:48:50.33同じ意見です。Scala REPL なら Cygwin, コンパイル後実行なら仮想環境
かなぁ。それに、Scala REPL を高機能関数電卓としても使ってます。
仮想環境の場合、ゲストである仮想環境内とホストのWindowsの間の
ファイルのやり取りがめんどくさい。
0016デフォルトの名無しさん
2012/04/30(月) 09:34:32.93最近のUbuntuはUser level file systemのGVFSが最初から動いてるから、
Nautilusからネットワークを表示>対象のフォルダを選択しただけで、$HOME/.gvfs下にマウントされるし
デプロイとかの仕組みが不要な場合はこれで事足りる。
0017デフォルトの名無しさん
2012/05/01(火) 12:56:05.76super class の default でない constructor を呼び出すのはどうしたらいいですか?
Y の this(a: Int, b:Int) を定義したいです。
class X (val i: Int) {
def this(a: Int, b: Int) = this(a * b + 10)
}
class Y (override val i: Int) extends X(i) {
def this(a: Int, b: Int) = super(a, b) // コンパイルエラー
}
println(new Y(2, 3).i) // 16 になるようにしたい
0018デフォルトの名無しさん
2012/05/01(火) 13:54:41.10疑問だけど(設計が悪いんじゃないかしらということ)
計算自体を分離するなりすれば良いだけじゃないの?
object X {
def calc(a: Int, b: Int) = a * b + 10
}
class X (val i: Int) {
import X.calc
def this(a: Int, b: Int) = this(X.calc(a, b))
}
class Y (override val i: Int) extends X(i) {
import X.calc
def this(a: Int, b: Int) = this(X.calc(a, b))
}
0019デフォルトの名無しさん
2012/05/01(火) 14:21:26.61val i = a * b + 10
}
class Y(a: Int, b: Int) extends X(a, b)
scala> new Y(2, 3).i
res0: Int = 16
0020デフォルトの名無しさん
2012/05/01(火) 14:34:54.01ありがとう。
実際には scala 標準ライブラリのクラス (具体的には scala.collection.mutable.BitSet) に機能を追加したい。
protected なメンバにアクセスする必要があるので継承して子クラスを作るといいのかな、と。で、親クラスに 3 つあるコンストラクタを子クラスでもそのまま使いたいというシチュエーションです。
と思ったんだけど、 trait 作って new BitSet() with TraitA みたいにするのがいいのかな?その場合 companion object (BitSet) によるインスタンス生成時に trait くっつけることできないですよね。。
0021デフォルトの名無しさん
2012/05/01(火) 14:44:34.04「Pimp my Library」パターンというものがあります。
つづきはWebで
0022デフォルトの名無しさん
2012/05/01(火) 14:50:42.82へぇー
0023デフォルトの名無しさん
2012/05/01(火) 14:58:28.65ググル先生に聞いて来ました。 RichInt とかのあれだったんですね。
Pimp my Library pattern, protected なメンバにアクセスできる?
0024デフォルトの名無しさん
2012/05/01(火) 17:57:57.08case class X(x: Int)の実体X(1)は、参照数が0になってもGCが走るまでの間
は存続していると考えていいのでしょうか?
既にどこからも参照されていないX(1)を再び生成しようとした際、GCに消され
ていなければ実体生成コストを省けるのか?という点が知りたいです。
想定している状況は、自己再帰関数内で case class X への map を行うけど、
条件にmatchしなければ作ったX(_)を捨てて、次の再帰関数呼出時にまた作り
直すといったもので、キャッシュされていると嬉しいなと思ったのです。
(そもそも小さいインスタンスを大量生成してもコストは軽微だという話はど
こかで読んだ気がしますが。)
0025デフォルトの名無しさん
2012/05/02(水) 23:13:38.590026デフォルトの名無しさん
2012/05/02(水) 23:40:44.49実体はGCが走るまで存続してるけど、再利用はされないよ。
そういうしくみはないし、たとえあってもペイしない。
0027デフォルトの名無しさん
2012/05/03(木) 00:33:08.36Javaのプリミティブラッパーはキャッシュしてるし
登場頻度や生成量やGC/エスケープ解析の具合いによってはペイしないとも言い切れない
0028デフォルトの名無しさん
2012/05/03(木) 10:01:37.910029デフォルトの名無しさん
2012/05/03(木) 11:51:53.660030デフォルトの名無しさん
2012/05/03(木) 11:54:02.910031デフォルトの名無しさん
2012/05/03(木) 12:01:39.77欲しいです!でもお金ないです!
0032デフォルトの名無しさん
2012/05/03(木) 12:04:04.370033デフォルトの名無しさん
2012/05/03(木) 18:58:40.79scala> List(1,2,3)
res1: List[Int] = List(1, 2, 3)
scala> .length
res2: Int = 3
地味に便利かも
0034デフォルトの名無しさん
2012/05/05(土) 09:51:39.68あと、Cygwin のメリットとしては
A. Windows から直接 Cygwin 内の emacs が使える。Windows の
NotePad や WordPad は嫌だから。ファイル指定に cygpath コマンド使うのがコツ。
B. 仮想環境じゃないから Cygwin で作った OpenGL のプログラムが
高速表示可能。Scala だと、JOGL を Scala から使えるはず。
REPL から JOGL とかインタラクティブで面白そうだけど試したことない。
まあ、人それぞれかと。
0035デフォルトの名無しさん
2012/05/05(土) 12:34:33.260036デフォルトの名無しさん
2012/05/05(土) 23:49:03.24LWJGL は Nightly builds の lwjgl-2.8.4 なら Scala + 64bit JVM で
正常に動作した。Windows Professional 64bit だと 32bit JVM でも
2.8.3 は動作しなかった。情報ありがとう。lwjgl_test.jar のインベー
ダーゲームに感動したw (Java or Scala でもスピード出るね)
0037デフォルトの名無しさん
2012/05/06(日) 00:27:45.110038デフォルトの名無しさん
2012/05/06(日) 12:13:07.02さんきゅーNicol (洞窟物語まだクリアしてないや
0039デフォルトの名無しさん
2012/05/12(土) 14:45:32.08ないって状態になる時がある.
windows 64bit + cygwin(mintty) + scala 2.9.2
0040デフォルトの名無しさん
2012/05/12(土) 14:53:42.580041デフォルトの名無しさん
2012/05/13(日) 20:51:45.50何か新しい話はある?
0042デフォルトの名無しさん
2012/05/13(日) 22:05:59.15>>39
たぶん、scala コマンドの -echo が効いたままになってしまうから
だと思います。Scala の scala コマンドは単なるシェルなので、
内容を読むことができます。
読むとCygwin は特別待遇であることがわかります。
環境が Cygwin だと認識すると, cygpath を利用したかなり
丁寧な対応を行ってます。その中の
stty -i canon -min 1 -echo
が原因かと。REPLではこうしないと端末のコールバックと重なる。
私は Cygwin + TeraTerm ですが、残りの環境はたぶん同じです。
0043デフォルトの名無しさん
2012/05/13(日) 22:15:41.51新しい話ではないかもですが、
この週末 scala-2.9.2 での UTF-8 におけるカーソル動作を
調べてました。自分用程度なら、jlineのコード修正で UTF-8 へ
の対応(全角文字でのカーソル移動正常化)はできそう。
jline(jline2がscala-2.9.2には使われてます)の UTF-8 への
完全対応は、Jruby,Jython,Scala とどの REPL でも必要とされ
てるようで、既に取り掛かっていると思われます。
サロゲート(Javaのみ)と文字幅(Unicode共通)が課題です。
既に xterm や emacs は解決してるので、できる方ならそれらを
参考にすればすぐかも。
近いうちに、JVM + UTF-8 での REPL が各国で普通になると推測。
0044デフォルトの名無しさん
2012/05/13(日) 22:24:01.47ちなみに、emacs shell内なら(emacs term ではない)
現時点でも Scala REPL は UTF-8 を正しく操作できます。
環境変数 TERM が異なるため jline を使わないから。
ただ、jlineを使っていないので、TAB補間や矢印での履歴
再表示は不可能。
0045デフォルトの名無しさん
2012/05/13(日) 22:53:14.98今になって気づきましたが、Cygwin 内の emacs のかな漢変換は
Windowsの機能をそのまま使います。つまり Ctrl-\ で Windows
のかな漢変換機能と辞書が使えるわけです。最初気付かず、いつ
もは自分で登録する特殊な人名があっさり変換されるので不思議に
思ってましたw まあ、これも Cygwin の利点かと。
004641
2012/05/14(月) 21:55:25.93ここにきてえらい地味〜な話をもってきたね(笑)
半年ぶり(?)くらいで使ったら、ぜんぜん覚えてなくて一苦労だった。
ところで、コマンドラインで、
scala> Double.[TAB]
とかやって、出てくるメソッドに使えないものが入ってるんだけど何でだっけ?
java.lang.Doubleのメソッドとごっちゃになってるの?
0048デフォルトの名無しさん
2012/05/14(月) 23:04:20.57ネイティブコンパイラって、ソースコードがScalaで書かれてる
コンパイラって意味?
javaコマンド(JVM)を使わずにclassファイルを作るコンパイラ
の意味??
OSでのネイティブコードを吐くコンパイラの意味???
0049デフォルトの名無しさん
2012/05/14(月) 23:11:05.15今、Jline2に力を入れてるのは readline に Jline2 を使ってる
Jruby のメンバーらしい。Scala は REPL の部分のみに Jline2 を
使うだけなので Jline2 の進歩を待つ方がいいかも。
0050デフォルトの名無しさん
2012/05/15(火) 07:24:07.44の候補の話なのですが、たとえば
Double.longBitsToDouble(Long)
のことです。
scalaのドキュメントみても、そんなメソッドないし
java.lang.Double.(...)
で使うのが正しいのでしょうか?
0051デフォルトの名無しさん
2012/05/15(火) 07:26:12.28うーん、本当に速いならどっちでもいいけどJVMは欲しいかな。
いま現状で最も速いのはfscなんですか?
0052デフォルトの名無しさん
2012/05/15(火) 19:13:59.950053デフォルトの名無しさん
2012/05/15(火) 20:42:21.04toString()がNode,Leaf全部辿って文字列返してくれようとしてて
heap食い尽くしてた、よくばりさんめ
0054デフォルトの名無しさん
2012/05/15(火) 23:39:29.98スクリプト言語でもよくネイティブコンパイルっていう人がいるが
ネイティブかどうかそれ自体は基本的に速度に影響ないぞ。
0055デフォルトの名無しさん
2012/05/16(水) 08:02:32.680056デフォルトの名無しさん
2012/05/16(水) 09:41:56.45子音で終わればerを付けるだけですが、aで終わるからそうは行きません。
Scalalianという提案も見かけましたが、
AustralianはAustra人ではなくAustralia人です。
そこでaで終わる国の人を何と言うのか調べてみました。
America → American (アメリカ人)
Australia → Australian (オーストラリア人)
Cuba → Cuban (キューバ人)
Guatemala → Guatemalan (グアテマラ人)
Scalaを使う人はScalanと呼ぶ事にしませんか?
0057デフォルトの名無しさん
2012/05/16(水) 10:32:15.61カルト教団御用達(あいつらどうなったんだろ?
0058デフォルトの名無しさん
2012/05/16(水) 19:32:35.53Mohicanでいいよ
0059デフォルトの名無しさん
2012/05/16(水) 19:42:37.80とりあえず「自分用」としては、全角カーソル問題は
jline2 の修正で解決できました。
入出力とも UTF-8 限定ですが、
A) ノートパソコン
Windows 7 Professional (64bit) +
CygwinCYGWIN_NT-6.1-WOW64 1.7.1 + Tera Term 4.72
B) 同じノートパソコンから SSH で遠隔ログイン
UBUNTU(Linux 2.6.16-76.55vl4) + Tera Term 4.72
A),B) とも修正前の jline.jar では全角文字が
半角単位で重なったりカーソル位置と文字位置が
一致しなかったりしていました。
修正後の jline.jar では今のところ正常。
日本語が REPL でストレスなく使えるのでかなり嬉しい。
ただ、やっつけの修正でしかないので、詳しい方が多そうな
ところで報告してみます
(既に正式な修正や予定があるよ、とかの情報がありそう)。
0060デフォルトの名無しさん
2012/05/17(木) 22:51:40.510061デフォルトの名無しさん
2012/05/18(金) 03:04:57.14list.sorted == list
0062デフォルトの名無しさん
2012/05/18(金) 05:50:56.67@scala.annotation.tailrec
def presorted[T: Ordering](xs: List[T]): Boolean = xs match {
case Nil => true
case x :: Nil => true
case x :: y :: ys => implicitly[Ordering[T]].lt(x, y) && presorted(y :: ys)
}
短いのは誰かまかせた
0063デフォルトの名無しさん
2012/05/18(金) 10:05:34.25res1: Boolean = true
scala> List(1,2,3,3,2).sliding(2).find(x => x(1) < x(0)).isDefined.unary_!
res2: Boolean = false
0064デフォルトの名無しさん
2012/05/18(金) 10:24:50.24scala> List[Int]().sliding(2).filter(_.length > 1).find(x => x(1) < x(0)).isDefined.unary_!
res3: Boolean = true
scala> List[Int](1).sliding(2).filter(_.length > 1).find(x => x(1) < x(0)).isDefined.unary_!
res4: Boolean = true
scala> List[Int](1,2,3).sliding(2).filter(_.length > 1).find(x => x(1) < x(0)).isDefined.unary_!
res5: Boolean = true
scala> List[Int](1,2,3,3).sliding(2).filter(_.length > 1).find(x => x(1) < x(0)).isDefined.unary_!
res6: Boolean = true
scala> List[Int](1,2,3,2,3).sliding(2).filter(_.length > 1).find(x => x(1) < x(0)).isDefined.unary_!
res7: Boolean = false
0065デフォルトの名無しさん
2012/05/18(金) 10:50:17.95def presorted[T: Ordering](xs: Seq[T]): Boolean =
!xs.sliding(2).filter(_.length > 1).find(x => implicitly[Ordering[T]].lt(x(1), x(0))).isDefined
0066デフォルトの名無しさん
2012/05/18(金) 11:09:16.33返答サンクス.できなくはないんだけどぱっとできなくない?
0067デフォルトの名無しさん
2012/05/18(金) 11:32:00.49エスパー回答すると、>>65の解法は全ての要素を辿るわけではなくて、
大小関係を満たしていない組が見つかったらそこで計算を打ち切るから
速度面での心配はない。
slidingはIteratorを返すのだけどIteratorについての理解はもちろん済ませての質問ですよね。
0068デフォルトの名無しさん
2012/05/18(金) 13:33:42.86つまり…並列処理コレクションで高速に問題が解けないかということを問うているんだよ!
ΩΩΩ<な、なんだってー!!
0069デフォルトの名無しさん
2012/05/18(金) 13:48:07.64http://live.nicovideo.jp/watch/lv93012184
Finagleハッカソン〜Twitterを支える基盤技術をみんなでハッキングする会〜第二部 - ニコニコ生放送
http://live.nicovideo.jp/watch/lv93393157
なにこれ、ちゃんと見て楽しいものになるの?
まさかプログラミングしてる風景を垂れ流すだけじゃないよね…?
0070デフォルトの名無しさん
2012/05/18(金) 14:33:34.550071デフォルトの名無しさん
2012/05/18(金) 20:40:26.140073デフォルトの名無しさん
2012/05/18(金) 22:47:27.370074デフォルトの名無しさん
2012/05/18(金) 23:11:35.69どんだけチキンハートなんだよ
晒される覚悟がないやつはScala使うなよ
0075デフォルトの名無しさん
2012/05/18(金) 23:17:40.590076デフォルトの名無しさん
2012/05/19(土) 09:07:51.620077デフォルトの名無しさん
2012/05/19(土) 10:01:16.27いや、Javaのを使えばいいのは判るんだけど、
敢えてScalaに入れていないのは何か狙いというかポリシーがあるんじゃないかと思う。
binary searchって関数言語的に美しくないとか?
でも、ポリシーの美しさにこだわって実用性を捨てるのはどうよ?
0078デフォルトの名無しさん
2012/05/19(土) 11:00:18.670079デフォルトの名無しさん
2012/05/19(土) 11:24:14.8915人くらいしか見てねえし
Scala知らないやつ多すぎ
言語知らないやつがFinagleで何作るんだよ
何も準備しないでこういうのに参加するやつなんなのまじで
0080デフォルトの名無しさん
2012/05/19(土) 11:51:51.88実用的にも普通はMap使うんじゃね
0081デフォルトの名無しさん
2012/05/19(土) 12:05:03.35まだソート絡みの課題が終わらないのかい?かわいそうに...
0082デフォルトの名無しさん
2012/05/19(土) 12:49:55.740083デフォルトの名無しさん
2012/05/19(土) 13:01:39.190084デフォルトの名無しさん
2012/05/19(土) 13:38:56.39そういうつながりだったのか
おまえよく気付いたな
0085デフォルトの名無しさん
2012/05/19(土) 14:11:54.15Map遅えしメモリ食うだろ。
そもそも、sorted arrayを標準ライブラリに入れないセンスはいくらなんでも変だぞ、
とゆー、ポリシーの話。
ついでに言えば、なんで標準のPriorityQueueにはdecreaseKey操作が無いんだよ。
どういうセンスなんだ?
0086デフォルトの名無しさん
2012/05/19(土) 14:23:36.39常にソートされている状態が必要なら、生成時に最初からソートされた値を使うし
後から要素を追加されてもソートされている状態が必要なら Map, Tree を使う
仕様も決めないでコード書こうとしているからそんな下らないところでグダグダ悩むんだよ
0087デフォルトの名無しさん
2012/05/19(土) 14:28:11.500088デフォルトの名無しさん
2012/05/19(土) 14:38:35.50ArrayにbinarySearchや、PriorityQueueにdecreaseKeyがあるのが
普通だと思えない感覚の持ち主だとしたら、
まず、初歩的な修行として著名なOSやコンパイラのコードを10万行ぐらい読んだ方がいい。
0089デフォルトの名無しさん
2012/05/19(土) 14:42:05.790090デフォルトの名無しさん
2012/05/19(土) 14:45:36.22うん。まあ、初心者向けにはいいんじゃね?
0091デフォルトの名無しさん
2012/05/19(土) 14:59:08.350092デフォルトの名無しさん
2012/05/19(土) 15:04:40.010093デフォルトの名無しさん
2012/05/19(土) 15:29:07.540094デフォルトの名無しさん
2012/05/19(土) 16:01:15.01もちろん、言語仕様内ではScalaの難易度はCの100倍だ。
Scalaは選ばれた天才のみが触れることを許される試行の言語。
まあ、>>78はScalaは百年早いからJavaを触るべきってこった。
0095デフォルトの名無しさん
2012/05/19(土) 16:05:14.24C++ならまだしも
Scala使うならJavaまで精通していなきゃいけないから
0096デフォルトの名無しさん
2012/05/19(土) 16:27:17.560097デフォルトの名無しさん
2012/05/19(土) 16:45:25.28うん、どこかで聞いたフレーズかと思ったら、これだった。
0098デフォルトの名無しさん
2012/05/19(土) 17:03:37.41binarySearchを入れないのはScalaのポリシーがおかしい
↓
普通だと思えない感覚の持ち主だとしたら、
まず、初歩的な修行として著名なOSやコンパイラのコードを10万行ぐらい読んだ方がいい。
背伸びしてる感すごいでしょ
0099デフォルトの名無しさん
2012/05/19(土) 17:06:24.230100デフォルトの名無しさん
2012/05/19(土) 17:49:35.940101デフォルトの名無しさん
2012/05/19(土) 19:37:16.92オレたちScala使いはな! そこら辺の低級言語や、オブジェクト志向倶楽部で、
「あれがない」「これがない」って、大口叩いて仲間と心をなぐさめあってるような
負け犬どもとはわけが違うんだからな。
「binarySearchが必要だ」と心の中で思ったならッ!
その時スデに行動は終わっているんだッ!
def indexOf[T <% Ordered[T]](xs: IndexedSeq[T], elem: T): Int = _indexOf(xs, elem).right.toOption.getOrElse(-1)
def _indexOf[T <% Ordered[T]](xs: IndexedSeq[T], elem: T): Either[Int, Int] = (xs, xs.length / 2) match {
case (IndexedSeq(), _) => Left(-1)
case (xs, i) if xs(i) > elem => { _indexOf(xs.slice(0, i), elem)}
case (xs, i) if xs(i) < elem => { _indexOf(xs.slice(i, xs.length), elem).right.map(_ + i)}
case (_, i) => Right(i)
}
短いのは誰かまかせた
0102デフォルトの名無しさん
2012/05/19(土) 19:45:43.170103デフォルトの名無しさん
2012/05/19(土) 19:53:29.81心を慰めあう
両方やらなければならないのが
幹部の辛いところだ
0104デフォルトの名無しさん
2012/05/19(土) 23:23:48.050105デフォルトの名無しさん
2012/05/19(土) 23:31:17.480106デフォルトの名無しさん
2012/05/19(土) 23:56:23.34配列で二分探索しないと気がすまないというやつは
Scala使うの向いてないってことだろ
その程度のオーバーヘッドは随所に発生してるぞ
0107デフォルトの名無しさん
2012/05/20(日) 00:08:20.23def indexOf[T <% Ordered[T]](xs: IndexedSeq[T], elem: T): Int = {
@scala.annotation.tailrec
def lambda(from: Int, to: Int): Option[Int] = (from + (to - from) / 2) match {
case i if to < from => None
case i if xs(i) > elem => lambda(from, i - 1)
case i if xs(i) < elem => lambda(i + 1, to)
case i => Some(i)
}
lambda(0, xs.length - 1).getOrElse(-1)
}
0108デフォルトの名無しさん
2012/05/20(日) 00:19:02.74IndexedSeqOptimizedをPimp my LibraryしてindexOfを拡張すればまったく違和感なくなるな
0109デフォルトの名無しさん
2012/05/20(日) 02:04:28.04#indexOfは既に存在するから別の名前にしないとimplicitが働かないな
implicit def toIndexedSeqWithBinarySearch[T <% Ordered[T]](xs: IndexedSeq[T]) = new {
def binarySearch(elem: Ordered[T]): Int = {
@scala.annotation.tailrec
def lambda(from: Int, to: Int): Option[Int] = (from + (to - from) / 2) match {
case i if to < from => None
case i if elem < xs(i) => lambda(from, i - 1)
case i if elem > xs(i) => lambda(i + 1, to)
case i => Some(i)
}
lambda(0, xs.length - 1).getOrElse(-1)
}
}
scala> Vector(1,2,3).binarySearch(2)
res2: Int = 2
0110デフォルトの名無しさん
2012/05/20(日) 02:05:13.430111デフォルトの名無しさん
2012/05/20(日) 02:41:50.77やってることは同じだけど、もうちょっと素直に書いたほうがいいと思うな
こんな感じで
def binarySearch[T](xs: IndexedSeq[T], elem: T)(implicit ord: Ordering[T]): Int = {
import ord._
@scala.annotation.tailrec
def binarySearch0(start: Int, end: Int): Int = {
if (start > end) return -1
val mid = (start + end) / 2
if (elem < xs(mid)) binarySearch0(start, mid - 1)
else if (elem > xs(mid)) binarySearch0(mid + 1, end)
else mid
}
binarySearch0(0, xs.length - 1)
}
無駄にmatch文使ったりとか、Option使ったりとかはしなくていいと思う
あと、OrderedよりOrderingのほうが若干使い勝手がいいかなと
Orderingは処理ごとにインスタンスを作れるので
たとえばこんな感じで
scala> binarySearch(Array(3, 2, 1), 1)(Ordering.fromLessThan(_ > _))
res1: Int = 2
まあ、全部細かい話だけどw
0112デフォルトの名無しさん
2012/05/20(日) 02:42:41.98JavaのArrayが云々って時点でセンス無いんだよ、お前は型無し言語でも使っとけ
http://stackoverflow.com/questions/4226947/scala-replacement-for-arrays-binarysearch
0113デフォルトの名無しさん
2012/05/20(日) 02:44:22.15あえてだと思うけどね
やっぱりソート済みなことを表現できないArrayに
binarySearchがないのはScala的に当然だと思うんだよね
静的言語がなるべく静的に表現しようとするのはポリシーの問題じゃなくて、実益の問題だと思う
メタファーとかアナロジーとか意外と精神世界にいきがちなプログラミングの世界で
実益を第一に考えて、その裏付けとして理論があるのが関数型の世界なんだよね
逆だと誤解されることが多いけど
0114デフォルトの名無しさん
2012/05/20(日) 09:00:21.330115デフォルトの名無しさん
2012/05/20(日) 13:54:01.87なんとなく関数型っぽいとか、行数が減りそうとかそういう理由で使っちゃ駄目
プログラムは全ての要素に意味を持たせないと
あと、内部関数にlambdaって名前をつける文化もScalaにはないから
Scalaのソース取ってきて検索したらすぐにわかることでしょ?
たった10行ちょっとのコードなんだからちゃんと書こ?
この調子で何千行、何万行って書いたらとんでもないプログラムが出来上がっちゃうから
と、会社に入ったらこういう説教かましてくる先輩とか出てくると思うけど
冷たくあしらわないでねw
0116デフォルトの名無しさん
2012/05/20(日) 15:28:00.97> と、会社に入ったらこういう説教かましてくる先輩とか出てくると思うけど
> 冷たくあしらわないでねw
ワロタw
0117デフォルトの名無しさん
2012/05/20(日) 16:40:28.07「Effective Scala」には部分関数の効率的な利用法として紹介されているみたいですよ!
http://twitter.github.com/effectivescala/index-ja.html#関数型プログラミング-代数的データ型としてのケースクラス
> 部分関数は多くの場面で起こり得るものであり,PartialFunction で効率的に符号化される。 メソッドの引数として利用する例:
>
> trait Publisher[T] {
> def subscribe(f: PartialFunction[T, Unit])
> }
>
> val publisher: Publisher[Int] = ..
> publisher.subscribe {
> case i if isPrime(i) => println("found prime", i)
> case i if i%2 == 0 => count += 2
> /* ignore the rest */
> }
0118デフォルトの名無しさん
2012/05/20(日) 17:39:55.79それはちゃんと意味あるから
部分関数って自分が処理しないものはスルーしなきゃいけないんだけど
publisher.subscribe {
case i =>
if isPrime(i) {
println("found prime", i)
} else if (i%2 == 0) {
count += 2
}
}
こう書いたらこの部分関数が全部処理しちゃうからね
だからガードを使って自分が処理できるところだけのコードを書く
ガードっていうのはパターンマッチの後ろについてるif文のことだけど
/* ignore the rest */ って書いてあるしね
0119デフォルトの名無しさん
2012/05/20(日) 17:40:25.240120デフォルトの名無しさん
2012/05/20(日) 22:18:05.49e.
まで書いてタブを打つとeのメソッドやフィールド一覧を出してくれますよね。
だけどeの型が自前のJavaのjarファイル内のクラスの場合には
タブを打ってもpublicのメソッドやフィールドの一覧が出てきません。
なにが原因なんでしょう?
Javaの標準ライブラリクラスSystemなんかではうまくいくので
Javaだからというのが原因でない気がするのですが…
0121デフォルトの名無しさん
2012/05/20(日) 22:55:57.87たとえば空のディレクトリの下に lib というディレクトリを作って、
そこに joda-time-1.6.jar を入れて、sbtを実行すると、
$ sbt
(中略)
> console
(中略)
scala> val t = new org.joda.time.DateTime
t: org.joda.time.DateTime = 2012-05-20T22:47:37.286+09:00
scala> t.secondOf(タブ入力)
secondOfDay secondOfMinute
これなら補完できる。sbtでやってないならわかんないけど、
sbtでやることをお勧めするw
0122デフォルトの名無しさん
2012/05/20(日) 23:10:06.54ありがとうございます。
ただ、私の環境ではsbtでも駄目でした。
たぶんWindows 7 64bitだからとか何か環境問題があるのだと思いますが…
とりあえず補完はeclipseの方でやることにします。
0123デフォルトの名無しさん
2012/05/23(水) 08:27:43.65sbt のバージョンが違うだけとか。
scala REPL の一部は、まだ古いバージョンの sbt を使って
作っているようですし。
0124デフォルトの名無しさん
2012/05/23(水) 12:21:40.91sbtなら補完できるはず、やってないけど(>>121)
なんだこれ?
0125デフォルトの名無しさん
2012/05/23(水) 15:38:46.26実際の動作はそうじゃん
話がガードを使う必然性の話だからね
部分関数って何ですか?ってことならまた別の回答したと思うけど
下はどう見てもやってるじゃん
質問者がどういう実行環境なのかわからないから、
「sbtでやってないならわかんないけど」って書いたけど
っていうか実行しないでjoda-timeでどんな補完するのか把握してたらそっちのほうがすごいわ
結局何が言いたいねん
言いたいことはもっと直接来いや!
0126デフォルトの名無しさん
2012/05/23(水) 17:33:02.80『愚かな者は、邪悪な者よりも忌まわしい』と言ったのだ。
邪悪な者は休むときがあるが、愚かな者はけっして休まないからである。」
(ホセ・オルテガ・イ・ガセット 1883〜1955)
0127デフォルトの名無しさん
2012/05/24(木) 02:48:19.350128デフォルトの名無しさん
2012/05/25(金) 08:15:57.03今はStack使って自力でDFSに書き直しているんだけど、
どうも手続き言語的な場当たり対処な気がしてて、気がとがめる。
関数型的にはもっと洗練されたやり方がある気がする。
0129デフォルトの名無しさん
2012/05/25(金) 11:39:59.590130デフォルトの名無しさん
2012/05/27(日) 10:08:03.19私も Windows 7, 64bit 環境(Javaも64bit版を利用)ですが、
Java/Scala での LWJGL や SWT 用の DLL の未対応といった
64bit 固有の問題もあったけど、最新の(安定板ではない)
DLLなら両方とも対応済み。
Scala REPL で SWT and LWJGL 利用サンプルを動かして遊んで
ます。
0131デフォルトの名無しさん
2012/05/27(日) 10:08:58.570132デフォルトの名無しさん
2012/05/27(日) 10:12:59.77個人的な経験だと 64bit 問題よりは、現在の Scala 安定板であ
る 2.9.2 が Java 6 (JVM 1.6) でコンパイルされてることが気に
なります。
Java 7 (JVM 1.7) でも Scala は動作するけど、安定性を求める
ならまだ Java は 6 (JVM1.6) のままで利用した方が良いかも。
もちろん、Scala 2.9.2 の話なので、次がどうかはわかりません。
0133デフォルトの名無しさん
2012/05/27(日) 10:25:31.03えと、安定板->安定版w
あと、JVM 1.6 と JVM 1.7 では Swing の取り扱いが変更
され、そのために Scala 2.9.2 自身のソースコード
(scalac 等)のコンパイルでは Java6 でコンパイルしないと
エラーになるのです。JVM1.6用のクラスファイルするという
意味です。
もちろん、JVM 1.7 上で公開されている Scala 2.9.2 は
Swing を Java よりも簡単に利用できます。クラスファイル
レベルでは互換ですから。JVM 1.6 用のクラスファイルが
JVM 1.7 上で動くだけなので。
0134デフォルトの名無しさん
2012/05/31(木) 05:47:02.69http://blog.mybatis.org/2012/05/mybatis-for-scala-beta-available.html
0135デフォルトの名無しさん
2012/06/01(金) 16:16:58.36の場合、vという引数にはA型の値が入っていて、メソッド内で参照したタイミン
グで評価される(遅延評価)ですよね?
def (v: => A => B)
の場合は、vにはA型の引数を受け取って、B型の結果を返す関数が入っていると
いうことで間違いないでしょうか?
上記の認識に間違いがない場合、
def (v: => A => B => C)
っていうメソッドの場合、引数の意味が分からない・・・
0136デフォルトの名無しさん
2012/06/01(金) 17:19:09.64A => B => C は、A => (B => C) ってこと。
後は分かるな?
0137デフォルトの名無しさん
2012/06/01(金) 19:01:39.61ありがとうございます!
ということは、
def (v: => A => B => C)の場合、
引数vには、
「B型の引数を受け取ってC型の値を返す関数」
という関数(これがA)が入る、ということでしょうか?
0138デフォルトの名無しさん
2012/06/06(水) 08:29:01.72それとも最新の2版?
0139デフォルトの名無しさん
2012/06/06(水) 16:14:53.77問題なし。もし違いが分かるなら3版を待つべきだしw
0140デフォルトの名無しさん
2012/06/22(金) 20:45:48.85第2部 DSLの実装(内部DSLの実装パターン
Ruby、Groovy、Clojureによる内部DSLの設計
Scalaによる内部DSLの設計
外部DSLの設計
Scalaのパーサーコンビネータを使った外部DSLの設計)
チラ見したけど、大半はDSLに関する本だが、
実装例が、他の言語よりScalaの扱いが大きかった。
mizさんの好きそうなネタだよなあ。今はいずこ。
0141デフォルトの名無しさん
2012/06/22(金) 21:53:53.350142デフォルトの名無しさん
2012/06/23(土) 15:59:28.03> 実践プログラミングDSL ドメイン特化言語の設計と実装のノウハウ
http://books.shoeisha.co.jp/book/b101671.html
Scalaがもっともその真価を発揮できるのって、DSLじゃないかと思う。
しかし、それ以外では、、Scalaの採用例増えているのかなあ??
0143デフォルトの名無しさん
2012/06/26(火) 10:23:21.45滑舌悪すぎとか顔出しやめろとか本人気にしてるみたいだからほどほどにしろよ!
0144デフォルトの名無しさん
2012/06/27(水) 01:50:44.26全部正確に詰め込もうとして結果わかりにくくなってる気が
0145デフォルトの名無しさん
2012/06/27(水) 09:52:09.45>>111 的書き方より >>109 の方が可読性が高い。
見やすくなってコードも短いというのは意味あることだと思うけど。
0146デフォルトの名無しさん
2012/06/28(木) 21:06:36.550147デフォルトの名無しさん
2012/06/29(金) 00:31:06.81特に2.0になってから
0148デフォルトの名無しさん
2012/06/30(土) 10:05:36.38同感。>>111 にある 1行 if、
if (start > end) return -1
これって、Phython では最も嫌われる書き方だよね。
けれど、Scala の philosophy に従うとソースコードを
構造化し短い文で組み立てようとするから適切な使用になる。
その意味では match や case 等があるからこそ
Scalaでは1行ifをもし使っても読みやすくなると思うのです。
だから >>111 は中途半端かと。
詳しい方のご意見希望。
0149デフォルトの名無しさん
2012/06/30(土) 11:41:32.990150デフォルトの名無しさん
2012/06/30(土) 12:11:47.96これって、Phython では最も嫌われる書き方だよね。
初めて聞いたな
しかも Python じゃないし
0151デフォルトの名無しさん
2012/06/30(土) 16:29:11.50Python を書き間違った。すまん。
けど、Python の作者(Guido van Rossum)自身が、
Python でのインデントの位置づけで、そう言ってるんだけど。
有名な話(インタビュー)だと思ってた。
意外に知られてない?
0152デフォルトの名無しさん
2012/06/30(土) 16:34:09.020153デフォルトの名無しさん
2012/06/30(土) 16:38:33.30if start > end: return -1
0154デフォルトの名無しさん
2012/06/30(土) 16:43:51.38うーんw からかわれてるんだろうなぁw
「Pythonのグイド・ヴァンロッサム氏へのインタビュー」
で検索してくれ。ただ、読んだとしても、インデントの話
じゃない?と思うのかなぁ。
そもそもCやJavaでも「1行if」推進派の方だったら、何言って
も理解されないとは想像しますw
0155デフォルトの名無しさん
2012/06/30(土) 18:57:12.08次の行が実行文と間違う人がいると思ってるからなのか?
だとしたら相当なfoolproofだな
0156デフォルトの名無しさん
2012/06/30(土) 19:21:05.05Pythonのことはよくわからんからなー
Rubyの後置ifは許されるのかしら?
elseがないifとかありえんだろうという関数型的な話ではないよな
Cなら単体のifでも絶対に中括弧で囲むというコーディングルールはあると思う
0157デフォルトの名無しさん
2012/06/30(土) 19:56:01.91読みやすいという答えに何かご不満でも? 私は至極もっともな理由だと思うよ。 コードの読みやすさを気にしないだ
ろうか? 正しくインデントされていないコードは嫌では? インデントを文法の一部にすることで、すべてのコードが適
切にインデントされることを保証できる。 かっこを用いる場合だが、その置き方にいくつかの流儀がある。 つまり、
開きかっこをifと同じ行におくか、それとも次の行にか? 次の行だとして、インデントするか、しないか? 閉じかっこも同様。
もしどれかの流儀に慣れると、他の流儀は読みにくくなり得る。 コードをざっと読む場合、多くの人はいずれに
しろインデントを頼りにするので、 これはしばしば次のようなバグを見落とすことにつながる。
if (x > 10)
x = 10;
y = 0;
ifが式でさらに副作用をなるたけ嫌うscalaじゃ書かなそうなコードかな〜?
0158uy
2012/06/30(土) 23:57:00.530159デフォルトの名無しさん
2012/07/01(日) 09:36:43.61Cで一行からでも{}付ける習慣があるのはは
ぶらさがりelse/elseifの問題があるからだな
0160デフォルトの名無しさん
2012/07/01(日) 10:12:35.69言ってることが矛盾してるんだよな。
Pythonだと、
if x > 10: z = 1
と書いても、
if x > 10:
x = 10
y = 0
と書いても、
バグの見落としにならないし、
if x > 10: z = 1
x = 10
と書く香具師がいたらそれはただの馬鹿だし、
if x > 10: z = 1
x = 10
の二行目をifの続きだと思う香具師も馬鹿。
0161デフォルトの名無しさん
2012/07/01(日) 10:14:46.550162デフォルトの名無しさん
2012/07/01(日) 10:32:33.93こうぐし 工具 師
工具を使う職人、つまりココではプログラマの事を馬鹿にした表現
0163デフォルトの名無しさん
2012/07/01(日) 13:40:35.71古語みたいなもんだから、気にしなくていいよ
0164デフォルトの名無しさん
2012/07/01(日) 15:01:31.910165デフォルトの名無しさん
2012/07/01(日) 15:04:36.39奴 -> ヤツ -> ヤシ -> 香具師
こういう単語使う人って、10年後くらいにもまだScalaやってたりするのかな
0166デフォルトの名無しさん
2012/07/01(日) 21:06:57.17...早いな〜
2002〜2012と、2012〜2022だと後者は前者ほど劇的な変化はコンピュータ的にはなさそうな気がする
0167デフォルトの名無しさん
2012/07/01(日) 21:37:31.79C#がうまくいったのと、JavaScriptとObjective-Cが墓から蘇ったくらいで
あとはRails人気でRubyが普及したとかか
Pythonは2002年には既にある程度人気あったはずだし
0168デフォルトの名無しさん
2012/07/02(月) 11:42:53.39Jobs が死んだからな
0169uy ◆pdu1UZmweE
2012/07/03(火) 11:28:15.45そもそも技術は既に開発されていて、知ってる奴は昔から知っている
知ってる奴からすればああようやく流行ってきたかおせーなって程度だろ
一般浸透してゴミッカスドカタ共がその利点を理解し
使うかどうか
人海戦術を嫌う奴は多いけど、結局最後は人の数
どんな優れた技術も理解する奴が少ないと流行らないから
ゴミカス共が理解できる範囲のレベルの技術が流行り、
なんかそこで意味わからない方法で、効率の悪いプログラミングを、効率をよくしようと努力したのが
C#.NET まさにドカタの為のドカタ言語
Scala(笑)
0170デフォルトの名無しさん
2012/07/06(金) 21:01:30.11この本買った。DSLでScalaは真価を発揮、に同意。
1章冒頭の「ホイップをトッピングしたグランデサイズの
スキニーシナモン・ドルチェ・ラテ」の(自然言語と
しての)DSL具合に笑った。
0171デフォルトの名無しさん
2012/07/08(日) 22:33:58.46また戻ってきてよ
0172デフォルトの名無しさん
2012/07/08(日) 23:01:50.33単に話すことないだけでは
0173デフォルトの名無しさん
2012/07/08(日) 23:21:22.170174デフォルトの名無しさん
2012/07/09(月) 01:52:58.20int hoge, hage[3] = { 1, 2, 3 }, huge = 5;
をパースする例とか、どっかないですか?
0175デフォルトの名無しさん
2012/07/09(月) 10:42:24.72case class IntDef(name: String, value: Int)
case class IntArrayDef(name: String, value: IndexedSeq[Int])
object HogeParser extends JavaTokenParsers {
lazy val parse = "int" ~> repsep((defIntArray | defInt), ",") ~ ";"
lazy val defInt = ident ~ ("=" ~ wholeNumber).? ^^ {
case ident ~ None => IntDef(ident, 0)
case ident ~ Some(_ ~ default) => IntDef(ident, default(0).toInt)
}
lazy val defIntArray = ident ~ "[" ~ wholeNumber ~ "]" ~ ("=" ~ "{" ~> repsep(wholeNumber, ",") <~ "}").? ^^ {
case ident ~ _ ~ size ~ _ ~ None => IntArrayDef(ident, IndexedSeq.fill(size.toInt)(0))
case ident ~ _ ~ size ~ _ ~ Some(defaults) => IntArrayDef(ident, defaults.map(_.toInt).toIndexedSeq)
}
def apply(str: String) = parseAll(parse, str)
}
scala> HogeParser("int hoge, hage[3] = { 1, 2, 3 }, huge = 5;").get
res1: HogeParser.~[List[Product with Serializable],String] =
(List(IntDef(hoge,0), IntArrayDef(hage,Vector(1, 2, 3)), IntDef(huge,5))~;)
0176デフォルトの名無しさん
2012/07/09(月) 10:44:00.88- lazy val parse = "int" ~> repsep((defIntArray | defInt), ",") ~ ";"
+ lazy val parse = "int" ~> repsep((defIntArray | defInt), ",") <~ ";"
0177デフォルトの名無しさん
2012/07/09(月) 15:10:54.63https://gist.github.com/3074485
0178デフォルトの名無しさん
2012/07/09(月) 21:14:50.78ありがとうございます!理解するのに時間掛かってお礼遅れましたすいませんorz
調べてみて何となくボヤっと分かった気がする部分
1.identやwholeNumberって何だろ?
JavaTokenParsersで定義されてるパーサ?
2.Some不思議!
(~>|<~)とかで捨てられなかった部分が引数に渡される?
1, 2, 3とかは自動的に文字列のリストになる?
3.lazy val types = "int|string".rとか追加するとstring hoge;とかもパースできる
解決できなかった部分
int hoge = 5;<OK! int hoge = "test";<NG!
string hoge = "test";<OK! string hoge = 5;<NG!
ってするにはどうすればいいか?
http://ideone.com/mRyvb
0179デフォルトの名無しさん
2012/07/09(月) 22:28:35.80typesでまとめ上げてしまったら後に続かないから詰む
def definitions = (defInt | defString).*
def defInt = "int" ~ ...
def defString = "string" ~ ...
0180デフォルトの名無しさん
2012/07/09(月) 22:48:20.81あっ、なんか天啓来たかも?
頭から順番に自分が食べられる部分だけ食べたら残りを次の子へ渡して
次の子も頭から自分が食べられる部分だけ食べて残りを次へってバケツ
リレーみたくなってんのかな?
それで食べ残しがなくなったら、全部パースできてる的な?
そんな都合よくはいかない?まだモヤっとしてるけど、なんか取っ掛かり
がみつかった気がする。深く深く感謝です!
0181デフォルトの名無しさん
2012/07/10(火) 13:55:20.440182デフォルトの名無しさん
2012/07/10(火) 22:37:11.480183デフォルトの名無しさん
2012/07/10(火) 23:04:01.390184デフォルトの名無しさん
2012/07/11(水) 12:13:38.370185デフォルトの名無しさん
2012/07/12(木) 01:23:44.84コップ本の次に読む本としてはいいかもしれない
Scalaで何ができるのかというのがわかる
個人的にはもっとカタログ的なライブラリの比較みたいなのが欲しかったかな
どのライブラリ使ったらいいか悩んだりするから
でもさ、本が出るたびに思うけど、前半のScala入門の話とかいる?
「varとvalの違いを知りたい」とかさ、
たぶん日本で出てる全部のScalaの本に書いてあると思うんだけど、まだ書く必要あるの?
0186デフォルトの名無しさん
2012/07/12(木) 01:27:31.650187デフォルトの名無しさん
2012/07/12(木) 04:02:22.22Eclipseのプラグインの方はただInstall new softwareから引っ張ってきただけなんだけどエラー吐く。
どういうこっちゃ
0188デフォルトの名無しさん
2012/07/12(木) 04:24:56.140189デフォルトの名無しさん
2012/07/12(木) 05:46:19.730190デフォルトの名無しさん
2012/07/12(木) 23:22:41.39おまいら参加する?
0191デフォルトの名無しさん
2012/07/12(木) 23:35:44.95まあどうせHaskellの連中がデカい顔するだろうから行かないけど
0192デフォルトの名無しさん
2012/07/12(木) 23:40:34.480193デフォルトの名無しさん
2012/07/12(木) 23:44:47.64奴らはマクロしか取り柄ないし
異様なimmutable推しのClojureはちょっとやっかいだが
0194デフォルトの名無しさん
2012/07/12(木) 23:45:38.77CLOSもあるよ!
0195デフォルトの名無しさん
2012/07/12(木) 23:46:42.350196デフォルトの名無しさん
2012/07/12(木) 23:46:52.000197デフォルトの名無しさん
2012/07/12(木) 23:48:27.310198デフォルトの名無しさん
2012/07/13(金) 08:30:25.110199デフォルトの名無しさん
2012/07/13(金) 10:14:52.64よくできてるネタじゃないか
Twitterあたりでやるべきだったな
0200デフォルトの名無しさん
2012/07/13(金) 23:58:03.360201デフォルトの名無しさん
2012/07/14(土) 00:35:10.060202デフォルトの名無しさん
2012/07/14(土) 08:48:59.010203デフォルトの名無しさん
2012/07/14(土) 11:29:08.780204デフォルトの名無しさん
2012/07/14(土) 20:32:41.31cygwin
GNU Emacs 24.1.1
scala2.9.2
ensime_2.9.2-RC1-0.9.3.RC4
sbt
上記の環境で、M-x ensimeすると
Failed to connect to Swank: server process exited.
と出てきます。
参考になりそうなサイトはあったのですが、よくわからなかったです。
そのサイト
ttp://jutememo.blogspot.jp/2010/12/meadow-scala.html
一応パスまでに空白はありません。
どなたか解決策わかる方いますか?
0205204
2012/07/15(日) 06:09:12.17ところで、scalaってコンパイラ完璧ではない?
object Main {
def main(args: Array[String]) = {
val l = List(1, 2, 3)
l.map(x => x * 2)
}
}
だと"Editor does not contain a main type"ってエラー吐かれ
object Main {
def main(args: Array[String]) = {
val l = List(1, 2, 3)
l.map(x => x * 2)
print(l)
}
}
だと動作する。
0206デフォルトの名無しさん
2012/07/15(日) 06:48:27.20上は def main(args: Array[String]): List[Int]
下は def main(args: Array[String]): Unit
あとはわかるな?
0207デフォルトの名無しさん
2012/07/15(日) 07:05:28.42おうふ!セックス!
そっか、戻り値は最後のアレだっなー。
そっかそっかー。
0208デフォルトの名無しさん
2012/07/15(日) 09:22:19.340209デフォルトの名無しさん
2012/07/15(日) 09:58:04.91つまらないところでハマる。
おまけにそれを他人のせいにする。
0210デフォルトの名無しさん
2012/07/15(日) 13:38:05.030211デフォルトの名無しさん
2012/07/15(日) 17:28:40.95それでハマって無駄にする時間を天秤にかけたら、どちらがいいかは明らかだな。
0212204
2012/07/15(日) 19:59:11.38= {
以外で便利な表記法あるっけ
0213デフォルトの名無しさん
2012/07/15(日) 20:16:31.12foo() {
}
とすれば、
foo(): Unit = {
}
になるとマジレス。
某実践プログラミングでは、今回の件の逆の間違い
(なぜか最後の値が返らずにUnitになる)を防ぐために非推奨にしてたけどね
0214204
2012/07/15(日) 21:16:42.12慣れが必要だなぁこの言語。
楽しんでみるよ!
0215デフォルトの名無しさん
2012/07/15(日) 21:32:20.41http://docs.scala-lang.org/style/types.html
自分はこっちの方が分かりやすいし短くなるから :Unit = つけるより好き
0216デフォルトの名無しさん
2012/07/15(日) 22:01:31.76そんなもん検出できるからどっちでもいいだろ
0217デフォルトの名無しさん
2012/07/16(月) 10:04:36.74そんなこと言ってるのか?
0218デフォルトの名無しさん
2012/07/18(水) 19:37:38.48http://www.infoq.com/jp/articles/java-8-vs-scala
0219デフォルトの名無しさん
2012/07/18(水) 23:12:06.390220デフォルトの名無しさん
2012/07/19(木) 00:27:26.480221デフォルトの名無しさん
2012/07/19(木) 01:52:16.140222デフォルトの名無しさん
2012/07/24(火) 02:51:22.65http://www.startup-dating.com/2012/07/developer-programming-languages/
どうせScalaなんか入ってないんだろうなと見てみたら
思いっきり入ってて逆にどうかと思ってしまった
0223デフォルトの名無しさん
2012/07/24(火) 05:30:18.68金融なんかは非プログラマがプログラミングを強いられる場面が多いんじゃね?
っで、これまでだと簡易言語を導入してたけど、今時はDSLに置き換わってる
のかな?って気がする。
0224デフォルトの名無しさん
2012/07/24(火) 09:54:34.06なぜ次に学ぶ言語は関数型であるべきか
http://ymotongpoo.hatenablog.com/entry/20111105/1320506449
0225デフォルトの名無しさん
2012/07/24(火) 22:30:58.08scalaのオンライン授業がもうすぐ始まるよー
0226デフォルトの名無しさん
2012/07/25(水) 14:54:24.32今年か来年頭には有名企業からも採用事例としてプレゼン資料というか、勉強会資料が続々でてくると思う
もちろんscalaエンジニアの募集もね
0227デフォルトの名無しさん
2012/07/25(水) 16:00:24.84なんでいつも求人がないのよ…?
来年っていつの来年よ?
0228デフォルトの名無しさん
2012/07/25(水) 21:44:41.56派遣会社は意外にめざといな
http://www.indeed.com/jobs?q=scala
http://www.linkedin.com/jsearch?keywords=Scala&searchLocationType=I&countryCode=us&trk=skills
http://careers.stackoverflow.com/jobs/tag/scala
scalaやhadoop、awsで外資系にとらばーゆするチャンスではある。
http://www.itjobswatch.co.uk/jobs/uk/scala.do
0229デフォルトの名無しさん
2012/07/28(土) 15:25:04.64期待しているのとは違う挙動をするんですが、なぜなんでしょう?
環境: Scala version 2.9.1.final (OpenJDK Server VM, Java 1.6.0_24).
■. tupleからunpackingして変数宣言
scala> val (X, Y) = (1, 2) // 変数名が大文字の時はエラー
<console>:8: error: not found: value X
val (X, Y) = (1, 2)
^
<console>:8: error: not found: value Y
val (X, Y) = (1, 2)
^
scala> val (x, y) = (1, 2) // 変数名が小文字の時は問題無し
x: Int = 1
y: Int = 2
0230229
2012/07/28(土) 15:26:35.14scala> val (X, _, _) = (1,2,3) // X の型が Tuple1[Int] になってしまう
scala> X
res1: (Int,) = (1,)
scala> val (x, _, _) = (1,2,3)
x: Int = 1
scala> x
res2: Int = 1
■. パースに失敗してる?
scala> val (X: Int, _, _) = (1,2,3)
<console>:1: error: ')' expected but ':' found.
val (X: Int, _, _) = (1,2,3)
^
scala> val (x: Int, _, _) = (1,2,3)
x: Int = 1
0231デフォルトの名無しさん
2012/07/28(土) 15:55:07.50val の後にタプルを書いた場合はパターンマッチと見なされるが、
パターンマッチの中では大文字で始まる識別子は変数ではなく定数と見なされるから。
つまり最初の例では 1 を定数 X とマッチングしようとして、X が見つからないのでエラーになっている。
どうしても大文字の変数名を使いたければ
val t = (1, 2)
val X = t._1
val Y = t._2
のようにするしかない。
0232229
2012/07/28(土) 16:08:33.29ありがとうございました、おかげですっきりしました
0233デフォルトの名無しさん
2012/07/28(土) 21:44:55.90すっかり忘れてた。勉強になったわ。�dクス
0234デフォルトの名無しさん
2012/08/01(水) 00:52:49.71って表現のHolder[X]の部分がなんなのかよくわかりません
0235デフォルトの名無しさん
2012/08/01(水) 02:05:10.090236デフォルトの名無しさん
2012/08/01(水) 13:03:13.45格安iPhoneEラーニング(学習動画多数あり)
http://tinyurl.com/7wj77om
コワーキングスペースJP
http://tinyurl.com/76vdrny
コワーキング帳
http://tinyurl.com/brzs486
javaやlinuxは手間がかかる 一人でやるには手間がかかりすぎる 手間がかからないで一人で開発できて
人の多いところで直接販売できる仕組みが提供されているメーカ製言語だけやる ずばりiphone またはWindow 8 Metro App Store C#
やるならメーカー製の言語 洗練された仕様 脆弱性が少なく 開発ソフトが優れ 課金ライブラリ アップデートライブラリが提供されていて 情報、書籍が多く開発しやすい
奴隷になりたければオープン系をやればいい 時間がかかり 人は多く 仕事の取り合い 足の引っ張り合い 脆弱性が多く 互換性がなく 癖があり 大規模開発中心
詳細設計しかやれない体になって年取ってぽいだ 独立もできない 手間のかかりすぎる仕様だから
派遣屋 IT経営者はその方が喜ぶ 大規模分割開発では使い捨てても独立はできまい 代わりはいくらでもいる 嫌なら辞めろ
若い派遣営業は舐めた態度をとってくる ひどいピンハネ
オープン言語、日本独自開発の言語・フレームワーク ガラパコ携帯 javascript html5 android java linux python rubyやnode.jsとかやめとけ
メディアに金を払ってステマ宣伝してくるが釣られて手を出しても情報は少なく手間がかかり スパゲッティコード 未完成 デスマに陥る
コンパイルできないからパクられ 直接売る場所がないから企業に買い叩かれ金にならない 生きていけない奴隷仕様だ
0237デフォルトの名無しさん
2012/08/01(水) 13:03:50.36Objective-CやC#を覚えるとサーバーサイドからクライアントサイドまでカバーでき人の多い場所でソフトを売る権利を得られる
仕事や趣味でObjective-CやC#をやっておけば派遣切りされても会社辞めることになってもソフトを売って生きていける それはセーフティーネットになる
WEBサーバーIIS Win2008ServerVPS SqlServer Oracle MySql 言語はマーケットで売れるメーカー製のみ C#は自分用業務支援ツールとして使える
例えばPHPでWEBアプリを作っていて管理者画面はC#(EXEアプリ)で作るとかなり早く作れる(Smartyなんか使うよりもかなり早くだ)
C#のソースを出さなければWEBアプリの著作権も守れる ASP.net(C#)+管理EXEアプリ(C#)+iPhone
C#マーケット Windows8 Metroアプリ WindowsPhone Surface PS Vita Xbox360 iphone(mono使用)
iPhoneマーケット iPhone iPad 予定 iTv iCar i (家電製品)
地方に安い土地を買いコンテナ型の格安高性能オフィスを建て(300万〜500万)
レンタル自習室&シェアオフィス・コワーキングで収入を得ながらそこでアプリを開発する
http://tinyurl.com/7pb2yaa
http://bit.ly/iLIpJa
0238デフォルトの名無しさん
2012/08/01(水) 13:10:22.940239デフォルトの名無しさん
2012/08/01(水) 13:25:18.46ここから抜け出すにはiPhone一択?
じゃあScalaでAndroidアプリ作ればいいんじゃないかな(´・ω・`)
0240デフォルトの名無しさん
2012/08/01(水) 13:37:20.52されに関しては同意だ。
0241デフォルトの名無しさん
2012/08/01(水) 13:37:20.770242デフォルトの名無しさん
2012/08/01(水) 21:48:10.25って表現のHolder[Z]の部分がなんなのかよくわかりません
0243デフォルトの名無しさん
2012/08/01(水) 21:52:59.26このスレには>>234で投下済みだ。
別スレを回ろう。
0244デフォルトの名無しさん
2012/08/02(木) 01:00:29.93http://yuroyoro.hatenablog.com/entry/20110126/129604334
これとこれ見ろや
っていうかむしろ「AttrHelper、Holder」で検索すると真っ先にこれが出てくるレベル
それでも理解できないならScala使うのやめよっか…
0245デフォルトの名無しさん
2012/08/02(木) 22:58:31.560246デフォルトの名無しさん
2012/08/04(土) 12:17:33.070247デフォルトの名無しさん
2012/08/04(土) 13:22:51.110248デフォルトの名無しさん
2012/08/04(土) 22:10:06.190249デフォルトの名無しさん
2012/08/05(日) 10:07:45.390250デフォルトの名無しさん
2012/08/05(日) 18:57:49.940251デフォルトの名無しさん
2012/08/06(月) 07:53:14.49fmap :: (a -> b) -> f a -> f b
何故このように変換できるの?
trait Functor[F[_]] {
def map[A,B](fa: F[A])(f: A => B) : F[B]
}
0252デフォルトの名無しさん
2012/08/06(月) 09:56:54.97fmap :: (a -> b) -> f a -> f b
instance Functor [] where
fmap = map
fmap (\x -> x * 2) [1, 2, 3]
↓
trait Functor[F[_]] {
def map[A,B](fa: F[A])(f: A => B) : F[B]
}
implicit val functorListInstance: Functor[List] = new Functor[List] {
def map[A,B](fa: List[A])(f: A => B): List[B] = fa map f
}
implicitly[Functor[List]].map(List(1,2,3))(2 *)
こう書けばわかるでしょ
0253デフォルトの名無しさん
2012/08/07(火) 22:27:35.74別の型に適用させるにはどうすればいいの?
implicitを型別に書くのかな?
0254デフォルトの名無しさん
2012/08/09(木) 21:11:41.13私は Scala が好きです。Scala は私のお気に入りのプログラミング言語なのです。
これまで数多くの開発組織で,Scala に関する話をしてきました。
しかしその後の Scala の普及状況を見たとき,私はこの言語が Ruby や,
あるいは Python の採用レベルにさえも達しそうもないことに気付いたのです。
0255デフォルトの名無しさん
2012/08/09(木) 22:00:24.34どう使い分ければいいでしょうか?
0256デフォルトの名無しさん
2012/08/10(金) 00:15:25.860257デフォルトの名無しさん
2012/08/10(金) 01:47:03.45コンストラクタに引数があるかどうかじゃない?
基本的にtraitで済むならtraitでいいかと
たまに引数はいらないけどimplicit paramaterが欲しくてabstract classになることもある
0258デフォルトの名無しさん
2012/08/10(金) 02:05:45.31implicit parameterの略記法
一番典型的なのがManifestかな
def hoge[A](a: A)(implicit m: Manifest[A]) = manifest[A]
def hoge[A: Manifest](a: A) = manifest[A]
この二つが同じ意味
型クラス的な使い方でもよく出る
上記のFunctorが既に定義されているとして
def myMap[F[_]: Functor, A, B](a: F[A])(f: A => B) = implicitly[Functor[F]].map(a)(f)
こう書くと
scala> myMap(List(1,2,3))(2*)
res13: List[Int] = List(2, 4, 6)
こんな感じで動く
そして自分で書いて思ったけど、型クラスってやっぱり駄目だな
こんなの覚える必要ないわ
型クラスもContext Boundもみんな忘れよう
0259デフォルトの名無しさん
2012/08/10(金) 02:42:11.78そのmyMapがダメダメなのは分かるがね
0260デフォルトの名無しさん
2012/08/10(金) 02:51:29.350261デフォルトの名無しさん
2012/08/10(金) 02:56:31.16おつむもPureだから関係ないスレにしゃしゃりでてくるんだよなー
0262デフォルトの名無しさん
2012/08/10(金) 07:47:26.87どんだけHaskellにコンプレックスあるんだか
0263デフォルトの名無しさん
2012/08/10(金) 09:36:33.100264デフォルトの名無しさん
2012/08/10(金) 14:12:01.68ジャバ厨にスカラはむづかしすぎる(何故か変換(ry
0265デフォルトの名無しさん
2012/08/10(金) 14:26:15.810266デフォルトの名無しさん
2012/08/10(金) 14:47:29.080267デフォルトの名無しさん
2012/08/10(金) 20:43:26.51バンピーが扱うには高度過ぎる。
0268デフォルトの名無しさん
2012/08/10(金) 23:32:51.69ValueとしてInt、String、Doubleを混在して入れた場合
getOrElseだと型がBがAnyになっちゃうけどどうすりゃええの?
0269デフォルトの名無しさん
2012/08/11(土) 00:33:53.030270デフォルトの名無しさん
2012/08/11(土) 02:12:14.94def myMap[F[_]: Functor, A, B](a: F[A])(f: A => B) = implicitly[Functor[F]].map(a)(f)
なんでこんなに複雑に記述しないといけないの?
0271デフォルトの名無しさん
2012/08/11(土) 08:57:27.77って、本、なかなか良いな。
0272デフォルトの名無しさん
2012/08/11(土) 13:55:13.99new File(".").listFiles.filter{x =>
val tmp = x.getName.split("\\.");
tmp(tmp.length-1).equals("jpeg");
}
ただ、ファイル名と拡張子を分割した文字列配列をイチイチtmpという退避変数を用意するのがなんだか野暮ったく見えます
かと言って下記は論外です
new File(".").listFiles.filter(x =>
x.getName.split("\\.")(x.getName.split("\\.").length-1).equals("jpeg");
}
何かもっとカッコ良く書く方法はないでしょうか?
0273デフォルトの名無しさん
2012/08/11(土) 14:20:17.360275デフォルトの名無しさん
2012/08/11(土) 16:36:48.45Scala IO使うなら
import scalax.file.Path
Path(".") * "*.jpeg"
これでいけるっぽい
そのコードとまったく同じものを返したければ
(Path(".") * "*.jpeg").toArray flatMap (_.fileOption)
build.sbtの設定は
resolvers += "Typesafe repository" at "http://repo.typesafe.com/typesafe/releases/"
libraryDependencies += "com.github.scala-incubator.io" %% "scala-io-file" % "0.4.1"
0276デフォルトの名無しさん
2012/08/11(土) 21:29:29.20> Scala逆引きレシピ すぐに美味しいサンプル&テクニック300
だが、
0277デフォルトの名無しさん
2012/08/11(土) 21:35:22.950279デフォルトの名無しさん
2012/08/12(日) 10:15:10.32外側のローカル変数の書き換えもできるようなので、何か特別な変換をしてそうなのですが。
0280デフォルトの名無しさん
2012/08/12(日) 15:41:02.19よく分からないものが書き込まれても本人訂正しない奴が多い
PG/SEってその程度も出来ないくらいに衰弱しているって事なんかなってたまに思う
0281デフォルトの名無しさん
2012/08/12(日) 16:29:34.73確かにこういう2chのレス一つからプログラマの力量は伝わってくるな
でも、
0282デフォルトの名無しさん
2012/08/12(日) 16:32:21.30「多い」と主張するからには、多い根拠を示してもらおうか
それゆえ、
0283デフォルトの名無しさん
2012/08/12(日) 19:15:00.250284デフォルトの名無しさん
2012/08/12(日) 22:06:23.17普通の関数、というより、外側のローカル変数を利用しない限りオーバーヘッドは発生しない
逆アセンブルしてみるとわかるけど、通常のメソッドと衝突しないようなメソッド名のメソッドができる
外側のローカル変数を書き換える関数内関数では、オーバーヘッドが発生する。これは主に、
外側のローカル変数を書き換えられるように、mutableなセルで値をラップするため。まあ、
普通は気にしなくていい範囲のオーバーヘッド
0285デフォルトの名無しさん
2012/08/12(日) 22:26:36.680286デフォルトの名無しさん
2012/08/13(月) 13:29:44.14すなおに関数の戻り値で置き換えるかDynamicVariableかましたい
0287デフォルトの名無しさん
2012/08/13(月) 23:31:20.00異論があるけど下手な発言すると総ツッコミ来るから怖いんだよ。
察してやれ。
0288デフォルトの名無しさん
2012/08/13(月) 23:50:24.960289デフォルトの名無しさん
2012/08/14(火) 00:07:32.630290デフォルトの名無しさん
2012/08/14(火) 00:30:00.51g(l: List, x: String, y: String)
をf(g(x))みたいに書きたいです。どうすればいいの?
0291デフォルトの名無しさん
2012/08/14(火) 01:33:16.480292デフォルトの名無しさん
2012/08/14(火) 09:52:07.86日本人は、先進諸国で飛び抜けてマスコミ報道を鵜呑みに
信じやすいことがこの動画で実証されています。
いわばマスコミ報道の「鵜呑度」を国際比較すると、
日本人は、先進国中ダントツに「鵜呑度」が高く70%、
最も低い国民は英国で14%です。
その他の主要欧米諸国(ロシアを含め)は20−35%です。
日本に近い国は、ナイジェリア、中国など、途上国と新興国となります。
別の言い方をすれば、日本人の70%は、
自分の頭で考えず(思考停止)、
テレビ、新聞、週刊誌などのマスコミの情報を鵜呑みにしていることを意味します。
青山は以前からこれを「観客民主主義」と言っています。
観客民主主義は、マスコ ミの情報操作による世論誘導に最も陥りやすく、
独裁にも呼応しやすい特性を持っています。
マスコミ報道「鵜呑度」
日本人70%、英国人14% You Tube
http://www.youtube.com/watch?v=ypPqsWUC6Vo
http://www.asyura2.com/12/senkyo132/msg/578.html
0293デフォルトの名無しさん
2012/08/18(土) 20:12:17.530294デフォルトの名無しさん
2012/08/23(木) 09:50:07.18でも僕らはスイスアーミーナイフが大好きなんですよ
2012年7月28日
Scalaはまぁ好きな言語なのですが、普及するかというと正直いって否定的。
最大の理由はマルチパラダイムという点。Scalaはオブジェクト指向と関数型
の二つをパラダイムを融合させたマルチパラダイム言語ということになってい
ますが、これまでオブジェクト指向と論理型や、関数型と論理型などなどマル
チパラダイム言語は数多く提案されてきましたが、普及した言語は皆無。その
理由は簡単、多くのプログラマーは、ひとつのパラダイムでも使いこなせない
のが現実。そうなるとマルチパラダイム言語は身に付けないといけないパラダ
イムが複数あるわけで、使いこなせない。逆に言うと相当、優秀なプログラマー
でないと使いこなさないはず。Scalaが普及するとしたら、メニーコアプロセッ
サを前提に、関数型の特質をうまくつかって、副作用の少ない並行プログラミ
ングだと思います。というのは並行プログラミングも逐次プログラミングと比
べると格段に難易度が高いので、その難易度についていけるプログラマーなら
ばオブジェクト指向と関数型の二つをパラダイムを使いこなせるかも、という
のが理由。
0295デフォルトの名無しさん
2012/08/23(木) 09:51:16.45のは、できるプログラマーに好かれるだけでは十分ではなく、そうではないプ
ログラマーにも敷居の低いことは要件なんですよね。逆に言うと圏論や型推論
など、一般のプログラマーには難しい理論を要求する言語というのは普及は難
しいのではないでしょうかね。もちろん完全に隠し込めればいいのでしょうが、
コンパイルエラーやデバッグなどで顔を出す限りはなかなか難しい。というわ
けで頭の言い方々が推奨されるプログラミング言語については、その普及とい
う点では否定的に見ております。なお、アカデミアのプログラミング言語を専
門とする研究者(特に優秀な研究者)が設計した言語が大きく普及しないという
のも、この辺りに遠因があるのではないかと邪推しております。
0296デフォルトの名無しさん
2012/08/23(木) 18:00:09.480297デフォルトの名無しさん
2012/08/23(木) 23:03:48.80例えば、SIとかの労働集約的な職場で普及するとは確かに思えん。
あとは、Play2がどこまで行けるかだなー。
RubyだってRoRが出てくるまでは(ry的なところがあったわけだし。
0298デフォルトの名無しさん
2012/08/24(金) 13:56:10.460299デフォルトの名無しさん
2012/08/24(金) 14:36:04.990300デフォルトの名無しさん
2012/08/24(金) 21:38:11.96> 理由は簡単、多くのプログラマーは、ひとつのパラダイムでも使いこなせない
プログラム言語って、全部の機能を使いこなしてプログラムする必要はまったくないのだが。
下流プログラマは、知っている範囲だけでプログラムすれば十分なんだよ。
フレームワークとかシステムまわりを設計する人だけ、難しい機能使えばよい。
Scalaが本領を発揮するのって、DSLとか、もしくは科学技術計算じゃない?
http://mwongstyle.com/wordpress/?tag=scalalab
最近は、中流プログラマにさえ、ビックデータを行列計算して統計処理とかが必須になってきているし、
いまどきの情報工学出身の新卒プログラマは、そういうの得意だろ。
0301デフォルトの名無しさん
2012/08/24(金) 22:51:36.21なんだかんだ言ってC言語が一番教育コストが低い
0302デフォルトの名無しさん
2012/08/24(金) 22:59:23.27ちょっとキツイ言い方になるけど、その認識レベルは色々やばい
現状日本国内ではScalaプログラマを集めるのが難しいっつう問題などデメリットもあるけど
言語レベルでは型安全性や簡潔性、並列性の扱いやすさなど、自明なレベルで利点が
色々あるわけで。その辺を認識した上で、「あえて」Scalaを使えないと判断するのは良いけど
0303デフォルトの名無しさん
2012/08/24(金) 23:05:54.180304デフォルトの名無しさん
2012/08/24(金) 23:17:15.75むしろ、JVMとJavaAPIを使うために、プログラマが型安全性や簡潔性や並列性理解できないというデメリットに目をつぶってる
最悪、scala無視してJavaでclassファイル作ればいいわけだから
0305デフォルトの名無しさん
2012/08/24(金) 23:28:13.830306デフォルトの名無しさん
2012/08/25(土) 00:23:51.09当人たちの能力の無さでどうこうなろうが知ったこっちゃないけど
エセScala使用実績に釣られて巻きぞえ喰う奴は悲惨だよな
0307デフォルトの名無しさん
2012/08/25(土) 00:54:19.920308デフォルトの名無しさん
2012/08/25(土) 00:55:42.340309デフォルトの名無しさん
2012/08/25(土) 01:14:30.62とてつもなく頭の悪い上司なら別だが
0310デフォルトの名無しさん
2012/08/25(土) 01:20:33.29本当に余裕がなくなれば途中からJavaに移行できるから、仕事ついでに新パラダイム言語の教育させようと思ったらScalaは悪い選択じゃない
0311デフォルトの名無しさん
2012/08/25(土) 01:23:05.83わかる気がないやつには一生わからない
まあオブジェクト指向も同じだが
0312デフォルトの名無しさん
2012/08/25(土) 01:23:23.480313デフォルトの名無しさん
2012/08/25(土) 01:23:35.400314デフォルトの名無しさん
2012/08/25(土) 01:46:58.39javaでネイティブコードを生成するプロジェクトは、結局はC言語で開発することがほとんど
scalaを前提にした設計をC言語で実装する悪夢を考えてほしい
0315デフォルトの名無しさん
2012/08/25(土) 02:18:51.98>下流プログラマは、知っている範囲だけでプログラムすれば十分なんだよ。
自分が書くだけなら問題はないが、他人のコードを読む・使うことまで考えると、
使われうる全てのパラダイムを押さえないと言語を使いこなせなくなってしまう
要するにC++ってこと
0316デフォルトの名無しさん
2012/08/25(土) 02:19:01.23CはOOPはできるんだけど、クロージャがないから関数型はしんどい
0317デフォルトの名無しさん
2012/08/25(土) 02:23:44.18だったらJavaで開発するときに言語やフレームワークの仕様を隅々まで把握して使っているのか?と言いたくなる
0318デフォルトの名無しさん
2012/08/25(土) 02:32:39.50比較対象の問題でしょ
個々の機能に関してはシングルパラダイムの言語ほど
洗練されているわけがないので
型理論的にScalaは何か凄いかっていうと、先進的というほどではないし
並列性もそこまで目新しいわけではないし(Erlangみたいに古い例もある)
結局、Scalaに残る独自性は、それらがとりあえず一通り
詰め込まれて一つの言語になっているという事と
Javaとの互換性が考慮されていること
0319デフォルトの名無しさん
2012/08/25(土) 02:56:23.970320デフォルトの名無しさん
2012/08/25(土) 04:05:19.17言ってる自体は一理あると思うけど、元のレスのぼかされてる比較対象は書き方からして、
そーいうシングルパラダイムの洗練された言語ではないだろう。
型理論的にScalaは凄い先進的、かはともかく、核となるは独自性強いというのが自分の見解
見た目的にはJavaの型システムに色々のっけた、ように見えるけど、核にあるのは型をメンバに持てる
オブジェクト、というもので(これはResearchのところみてもらえばわかるかと)、それほど研究されてたもの
じゃないと記憶してる。無論、Scalaが一番先に手をつけた、とも言えないが
並列性は、言語レベルでは特に目新しいことはしてないね。どちらかというとライブラリのレベル。
scala.actorsはもうAkkaに置き換えられるのが決まってるからそっちは念頭に置いてなかった。
Scalaという言語とプラットフォーム自体は、最初はそれほど独自性が無くて、既存の機能のうまい
組み合わせ、という面が強かったけど、最近は良くも悪くも独自性が出てきてる気がするよ。2.10とか
みてるとね…
0321デフォルトの名無しさん
2012/08/25(土) 05:42:05.42Javaの言語やフレームワークの仕様を教育するコストと
Scalaの言語やフレームワークの仕様を教育するコストを比較すると、
Javaの方が低い
理由は、Scalaを選択しても、なんだかんだ言ってJavaAPIとフレームワークを利用させられることになるから
どちらにしろJavaを教育しなければならない
0322デフォルトの名無しさん
2012/08/25(土) 08:19:26.75>>317は、
Scalaわからんとか騒いでるやつはJava言語やフレームワークを熟知してんのか?してないんだろ?
ならScalaでわからんところあっても使えるだろうよ、と言ってるわけで、話ずれてる
教育コスト論としてはもっとも。最近はScalaのライブラリが増えてきたとはいえ、J2SEのAPIは知ってないと
実開発としては使えないし。フレームワークレベルでは、そろそろJavaのを直接使わなければいけない局面
は減ってると思う。「準」標準ライブラリを現状より増やすなり安定させるなりして、J2SEのAPIを直接叩かなければ
いけない場面をもっと減らして欲しいとは思うね。
ただ、Typesafeが先日1400万ドルの投資を受けたニュースのコメント見ると、そういう地味で重要な話より、性能的に
スケールするプラットフォームとしてのScalaに重点を置きそうな気がする。Scalaの大手顧客を考えると無理からぬ話
ではあるが…
0323デフォルトの名無しさん
2012/08/25(土) 09:24:49.73>ならScalaでわからんところあっても使えるだろうよ、と言ってるわけで、話ずれてる
それも大概極論だな。
知っていなければならないことがJavaよりScalaの方が多いってはなしだろ。
「使える」の範囲が狭けりゃ、そりゃあ「使える」だろうよ。
0324デフォルトの名無しさん
2012/08/25(土) 11:05:25.190325デフォルトの名無しさん
2012/08/25(土) 12:03:50.41閾値とコンテキストを適切に定義できればActorでスケーラブルに問題を解ける良い例だなと思った
0326デフォルトの名無しさん
2012/08/25(土) 13:06:49.35だからずれてるって。元のはJava知ってる奴がScala新しく始める前提の話なんだから
JavaプログラマがScalaを開発で「使える」ようになるために知らなければいけない部分と
Java未経験のプログラマがJavaを開発で「使える」ようになるために知らなければいけない部分を
比較しないといけないんじゃね?
俺が思うに、まともなJavaプログラマなら、better JavaくらいのScalaでよけりゃ数日あれば習得できるよ。better Java
を恐れるな(Scalaらしいコードがすぐ書けないことを恐れるな)って言葉をどっかのScala採用企業の技術者が残してたけど、
そういう心理的な側面は大きいと思う。あるいはコミュニティの問題かもしれないが。
知らない土地にいって、その土地らしい作法が出来るか不安がってるような、そんな印象をよくうけるわ
0327デフォルトの名無しさん
2012/08/25(土) 13:12:34.78http://toro.2ch.net/test/read.cgi/tech/1276873238/856
https://github.com/tono-nakae/package-loading-problem
なんでたった200行で出来るのかもう謎技術だ
ここまでくるとJavaの知識に付け焼き刃でどうこうなるレベルじゃねーな
0328デフォルトの名無しさん
2012/08/25(土) 16:28:13.210329デフォルトの名無しさん
2012/08/25(土) 17:21:49.680330デフォルトの名無しさん
2012/08/25(土) 20:28:47.31eed3signさんのtetrix連載でもあるようにテストを書くまでもないちょっとした確認なら
sbtのconsole/console-quickつかってREPLでパパっとできちゃうところ
んで、最終的には清書してテストケースにする
http://eed3si9n.com/tetrix-in-scala-day10
0331デフォルトの名無しさん
2012/08/25(土) 20:33:56.85メガデモみたいなブームを作ろうぜ
200行でつくるFPSとか
0332デフォルトの名無しさん
2012/08/25(土) 21:32:32.27基本的にプログラマはどの言語も熟知してないので、使う=教育 と同意
Javaすらも熟知してないのにScalaなんか使わせたくない
0333デフォルトの名無しさん
2012/08/25(土) 22:34:09.15scalatron AI作成コンぺとか盛り上がってるな
http://geekblog.tv/2005
LEGOマインドストームによるデザイン駆動型開発入門講座とか参考にしてやれば
会社のセミナー費用をカモにしたビジネスモデルにあてはめれるんじゃね?
0334デフォルトの名無しさん
2012/08/25(土) 22:46:44.92ただのプログラミング言語入門として Pascal
一番スタンダードな言語として C
オブジェクト指向言語のオモチャとして Smalltalk
就職に役立つという宣伝で Java
そのまま論文で使える関数型言語として Haskell
記号処理・人工知能用として Scheme
0335デフォルトの名無しさん
2012/08/25(土) 22:55:34.930336デフォルトの名無しさん
2012/08/25(土) 23:02:16.01C++は無理
Lispも無理
0337デフォルトの名無しさん
2012/08/25(土) 23:25:55.600338デフォルトの名無しさん
2012/08/25(土) 23:28:07.15君、大学行ってたの?
別にプログラミング言語なんてそんな教えんよ
せいぜい必修はCとFortranくらいで、あとはLispがあるかどうか
0339デフォルトの名無しさん
2012/08/25(土) 23:30:38.07最近は Fortran も教えない
ただ、先生方が Fortran を使いたがる
Lisp系の場合は、最近はLispじゃなくてSchemeだと思う
0340デフォルトの名無しさん
2012/08/25(土) 23:43:26.940341デフォルトの名無しさん
2012/08/26(日) 00:08:23.040342デフォルトの名無しさん
2012/08/26(日) 00:14:04.03Pascalは教育用言語としてはもう大体駆逐されてる。第一デファクトな処理系がまともに無いし
後は教員によりけり。SMLやOCaml、Schemeの授業やってるところは国公立だと
そこそこある。Schemeは言語仕様がコンパクトでちゃんと定義されてるから、教える
側には扱いやすいってのがあるのかな。Haskellの授業やってる大学もあるけど、
こっちはまだ少ない気がする。
Prologは40代以上の先生だと時々教えてたりする
この辺の年齢の教員はPrologなどの論理型言語に馴染みの深い先生多いから
CSの授業でFortran教えてるところはかなり少ないと思う。どっちかというと他分野で
Fortran使った計算しなきゃいけないので教えてるってケースがほとんど
0343デフォルトの名無しさん
2012/08/26(日) 00:21:33.64大学行ったことない人が想像で発言してるようなラインナップだな
記号処理・人口処理用でSchemeなんてまずやらないよ。どちらかというと関数型プログラミング
を教える題材だったりプログラミング入門だったりする。Smalltalk教えてる大学は相当希少
CとJavaは教えてるところは確かに多い。C教えるのは、後の課程でOSのシステムコールの話
とか教えようと思うと無いとどうしようも無いとか色々。静的型付け関数型言語で
Haskell/SML/OCamlのどれ教えるかは大体教員の得意言語による。NGY大はGarrigue先生
居るせいか、OCamlも教えてるみたいだね
0344デフォルトの名無しさん
2012/08/26(日) 00:29:15.740345デフォルトの名無しさん
2012/08/26(日) 00:56:34.47そもそも大学では、プログラミング言語の習得なんていうことは
学生が自主的にやることであって、いちいち教わることじゃない
Scalaが難しいってぶつぶつ文句言ってるやつとか、
Haskellをやってドヤ顔で高尚なことやってる気になってるやつは、
そんなもんパソコンの使い方を覚えることと同レベルだってことがわかってない
仕事なり研究するなら、できて当然なんだよ
0346デフォルトの名無しさん
2012/08/26(日) 01:03:53.980347デフォルトの名無しさん
2012/08/26(日) 03:11:05.49記号処理の定番テキストがscheme使ってるから、scheme教える大学は多い
MITの罪は重い
0348デフォルトの名無しさん
2012/08/26(日) 03:16:11.50休み明けに投入されるプログラマの方々はプログラム言語などいちいち教わることじゃないどころか勉強すらするものじゃないと思ってるから、
こっちはいちいち教えなければならない
0349デフォルトの名無しさん
2012/08/26(日) 03:34:54.99一番得意な問題領域がJavaとの連携というオチ
0350デフォルトの名無しさん
2012/08/26(日) 03:50:38.96Groovyでも使っとけ
Groovyですら覚えるの面倒臭いなら一生Java使ってろ
まあそうやって本当に一生Javaしか使わないやつなんてごまんと出てくるだろうが
0351デフォルトの名無しさん
2012/08/26(日) 04:11:42.75Scalaで入門だって十分有りだろう
誰得だが
0352デフォルトの名無しさん
2012/08/26(日) 06:26:44.50多く、授業でも Scala を a better Java として使おうかと思ってた
私は異端かな(ちなみに情報処理専門の学科ではない)。
「初学者が躓く点は実は最先端でも難問/難題であることが多い」
のが信条。Scala の REPL とか高校生向きと思う。
0353デフォルトの名無しさん
2012/08/26(日) 08:36:15.700354デフォルトの名無しさん
2012/08/26(日) 09:02:52.69アリだと思うよ。REPLのような対話環境の有無は少なくとも大学でのプログラミング
教育では重要で、ScalaはそのREPLがあるから。入力したプログラムが即座に
実行結果として反映されるかどうかってのは、学生のモチベーションを左右
したりする。
0355デフォルトの名無しさん
2012/08/26(日) 09:03:25.54ただ初学者があれをメインで使うとプログラミングを勘違いしそうな気がする。
あくまで気がするだけだけど。
0356デフォルトの名無しさん
2012/08/26(日) 10:53:07.97あと買ってはいけない読んではいけない書籍も教えて下さい。
0357デフォルトの名無しさん
2012/08/26(日) 12:39:09.230358デフォルトの名無しさん
2012/08/26(日) 12:46:39.19>大学で Java を教えてるとファイル入出力が鬼門な学生たちがあまりに多く、
鬼門というかいちいち説明に時間さくのが勿体ないので、東大京大ではRubyを採用している。
情報工学科で授業で使う言語って、
・Matlab (Scilab,Rの場合も)
・JavaやC (プログラム言語というのはこういうもの、という題材向け)
・Ruby (東大、京大の1年向け教養課程で、情報科学の宿題向けに)
が人気だろ。
言語の授業だったら、Smalltalk,Haskell,Schemとかも教えるかもしれないけど、あくまで言語の授業の題材としてだな。
大学で言語専門でなければ、言語は使うもの。
教えたいのは言語じゃなくて、 情報科学の方だからな。
Matlabでアルゴリズム開発して、速度のためにC言語で再実装するっていうのが多いだろ。
そういう用途では、Scalaで関数言語の特徴生かして、アルゴリズムも実装も一気にやっちゃうのは得策だな。
>>356
> Scalaでおすすめの書籍はどれですか?
・即実践なら、「Scala逆引きレシピ」
・入門なら、「Scalaで学ぶ関数脳入門」
他は、「Scala実践プログラミング」「ボクらのScala 」「プログラミングScala」など。
> あと買ってはいけない読んではいけない書籍も教えて下さい。
本代くらいケチるな。全部買え。
と言いたいところだが、ここでこんな質問するような>356には、通称「コップ本」はムリ。買うな。
0359デフォルトの名無しさん
2012/08/26(日) 12:57:02.18あと、Processingを使って大学で講義することも最近多いな。
情報というよりも、デザイン系の学科での話だけど。
ProcessingもJVM系だから、Scalaとの親和性が高い。
AndroidにもScalaは使える。
Web開発にもScalaは使える。
でも、Scalaはまだまだ若すぎて、使っている人少ない。
5年以内にキラーアプリが出たら状況は変わると思う。
0360デフォルトの名無しさん
2012/08/26(日) 15:11:02.780361デフォルトの名無しさん
2012/08/26(日) 15:19:49.23はい。質問が意味不明か、スレ違いのどちらかですね。
とりあえず、他へ行け!
0362デフォルトの名無しさん
2012/08/26(日) 15:27:14.49コンパイラの講義とか普通にC++知ってることが前提だったりするので、
言語系をやりたい人はC++の基本文法くらいは勉強しとるぞ
0363デフォルトの名無しさん
2012/08/26(日) 17:28:22.26http://www.csg.ci.i.u-tokyo.ac.jp/~chiba/lecture/11/#java
0364デフォルトの名無しさん
2012/08/26(日) 17:42:12.38しかし今東大だったのか…
0365デフォルトの名無しさん
2012/08/26(日) 17:47:51.690366デフォルトの名無しさん
2012/08/26(日) 18:28:09.060367デフォルトの名無しさん
2012/08/26(日) 18:54:46.990368デフォルトの名無しさん
2012/08/26(日) 22:18:18.16ぶっちゃけると、教員もよく理解できてなくてC++を教えなかった
計算機プログラムの入門ならCだけでも十分だったし
実際、10年間の現場の混乱を見る限りC++なんか教えなくて正解だった
0369デフォルトの名無しさん
2012/08/27(月) 11:14:30.04旧国立系の情報処理専門の学科がお隣の学科なのですが、(今日は
有給で自宅からなので書き込み可能)学部教育で C++ を教えようと
頑張った時期もあったけど、学生がついてこれず断念したそうです。
他からみてると C++ が好きな先生は、C++ はどう使うべきかに対し
個性が強く、C++ が好きな先生方同士で衝突してる感があります。
それに C++ が好きな先生の一部は C が C++ のサブセットであるべ
きと主張され、初学者が多い C の学部共通教育で困る場面も多々あ
ります(現在の C の規格は C++ とは別言語として定義されてます)。
スレ違い、すいません。
0370デフォルトの名無しさん
2012/08/27(月) 18:06:15.21Scalaが難しくてついてこれなくなるので、
結局Javaだけ教えて終わることになると思う
0371デフォルトの名無しさん
2012/08/28(火) 01:43:36.660372デフォルトの名無しさん
2012/08/28(火) 11:30:50.12「Scala逆引きレシピ」がいまのところ一番近いのかな<良書。
0373デフォルトの名無しさん
2012/08/28(火) 11:33:23.440374デフォルトの名無しさん
2012/08/28(火) 22:35:05.40最初から最後までScalaだけ使ってコンピュータ科学や計算理論や数値計算を解説する本が欲しい
0375デフォルトの名無しさん
2012/08/29(水) 07:34:09.650376デフォルトの名無しさん
2012/08/29(水) 10:24:05.190377デフォルトの名無しさん
2012/08/29(水) 21:05:05.82教育者のレベルってどんなもんなの?
国立の情報システム科に居たけど、hello wolrd止まりの教授がドヤ顔で講義おしえてたよ
0378デフォルトの名無しさん
2012/08/29(水) 21:06:56.75文法だけ知っててプログラムが組めるわけねーだろw
0379デフォルトの名無しさん
2012/08/29(水) 21:12:20.06教授はソースコードなんて読みません
0380デフォルトの名無しさん
2012/08/29(水) 22:25:03.63hackerあがりの準教が居ない研究室は全て行くだけ無意味な外れクジだよ
viの二画面分割でドヤ顔しているアホ教授のとこなんて特に最低だw
0381デフォルトの名無しさん
2012/08/29(水) 22:44:38.01色々なスタイルや考え方がある中で、
このように自分の考えだけで言い切るような人は、ただのカタブツです。
突っ込みどころも多いため、全面的には信用できません。
しかも、聞かれてもいないのに、
いきなり話題を振り脳内豆知識を披露してきて何がしたいのか全く理解不能。
店の名前も出していないから宣伝だとは思えないですし、
すごいねーもの知りだねーって言われたいだけなのでしょうか?
2chではなく、あなたの信者だけで盛り上がればいいと思います。
0382デフォルトの名無しさん
2012/08/29(水) 23:39:32.42ここは、Scalaのスレだ。
ということで、この辺で、Scalaの話にもどろうぜ!
>374
計算理論って、オートマトンとかか?
数値計算って、ニュートン法とか?
今、流行なのは、データから特徴量抽出とか、信号処理とか、そっち方面じゃない?
で、信号処理関係には、Scalaは得意そうな気がするんだ。
FIRフィルタとか。
0383デフォルトの名無しさん
2012/08/30(木) 00:56:12.11行列演算とパーサとコンパイラ自作
0384デフォルトの名無しさん
2012/08/30(木) 01:03:21.97はやくjava.util.HashMapなどを使わずにすむようにならんかな。
0385デフォルトの名無しさん
2012/08/30(木) 01:12:00.51今の「大規模」はギガバイトレベルだから、大規模データ分析はコンテナじゃなくて、ストリームで処理すべきだと思う
0386デフォルトの名無しさん
2012/08/30(木) 01:55:06.96Javaの場合は何でもボックス化されちゃって
メモリ消費量が想定外に大きくなったりもするけど
0387デフォルトの名無しさん
2012/08/30(木) 02:28:16.850388デフォルトの名無しさん
2012/08/30(木) 07:53:58.73>パーサとコンパイラ自作
これについては、本「実践プログラミングDSL」とかでScalaは大絶賛だな。
ところで、「Scala逆引きレシピ」は、NTTの中の人が著者らしいが、
NTTでは、Scala使っているのか?
> 著者の現場経験に基づいた実践的なノウハウ、レシピを提供します。
とか書いてあるぞ。
0389デフォルトの名無しさん
2012/08/30(木) 09:30:17.64http://www.infoq.com/jp/news/2012/08/azul-zing-free
http://d.hatena.ne.jp/golb/touch/20101105/1288983622
0390デフォルトの名無しさん
2012/08/30(木) 09:50:56.78On Solaris 7 and Solaris 8 SPARC platforms, the upper limit for this
value is approximately 4000m minus overhead amounts. On Solaris 2.6
and x86 platforms, the upper limit is approximately 2000m minus
overhead amounts. On Linux platforms, the upper limit is approximately
2000m minus overhead amounts.
0391デフォルトの名無しさん
2012/08/30(木) 13:36:55.19NTTの人なら、Erlang(かそれに似たアクターモデルの言語)を使ってるはずだから、その経験でScalaの解説をしてると予想
世間で30年くらいオブジェクト指向とか宣伝されてたけど、本当にメッセージパッシングしてるのはErlangやScalaのActorモデルだけだと思う
0392デフォルトの名無しさん
2012/08/30(木) 14:04:51.90好感なんて持たなくて良いです。
教授である貴女方は無能でありゴミであり、税金泥棒で給料泥棒の人の屑です。
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
0393デフォルトの名無しさん
2012/08/30(木) 14:14:36.940394デフォルトの名無しさん
2012/08/30(木) 14:41:22.25http://en.wikipedia.org/wiki/Actor_model
Actor Modelの考え方自体は1973年を起源としていて、
並列モデルとの間で人気が行ったり来たりしているみたいだ。
対応言語もけっこうあるな
0395デフォルトの名無しさん
2012/08/30(木) 14:56:58.22_人人人人_
>Pykka─!!<
 ̄Y^Y^Y^Y ̄
0396デフォルトの名無しさん
2012/08/30(木) 15:06:02.930397デフォルトの名無しさん
2012/08/30(木) 15:36:10.700398デフォルトの名無しさん
2012/08/30(木) 19:45:57.39プリミティブ型を、プリミティブのまま格納するコレクションライブラリとかもあったりする。
最近の分散処理フレームワークは、Scala用のインタフェースを提供してるものもあるね。
手元でやるのは、軽くサンプリングして予備解析とか、集計済みのを分析とか、そういう感じかねぇ。
0399デフォルトの名無しさん
2012/08/30(木) 20:53:10.690400デフォルトの名無しさん
2012/08/30(木) 21:48:16.010401デフォルトの名無しさん
2012/08/30(木) 22:11:27.88http://www.ibm.com/developerworks/jp/linux/library/l-sparkdataanalysis/
0402デフォルトの名無しさん
2012/09/01(土) 13:47:05.760403デフォルトの名無しさん
2012/09/01(土) 20:24:24.020404デフォルトの名無しさん
2012/09/01(土) 20:51:40.53オレは今日のイベントには行ってないけど、
ksknac氏の関数型プログラミングの説明が面白かった。
http://www.slideshare.net/ksknac/120901fp-key
関数型なプログラミングは、どの言語でもできる。
関数型言語っていう言葉は適切でなくて、
たんに関数型でプログラムしやすい言語かどうかって話。
他は、F#とかHaskellばっかりなのかな?
オレは今日のイベントには行ってないので分からない。
kmizu氏のスライド見つからないなあ。
0405デフォルトの名無しさん
2012/09/01(土) 23:02:40.92何が面白いのかさっぱり
関数型言語の定義とかどうでもいいし、そして強烈なHaskell史観
だからHaskellの連中がデカい顔するだけの集まりだから行かないほうがいいって言っただろ?
好きな言語アンケート、Haskellがほぼ全体、Clojureが1人とか終わってるだろ
所詮やつらはHaskellを好きな自分のことが好きなだけ
0406デフォルトの名無しさん
2012/09/01(土) 23:08:47.240407デフォルトの名無しさん
2012/09/01(土) 23:13:36.42まず関数型と関係ないマクロについての発表
この時点でちょっとイベントに喧嘩売ってるのに、さらに当日いきなりボイコット
そして行かないかに見せかけてからの急遽参加でセッションを乱す
完全にこの腐ったイベントを馬鹿にしてるからね
そして発表スライド見るとどう見てもScalaのマクロをディスってるようにしか見えない
セッション参加者の時間を無駄に潰していくスタイル
水島氏は真のScalaテロリスト
0408デフォルトの名無しさん
2012/09/02(日) 00:45:19.180409デフォルトの名無しさん
2012/09/02(日) 02:10:44.72オブジェクト指向関係の仕様についてはJavaよりももっともっと簡素化すべきだったのに、なぜ複雑にした
0410デフォルトの名無しさん
2012/09/02(日) 02:20:21.79どこがどうなのか具体的にいってほしいがね
っていうかErlangは関数型じゃないのかね
0411デフォルトの名無しさん
2012/09/02(日) 02:31:50.74erlangをrubyっぽくした言語もあったな。
0412デフォルトの名無しさん
2012/09/02(日) 02:39:32.72なんだよ、これ、シンタックスがRubyに似てるだけのErlangじゃねーか
よくこんな気持ちの悪いもの作ろうと思ったな
0413デフォルトの名無しさん
2012/09/02(日) 04:06:56.99特にトレイトが余計だった
インターフェイスだけでいい
Javaのオブジェクト指向ですらマトモに理解させるの無理だったのに、なぜ複雑にしたし
オブジェクトプログラミング関係の糖衣構文も不必要に多過ぎる
わざわざJVMの制約入った言語を選んで使う人がタイプ数を少なくすることなんか望んでいない
Erlangは関数型持ってるけど、Scalaの関数型は何か変な言語の関数型を持ってきてる
特に代入
おかげで、似たような通信モデルなのに、自動変換できない
0414デフォルトの名無しさん
2012/09/02(日) 04:18:37.30Javaを理解できない人がいるように>413がScalaを理解できないだけ
0415デフォルトの名無しさん
2012/09/02(日) 05:10:14.450416デフォルトの名無しさん
2012/09/02(日) 05:56:55.95それによって表現力が増していたり記述が簡潔になっていたりする面もあるので
トレードオフではある
とりあえずBetter Javaの部分と、
一般的な関数型言語の部分(高階関数とか)を使う分には
おいしいところだけを得られて良い感じになるんじゃないの
0417デフォルトの名無しさん
2012/09/02(日) 10:38:12.10Nemerleとの比較で△が多くて残念だけど。
割とフツーのマクロで地味に嬉しいと書いてるじゃん。
0418デフォルトの名無しさん
2012/09/02(日) 11:09:11.060419デフォルトの名無しさん
2012/09/02(日) 11:24:23.36Scalaのマクロはうんこって事
0420デフォルトの名無しさん
2012/09/02(日) 12:13:51.14「参照透過性を満たしているかは値域で決まる」って話でしょ。
すげぇ重要な話だし勉強になったが。
0421デフォルトの名無しさん
2012/09/02(日) 15:00:52.13書いた本人すら理解できないコードを保守する側の身にもなってくれとしか
0422デフォルトの名無しさん
2012/09/02(日) 15:27:12.99保守と理解と生産性と過去との整合性のバランスが一番いいのは、C言語からポインタとビット演算を削除した言語
C言語からポインタとビット演算削除して、ポインタとビット関係は関数で抽象化して、関数型とクロージャの代入を取り入れて、Erlangのアクターモデルを取り入れるという方向で言語作ってくさい
0423デフォルトの名無しさん
2012/09/02(日) 15:58:46.960424デフォルトの名無しさん
2012/09/02(日) 16:02:56.37Javaの資産を利用したいから
逆に、JVMとJavaの資産を無視できるならScalaを使うメリットはない
0425デフォルトの名無しさん
2012/09/02(日) 16:08:49.11プログラム全部をクロージャで表現できるなら、schemeみたいに自分でグレードダウンした処理系を設計できるのに
0426デフォルトの名無しさん
2012/09/02(日) 16:14:03.190427デフォルトの名無しさん
2012/09/02(日) 16:19:48.730428デフォルトの名無しさん
2012/09/02(日) 16:20:26.250429デフォルトの名無しさん
2012/09/02(日) 16:23:14.58Clojure はアクターモデルじゃないから
Scalaはアクターモデル採用したのに、何でだろ
0430デフォルトの名無しさん
2012/09/02(日) 19:04:52.13あと、OO理解できない人間ほどOO不要論を唱えるよね。
いまさら劣化Cで複雑なプログラム書くとか正気とは思えん。
0431デフォルトの名無しさん
2012/09/02(日) 19:30:53.51有名といってもたかが知れてる感はあるけど
非常に高度な無停止性を実現したケースだったはず
アクターとかCSPとかデータフローとかペトリネットとか
並行性を含んだモデルは昔からあるけど
少なくとも今のところメジャーになった言語には採用されてないね
0432デフォルトの名無しさん
2012/09/02(日) 19:40:08.85言語本体じゃなくてライブラリで実装してる機能じゃん
Clojureもライブラリで実装すればいいじゃん
0433デフォルトの名無しさん
2012/09/02(日) 22:24:19.71それは知らなかった。サンクス。
まぁでも、最近は大規模データ処理と言えば猫も杓子もMapReduceかCEPな感じがする。
何が普及を妨げてるんだろう。
0434デフォルトの名無しさん
2012/09/02(日) 22:31:17.68OO理解できない人間が作ったプログラムを保守させられてきた人間ほどOO不要論を唱える
OO理解できない人間はOO不要論は唱えない
0435デフォルトの名無しさん
2012/09/02(日) 22:34:58.84アクタごとにプロセス(スレッドではない)を生成するからAPIインクルードすれば使えるというわけじゃない
0436デフォルトの名無しさん
2012/09/02(日) 23:19:06.52それはOO理解できない人間にプログラマを名乗らせて人月単価を上積みしてるビジネスモデルの問題だろ。
0437デフォルトの名無しさん
2012/09/02(日) 23:48:01.35Actorはスレッドプールからのリソースを割り当てられて実行される計算コンテキストの単位なので
プロセスじゃないぞ
0438デフォルトの名無しさん
2012/09/03(月) 00:09:02.27アクタモデルのプロセスはスレッドではない(OSのプロセスでもない)
0439デフォルトの名無しさん
2012/09/03(月) 00:09:53.95つまり、日本の実務ではScalaを使ってはいけないということか…
0440デフォルトの名無しさん
2012/09/03(月) 00:13:03.89シャロウコピーで参照先は共有?
0441デフォルトの名無しさん
2012/09/03(月) 00:18:39.55プロセスだとどうしてダメなのか説明してください。
現にscalaではActorはライブラリとして実装されているというのに。
0442デフォルトの名無しさん
2012/09/03(月) 00:35:24.98言語によっては、専用構文とかを用意して
そのモデルの活用を支援している事がある
もちろん、より記述しやすくなることが多い。そういうのを指しての話
0443デフォルトの名無しさん
2012/09/03(月) 00:53:05.050444デフォルトの名無しさん
2012/09/03(月) 01:00:27.540445デフォルトの名無しさん
2012/09/03(月) 01:01:53.240446デフォルトの名無しさん
2012/09/03(月) 01:05:23.390447デフォルトの名無しさん
2012/09/03(月) 01:09:35.67アクターモデルだから当然ディープコピー
0448デフォルトの名無しさん
2012/09/03(月) 02:41:39.850449デフォルトの名無しさん
2012/09/05(水) 21:27:22.080450デフォルトの名無しさん
2012/09/06(木) 09:50:11.670451デフォルトの名無しさん
2012/09/06(木) 10:24:53.77最初からjavaでは書きたくなかったんだろうな
0452デフォルトの名無しさん
2012/09/06(木) 10:40:49.86いいえ、こびとさん
それはアクターでなくて夜を往くアイドルなのでは?
0453デフォルトの名無しさん
2012/09/07(金) 00:30:30.29scalaちゃんかわいいよ。スーハースーハー
0454デフォルトの名無しさん
2012/09/08(土) 01:00:15.540455デフォルトの名無しさん
2012/09/13(木) 21:15:53.68import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class ScalaRoid extends Activity{
override def onCreate(savedInstanceState: Bundle){
super.onCreate(savedInstanceState)
val tv = new TextView(this)
tv.setText("わたしはスカラロイドちゃん!")
setContentView(tv)
}
}
0456デフォルトの名無しさん
2012/09/15(土) 19:46:26.16TMA完成でスカラロイドちゃんが3次元に!
0457デフォルトの名無しさん
2012/09/16(日) 21:45:45.21いままで、JavaはGUIが弱かったけど、JavaFX2.0でようやくまともなGUIが使える?
0458デフォルトの名無しさん
2012/09/16(日) 23:51:37.090459デフォルトの名無しさん
2012/09/17(月) 00:22:42.94JavaAPI直接使う以外にもScalaバインディングはあって簡便な記述できるらしい
でも現時点ではFX自体の完成度がいまいちって話も聞くんで短期的にはSwing/SWT使い続けるほうが
0460デフォルトの名無しさん
2012/09/17(月) 11:48:43.960461デフォルトの名無しさん
2012/09/17(月) 14:39:38.87携帯やWebならもっと普及してるのだろうか
0462デフォルトの名無しさん
2012/09/17(月) 15:43:12.20scalafxがある
http://code.google.com/p/scalafx/
でもまだ開発中っぽいね
0463デフォルトの名無しさん
2012/09/17(月) 18:02:02.96そう、scalaならね
0464デフォルトの名無しさん
2012/09/18(火) 00:53:30.50もはやフロントエンドで使う言語じゃないしな。
JavaFXでRIAとして復権を目論んだものの失敗し、最近ではセキュリティホールの元凶扱い。
0465デフォルトの名無しさん
2012/09/19(水) 00:07:21.97透過的な設計というのも善し悪しだな…
明示的制御機能がなくなって個人的には悪化した
0466デフォルトの名無しさん
2012/09/19(水) 00:11:49.85これが言いたかっただけだろw
0467デフォルトの名無しさん
2012/09/19(水) 00:18:23.89汗水流して働いてお金稼げと
0468デフォルトの名無しさん
2012/09/19(水) 02:56:19.760469デフォルトの名無しさん
2012/09/19(水) 06:10:44.31オービタルぐらいに留めておくべき
0470デフォルトの名無しさん
2012/09/20(木) 11:58:44.47関数型ですねわかります
0471デフォルトの名無しさん
2012/09/26(水) 22:48:47.39生産性10倍なんだろ?
0472デフォルトの名無しさん
2012/09/26(水) 23:04:19.220473デフォルトの名無しさん
2012/09/27(木) 00:32:59.89Scalaって、OpenJDKで動かしたりしてる?
0474デフォルトの名無しさん
2012/09/27(木) 01:21:04.840475デフォルトの名無しさん
2012/09/27(木) 07:49:47.32何が違うのかな
0476デフォルトの名無しさん
2012/09/27(木) 10:14:48.810477デフォルトの名無しさん
2012/09/28(金) 00:15:27.10Scala2.9をOpenJDKで常用しているみたいだし、
別に珍しくもなんともないだろ。
0478デフォルトの名無しさん
2012/09/28(金) 06:08:49.81それおらだ Ubuntu で何も考えずに環境作ったら OpenJDK だったのでそのままにしてる
Sun環境も作ってるけどね
0479デフォルトの名無しさん
2012/09/28(金) 12:10:40.03https://www.coursera.org/course/progfun
Scalaの作者Odersky先生による無料の授業とかやってるらしい
0480デフォルトの名無しさん
2012/09/28(金) 23:11:30.630481デフォルトの名無しさん
2012/09/29(土) 08:05:35.820482デフォルトの名無しさん
2012/09/29(土) 09:23:00.350483デフォルトの名無しさん
2012/09/29(土) 11:12:07.870484デフォルトの名無しさん
2012/09/29(土) 12:22:02.04> 先生に後方互換性完全無視した夢のscalaを語って欲しい
おまえ、分かり辛い書き方するから、勘違い君が増殖しちゃったじゃないか!
おまえが480で言いたかったことは
「Odersky先生に、 もしも、互換性無視で新たにScalaを作るとしたら、
どんなScalaにしますか?って聞いてみたいわ〜キラキラ」
でしょ。
まさに、チラシの裏に書けって。
0485デフォルトの名無しさん
2012/09/29(土) 14:20:21.240486デフォルトの名無しさん
2012/09/29(土) 15:10:44.330487デフォルトの名無しさん
2012/09/29(土) 17:38:55.380488デフォルトの名無しさん
2012/09/29(土) 23:46:13.04res0: Int => Int = <function1>
ブロックに => 記法が入っていると関数になっちゃうのは何故?
{ x: Int =>
x * 2
}
というふうに使う。
コップ本のどこに書いてあるとか、くらいでもいいので知りたい。
本家の言語使用のブロックの所を一読したが不明だった。
scala> { println("foo"); x: Int =>; println("bar"); y: Int =>; println("baz") }
foo
res1: Int => Int => Unit = <function1>
scala> res1(1)
bar
res2: Int => Unit = <function1>
scala> res2(1)
baz
とかとか。
0489デフォルトの名無しさん
2012/09/30(日) 00:50:53.82http://yuroyoro.hatenablog.com/entry/20100316/1268735022
http://d.hatena.ne.jp/qtamaki/20120730/1343630511
mutable.Set += this と mutable.Set -= this の部分。
なんか scala 書いてる有名な人?っぽいし、俺の理解が間違ってるのかもしれなくて不安なので誰か教えて。
あとこういうときってどうやってスレッドセーフにするのが良いの?
scala> var clients = scala.collection.mutable.Set.empty[Int]
scala> (1 to 100*10000).par.foreach((n) => clients += n)
scala> println(clients.size)
836536
0490デフォルトの名無しさん
2012/09/30(日) 01:18:48.77scala> var clients = new mutable.HashSet[Int] with mutable.SynchronizedSet[Int]
scala> (1 to 100*10000).par.foreach((n) => clients += n)
scala> println(clients.size)
1000000
0491デフォルトの名無しさん
2012/09/30(日) 02:10:11.73言語仕様の文法部分に書いてあることはある。すっげえわかりにくいけど
6.11 Blocks の構文規則が
BlockExpr ::= ‘{’ Block ‘}’
Block ::= {BlockStat semi} [ResultExpr]
ってなってて、6.23 Anonymous Functionsで
ResultExpr ::= (Bindings | ([‘implicit’] id | ‘_’) ‘:’ CompoundType) ‘=>’ Block
として定義されてるので、{x: Int => x* 2} みたいなのは、{ ... } 全体でBlockExprで、
最後がx: Int => x * 2なので、ResultExprのパターンに当てはまる…んだが、無駄にわかりにくい
{x => ... }形式の無名関数は通常の形式より後で導入されたので、こんなわかりにくい書き方になってる
んだろうと思う
0492デフォルトの名無しさん
2012/09/30(日) 02:20:17.83{ println("foo"); x: Int =>; println("bar"); y: Int =>; println("baz") }
は解釈としては、ブロックの中で x: Int => が出てきた時点で、残りの部分全体がBlockになるので、実質的に
{ println("foo"); (x: Int) => { ; println("bar"); (y: Int) => { ; println("baz") } } }
のように差し支えない
0493デフォルトの名無しさん
2012/09/30(日) 04:54:50.75ふつーにconcurrentコレクションつかえばいいだけの話だろ
- java.util.concurrent.CopyOnWriteArraySet
http://dev.eclipse.org/svnroot/rt/org.eclipse.jetty/jetty/trunk/test-jetty-webapp/src/main/java/com/acme/WebSocketChatServlet.java
- scala.collection.mutable.ConcurrentMap
- scala.collection.mutable.{SynchronizedBuffer, SynchronizedMap, SynchronizedPriorityQueue, SynchronizedQueue, SynchronizedSet, SynchronizedStack}
- scala.concurrent.*
0494488
2012/09/30(日) 14:05:55.44ありがとうございます。自分でも書き込んだ後仕様書を見てて気づきました。
最初読んだときは
Block ::= {BlockStat semi} [ResultExpr]
の { を '{' と空目してわかんなかった。
便利だけど、少し奇妙な文法だ。
0495488
2012/09/30(日) 14:43:09.24みたいな動機があってひねり出したんだろうか。
0496デフォルトの名無しさん
2012/10/02(火) 13:49:11.770497デフォルトの名無しさん
2012/10/03(水) 23:38:13.850498デフォルトの名無しさん
2012/10/07(日) 00:17:50.210499デフォルトの名無しさん
2012/10/12(金) 19:49:41.430500デフォルトの名無しさん
2012/10/12(金) 20:21:21.63http://d.hatena.ne.jp/razon/20111207/1323264726
0501デフォルトの名無しさん
2012/10/12(金) 21:43:02.590502デフォルトの名無しさん
2012/10/13(土) 00:39:47.43それはさておきIntellij使ってみたけどこりゃ便利だな
色々親切すぎてもうscala-modeには戻れんわ
0503デフォルトの名無しさん
2012/10/13(土) 10:38:11.550504デフォルトの名無しさん
2012/10/13(土) 11:41:28.770505デフォルトの名無しさん
2012/10/13(土) 12:19:23.070506デフォルトの名無しさん
2012/10/13(土) 13:48:17.280507デフォルトの名無しさん
2012/10/14(日) 09:13:41.11passwordthing-scalaをテンプレートとしてアプリ作ろうと思ったら、ハマってしまった。 難解すぐる。
一応、仕上げたけど、javaハイレベル出身者でも、ハードルは高い。 scalaとplay2のマッチは頭痛が痛い。
0508デフォルトの名無しさん
2012/10/14(日) 18:31:50.500509デフォルトの名無しさん
2012/10/14(日) 20:10:56.64敢えて使う理由が無い。
0510デフォルトの名無しさん
2012/10/14(日) 20:31:12.55Java以外の言語を使いこなすことが困難になるからね
「敢えて使う理由が無い」というより「使いたくても使えない」が正しい
0511デフォルトの名無しさん
2012/10/14(日) 21:18:24.050512デフォルトの名無しさん
2012/10/14(日) 21:42:07.460513デフォルトの名無しさん
2012/10/14(日) 22:44:36.20http://web.archive.org/web/20080727024157/http://local.joelonsoftware.com/mediawiki/index.php/Javaスクールの危険
http://d.hatena.ne.jp/gothedistance/touch/20070108/1168183689
0514デフォルトの名無しさん
2012/10/15(月) 00:16:26.28>私のような新卒でIT業界に入ってきてJavaでプログラムを覚えた人間、即ち大量生産されるJavaプログラマは、
↑あほくさ。
ここ数年、新卒の学生は、むちゃくちゃ優秀なのが多いので、何の話をしているのだかサッパリ。
自分が優秀でないのを、言語のせいにするとか意味不明。
COBOLを今だにやってるオッサンだったら、言語のせいにしても良いが。
Javaに関してはAndroidで息を吹き返したが、Scalaはキラーアプリがまだないかもね。
0515デフォルトの名無しさん
2012/10/15(月) 00:36:38.36独自の立ち位置を持ってるから、Scalaもなんとなく便乗できるんじゃね
0516デフォルトの名無しさん
2012/10/15(月) 07:50:27.23POJO頼りならscalaなんて無理無理 w
0517デフォルトの名無しさん
2012/10/15(月) 09:27:24.310518デフォルトの名無しさん
2012/10/19(金) 20:45:10.930519デフォルトの名無しさん
2012/10/19(金) 21:50:50.950520デフォルトの名無しさん
2012/10/19(金) 22:40:17.660521デフォルトの名無しさん
2012/10/19(金) 23:19:45.58東北、関東、なごや、倉敷 とかでやってるみたいだが、
どこも遠いのでいけなくて残念。
0522デフォルトの名無しさん
2012/10/20(土) 10:54:37.66> スイスって、国の産業とかを大切にする国だよなあ。
かつてスイス最大の産業は傭兵。
0523デフォルトの名無しさん
2012/10/20(土) 11:11:59.050524デフォルトの名無しさん
2012/10/20(土) 15:38:23.820525デフォルトの名無しさん
2012/10/21(日) 21:36:41.570526デフォルトの名無しさん
2012/10/23(火) 08:39:59.62> 2.10はまだか
注目の機能は?
0527デフォルトの名無しさん
2012/10/23(火) 17:26:36.60String Interpolation
Value Class
Implicit Class
0528デフォルトの名無しさん
2012/10/23(火) 22:15:08.66akkaの統合
0529デフォルトの名無しさん
2012/10/25(木) 23:45:36.06日経ソフトウェアは、結構な頻度でScalaを取り上げているなあ。
でも、毎回入門ばっかりなんだけど、、。
0530デフォルトの名無しさん
2012/10/27(土) 13:20:10.790531デフォルトの名無しさん
2012/10/27(土) 16:05:32.270532デフォルトの名無しさん
2012/10/28(日) 21:53:54.48環境にもよる気がするが・・・。
0533デフォルトの名無しさん
2012/10/29(月) 03:07:07.76fsc とか sbt 使うぶんにはそれほど気にならないけど。
どうやってコンパイルしてんの?
0534デフォルトの名無しさん
2012/10/29(月) 03:40:22.450535デフォルトの名無しさん
2012/10/29(月) 07:04:20.94まあ遅いのは確かなんだけど。
2.9.1.finalでコンパイル速度が改善されたって記事どっかで見た気がするから、
それ以前のバージョン使ってた人ならもう一度試してみてもいいんじゃないかね
0536デフォルトの名無しさん
2012/10/29(月) 07:06:21.00http://www.quora.com/Scala/Is-Scala-compile-time-likely-to-improve-in-the-future
0537デフォルトの名無しさん
2012/10/29(月) 11:55:39.55http://typesafe.com/company/careers
0538デフォルトの名無しさん
2012/10/29(月) 19:25:04.470539デフォルトの名無しさん
2012/10/30(火) 09:53:44.850540デフォルトの名無しさん
2012/10/30(火) 10:33:04.272年くらい前かな。
2コアのしょぼいマシンでLINUXとかiMacでMacPorts経由とか。
>>539
エスパーか?5年前のラップトップなんだけど、最近の良いマシンがどの程度かよく知らないです。
0541デフォルトの名無しさん
2012/10/30(火) 10:34:24.570542デフォルトの名無しさん
2012/10/30(火) 12:51:40.09こんな遅いの使えるか!とかさんざん愚痴を漏らしつつ、
重たいソフトを拒否して、古いソフトばっかり使っていたら、、、、
周りはふつうにi5,i7マシンを使っていて、最近のソフトでサクサク仕事をやっていた、、、、でござる。
0543デフォルトの名無しさん
2012/10/31(水) 23:52:13.27結局、開発速度だけがボトルネックになってる
0544デフォルトの名無しさん
2012/11/01(木) 05:50:52.51ビルドの速度は開発速度の一部だったりしないかい?
0545デフォルトの名無しさん
2012/11/01(木) 08:45:47.73CPUでいう各ステージの並列動作と予測分岐みたいなものだからな
演算ステージが人間のおつむだからボトルネックになるってことだろ
0546デフォルトの名無しさん
2012/11/01(木) 09:25:05.05出直してくる
0547デフォルトの名無しさん
2012/11/01(木) 10:04:55.76いいな〜
日本の会社でそこまでテスト環境整備する余裕のある会社ってあるんですか?
IT業界でもそこまでやってるとは思えないんですが。
反射的に某G社しか浮かばない・・・。
0548デフォルトの名無しさん
2012/11/01(木) 10:13:20.3710年待たずに首を吊ることになるぞ
G社のように才能を持った人材が流動的に要職を担ってるのが現在の会社の形態なんだよ
0549デフォルトの名無しさん
2012/11/01(木) 12:34:27.610550デフォルトの名無しさん
2012/11/01(木) 15:58:24.00「sbtで~test」
一部上場どころか全部上場する勢いだ!!
0551デフォルトの名無しさん
2012/11/01(木) 18:17:43.310552デフォルトの名無しさん
2012/11/01(木) 20:15:41.17"日本の会社でそこまでテスト環境整備する余裕のある会社ってあるんですか? "
いくらでもあるだろ。。。どんなひどい会社にいるんだ
0553デフォルトの名無しさん
2012/11/01(木) 20:26:59.02WEB系は自動テストが難しいのでコンパイルが通るかだけチェックして、テスタに投げてしまう
0554デフォルトの名無しさん
2012/11/01(木) 22:35:18.620555デフォルトの名無しさん
2012/11/01(木) 22:55:11.880556デフォルトの名無しさん
2012/11/02(金) 01:53:16.39HTMLコードを動的生成するヤツ
データベースと連携するヤツ
クライアントのクッキーもらうヤツ
0558デフォルトの名無しさん
2012/11/02(金) 02:16:30.930559デフォルトの名無しさん
2012/11/02(金) 04:59:37.840560デフォルトの名無しさん
2012/11/02(金) 19:39:42.42だが、スレチのネタでここまで盛り上がるとは、最近話題ないんだな・・・。
ver3.0台の構想とかないの?
0561デフォルトの名無しさん
2012/11/02(金) 21:06:35.710562デフォルトの名無しさん
2012/11/02(金) 21:30:17.00ver3.0の話は全くでてないが、2.10の後のことは少しだけ話出てるぞ
https://groups.google.com/forum/?fromgroups=#!searchin/scala-internals/next$20version/scala-internals/xvhvgqBXFtE/2hla7fCODMMJ
0563デフォルトの名無しさん
2012/11/04(日) 19:33:54.400564デフォルトの名無しさん
2012/11/05(月) 20:18:24.50必須ではない。Scalaをよりpurely functionalに使いたいなら便利。ただ、数名のチームで、全員がscalazのコンセプトを理解してる状況でなきゃ使えないと思う
アプリケーションよりライブラリ設計者に有用なライブラリというのが私見
Scalaのライブラリ/フレームワーク設計者でscalazを使ってる人は少なくないし
0565デフォルトの名無しさん
2012/11/05(月) 20:38:47.050566デフォルトの名無しさん
2012/11/05(月) 23:33:14.85小田隙先生はScalazの人たちと少し距離を取ってる節があるし、たぶん入らない。Scalazそのものが悪いというわけ
でもないのだけど、Scalazの人の一部はしばしば過激な言説でもめたりするので、自分も少し苦々しく思ってる部分があったり
とはいえ、Specs 2の内部とか、縁の下の色々なところで使われてるのも事実
0567デフォルトの名無しさん
2012/11/05(月) 23:54:26.19http://www.slideshare.net/asami224/scala-9728001
http://www.slideshare.net/asami224/monadic-14014281
0568デフォルトの名無しさん
2012/11/06(火) 00:26:03.39型推論の弱さに気が狂いそうになる
0569デフォルトの名無しさん
2012/11/06(火) 08:07:14.21こんな構文あったっけ
0570デフォルトの名無しさん
2012/11/06(火) 22:38:03.580571デフォルトの名無しさん
2012/11/06(火) 23:04:06.660572デフォルトの名無しさん
2012/11/06(火) 23:55:48.050573デフォルトの名無しさん
2012/11/06(火) 23:57:25.660574デフォルトの名無しさん
2012/11/07(水) 01:17:02.370575デフォルトの名無しさん
2012/11/07(水) 01:26:19.97少なくとも2.7から
⇒ === =>
← === <-
ぶっちゃけ使う機会はないし、使ってるのもほとんどみないけど
Scalazは普通にUnicode演算子が結構あって、Scalazキーボード配置というネタがあったり
http://www.cakesolutions.net/teamblogs/2011/09/13/u-s-lisp-keyboard-layout/
0576デフォルトの名無しさん
2012/11/07(水) 01:31:30.80入力が面倒ってか?
日本人だと、日本語IMEを使えばそんなに面倒でもないけど、
英語文化圏の人は、λ とかどうやって入力するんだ??
0577デフォルトの名無しさん
2012/11/07(水) 03:20:04.56これ嫁
"Scalaにおける型パラメータの部分適用 [({type F[X] = G[A,X]})#F] について"
http://yuroyoro.hatenablog.com/entry/2012/08/02/153418
0578デフォルトの名無しさん
2012/11/10(土) 09:45:09.49ありがとん、読んだ
コレ使えばtype Y[A] = X[A, Int]と部分適用するのにいちいち別名で定義しなくても
その場限りの無名な型コンストラクタが使えるぜ!!って感じなのね
0579デフォルトの名無しさん
2012/11/10(土) 13:15:46.46>>578
どうでもいいツッコミだが、これって「その場で使い捨ててる」けれど、無名じゃなくて名前を一旦つけてるような
0580デフォルトの名無しさん
2012/11/10(土) 14:30:05.870581デフォルトの名無しさん
2012/11/10(土) 18:50:59.96前スレ眺めてちょっと思い出に浸った
0582デフォルトの名無しさん
2012/11/10(土) 19:41:45.910583デフォルトの名無しさん
2012/11/10(土) 22:16:10.91http://tech.furyu.jp/blog/?p=1884
DBまわりも発展途上で決定打がないのでいろいろやってるみたい。
そしてPlay2使ってる人たちの@IT連載が増えてた
http://www.atmarkit.co.jp/fjava/index/index_play.html
http://www.atmarkit.co.jp/ait/articles/1210/26/news018.html
0584デフォルトの名無しさん
2012/11/11(日) 13:50:23.170585デフォルトの名無しさん
2012/11/11(日) 14:05:42.930586デフォルトの名無しさん
2012/11/11(日) 14:21:01.52Scalaはすべて調和と秩序で成り立っている
0587デフォルトの名無しさん
2012/11/11(日) 18:21:52.26汝が混沌を覗き込むとき、混沌もまた汝を覗き込んでいるのだ。
0588デフォルトの名無しさん
2012/11/11(日) 18:46:31.96に見えた
0589デフォルトの名無しさん
2012/11/11(日) 19:25:16.40マクロはexperimentalなので、明示的にimportしないと使えない。
他にもhigher-kinded typesなど「高度な」機能はimportしないと
警告出る。将来的にはコンパイルエラーになる。2.10以降のScalaは
「高度な」機能をデフォルト状態でOFFにすることで、(普通のユーザにとっての)
複雑さを減らす方針
0590デフォルトの名無しさん
2012/11/11(日) 22:30:29.18DBやWEB向けの内部DSLが簡潔になるはずではある。
http://eed3si9n.com/ja/scala-macros-scaladays2012
0591デフォルトの名無しさん
2012/11/11(日) 23:07:51.86といっても、みんながそれやって使い出したら初心者も結局マクロ使われたコード目にすることになるだろ
0592デフォルトの名無しさん
2012/11/12(月) 04:01:35.610593デフォルトの名無しさん
2012/11/12(月) 19:09:44.55∧,,∧ ∧,,∧
∧ (´・ω・) (・ω・`) ∧∧
( ´・ω) U) ( つと ノ(ω・` )
| U ( ´・) (・` ) と ノ
u-u (l ) ( ノu-u
`u-u'. `u-u'
0594デフォルトの名無しさん
2012/11/18(日) 22:58:36.45明示的にimportすることで、
あ、このimport文があるってことは、これを使った文があるわけだ、
というのが分かる。
初心者にとってありがたいのは、検索するときのキーワードが分かるかどうかってこと。
ま、おまいさんが心配するほどのことじゃないってことだ。
0595デフォルトの名無しさん
2012/11/19(月) 02:47:12.810596デフォルトの名無しさん
2012/11/19(月) 23:05:40.62> import *
だから、そういう心配はしなくて良いって。
0597デフォルトの名無しさん
2012/11/20(火) 00:03:56.110598デフォルトの名無しさん
2012/11/23(金) 22:57:57.58単なるGUIライブラリかと思っていたら、スクリプトっぽいな。
変数の型の指定とかって、Scalaに似ている。
バインドとかトリガーっていうのは言語として面白いね。
ScalaFxっていうのがあるけど、
Scalaから JavaFXを呼び出したりとかいう使い方は、しないものだろうか?
0599デフォルトの名無しさん
2012/11/24(土) 06:09:52.24それは初代JavaFXの事で、既に(開発自体が)オワコンになってる
今JavaFXと言われてるのはJavaFX 2の事で、これはSwingの後継というと違うけど、単なるJava(JVM)用GUIライブラリ
ScalaFXはJavaFX 2のラッパー(ScalaFXはまだまだ開発中っぽいけど)
0600デフォルトの名無しさん
2012/11/24(土) 10:33:05.33> >>598
> それは初代JavaFXの事で、既に(開発自体が)オワコンになってる
なるほど、
昔は、JavaFxスクリプトって呼ばれてたものなあ。
今更、スクリプト(=言語)が増えるよりかは、JVM上のライブラリーが向上するほうが嬉しいよね。
>ScalaFXはまだまだ開発中っぽいけど)
GUI部分は、Javaで書いて、Model,Controller部分のScalaから classを呼び出すって使い方で十分な気がするけど。
0601デフォルトの名無しさん
2012/11/25(日) 17:38:06.49Visage、ScalaFX、GroovyFXのオープンソースプロジェクトをOracleの中の人が管理してるみたい。
http://www.slideshare.net/mobile/steveonjava/cleaner-apis-cleaner-uis-with-visage-33rd-degrees
http://www.slideshare.net/steveonjava/javafx-2-and-scala-like-milk-and-cookies-33rd-degrees
0602デフォルトの名無しさん
2012/11/27(火) 19:37:47.820603デフォルトの名無しさん
2012/11/27(火) 23:43:51.10Issues
In this release, we've fixed ~500 issues with ~800 (non-blocking) remaining.
まだバク報告増えていってるし難しそうだね。
0604デフォルトの名無しさん
2012/11/28(水) 00:11:27.19Scala Days 2013(春頃)に合わせるくらいでちょうどいいんじゃないかなあ
0605デフォルトの名無しさん
2012/12/02(日) 19:41:54.43型パラメータ「Repr」って何ていう単語の略ですか?
0606デフォルトの名無しさん
2012/12/02(日) 20:22:54.36http://eed3si9n.github.com/scala-collections-impl-doc-ja/collections-impl_2.html
0607デフォルトの名無しさん
2012/12/03(月) 03:01:01.710608デフォルトの名無しさん
2012/12/12(水) 18:01:23.70こう書く代わりに
"hogehoge".contains(List("hoge"))
こう書いてしまったんですが、なぜかコンパイルエラーにならず、しかもfalseになったのですが?
Scalaさんの気持ちが解らないのですが、どういうことなんですか?
0609デフォルトの名無しさん
2012/12/12(水) 18:19:14.670610デフォルトの名無しさん
2012/12/12(水) 21:05:34.32Aでよくないかコレ?
0611デフォルトの名無しさん
2012/12/14(金) 13:12:40.61def contains[A1 >: A](elem: A1): Boolean
になってる
なので、そのうちScalaさんの方が >> 608 の気持ちを解ってくれるようになるんじゃないかな
たぶん
0612デフォルトの名無しさん
2012/12/14(金) 22:47:45.11よく見てみたら、saclac と打ち込んでた
ずっと「サクラ」だと思ってました
0613デフォルトの名無しさん
2012/12/15(土) 07:49:36.220614デフォルトの名無しさん
2012/12/17(月) 12:31:00.97CとかGOとか。
それはさておき、Java6のjrunscript と scala を組み合わせて使っている人いる?
0615デフォルトの名無しさん
2012/12/17(月) 12:33:53.66それだけじゃなくPHPが流行ってからCの検索がさらにやりにくくなった
0616デフォルトの名無しさん
2012/12/27(木) 20:27:37.120617デフォルトの名無しさん
2012/12/27(木) 23:31:18.240618デフォルトの名無しさん
2012/12/27(木) 23:42:22.91ちょっとした使い捨てスクリプトも簡単に書ける
0619デフォルトの名無しさん
2012/12/27(木) 23:51:55.630620デフォルトの名無しさん
2012/12/28(金) 05:03:29.170621デフォルトの名無しさん
2012/12/28(金) 08:45:48.130622デフォルトの名無しさん
2012/12/29(土) 03:42:49.63最大の理由はマルチパラダイムという点。Scalaはオブジェクト指向と関数型
の二つをパラダイムを融合させたマルチパラダイム言語ということになってい
ますが、これまでオブジェクト指向と論理型や、関数型と論理型などなどマル
チパラダイム言語は数多く提案されてきましたが、普及した言語は皆無。その
理由は簡単、多くのプログラマーは、ひとつのパラダイムでも使いこなせない
のが現実。そうなるとマルチパラダイム言語は身に付けないといけないパラダ
イムが複数あるわけで、使いこなせない。逆に言うと相当、優秀なプログラマー
でないと使いこなさないはず。Scalaが普及するとしたら、メニーコアプロセッ
サを前提に、関数型の特質をうまくつかって、副作用の少ない並行プログラミ
ングだと思います。というのは並行プログラミングも逐次プログラミングと比
べると格段に難易度が高いので、その難易度についていけるプログラマーなら
ばオブジェクト指向と関数型の二つをパラダイムを使いこなせるかも、という
のが理由。
こうかくとScalaに否定的に思われるかもしれませんが、普及する言語という
のは、できるプログラマーに好かれるだけでは十分ではなく、そうではないプ
ログラマーにも敷居の低いことは要件なんですよね。逆に言うと圏論や型推論
など、一般のプログラマーには難しい理論を要求する言語というのは普及は難
しいのではないでしょうかね。もちろん完全に隠し込めればいいのでしょうが、
コンパイルエラーやデバッグなどで顔を出す限りはなかなか難しい。というわ
けで頭の良い方々が推奨されるプログラミング言語については、その普及とい
う点では否定的に見ております。なお、アカデミアのプログラミング言語を専
門とする研究者(特に優秀な研究者)が設計した言語が大きく普及しないという
のも、この辺りに遠因があるのではないかと邪推しております。
0623デフォルトの名無しさん
2012/12/29(土) 05:50:45.940624デフォルトの名無しさん
2012/12/29(土) 06:04:59.840625デフォルトの名無しさん
2012/12/29(土) 10:18:24.54C++はパラダイムどころか設計思想をガン無視してもプログラミングできる
Cの資産もそのまま使えるので、普及の説得がしやすい
Scalaはパラダイムと設計思想を無視すると、ものすごく冗長になり、逆に難しくなる
Javaの資産が使えるという理由で普及させようとしたが、実はJava自体の互換性がCよりも低かったと言うオチ
0626デフォルトの名無しさん
2012/12/29(土) 11:05:19.910627デフォルトの名無しさん
2012/12/29(土) 11:09:30.95Javaで書いてscalaで呼び出す
0628デフォルトの名無しさん
2012/12/29(土) 11:12:39.170629デフォルトの名無しさん
2012/12/29(土) 11:28:34.21def hasA(s:String) = s.exists(_ == 'a')
↓
def hasA(s:String):Boolean = {
for(i <- 0 until s.length) {
if(s(i) == 'a') return true
}
return false
}
0630デフォルトの名無しさん
2012/12/29(土) 11:32:50.210631デフォルトの名無しさん
2012/12/29(土) 11:36:42.67関数型より手続き羅列の方が簡単だから、冗長になるにも関わらずわざわざ手続きをくどくど羅列する
0632デフォルトの名無しさん
2012/12/29(土) 11:39:58.610633デフォルトの名無しさん
2012/12/29(土) 11:40:32.02def hasA(s:String, i:Int = 0):Boolean = {
if(i == s.length) return false
if(s(i) == 'a') return true
return hasA(s, i + 1)
}
0634デフォルトの名無しさん
2012/12/29(土) 11:42:59.93どっちが読みやすい?
0635デフォルトの名無しさん
2012/12/29(土) 11:44:34.220636デフォルトの名無しさん
2012/12/29(土) 11:44:34.99床に置いた水を使えと言われたら、床にぶちまけられた水を使うのは難しい
0637デフォルトの名無しさん
2012/12/29(土) 11:46:43.52関数型より手続きを羅列する方が簡単だから、冗長になって難しくなるにも関わらず、わざわざ手続きをくどくど羅列する
0638デフォルトの名無しさん
2012/12/29(土) 12:08:41.19という理解でよろしいでしょうか
0639デフォルトの名無しさん
2012/12/29(土) 12:24:28.770640デフォルトの名無しさん
2012/12/29(土) 14:59:42.66while使うしか無い箇所の記述見ると無駄だと感じる
enumも用途次第ではjavaより冗長になることも
どっちもパラダイムとは違う話だが
0641デフォルトの名無しさん
2012/12/29(土) 17:52:11.400642デフォルトの名無しさん
2012/12/30(日) 12:19:20.30GUIですら大して使われていない
0643デフォルトの名無しさん
2012/12/30(日) 12:41:32.78http://d.hatena.ne.jp/satosystems/20121228/1356655565
言語(処理系)時間
Java (OpenJDK)0.732
C (gcc -O2)1.18
C++ (g++ -O2)1.18
Scala 1.896
--------------------------------
Java速ぇええ!
0644デフォルトの名無しさん
2012/12/30(日) 12:46:27.92再帰はプログラムそのものの実装方法とコンパイラのベンダー依存の最適化の影響をモロにうけるからベンチマークには向いていないと思う
もしやるとしても、実行時使用メモリの大きさを指定すべきだと思う
0645デフォルトの名無しさん
2012/12/30(日) 12:52:37.620646デフォルトの名無しさん
2012/12/30(日) 13:18:09.19プログラムそのものの実装方法とコンパイラのベンダー依存の最適化の影響を測定するなら、「同じ言語」でやらなきゃ
0647デフォルトの名無しさん
2012/12/30(日) 13:24:08.32積和演算の塊みたいなことをJVM言語でやりはしないがパフォーマンスと機能の
バランス取れるからわざわざJavaバイトコードをターゲットにしてんだろ
0648デフォルトの名無しさん
2012/12/30(日) 13:26:14.33「プログラムそのものの実装方法とコンパイラのベンダー依存の最適化の影響をモロにうける」という主張を認めるなら、当然その影響を測定できることになる。
もちろん、>>644の主張を認めないという立場はあっていいと思う。
0649デフォルトの名無しさん
2012/12/30(日) 13:38:18.51具体的に言うと、例えば、再帰は、末尾最適化を言語仕様で定めてるモノと、ベンダーが勝手に実装してるモノがあるので、
フィボナッチみたいなベンチマークは畳み込みの実装が同一であるということが保証されているコードでないと何を比較しているのか分からない
下手するとプログラマのスキルの比較になってしまう
0650デフォルトの名無しさん
2012/12/30(日) 13:58:28.24末尾再帰最適化は関係なくね?
0651デフォルトの名無しさん
2012/12/30(日) 14:02:08.920652デフォルトの名無しさん
2012/12/30(日) 14:22:07.76あなたの言っていることは、
「言語仕様で定めてるモノ」と、「ベンダーが勝手に実装してるモノ」を区別して測定する必要があるが、
この実験ではそれを区別できていない、ということかな。
そもそも、その2つを区別するための実験ではないので、勝手に藁人形を作って批判しているように見える。
0653デフォルトの名無しさん
2012/12/30(日) 14:27:16.89すべての場合で意味がないことを証明するのは難しい
やるべきことは
1)どういう性質があれば意味があって、どういう場合に意味がないのかを定義する
2)それに従い、意味がないことを証明する
ここでは1)が難しい
それは、あなたにとって意味がないだけでしょ?という意見に耐える必要がある
0654デフォルトの名無しさん
2012/12/30(日) 14:59:03.90末尾再帰が仕様の一部の言語もあるから、末尾再帰を使わないということは、その言語では実際に使われないような効率の悪い実装で比較することになる
だったら、再帰やfor文を使わずに、=と+だけの式を100行くらい並べて計測すべきということにならないだろうか
0655デフォルトの名無しさん
2012/12/30(日) 15:19:16.88まず、「フィボナッチ数を求める処理時間の計測」が目的と言っているが、やっていることは「フィボナッチ数を求める処理時間の計測」ではない
やってることは「フィボナッチ数を求める処理を空間効率の悪いアルゴリズムで実装したときの実行時間の計測」
しかも、ベンダごとにプログラマが意図しない最適化が存在することは、 -O2 オプションを確認していることから、本人も認めていると分かる
さらに、わざわざ空間効率の悪いアルゴリズムを選んだんだから、計測するのは実行時間ではなく、n=38の実行時間の比較ではなく、例えばn=38とn=50の実行時間の差の比較をすべきだと思う
0656デフォルトの名無しさん
2012/12/30(日) 15:22:02.08n=100000でも1秒かかるまい
0657デフォルトの名無しさん
2012/12/30(日) 15:37:00.08この実験は「フィボナッチ数を求める処理を空間効率の悪いアルゴリズムで実装したときの実行時間の計測」を異なる言語間で比較できている。
アルゴリズムの効率という誰も主張していない論点を持ち出して批判するのは、存在しない藁人形を作り出して批判しているにすぎない。
0658デフォルトの名無しさん
2012/12/30(日) 15:39:52.35もちろん、言語仕様にある機能をふんだんに使って結果どうなるかを比較するための実験ならば、
末尾再帰が仕様の一部の言語で末尾再帰を使わないということは、その目的を達成できていない。
しかし、そもそも言語仕様にある機能をふんだんに使ってどうなるかを比較するための実験ではないので、
あなたは存在しない藁人形を作り出して批判している。
0659デフォルトの名無しさん
2012/12/30(日) 15:53:47.74他のコンパイル言語は実行時間のみで計測した数値なのに、Scalaだけscalacでコンパイルしたものを実行するのではなくscalaコマンドを使って実行した時間を並べている。
違う物を比べた結果を並べても「俺に取っては」無意味だ。そこに意味を見出す人がいてもいいが、考えが合わないな。
0660デフォルトの名無しさん
2012/12/30(日) 16:02:09.88それでも十分速いという、Scalaの実装のすばらしさを示した実験だと思ったけど
そう思わない人がいてもいいと思うよ
0661デフォルトの名無しさん
2012/12/30(日) 16:11:22.78わざわざ「gcc -O2 fib.c; ./a.out」みたいなコマンド載せてるんだし
0662デフォルトの名無しさん
2012/12/30(日) 16:19:51.54> ただこれはタネがあって、コンパイル時に関数を評価してフィボナッチ数を算出しているためです。
> したがって、コンパイルがインタプリタで実行するのと同程度の時間がかかります。
とあるので、コンパイル時間は含まれてないようだ
0663デフォルトの名無しさん
2012/12/30(日) 16:35:52.05問題は、
・コンパイラが「勝手に」言語仕様に「ない」機能をふんだんに使って最適化する可能性があるということ
・言語によっては、言語仕様が推奨する実装方法を避けている(現実にやらない実装をしている)のに、「フィボナッチ数を求める処理時間を計測してみました」と主張していること
・計算空間を広げることを意図した実装なのに、n=38という小さい数だけの実行時間を比較していること
0664デフォルトの名無しさん
2012/12/30(日) 16:40:38.51素朴な疑問だが、scalacでコンパイラしたモノって、同じ処理をする.javaファイルをjavacでコンパイラしたモノと異なるのだろうか
0665デフォルトの名無しさん
2012/12/30(日) 17:06:40.37> ・コンパイラが「勝手に」言語仕様に「ない」機能をふんだんに使って最適化する可能性があるということ
可能性があるから、だから何なのか?
> ・言語によっては、言語仕様が推奨する実装方法を避けている(現実にやらない実装をしている)のに、「フィボナッチ数を求める処理時間を計測してみました」と主張していること
「フィボナッチ数を求めるアルゴリズムはいろいろありますが、今回は以下の再帰で求めるアルゴリズムで統一しました。」と、ある基準で統一していることを明示している。
この基準において測定し比較するという実験デザインは、完結している。
言語仕様が推奨する実装方法で実験をしたければ、やればいい。
今回の実験とは無関係だ。
あなたは、無関係な論点を作り出して批判しているだけだ。
> ・計算空間を広げることを意図した実装なのに、n=38という小さい数だけの実行時間を比較していること
もちろん完全無欠の実験など存在しない。
追加の実験をしたければ好きにすればいい。
また、n=38が小さいとは思わない。
例えば、10分以上かかったものも存在するし、実行できなかった環境もある。
もっと小さな数字でも試すべきだった。
しかし、n=38だけを測定したからといって、この実験の価値やおもしろさが損なわれているわけではない。
0666デフォルトの名無しさん
2012/12/30(日) 17:29:28.200667デフォルトの名無しさん
2012/12/30(日) 17:40:45.04キンキンにチューニングして最速謳ってても環境の変化に対応できなければお客は離れていっちゃうよ
だからぼくらには"Scalability"に対応できる言語が必要なんだ
そうScalaならね
0668デフォルトの名無しさん
2012/12/30(日) 17:49:56.630669デフォルトの名無しさん
2012/12/30(日) 18:16:38.28「フィボナッチ数を求めるアルゴリズムはいろいろありますが、今回は以下の再帰で求めるアルゴリズムで統一しました。」言っているが、
「特に再帰を利用したプログラムは」コンパイラが「勝手に」言語仕様に「ない」機能をふんだんに使って最適化する可能性があるので、アルゴリズムを統一するだけでは不十分
言語仕様にない最適化をオフにして、各言語各ステップの対応が1対1であることを保証しなければならない
(同じ言語だけを用いて、コンパイラごとオプションごとの最適化の違いを比較したと主張するなら、この実験はこのままでも意味がある)
n=38は数が小さいからおかしいのではなく、n=38という小さい数「だけ」で比較したから意味がない
実行時コンパイル時か実行時のメモリサイズ指定の有無でまったく別の結果になるから
メモリ指定をガン無視してるんだから、わざわざメモリをたくさん消費してそれが決定的に計算能力に影響するアルゴリズムを用いるべきではない
(2つの入力の結果の差同士を比較するなら、メモリ消費の効率を比較したと言えなくもない)
0670デフォルトの名無しさん
2012/12/30(日) 18:26:54.710671デフォルトの名無しさん
2012/12/30(日) 18:41:36.85再帰するときに参照・値だけスタックする言語と、サンクみたいに計算をスタックする言語と、環境の大部分をスタックに積み上げてく言語がある
後者は再帰でメモリをバカ食いする
0672デフォルトの名無しさん
2012/12/30(日) 18:54:45.390673デフォルトの名無しさん
2012/12/30(日) 19:32:27.480674デフォルトの名無しさん
2012/12/30(日) 19:41:10.63よりもScalaは遅いんだね
0675デフォルトの名無しさん
2012/12/30(日) 19:57:46.950676デフォルトの名無しさん
2012/12/30(日) 20:07:10.12実行時間のオーダーが違うのを見てフーンと言う程度にしておくのがいい
0677デフォルトの名無しさん
2012/12/30(日) 20:37:09.93バイトコード見るとJavaはif分岐にScalaはテーブルジャンプになってるけど、
どっちもごく普通のコードに落ちてる
scala.Predefの初期化とinvokevirtualの呼び出しコストだな
0678デフォルトの名無しさん
2012/12/30(日) 20:57:58.52"「特に再帰を利用したプログラムは」コンパイラが「勝手に」言語仕様に「ない」機能をふんだんに使って最適化する可能性"を比較できている
だから、"「特に再帰を利用したプログラムは」コンパイラが「勝手に」言語仕様に「ない」機能をふんだんに使って最適化する可能性"を比較する実験としては正しい
あなたの頭の中にある目的を達成できていないのは理解した。
その目的を無関係な実験に押し付けるのは間違い。
0679デフォルトの名無しさん
2012/12/30(日) 21:18:12.17確認したいんだけど、それは言語や言語仕様の比較じゃなくてコンパイラの比較だよね?
>>643 はいろんな言語の複数のコンパイラの結果を一つにまとめた表が真ん中にあるからおかしい
コンパイラごとの結果を言語の数だけ用意した後半だけを用いて言語ごとに議論すべき
0680デフォルトの名無しさん
2012/12/30(日) 21:39:42.90「それ」がなにを指しているのかよくわからないけど
>>643 は載っているコードを色々な環境で実行させたときの実行時間を比較している。
>>643 の実験の特徴は、具体的な目的を設定せずに、こういうことをしたらこうなりましたという結果だけを列挙している。
「言語や言語仕様の比較」や「コンパイラの比較」のような難しい目的を設定していない。
おそらくやっている人が優秀なので、これらの難しい目的を設定してしまうと、「XがYだから」目的を達成できていないという批判があると理解しているためだろう。
目的を設定せず結果だけを列挙するならば、「XがYだから」目的を達成できていないという批判に対して、そもそもそんな目的は存在せず、単に「XがYである」ことを含んだ実験なんだと反論すれば十分だから。
例えば、再帰を利用したプログラムはコンパイラが勝手に言語仕様にない機能をふんだんに使って最適化する可能性があるから実験は不十分だという批判に対して、
再帰を利用したプログラムはコンパイラが勝手に言語仕様にない機能をふんだんに使って最適化する可能性を含んだ実験だよ、と反論できる。
0681デフォルトの名無しさん
2012/12/30(日) 22:01:41.85あとは、scala 2.7.7って古っとかツッコんで終わりだと思うんだが
何故謎の論点でこんなスレ進むんだろ
0682デフォルトの名無しさん
2012/12/30(日) 22:12:38.69>>643の
言語(処理系)時間
Java (OpenJDK)0.732
C (gcc -O2)1.18
C++ (g++ -O2)1.18
Scala 1.896
--------------------------------
Java速ぇええ!
↑ この主張からは、「載っているコードを色々な環境で実行させたときの実行時間を比較している」という主張は導出されない
仮に↓のページを作った人が「載っているコードを色々な環境で実行させたときの実行時間を比較している」ことを意図しているとしたら、
http://d.hatena.ne.jp/satosystems/20121228/1356655565
のいちばんはじめの
「AWK、Ada、Bash、Boo、C、C#、C++、Clojure、D、Erlang、Forth、Fortran、Go、Groovy、
Haskell、Io、Java、JavaScript、Lisp、Lua、OCaml、Objective-C、PHP、Pascal、Perl、Pike、
Prolog、Python、R、Ruby、Scala、Scheme、Smalltalk、Tcl でフィボナッチ数を求める処理時間を計測してみました。」
という文は間違い
0683デフォルトの名無しさん
2012/12/30(日) 22:19:27.05特にベンチマーク系は逐一クドクドと間違いの指摘を残しておかなければらならない
0684デフォルトの名無しさん
2012/12/30(日) 22:32:58.50論理構造を理解できていないことが原因。
なぜこんなことをクドクドここに書かなければならないかと言うと、文章の論理構造を理解できていない人と会話はうんちゃらかんちゃら
0685デフォルトの名無しさん
2012/12/30(日) 22:34:07.52単純なプログラムなので2.7.7程度のバージョンなら差はないと思う
素直なバイトコードになると思う
0686デフォルトの名無しさん
2012/12/30(日) 22:45:53.10無目的だとしても、
http://d.hatena.ne.jp/satosystems/20121228/1356655565
で実際に記述される実験内容から、序盤に書いてある
「AWK、Ada、Bash、Boo、C、C#、C++、Clojure、D、Erlang、Forth、Fortran、Go、Groovy、
Haskell、Io、Java、JavaScript、Lisp、Lua、OCaml、Objective-C、PHP、Pascal、Perl、Pike、
Prolog、Python、R、Ruby、Scala、Scheme、Smalltalk、Tcl でフィボナッチ数を求める処理時間を計測してみました。」
という文と
このページのデータをもとにした>>643 の「Java速ぇええ! 」という結論は間違い
0687デフォルトの名無しさん
2012/12/30(日) 23:14:50.87これ覚えておくように
0688デフォルトの名無しさん
2012/12/31(月) 01:33:58.62それでもクソ遅いけどww
0689デフォルトの名無しさん
2012/12/31(月) 05:26:22.93このベンチマーク設定した人が優秀かはともかく私情入りすぎてるとは思う
特定の言語群だけくさすコメントが入ってたり、Schemeは思いいれがあるからたくさん結果載せてたり
「具体的な目標を設定してない」のかどうか。
0690デフォルトの名無しさん
2012/12/31(月) 05:31:26.09とか、「最適化でこんなに早くなって…」とかコメントが全体的にお粗末だわ。初心者が色々な言語でべんちまーくしてみました、だったら
わかるんだけど、処理系実装に詳しい人とはとても思えん、っつうのが正直な感想
0691デフォルトの名無しさん
2012/12/31(月) 05:52:22.05言語の速度の近似だとみなす事に
無理があるわけで
0692デフォルトの名無しさん
2012/12/31(月) 06:25:50.57>生成されたバイトコードをみる限り、足引っ張りそうなのはinvokevirtualくらいで、しかも、これだけ同じメソッド
>呼び出しが多発すれば脱仮想化が働くと考えられるので、差がついた部分は
>scala-library.jar(Scala標準ライブラリのjarファイル)のロード時間部分ではないかと
>思います。
>裏付けをとるために、n=38ではなくn=40にしてみたところ、ほぼ予想どおりの結果が出ました。
scala-library.jar読み込み時間の差は固定値で実運用時にはどうでもいいんだから
実際はJavaとほぼ同じ性能だと見なしてよさそうだな
0693デフォルトの名無しさん
2012/12/31(月) 10:26:12.92もう周知の事実だから、いまさらだな
0694デフォルトの名無しさん
2012/12/31(月) 12:14:29.78実際がフィボナッチの計算程度しかしないなら、その通りだね
0695デフォルトの名無しさん
2012/12/31(月) 12:19:24.08そもそも言語の速度という概念の測定は難しいし、おそらく不可能
だからこそ適当なベンチマークで妥協することが重要
スパコンのTOP500ですら連立方程式を解く性能で比較している
0696デフォルトの名無しさん
2012/12/31(月) 13:34:33.790697デフォルトの名無しさん
2012/12/31(月) 13:56:24.590698デフォルトの名無しさん
2012/12/31(月) 19:45:35.19論旨は理解しているつもりだが、
測定が難しい事がトイプログムを正当化する理由にはならないだろう
フィボナッチのどこが適当な妥協なのよって事
少なくとも複数のプログラムを採用してベンチマークスイートを構成するべきだし
できることなら現実に用いられる比較的大きいプログラムが望ましい
SPEC CPUのような代表的なベンチマークは実際そうやっている
HPC分野はまったく知らんが、少なくともLINPACKがスパコン性能の全てだと
思ってる技術者はいないだろう
0699デフォルトの名無しさん
2013/01/03(木) 13:19:26.720700デフォルトの名無しさん
2013/01/03(木) 16:57:29.880701デフォルトの名無しさん
2013/01/03(木) 23:33:17.02なにそれ?
0702デフォルトの名無しさん
2013/01/04(金) 08:41:10.21scalaでコンパイルしても使えるのだろうか
0703デフォルトの名無しさん
2013/01/04(金) 14:05:50.00どうやって書いたらいいですか?
0704703
2013/01/04(金) 14:10:55.36insertOrUpdateっていうそのまんまのメソッドがありました
0705デフォルトの名無しさん
2013/01/06(日) 01:50:53.790706デフォルトの名無しさん
2013/01/06(日) 10:17:49.35> Scala 2.10.0 now available!
何が変わった?
0707デフォルトの名無しさん
2013/01/06(日) 12:27:38.730708デフォルトの名無しさん
2013/01/06(日) 17:34:14.470709デフォルトの名無しさん
2013/01/06(日) 17:37:38.55http://docs.scala-lang.org/ja/overviews/index.html
0710デフォルトの名無しさん
2013/01/06(日) 20:23:31.040711デフォルトの名無しさん
2013/01/07(月) 08:04:41.17今月号のWEB+DB PRESSとかいう雑誌にて
Scalaがチラリと紹介されているけど
そこで
Scalaは for文は遅いのでwhile文にしないと遅いとかいう例が載っていた。
(実際は、for文でなく、 (1 until 100).〜 みたいな繰り返しとwhile文に書き換えたの比較)
そういうのって、どうにかならないのかな。
0712デフォルトの名無しさん
2013/01/07(月) 09:06:48.83Scalaじゃんじゃん書いてください
0713デフォルトの名無しさん
2013/01/07(月) 19:51:01.99JSとかPython、schemeだとあるのに何でないのか不思議
0714デフォルトの名無しさん
2013/01/07(月) 22:40:57.24解説を翻訳する機能が追加されたのかと思った
0715デフォルトの名無しさん
2013/01/07(月) 23:49:02.91記事みてないけどその議論は1年以上前に通り過ぎた道
scalac内部とか、一部のほんとにチューンしなきゃまずいコードだとwhile使うのはありだが
それ以外でwhile使ったって性能向上の度合いは知れてる。それでも我慢できないなら、Scala 2.10のマクロ
使ってwhlieに展開するマクロ書いてもいいけど
0716デフォルトの名無しさん
2013/01/08(火) 00:29:18.05http://www.ne.jp/asahi/hishidama/home/tech/scala/reflect.html
今回のやつ
http://hexx.github.com/pshow-scala-reflection/out/#0
0717デフォルトの名無しさん
2013/01/09(水) 20:45:07.230718デフォルトの名無しさん
2013/01/09(水) 21:49:31.400719デフォルトの名無しさん
2013/01/10(木) 04:16:04.85つ http://docs.scala-lang.org/ja/overviews/collections/performance-characteristics.html
こういう公式ドキュメント、eugene yokotaさんが精力的に翻訳して、本家にも取り込まれてるのにあまり知られていない
という悲しい事実。docs.scala-lang.org/ はみといて損はないよ
0720デフォルトの名無しさん
2013/01/10(木) 05:28:18.130721デフォルトの名無しさん
2013/01/12(土) 03:30:13.450722デフォルトの名無しさん
2013/01/13(日) 00:34:00.53docs.scala-lang.org の最近の充実ぶりは凄い。
0723デフォルトの名無しさん
2013/01/15(火) 02:55:18.600724デフォルトの名無しさん
2013/01/15(火) 22:04:50.11JVMというより、JavaのAPIが使えるかどうかだと思う
0725デフォルトの名無しさん
2013/01/15(火) 22:43:50.510726デフォルトの名無しさん
2013/01/16(水) 03:43:14.24強力すぎる型推論はエラーメッセージがよく分かんなくなったりするから
理論と実用の妥協点なのかなあと思ってた
0727デフォルトの名無しさん
2013/01/18(金) 11:12:07.420728デフォルトの名無しさん
2013/01/19(土) 02:34:49.70ほんとのところはOderskyセンセに聞かないとわからないけど、多相型をサポートした
オブジェクトシステムを持った言語の完全ないしは完全に近い型推論は難しい(Principal
Typeがないので)。
0729デフォルトの名無しさん
2013/01/19(土) 02:37:33.96Hindly-Milner型推論関連の研究もやってたことあるし、その辺の微妙な難しさは
よく知ってるはず。Scalaに関してはもう少し強くできるだろうけど、中途半端に型推論
強くても挙動が予測しづらくてあんましいいことないから、意図的に弱くした部分はあるだろうね。
理論的に無理な部分もあるだろうけど
0730デフォルトの名無しさん
2013/01/19(土) 08:51:02.010731デフォルトの名無しさん
2013/01/19(土) 23:17:11.710732デフォルトの名無しさん
2013/01/21(月) 22:49:28.68www.itmedia.co.jp/enterprise/articles/1301/21/news022.html
# 米Oracleが脆弱性を修正したばかりの「Java 7 Update 11」に、新たな2件の脆弱性が報告された。
Scala終わったな…
0733デフォルトの名無しさん
2013/01/21(月) 23:16:37.84ユーザ数が少なければ、黙って穴を使い続けるだけ
0734デフォルトの名無しさん
2013/01/21(月) 23:29:41.08Scalaの主戦場であるサーバサイドにはあんまり関係ない話だという理解。
0735デフォルトの名無しさん
2013/01/22(火) 00:47:33.970736デフォルトの名無しさん
2013/01/22(火) 16:24:57.87clojureスレにもいたな
0737デフォルトの名無しさん
2013/01/25(金) 09:09:31.740738デフォルトの名無しさん
2013/01/26(土) 21:50:49.30scalaの場合単純にマンパワー足りない部分あるだろうけど
なんもかんも日本語で本家並のドキュメントほしいってのは
どんどん通用しなくなってくとオモウヨ
0739デフォルトの名無しさん
2013/01/26(土) 21:56:49.64マニュアルくらいふつーに読めないと色々どーにもならん時期になってると思う。いい悪いじゃなくて、日本人でもgithubでそれなりのものツクッテル人たちとか英語マニュアルまず優先だし
0740デフォルトの名無しさん
2013/01/26(土) 22:02:29.950741デフォルトの名無しさん
2013/01/27(日) 14:08:40.96Toshio: Mainly, I ________ ________ ________ ________ ________ my uncle.
He was the one who would always help me when I was in trouble.
1) am
2) I
3) owe
4) to
5) what
0742デフォルトの名無しさん
2013/01/27(日) 20:12:45.830743デフォルトの名無しさん
2013/02/02(土) 07:06:48.29mercurialでsbtで2.10.0向けにビルドしました。
Eclipseからjfxrt.jarとビルドしたscalafx-core_2.10-1.0-SNAPSHOT.jar(scalafx.jarとリネーム)を外部jarとして指定して、
HelloScalaFX.scalaを実行しようとしたんですが、java.lang.IllegalArgumentExceptionがCss2Bin.javaの44行目で出てしまいます。
sbtからscalafx-demosをrunした時には動きました。
誰かわかる人がいたら教えてください。
0744デフォルトの名無しさん
2013/02/02(土) 19:17:52.810745743
2013/02/02(土) 20:11:23.73ありがとうございます。無事動作しました
0746デフォルトの名無しさん
2013/02/02(土) 21:09:58.303/2(日)大岡山にtypesafeの中の人たちが来るんだね。
0747デフォルトの名無しさん
2013/02/02(土) 21:29:53.930748デフォルトの名無しさん
2013/02/03(日) 11:56:35.230749デフォルトの名無しさん
2013/02/03(日) 22:57:56.040750デフォルトの名無しさん
2013/02/03(日) 23:00:43.260751デフォルトの名無しさん
2013/02/04(月) 01:34:02.60少数精鋭の開発メンバーで、短期間に新しい検索サービスを始められた」。特許情報などの無料検索サービスで200万人以上の会員を抱えるアスタミューゼ。
同社でサービス開発を統括する三木隆史プラットフォーム事業部部長は、こう語る。スピードの秘密は、開発言語選びにあった。
同社が採用したのは、業務系システムの開発で主流になっているJavaでも、Webシステムで人気を博すRubyやPythonでもない。
「関数型プログラミング言語」と呼ばれるオープンソースの開発言語の一つ、「Scala(スカラ)」だ。
0752デフォルトの名無しさん
2013/02/04(月) 02:17:23.81scala.ioパッケージは糞なのは同意。この辺含むレガシーな部分は
Scala 2.11辺りでpaulpさんが大鉈振るってばっさりやる。
次善としては、scala-ioかな。Scala標準のちゃんとしたIOライブラリは…
Typesafeも何もしてないわけじゃないくらいしか今は言えない。その内
発表あるかもしれんので 待つしか
>>746,747
本家の人が来日する貴重な機会なので、不満ぶつけたい人も、ぜひぜひ
0753デフォルトの名無しさん
2013/02/04(月) 17:17:40.17ZIPのほうがサイズが小さいんですが
どっちを使ったほうが良いんでしょうか?
0754デフォルトの名無しさん
2013/02/04(月) 22:44:18.85zip解凍して適当な場所に置いてPATH通せばおk
0755デフォルトの名無しさん
2013/02/04(月) 22:44:37.520756デフォルトの名無しさん
2013/02/04(月) 23:09:36.09とりあえずインストーラ使っとけばいいと思う
0757デフォルトの名無しさん
2013/02/04(月) 23:14:53.770758749
2013/02/05(火) 09:07:41.160759デフォルトの名無しさん
2013/02/06(水) 00:04:02.44http://uni.2ch.net/test/read.cgi/newsplus/1360017468/
0760デフォルトの名無しさん
2013/02/06(水) 00:08:40.72ありがとうございます
0761デフォルトの名無しさん
2013/02/06(水) 12:28:50.75ってやってコンパイルに成功しようがしまいが常にエラーレベルが0なんですが
https://github.com/scala/scala/pull/54
https://issues.scala-lang.org/browse/SI-5295?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
これって修正されてるんですか?
0762デフォルトの名無しさん
2013/02/06(水) 13:22:55.72Scala 2.10.0
class Test{
def a() = println("aaa")
}
これでscala Test.scalaってやってもエラーは出ないんですが
scala Testをやると
java.lang.NoSuchMethodException: Test.main([Ljava.lang.String;)
at java.lang.Class.getMethod(Unknown Source)
at scala.tools.nsc.util.ScalaClassLoader$class.run(ScalaClassLoader.scal
a:67)
at scala.tools.nsc.util.ScalaClassLoader$URLClassLoader.run(ScalaClassLo
ader.scala:139)
at scala.tools.nsc.CommonRunner$class.run(ObjectRunner.scala:28)
at scala.tools.nsc.ObjectRunner$.run(ObjectRunner.scala:45)
at scala.tools.nsc.CommonRunner$class.runAndCatch(ObjectRunner.scala:35)
at scala.tools.nsc.ObjectRunner$.runAndCatch(ObjectRunner.scala:45)
at scala.tools.nsc.MainGenericRunner.runTarget$1(MainGenericRunner.scala
:74)
at scala.tools.nsc.MainGenericRunner.process(MainGenericRunner.scala:96)
at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:105)
at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala)
ってエラーがでます
object Test{def main(args: Array[String]{println("aaaa")}}のほうはエラーは出ません
クラスで書くとエラーが出ます
0763デフォルトの名無しさん
2013/02/06(水) 13:23:45.81scalac Test.scalaのタイポです
0764デフォルトの名無しさん
2013/02/06(水) 20:12:38.12mainメソッドを定義してないクラスは実行できないよ。
0765デフォルトの名無しさん
2013/02/06(水) 20:31:05.320766デフォルトの名無しさん
2013/02/06(水) 21:24:09.41このように修正してみましたがエラーが出ます
何が原因なんでしょうか?
class Test {
def main(args: Array[String]) {
println("main")
}
}
java.lang.NoSuchMethodException: Test.main is not static
at scala.tools.nsc.util.ScalaClassLoader$class.run(ScalaClassLoader.scal
a:69)
at scala.tools.nsc.util.ScalaClassLoader$URLClassLoader.run(ScalaClassLo
ader.scala:139)
at scala.tools.nsc.CommonRunner$class.run(ObjectRunner.scala:28)
at scala.tools.nsc.ObjectRunner$.run(ObjectRunner.scala:45)
at scala.tools.nsc.CommonRunner$class.runAndCatch(ObjectRunner.scala:35)
at scala.tools.nsc.ObjectRunner$.runAndCatch(ObjectRunner.scala:45)
at scala.tools.nsc.MainGenericRunner.runTarget$1(MainGenericRunner.scala
:74)
at scala.tools.nsc.MainGenericRunner.process(MainGenericRunner.scala:96)
at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:105)
at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala)
0767デフォルトの名無しさん
2013/02/06(水) 21:27:08.262.10で仕様が変わったって事ですか?
0768デフォルトの名無しさん
2013/02/06(水) 21:28:36.35そもそもなんでclassにしたいのさ?
0769デフォルトの名無しさん
2013/02/06(水) 21:29:46.510770デフォルトの名無しさん
2013/02/06(水) 21:30:21.79java でも public static void main(String[]) だし object Test で
0771デフォルトの名無しさん
2013/02/06(水) 21:34:44.65objectのほうだとエラーは出ないんですがclassのほうでつまずいています
0772デフォルトの名無しさん
2013/02/06(水) 21:36:34.14objectだと勉強にはならないの?
0773デフォルトの名無しさん
2013/02/06(水) 21:38:02.96classを使って動かせるところが確認したいだけなんです
0774デフォルトの名無しさん
2013/02/06(水) 21:38:51.29objectしかmainの起動はできない。
まずここ理解して。
objectのmainからclassを呼ぶコード書け。
0775デフォルトの名無しさん
2013/02/06(水) 22:05:46.30class Test{
def a() = println("test")
}
var test = new Test
test.a()
って書くと正常に実行できるようなんですが、ファイルに保存してコンパイル後に実行する方式だとエラーが起きるようです
このへんよくわかりません
0776デフォルトの名無しさん
2013/02/06(水) 22:08:29.610777デフォルトの名無しさん
2013/02/06(水) 22:14:02.90REPLで実行してる内容は
objectのmainの中に書いてるモノと思えばいいよ。
本当に理解する気があるのか文句言いたいだけなのか分からなくなってきたけど。
0778デフォルトの名無しさん
2013/02/06(水) 22:20:01.800779デフォルトの名無しさん
2013/02/06(水) 22:29:24.67object HelloWorld {
def main(args: Array[String]) {
println("Hello, world!")
}
}
REPLはあくまでお試し版みたいなものだから、コンパイルして実行する場合とは色々差異がある。
もしJavaやったことがないか経験が浅いなら、悪いことは言わないからコップ本買ったほうがいい。
Javaをそれなりにやってれば、ひたすらググるだけでもとりあえず組めるようになる
が、個人的にはやっぱりコップ本おすすめ(経験談)
ネットだけだと体系的に解説してくれるようなサイトは今のところ無いよな。
0780デフォルトの名無しさん
2013/02/06(水) 22:31:25.120781デフォルトの名無しさん
2013/02/06(水) 22:34:26.980782デフォルトの名無しさん
2013/02/06(水) 22:53:45.81ようはobjectとclassについて勉強になりましたありがとうございました
class Test
{
def a(n: Int): Int = n * 2
}
object Test
{
def main(args: Array[String])
{
var test = new Test
println(test.a(5))
}
}
0783デフォルトの名無しさん
2013/02/06(水) 23:17:39.800784デフォルトの名無しさん
2013/02/07(木) 00:24:16.970785デフォルトの名無しさん
2013/02/07(木) 14:24:07.55object Test {
class Test {
def a(n : Int) : Int = n * 2
}
def main (args : Array[String]) {
val test = new Test()
println(test.a(5))
}
}
でも同じ感じで動く。
0786デフォルトの名無しさん
2013/02/07(木) 14:25:51.66イコールを忘れるなよ
0787デフォルトの名無しさん
2013/02/07(木) 15:03:43.74val n = 1 //特に意味のない変数
n match {
case 2 > 1 => println("1") // 2>1のように比較するとエラー
case x: 10 => println(x) // 評価する部分で変数に代入して結果を出力したいけどエラー
}
0788デフォルトの名無しさん
2013/02/07(木) 15:42:17.040789デフォルトの名無しさん
2013/02/07(木) 15:45:07.830790デフォルトの名無しさん
2013/02/07(木) 15:58:37.31val n = 1
n match {
case m if 2 > m => println("1")
case x => println(x)
}
こういうことがやりたいのか?
下のx: 10は何がしたいのか全く分からん
0791デフォルトの名無しさん
2013/02/07(木) 18:08:35.61PHPしか出来ないんだけどscalaがこんなに楽しいなんて分かりませんでした
scalaに来たのはHaskellに挫折したからなんですが
javaもやった事ないからよくわかんないけどhttp://www.scala-lang.org/api/current/index.htmlをみて検索すればすぐ答えが出るから楽しい!!!!
javaの知識がなくても
日本ではRubyは愛のあるだの書いてて楽しい言語だの言ってるステマが流れてるけど全然楽しくない
むしろendとか書かされる言語は気持ち悪いぐらい
それに比べてscalaは効率よくコードが書ける
まさにscalaは愛があるのではなく愛されている言語
0792デフォルトの名無しさん
2013/02/07(木) 19:25:18.48ラベルをクリックすると現在のウィンドウの位置をコンソールに出力したいのですが
locationOnScreenで取得できません
取得方法のアドバイスお願いいたします
0793デフォルトの名無しさん
2013/02/07(木) 20:17:54.26http://ideone.com/zctian
0794793
2013/02/07(木) 20:28:21.860795デフォルトの名無しさん
2013/02/07(木) 22:49:57.46うまくいきました。ありがとうございます
標準で取得できるものと思ってたのですがoverrideしないといけないのは敷居が高いですね・・・
C#だと同じクラスないならthis.Topとthis.Lefpいけるんですが
scalaは難しい
0796デフォルトの名無しさん
2013/02/07(木) 23:13:05.280797デフォルトの名無しさん
2013/02/07(木) 23:21:37.080798デフォルトの名無しさん
2013/02/07(木) 23:24:32.150799デフォルトの名無しさん
2013/02/07(木) 23:52:20.36任意のアプリを書けるくらいにはなるんじゃね?
隅々まで理解して任意のコードを読むには15分じゃ無理だろ
0800デフォルトの名無しさん
2013/02/08(金) 00:14:34.450801デフォルトの名無しさん
2013/02/08(金) 07:57:28.420802デフォルトの名無しさん
2013/02/08(金) 10:56:28.59自分もわからなくなったので取り下げます
0803デフォルトの名無しさん
2013/02/08(金) 18:50:17.12<root>
<item>晴れ</item>
</root>
var xml: Elem = XML.load("weather.xml")
var item = xml \\ "item"
これで変数itemはElem型になりますが
Elem型から文字列に変換して別の変数に入れるにはvar item2 = item.toString()
Elem型から数値に変換するには一度文字列に変換した後にtoIntして別の変数に入れるには
var item3 = item.toString().toInt (無駄な気がしますが合ってますか?)で出来ました
そこで質問なんですが、
var item = xml \\ "item"
この時点でで変数itemに文字列としてもしくは数値を指定して変数itemに入れられたら楽なんですが方法ありますか?
0804デフォルトの名無しさん
2013/02/08(金) 18:51:56.71var item: Int = 〜とか
var item = (xml \\ "item").toString()
など試してみたのですが出来ませんでした
0805デフォルトの名無しさん
2013/02/08(金) 19:28:25.25textを使え
scala> val xml = scala.xml.XML.loadString("""<root><item>sunny</item></root>""")
xml: scala.xml.Elem = <root><item>sunny</item></root>
scala> val item = xml \\ "item"
item: scala.xml.NodeSeq = NodeSeq(<item>sunny</item>)
scala> item.text
res0: String = sunny
scala> item.toString
res1: String = <item>sunny</item>
0806デフォルトの名無しさん
2013/02/08(金) 19:34:42.16// => item: String
val item = (xml \\ "item").text.toInt
// => item: Int
0807デフォルトの名無しさん
2013/02/08(金) 21:50:01.29xmlから取得した値が空だった場合に数値に変換すると例外が発生するので、
ifで判定して空だったら0を代入、空ではなかったらそのまま代入したいんですが
xmlの値をtrueの位置に持ってくるのはどう書くのでしょうか?
val item = if ("" != (xml \\ "item").text) 数値に変換して代入 else 0
0808デフォルトの名無しさん
2013/02/08(金) 21:56:17.240809デフォルトの名無しさん
2013/02/08(金) 23:08:16.46val itemText = (xml \\ "item").text
そしたら
val item = if ("" != itemText) itemText.toInt else 0
って書けるじゃん?
ちなみに2.10から入ったutil.Tryを使えばこういう書き方もできる
val item: Int = util.Try(item.toInt).recover{ case _ => 0 }.get
0810デフォルトの名無しさん
2013/02/08(金) 23:09:53.920811デフォルトの名無しさん
2013/02/09(土) 11:46:29.840812デフォルトの名無しさん
2013/02/09(土) 13:22:52.87util.Tryっていいですね
forall{_.isDigit}で数値チェックもしてたのですがこっちは負数は対応してないのでutil.Tryのほうを使いたいと思います
いろいろと教えていただいてありがとうございます
0813デフォルトの名無しさん
2013/02/09(土) 15:00:26.89でいいよ
0814デフォルトの名無しさん
2013/02/09(土) 19:57:45.39↑これの引数と作業ディレクトリを指定する方法がわかりません
0815デフォルトの名無しさん
2013/02/09(土) 20:16:17.64ドキュメント嫁
http://www.scala-lang.org/api/current/index.html#scala.sys.process.Process$
0816デフォルトの名無しさん
2013/02/10(日) 00:05:00.280817デフォルトの名無しさん
2013/02/11(月) 20:59:13.05関数型っぽい書き方を使わずに、Scalaを使うことってできるんですか?
C#使っていたので、関数型のコーディングにいきなり変え
ることは(頭の切り替えが)難しいです。
0818デフォルトの名無しさん
2013/02/11(月) 21:05:56.02これダウンロードすると100MBあるんですよね
サイズ大きすぎませんか
10MB以下のフレームワークとかないですかね?
0819デフォルトの名無しさん
2013/02/11(月) 21:14:44.21関数型っぽい書き方も当然出来ます
ってかJavaやC#をやってた人が普通にScalaで書くと
まず関数型のスタイルにはなりません
0820デフォルトの名無しさん
2013/02/11(月) 21:17:43.0310MB以下のフレームワークが存在するかどうかはちょっと分からないんですが
100MBぐらいたいしたサイズじゃないと私は思いますがね
0821デフォルトの名無しさん
2013/02/11(月) 22:37:14.60あなたと私は意見が違います
0822デフォルトの名無しさん
2013/02/11(月) 23:13:00.58あとは全部確認してみればいいんじゃない?
0823デフォルトの名無しさん
2013/02/11(月) 23:18:33.310824デフォルトの名無しさん
2013/02/12(火) 03:15:21.94scalaみたいな重複なしの順列を生成する場合にはサイズを指定したときの高速な実装ができないということなんでしょうか
0825デフォルトの名無しさん
2013/02/12(火) 08:51:06.62ありがとう。
関数型スタイルは使わずに書けるならScalaは敷居は高くないということか
>>818
Scala用フレームワークといえばLiftが一番有名だと思う。Liftはサイズ小さい。
wikiには、Lift, Scalatra, Playの3つが載っていた。
http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks#Scala
Play!はScala以外の他の言語でも使えるしいろいろ独自に作りこんでいるから
サイズが肥大化しているんだと思う。
0826デフォルトの名無しさん
2013/02/12(火) 13:34:14.63日付も扱えないじゃん
最初からjava使ったほうがいい
0827デフォルトの名無しさん
2013/02/12(火) 16:36:57.39Javaの標準ライブラリ使えるんだからそれ使えよ
0828デフォルトの名無しさん
2013/02/12(火) 16:59:47.970829デフォルトの名無しさん
2013/02/12(火) 18:05:13.39少なくとも俺はそう思わなかったからscala使ってるわけで
シームレスにjavaとやりとりできるってのも売りの1つなのに
javaのライブラリ使わないといけないからscalaはクソ!!って意味が分からんわ
0830デフォルトの名無しさん
2013/02/12(火) 18:17:46.72scalaとjava両方について調べなきゃいけないわけだし確かにめんどくせーな
0831デフォルトの名無しさん
2013/02/12(火) 19:57:31.190832デフォルトの名無しさん
2013/02/12(火) 20:32:03.69つまりJavaを知ってる人が多い今だけ価値があるスキマ言語
0833デフォルトの名無しさん
2013/02/12(火) 21:10:40.05理解することから始めないといけないからScalaは学びにくいかもしれない
公式サイトでさえ、「プログラミングの経験がないならまずJavaを
勉強するといい」、と初心者お断りな雰囲気
http://www.scala-lang.org/node/1305#Begin
>>832
仮にJavaが消えても、Scalaはこの先生きこれれるとおもう。
JVM用バイトコードから.net用のMSILに変換するツールもあるようだし
>>828
なぜjavaではなくscalaなのかは、Scalaのメリットを読めばわかるんじゃないかな
http://www.atmarkit.co.jp/fjava/rensai4/scala01/01.html
0834デフォルトの名無しさん
2013/02/12(火) 21:51:06.58C#でも3.5くらいからはかなり関数型なコードかけるよ!
Scala学びながらC#にもフィードバックできるよ!!
まったくのプログラミング初心者(メモリモデルとかが頭に入っていない人)は
ScalaやJavaなんかよりHaskellから学んだ方が楽だと思う。
仕事があるかどうかは置いておいて、
プログラム独特のハードウェアから来る制約が少ない言語だし。
0835デフォルトの名無しさん
2013/02/12(火) 23:06:50.390836デフォルトの名無しさん
2013/02/15(金) 18:34:46.380837デフォルトの名無しさん
2013/02/15(金) 20:06:08.320838デフォルトの名無しさん
2013/02/16(土) 22:36:48.54http://www.infoq.com/articles/java-8-vs-scala
例えば、
lambda expressions,
higher-order functions,
parallel collections
virtual extension methods aka traits
中にはscalaのsyntaxをそのままjava8に取り入れる予定もあるらしい。
Java8リリースされたら今Scala使ってる人や、開発参加してる人の
多くがJavaに戻ってしまうんじゃないかという気もするけどどうかな?
この先生きのこれる?
0839デフォルトの名無しさん
2013/02/16(土) 23:08:19.56Scalaの良いところと言いかえるのはちょっとなあ
0840デフォルトの名無しさん
2013/02/16(土) 23:17:33.47Java8がリリースされる頃にはScalaもさらに進化してるだろう
0841デフォルトの名無しさん
2013/02/16(土) 23:21:27.500842デフォルトの名無しさん
2013/02/16(土) 23:31:42.05<= >=とまちがえやすいとかそういうの?
0843デフォルトの名無しさん
2013/02/16(土) 23:42:26.390844デフォルトの名無しさん
2013/02/16(土) 23:44:39.280845838
2013/02/17(日) 01:13:47.46Scalaの良いところという部分はあんまり気にしないでくれw
俺の考えるScalaの良いところは、3つ
Javaよりも簡潔にかけて開発生産性が高い。
Javaのライブラリの知識が使える。
実績のあるJVMで動く。
一方、Javaにかなわないところは:
英語以外の情報が少ない。
初心者向けのドキュメントが不足しがち。
IDEの最新バージョンが使えない。
web frameworkの種類が少ない。
IDEの件は割ときつい制限だと気付いた。
Scala Plugin for IntelliJ IDEAはまだbeta stageだった。
Scala Plugins for NetBeansはv7.0までしか使えず、Scalaの2.8までしか使えない。
Scala IDE for EclipseについてもEclipse4.2(Juno)がサポートされてなかった。
現状、Scala IDEを、Eclipse3.7 + scala2.10で使うのがベストなのかな
0846デフォルトの名無しさん
2013/02/17(日) 02:19:25.78こういうのは言語の機能追加で解決できることじゃない
0847デフォルトの名無しさん
2013/02/17(日) 02:56:23.24IntelliJ IDEA Scala Pluginは3種類のScala IDEの中では一番完成度高いよ。まだbetaという事になっていたのか
もう忘れてしまったが、言葉の響きに引きずられてはいけない。海外含め、Scalaを実戦投入しているところはIntelliJ IDEA
使ってるところ結構多い。NetBeansのScala Pluginがオワコンなのはその通り
08482
2013/02/17(日) 02:59:48.74そこから型を推測して型宣言を自動で追加する機能もある。Java to Scalaというファンキーな機能まで。Scala IDE for Eclipseは、
リリース版はJunoをサポートしてないけど、マイルストーン版ならJuno使える。自分が知る限りではそんな感じ
08493
2013/02/17(日) 03:02:33.91> こういうのは言語の機能追加で解決できることじゃない
同意する。lambdaでかなりよくなる部分はあるけど、結局当初より機能がずいぶん後退したし、immutable objectのためのクラス作るだけで
面倒なコードを書かなければいけないのも改善されない。コレクションもまだjava.util.Collectionの時代遅れの使わなければいけないし
08503
2013/02/17(日) 03:04:42.56まあ仕方ない。バックにどっかの会社つけば別だけど、IDEAが大きく引き離してて、Eclipseが後追いしてる状況だとNetBeansのScala Plugin
にはあまり興味をもたないだろうな
0851デフォルトの名無しさん
2013/02/17(日) 03:07:58.300852デフォルトの名無しさん
2013/02/17(日) 11:34:26.16いつの間にかtextmateからIntelliJに変わってるな
0853デフォルトの名無しさん
2013/02/17(日) 12:05:25.61サンクス。
Scala Plugin for IntelliJ IDEAは最初にうまく動かなくて、
しかもbeta stageと書いてあったのでいったんは諦めていたけど
完成度高いと聞いてもう一度セットアップ試してみた。
不具合の原因もわかった。
Scalaランタイムのインストールをするときに、MSIファイル(scala-2.10.0.msi)
でセットアップしてしまうと不具合がでるみたいだ。
ちゃんとパス指定してもIntelliJ IDEA環境でcompilerなどを認識してくれない。
scala-2.10.0.zipを落としてきて、パス指定したらIntelliJで使えるようになった。
IntelliJ、UIデザインが美しい。
特にDarculaのテーマのデザインがかっこいい
どこにどんな機能があるのかもすぐわかる。これEclipseより使いやすそうだ
0854デフォルトの名無しさん
2013/02/18(月) 15:07:25.71O(|X|log|S|)時間(|X|は文字列長、|S|は集合の大きさ)で判定したいのですが
Set#exists使えば大丈夫でしょうか?
0855デフォルトの名無しさん
2013/02/18(月) 21:43:15.24ttp://docs.scala-lang.org/ja/overviews/collections/performance-characteristics.html
0856デフォルトの名無しさん
2013/02/20(水) 01:39:03.730857デフォルトの名無しさん
2013/02/20(水) 05:07:46.57使ってる人もあんまりいない感じ
今は分からんけど2.8の頃は主要なコントロールしかラップされてなくて
残りは自分でソース読んで同じ風にラップしなけりゃいけなくてめんどかった
Publisher(listenTo)とReacter(reactions)を理解したらあとはjavaのswingとだいたい同じ
ラップ元のjavaのコンポーネントに触りたかったら#peerで取得できる
0858デフォルトの名無しさん
2013/02/20(水) 05:13:20.81↓英語だけどscala.swingの概略的なものが読める
http://www.scala-lang.org/sid/8
0859デフォルトの名無しさん
2013/02/20(水) 21:22:04.500860デフォルトの名無しさん
2013/02/20(水) 22:42:37.02行列の数値計算だったら、
scalala とか scalalab を使うのは?
0861デフォルトの名無しさん
2013/02/21(木) 02:11:05.96外部のライブラリは使わない方向がいいんだけど、Matrix クラスは標準装備じゃないのね
0862デフォルトの名無しさん
2013/02/21(木) 21:32:36.920863デフォルトの名無しさん
2013/02/24(日) 11:39:07.70traitがAOPでcake patternがDIの役割してたんですね
0864デフォルトの名無しさん
2013/02/24(日) 22:46:49.860865デフォルトの名無しさん
2013/02/24(日) 23:37:42.74あれ?scalaでそういう処理ってtraitで追加するのか?
0866デフォルトの名無しさん
2013/02/24(日) 23:42:08.88http://jonasboner.com/2008/12/09/real-world-scala-managing-cross-cutting-concerns-using-mixin-composition-and-aop/
ここの話だよな。
0867デフォルトの名無しさん
2013/02/25(月) 00:11:54.96> parser.parsePointcutExpression("execution(* *.bar(..))")
この記事の言いたいことはaspectの記述をtraitでもできると言っているのかな
aspectとtraitはコードの再利用に特化したクラスという意味で元々似ているので、そりゃそうかなあと思った
0868デフォルトの名無しさん
2013/02/25(月) 00:16:32.24AspectJとかJVM系のAOP実装だと
クラスのロード時にバイトコードを書き換えるので、コンパイル時には何もしなくていい
C言語ベースとかだとコンパイル時にがんばる
0869デフォルトの名無しさん
2013/02/25(月) 19:30:45.61Test名に日本語が含まれてるんだがこれは大丈夫なのかな
[info] Compiling 1 Scala source to /Users/…/target/test-classes...
0870デフォルトの名無しさん
2013/02/26(火) 09:35:02.490871デフォルトの名無しさん
2013/02/26(火) 10:16:13.80Test名と勘違いしてアタフタしているだけで問題の本質は全く別だろ
流石にお前の実行環境までは透視できんからこれ以上はわからん
0872デフォルトの名無しさん
2013/02/26(火) 15:48:43.93ここでは、元々静的型チェックを支持していた著者が、どのような経験を経て動的型チェックの方が素晴らしいと考えるに至ったかが記述されている。
最終的に著者は、「テストされていないものは、壊れていると思え」、つまり、動的/静的に関わらずテストは行う必要があり、どちらも必ずテストを行う必要があるのであれば、動的型付け言語の方が柔軟性がある分優位である、としている。
0873デフォルトの名無しさん
2013/02/26(火) 17:48:04.910874デフォルトの名無しさん
2013/02/26(火) 20:43:53.16細かく型が分けられてるのみて、金融でHaskellが好まれる理由ってこれかーと思った
でもそのERP製品は型厳密じゃないんだと。ドットダメじゃん
0875デフォルトの名無しさん
2013/02/27(水) 02:18:17.87どれが1つのファイルの更新を反映させるたびに
:load file1.scala
:load file2.scala
:load file3.scala
って3回ロードしなおさなきゃいけないのでしょうか、ひょっとして
0876デフォルトの名無しさん
2013/02/27(水) 06:54:50.11そもそもそういう使い方するのなら
REPL直で使わずにsbtのconsole使うべき
0877デフォルトの名無しさん
2013/02/27(水) 23:03:48.040878デフォルトの名無しさん
2013/03/02(土) 21:33:39.15Rubyのように1,2年前に書いたコードが動かなくなることもよくありますか?
0879デフォルトの名無しさん
2013/03/02(土) 23:56:08.15しかしコンパイラエラー吐くからRuby程深刻では無い。
0880デフォルトの名無しさん
2013/03/03(日) 11:19:52.40ありがとう
コンパイラのエラー検出でわかる程度なら
互換性は特に問題なさそうですね
0881デフォルトの名無しさん
2013/03/03(日) 16:37:12.59warning deprecated を放置しておかなければ通常は問題ない。
0882デフォルトの名無しさん
2013/03/05(火) 22:35:36.41Webで調べると javaだけに使えるような解決法だったりするから困る
0883デフォルトの名無しさん
2013/03/05(火) 22:47:43.280884デフォルトの名無しさん
2013/03/05(火) 23:01:28.36Tableの TableRowsSelectedイベントは、すでに選択されてる行を選択しても何もイベントが起きてくれないこととか、
TableSelectionMode には Cell があるのに、TableCellsSelected イベントがないとか、
reactions += {} で Table の model や selection の説明が API doc にないとか、
BoxPanelで中のComponent を 右寄せしようと思って、xLayoutAlignmentに数値を代入しても何も変わらないとか
0885デフォルトの名無しさん
2013/03/08(金) 11:09:23.72>BoxPanelで中のComponent を 右寄せしようと思って、xLayoutAlignmentに数値を代入しても何も変わらないとか
これじゃね?
http://docs.oracle.com/javase/tutorial/uiswing/layout/box.html#alignment
0886デフォルトの名無しさん
2013/03/08(金) 12:29:16.42/彡彡=⌒゛゙亠亠ヾ\ | ごめんなさい
/彡彡´ `ヽ |
|;':;';';' _ - ―---´⌒ 、 ! ! それ Java
|;';'" _,,-‐=' `ー 、| | なんですよ
r'⌒ ,r'兪 ヽ 〃匍、.| \_ _______ノ
{(牙  ̄ノ {  ̄ | ノノ
\┐ イ ヽ | ´
Y / `ー‐´) |
| _ノ ゞ二ニヱ !
ト、 ー ノ
, ィ!\\ /}`ヽ、 __
_,.- ' { { : :.ヽ`_ー ____ ´ | | ` ヽ 、_
_,.- ' ヽヽ: : : : :  ̄`:><: : : :| | ヽ `
ノ \\: : : :./ |C \: :.| | ヽ ハ
0887デフォルトの名無しさん
2013/03/09(土) 04:09:15.17UIElement#peerで取得したjavaのコンポーネントを直接弄り回しても大体問題ない。event関連以外は。
そしたらjavaだけに使える解決法とやらも使えるだろ
一方俺はSWTを使った
0888デフォルトの名無しさん
2013/03/09(土) 14:01:41.82scala fx の解説の日本語ってないですかね
というか、「scala fx」で検索してもjavaの解説ばっかり引っかかる
これスレを見ている人は、java のことを中心に書く人は、scalaという文字をページの中に表示しないでください
0889デフォルトの名無しさん
2013/03/09(土) 15:06:49.000890デフォルトの名無しさん
2013/03/09(土) 15:16:52.55scalaはjdk(javacコマンド)が必要ない
コンパイルから実行までjreだけでOK
大学や会社のマシンでプログラムのインストール禁止でjreだけ入ってる場合は、30MB解凍すればOKのscalaは楽
0891デフォルトの名無しさん
2013/03/09(土) 16:45:14.370892デフォルトの名無しさん
2013/03/10(日) 00:10:44.430893デフォルトの名無しさん
2013/03/14(木) 18:20:06.58「Scalaプログラミング入門」Railsによって得られた生産性の向上は、テスト作成の作業に失われてしまいました。
wota.jp/ac/?date=20100426 に詳しい。 くまくまーさんの記事は何度よんでもおもろいなぁ...
0894デフォルトの名無しさん
2013/03/15(金) 00:01:57.91現在
def duplication[A](lis: List[A]): List[A] = lis diff (lis distinct)
としていますが、うまく動作しないようです。
List[Array[Byte]]での利用を想定しています。
md5-hashを入れてファイルの重複を検査します。
0895デフォルトの名無しさん
2013/03/15(金) 00:56:13.110896デフォルトの名無しさん
2013/03/23(土) 20:43:18.870897デフォルトの名無しさん
2013/03/24(日) 00:56:51.99雑誌に載るのはうれしいけど、表紙にあったKotlilnというのはScalaよりも
普及するんじゃないかと思った。
Scalaよりも難しくないし、typesafeで、JavaScriptに変換できるようだ。
TypeScriptやScalaやC#の強みを取り込んでいる。
Kotlinまだ正式版にはなってないけれど化けるかもしれない
http://news.mynavi.jp/news/2011/07/26/022/index.html
http://confluence.jetbrains.com/display/Kotlin/Welcome
0898デフォルトの名無しさん
2013/03/24(日) 01:44:50.31ふ〜ん(
0899デフォルトの名無しさん
2013/03/24(日) 01:52:03.55え?
同じ言語でサーバサイドとクライアントサイドの開発
ができたらWeb系開発者にとってメリット大きいだろう
0900デフォルトの名無しさん
2013/03/24(日) 02:04:30.82まあ、JavaScriptに変換できる言語とか、JavaScriptを簡単にかける環境みたいなって他にもあるから、
ふーんって感じじゃないだろうか。
しかし、プログラム言語って、年々増えていくねえ。乱立している感じ。
> http://itpro.nikkeibp.co.jp/NSW/image/top/Cover201305.jpg
↑PHPってまだ人気あるんか?PHPのせるくらいなら、Rubyだろ、とか思ったが。
0901デフォルトの名無しさん
2013/03/24(日) 02:16:27.35現状のkotlinc & IDE 試してみればわかるけど、実用レベルに達するまではまだ何年もかかるわ、ほぼ間違いなく。普及云々はさらにその先の話
難しさ以前の問題で、処理系の品質が全体的に低い。buggyだし、速いコンパイルとか夢のまた夢でkotlincのコンパイルはかなり遅い
0902デフォルトの名無しさん
2013/03/24(日) 02:20:41.71TypeScriptとかはサーバサイド開発できないし
できたとしてもJavaと同程度の速度はでないでしょ
Kotlinはコンパイル時はJava, Scalaと同じくらい速いから
サーバサイドに最適。
JVMで動くからサーバ側もクロスプラットフォーム
さらにJSへの変換もできるから、違いは大きいかと
もっとも、ScalaがKotlinと同様にJSへのコンパイル機能も
取り込んでくるかもしれないけれど
0903デフォルトの名無しさん
2013/03/24(日) 02:22:37.31本当にBetterJavaに過ぎなくて
言っちゃ悪いけどD言語みたいな始まる前からオワコン臭がきつい。
BetterJavaやるだけならScalaでも十分だし、
0904デフォルトの名無しさん
2013/03/24(日) 02:29:07.800905デフォルトの名無しさん
2013/03/24(日) 02:30:31.16TypeScriptはNode.jsをばっちりサポートしているわけだが、
Node.jsはJAVAよりは遅いと言ってもrubyなんかよりは遙かに早い。
それに、ScalaもLiftなりPlayなりからいくらでも直接jQueryに触れるし
精密なことをやりたいなら、 WriteOnceとは行かなくなって、Kotlinで書けてバンザイではなくなるだろう。
0906デフォルトの名無しさん
2013/03/24(日) 02:31:54.75Oderskyが現在のjavacの作者で、Pizza (1996) 等JVM上での静的型付き言語「処理系実装」の先駆者でもあるってのを忘れていやしないかと
ScalaがJava並に普及するとは思わないけど、KotlinやCeylonは期待寄せるにも早過ぎる
0907デフォルトの名無しさん
2013/03/24(日) 02:36:12.89JVM上で動いて、既存ライブラリと相互運用性ある静的型付き言語の環境整備するのはどうしても時間やコストがかかるんだわ
そういう実装上の泥臭いところを知らない人たちがScala複雑だから新しい言語作ってみましたとやっても、まあ難しいねえというか。
0908デフォルトの名無しさん
2013/03/24(日) 02:39:22.38それなんだけど、
D言語は、C++にboostが出て完全にオワコンになったじゃん。
Kotlin程度の改善だったらJava10が出る頃には全部本家に入っていておかしくない。
だったらJava使い続けるよ。
0909デフォルトの名無しさん
2013/03/24(日) 02:40:17.55JVM上で動いてJavaScriptを吐くといえばGWTがあるけれども、RPCのAPIの管理が楽。
通信に使うPOJOやRPCのインターフェイス定義をJavaのコードとして書いてしまえば
同じコードからサーバー側のサーブレットやJavaScriptで書かれた非同期クライアントを
自動生成するのでAPIの仕様の同期が楽。サーバー側のAPIを変更したりPOJOを拡張しても
クライアント側のJavaScriptをいじる必要が無い。
0910デフォルトの名無しさん
2013/03/24(日) 02:44:36.60最大の利点はそれかなぁ
haxejvmでもできそうだけど。
最近の流行だから、そのうちscalaからjavascript吐けるようになるんじゃないのかと思っている。
0911デフォルトの名無しさん
2013/03/24(日) 02:46:47.23色んな言語のIDEを作ってる。コードベースはEclipseみたいに明らかに共通化されてるけど)、「JetBrains」というくくりでの開発リソースの
投入は期待できない
0912デフォルトの名無しさん
2013/03/24(日) 02:54:50.51速いと書かれていたのは「コンパイル後」のサーバ上の実行速度。
「コンパイル」の速度はScalaもJavaより重い感じがあるね
Kotlinもクラスライブラリは大半はJavaのものを使うようだし
Javaのバイトコードに変換するだけと考えれば
5年以上かかったりすることはないと思うんだけど、
どうやらここの人たちは先行きに悲観的だね
ステータスはM5で正式版ではないから現時点での品質は
まだ心もとないのはわかる。
IntelliJ IDEAの開発元が作ってるから技術力はあるんじゃないかと
期待してる。
>>906
開発スピードはOSSの世界からどれだけの開発リソースが
投入されるか次第じゃないかな
>>903-904
904に同感で、Scalaの先進的な機能、関数言語的なものの習得は
平凡なJava開発者には重荷になっていて、
それがScalaがブレイクしない理由だと思う
0913デフォルトの名無しさん
2013/03/24(日) 02:56:26.22D言語始まってたことないし・・・
0914デフォルトの名無しさん
2013/03/24(日) 03:02:34.95後から似たようなもの作る場合は先人の知恵を参考にできるわけだから
同じだけ時間がかかることはないんじゃないかな
>>908
http://news.mynavi.jp/news/2011/07/26/022/index.html
でも書かれているけど、Javaは後方互換性の呪縛があるから
もう好きなように改良はできなくなってる。
Java10になろうが呪縛は変わらない。
プロパティもいまだにないとかありえない、信じられない。
長ったらしいgetter/setterとかはJavaでは永遠になくならないんじゃないかね
0915デフォルトの名無しさん
2013/03/24(日) 03:06:51.07基本的にJavaのコードがそのまま通るので、Javaで書いておいて楽をしたいところだけGroovy風に
書いたり逆に基本Groovyでカチッと書きたいとこだけJavaで書いたりと、Javaと混ぜやすい。
0916デフォルトの名無しさん
2013/03/24(日) 03:08:10.760917デフォルトの名無しさん
2013/03/24(日) 03:12:31.550918デフォルトの名無しさん
2013/03/24(日) 03:48:52.35ただのreadonlyなインターフェースを指してimmutableコレクションとか言い出した時点で自分が使うことはないと確信した
0919デフォルトの名無しさん
2013/03/24(日) 04:00:28.97静的型検証のみならず静的型として扱うコンパイルも出来ますが、このコンパイルを通そうとすると
コードの記述量がJavaと大差無くなってしまうのが悩みどころ。
0920デフォルトの名無しさん
2013/03/24(日) 04:03:44.81いや、少なくとも5年程度はかかるとやはり思う。静的型付き「ジェネリクスあり」の言語をクラスファイルにコンパイルしてIDEサポートして…
って時点で実装力もリソースも必要。s/IntelliJ IDEAの開発元/JetBrainsの一部のKotlinやってるチーム/。で、こっちは未知数というか信頼できるかびみょー
0921デフォルトの名無しさん
2013/03/24(日) 04:14:27.04中の人ベースの方が正確だったり。KotlinチームとScala Pluginチームは全く別とかページみるとわかる
>>914
言語仕様まではともかく、stableな処理系作るのにかかる苦労はコピペできない。Kotlinは言うほど会社のリソース割かれてないし…
0922デフォルトの名無しさん
2013/03/24(日) 06:22:22.720923デフォルトの名無しさん
2013/03/24(日) 08:04:11.530924デフォルトの名無しさん
2013/03/24(日) 09:36:10.130925デフォルトの名無しさん
2013/03/24(日) 11:57:25.220926デフォルトの名無しさん
2013/03/24(日) 12:15:26.800927デフォルトの名無しさん
2013/03/24(日) 13:57:24.26http://xerial.org/scala-cookbook/recipes/2012/11/29/scala-in-15-minutes/
↑
東大の先生は、Scala使ってDNA解析をガンガンぶん回しているというのに、
おまえらみたいな低脳は、いつまでもたっても、言語がどーのこーので、ちっとも前に進まないな。
0928デフォルトの名無しさん
2013/03/24(日) 15:33:58.260929デフォルトの名無しさん
2013/03/24(日) 15:56:18.250930デフォルトの名無しさん
2013/03/24(日) 17:39:59.70val c = a+b
}
repl上で↑をロードする(:load test.scala) とOKだけど、
class Test(val a:Int, val b:Int)
{
val c = a+b
}
↑(波カッコを改行しただけ)をロードするとエラーがでます。
<console>:9: error: not found: value a
val c = a+b
^
scalac だとエラーは出ません。これはバグではなく、こういう仕様なのでいいのでしょうか?
Scala code runner version 2.10.0 -- Copyright 2002-2012, LAMP/EPFL です。
0931デフォルトの名無しさん
2013/03/24(日) 17:55:20.500932デフォルトの名無しさん
2013/03/24(日) 18:27:27.95class Test(val a:Int, val b:Int)
の時点でクラスの定義が完了しちゃってるから
{以降はただのブロックとして認識されてんだろうな
scalaでは下の改行スタイルは全く推奨されないので上使ってれば問題ない
scalacや:pasteではちゃんと1つのクラス定義として認識されるけど理由はよく分からんので詳しい人よろぴく
0933デフォルトの名無しさん
2013/03/24(日) 18:34:04.08改行だけならバグじゃないの
こういう簡単なバグも直ってないの見ると、ことりんのこと笑えないな
C#みたいに開始かっこの前で改行したほうが美しいと思う
開始、終了のかっこがそろうと見やすいし
0934デフォルトの名無しさん
2013/03/24(日) 18:44:55.800935デフォルトの名無しさん
2013/03/24(日) 18:55:30.19だとすると、最終的に scalac でコンパイルが成功したコードを使って、 scala repl でそれを :load しつつ実験しながら新しいコードを書いていくというのはダメな開発手法ということでしょうか
0936デフォルトの名無しさん
2013/03/24(日) 18:57:47.800937デフォルトの名無しさん
2013/03/24(日) 19:01:40.25バグじゃなくてScalaのREPLの意図された挙動だから
case classとかREPLの一行でその場で書いたときにいちいち{}入れないとクラス定義されないのは困るわけで…
複数行にしたければ { 入れればいいわけだし。:pasteはまさに改行含めた定義をはりつけたいときに使う
コマンドだからそういう挙動するわけだ。
0938デフォルトの名無しさん
2013/03/24(日) 19:06:19.70sbt はWindowsで使っててコマンドプロンプトでクラスパスを設定する場合は、コンパイルするたびにクラスパスをいちいち設定しないといけなくない?
0939デフォルトの名無しさん
2013/03/24(日) 19:09:44.340940デフォルトの名無しさん
2013/03/24(日) 19:55:26.25俺普通にwindowで使えてるぞ
そんな面倒な話があるか
sbtのconsoleコマンドはプロジェクト内のソースのコンパイル結果と依存jarがクラスパスに入った状態で
REPLを起動できる超絶便利コマンドだよ
0941デフォルトの名無しさん
2013/03/24(日) 20:05:08.21Windowsで環境変数に一切手を加えたくないから、scalaを起動する直前に作業用のコマンドプロンプトの画面で一回だけ set CLASSPATH=%CLASSPATH%;(必要なjarへのパス) を実行してる
sbtだと、コンパイルして実行する度にパスエラーになる
0942デフォルトの名無しさん
2013/03/24(日) 20:37:42.800943デフォルトの名無しさん
2013/03/25(月) 06:27:30.78http://androidken.blog119.fc2.com/blog-entry-2002.html
また、優秀なエンジニアと交流できた事も今後へ向けた糧になりました。
印象深い方々TOP3をtwitter IDで名指しすると、@sunsuk7tp、@overlast、@tagomoris(敬称略)です。
0944デフォルトの名無しさん
2013/03/25(月) 06:35:37.060945デフォルトの名無しさん
2013/03/25(月) 15:10:23.120946デフォルトの名無しさん
2013/03/26(火) 11:28:13.91Scalaは、文の区切りは ; または 改行 だけど、改行の扱いが少し複雑
改行による命令区切りの判定は、scalacとREPLで少し違う
scalacの場合
・改行にて、文が明らかにまだ途中であるならば、区切らない。
・改行にて、次の行も調べまだ文が続いていると判断できるなら次の行とつなげる。
・続かないならば、改行は、文区切りと判定する
みたいな感じ。
それに対して、REPLでは
・改行にて、文が明らかにまだ途中であるならば、区切らない。
・改行にて、そこで文がエラーなく終わるなら、そこで文を区切る
となっている。
〜〜〜〜〜〜〜〜〜〜〜〜
つまり、、、
コーディングスタイルを変えて、
class Test(〜)
{
でなく
class Test(〜) {
というように書けばOK.
〜〜〜〜〜〜〜〜〜〜〜〜
個人的には、コーディングのレイアウトが強制されるのは、少し残念。
この改行の問題は、たびたび議論にあがるし、バージョンアップ時の機能追加要望
としてあがってはいる(VBAのoption explicitみたいなオプション)けど、どうなるやら。
0947デフォルトの名無しさん
2013/03/26(火) 11:51:08.06コーディングスタイルを>946のように変えれば、一応できるかも。
だけど 935のやり方は
1. scalac MyClass.scala で文法チェックとかしてから
↓
2. REPLで :load MyClass.scala (→ ソースをREPL上での解釈となる )
なんだよね。
もっとよいやり方がありそう。
0948デフォルトの名無しさん
2013/03/26(火) 12:24:48.63sbt consoleの方が楽だけど
0949デフォルトの名無しさん
2013/03/27(水) 00:09:13.18REPLだと1パスでSCALACは2パスだからREPLで本格的なプログラムは無理じゃない?
0950デフォルトの名無しさん
2013/03/27(水) 20:58:24.740951デフォルトの名無しさん
2013/03/27(水) 22:34:42.33うまく行ったらソースにまとめるってやり方はある
Scala REPLだとそういうふうに全力で使う気になれない
0952デフォルトの名無しさん
2013/03/29(金) 00:05:13.39HaskellのREPLというかインタラクティブモードは機能が制限されてるから、あれで検証しながらコード
書いてソースにまとめてる人が居るのかどうか。ScalaのREPLは機能的にはcompletion含めて
高機能な方だとは思う
0953デフォルトの名無しさん
2013/03/29(金) 02:06:00.880954デフォルトの名無しさん
2013/03/29(金) 06:09:44.040955デフォルトの名無しさん
2013/03/29(金) 10:46:04.880956デフォルトの名無しさん
2013/03/29(金) 11:07:49.410957デフォルトの名無しさん
2013/03/29(金) 11:36:35.76scalaでは一番有名なフレームワークだよね
>>956
公式サイトがScala IDE for Eclipseを推している感じがあるから
IDEA知らない人はそっちに行ってしまうと思う
0958デフォルトの名無しさん
2013/03/29(金) 12:05:39.570959デフォルトの名無しさん
2013/03/29(金) 12:23:20.92ここまでの流れでidea押す人が良いけど
EclipseならScalaごとインストールしてくれるしとっかかりにはおすすめ
0960デフォルトの名無しさん
2013/03/29(金) 19:57:31.17・sbt側でsbteclipseというプラグイン
と
・Eclipseにesbtというプラグイン
と、どっちが良いか、、、。
あと、WindowsでCygwinを使っている人で、Exclipseもsbtも使っている人居るかなあ?
0961デフォルトの名無しさん
2013/03/29(金) 21:11:56.18インタラクティブ単体というよりはemacsとslimeとの組み合わせで。
ScalaはREPL自体は強力だけどクラスの枠組みとコードブロック単位の
evalはちょっと相性悪いと思う。自分はIDEのほうが楽。
0962デフォルトの名無しさん
2013/03/29(金) 21:17:26.420963デフォルトの名無しさん
2013/03/29(金) 21:27:53.800964デフォルトの名無しさん
2013/03/29(金) 21:36:40.68同じことやらせても効率悪くて時間かかるだけなのにIDEを使おうとしない
Windowの大きさ、位置かえるのもキーボードという馬鹿さえいる
0965デフォルトの名無しさん
2013/03/29(金) 21:54:15.20それ以外使えなかったり、ましてや否定するエンジニアがしょぼいのは分かる
0966デフォルトの名無しさん
2013/03/30(土) 00:26:17.31使ってみたりする言語だから
IDE好きな輩も多いよね
0967デフォルトの名無しさん
2013/03/30(土) 00:36:58.500968デフォルトの名無しさん
2013/03/30(土) 02:43:13.95自分の目が届かないところで設定ファイルをいじられたくない
マウスでビューを切り換えるなら、Ctrl+矢印で画面を切り換える
集中してるときは仮想デスクトップ1つにterm 1つにコマンド1つだ
途中でファイル名を変える方法ごときで悩みたくない
キーボードから手を離すと集中が途切れる
ゆえにIDEは使いたくない
emacsと仮想デスクトップとtermで十分
0969デフォルトの名無しさん
2013/03/30(土) 04:06:36.130970デフォルトの名無しさん
2013/03/30(土) 08:33:49.20まとめると、「お前が使いこなせないのをツールのせいにするな」かな
ぐだぐだと書き連ねた内容は全てIDEでも解決出来る
これ以上はスレチなのでマ板でスレでも立てて叩かれて来いや
0971デフォルトの名無しさん
2013/03/30(土) 08:39:06.13沢山並んだメニュー(それでもCUIで出来る事全てをカバー出来ない)からマウスで選んだり
ショートカットを丸暗記したり(低能は丸暗記が大好き)して
使うためのツールだからね > IDE
0972デフォルトの名無しさん
2013/03/30(土) 08:44:10.350973デフォルトの名無しさん
2013/03/30(土) 08:51:31.430974デフォルトの名無しさん
2013/03/30(土) 08:56:52.29「冊目」を見るとScalaは実戦投入もできない段階の代物で
住人も本で勉強してるだけ、のイメージ
0975デフォルトの名無しさん
2013/03/30(土) 09:09:06.41「ERROR:Lvが足りなくてスレッド立て(ら)れません。」
Lvは40なんだけどな
この板は有料会員以外はスレ立てられない規制入ってるの?
0976デフォルトの名無しさん
2013/03/30(土) 11:09:41.392013/03/30
http://itpro.nikkeibp.co.jp/article/NEWS/20130329/467341/
0977デフォルトの名無しさん
2013/03/30(土) 11:10:53.660978デフォルトの名無しさん
2013/03/30(土) 12:20:56.180979デフォルトの名無しさん
2013/03/30(土) 12:22:20.760980デフォルトの名無しさん
2013/03/30(土) 12:23:07.850981デフォルトの名無しさん
2013/03/30(土) 12:38:54.610982デフォルトの名無しさん
2013/03/30(土) 12:42:46.00スレ立て乱立のときでも出てたから不思議
0983デフォルトの名無しさん
2013/03/30(土) 13:52:49.75次
http://toro.2ch.net/test/read.cgi/tech/1364619119/
0984デフォルトの名無しさん
2013/03/30(土) 13:57:11.85乙。いったい9杯目ってなんだ
リンクは日本のサイト以外は全部見れた
0985デフォルトの名無しさん
2013/03/30(土) 14:02:05.600986デフォルトの名無しさん
2013/03/30(土) 14:13:08.410987デフォルトの名無しさん
2013/03/30(土) 15:29:28.32なるほど、コップ本からとったのか
>>976
Scalaの注目度はあがってるみたいだな
0988デフォルトの名無しさん
2013/03/30(土) 15:42:18.40当時はそんな無名言語推しまくるヤツ()とか思ってたけど着々と広まって行って意外だった
0989デフォルトの名無しさん
2013/03/30(土) 16:01:23.850990デフォルトの名無しさん
2013/03/30(土) 18:12:00.69エラー出るのはこの板だけ?
俺はこの板でだけスレ立てができない気がする。
荒らしがいるからスレ立て規制されているのかもしれないがよくわからない
0991デフォルトの名無しさん
2013/03/30(土) 19:54:11.21こういうイベントが開催された事知りませんでした。
どうして、ここでお知らせしてくれなかったんですか?
出れなかったじゃないですか!
0992デフォルトの名無しさん
2013/03/30(土) 20:00:02.84だれか名古屋で開催してください
会費は無料でお願いします
0993デフォルトの名無しさん
2013/03/30(土) 20:18:13.902chはおわってる
0994デフォルトの名無しさん
2013/03/30(土) 21:00:56.18新しいものかどうかは知らん
0995デフォルトの名無しさん
2013/03/31(日) 03:58:23.40レス数が950を超えています。1000を超えると書き込みができなくなります。