プログラミング言語 Scala 7冊目
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2011/09/04(日) 20:07:34.70ttp://www.scala-lang.org/
■リンク集
ttp://sites.google.com/site/scalatohoku/%E5%8B%89%E5%BC%B7%E4%BC%9A%E8%B3%87%E6%96%99
■前スレ
プログラミング言語 Scala 6冊目
ttp://hibari.2ch.net/test/read.cgi/tech/1307416864/
■Scalaの紹介文(さわり)
Scalaは簡潔かつ優雅で型安全な方法でよくあるプログラミングパターンを表現できるように
設計された汎用プログラミング言語です。
Scalaはオブジェクト指向と関数型言語の特徴をスムーズに統合しておりJavaやその他の言語を扱う
プログラマをより生産的にすることができます。(以下略)
ttp://www.scala-lang.org/node/25
■Scalaに関する書籍(英語)
ttp://www.scala-lang.org/node/959
リファレンスマニュアルや草稿のPDFなども充実しているのでそちらも参照してください。
日本語の資料には、チュートリアルの訳やIBM dW、IT Proの連載記事、各々で開かれた勉強会の資料などがあります。
0232デフォルトの名無しさん
2011/09/25(日) 14:33:05.430233デフォルトの名無しさん
2011/09/25(日) 15:19:13.56素直な感想を書くとそうかもしれない。でも、受け取る側は批判ととる。
これがSCALAクオリティー
その言葉が述べられたコンテキストをはずしてたのがまずかったですね。コンテキストとしては、
Scalaはpurityをプログラマに強制しないので、関数型言語としては不適格というもので、
関数型プログラミング=良いもの、という前提に立ってる人の言葉としては、十分な「批判」だと思います。
ちなみに、私自身はRich Hickeyの批判に妥当性が無いとも言って無い、というか彼の立場からすればある程度妥当だろうとすら思っている
ということは付け加えておきます。念のため。
0235デフォルトの名無しさん
2011/09/25(日) 16:19:36.07Perlの知名度を上げPerl業界に大きく貢献した
◆CgacaMDhSQでは話にならない
帰れ
Perl忍者様に土下座しろ詫びろ
0236デフォルトの名無しさん
2011/09/25(日) 16:39:30.270237デフォルトの名無しさん
2011/09/25(日) 17:25:24.550238デフォルトの名無しさん
2011/09/25(日) 17:25:27.540239デフォルトの名無しさん
2011/09/25(日) 17:40:49.63何もないけどこのままでいいのかな
0240デフォルトの名無しさん
2011/09/25(日) 19:04:16.160241デフォルトの名無しさん
2011/09/25(日) 23:09:23.590242デフォルトの名無しさん
2011/09/26(月) 00:23:11.28We will have a PrePrint of Greg's book out soon, with final publication set for early next year.
http://www.scala-lang.org/node/10448#comment-47711
http://www.biosimilarity.com/publications.html
歴史秘話ヒストリア
http://www.amazon.com/Pro-Scala-Monadic-Design-Patterns/dp/143022844X (発売中止)
Monadic Design Patterns for the Web has moved to Artima
http://comments.gmane.org/gmane.comp.lang.scala/19713
0243デフォルトの名無しさん
2011/09/26(月) 00:52:21.27Scalaz Tutorial: Enumeration-Based I/O with Iteratees
http://apocalisp.wordpress.com/2010/10/17/scalaz-tutorial-enumeration-based-io-with-iteratees/
最新のJAVA APIでScala/JVMの関数型IOが高速化することが
できたら実装する人いるんだろうか。
発信源のHaskellさんの記事もろもろ
http://www.google.co.jp/search?q=Enumerator+Iteratee
0244デフォルトの名無しさん
2011/09/26(月) 01:00:29.74http://www.scala-lang.org/node/10448 (上のリンクと同じ)
スレッドの最初から出てくる、Tony MorrisはScalaz始めた人ですね。ただ、スレッドを流し読みした感じ、
Scalazの本にはならないんじゃないですかね?本の中で紹介とかはしそうですが。
0246デフォルトの名無しさん
2011/09/27(火) 00:26:25.830247デフォルトの名無しさん
2011/09/27(火) 04:54:11.670248デフォルトの名無しさん
2011/09/27(火) 11:58:56.460249デフォルトの名無しさん
2011/09/28(水) 19:50:27.83「Scala2.9.1はScala2.9.0.1と完全にバイナリ非互換であることを目標にしています。」
ってどういう意味?いや意味というか意図というか。前後の文章とのつながりがわからん。
あと、バイナリ非互換って目標にするようなものなの?
0250デフォルトの名無しさん
2011/09/28(水) 20:01:24.540251デフォルトの名無しさん
2011/09/29(木) 04:37:46.16ギリギリまで書いてたんだな
0252デフォルトの名無しさん
2011/09/29(木) 12:36:51.070253デフォルトの名無しさん
2011/09/29(木) 12:44:57.280254デフォルトの名無しさん
2011/09/29(木) 13:01:46.68申し訳ありません。それは誤植です。「バイナリ互換であることを目標」が正しいです。そう読めば意味
が通るようになっています。Twitterで既に何名かの方に指摘を受けているので、正誤表に載せていただくようにします。
>>250
一瞬何のことだかわからなかったのですが、p.703のリスト99.1ですか。これも誤植ですね。
同じく、正誤表に載せていただくことにします。ご指摘ありがとうございます。
>>251
それほどギリギリ、というわけではないのですが、大体書籍が出版される頃には2.9.1が
出てるだろう、という目測が立つくらいの時期ではありますね。ちなみに、誤解されると
申し訳ないので言っておくと、2.9.1 finalそのものの改善点(REPL高速化など)については
載っていません。記事自体もページ数の制約もあり、あくまで2.9新機能の概要なので、
おまけ程度に思っていただければ。
>>253
明らかに誰かわかる形でコテハンやってる時点で既にキモい奴だなあと自分で思います。
0256デフォルトの名無しさん
2011/09/30(金) 00:49:34.440257デフォルトの名無しさん
2011/09/30(金) 01:57:36.50mizushima kagerou
でググれ
0258デフォルトの名無しさん
2011/09/30(金) 09:25:22.88うごいてよ!今動かなきゃ(ry
0259デフォルトの名無しさん
2011/09/30(金) 12:04:00.70Performance, Flexibility and Correctness Improvement
http://implicit.ly/scales-xml-02
ライブラリー実装:
ミュータブルのが速いし省メモリだよ派
遅延評価寸止め革命中の今がのし上がるチャンスだよ派
0260デフォルトの名無しさん
2011/10/01(土) 04:39:38.26そっちも気になってたんですけど、@djspiewak の
Anti-XML https://github.com/djspiewak/anti-xml
も標準のXMLライブラリよりフットプリントが軽くて、
かつimmutableなのをウリにしてるんですよね。ちょっと
ベンチマーク取ってみたいところですね。
0262デフォルトの名無しさん
2011/10/02(日) 00:45:21.37javaのFuture/Promiseと別物?
Scalaの限定継続プラグインを使っているみたいだし。
http://akka.io/docs/akka/1.1/scala/dataflow.html
0263デフォルトの名無しさん
2011/10/02(日) 01:09:08.63なるほどっすな。
Scala2.8の登場で、XMLをもっとうまく実装できる環境が整ったんでしょうね。
そして、これは有望なWebフレームワーク?
BlueEyes
https://github.com/jdegoes/blueeyes
A lightweight Web 3.0 framework for Scala, featuring a purely asynchronous architecture, extremely high-performance, massive scalability, high usability, and a functional, composable design.
Sinatraクローン(Scalatra)をネタに上を目指すとか。MVCならLift使えとか。
0264デフォルトの名無しさん
2011/10/02(日) 08:20:30.82scalaで高速なパーサを作る定番はあるのでしょうか?
パーサコンビネータライブラリしかないのかなあ。
Scalaのパーサコンビネータライブラリは、速度が重要になるパーザを書く用途には
本質的に向いていません(これはコップ本にも書かれていますが、Scalaのパーザコンビネータライブラリの
実装によるところが大きいです)。
速度的に、それよりもっと良いものとして、@djspiewak の GLL Combinators
https://github.com/djspiewak/gll-combinators
というのがあります。これもパーザコンビネータですが、Scala標準のものより速度が出るように
設計されています(特に、LL(k)文法に収まる場合)。
もっと速度を追求したい場合は、既存のJava用パーザジェネレータを使うという手もあります。いくつか
注意すべき点はありますが、基本的にScalaから問題なく使えます。ANTLR辺りが個人的にお勧めですが、
この辺は(必要に応じて)どれ選んでも良いと思います。性能がかなり重要とのことなので、実際にいくつかの
パーザジェネレータで簡単なベンチマーク取ってみるのが良いかと。
最後に手書きの場合ですが、Scalaで手書きパーザで速度出したい、となると、どうしてもある程度手続き的なコード
書く必要があって、その場合、本質的にJavaとあまり変わらないコードになります(型推論とかで多少楽はできますが)。
概念的にはjava.util.concurrent.FutureとAkkaのFutureは類似のものですが、
AkkaのFutureはモナドなので、他のFutureから簡単にFutureを合成できたりと、
機能がよりリッチなものになっています。で、Promiseですが、これは
java.util.concurrentには無いもので、データフロー変数と呼ばれるものを作成
して、後からそこにFuture型の値をくくりつけることができるようになっています。
0267デフォルトの名無しさん
2011/10/02(日) 10:27:30.17ありがとうございます。
やはり標準のパーサコンビネータは向いてないようですね。
GLL(GLRのLL版?)をまずは試してみます。
0268デフォルトの名無しさん
2011/10/03(月) 18:06:33.040269デフォルトの名無しさん
2011/10/03(月) 19:17:15.84尾崎のクオリティが低いばかりに…申し訳ありません…
0270デフォルトの名無しさん
2011/10/03(月) 20:51:21.890271デフォルトの名無しさん
2011/10/03(月) 21:07:28.17このコードってどう書くの?
リストにタプルを追加しようとするとtype mismatch になっちゃう。
0272デフォルトの名無しさん
2011/10/03(月) 21:17:56.37コンセンサスがとれているならともかく、まあ確かに、具体的にクオリティの低い箇所を
具体的に指摘すべきだよな。
0273デフォルトの名無しさん
2011/10/03(月) 21:24:36.060274デフォルトの名無しさん
2011/10/03(月) 21:44:06.13Scala歴二日のHaskellプログラマが書いてみました
意図どおりですかね?
たぶんエラーになったコードを貼ったほうが思い違いが少なくてよいと思います
var l : List[(Int,Int)] = List()
for (i <- List(1,2,3)) {
l ::= (i, i + 1)
}
println(l)
Scalaキモいなあが二日間いじった感想です
subtypeキモいです
これからこのスレでお世話になろうと思います
よろしくおねがいします
0275デフォルトの名無しさん
2011/10/03(月) 22:00:00.46タプルを囲むカッコを書いたつもりで、実は引数のカッコを書いていた、
というのがありがちだから、とりあえずタプルのカッコを更にカッコで包んでみるんだ。
0276デフォルトの名無しさん
2011/10/03(月) 23:19:34.11ありがとう!
どうやらListの宣言の時点で間違っていた(理解していなかった)みたい。
object GetOptions {
def main( args:Array[String] ){
var list:List[(String,String)] = List()
for ( i <- 1 to 10 ) {
//list =:: "a"+i -> i.toString()
list = list ::: List("a" + i -> i.toString())
}
println (list)
}
}
普段仕事でJavaとPHPしか触らなくて、まったくScalaの勉強が進まなかったから、とりあえずPerlのGetOptions
みたいなものでも作ってみようと思っていきなり躓いてた。
0277デフォルトの名無しさん
2011/10/03(月) 23:41:17.15ListBuffer使えばいいと思うよ
object GetOptions {
def main(args: Array[String]) {
val buf = new scala.collection.mutable.ListBuffer[(String, String)]
for (i <- 1 to 10) {
buf += "a" + i -> i.toString
}
println(buf.result)
}
}
0278デフォルトの名無しさん
2011/10/04(火) 15:29:50.69(1 to 10).map(i => "a" + i -> i.toString)
または
for(i <- 1 to 10) yield i => "a" + i -> i.toString
どうしてもリストが良ければ、最後で
toList
でどうでしょうか
0279デフォルトの名無しさん
2011/10/05(水) 09:32:38.59「Typesafe Stack 1.1」がリリースしてるよぉ
http://typesafe.com/stack/download
こっそり同僚のPCにインストールするのに便利!
0280デフォルトの名無しさん
2011/10/05(水) 09:53:37.980281デフォルトの名無しさん
2011/10/05(水) 20:35:54.05何を作る気なんだ?
0282デフォルトの名無しさん
2011/10/05(水) 23:31:18.43元々の質問読んだら?
0283デフォルトの名無しさん
2011/10/06(木) 08:22:43.960284デフォルトの名無しさん
2011/10/06(木) 18:19:49.240285デフォルトの名無しさん
2011/10/06(木) 18:34:14.330286デフォルトの名無しさん
2011/10/06(木) 18:53:13.750287デフォルトの名無しさん
2011/10/06(木) 19:48:54.71Scalaやったところでモヒカンになれる気しかしねぇぜ!
0288デフォルトの名無しさん
2011/10/07(金) 00:10:20.650289デフォルトの名無しさん
2011/10/07(金) 13:03:21.77文系馬鹿がScala使ったところで、ベタージャバにしかならないね
文系にはオブジェクト指向
0290デフォルトの名無しさん
2011/10/07(金) 13:19:39.520291デフォルトの名無しさん
2011/10/07(金) 13:31:23.340292デフォルトの名無しさん
2011/10/07(金) 20:20:05.30ベターなJavaでも、全然OKだと思う、、。
だが、問題は、Java自体が人気下降気味なこと。
Android関連で、また、盛り返してくれればうれしいけど。
Javaは、GUIとかがイマイチ垢抜けないよね。
SwingXとかでサクサク作れる開発環境があると良いのだが。
0293デフォルトの名無しさん
2011/10/07(金) 22:47:55.670294デフォルトの名無しさん
2011/10/07(金) 23:00:40.020295デフォルトの名無しさん
2011/10/08(土) 01:13:37.510296デフォルトの名無しさん
2011/10/08(土) 01:23:29.470297デフォルトの名無しさん
2011/10/08(土) 02:00:11.940298デフォルトの名無しさん
2011/10/08(土) 02:32:55.070299デフォルトの名無しさん
2011/10/09(日) 06:31:46.58のや
0300デフォルトの名無しさん
2011/10/09(日) 11:49:29.38つまんねえんだよクズ
これだから土人は…
0301デフォルトの名無しさん
2011/10/09(日) 21:37:20.95頭がすっからかんなのね。気の毒に。
0302デフォルトの名無しさん
2011/10/09(日) 21:47:38.710303デフォルトの名無しさん
2011/10/10(月) 20:18:15.70scalaはベターC++を目指したD言語と同じ末路確定
0304デフォルトの名無しさん
2011/10/10(月) 21:36:34.720305デフォルトの名無しさん
2011/10/10(月) 23:40:58.620306デフォルトの名無しさん
2011/10/10(月) 23:42:46.370307デフォルトの名無しさん
2011/10/11(火) 01:46:27.81言語仕様に優れ、C言語と連携もばっちりのD言語は
かつてベターC++と一部で騒がれたが、結局は普及率せず風前の灯し火
scalaの立場と似ているだろ
そして言語仕様の酷いPHPが普及率で君臨し続ける
0308デフォルトの名無しさん
2011/10/11(火) 02:36:23.39別に国内での普及率なんてどうでもいいなぁ
俺はScalaが気に入ってるから使うけど、JavaやPHPが好きな人はそれを使い続けてればいいと思うよ
0309デフォルトの名無しさん
2011/10/11(火) 03:22:06.62だから普及してくれないと困る
0310デフォルトの名無しさん
2011/10/11(火) 03:31:28.22同意。
とりあえず一度普及してくれれば、その後もメンテされ続けるからなあ。
0311デフォルトの名無しさん
2011/10/11(火) 06:45:00.66しかし何故に比較対象がPHP…??
C言語とかも出てくるし、どういう分野での話をしてるのだ?
著名じゃない所でもScalaを採用している会社が増えています。Typesafe社という形でサポートビジネス等を
立ち上げたからには、それらの会社が軒並みScalaを破棄するという事にならなければ、当分はメンテされるでしょう。
Typesafeがどれだけ儲かってるかはわかりませんが、主要メンバって結局はEPFLのScalaチームなので、Typesafe
が儲からなくてもメンテナンス自体は継続可能な状態ですし。
あと、互換性の問題を無視して言語仕様を拡張しようとしても、公式MLで文句言う「仕事でScala使ってるユーザ
(海外)」がそれなりに居ますし今後しばらくは「破壊的な」言語仕様の変更は起こらないと思います。
0313デフォルトの名無しさん
2011/10/11(火) 07:37:09.810314デフォルトの名無しさん
2011/10/12(水) 06:59:33.93小田好先生ってこんなイケメンだったんだな
Odersky先生に会った個人的な印象としては、ナイスミドル、という感じでしたね。なんか顔つきがあまり泥臭くない
というかw あと、結構情熱家だなあ、とも。
0316デフォルトの名無しさん
2011/10/12(水) 21:31:21.43使う人がいなくなる。
0317デフォルトの名無しさん
2011/10/12(水) 21:38:54.52でもあれIKVMだったっけ?
0318デフォルトの名無しさん
2011/10/13(木) 00:44:34.76環境が限られるというデメリットもあるよねえ。
、
まあ、OpenJDKとかもあるから、JVMがなくなることはないと思うのだけど、、。
あと、JavaならGWTで JavaScriptに変換できるけど、
Scalaではそういうのないの??
0319デフォルトの名無しさん
2011/10/13(木) 01:39:52.57http://lamp.epfl.ch/~magarcia/ScalaNET/
jdk2ikvm: A source-level conversion tool to migrate Scala programs from JDK to .NET
http://lamp.epfl.ch/~magarcia/jdk2ikvm/
ikvmを使ってconvertするみたいだけど、よくわからん
>あと、JavaならGWTで JavaScriptに変換できるけど、
>Scalaではそういうのないの??
あるよ。
http://scalagwt.github.com/
まだ正式リリースは無いが、GWTのJavaで書かれたデモ(に相当するScalaコード)ほとんどがコンパイル/動作できるくらいには進展してる
らしい。
0321デフォルトの名無しさん
2011/10/13(木) 02:58:37.260322デフォルトの名無しさん
2011/10/13(木) 09:03:52.31が圧倒的に多いようだからだよ。逆に言えば、Java使いから魅力が
あっても、それ以外からは魅力がない言語ということを暗に意味してる。
C#なんかも.NETじゃなかったら普及してないだろう?それと同じ。
0323デフォルトの名無しさん
2011/10/13(木) 13:50:46.170324デフォルトの名無しさん
2011/10/13(木) 21:24:51.51確かに全CPUを使いきってくれる。
手軽だね。
ただ、共有データを操作する際にロックは必要だと思うけど、見当たらない。
これはJavaのロック機能を使えということなのかな。
0325デフォルトの名無しさん
2011/10/14(金) 01:43:53.25これが広まらずに終わるのって正直やだなと思います。
scalaが信用され利用できる範囲が広がる事を祈ってます。
まず、並列コレクションでは、明示的なロック操作を行う事は基本的には想定されていません。
並列コレクションのモデルは、いわゆる「暗黙的な」並列化という奴で、不変コレクションを使って
いて、共有データを高階関数内で書き換えなければ、処理が並列化されている事は、プログラマ
から「見えない」というものです。ですから、そもそも並列コレクション専用のロックメカニズムは
用意されていません。Javaのsynchronizedを使うことはできますが、基本的にそれはやらない方
が賢明です。
ロックを使う必要がある場合には、ロックを使わないでいい形に、並列コレクションを使った処理にうまく
変換するか、Actorなどの「明示的な」並行処理を提供するライブラリを利用するべきです。
0327デフォルトの名無しさん
2011/10/14(金) 16:25:08.380328デフォルトの名無しさん
2011/10/14(金) 16:32:58.510329デフォルトの名無しさん
2011/10/14(金) 16:33:05.200330デフォルトの名無しさん
2011/10/14(金) 17:29:39.85特に日本語版
0331デフォルトの名無しさん
2011/10/14(金) 17:47:37.27■ このスレッドは過去ログ倉庫に格納されています