・Scalaの紹介文(さわり)
Scalaは簡潔かつ優雅で型安全な方法でよくあるプログラミングパターンを表現できるように
設計された汎用プログラミング言語です。
Scalaはオブジェクト指向と関数型言語の特徴をスムーズに統合しておりJavaやその他の言語を扱う
プログラマをより生産的にすることができます。(以下略)
ttp://www.scala-lang.org/node/25 ・Scalaに関する書籍(英語)
ttp://www.scala-lang.org/node/959 リファレンスマニュアルや草稿のPDFなども充実しているのでそちらも参照してください。
日本語の資料には、チュートリアルの訳やIBM dW、IT Proの連載記事、各々で開かれた勉強会の資料などがあります。
ぬるぽ
Scalaのサイト、雪降ってるw
そりゃ、冬っすから
もっと雪降れ♪
( ^ω^)おっお
8 :
934:2009/12/26(土) 18:06:26
寒いっすね
NetBeans 6.8用のプラグインって上手く動かないんだけど・・・
Scala 2.8じゃないと駄目なの?
IDEどれがいいかなあ?
eclipseのやつはかなり補完してくれるけど、たまに変なエラー吐くし
補完の精度で言えば、間違いなくeclipseが一番だと思う
implicit conversionとかもちゃんと見て補完候補出してくれるし
ただ、eclipseのscalaプラグインは不安定で、お勧めできないのがな…
2.8.0ではeclipseのプラグインが安定して欲しいものだが。
低能乙
>>15 お、まじ?
implicit conversion でも補完してくれるのは大きいなぁ。
IntelliJは悪くはないんだけど、型推論が入っている個所とかは補完効かないんだよね・・・
あと、import文の整理がいまいち。
19 :
デフォルトの名無しさん:2010/01/02(土) 18:05:13
scalaのページ見たけど、地球の絵が描いてあるとどうしてこうビジネス臭がするんでしょう。
ビジネス臭くて近寄りにくいんですけど。
Mosaicってビジネス臭かったっけ?
>>20 実際にビジネス臭いかどうかは知らないけど、
地球の絵が描いてあるWEBページはビジネス臭く感じるということが言いたかっただけ。
深い意味はない。
>>21 ビジネス臭いというかなんか一気に胡散臭くなるよね
半年くらい前に今のページデザインに変わったんだけど、初めて見たとき
あまりに胡散臭くて噴いたもん
なんかlift難しい・・・LiftViewってどういう時に使うのかわかんね
struts1.XのLookupDispatchActionみたいなものだと思っておけばいいのか?
どこに地球の絵が描いてあるのかよく分からない・・・
スクリプト切ってると出ない
もうブームが去ったか・・・
毎年この時期はどのスレもあんまり延びない。
2月になればまた伸びるよ。
というかScalaはもう終わってるよ
初心者だけど、XとY座標を扱うプログラムで
座標位置としてタプルを使うのは変?
変ではないけど、手抜きだと思う。
手を抜いていい場面なら、タプル使ったほうが楽だね。
>>31 元の質問者じゃないけど、ケースクラス使えってこと?
あちこちで座標を表すデータを使いまわすなら、
case class Point(x: Int, y: Int)
とかデータ定義した方がいいだろうね。
例えばPointというオブジェクトを定義したとして
それをMapのキーにして扱いたいんだけど、
Point p1 = new Point(100, 100);
Point p2 = new Point(100, 100);
これは値がいっしょでもインスタンスが異なるから別のキーとして認識しちゃう(Javaなら)
ScalaだとPointクラスをどう定義すれば(書けば)いいですか
35 :
y34:2010/01/14(木) 05:38:20
Javaならこんなんです
public class Point {
private int x、y = 0;
public Point(int x, int y) {
thisx. = x;
this.y = y;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
@Override
public boolean equals(Object obj) {
boolean result = false;
if (obj instanceof Point) {
Point p = (Point) obj;
if ((this.getX() == p.getX()) && (this.getY() == p.getY())) {
result = true;
}
}
return result;
}
@Override
public int hashCode() {
int hash = 3;
hash = 47 * hash + this.x;
hash = 47 * hash + this.y;
return hash;
}
}
>>34 質問する前にまず試してみたら?と言いたくなるが、
ケースクラスはequalsメソッドも自動的に書き変わるから問題ない
書き込み少ないな
goに流れたの?
goのほうがシンプルでいいよ。
それにネイティブだし。
GoとScalaはユーザーが全くかぶってないだろう
かぶるは、ruby?
かぶるのは、JavaやHaskellあたりじゃない?
Scalaはwebフレームワークが少ないからJavaの代わりにはまだならないな
Javaのフレームワーク使うって手もあるんだろうけど
結局Scalaは流行らなかったな
PHPもRubyもずっとそう言われ続けてきたが、
ゆっくりと浸透し続けて言ってるからなあ
Objective-CがiPhoneの影響でいきなり流行りだしたり
本当に将来は何が起きるかわからんよ
Obj-Cは一生流行りませんw
Web Flavorは生きてるのか?
>>45 Googleが買収したEtherPadが実はScala(だけじゃないけど)で
書かれてたりとか、foursquare.comがScala + Liftで書かれてるとか
地味にだが採用事例は増えて来てる。爆発的に流行しなくていいけど
着実に実績積み上げて行って欲しいな
>>50 一応生きてはいるみたい。ひょっとしたら、今年は何かアップデートが
あるかもね。
53 :
デフォルトの名無しさん:2010/01/17(日) 23:27:55
うおおおおお
IntelliJ IDEA
Community EditionのScalaプラグインすげえええええ!!!
EclipseとかNetbeansのプラグインがウンコだったが
IDEAのプラグインはマジで普通に完成されてるじゃん!
Scalaが俺の中で株を一気に上げまくった
2.8のドキュメントの形式は変更されたのか。
前スレでコレクションの関数が返す型がわからんとか
心配されてたけどちゃんと考えられてるのね
ubuntuの9.10を使ってるんですが、プラグインの関係でScala 2.8をしようとしています。
とりあえず
>>11のnightly buildから最新版を落としてパスは通したのですが、
どうも実行する実体がスクリプトでcygwin/linuxなど環境によって実行ファイルを替えているためか、
apt-getで入れたものと比べ若干起動が遅くなってしまいました。(起動時に一拍置く感じ)
できればaptで入れられればありがたいのですが、scalaのnightly buildでaptパッケージのものとかないんでしょうか?
あるいはsubversionリポジトリから自分でコンパイルすればできますか?
57 :
56:2010/01/24(日) 16:02:54
ちなみにバージョンを表示させたときの実効時間はこんな感じです。
sin% /usr/bin/time -p scala -version
Scala code runner version 2.8.0.r20638-b20100123020158 -- Copyright 2002-2010, LAMP/EPFL
real 0.61
user 0.50
sys 0.06
sin% /usr/bin/time -p /usr/bin/scala -version
Scala code runner version 2.7.5final -- (c) 2002-2008 LAMP/EPFL
real 0.18
user 0.10
sys 0.02
この程度の差であれば、普通にコンパイルする分には気にならないもんでしょうか。
ようやく2.8のベータがでたらしい
Scalaの型推論って今後もっと型を明示しなくてもいい箇所が増えたりするものなの?
>>59 どうだろうね。そのような予定自体は特に無いみたいだが。
一般論としては、そもそもScalaみたいな型システム上でHaskellとかML並の型推論を
やるのは原理的に難しい。ローカルなメソッドに限定すれば、呼び出し側の情報も
使って推論するとかまだやりようはあるだろうけど。
>>60 どうもです。型推論は素晴らしいんだけど、推論してくれるところとしてくれないところが
はっきりしないのがどうも気持ち悪いんです。全部推論してくれる奇跡起きないかな
>>61 Scalaのような型システムで完全な型推論をするのは確か決定不能だったと思うので
どうにか制限を加えないと残念ながら、無理かと。
>>62 そうなんですか。おもしろいですね。>決定不能
でもScalaは好きなんで、今後も期待してます。
64 :
デフォルトの名無しさん:2010/01/30(土) 02:19:53
2.8.0 beta1
よーわからんが2.8はIDEが便利になりそうな悪寒
66 :
デフォルトの名無しさん:2010/01/30(土) 10:55:09
Scala 3.x proposal: drop method overloading (in light of 2.8 named params) and introduce slots listerals as in Fantom
http://bit.ly/bJHCSe だと
Eclipseでプラグイン入れて使ってるんだが、2000行程度のファイルを開くと死ぬほど重い、というか落ちる。
絶対処理のどっかにO(N^2)以上の繰り返しが入ってる気がする。
話題ないのな
>>57 2.8.0の起動たしかに重いね
scalac(コンパイル)も重いけど、こっちはfsc使えば気にならないかな。
あとは、別件だけど、
Windowsでコンソールで使う時は、Server VM使うように、
JRE単体ではなくServer VMを持ってるJDK側のJREを使ってる。
(64bitだとClient VMがなく、Server VMしかないらしいが)
各BATのデフォルトが _JAVA_OPTS=-Xmx256M -Xms32Mなので、
set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_18\jre
set JAVA_OPTS=-server -Xmx256M -Xms32M
を設定して使ってる。
ただし、JDKのバージョンあげた時に、変更するのはめんどくさい。
とりあえず手元にあったScala 2.8.0の夏ごろのビルドで試し、msysのtimeで計測 (CPU負荷は全部100%張り付いた)
ソース
ttp://d.hatena.ne.jp/ryugate/20080417 C2D 1.2GHz 2GB Vista 32bit
Scala 2.8.0.r18207-b20090705020223 (Java HotSpot(TM) Client VM, Java 1.6.0_18).
JAVA_OPTS="-Xmx256M -Xms32M"
real 21.538s (user 0.153s sys 0.432s)
JAVA_OPTS="-Xmx256M -Xms32M -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:MaxGCPauseMillis=25 -XX:GCPauseIntervalMillis=100"
real 24.090s (user 0.076s sys 0.430s)
Scala 2.8.0.r18207-b20090705020223 (Java HotSpot(TM) Server VM, Java 1.6.0_18).
JAVA_OPTS="-server -Xmx256M -Xms32M"
real 15.076s (user 0.076s sys 0.401s)
JAVA_OPTS="-server -Xmx256M -Xms32M -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:MaxGCPauseMillis=25 -XX:GCPauseIntervalMillis=100"
real 22.017s (user 0.122s sys 0.401s)
>>68 この提案、FANTOM(Fan)の作者が指摘した内容そのままなのかw
Lex Spoonとかコメント書き込んでるんだw
■Fan vs Scala: Different Trade-offs (
http://fantom.org/sidewalk/topic/675 )
> 『Slot Reflection』
> One of major design decisions Fan made a long time ago was to disallow method overloading.
> Method overloading is the kiss of death for easy reflection and meta-programming. In Fan any
> slot can be identified with the qualified name pod::Type.slot. Slot literals are built into the language:
> m := List#join // same as Slot.findMethod("sys::List.join")
> Languages like Java or Scala which support method overloading require the parameter types in
> order to perform method reflection. Identifying methods strictly by name is also a key enabler
> for efficient dynamic dispatch. This is a trade-off Fan and Scala have made differently - Fan
> took away a Java feature in order to simplify reflection and dynamic dispatch.
>>74 リフレクションの簡易記法を入れようってこと?
フレームワークとかDSL作ってる人にはうれしいのかな。
自分はリフレクション使ったことないからなぁ
76 :
デフォルトの名無しさん:2010/02/11(木) 19:09:36
誰かエロい人説明希望です。
リスト中に1つでも true があれば true を返すって問題を解くときに
下記の1つめがダメなのはなぜですか?
バージョン 2.7.7.final です
scala> List(false, false, false).exists(_)
res0: ((Boolean) => Boolean) => Boolean = <function>
scala> List(false, false, false).exists(_ == true)
res1: Boolean = false
scala> List(false, false, false).exists(e => e)
res2: Boolean = false
scala> List(false, false, false).exists(!_)
res3: Boolean = true
>>76 関数の部分適用になってるから
Scala は _ を使い回ししすぎな観もある
まあ、大体わかるんだけど
人気ないね(T_T)
今日使いはじめたよ。Java 使ってる身としては、夢のような言語。
80 :
76:2010/02/12(金) 11:24:44
すごくバランスが良い言語だな、と思いました。
ビジネス向けシステム開発とかにも多く利用されるようになりそう。
現状、ScalaにしろClojureにしろ、後方互換性のないコア部分の変更もあるから、
そこは注意しないと駄目だけど
疑問なんだが同じ内容の文字列をeqで比較するとtrueが返るんだが、
> "text" eq "text"
Boolean = true
eqってStringにないからRichStringに変換されて比較されると思うので
別のインスタンスだとfalseになると思ったんだが、違うのかな
RichStringを返すreverseメソッドを使って比較すると、こっちはfalseになる
> "text".reverse eq "text".reverse
Boolean = false
AnyRefのeqが呼ばれてる
Javaでいう、参照型を==で比較してるのと同じ
つまり、指すインスタンスの同一性を比較していることになる
その例だと、同一内容のリテラルだからキャッシュされてるんだろね
同一内容の文字列リテラルがinternされるのはJavaの仕様。
Scala上で定義した自作アノテーションをリフレクション経由で読み取る方法ってないですか?
>>84,85 レスどうもです
いろいろいじってたらなんとなくわかってきた。
class Str
class RichStr(val self:Str) {
def eq2(rs:RichStr) = this eq rs
def eq3(rs:RichStr) = self eq rs.self
}
implicit def str2richstr(str:Str) = new RichStr(str)
val str = new Str
str eq2 str // false
str eq3 str // true
自分はこのeq2のようなのではと思ってたけど
実際にはeq3のような処理になってるのかな
>>87 いや、そんなややこしい話ではなくて、StringのスーパークラスであるところのAnyRef
にeqメソッドがあって、これはJavaの==と同様に参照の等価性を判定してるってだけの
ことであって、implicit conversionは関係無い。Javaで"text" == "text"と書いたのと同じ。
>>87 もしかしてJavaの(プリミティブ型以外の)クラスはAnyRefのサブクラス扱い?
>>89 もしかしても何も、AnyRefはObjectの別名。
>>90 thx!
コンパイル後はJavaのObjectとして扱われる、とはなんとなく思ってたけど
言語的には別物だと勘違いしてたわ
Scalaのfor式ってHaskellでいうdo構文に対応するって言うけど、 do { x <- m; expr } みたいなのはfor式でどうかくんだ? Scalaでは書けない?
>>92 全く同じ形では書けないな。あえてやるなら、
for(x <-m; _ <- expr) ...
とかするしかない。
>>93 それだとexprの結果が無視されない?
x = do { x <- m; expr }
みたいに使いたいんだ。やっぱりScalaでは実現不可能?
>>94 exprがreturn expr2の形なら、for(x <- m) yield expr2で書けるけど、それ以外の場合は
forだとちょっとやりづらいかなー。ちょっと見た目が変わるけど、等価な形式なら
val x = for(x <- m; y <- expr) yield y
とか。それ以外だと、
flatMap(要はHaskellの>>=)直書きするしか。
val x = m.flatMap{x => expr}
>>95 自己レス。等価というのはforの中で副作用が無い場合の話ね。forの中で副作用があった場合、
上の書き換えは等価じゃなくなるので。
>>95 おぉありがとうございます。
x = do { x <- m; expr }
↓
val x = for(x <- m; y <- expr) yield y
の書き換えでこれからモナドります。
98 :
デフォルトの名無しさん:2010/02/16(火) 21:44:01
Scalalab に興味ある人います? (科学技術計算用途のScala)
現時点でどれくらい実用になるんだろうか。
MatlabとかScilabとかって、手続き型言語なんで、やってられんので、
Scalalabにはがんばって欲しいなあ。
>>98 科学技術計算は専門じゃないしそれほど興味も無いけど
内部実装がどんな感じなのかには興味あるな。
ttp://sourceforge.jp/magazine/09/09/02/0411204 GroovyからREPLを移し作ってるのか。
jLabのほうは速度の記述ないけど、scalalabは、その部分で速度稼げてるのか
> It is the basic scripting engine. Its scripting code is extremely fast,
> close to Java, and about 20-40 times faster from equivalent Matlab .m scripts!
なんか今一盛り上がりに欠ける
erlang/OTPなどを実装したakkaとか
分散処理のspawnとか
Web Frameworkもろもろとか
Apache CamelとかScala自身で、DSLとか
分散オブジェクトキャッシュ?KVS?のGoat Rodeoとか
なにをどう使えばいいのかようわからん。
twitterの人のはなんかないかな
ttp://github.com/robey KVSサーバー側は、Scalaじゃなくても高スループットで可用性上がっている
国産のを使えばいいような気がするが・・・って、kestrelはqueueなのか
びみょうな本がでたらしいね。
みてないけど。
105 :
デフォルトの名無しさん:2010/02/21(日) 02:45:20
>104
Steps in Scala: An Introduction to Object-Functional Programming
これか? 2010.9月発売だけど。
Pro Scala: Monadic Design Patterns for the Web Gregory Meredith (ペーパーバック - 2010/4/25)
それとも、こっち?
なにそれ、そんな本出てたんだ
Amazonにはないみたいだけど、なんかあやしい感じだな
目次がJavaの入門書と区別つかないし
どう見ても地雷本
Scalaスレにもなると一発で見抜かれるんだなw
想定している読者層がよく分からない本だな。
お気楽極楽のカットシステムじゃあなぁ
出版社名で避けるレベル。
112 :
デフォルトの名無しさん:2010/02/22(月) 00:54:46
113 :
デフォルトの名無しさん:2010/02/22(月) 01:38:31
この本でユーザーが増えるのか?
「Javaの方が簡単じゃん?関数って意味わかんねw」って思われるだけじゃね?
114 :
デフォルトの名無しさん:2010/02/22(月) 08:25:09
>>113 >「Javaの方が簡単じゃん?関数って意味わかんねw」って思われるだけじゃね?
それはありえない。
なぜなら「やさしいScala入門」を手に取る人は、おそらくJavaも知らない人だろうから。w
もっと売れる本を作れば良いのにねえ。あそこの出版社は。
厚くて重い割に、中身がソースでページが割かれていて内容ないので、買う気にならない。
レイアウトとサイズを考慮して欲しい。文庫本大くらいだったら、買ってやるのに。
>この本でユーザーが増えるのか?
この本では増えないだろうね。
でも、最近、初心者向けScalaの本が増えてるので、人気高まるかも。
こちらは3月発売予定のだけど、、、どうだろうか?
↓
初めてのScalaプログラミング
DavidPollak/著
出版社名:日経BP出版センター
発売予定日:2010年3月19日
115 :
デフォルトの名無しさん:2010/02/22(月) 08:58:54
やさしい(インタープリタ|コンパイラ)の作り方入門の人かw
117 :
デフォルトの名無しさん:2010/02/22(月) 09:42:26
>>115 誰かと思ったら日向俊二か…
この人と矢沢久雄は著者名だけで機械的に選択肢から外していいよ。
119 :
pom:2010/02/22(月) 11:26:46
この本&日向俊二がひどいのは、言うまでもないとして、矢沢久雄って人、知らんかったけど、ダメな人なの。なんか偉そうなこと書いてるようだが。
多くの本を書いているけど、一冊として役に立たないクズ本ばかりという点で矢沢と日向は似ている。
121 :
pom:2010/02/22(月) 12:51:14
ふむふむ(頭にメモ)。
先程の書込み、句読点変ですまん。
(まぁ、妙な本を出版するよりは・・・)
まあ、こういう粗悪安物ライターが喰い付いてくる程度にはScalaもメジャーになったと考えればいいのでは。
個人的にはOderskyの本さえあれば十分じゃないかと思うけどね。
>>114 >初めてのScalaプログラミング
>DavidPollak/著
>出版社名:日経BP出版センター
>発売予定日:2010年3月19日
たぶんBeginnin Scalaの翻訳版だと思う。著者のDavid Pollakさんは
Liftの作者だから内容に関しては信頼して良いだろう(訳がよっぽどおかしくなければ)。
h t t p://www.amazon.co.jp/gp/cdp/member-reviews/A1DXJM7NYG32SJ/
魚拓とっといてもいいレベル
配布してるソースコードのアーカイブ形式が lha というだけで、なんか「違う」んだよな
立ち読みしてきたけど、たしかにこれはひどいや。まさに上のブログの通り。
日向ってまともにプログラム書いたことなんてないんだろうな…
駄本書くために自分がわかる範囲でちょこっといじる程度なんだろうよ。
127 :
デフォルトの名無しさん:2010/02/23(火) 09:40:10
文法的には、odersky本(通称、コップ本) があれば十分かなあ。
今、日本で望まれているのは、もっと応用的な本かと思われ。
Liftつかって、こういうの作れます、、みたいなの。
それとも、scala逆引き辞典みたいなのか。
scala使うことを生かせる応用分野って何かあるかなあ?
>126
日向の最近の本でいうと、
「やさしいコンパイラの作り方」
「やさしいインタプリタの作り方」
の本を買っちゃったよ。
紙面の大半が、氏のオリジナル言語を実現するコンパイラのソースで、
まあ、それを読む価値はあるといえばある(他のコンパイラ本は理論的過ぎて難しいので)けど、
説明の方はイマイチな気がする。
要するに買ったけどまだ読んでいない。w
Rubyの場合だけど、アルゴリズムとかオブジェクト指向を考えるのに、Rubyで考えると分かりやすいって
最近気付いた。
でも、Scalaの場合は、どうかなあ? まだ、Scala良く分かってない。
だれか、「Scalaで学ぶアルゴリズム」みたいなの、書いてくれないかなあ。
なるほど、これは悪質だな
Odersky本にケチをつけて自分の本に誘導してたのか
まあ、間に受けるやつなんて誰もいないだろうけど
著者もひどいが、こんなやつに書かせている出版社も問題だな
scalaスケーラブルプログラミング今読んでるんだけど
コードの変数名にxsとかysとかよくでてくるけどなんの略なの?
わかた、sequenceの略っぽいすね
リストのリストとかにはxssとかも使われてますな
関数型言語の教科書なんかだとよく xs, ys, ... という変数名が使われるね。
昔からPrologだとリストの先頭要素をX、残りのリストをXsで表すことが多い
ユニフィケーションで [X|Xs] と書く
Haskellのパターンマッチングだと (x:xs)
だから複数形でよくね?
var map = Map("a" -> 1)
map += (("b",2))
だといけて
map += ("b",2)
ではいけないのはなぜなの?
「+=」をメソッドだと思えば、その理由がわかるのでは?
ちなみに、
map += ("b" -> 2)
だとOKなんだね
「->」と「,」って等価ではないのか
class Hoge {
def +=(t:Tuple2[String,Int]) = {}
}
val hoge = new Hoge
hoge += ("b",2)
これだといけるみたいですねぇ…やっぱわかんなす
>>136 map += ("b", 2)
の場合、("b", 2)という二つの引数を取るメソッド呼び出しであると
解釈されるから、だね。
>>137 基本的には同じだと考えて問題無いけど、
-> は単なる組み込みライブラリの*メソッド*に過ぎないのに対して、
(,)はタプルを作るための組み込み*構文*なせいで、上のケースのように
微妙に異なる解釈されちゃうケースが出てるってことだね。
Scalaだと、複数引数を取る関数とタプルを引数に取る関数が異なる扱いに
なってるので、その弊害とも言えるかも。
>>138が気になって2.8のコレクションのソースコード眺めてみたけど、なんでなのかわからんね
なんでそれはよくて、mutableのMapだと駄目なんだろ
しかし、2.8のソースって読みづらすぎね?
関数型言語としてみると、標準ライブラリがこんなにごちゃごちゃしてるというのは問題だと思うんだけど
普通、言語を勉強するときって、標準ライブラリを読むもんでしょ
十分メジャーになって、本もたくさん出てるから、そっち読みなさいってことなのかなあ
class Hoge {
def +=(t:Tuple2[String,Int]) = {}
def +=(t:Tuple2[String,Int], t2:Tuple2[String,Int]) = {}
}
val hoge = new Hoge
hoge += ("b",2) //だめ
hoge += (("b",2)) //いい
なんかオーバーロードが関係してるっぽいことを発見
>>141 ああ、それが原因だね
2.8のソースコードのGrowable.scalaに
def +=(elem1: A, elem2: A, elems: A*): this.type = this += elem1 += elem2 ++= elems
というのがある
2.7のソースだと同じところにあるのに
2.8だとMap → MapLike → Growableと継承されてんだよな
他にもMapLikeBaseとかあるしさ
オーバーロードメソッド見つけるのもしんどいわ
つまりオーバーロードがない場合だと
hoge += ("b",2)はt:Tuple2[String,Int]の引数しかとらないことを知ってるから
hoge.+=(("b",2))に解釈してくれて(勝手にタプルにパックしてくれる?)
ある場合は
パックしてt:Tuple2[String,Int]をとるメソッドに渡していいのか
t:Tuple2[String,Int], t2:Tuple2[String,Int]の引数の型間違えなのかわからないってことですかね
いやなんかぜんぜん違う気がしてきた
>>143 Scalaのメソッドは二項演算子化して括弧を省略できるよ
要するに型推論のアルゴリズムの問題でしょう
オーバーロードされてて括弧を省略されると、タプルと引数の区別ができないと
タプルは -> を使ったほうがいいね
hoge += "b" -> 2
これでいいわけだし
146 :
pom:2010/02/23(火) 23:13:36
>タプルは -> を使ったほうがいい
だね。
関係ないが、
scala> var map = Map{"a" -> 1; "b"->2}
map: scala.collection.immutable.Map[java.lang.String,Int] = Map(b -> 2)
scala> var map = Map("a" -> 1, "b"->2)
map: scala.collection.immutable.Map[java.lang.String,Int] = Map(a -> 1, b -> 2)
といったあたりも、
OCamlやらJavaScriptやら他言語のユーザーからすると微妙にストレスなのかな。
表記法は好みの問題も大きいところだろうけど、間違いの少ない表記が言語ユーザー間である程度確立
することは大事だね。
俺も、タプル前後のスペースの有無で何回もハマった。
おかげで、(a -> b) か Pair(a, b) でごまかす事を覚えたが。
>>143 >>145 あー。オーバーロード絡みだったわけか。完全に勘違いしてた。メソッドオーバーローディング
はScalaみたいな複雑な型システムを持った言語と組み合わさるとかなり厄介だねえ。
ほっほー…すげーなScala。
なんかC++の二の舞になりそうな勢いだね。
悪い意味で(´_`)
C++は使いこなせてない自分でもScalaは大丈夫だったし、C++程
習得が難しいわけではないと思う。いくつか落とし穴があるのは
事実だが、それほど大した問題ではない場合が多いし。
151 :
pom:2010/02/26(金) 23:49:19
(このあたり、知識がないので大ざっぱな話ですまないが)
Scalaの言語仕様の大きさは、
C++に比肩されるようなものだと思う。
だけれど、Scalaでは
自分(そしてチーム)が面倒見切れる範囲でコードを
書いていけば、そこそこ高い生産性を出せると思う。
自分の指向としては、シンプルな言語を望むところがあるのだけれど、
Scalaに代わりうるほどの生産性を発揮出来そうな言語が
ないのが、ここ2年ほどメインの言語をScalaに切り替えて判明している事実。
>>150 その通りで、慣れれば、落とし穴にはまることは少ない。
全体としてはScalaは素晴らしく練り上げられているよ。
「理想の言語」かはさておき・・・
>>152 Kojoはやけにロゴがしょぼいのがアレだけど、なかなかよくできている環境だと思う
入力補完にコマンドヒストリ、オブジェクトインスペクタ、タートルグラフィクスに関する
コマンドのUNDOなど機能は豊富だし、割と安定してる。
155 :
デフォルトの名無しさん:2010/03/01(月) 04:03:36
パーサコンビネータを使った言語外DSLの例を載せたサイトとか知ってる人いる?
良くある四則演算DSLとかではなく、変数宣言部があるようなやつが知りたい。どんな感じで作れば良いのか。
変数宣言まであったらDSLというより普通に言語なんじゃないの?
>>155 変数宣言があっても基本は変わらないと思うよ。普通のパーザジェネレータ使って
オレオレ言語のパーザ書くのと本質的には同じ。また、変数宣言を持った言語の
パーザ書いたことが無いならパーザコンビネータかどうかというのは本質的な問題
じゃない。
Option型がよくわからないOption型についておしえてくれ
HaskellのMaybeみたいなもん
自分はC++の関数戻り値での、参照とポインタの使い分けのようなものだと思ってる。
C++だとnullがありえる戻り値ならポインタを返すけど、それがScalaだとOptionになると。
Optionは便利な関数があるからnullのチェックのif文書くより楽チン
Null オブジェクトパターン + パターンマッチ
>158
nullチェックし忘れによる、ぬるぽを防ぐ
加えて、Listもどき(長さが0か1のリスト)と見なせる事により、for文やmapで便利
あと、パターンマッチ
でも、Option型使うより、その発展系のBox型の方がより便利で
いいとこが分かりやすい。
あ、Box型ってのは、Liftのライブラリね。
で、Liftの作者がBox型の布教文書を書いてたので、それを読むといい。
scala.swing.ListView#listData呼ぶとスタックオーバーフローが起きる。2.8.0Beta1
ソース読んでみたらこんなんなってた。
def length = model.getSize
def iterator = new Iterator[A] {
var idx = 0
def next = { idx += 1; apply(idx-1) }
def hasNext = idx < length
}
Iteratorにlengthメソッドがあるのでそっちが使われちゃって、さらにその中でhasNextを呼んでるから無限ループになってるっぽい?
本家に報告するべきかなと思ったけど、注意書きに
「お前それほんとにバグかどうか確かめたの?お前の勘違いじゃないの?理解できてないだけじゃないの?死ぬの?
てめぇで判断つかないならMLで相談するなりしてからにしろよ^^;;;;」
って書かれてて心が折れたので誰かエロい人報告しといてくだしあ><
日経と工学社から本が出るね。
Cloujerより需要があるのかなあ?
ClojureはLispだからなぁ
166 :
デフォルトの名無しさん:2010/03/08(月) 14:29:32
文法にあるTopStatとかのStatって何の略?
>>163 注意書きに気にせず報告すると良いと思うよ。
がんばって。
(mavenスレで聞いてもscalaのことなど知らんと言われそうなのでこちらで聞きますが)
maven-scala-pluginを使っているのですが、
これって分割コンパイルする方法はないのでしょうか。
*.scala ファイルが25個で、1400行程ですが、
40秒近くかかっています。
mavenに限らずscala一般の話でもわかる方、
いましたらよろしくお願いします。
>>168 追記です。
mvn scala:cc
は、やってみました。
レスポンス自体の改善にはならなかったです。
>>168 maven-scala-plugin使ったこと無いけど、普通に考えて分割コンパイルされそうなもんだけど…
Liftも以前はmaven使ってたはずだけど、修正のたびに全部再コンパイルだったら使い物に
ならんかっただろうし。まあ、確実に修正差分だけコンパイルして欲しいならsbt(Simple Build Tool)
使うのが無難かなあ。sbtはコンパイラAPI叩いてファイル間の依存性解析とかしてるから、その辺は
割と正確。
>>170 sbt 試してみました。
毎回コンパイラを起動しない設定だとかなりのスピードアップがあるようです。
(あわせて169の記述は取り下げます)
(1〜3回目というのは、ソースを1行だけ編集してコンパイルさせた結果の3回分です)
またsbtの効果は大ですが、この規模では真価は発揮できないようです。
mvn scala:compile
33s
sbt compile
17s
mvn scala:cc
28s (1回目)
7s (2回目)
5s (3回目)
sbt ~compile
19s (1回目)
8s (2回目)
4s (3回目)
scalaのコンパイルしてると、昔、DOSでCを一生懸命コンパイルしてた頃を思い出す。
そんな遅さ。
>>156 >>157 返答が遅くてすまんが、レスありがとう。
結局やりたいことはできますた。
結局、自分がパーサコンビネータの使い方が良く分かってなかっただけだった。良く分からないんで手っ取り早く参考となるものがみたかったと、こういうすんぽうです。
適当にいじくってたらだんだん理解してきてなんとかできた。
174 :
デフォルトの名無しさん:2010/03/13(土) 21:53:35
clojure陣営ですけど戦争したいです、DISりたいです
ありがちな動的型付け VS. 静的型付けとかだったらどうせ泥沼になるのが
見えてるので勘弁。clojureスレでやってくれ。
Clojureスレにも来ないでください
それじゃあ新しく出たScala本の書評をたのむ
ん?3/18発売のScala入門のこと?
Java使わずにScalaでiモードのアプリ作ったり出来ないだろうか
SEとCLDCの違いをかなりの手間かけて埋めたとしても
ランタイムのサイズがつらくないか?
ProGuard使って要らないクラスファイルをjarから除去すれば、結構小さくなるので
ひょっとしたらそれでなんとかなるかもしれないけど、そこまでする価値があるかどうかだな。
>>179 > Java使わずにScalaでiモードのアプリ作ったり出来ないだろうか
Androidは、Scalaでプログラムできるらしいぞ!
今どき、iモードなんて流行らないだろう。Androidで行こうぜ!
>>182 そんなことはこのスレの住人なら誰でも知ってるわ。つか公式サイトに載ってることだろ。
大体、iアプリの質問に対してAndroidに話を換えてどうすんだよ。アホにもほどがある。
マジレスわろた
2.8のAPIドキュメント眺めてたらMutableListの
def union(that: Seq[A]): Seq[A]
というメソッドが3つあったんだけど、おなじのが3つってどういうことだろ。
説明文は全部違うみたいだけど英語だからよくわからん。
>>185 恐らく、新しいAPIドキュメントの生成器(scaladoc2)のバグだね
説明文をよく見るとわかるけど、最初の一つがintersect,その次がdiff,最後がunion
の説明になってる。MLかTracで報告してあげると良いのではないかと。
ちなみにsは現在けっこう試行錯誤中っぽくて、細かい挙動とか見栄えとかよく変わるので、
その点に注意した方がいいと思う。なんか変な挙動があったらバグの可能性が高い。
ミスった。sは→scaladoc2は
>>186-188 なるほど、バグか。
ScalaはJavaと比べて複雑だし、大変なんだろうな。
報告は・・・うん、ごめん、ムリぽ
英語ができるなら真っ先にあの検索の挙動について文句を(ry
Netbeans 6.8で2.8が使えない
なんとかしてくれ
6.8と2.8なら問題なくいけてるけどなぁ。
とりあえずNetBeansをインストールしなおしてみれば?
scalaの勉強のために、Intellij IDEA入れてみたが中々良いな。
ただ、プラグイン入れてもEmacsライクなSet Markが機能しない。。。
またEclipseに戻りそうだ。
194 :
デフォルトの名無しさん:2010/03/22(月) 23:18:14
scalaすごいわ
数年内にRubyとか淘汰すると思う
>>194 Scalaいいよねぇ
Rubyのアホみたいにテスト工数が
ざっくり減るし。
ただ技術者なかなかいないよねぇ
おなじJVM上のclojureが攻めてくる・・・わけないなw
日本語のlift本でも出ないかな・・・
198 :
デフォルトの名無しさん:2010/03/24(水) 23:35:27
apply関数の意味がいまいちわからないのですが
なぜこの関数は存在するのですか?
関数適用がapplyの呼び出しになるって点は理解している?
理解しているけど使いどころがわからないってこと?
例えばmap関数を自分で実装するのに使う
こんなのがあった
Specsみたいな書き方のやり方なんだろうけど、
なにをやってるのかさっぱりわからん(;´Д`)
誰か解説プリーズ。
http://gist.github.com/344299 class Example(description: String) {
def in[T](expectations: =>T)(implicit def m: scala.reflect.Manifest[T]): Example = {
if (m.erasure == this.getClass)
hasSubExamples = true
// store expectations for later evaluation
}
}
/**
* This allow me to define in specs examples which know if they have nested examples
* without having to be evaluated
*/
"this example is simple" in { 1 must_== 1 }
"this example has a nested example but it doesn't have to be evaluated to know it!" in {
"I am nested" in { 1 must_== 1 }
}
>>202 読んでみた。まず、このサンプルは、inの中にさらにネストしたテストがあるかどうかを
テストフレームワーク側で検知することができることを目的にしている。そのために、
implicit parameterとして渡されたscala.reflect.Manifest[T]からT型のクラスを表すClass
オブジェクトを取得して、this.getClass()、つまりExample classのClassオブジェクトと比較している。
もし、inに渡される引数の型=> Tが => Exampleだったら、ネストしたテストがあるということになり、
hasSubExamples = trueになる。そうでなければネストしたテストは無いということになる。
で、なんでscala.reflect.Manifestを使ってるのかだけど、これは、inに渡される引数の値がnullである場合
でも処理できるようにしているのではないかと思う。そうでなければ、単にexpectation.getClass = this.getClass
で比較すればいいだけだし。
204 :
デフォルトの名無しさん:2010/03/27(土) 08:15:34
scala.reflect.Manifestを使ってるのはexpectationsを評価する前に型を得るためだと思うけど
あと implicit def m: は implicit m: の間違い?
>>202 >>203 あー、inがExampleを返すのはネストの判定のためなのか。
ネストならTがExampleになるのね。なるほどなぁ。
206 :
204:2010/03/29(月) 21:07:44
>>204 ああ、そっか。言われて見ればその通り。全然気付かなかった。
207 :
203:2010/03/29(月) 23:06:52
AnyVal型の変数にjava.lang.Long型のインスタンスが入ってたらそれをInt型に変換するには
2回asInstanceOfやるしかないんですかね?
val a: AnyVal = 10L
a.asInstanceOf[Long].asInstanceOf[Int]
言ってることおかしいな、AnyValじゃなくてAnyRefでした
val a: AnyRef = 10L.asInstanceOf[java.lang.Long]
a.asInstanceOf[Long].asInstanceOf[Int]
>>209 val a: AnyRef = 10L.asInstanceOf[java.lang.Long]
a.asInstanceOf[Long].toInt
でOK
最近、ImpressのScala本をほけーっと眺めてよさげだなぁとか思ってる初心者なんだけど、
処理系としてはどれくらい安定してる感じなの?
>211
何も知らずに言うが、処理系はJVMだから、Javaの10年以上の実績があって超安定。
だが、コンパイルが遅いのが難点ってところ。
コンパイラのバグは、致命的なのはないんじゃないの??
>>212 なるほど。それならわりと使えそうな感じだね。
型パラメータの条件にこんなコンストラクタ持ってるみたいなのはどう書くんでしょうか
こんなメソッド持ってるみたいなのはこんな感じで書けるみたいですが
def func[T <: {def hoge(s: String): Unit}](value: T, str: String) = {
value.hoge(str)
}
>>214 直接的な方法は存在しない。2.7.Xで(実験的な機能として)入った
scala.reflect.Manifestを使えば次のような形で書くことが一応できる
import scala.reflect.Manifest
def fun[T](implicit m: Manifest[T]): T = m.erasure.newInstance.asInstanceOf[T]
fun[String] //String型のオブジェクトを生成
何でFile IOとか付いてるんだろう。中途半端に感じるけど、perlとか見たいなのりなのかな?
誤爆スマヌ
?
d(x:Int)(y:Int)(z:Int): Int = x + y + z
ってどこまでが引数でどこまでが返り値でどこまでが
関数の実体なのでしょうか
221 :
136:2010/04/15(木) 13:15:05
scalaでunit testってある?
Scala 2.8.0 RC1
便乗して、ScalaのテストはSpecsとScalaTestのどっちがおすすめ?
ちょっと見たかんじだと、なんかあまり違いがないような
「Scalaのサイトに載せたいから、Scalaユーザグループは
メールでPhil Bagwellにグループの詳細を送ってくれ」
だって。
仮のロードマップ
・Scala 2.9 (late 2010)
parallel collections, more specialization, faster vector & hash tries
Dynamic type (?), Scala reflection (?), Scala IO (?), more libraries
・Scala 2.10 (2011)
Reactive programming, optional exception checking,
first parallel DSLs, Scala .NET, more libraries
・Scala 2.11/3.0? (2012-2015)
Optimizing parallel DSL framework, contracts (?),
generalized effect checking, type debugging
@jorgescalaのtweetから
Scala 3.0 could include:
unification of tuples + function args, better type inference, union types
Virtual classes still on the "research" roadmap, but has no owner
Multimethods: definitely a research project.
Unlikely to happen, unless someone implements it and nothing breaks.
あとScala Foundationを設立して企業からもサポートもらうよ、
次回のScalaDays2011はサンフランシスコでやるよ、とのこと。
>226
.NET版をまだ諦めてなかった事に驚いた。
あと、例外チェックも。
>>228 .NETはMSが(VSの?)scalacモジュール出すらしい
>>229 > .NETはMSが(VSの?)scalacモジュール出すらしい
Scala終了か?
MSがやると互換性の違うのがいっぱいできて、利用者側が混乱するんだよね。。
MSの作戦でやっているのだろうけど。
Java,Html, 他にも、MSが下手に乗り出すことで、進化が遅くなった言語がいろいろ。。
>>230 わざと1980年代から意図的に同じ事くりかえして
自社の優位性を保とうとしているからなぁw
お前ら偏見持ちすぎだ。
似たケースとしてIronRubyを挙げるが、こっちは変な独自要素はないよ。
WPFなどの.NET API呼び出しが、独自要素だと言えばその通りだが、
それ言ったらJRubyやJythonのJava連携はどうなる、とかいった話になるし、
問題視している奴らはいないだろう。
というか、そんな余計なことに手を出す余裕がない。
ようやくRuby1.8準拠のIronRuby1.0がリリースできたところで、
次はRuby1.9準拠の1.1のリリースが待っている。
Scalaが、ブラウザや往時のJava並みの戦略的プラットフォームだとMSが判断したら、
大量の資金がつぎ込まれてMSの独自要素が作られるかもしれないが、
今の状況を見てそこまでScalaが流行ると思うなら、お前ら幸せすぎだろw
IronRubyは対応したばっかりだからこれからおかしくなるんだろ
IronRubyってMSの息がかかってるの?
そもそもMSが開発してるので
>>232 同意見だなぁ
.netなんだし間口広げるだけだろうにな・・・
しかしJavaは改悪された
今のMicrosoftのプログラミング言語とその周辺に対する取り組み方を知っていて
それでもなお独自拡張を恐れるならともかく、古い情報に基づいての偏見はなぁ…
三つ子の魂百までって言うからね
悪いことはするなって事だよ
>>238 結局、MS製品のある環境でしか動かないものしか作ってないからな。
建前は標準規格と言ってるが。
そりゃ慈善事業じゃないんだからメリットないことはしないだろ?
標準規格にはこだわるにしても
もちろんそうだ。
要は、ベンダーロックインされるリスクを負ってでも、その技術を使いたいかという話。
.Net版scalacは既にあってそれに対するモジュールだろうになんでこんな流れなんだ(;´Д`)
MSの部分だけに反応するってことはscalaに興味ない人が荒らすためだけに巡回してるのかな・・
244 :
242:2010/04/18(日) 03:54:57
俺は
>>230とは違う人間だよ。俺はMSを過剰に非難するつもりはないが、
歪んだ形の囲い込みを全く警戒しなくてもおk、というわけではないという当たり前の話。
>>241 いやメジャーOSだとそんなことやってるのWindowsだけだよ…
別にロックインされないだろ。
便利な技術ならOSSでコピッて本家に取り込まれるし、
使えない技術ならそもそも.NET版でも使われなくて、MSの優位性が無くなる。
JavaScriptのXHRなんか、ActiveXベースでMS独自実装の最たるものだが、
標準に取り込まれて、今じゃAjaxの最重要技術だ。
J++を念頭に言っているのなら、あれはSunが相手だからああいう裁判沙汰になっただけで、
もっと緩やかな相手なら、ああはならず、J/DirectやCOM連携が、
他の処理系への移植を考慮した形で取り込まれていたと思う。
実際、J++でやろうとしていたことの必要性は確かにあり、その後OSSベースで実装されている。
JNIが不便だからと言って作られたJNAはNetBeansが由来だし、
いくつかあるJava-COMブリッジとか、OSSで作られてるだろ?
結局違法にJAVA改悪したから
Win2000発売停止になったよな
じゃあScalaもきちんと監視しないと
改悪されるぞ
MS を脅かすほど Scala に影響力はないから大丈夫だよ。
>>246 > 便利な技術ならOSSでコピッて本家に取り込まれるし、
世の中には特許というものがあってだね。
完全互換になんてなる訳ないじゃん
Ironなんちゃらシリーズだって.netでしか動かない仕様になるぜ
完全じゃなくても98%ぐらい互換ならいいよ
252 :
デフォルトの名無しさん:2010/04/20(火) 21:14:19
253 :
デフォルトの名無しさん:2010/04/20(火) 21:30:32
SwingをScalaでやるメリットってなんかあんの?
完結になるかどうかはSwingのAPI次第だからScala関係なくね?
NetBeansでもう完成形でいいじゃん
254 :
デフォルトの名無しさん:2010/04/20(火) 21:31:13
×完結
○簡潔
ScalaとRubyだと、Scalaが秀でているところってどういうところ?
速い
実行速度が速い、強い型付けがあるってとこかな
>>252 ScalaでFRPとかできるようにならんのかな。それとももうある?
なるほど速度ですか
関数型言語=マルチコアに対応したプログラムができる
というのはScalaの場合当てはまりませんか?(もしくはRubyもそういうのを作れる?)
マルチコアに対応したプログラムなんてPerlでも書けるだろ
もちろんRubyでも
Rubyと比べられるべきなのはScalaよりむしろGroovyだと思う。
>>259 マルチコア対応が容易、って不変性がどうとかっていう部分じゃないんですかね。
ということは純粋関数型っぽく作れば良いと思うんですけど。
>>253 JavaFXみたく宣言っぽく書ける
イベントハンドラが柔軟に書ける
ただ現状ラッパとしての完成度が低い
GUIは他の部分よりも恩恵を受けれないのはしょうがないね
特にラッパだと元ライブラリの制限を受けまくるし
ちょっとしたグラフのプロットとかをREPL上で
さくっと書けるのは楽しいよ
>>259 Haskellの場合純粋な部分と非純粋な部分を分けて書かざるを得ないけど、
そのお陰でコンパイラが普通のコードを自動的にマルチコア最適化するなんてこともできる(ようになる)らしい
Scalaの場合varとvalの使い分けはあるものの、Haskellよりは弱い最適化しかできないかと
『Scalaプログラミング入門』って本どう?
尼で目次見た限りでは地雷くさいんだが・・・
mutableなスタックとimmutableなスタックで初期化した時の順番がアレなんだがこんなもんなの?
2.8RCで試しました
scala> val s1 = scala.collection.immutable.Stack(1,2,3)
s1: scala.collection.immutable.Stack[Int] = Stack(1, 2, 3)
scala> val s2 = scala.collection.mutable.Stack(1,2,3)
s2: scala.collection.mutable.Stack[Int] = Stack(3, 2, 1)
scala> s1 top
res35: Int = 1
scala> s2 top
res36: Int = 3
普通のプログラマに必要なレベルの話はどっちにも乗ってるだろ
それとも関数型言語と言うものを全く知らないと言うことか?
>>262 > ちょっとしたグラフのプロットとかをREPL上で
> さくっと書けるのは楽しいよ
そういう用途では、Scalalab(ScalaSci ) に期待しているのだが、、、まだまだかなあ。。
簡単にグラフってどうやるですか?
awtとかswingつかうの?
EclipseのScalaプラグインがScalaで書かれていることにちょっとびっくりした。
>>267 どうせまた、なんにでも「入門」ってつけちゃう日本語書籍の悪いところだろ…
と思って原著のタイトル調べてみたら「Beginning Scala」でしたごめんなさい
273 :
デフォルトの名無しさん:2010/04/23(金) 22:25:35
ScalaってJavaで書かれてるのか?
JavaはJavaで書かれているのか?
Javaを書いてるJavaはなにで書かれているんだ?
>>271 だからあんな糞の役にも立たない糞プラグインなのか
IntelliJのScalaプラグインの方が遥かにいいわ
Intellijって、なんかビルドが遅い気がする。
EclipseはXMLを記述するとエラーになるんだよな。
Liftっていいのつかってみたけど
難しすぎて使えない
277 :
デフォルトの名無しさん:2010/04/24(土) 01:01:01
JavaVM必須とか、クソすぎる。
IntelliJは重いしUIが微妙なんでやめた
やっぱEclipseかNetBeansになっちゃうな
receiveとreactの使い分けが分からん…
いつもreact+loopで良いような。
receive使うのはどんな時だろう。
>>270 import swing._
def point = (util.Random.nextDouble -> util.Random.nextDouble)
def data = Stream.continually(point).take(1000).toList
new Frame {
contents = new BorderPanel {
preferredSize = new Dimension(300, 300)
def scale(d: Double) = (d * 300).toInt
override def paintComponent(g:Graphics2D) {
data.foreach(p => g.fillRect(scale(p._1), scale(p._2), 1, 1))
}
}
visible = true
}
281 :
デフォルトの名無しさん:2010/04/25(日) 11:30:17
環境 scala2.7.7 eclipseのプラグイン
メソッド内でmutablueなMapでデータを作成、編集して、immutableにして返したいから、
メソッドの戻り値の型自体はMapで宣言しておき、最後にreadOnlyってメソッドよんで返すと、
type mismatch; found : scala.collection.Map required: Map
(scala.collection.Mapをかえしてるけど、このメソッドではMapを返すって宣言してるから型違うよ)
っておこられるんだが・・・
Predefの中で
type Map[A, +B] = collection.immutable.Map[A, B]
って宣言してて、collectionのMapってimmutableのMapのことだから結局おなじじゃないのか?
Predefと同じtypeの宣言をそのメソッドのクラス内に書けばエラーでないがこういうモノなのか?
なんだが微妙に冗長になって気にくわないんだが・・・
なんかいい方法あったら教えてくれ
そもそもScala2.8だと違うのか?
eclipseが悪いのか?
効率なんか考えないで最初からimmutableなMapで作成すればいいのか?
Listとかでも同じ問題がおきると思うんだが・・・
>>281 そうじゃない。scala.collection.Mapという型が
scala.collection.immutable.Mapという型と別に存在してて、コンパイラは
scala.collection.immutable.Mapが期待されてるのに、scala.collection.Mapが返されてると
文句言ってるわけだ(scala.collection.Mapはscala.collection.immutable.Mapとscala.collection.mutable.Map
の共通の親trait)。
で、なんでscala.collection.mutable.MapのreadOnlyがscala.collection.immutable.Mapじゃなくて
scala.collection.Mapを返すかというと、APIドキュメント
> Return a read-only projection of this map
に書かれてる通り、mutableなMapの「読み取り専用」なviewを返したいからだと思われ。
scala.collection.immutable.Mapだと「不変」Mapになっちゃうので。
ちなみに、2.8でお望みの事をしたいなら、toMap使えばscala.collection.immutable.Mapを返して
くれる。2.7だとちょっと冗長になるけど、Map(m.toSeq:_*)でいけるかな。
>>280 やっぱswingつかうんね
サンキュー
swingとか遅くて使い物にならんだろw
クマー
専ブラとしてV2Cを愛用している俺に
swingの悪口は止めてもらおう
>>287 同じくV2Cを愛用している。最近のバージョンのJavaだと
起動してからは、そんなにもたつきは感じないなーというのが正直なところ。
あと、起動速度もだいぶ早くなったし。
>>288 たまに貼ってあるanimated gifとか見ると真っ黒に表示されること無い?
あれって、Javaの問題なんだろうか。元ファイルをブラウザで見ると普通なんだが。ってscalaの話じゃないか
アニメGIFがおかしくなるバグは既知の問題で、未だ原因不明
まあそろそろスレチだが
んじゃscalaで2chブラウザ作ってみるか
292 :
デフォルトの名無しさん:2010/04/25(日) 18:48:43
>>285 我慢するのは実行時コンパイルが済むまでの間だよ。
>>291 作ったとして、Java直接と比べてどんなメリットが考えられるのだろうか?
作る奴が関数言語得意なら楽に作れる
それは作る時の話じゃん。アウトプットに関してはどうなのよ…って変わらんか、そりゃw
そんなもん、C言語とマシン語だって同じ話だろ?
そりゃ違うでしょw
GW中にScalaマスターしたいのですが
どこから始めればいいのですか?
>>281-283 見てviewメソッドの意味が初めてわかった。
immutableばかり使ってたんで、気づかなかったわ。
val m = collection.immutable.Map(1->2, 3->4)
val v = m.view
v foreach println
// (1, 2) (3, 4)
m += 5 -> 6
v foreach println
// (1, 2) (3, 4) (5, 6)
いいね、これ
まちがえた。
>>299はcollection.mutable.Mpa(1->2, 3->4)
>>298 > GW中にScalaマスターしたいのですが
> どこから始めればいいのですか?
ScalaWikiから。
本は、通称コップ本が良い。
operaだとscaladoc2メッチャ遅くない?
>266
なんかきもいな
immutable.Stackは1,2,3で初期化されたStackを生成する
mutable.Stackは空のStackを生成して1,2,3の順で追加したものを返す
ってことか
どっちかに統一すればいいのに
ガチガチに縛られた言語が好きならPythonでも使えば?
>>302 Opera,Chrome,IEで比べたけどOperaが特に遅いとは思わなかったな
scaladoc2がそもそも重いつくりだしなぁ
>>305 どうも、うちの環境が悪いのかなーと思ってプロファイル削除してみたらだいぶましになった
>>303 たしかにどっちでもいいけどどっちかに合わせて欲しいね、mutableからimmutableにリファクタするとかなったときこの挙動知らなかったらあれ?ってなるかも
初心者には入門本よりコップ本がオススメなのか
今日ホッテントリ入りしてたScala記事に影響されて入門本買うどころだったが、買う前にこのスレ見てよかった
ちなみにコップ本は2009年の本だけど、Scalaのバージョンはいくつで書かれてる?2.7.7かな
Summer of Code Scala Project
http://www.scala-lang.org/gsoc2010 ・Scalable Remote Actors
serializationとブロックIOの機能を持つリモートアクタの開発
・ENSIME, a new Scala development environment for Emacs
Emacsに型チェックやインスペクションの機能をつける
・Lift and SBT template engine
SBTのプロジェクトテンプレートエンジンとLiftプロジェクトテンプレート
・Hardware Accelerated 2D Graphics
JOGLなどのシェーダをJava2Dとして扱うためのAPI
・Adding LINQ-awareness to Scala.Net
通常のメソッド呼び出しとしてLINQを実装、SQOを分かりやすい形式にする
・Advanced Semantic Tools for the Scala IDE for Eclipse
インラインでの、コードの折りたたみ表示のような方法による、推論された型やimplicitなどの視覚化
・Collaborative Scaladoc
wikiのようなAPIドキュメントの共同編集環境の構築と、このやり方によるAPIドキュメント製作で発生しうる問題の調査
>>307 その入門本ってどの本のこといってる?
タイトルに入門とかついている本だったら買うだけ金の無駄だと思うよ。
公式の右下にある投票、あれなんだ?
入門disってる奴は通ぶりたいだけだろ
言語仕様の中身まで書いてない本はクソ扱いしたいガキ
いや、Scalaはコップ本を読んで理解できないようなやつが使うべきではないということだよ
ちゃんとJavaから勉強してきてねっ感じの言語
それにコップ本はそんなに難しいわけじゃない
>>311 チュートリアル的な面でみてもコップ本の方が優れてると思うけど。
初学者から見て入門本の方が優れてるところってどこよ?
勝手に言語のハードル上げる奴は馬鹿
プログラミング言語C++みたいな
レベルの本じゃないと意味がない
自称玄人のお前らより、Amazonのレビューの方が参考になる。
この時点でこのスレにいる奴は初学者じゃなくて、言語マニアだから
初心者が何を読めばとりあえず使えるようになるか解らなくなっている。
初心者の視点になるのって難しいよね
いつも痛感してるわ
>>317 初心者に情報を与えるのは
Java厨、Ruby厨、カスPHP野郎
みたいなのを量産するだけだからやめろ
>>317 上のほうでAmazonレビューで工作してた入門本の作者が晒されてたけど、
まさかお前じゃないだろうな?
そこまで否定するってことはむしろお前が…
え、現状和書で買う価値があるのはコップ本と
>>313の入門本の2つだけだよな
それ以外がゴミなのはどちらも認めてるんじょないか
>>313 あ、これ(Scalaプログラミング入門)も入門てついてたんだっけ。
こっちは悪くないと思うよ。
コップ本と比べてどうとかはよくわからないけど。
プログラマともあろうものが前提条件を決めないで入門書はカスとぶったぎるのはゆゆしき問題だな
こっちはなんて呼べばいいんだろ?
SS本?w
LiftのDavid Pollakが書いた本の訳だよね>Scalaプログラミング入門
説明にややはしょり気味なところが見受けられるけど、Scalaにおけるイディオムなど、
コップ本より実践的な内容にフォーカスしてて良い本だと思う。
David Pollakの本は文才がないっつーか
ありゃダメだな
あれはチラ裏の日記だな
うーん。そうか。あの大げさ極まりない書き方はあまり好みじゃないけど
実際にScalaでよく使うイディオムなんかにも触れてあって、結構良い本だと
思ったのだが。>David Pollakの本
これからは
・コップ本
・入門
・工作本
って呼べばいいだろ
日本人はLispがあるから
へんな関数型言語布教させるんじゃねーよ
へんな関数型言語…
Schemeのことか?
David Pollakの文章は、なんかアジっぽい。
コップ本は、後半急激に難易度が上がるというレビューが多いね
SS本は、既に他言語を学んでる(特にJava)ことが前提な内容みたいだね
関数型は始めてだけど、他の言語入門済みの場合はどっちがいいのかな〜
SS買って一通り覚えたらコップでよくね?
>>332 それは同意。ああいうアジり気味の書き方って内容に厳密さを求める向きには
受け入れられづらいと思うのだが、どうなんだろうねえ。
David Pollakの本は、リファレンス本的には全然使えないけど、
通しで読んで、Scalaのノリをつかむにはいい本だと思うよ。
敢えて言えば、コップ本こそ、公式サイトの情報とネットの情報でまかなえるから
買わなくていいと言える。
Rubyのどの本よりもアジってないから問題ないよ
プログラミング初心者じゃないけど Scala は少しハードルが高く感じる
関数型言語は Lisp とか Scheme とか使ってたんで抵抗は無いけど、
それでも記法がちょっと独特で迷う
はっきりいって文法がきもい
まぁ素のJavaよりはマシだけどそれだけなんだよな
文法のキモくないプログラミング言語とは何だったのか。
>>340 とりあえず、
>>340は文法がきもくないと思う言語を挙げてみてくれ
主観できもいとだけ言われても、どういう美的感覚持ってるのかがわからんと
ピンと来ない
そういうのはかまうなよ
ログ見りゃわかるが、粘着してるやつがいるんだよ
>>344 340ではないが、型を名前の後に置くこと(i:int, s:String) に馴染めない。
これを int i, String s と書けるようにするだけで、だいぶ違うだろ。
IDE使うの大前提だと後置式のがいい。
>>347 それは、そうした方がJavaから移行したユーザが馴染みやすいって意味だよね
それはその通りだと思う。
ただ、Scalaの場合変数の型を省略できる、というか省略するのが普通なのでその点は
考えなければいけないと思う。もし、Java式の型宣言にするなら、型を省略したときは、
別途val x = 3とかvar x = 3みたいにしなければいけなくなって、構文的な整合性の観点
からはあまり良くない。C#は型宣言を省略する場合はvarと書くという方式だけど、あれは
後付けだから仕方ないのであって、新しく言語作るときにああするのはどうかねえ…
構文的には後置のほうが混乱が少ないと思う
それに関数型言語は後置にするのが多いからね
まあ、慣れの問題だね
慣れの問題と思うけど、単純に Scala のコードは読みにくい
型が前置じゃなきゃ嫌だってのは、
つまりC系統の言語しか触ってないってことだからね
もっといろんな言語に触れたほうがいいと思うよ
型情報を明示しないって思想だから後ろに来るのは当然だと思うけどな。
つか、そうしないと文法的整合性が取りにくい
C++も設計でscalaと同じ書き方を検討してたんだよ
Cとの整合性をとって採用されなかったけど
そしてObjectiv-Cみたいな意味不明なのができる
前置にするとvarとvalの区別が面倒になる。Javaみたくfinalだらけになるのはイヤだ。
Groovyがそんな感じだね。
後ろ置きは、慣れの問題でなんとかなりそうな気がする。ていうか、慣れれば、結構好きかも。
でも、アンダースコア _ は、どうかなあ。。。
( _ > _) とか書いていると、顔文字に見えてくるんだよね。
ScalaにはRubyのERBみたいな機能がないから
ゴミだな
釣られない…釣られないぞ…!
最近のはやりは後置だな
golangもやはり後
上の方で書かれている理由に加えて、後置(+キーワードを先置く形式)にするとちょっと
構文解析が楽になるというのもあるかも(これはそれほど重要じゃないだろうけど)。
pascal出身としては安心するなぁ
1ヶ月もすれば、どうでも良くなってくるよ。
くだらない。
最近の若い子はPascalなんて知らないんだろうな
>>366 さっぱりわからんけど、(Scala界隈の)有名人がでてるやつとか、面白い内容のおすすめなのとかある?
>>368 とりあえず個人的なお勧めは、Oderskey先生のOpening Talkと
Named And Default Arguments, それとSneaking Scala Into Your Organization
辺りかな。Odersky先生以外のScala界隈の有名人と言ったらDavid Pollakとかだけど
彼は発表してなかったなー。あと、IntelliJの人のScalaのリファクタリング機能に関する
発表とかも面白かった
しまった。Oderskey→Odersky。間違えるなんてorz
えいごが解らん
なんとかしてくれ
長すぎてワロタ
Microsoft が F# や Axum の他にも IronScala を作ればメジャーになれる可能性は高い
>>373 IronScalaというか現在のScalaの.NET版実装もMSの協力があったとかそんなのを
読んだ覚えが…。現在のScala.NET実装は.NETのジェネリクスに非対応だったりして
実用に使うのは厳しいが。
Scalaのジェネリクスは、Javaのerasureに合わせたヘタレ仕様のままなの?
この先もずっと?
>>375 Javaのerasureに合わせるというのは崩せないだろ
もしそれやったら現在のScalaユーザの大部分を失う危険性がある一方で
それで取り込めるユーザがどれだけ居るか…
それに、ScalaのジェネリクスはJavaのそれに比べてかなり強化されてるから
erasureベースでもJavaに比べればだいぶ不満は感じにくくなってるよ
>376
Boxの中身をパターンマッチングさせようとすると、出来なくてイライラする。
今の時代
ネイティブで動かない言語なんてゴミだろ
.netのscalaもerasureなのん?
君の言うネイティブで動くって言うのはどういうことかね?
>>378 今の時代?
昔の時代だったら、確かに遅くてゴミだったけど、
今の時代だとそんなに気にならない。
遅くてもいいってのはシステムはだいたいI/Oネックだからであって
SSDとか使っちゃうと言語自体の速度が影響する割合がでかくなる
今勉強でpredef眺めてたらこの関数
def readLine(text: String, args: Any*) = Console.readLine(text, args)
def readLine(text: String, args: Any*) = Console.readLine(text, args: _*)
の間違いだと思うんだだれかバグ報告しといて俺英語できない
確かに、それなんかおかしいな
まだPredefにバグ残ってんのか?
やべぇ、日本人で発表してる人がいるんじゃん > Scala Days
英語がたどたどしいけど、それにしてもすげぇな
>>385 たぶんツイッターにいてtsudaってくれてたひとじゃないかな?
自分英語わからんからああいうのはすごく助かるわ
その張本人が書きこんでみる
正直、
>>385の書いてる通り英語はたどたどしかったし質問聴きとるのは
難しかったしでなかなか大変でした。あのときは、テンションが凄まじく高かったので
今思うと凄いペースでtsudaってましたね。あれでScala Daysに興味を持ってもらえたなら
こちらとしても嬉しいですね。
>387
じゃ、せっかくなんで、何か面白いこと書いてくれ。
さっきから見る度見る度、 Scool Days に空目してしまう件
Scool DaysをSchool Daysに空目
あ、ほんとだ、タイポ。
誠死ね
>>387 あ、本人が降臨しとるw
確かにすごいペースでtsudaってるなぁとは思ったけど、自分は普通に面白かったよ
Scalaのロゴの元になった階段の写真とかも
そういやScala作者にサイン本もらってたな、うらやま
まぁ日本での布教活動を頑張っておくれ
個人的な希望を言えば特に日本語情報の充実を…
いまでもmsilを出力するようには出来ますね。
ilasmなんて初めて使った。
こういうインクリメントってなんで書けないの?
i++
++i
かけるように開発に参加すればいいんじゃないでしょうか
i++って、結局はforループでしか使わないからじゃないの。単行の副作用式だし。
>>388 面白いこと…うーむ、思いつかないです。申し訳ない。Scala Daysで面白かったこと
とかなら書けるかもしれないですが。
>>393 はい。もちろんそのつもりです。キラーアプリとか作れるといいんですけど、自分は
言語家というか構文解析屋?で、パーザジェネレータとかそんなんばっか作ってて、
あまり普通のアプリ作ったりしない(というか不得手)ので、その辺は他力本願に
なってしまいますね。基本的にはScalaの日本語情報の充実という形での貢献
になりますかね。
>>394 ありがとうございます。面白いと言ってもらえるのは励みになりますね。Odersky先生の
サイン本は大事にしたいところですw
日本での布教活動は今までも地道にやってきましたが、今年はもっと精力的に
行っていきたいと思います。日本語情報の充実、というのは正直なんとかしないとなーと
思っていて、特に、経験上よくハマるポイントとかまとめたいところですねー。あと、まともな
(翻訳でない)日本語版Scala本とか。
それと、Scalaでなんかわからんことがあったらここで聞け!みたいな定番の場所が一つあればなあ
、などと思っています。scala-beとかscala--tohokuとかもありますが、それほど質問は多く無いん
ですよね。結局、皆、疑問をブログとかTwitterでつぶやかれるので、その辺を見て、答えられそうな
疑問だったらできるだけレスするように心がけてますが、あちこち分散してるとフォローするのも
大変&質問への解答などが集積されないので、もうちょいなんとかしたいですね。
lift使った面白いWebコンテンツ出てくればScalaの名前は広がるんじゃないかなぁ?
いちおうTwitterで名前は広まってきてるし、その辺でもう一押しあるとよさそうだよね。
TwitterはRailsで作ったものをリライトしたんだよね
やっぱりスクラッチからの強さを見せたいよね
フロントエンドはRailsのままだと思ってたんだけど、違うのかな
バックエンドをRubyからScalaにしたんじゃなかったっけ
>>403 なにそれこわい。
Srails? SRuby??
>>382 ディスクのI/Oよりネットワークだろ…
C FAQみたいに、Scala FAQが有るといいな。
「.NET プログラミング Tips」ってサイトも人気みたいだし、需要有ると思う。
>>403 Gizzardだっけ。
どっかでCassandraを使うって話も見たんだけど、どっちなんだろ。
Scala難しい
Railsの代わりにはなりそうもない
リーマンプログラマの9割以上は頭悪いからなぁ
まぁ頭が良かったら
プログラミングなんて他の奴にやらせるからな
ScalaとRailsは両立させるものじゃないのか
変わるのはRubyの部分だろ
>>410 タメかよwwww
呪われしエヴァ世代(初期放送時中2世代wwww)だよね^^
つーか
体育館のマットに詰めてイジメて殺したってのもあったじゃん
二つ上で・・・
Railsに比べてLiftも難しいの?
RailsはRubyとは別の言語を新たに習得するようなものだ、みたいなことをよく言われるけど,Liftもそうなん?
>>409 いやだからRailsの代わりにしたいんだったらGrailsだってば。
いやだからRailsの仕組みで言語がScalaでいいだろ
418 :
デフォルトの名無しさん:2010/05/02(日) 22:11:21
>>417 作ってから言えよ。
twitterの件は確かメッセージングの部分を置き換えただけじゃなかったか?
俺的には java.util.concurrent を使えばいいだけの部分を scala 使ってみたいから使ってみた。って印象なんだが。
>>418 The Why and How of Scala at Twitter
http://www.slideshare.net/al3x/the-how-and-why-of-scala-at-twitter とか、Twitterがオープンソースで公開している、自社で使っているらしいソフトウェア
群を見る限りでは、バックエンドはおおむねScalaで置き換えたみたい
あと、メッセージキューについてだけど、
JavaとScalaではソースの書きやすさが(少なくともある程度慣れれば)段違いなので、
Scala使ってみたいから使ってみたという印象は受けなかったかな。Twitterの人たちは
書きやすい言語を好んで使っている印象がある。あとは、java.util.concurrent使えば
済む程度の話ならさすがに新しくライブラリ作ったりはしないと思う。
>>420 リンク先を読まずに背景も全く知らずに言うが、javaa.util.concurrentは
「プリミティブが足りない」じゃなくて「プリミティブ過ぎる」じゃないのか?
>>421 java.util.concurrentの機能があれば事足りる、という意図なのかなと思ったので
足りてないんじゃない?というニュアンスで「プリミティブが足りない」と書いたのだけど
確かに「プリミティブ過ぎる」という方が実情をよく表してる。
俄かに活気付いて来たな。いいことだ
今年でブームは終わるよ。
もうブームは終わってF#の一人勝ちだって
いった。日本は独自のLispで頑張るらしいけどw
そっかそっか!それでF# Expressはいつでんだよ
誰が言ったんだよw
>>376 2.8ならManifest.typeArgumentsで型パラメータとれる
>>377 Optionだけならコレで。
def foo[A](a:Option[A])(implicit m:Manifest[A]) = a match {
case None => "none"
case Some(_) =>
val sm = manifest[String]
m match {
case reflect.ClassManifest.Int => "int"
case `sm` => "string"
case _ => "other"
}
}
Liftって初心者(Scala初心者、Webプログラム初心者)に優しくない気がする
webアプリに詳しくないからちゃんとした比較してるわけじゃないが、ちょっと触ったかんじ。
ScalaならLift、てなってるから選択してしまいがちだけど。
Javaからの移行組ならPlayのほうがいいんでないかね。日本語ページあるし。
開発の人もPlayでScalaをだんだんと学んでいくことを意識してるみたいだし。
LiftはScalaのテクニックを学ぶにはいいんだろうけど、
設計があまり綺麗じゃないという話もあるのでそっちの参考にはならないのかも
>428
何その汚いコード。そんなの有りかよ。
>>399 > わからんことがあったらここで聞け!みたいな定番の場所が一つあればなあ
2chじゃダメなん?
というレスを書いてる最中に >430-431が書き込まれてたw 2chじゃダメかもw
酷いオチだなw
Stack Overflowの日本語版みたいなとことかあると良さそうだけどな。
これから徹夜でBeginningScalaの写経します。
困ったら助けてね
>>429 lift以外にもWebフレームワークあるけども
戻り値がない可能性がある場合はnullじゃなくOptionを返すってのはわかったが
引数で省略可能な場合はデフォルト引数と組み合わせてこんな感じにすりゃいいの?
def func(i: Int, s: Option[String] = None) = {
...
}
>432
いや、erasureじゃなきゃ、そんな珍妙な解決法取らなくてもいいのに
って話だろ。
>>434 お、自分もSS本買ってきてこれからやるところ
よろしくおねがいしまふ
439 :
デフォルトの名無しさん:2010/05/04(火) 00:39:59
2chはネガティブな要素をたっぷり含有してるから
プログラミング言語のハブサイトとしてふさわしくないよ
>>431みたいなレスは茶目っ気たっぷりで俺は好きだけど
言葉のまんま受け取る頭固い奴も多いしな
回答のお礼を強要してくる2chリテラシーの低いアホもでてくるだろうし
とはいえ、実際2chがプログラミング系コミュニティのハブとして存在感が大きいのは事実。
マイナーな技術でも何かしらスレがあるのは大きい。代わりがあればいいんだけどな。
マイナーな技術だとノイズが少ないから2chでもおk
メジャーになってくるとたちまちノイズが増えてダメになる
Facebookにコミュニティ(?)作るとかじゃダメなのかな
Facebook使った事ないから、適当に言ってるけど
それとも匿名で気軽に書き込みできる方が、日本人には合ってるのかね
それならふつうにGoogle Groupsとかのほうが良いんでない?
mixiでいいよ
黙ってgithubにコードだけコミットしていくのどーよ?
SS本2章まで読んだけど、レベル高杉ワロタ
こりゃ他の言語でガシガシコード書いた経験のある人が第二言語としてScalaを入門してみよう、という意味での「入門」だなw
foldLeftで大混乱してきた
>こりゃ他の言語でガシガシコード書いた経験のある人
javaしか経験がない程度じゃ歯が立たないだろうな
SS本難しくないだろ
8章ぐらいまでは、余裕だろ
ああ、9章むずいね
451 :
446:2010/05/04(火) 15:52:19
>>448 やっぱそうだよなぁ
Scalaやってるひとらすげーよ、上級プログラマだな
>>449-450 ほーどれくらいまで簡単なのかな、って見たらほぼ全部じゃねーかw
この本で難しかったら、次読もうとしてたコップ本なんて買う前から難攻不落決定だなw
Rubyあたりに行ってみるかなぁ
Scalaやってる人の中にも初級と中級がいて
VBやってる人の中にも初級と中級がいるのでは
アセンブラみたいに特に言語としてScalaが難しい訳じゃないし
中級じゃないや上級
>Scalaやってるひとらすげーよ、上級プログラマだな
上級って言うか
少なくともjava(かC#かC++)とruby(かpython)の経験があることを前提にしているよね。
関数型言語の経験は前提とはしていないが
javaに○○の機能が無くてイライラとかしたことのあるレベルは必要って感じかな
Rubyは分からないけど、コップ本はJavaを触ったことのない初学者に勧めるのは厳しいなぁと思った。
一回Haskellやって関数型勉強してこいって
他の言語学習するの楽になるぞ
本がJavaの説明してないだけであって言語的に難しい訳じゃないよ
C#だけでも何でもかんでもLINQで書きたくなる病に発病した人なら
Scalaでサポートしてる関数指向の部分は簡単に理解出来そう
そしてプレースホルダ構文に感動する
オブジェクト指向理解してない人がC++難しいって言ってたのと同じような話で
知らないから難しく見えるだけだよね
>>457 説明の仕方次第ではあるね。
Java経験者としては、コップ本は細かい疑問に随時答えてくれるので助かる。
入門(SSの方)とコップ見て理解できないならそもそも情報処理解ってない可能性が
F#なら理解できると思うよ
Scala意味もなく難読な文法と説明で悦に入ってるだけだし
そっかそっか!それでF# Expressはいつでんだよ
またその流れかよw
まぁScalaが日本で流行るかどうかは日本語情報がどれだけ整備されるか、じゃないかなぁ
PHPが流行った要因の一つに、あの素晴らしい日本語ドキュメント群が挙げられると思う
ただでさえ難解と言われてるから、その上英語ドキュメントしかないとなれば、日本では流行らなさそう
関数言語として突き詰めれば難解だけどJavaの拡張として考えれば難解でも何でもないと思うけどなぁ
ドキュメント云々より今Java使ってる会社がどんだけ興味示すかだと思う
関数型言語として突き詰める要素なんて
ないだろw
>>465 うん、そういうレベルで使われるために母国語ドキュメントは必要じゃない?
トップクラスの人たちだけが使うものなら要らないけど、オダースキー先生が目標としてる学術・研究用言語に留まらず、現場レベルで使われる言語になるには、そういうところがポイントになったりするもんだよ
できる!Scalaを出して貰おう
まずは短く書けるJavaとしてアピールして、その後で、
あーそういえば、関数型言語っていう側面もあってですねーと繋げるべき。
これは選ばれし玄人向けの言語でニワカは入れないようにしようみたいな
変な方向に行かなければいいと思う
いい意味でPHPみたいになるといいな
素人でも作れるとかdisってる奴多いけど素人でも作れるって実は凄いことだろ
PHP=ブラック言語
Scala = PHP
つまりブラック言語ってことだな
better PerlとしてのRubyみたいに、better JavaとしてPRすると分かりやすいと思う。
PHPに負い目あるのかやたら叩く奴多いよな
>>471 これは同感
流行ってしまったのが言語仕様がちょっとルーズなPHPだからアレなわけで、その他のPHPの豊富なドキュメントや入門のしやすさ、良いものを節操なく取り込む姿勢、とかは評価されてもいい
Scalaは言語仕様もしっかりしていて、ベースは申し分ないから、後はその外堀をどう形成していくかでだいぶ変わると思う
誤解を恐れずに言えば、良いものが必ずしも普及するわけではないことは、RubyやPythonが証明してくれているので、Scalaにはうまく立ち回って欲しいと本気で願う
繰り返すが他の言語を批判する気はまったくない
技術力ならうちの方が上なのに簡単に作ったPHPのサイトが大儲けしやがって!
みたいなことじゃね
セキュリティホールならPerlやJavaのサイトも同じように出るわけだし
>>473 んだね。
C++にしたって、文法が拡張されたCとして使い始めた御仁も多かろう。俺とか。
どうせお前らみたいにコミュニティに
貢献しないで2chで愚痴るだけだろw
実際ここに今いるやつでまともなScalaのコード
書ける人間いないだろ?
まぁそうゆうことだ
え?
ちんこさん鼻息荒いですねw
ドキュメントをどんどん日本語に訳して wiki にまとめサイト作ろうず
つうか、scala-lang.orgにWikiなかったっけ。
なんか凄いところに嫌がらせのように縦線があるんだが
ggl-gにscala--2ch
作ろうとしたんだけど既にあるみたいなんだが
yieldってどうゆうふうに使うの?
List作るだけ?
>良いものが必ずしも普及するわけではないことは、RubyやPythonが証明してくれているので
えっ?
>>490 map、flatMap、filterをもっているものならなんでも使えるよ
Scalaの標準ライブラリならIteratorのサブクラスはみんな使える
>>492 そうなのですか。yieldが何をしているのか
よくわからないのですが
>>493 for構文で結果を返したいときに使うというのはわかるよね?
それでなにに対してforを使うかによって結果が変わる
どんな結果になるかは上記の関数の実装によるんだけど、2.8になってだいぶ同じものが返るようになった
Listに対してfor、yieldを使えばListが返るし、Mapに対してはMap、Optionに対してもOptionが返る
でも必ずしもそうではないから注意
>>494 それは理解しているのですが
どうゆう仕組みなのかよく解りません。
applyとかupdateのような何か別の
関数の糖衣構文なのでしょうか
確かにforは構文糖衣で、上に書いたようにmap、flatMap、filterに変換される
でも、そんなにちゃんと仕組みを知る必要はないと思う
どうしても知りたければコップ本に書いてあるけど
Haskellでモナドを勉強して、Scalaのforも似たようなもんだと思うのが一番正しい理解になると思うが
別にそこまでやる必要はない
println("iterator")
val iterator = Iterator(1,2,3)
for(i <- iterator) yield {println(i)}
println("iterable")
val iterable = Iterable(1,2,3)
for(i <- iterable) yield {println(i)}
>>496 後でちょっとコップ本見てきます。
yieldだけみるとモナドの規則1に従うように見えますが
結局Haskellのdo記法と同じ事が可能との認識でいいのですかね?
大体そう
というか、このスレの
>>92で既にそういう話があるね
>>470 同意
Scalaは複雑な言語だが(学ぶにも)スケーラブルな言語だ
という話もあるんで分かるところから徐々にやってけばいいと思う。
入門書とかJavaを知ってる人向けの説明が多いけど、
Rubyなど他の言語から入った人はどう学べばいいのかな
ジェネリクス知ってることが前提になってる、とかあるみたいだし
Programming in Scalaは、Javaがわかればより良いって感じだと思うけどね
静的型付け言語触った事ないってんじゃなければ、Genericsもなんとなく想像できると思うし
2.8.0のAPIリファレンスが、むちゃくちゃ使いにくいんだけど、これってRCだからだよね!?
正式版では2.7.7みたいに普通に戻るよね?!
このままだったらクソ過ぎる…
そう思うなら力をお貸し下さい
日本語の公式ページが無いのもダメだな
PHPなんて、
php.net/関数名
ってブラウザのアドレス欄に打ち込むだけで日本語リファレンス見れるんだぜ
関数名が一致しなければそのまま検索になる優れもの
こういうところは見習わないとな!
「->」がよくわからない
「=>」は「x => y」なら、xを引き数でyを戻り値とする関数、みたいな意味だと理解したけど
「->」について誰か詳しく教えてください
「<:」とかも確かあるよね
ここらへんの記号の意味って検索で調べにくいんだけど、一覧になってるページとかないかなあ
->って他の言語でも良くあるんじゃないの
>>508 ->は2要素のタプルを作る演算子。"A" -> "B"で、("A", "B")というタプルが出来る
<:は、ジェネリクスで使われる記号で、def foo[A <: B](...)とかあったら、型パラメータAは
Bのサブタイプである(継承している)ことを意味する
->はArrowAssocというclassに定義されてるメソッド
Predefにany2ArrowAssocていうimplicit defが定義されてるのでどのオブジェクトからも呼び出せる
なにげに->じゃなくて→でもいける
a->bが嫌なら(a,b)でもPair(a,b)でも
<-の方がよく解らないw
レンタルサーバで使えるように普及させるためにはどうすればいいだろう
Javaが入ってるサーバは多少あるから(DreamHostとか)、Servletコンテナに依存ぜずに
CGI的につかえるようになればいいんだろうか
>511
→でもいいのか。Smalltalkみたいだな。
>>510-511 わかりやすい説明ありがとうございます
連想配列のペアを作るようなものか
PHPやってるから違和感ありまくり
こういう記号類(糖衣構文?)って、どこかにまとまってたりします?webでも紙媒体でも
>>513 重量湖底のクラウド型のレン鯖借りれば自由に使えるから
それでいいんじゃない?
>>514 ちなみに、=>の代わりに⇒、<-の代わりに←を使うこともできる。
val mult = (x: Int, y: Int) ⇒ x * y
とか
for(x ← List(1, 2, 3, 4)) yield x * 2
とか。普通のScalaプログラムで使ってるのを見た覚えが無いがw
一応言語仕様で規定されている
=> <- <: >: <%
はScala本体の機能で
->
は単なる関数だね
Scala本体の機能の方はコップ本でも見ればだいたい分かる
関数の方は自分がimportするライブラリのドキュメントを見ればよろし
まあPredefは特殊だけど
=> <- <: >: <%みたいな名前の関数は自分じゃ定義できないみたいだ
>>518 ありがとうございます
コップ本買ってみます
変則的に出てくる
;
って普通の命令型の言語のセミコロンと同義ですかね?
>>520 ほぼ同じ。Scalaでも同じ行に二つ以上の式を並べたいときとかに使う
あと、Scalaに慣れてない人は普通に行末に;付けてる人が多いかも
Scalaの現時点での欠点ってなんだろう?
日本語周りの処理に弱いとか聞かないし、遅いとも言われないし、難読的とも聞かないし、言語仕様がクソとか言われてないし、記述が冗長とも見かけない気がする
523 :
デフォルトの名無しさん:2010/05/05(水) 17:29:50
コンパイルが遅い
Liftとかコンパイルするのに5時間ぐらい
かかるしやってられん
あーコンパイル速度かぁ
それはおっきなデメリットだw
>>522 それらは相対的・主観的な評価じゃないか?
現時点での欠点としては、Javaと比べてIDEの出来が悪いことかな。
やることないしみんなでRubyスレに突撃しようぜ
本当はやることあるんじゃないか?
アレが足りないこれが足りない騒いでたのにお前がやれよってなった瞬間やることないわーって
現状、ScalaのWebフレームワークってLiftとWebFlavorぐらいなんだろうか
上の方でちらっと話が出てるけど、JavaのPlayってのも使えるの?
C++程ではないが、時々、コンパイルエラーのメッセージが問題解決の
役に立たないことがある。
>>530 Playも結構良さげ。あと、Java用だけどWicketとScalaは結構相性が良いらしい
という話をときどき聞くがどうなんだろう…
Playは商用PHPフレームワークより
品質悪いから使い物にならないよ
商用PHPフレームワークっていうと例えば?
Monadic Design Patterns for the Web
ってどうなの?
DSLはおもしろいらしいけど
IDEは将来的には動的言語より便利に補完してくれるようになりそうだよね
静的言語の補完機能に慣れ切ってると動的言語使いづらい
そもそもPHPのフレームワークは品質悪いって前提が意味解らん
PHPのフレームワークっていうとZendとか?
>>521 最初にScalaのパターンマッチ関係の処理を
実装よりの部分から理解するにはどこから
始めればいいのでしょうか?
>>522 俺もScalaの良い点だけでなく欠点も把握しておきたいな。
利点も欠点も状況しだいなとこあるので、できれば
このようなプロジェクトだとこういう問題があるよ、とか。
携帯機器向けとかだとランタイムが大きくなっちゃうから
proguardなどを使う必要がある。
スクリプトとして使うには起動が重い
ものによってはREPLたちあげっぱにしといて、ロードして使う
上でerasureの話がでてるけど、Javaとの互換性やJVMで動くことは
利点にも欠点にもなる
検査例外が無い
検査例外の必要性は人によって分かれそう
ここではバージョニングとスケーラビリティが問題視されてる
http://pub.ne.jp/1691/?entry_id=1129006 高階関数使う言語だとうまく働かない、という話も
ライブラリが中途半端
ファイル入出力とか、基本的なものがまだ整備されてなくて
Javaのものを使用する必要がある
現状日本語情報がまだ少ないのも欠点か
>>540 >>携帯機器向けとかだとランタイムが大きくなっちゃうから
>>proguardなどを使う必要がある。
互換性の検証必要だけど、Android用のScala.jarって2MB切ってるし
実質64MBあれば動くし、今後ハードがJVMの性能上がれば誤差みたいな
問題になるよ。家電にOSGi入れるとかアホなことやってる連中からすると
よっぽど現実的だと思うよ
>>541 Android用のScala.jarってあるのか!
サイズが問題になりそうな場面では使えそう。
アプレットとか
Androidにとって、2MBって死活問題では・・・?
>>543 OpenWnnとか4M越えてるし
許容範囲でしょ。
現状、性能度外視状態だけど
ARM 600Mhz メモリ256MBの環境で
動くことは動くよ
トータルちゃうでしょ。
Androidの仕様上は、アプリ毎にJVM起動していくわけだから、Scala使うアプリ毎に2MBずつ
という計算になるんじゃね?
あと、1個のアプリが使える空間も少ないとかなんとか。
2MBってjarのアーカイブの大きさで食うメモリの話じゃないんじゃないのか
547 :
デフォルトの名無しさん:2010/05/06(木) 00:32:11
Twitterって今はScalaで実装されてるんだっけ?
バックエンドはね
Androidアプリの話は興味あるな
処理速度や機能的にはJavaと全く同等で、ファイルサイズだけが問題なのかな?現状
>>546 jarだから実際のクラスファイルはメモリ上で増えるんじゃね?
もちろん、全てのScalaクラスをロードする訳じゃないとは思うけど。
Scalaやってる人ってなんていうの?
Scaler?Scalist?
スカルマン
スカトロジー
>>550 上のほうのリンクの「なぜScalaを使わないのか」は
IDEが未成熟だからって意見がつよいのか
Javaのやつが便利すぎるからなぁ
あとエコシステムがもっと回らないと、とか
レビュワやメンテナに読みづらいコードが量産されそう、とか
そもそもJavaでうまくいってるのに移行する理由がない、とかおもしろい。
Scalaはもっと馬鹿に迎合しないと普及しない
>>541 ちょうどアンドロイドのコードサイズの話が
http://article.gmane.org/gmane.comp.lang.scala.internals/3408 * Large code size increase?
- we have received a report on increase in code size in an Android
application, processed using ProGuard
- It is possible that annotations (pickled Scala type signatures that
are available using reflection) are explaining some of the increases from
2.8.0.Beta1 to 2.8.0.RC1
- maybe proguard can be configured to discard them?
- New collections library may be the cause for the general 2.8 increase
- This needs to be further examined. Gilles will follow up.
559 :
デフォルトの名無しさん:2010/05/06(木) 23:40:48
>>550 Scalaよりgrovyがもの凄く優れているんですね
>>550 そもそもactorのサンプル2.8じゃ
動かないから計測不能だしFUDだろ?
>>550 上のほう、マイナーバージョンが変わるとバイナリの
互換性が無くなるのも理由に挙がってるね
2.8だとコードの互換性もない、と
565 :
564:2010/05/07(金) 16:40:05
自己解決。2.8では
Source.fromPath(args(0)).getLines()
なんですね。
行末の改行の扱いが変わってるっぽいですけど。
>>565 2.8では、getLinesが行セパレータseparatorを引数として取るようになっているから、そのせいだね
separatorのデフォルト値はそのプラットフォームのデフォルトの改行コードになってるみたい
今から初心者がSS本やコップ本でやり始める場合、2.7.7と2.8RCのどっちが使った方がいい?
Rubyでいうところの1.8.7と1.9系みたいな
>>567 2.7.7使うのが無難。SS本もコップ本も2.8を前提にしないので、サンプルコードがそのままでは
コンパイルを通らない可能性がある。一度2.7で学んだ後、2.8に移行すること自体はそれほど
難しく無いので、安心して良いと思う
>>568 そかーサンクス
REPLの補完にちょっと惹かれたけど、とりあえずは2.7.7で頑張ってみる
>>568 2.8でも大半動くし、動かないのを調べるだけ、本以上の
学習が身につくのに何故に、楽な方、楽な方、安全な方という
導き方をするんだろうなぁ
意味がわからん
>>570 先ず入りやすい方法を示すのは良いやり方だと思うが。
それで「もっとやれる」と思うような人は更に別の方法を自分で採れるはずだし。
ただ今後はwebで見かけるサンプルコードなどは2.8のものが
多くなると思うのでそこらは注意が必要かも。
本のサンプルにそんなにこだわらないのなら2.8からやるのもありだと思う。
>>570 うーん。しょっぱなからくだらない点でつまづくと、それが原因で学習する意欲自体が
削がれるということがしばしばあるので、そのリスクは少ない方がいいだろうと思う。
それに、2.8はまだ安定版が出ておらず、仕様面でもまだ変更される可能性のある部分が
残っているので、(RC1ではspecialize絡みでLiftなどで不具合が発生してて、それをfixした
RC2が近いうちに出る予定)、正直言って、既に2.7を十分知っていて、2.8で導入された
機能に魅力を感じているユーザ以外にはまだあまりお勧めしたくない。
2.7→2.8の移行自体はそれほど難しくないから、後でも構わないと思う。
>>573 >うーん。しょっぱなからくだらない点でつまづくと、それが原因で学習する意欲自体が
>削がれるということがしばしばあるので、そのリスクは少ない方がいいだろうと思う。
こうゆうのは排除でいいだろw
モンキーコード書くような連中増やすのが目的なの?
>>574 モンキーだろうがなんだろうが、ある程度ユーザが増えないことには頭の固い上司を説得できないじゃん。
趣味でしか使わないのならそれでもいいのだろうけど。
>>575 SS本の9章読め
アホで無知なユーザを増やすんじゃなくて
正しく利点と欠点を説明可能な技術者を着実に
増加させるのがあるべき方向だろ。
クソアプリ量産されて、クソ言語って評判が広まる方がいいの?
間口が広いに越したことはないな。
>>574 そこそこの技術者であっても、Scalaに対する学習意欲がそれほど高く無い(=
当初はそれほど時間を割くつもりが無い)場合、学習の初期段階でつまづいたら、
それがきっかけでポイされるかもしれないわけで、リスクは少ないに越したことは無いと考えてる。
>>576 アホで無知であってもとにかくユーザ増やしたい、と思ってるわけじゃないけど、
新規ユーザ向けに現時点で2.8を積極的に勧める理由が無いというのが正直なところ。
さっきの書き込みでは書き忘れたけど、2.7と2.8の間にはバイナリ互換性が無いから
2.7向けにビルドされたScala用ライブラリがそのままでは動かないのも痛いところだし。
581 :
デフォルトの名無しさん:2010/05/08(土) 00:30:02
SmallBasicみたいなコード補完&日本語API説明ついたIDEがでたら
一気に普及すると思うよ
あぁいうのはバツグンに使いやすいもん
現時点ではまだだけど将来的にscalaの場合、静的だからIDEの高度なインテリジェンスな補完を期待できるの?(Javaみたいな)
それともコンパイルするまで型推論されないからIDE上では動的と大差なくてあんまり期待できない?
>>577 いや、そのサイトに移行したのはかなり最近、というかScala Daysでちょうど
Scala Eclipse Plugin開発者のMiles Sabinが移行の話をしてたと思う。
>>582 Javaでも構文解析とかはしてるし、ScalaのIDEが型推論機構を持てばできるんじゃない?
というかコンパイラが持ってるのを使えばいいのか。
>585
そのへん、2.8からちゃんとやるから、Eclipseの腐れプラグインも2.8から
まともになるよーとかいう記事があった気がする。
>>580 一時の安全、安定が本当に学習意欲に繋がるとは
考えられんし、業務でもないのにリスク回避が正しいとは
とても思えん。
日本のトップScala技術者がそう言うならこれで引き下がるか。
>>582 補完機能の安定性(変なコードに対しても補完が効くか、という意味)や充実度、という意味で
まだまだだけど、現時点でも補完はだいぶ賢くなってきてる。たとえば、
class RichListDouble(list: List[Double]) {
def average: Double = list.foldLeft(0.0)(_+_)
}
implicit def enrichList(list: List[Double]): RichListDouble
= new RichListDouble(list)
とか書くと、
List(1.0, 2.0, 3.0).avとすると、averageが補完候補に出てくるけど、
List("A", "B", "C").avとすると、補完候補に出てこないという具合に(Scala Eclipse Plugin 2.8の場合)。
ただ、ちょっと凝ったソースコードにすると補完機能がうまく働かなかったりするので、安定性はまだまだ。
ビルダー部分は2.7のときに比べてかなり安定して働くようになったから、本格的に使い始めてるけど。
現状(2.7系)でメソッドやプロパティをまともに補完してくれるIDEってある?
2.8を待たないと無理なのかしら
みなさんどんな環境でスカラってますか?
>>587 いや、日本のトップScala技術者というわけではないですし、コーディングスキル
も全然高く無いです。あくまでScalaの言語仕様については(日本では)詳しいというだけです。
というのはともかくとして、リスク回避というのは、サンプルコード動かねー、とか
scaladoc2のAPIリファレンスが読みづれー、とか、正直言って些細な部分でつまづかれて、
Scala使えねーという評判が広まるのは避けたいなあ、というのもあります。
2.8安定版が出て、仕様がFIXされた後なら状況はまた別ですけど。
>>588 コンパイラのAST(抽象構文木)パーサとかを流用すればすぐ実装できるんじゃ、
とか思ってしまうんだけど、技術的にどのへんがチャレンジになってるんだろ?
単に内部APIがきちんと整備されてないだけ?
>>588 自己レス。うぎゃ。averageの定義が平均じゃなくて合計値になってるorz
summationとかに適当に読み換えてください。
>>591 implicit conversionを考慮に入れた補完はかなりチャレンジングだと思う。
implicit conversionに関する規則って結構複雑で、パーサ持ってればすぐ実装
できる、という程簡単ではない。その辺を一発で処理してくれるAPIをコンパイラが
持ってなければ自前で実装しなけりゃいけない…(ひょっとしたら持ってるかも)。
C#のExtension Methodなんかも結構補完大変だと思うんだけど、Visual Studioは
よく補完実装してるなーとか思ったことがある。
>>593 なるほど。
その辺が完璧に処理できるようになると強力なウリになるんだけどなぁ。
職場がテストコードにGroovyを導入してるんだけど、便利は便利なんだが、一方でIDEの強力さを思い知ったりしている。
Groovyは別に用途があると思うけど、従来のJavaの位置のリプレースとして有望なのは、やはりScalaじゃないかな、と。
>>589 NetBeansを使うばあいは、2.7のプラグインはNetBeans6.7までにしか
対応して無いはずなので注意ね。
NetBeans6.8以降は2.8のプラグインしか対応して無い。
個人的にNetBeansが好きなのだが、将来性の問題からオススメしづらい・・・
IntelliJはかなり本気でScalaに取り組んでるみたいだし
Eclipsはコミュも大きく、Scala開発元も押してる(?)っぽいし、
プラグイン自体にスポンサーも付いてるみたい
NetBeansは個人がClojureやErlangプラグインと一緒に開発してるもので
仕事忙しくてあまり手が回せないみたいだし
なによりOracleがSun買収後もEclipsを押していくと明言してるから
NetBeans自体がそもそもやばい気が
NetBeans売却されるからなぁ
597 :
デフォルトの名無しさん:2010/05/08(土) 01:52:14
Eclipseはエディタのカラー替えるプラグインみたいなのなんでないの糞すぎ
>>597 とりあえずMoeclipseでググるといいと思うよ。
やっぱEclipseが本命か
Java, JavaVM, EclipseもMSに潰されるから無問題
Summer of CodeにEmacsの開発環境のプロジェクトがあったから期待している
traitがclassに対してextendsする場合はそのクラスもしくはサブクラスに対してのみmixinできるという制約で
traitに対してextendsする場合はそのtraitを継承するっていう理解でいいですか
◆ueEP8Ean2lqc氏とmatzがやりあってるぞ! と野次馬的に。
>>604 まあ別に見られても構わないんですけど、自分的には別に喧嘩してるつもりはなくて
普通に論争してるだけのつもりなんで。念のため。
# 正直、今回の自分の論については、ショボい例以外で良いのを
# 思いつかないのは事実なので、主張としては弱いよなーとか思ってたり。
RubyダサいはJavaプログラマの総意だから問題ないよ
センス論争は難しいなぁ。
生産性、と言い換えてもいいんだが、これも恣意的に使える言葉だし。
JavaからRubyへって本読んだけど過去最高のトンデモ本だったわ
Rubyダサいってどんなところ?
Scalaと比較して?
あのmatzと論争してんのか、すげーなw
PerlやPHPやJavaをdisることでしか存在意義を見いだせない言語だから仕方ない
あのクソ宗教本のせいでRuby使わされてウンザリしたよ
Pythonへの不満はインデントのセンスがないことくらいだけど
Rubyはありすぎて書ききれない
2002年くらいにJavaやPerlの代替探しててRuby勉強しててこりゃ駄目だと思ったけど
まさかRoRが出てきてあの言語が流行るとは思わなかったわ
DSLが作りやすいあたりとかは共通点なんじゃないかね、よく知らんけど。
Railsやらされてすげー苦痛だった。Rubyしかできない連中とは仕事したくない。
型チェックがないととんでもないアホな単純ミスを見逃したりする。しかもテストは
数が多いがコンパイルチェック以下みたいなレベルのばっかりだったりとか。
Scalaには本当にがんばってほしい。流行すれば同じような境遇の人には福音となるはず。
バグが出来るのは作る奴の問題で言語のせいではないと思うぜ
タイプミスしても実行するまで検出できないとかは言語のせいだと思うね。
>>617 もちろんその通りだが、うみやすい言語とそうじゃない言語はあると思う
って昔matzがPHPをdisってる時に言ってました
>>618 CでもJavaでも意識してタイプセーフにしないとどっちにしろ意味ないけど
もちろんScalaも
PHPとRubyは同じようなもんだと思うんだが
というかむしろRubyの方が生みやすい気もする
>>621 あ、一応補足しとくと
>>619でmatzが言った時は「PHPはセキュリティ的に問題のあるコードを生みやすい」って意味で使ってたから、バグとは厳密には違う
まぁ「書く人次第」という主張に対する反論としては大差ないけどね
セキュリティ的に問題のあるコードを生みやすいってのがまず意味が解らんけどな
PHPで問題出す奴はJSPで書いてもeRubyで書いても同じ事するだろ
プログラマの間口が広いか狭いかだけの問題だと思うな
Rubyは今まで初心者がいきなり使うことがなかったからセキュリティ問題が発生しづらかっただけで
初心者をガンガン受け入れてきたPHPとはプログラマの質が違うんだから
言語仕様よりコミュニティの方針で絞っただけに過ぎないと思う
自治体なんかでRubyに補助金とか出しているところがあるけどなんの意味があるんだろう
Scalaの方が遥かに優れているし、競争力もあがるのに
とりあえず他言語disってるだけのやつは全員消えてくれ。
>>625 某自治体の職員曰く、国産言語だから
金出すって言ってたなぁ。それ以上よくわからないし
聞かれても、書類のとおりとしか言えないってさ
そんなんだから何時までたっても
バカITが続くのだろうなぁ
なでしこひまわりの方がマシだな
SS本の冒頭にちょうど
JavaからRubyへ...そしてScalaへ...
っていう節があるね。
適用領域が違うだけだと思うなぁ。
Scalaの立ち位置は「ライトウェイトJava」でしょ。
Liftの作者は、そういうノリでしょ? 長いことrails使ってたけど、ありゃやっぱ言語が駄目だわって動機でLift開発に至ると。
twitterがscalaに移行しているみたいなこと言ってたけど
どの程度移行したんだろう
>>632 そういうことってどこに書いてあるさ?
>>633 バックエンドを全部。フロントエンドは今もRails
煽りたいだけの奴がいるな。。
>634
本人のblogやインタビュー記事。
本(Beginning Scala)にも書いてたかな。
ム板はしょうもないやつが多すぎるからな
Scalaスケーラブルプログラミングって本ってどうなの?
コップ本は大体理解したんだけど、その後でSS本って読む意味ある?
642 :
デフォルトの名無しさん:2010/05/08(土) 21:40:12
rails経験者でscala/liftに興味持ってるんですが、
liftってubuntuの上にインストールすることってできないんでしょうか??
色々調べてもWindowsにインストールしてる記事しか見つけられませんでした。
もしかしてLiftってEclipseと一緒に使うものなんでしょうか?
教えていただけると幸いです。
特にないんじゃないかな。
コップ本が難しかったら、SS本に手を出す価値はあると思う。
SS本は名前の通り入門本なので、入門レベルを乗り越えたら不要になるタイプの本。
>>642 liftはmavenから使うのが普通だと思うけど
646 :
642:2010/05/08(土) 22:01:28
>>644 レスありがとうございます。
すいません、自分JavaやったことなくてMavenもよくわかってないのですが、gitみたいなもんですかね?
ずっとLAMP環境でやってきましたので、ターミナルでvimとか使ってプログラミングするのに慣れてるんですが、
scala/liftではあまりそういうことができない感じなのでしょうか?Windowsで開発している情報ばかり見るもので・・
ちなみにEclipseはC++の開発で使ったことがあるぐらいです。
下手な煽りがまざってるな、だから2chはだめなんだよ
>>646 gitはバージョン管理。
Mavenはごちゃ混ぜになっちゃったけど元はライブラリ管理のものだったはず
>>646 Railsやってたのなら、Mavenは rake + rubygems みたいなものと思えばいいんじゃないかと。
>>646 むしろ Ubuntu/Linux のほうが Windows より簡単にできるよ
ターミナルでやるのに慣れてるならなおさら
matzと論争してる人、まだ続いてるのか?w
誰かログ残ってる人トゥギャっておいてくれよ
読んでみようと思ったけど、長すぎて断念w
IDEも含めれば静的型付けの恩恵はわかりやすいんだけどね
パターンマッチを別の問題にしてるのは紳士的だねw
俺なら真っ先に言いたくなるけど
動的型は二酸化炭素をより多く排出するから滅ぶべき
654 :
デフォルトの名無しさん:2010/05/08(土) 23:52:57
IDEを使いこなした経験が無いと静的型言語の恩恵ってあんまりないからなぁ。
655 :
デフォルトの名無しさん:2010/05/08(土) 23:53:26
動的言語と静的言語のメリットデメリットについてハイレベルな擬論を展開しているようだが、難易度高すぎてサッパリついていけないwww
まとめた上で誰か解説たのむw
最近Scalaの注目度高いからやればホットエントリー入り間違いないぞ!!
静的型言語で一般的なレンタル鯖でCGI作れて開発環境や汎用ライブラリも揃ってるとなるとやっぱCしかない?
なぜここでその質問w
ここのスレ的にはGAE/JをScalaでやるにきまってる
いやその分野に食い込めたらRubyやPythonの上行けるよなーって思ったんで
たしかに言語がいかによくても気軽に使える環境がないと厳しいな
そういう意味じゃPHP/Perlにはもちろん、まだまだRuby, Pythonにも遠く及ばないか
Javaなんてかなり古参なのにデフォで使えるようになってないレン鯖が多いのはなんで?
結局Servletありきだからリソース的にもVPSクラスじゃないとまともに使えない
(というかVPSでも512MBくらいないとまともに使えない)からじゃないかなぁ
CGI的に使うならもっとメモリ少なくても余裕なんだけどねぇ
mod_javaの開発が止まったのが悔やまれる
非ServletだとJDK入ってるのは海外のレン鯖でもDreamHostとか一部だけだな
663 :
デフォルトの名無しさん:2010/05/09(日) 01:16:05
Rails3への移行に疲れた・・・
どうせ作り直しならScalaに乗り換えようかな
仕様が固まらんとD言語やPython3みたいな悲劇起きそうだからまだ流石にScalaに移行はできんな
メジャーバージョンアップがあってもPHP4→5くらいの修正で済むようにならんと厳しいなやっぱ
Parrotっていつ完成するんだろうね。
あれが出来てれば、Scalaもそっちで作られてたかもしれんし。
666 :
デフォルトの名無しさん:2010/05/09(日) 01:27:14
>>664 でも割としっかりしてるからtwitterとかforsquareみたいな大きいとこが採用したんじゃないの?
しっかりしてなかったRuby採用したのがtwitterだからな…
大きいところは自分でメンテやるんじゃね?
Yahoo!JapanなんてFreeBSDやMySQLですら独自に作り替えちゃってるし
Scalaのクラスライブラリは、IO系が手抜きなのが意外。
普通、新しい言語のライブラリって、IO系から固めないか?
関数型言語はそうじゃないよ
671 :
642:2010/05/09(日) 02:03:55
レスありがとうございます。
とりあえずubuntuにscala/maven入れてhelloWorldのところまではいけました。
これから色々いじってこうと思ってるんですが、ちなみにliftはRailsみたいにRestを意識した感じではないのですかね?
「lift restful」な感じでググってもあまり出てこなかったので。
>>669 Javaのライブラリで事足りたからじゃね?
scala.io.Sourceとかってコンパイラ用だからあんま使わないでくれ
って話無かったっけ?もうOKなのかな?
>>669 コレクションライブラリを一番優先してる、という印象を受けるね。Scalaの場合。
2.8のコレクションライブラリなんか、良くも悪くも特異な設計になってるし。
scala-mode.elつかってみたんやけど、
def hoge {
val foo = if (boolValue) (x, y) else (x, y)
ここ
と、末尾が)で終わる式(?)の次行が強制でインデント(「ここ」の位置にくる)
されてまう気がするけど、なんとかならないもんかな?
自分で直せば?
ScalaのIOは腐ってるから
使えない。だから流行らないんだよ
678 :
デフォルトの名無しさん:2010/05/09(日) 13:49:16
>>とりあえずubuntuにscala/maven入れてhelloWorldのところまではいけました。
教えてくだしあ><
そこまでいけない・・
にょろ演算子って
タプル作る演算子なんですか?
>>679 たぶんパーザコンビネータの~演算子のことだと思うけど、ちょっと違う
~演算子は、「パーズ結果として~[T, U]を返すパーザ」であるParser[~[T, U]]型のオブジェクトを
返す(Tはレシーバの型で、Uが引数の型ね)
~[T, U]はタプルとは別の型だけど、意味的には(T, U)と似たようなものだと思って間違いない
>>680 Parser[~[T, U]]というのは
例えば、a ~ b ~ cって返すと入れ子
になるってことですかね?
>>681 そういうこと。
aがParser[A],bがParser[B],cがParser[C]だったら、a ~ b ~ cの型は
Parser[~[~[A, B], C]になる。パーズ結果の値を加工したいときは、
a ~ b ~ c ^^ { case va ~ vb ~ vc => .... } みたいにパターンマッチで取り出せる
ちなみに、タプルでなくわざわざ~というデータ型を定義したのは、パターンマッチ
でパターンがネストしたときの利便性と、~演算子と同じ記号使いたかったから
じゃないかと思う。
683 :
デフォルトの名無しさん:2010/05/09(日) 23:15:40
新しいscala本はいまいち
コップ本があればいらないかな
SSいらんみたいな自称玄人の自慢話はもういいから
SSサイコー
レベルや対象が違うにせよコップ本とSS本の2つは良書で間違いなさそうだけど、他の和書は話にならないレベル?
あとこれから出るので期待できそうなのとかあるのかな
SSは別に良書じゃないだろ
工学社の方は普通の入門書
Scalaで、2つの変数に同時に代入するのってどうやるのだろう?
Rubyだったら
y0, y1 = x0+1 , x0*x1+2
って感じ。
2つ同時に代入したいなら、こんなんでいいけど、
val (a, b) = (1, 2)
これってパターンマッチと同じ仕組みなので、
val Some(a) = Some(1)
とかもできる
>691
その書き方で正規表現やってるのを見たときは、ちょっと衝撃だった。
そして、Extractorを自分で定義できるからね
いい言語だよねw
>>691 下の例がよくわからない
生成されたSomeオブジェクトにSomeオブジェクトを突っ込んでるように見えるけど…
どなたか素人にもわかるように説明してもらえませんか
左のSomeはコンストラクターパターンと言って、パターンマッチの一種なんだよね
詳しくはScalaのパターンマッチについて調べるといいよ
>>695 詳しく説明もできない
知ったかは消えろよw
はあ、またか
2chって頭がおかしいやつばっかだな
RC2が出たみたいだけど、バグフィックスだけかな?
>>698 本家でもバグてんこ盛りで使えないだろって
避難が凄いみたい
どこにそんな情報が?
>>700 >>701の言ってるのがRC2のことだとすると、確かにそんな情報は見当たらないので
変だけど(つか、RC2出たばかりだし)、たぶんRC1のことだと思う。RC1では、
specialization絡みでバグがあってLiftのテストケースが失敗するとか、specsの挙動
もなんかおかしいとかそういう話を見かけた覚えがある。RC2はその辺のバグを軒並み
フィックスしたバージョンになってる(たぶん)。
IteratorのflatMapはIteratorを受け取るんだなTraversableOnce受け取って欲しいわ
TraversableのflatMapも
704 :
デフォルトの名無しさん:2010/05/11(火) 22:51:59
知人がScala勧めてきた。理由はTwitterが使ってるから。
そんな理由で人に勧めるなんて・・・
twitterがscalaを使い始めたのは成功した後
それまではruby railsを使っていたんだから
ruby railsを薦めるべき
twitterくらいでかくなるまではRubyで十分だな
java-jaの人らがこのスレを話題に出しててわろた
java-jaってなんだよ
SS本の帯にも書いてあるからねw
今、人に進めるのにこれ以上ない宣伝文句じゃね
ところでScalaを学ぶ前に知っておくと特に役立つ言語って、Javaは確定として、残りはRubyとかHaskellあたりかな?
710 :
704:2010/05/11(火) 23:54:41
>>705>>706 オレもRORについては言及したんだが、そいつもうSS本買っちゃって鼻息
荒いのなんのって・・・ んで、「オマエもやれ」って・・・
この友人には言ってないんだけど、オレプライベートではHaskellerなんだよね・・・
あの、駄目な友人の愚痴を披露する場ではないんだけど
ビルドツールってなにがお勧め?
val xml = <aa>abcd<dd>eeee</dd></aa>
であるときに自分の直系のテキストのみ("abcd"だけ)を取得したいんだけど
xml \\ "aa" text では abcd<dd>eeee</dd>
パターンマッチで
xml match { case <aa>{abc}<dd>{dd}</dd></aa> => println(abc) }
とタグを全て定義してやれば、取得は出来るんだけど
この方法しか無いんでしょうか
ビルドツールは、みんなsbtに移行してるのかな
715 :
デフォルトの名無しさん:2010/05/12(水) 00:50:51
>>713 xml.child.filter(_.getClass == classOf[scala.xml.Text])
isInstanceOfは使わないのかい?
><
ムギュ・・その通り・・・
xml.child.filter(_.isInstanceOf[scala.xml.Text])
isInstanceOfの所の角括弧の使い方が何だか奇妙に感じる。
文法的にはどうなってんだ、これ。
>>718 文法的にはAny型に所属している普通のメソッド(単に型パラメータを取る=ジェネリックというだけ)。
内部的にはコンパイラが特別扱いしてinstanceof命令に変換してる
あ、そうか。引数無しのメソッドなんだな。
しかし、
List(1).isInstanceOf[List[String]]
が true になるのは、やはりダサいな。
>>720 ダサい Java との相互運用性を考えれば仕方あるまい
それはパターンマッチを使えというご託宣、ってコップ本がゆってた。
守備力age
レンタルサーバーで気軽に使えるようにならないと普及はきつい。
エンタープライズはjavaのままだろうし。
schemeやgoなどがもいまいちなのは、サクラインターネット月1000円レベルでwebアプリがかけないから。
皆さんはどう思います?
レンタルサーバの時代は終わり
GAEやEC2なんかで使えれば無問題
それレンタルサーバだから
じゃあJava/Scalaもレンタルサーバで気軽に使えるから無問題
PHPが普及した要因のひとつもそこだろうけど、GAEってタダだっけ?
値段やホスティングしてるとこの知名度は重要かもね
GAEは不安定すぎて実験にしか使えん
月1000円鯖の代替なら十分
App EngineでScaleって動くの?
App Engineって完全なJVMじゃないから、無理かとおもってた。
GAEが不安定だと思わない。
ec2は魅力的だが高くつきそうだね。
733 :
デフォルトの名無しさん:2010/05/13(木) 09:51:54
キーボードからCのソース・プログラム名(fname.c)を入力し、そのプログラムの行番号付
テキスト・ファイルを、別名のファイル(fname.txt)で表示するプログラムを作成せよ。ただし、
ファイル名のfnameの部分は共通にせよ。
734 :
デフォルトの名無しさん:2010/05/13(木) 09:52:53
キーボードからCのソース・プログラム名(fname.c)を入力し、そのプログラムの行番号付
テキスト・ファイルを、別名のファイル(fname.txt)で表示するプログラムを作成せよ。ただし、
ファイル名のfnameの部分は共通にせよ。
上を教えてください。
お願いします。
なにそれ宿題?
>>732 思う思わないの問題じゃないと思うけどな
そこそこのサイトで実運用に耐えられなきゃ単なる技術者のオナニーだし
737 :
デフォルトの名無しさん:2010/05/13(木) 10:37:00
>>735 宿題です。
まったく分からなくて困ってます。
Scalaで宿題?スレ間違ってない?
739 :
デフォルトの名無しさん:2010/05/13(木) 11:37:55
>>738 どこのスレにいけば教えてもらえますか?
本当にScalaの宿題ならこのスレでいいと思うけど
そんなものを教える学校があったのかと驚いたもので
違うなら該当プログラミング言語のスレへどうぞ
741 :
デフォルトの名無しさん:2010/05/13(木) 12:05:20
Cなので、そこへ行ってみます。
わろす
とくにageられてたわけでもないのに何でこのスレだったんだw
>736
釣られちゃたのだが、不安定の根拠ってある?
思う思わないの話し?
twitterで検索すると結構不安定言ってる奴いるな
全員工作員だろうけど
>>745 たかだか道具の一つにそこまで思い入れ持つってのも凄い事だよな
今、Scalaとか弄ってる人間で選択肢を増やすって考え方以外は本物だと思うんだが
間違ってるかもしれないけどSS本の7章のクエリビルダのソースだけど
いろんなクラスでやトレイトで[MyType <: Table[MyType]]型引数を受け取ってて
本には該当のテーブルで定義されたフィールドだけがクエリーに含まれることを保証しますって書いてあるけど
ほとんどTable内で定義されててパス依存型になってるので別につけなくても保証できてない?
いやByとOrderByは外にあるからやっぱつけなきゃダメか
twitterでのMatzとの論争を見たけど、難しくてわからなかった。
で、古いのを見ると、kなんとかさんのこと書いてあったけど、あれまずいんじゃないかな。
あのひと、今ひがさんのツイートをさらしものにしてるでしょ。
「kなんとかさん」とか書いてるのも見つかると同じようにさらされそうだから、火種になりそうなのは消したほうがいいんじゃない?老婆心ながら。
>>746 なんか勘違いしてるだろ
不安定なのはScalaじゃなくGAEだろ
直前の流れも読もうな
Scala on GAE/Jは、ググればやってみてる人は結構いる。
GAEが不安定の件は、どのレベルの安定性を求めているのかによる。
勘定系に使えないって話か、
データストアが時々タイムアウト例外を投げるのが許せないのか、
もっと根本的に不安定だと言ってるのか。
>>750 本物かw
どっちが不安定とかでなんでそんなにこだわれるの?ScalaProject参加してんの?
お前みたいなの以外で今Scala触ってるのは不安定かどうかなんてのは自分で検証・判断出来るレベルって事が言いたかっただけ。
GAEが不安定だとなんか困るのか?
巷の評判が不安定だってんなら別にそれで構わんだろ
そりゃ使いたいのに不安定だったら困るだろう。
EC2でいいよ
どっちが不安定でも良いけど、検証コード、結果、原因だして騒いでんの?
あるなら改善要求でも出せばい良いじゃん。
GAE大好きスレでも立てろよ
Scalaを流行らせるためには安定したクラウド必要だね
でもGAEまだまだだねってだけの話なんだから
758=754=750か?どっちが不安定でもいいけど必死だな
そうだけどだとしたらなんか問題あるのか
そろそろくだらない話は終わりにしろ
762 :
デフォルトの名無しさん:2010/05/13(木) 22:33:24
せっかく下記のスレッドがあるので、そちらでできればよいのだが、
Google AppEngine 3アプ目
http://pc11.2ch.net/test/read.cgi/php/1267057923/l50 こっちの方がもりあがってるのでこちらに書き込み。
>>752 勘定系に使えない理由を教えていただけないでしょうか。
データストアのタイムアウトはまー色々対処方法があるのでいいが、
根本的に不安定というのがあるならば、教えてほしいです。
社内システムをscala On GAE/Jで作ろうとしてるので
どのようなリスクがあるのかあらかじめ知っておきたいのです。
763 :
デフォルトの名無しさん:2010/05/13(木) 22:34:56
Scala.NETの実用度ってどんなもんなの?
Scalaって、Rubyみたいに完全な(純粋な?)OOPLなの?
それともPHPみたいに不完全?
OOとか何言ってるの?
>>764 昔見た時(2.7.?)は、Actorなどなかった、
仕組み上JavaAPIはつかえないので、JavaAPI使ってるScalaで書いたライブラリも使えない
>>766 完全なOOPLなのにさらにFPLならすごいなと思って聞いてみた
Rubyがでたころは1も+もすべてオブジェクトだよすごいだろ?って登場してきたなぁと
tweetが情報元とか怖い世の中になったもんだな・・・
今日は一人変なのが紛れ込んでますね
>>767 ありがとう。
Javaのクラスライブラリが使えず
書き手もJavaをほとんど知らないとなるとあまりうまみがないってことなのかな。
言語が面白そうでJava版をちょっと触ってはいるけど
PowerShellの代替にはならないか。
>>736 >思う思わないの問題じゃないと思うけどな
とか人を見下した発言しておいて、不安定の根拠がtwitter発言かよ。
なぜアメブロで詳しく説明してる奴の話はスルーなのか
今もJavaのライブラリまともに
呼び出せないクラスが大量に量産されている
2.8RCは安定しないどころか、どんどんバグが量産されていて
もう手がつけられない。
今後どうなるかは自明な状態
amebloだろうがtwitterだろうが、詳しく知りたかったら
発言した本人に尋ねられるじゃん。
>>774 不安定じゃないじゃん
重いって言ってるだけじゃん
馬鹿なの?死ぬの?
>>774ってPHP信者だろ?
Javaクラウドをけなして普通のサーバで動くPHP最強!って結論づけるのが目的
このスレって田舎社会みたいだな
Javaクラウドは失敗するよ
全然つかいものにならないし
おまえら荒らせればなんでもいいのかよw
>>784 PHPは簡単で高機能な言語だろ
Scalaなんて何が出きるのw?
バグだらけで何もできないし
>>780 むしろ都会だったら
774「GAE不安定なんです。」
上司「何が〜?」
774「まかりません」
上司「まさか調べてないの?おーい○○、GAEおかしいらしいから事象だけ確認してそのままm引き継いで」
774「あのー僕何やれば良いですか?」
上司「辞表でも書いてて」
普通は安定していると言う根拠を出してから
採用を検討するのでは?
最初にGAEありきの会社なんてないよ。
GAEが不安定というよりも
Scalaが原因でGAEが不安定になることが多いね
やっぱりJavaのクラウドなんて無理なんだよ
>>789 とうとう我慢できずに本性あらわしたか
やっぱScalaアンチじか
戦ってるねぇ、2chの鏡だ
妄想で語ってるやつはいい加減出ていってくれないかな
GAEはスレ違いだし
でもScalaとGAEの組み合わせは
挙動不明のバグが乱発するんだけど
これはGAEの問題じゃないでしょ
かといってGAE以外に現実的に安くて安定して動かせるとこなんて他にあるか?
んでScalaとGAEの組み合わせで挙動不明のバグが乱立するtweetはどこよ
797 :
デフォルトの名無しさん:2010/05/14(金) 01:49:09
んでScalaとGAEの組み合わせで挙動不明のバグってどーゆーのだ。
型パラメータにデフォルト値指定できるようにしようぜ!
って言ってる人を見かけたんだけど、そういうのってできるもんなのかな
もちろん今のScalaでは無理なんだけど、そういう拡張って可能なのかな
GAE不安定って言ってる奴は、まずBASE特性とCAP定理でググっとけ。
まぁ、GAEスレでやれって話だな。
簡単に言うと、GAEみたいなクラウドは、いくつかの特性を犠牲にすることで、
強烈なスケールアウト特性を手に入れる、という選択をしている。
「不安定」なんじゃなくて、最初からアーキテクチャ的なトレードオフがあるだけ。
タダだからレン鯖の代わりに使おう、くらいの心積もりなら、素直にレン鯖を使った方がいいこともある。
この辺は解説してるページや本がいくらでもあるから、後はググれ。
だから、そういうトレードオフがあるから、
Scalaの普及に使いづらいよねってのが最初の話じゃね?
Javaだって初期は、WebLogicが重いせいでJavaは重いって評価になって
長年不名誉な評価を受ける事になったんだしさ。
なのに、GAEのマイナス評価に過剰反応する奴がいたり、
しまいにはPHPと戦う奴が出てきたり。
現状雑談スレと技術スレをわけるほどトラフィックがないのがつらいところ
まぁクラウドなだけに使う側にとっては
なんか重いなんか不安定って感じで
終わっちゃうだろうしなぁ確かに
既存のレンタルサーバだってそのサーバが重い原因を調べて使い続けるより
みんなすぐ乗り換えちゃうし
805 :
デフォルトの名無しさん:2010/05/14(金) 09:15:52
まとめると「GAEは不安定で使えない」というのは妄想発言ということでいいね。
となるとGAEでScaleを使いやすくしてやれば、普及させることができそうだね。
Googleを宣伝したい訳ではなく、このご時世、無料というのはかなり利点だと思う。
豊富な、日本語の事例や技術情報が必要ですね。事例はともかく、技術情報ならこれから頑張れば俺にも出せそうだ。
なんかピントずれてるな
だから荒れるのでは
だいたいあってる
Scala(Java)って気軽に使えるレン鯖ないからたぶん普及しないよね
↓
GAEでいいじゃん
↓
不安定じゃん
↓
はぁ?クラウド系はそういうもんだろ
↓
じゃやっぱGAEでいいね。で、普及させるにはScala+GAEの日本語情報が必要だね ←イマココ
GAEより、ワンコインVPSの狭小メモリでどうにかしてservlet動かすテクニックでも
開発した方がいいんじゃない?
近道、コスト、実用性のバランスで決めればどちらでもいいがなー
クラウド系はそういうもんではないだろ
既存のレン鯖のように、より高い金払えばもっといいプランを選べるってのならともかく
GAE用に作っちゃうと移転時には修正が必要になる
研究者やサンデープログラマ増やしたいならGAEでいいかもしれんが
ビジネスユーザを意識するからVPSでTomcatの方が現実的
最近話題のGoとどっちが強いですか?
安いレンタルサーバーでservletコンテナが使えないよね、ってとこから話が始まってるのに。
あと、サンデープログラマーも少ないマイナーな言語をエンタープライズで採用しないよね。保守やる人が限られてくるからね。
これは主観だけど今のところエンタープライズは考えなくていいんじゃない。目標はベンチャー事例狙いへの啓蒙で。
意外とApp Engineやったほうがエンタープライズへの近道かもよ。
ぶっちゃけエンタープライズは貧乏くじ
そこまでしてGAEをプッシュする必要もない気がするんだが
Google「GAEが不安定だと思われたくないのでScalaみたいな固まってない新参言語は使わないで欲しい」
Scalaってワンライナーでのファイル操作的なことってできる?向いてる?
本格的にスケールアウトを生かしたい用途にゃクラウドだが、
いろいろとGAE特有のノウハウが必要なのは確かなので、
言語習得用のプラットフォームとしていいかと言われると微妙だな。
無論、本格的なGAEアプリをScalaで、というのは可能性があると思うぞ。
>>817 起動に数秒かかるからワンライナーだとあんまり向いてない
2.8は2.7よりさらに重い
気になるなら起動済REPLに投げるなど必要
>>819 レスサンクス
できることはできるんだね
Rubyとどっち覚えようか迷ってた
Winで使う場合はRubyは使いづらいってよくきくけど、Scalaはそんなことない?
>>815 一人こだわってるお子様がいるが、押すのも貶すのも他所でやってくださいって感じ
ベースがJavaだから、むしろWindowsが一番楽かも。
環境についてはJavaより便利なところはないので、そのつもりで
結局GAEをうまく使いこなせない奴が、不安定だとか根拠のない話を騒ぎ立てて、
流行らないように誘導しようとしてるんだろ。
もし流行ったらそいつは世間において行かれることになるからなw
不安定で流行ったものはあるし(Windowsとか)安定してても流行らないものはある
とにかくGAEやるしかないだろ。
無料なんだし、やらない奴は意味がわからない。
GAEの話をこのスレでする意味が分からない
・頭使わずに議論した気になれる、レスをもらえる
GAE/Jでしょぼいサービスを作ったことがあるが、
Googleの独自APIとか、例えばSlim3みたいなフレームワークの勉強とかも
しなきゃいけないからな。タイムアウト処理とか、あまり本質的でない部分にも
気を配る必要があるし、Scala入門用にはさほどお勧めではないな。
何なら、Opera Uniteとかでもいいんじゃねぇの。やっぱりタダだし。
だからさ、いいかげんGAEスレ行けよ
>>830 GAEの最新技術について行けない奴がScalaを習得できるとは思えん。
Scalaの話からめてるだろ。
バカなのか?
今までよく頑張った
もう休め
836 :
デフォルトの名無しさん:2010/05/15(土) 19:26:19
>819
高速Scalaコンパイル fsc を使ってみてもだめ?
ワンライナーなので、インタプリタだと思ってみた。
ワンライナーにはならないけど、コンパイルすると、
fscでソース読み込みの時点で(windows 2GHz 1coreで)1秒以上はかかるかな。
ただ、コンパイル後は、そんなに気にしないでいいから、
やっぱり、立ち上げたままのREPL環境とコンパイル組み合わせるのが、向いてると思う。
ワンライナーで使うなら、lispみたいに起動時のメモリイメージから再開とか、
REPL起動まで先読みしきったAOT環境が、あればいいんだろうな。
GAEは使えるとして、GAE以外にもっといい動作環境ないかな?
「GAEは不安定で使えない」、「GAEはお勧めしない」とかいう批判は出てくるんだけど、具体的な代案が出てこないんだよね。
Opera UniteってServletコンテナじゃないよね。
>>830 みんな何で動かしてんの?ローカルのTomcatで自己満足?
VPSでTomcatって出てきてるのはスルーなのか
Scala\(^o^)/オワタ
そもそもタダでServletを常時オンラインにしておける環境なんてものは基本的にない。
GAEは初期費用はいりませんてビジネスモデルなだけ。
843 :
838:2010/05/16(日) 00:11:09
>>839 VPSでTomcatって、かなり抽象的だよね?
具体的には、ググってみると
http://www.zone-express.jp/order このへんか?(宣伝ではない。たまたま日本語で読みやすかっただけ)
月¥2,600円(3ヶ月間限定¥1,300/月)
256MだからDBとか考えるとヒープは64mぐらいか。
うーん。運用するんだったら、もう一ランク上のプランか。
月5000円ぐらい払えば自由なScala環境が手に入るということだね。
また荒れちゃうかもしれないけど、貧乏性な俺はGAEで研究して、サービスもGAEでリリースすることにしよう。
VPSなら月額1200円年額12000円とかあるしな。
いまどき450円/月だよ
848 :
838:2010/05/16(日) 00:46:39
GAEを使う宣言したばかりなのだが、かなり安いVPSあるんだね。これなら小遣いから出せるかも。
stax.netはどうやって使うのか、いまいち、わからなかったが、scala liftという選択肢があった。料金が従量制のようだが。
GAEは知ってるのにVPSって聞いてググらないとわからない人いるのか
850 :
デフォルトの名無しさん:2010/05/16(日) 03:01:37
可用性のことを考えるとやっぱりGAE
852 :
838:2010/05/16(日) 10:51:10
>>849 >GAEは知ってるのにVPSって聞いてググらないとわからない人いるのか
俺に言ってんの?VPSの言葉の意味ぐらい俺だって知ってるよ。
VPSとGAEて言葉の抽象度のレベルが違うよね?GAEはGoogleが出しているサービス名だよね?VPSは各社が出しているサービスの総称だよね?
だから具体的じゃねぇっていったんだよ。分かった?
ググったのはServletが使えるVPSのサービスの価格を調べるため。
あーまた話がずれてきた。こういう発言は通常スルーすべきなの?
VPSの意味やっぱ解ってなかったようだな。
ここ最近スレの質が大きく下がったな
子供が触る言語じゃないだろうに・・・
Twitterに採用されたって報道されて荒らしに来た奴がいるんだろ。
> あーまた話がずれてきた。こういう発言は通常スルーすべきなの?
ごめんな。俺たちがお前をスルーすべきだった
matzはオブジェクト指向とか関数型以前に動的なことを重視してるみたいだから
話すだけ無駄だと思うんだけどな
動的言語原理主義なのにちょくちょくScalaの文句を言うのはどうかと思うけど
>ググったのはServletが使えるVPSのサービスの価格を調べるため。
VPSなんだから勝手にTomcatインストールすればいいだけだな。
メモリ128Mみたいな極端に少ないサービス以外なら普通に動くし。
しかしまたマイナーなサービス引っ張り出してきたもんだな。
ZoneExpressなんて初めて見た会社だわ。
Googleまた個人情報の不始末かよ
>>859 動的な言語ってそんなにいいかねえ
ちょっとスペルミスっただけでわかりにくいバグになるって印象しかないわ
今だと静的に型が決まる言語だと、IDEが発達しててスペルミスしても
赤く表示してくれるしね
それになれちゃうと、動的言語はとてもじゃないけど使えない
動的か静的かはもう宗教論じゃね
唯一神なのか多神教なのかみたいな
ちょっと前までは、言語オタク的には動的言語マンセーな流れだったけど
Eclipseが登場して流れが変わったな
IDEが静的言語のデメリットを覆して、強力なメリットを付加したからな
>862
テスト時間がコンパイル時間より長くなったりするしな
動的言語だと、適当に始めてリファクタリングしてって進めたいのに、
リファクタリングの面倒くささが、静的言語の比ではないってのが。
置換サイキョー
Dir.glob "*.jpg"
ってScalaでどうかくの
>868
たしかにglobは欲しいな。
たとえば、こんなかなぁ
def glob(pathStr:String, reStr:String) =
for {
file <- new File(pathStr).listFiles
if (reStr.r.findFirstIn(file.getName) != None)
} yield(file)
使い方はこう
glob(".", ".*\\.jpg")
f.listFiles.filter(...) のほうが好き。
Optionとmatchで次のコード実行したら変な挙動するんだけど、
つまりどういう事だってばよ
scala> val l = List("hoge","fuga")
l: List[java.lang.String] = List(hoge, fuga)
scala> Some(List("fuga","fuga")) match{
| case Some(l) => println("NG")
| case _ => pritnln("OK")
| }
NG
scala> Some(List("fuga","fuga")) match{
| case Some(List("hoge","fuga")) => println("NG")
| case _ => pritnln("OK")
| }
OK
むしろどう変なのかわからないけど、
matchの中のlはローカル変数になってるよ
比較したいならガードを使わなきゃ駄目
>>871 case Some(l)で、Someで中身がlと同じってのを書きたかったんだろうけど、残念ながら、これだと、
任意のSomeにマッチして中身がlに束縛される、という意味になる。意図通りのことを書きたいなら
scala> val l = List("hoge", "fuga")
l: List[java.lang.String] = List(hoge, fuga)
scala> Some(List("fuga", "fuga")) match {
| case Some(`l`) => println("NG")
| case _ => println("OK")
| }
OK
みたいにする必要がある(変数名の部分を``で囲む)。
バッククオート!そんな記法があったのか
for(i <- 1 to 100)
みたいな式で、INT_MAX 回よりも多くループを回したいときどうすりゃいいの?
Seq の実装上の制約で 1 to 100 で作られる Seq の要素数は INT_MAX 個を超えられないっぽいのだけれど。
Stream[Long] を使うしかないの? Project Euler の Probrem 3 で早速つまってしまった。
>>875 INT_MAX回を超えるようなループ回したい場合にStream使うと
ものすごい量のゴミが発生しそうな気がするので、性能考えると、
自前でIterableとかのサブクラス作った方が良いんではないかなあ。
RichLongにto無いのか。
>>876 なるほど、どうりで遅すぎるわけだ。
>>877 わかってるかもしれないけど、 RichLong に to あっても一緒のこと。
それで生成される Seq の要素数が問題で、要素の値が問題ではない。
>>878 遅すぎるって事は、やり方が間違ってると思う。
そこそこ古いマシンだが、Streamでも再帰でも20ms位で終わったよ。
そもそも、その問題の空間計算量はO(1)だから、Seqの要素数は関係ないよ。
>>875 自分ではProject Euler の Probrem 3をどうやってたかを見直してみたけど、
基本的には、
Stream.from(3,2).takeWhile(_ < limit).map(_.toLong)
ってやってた。
>>876 REPLで試してみると、どんなに大きなlimitでも一瞬で返るし、
(実際に必要なものしか生成されないはずなので)無駄は無いと思う。
√600851475143 < INT_MAXだから、Stream[Int]で足りる。
882 :
876:2010/05/21(金) 09:43:36
>>880 Procject Eulerの問題が実際にStreamで事足りるかどうかは
実際にその問題を解いてないからわからないんだけど、原理的には
Streamを使うと大量のゴミが発生する。というのは、Streamって
要は
hd: A
tl: => Stream[A]
みたいな感じのtailの部分が遅延評価されるリストになってるわけ
だけど、ここからn番目の要素を取ってこようとすると、このhdとtl
を持ったセルn個分のゴミが発生する。どっかの変数がうっかり
Streamの先頭を指していない限りガベージコレクタによって回収される
はずなので、メモリ消費量のオーダが即座にO(n)になるわけじゃないけど、
とにかく大量のゴミが発生する事は間違いない。もちろん、tl部分が
評価されなければそのセルは生成されないわけだけど、今回の話だと
ループをn回ぶん回すというのが前提だったようなので。
一方、Iteratorなら(適切にspecializedアノテーションが付いてる
事を前提にすれば)、ゴミはほとんど発生しない。ということが
言いたかった。
883 :
876:2010/05/21(金) 09:49:14
ちょっと追記。
>>880 の例
>Stream.from(3,2).takeWhile(_ < limit).map(_.toLong)
みたいな場合で、Streamの最初の方の要素しか使わないんだったら、
もちろん無駄な要素は生成されないので、Streamで十分というか
Streamの方が良いね。どういう問題だったかは見てないので、
それで良いのかは知らないのだけど。
884 :
880:2010/05/21(金) 11:20:56
>>882 なるほど、Streamの途中を欲しい場合は、
{そこまでの)不要なものがゴミとして生成されちゃうんだね。
確かに、
Stream.from(1).takeWhile(100000000).reverse.head
だと、OutOfMemoryになる。
ちなみに、さっきの
Stream.from(3,2).takeWhile(_ < limit)
だけど、Problem 3的にはlimitは√nのつもりだから
正しくは、
Stream.from(3,2)).takeWhile(_ <= limit)
です。><
あと881が行ってるように、
「√600851475143 < INT_MAXだから、Stream[Int]で足りる」ので
Streamを使ってProblem 3の答えはでるんだけど、
実際のところ
これって、本当にLong領域まで生成されるのか不安になってきた、
きちんと対応する場合は
Stream.from(3,2).map(_.toLong).takeWhile(_ <= limit)
なのかなぁ・・・?
Stream.from(1).map(_.toLong).takeWhile(_<=3000000000L).foldLeft(0L)(_+_)
を実験中だが、まだ処理が終わらない・・・
>>884 > Stream.from(1).map(_.toLong).takeWhile(_<=3000000000L).foldLeft(0L)(_+_)
> を実験中だが、まだ処理が終わらない・・・
それは桁あふれで無限ループになるよ。
俺も、Eulerでは良くやる……
886 :
880:2010/05/21(金) 15:30:24
>>885 あぁ・・やっぱり・・・
ということは、結局LongなStreamではないってことだね、
やるには、自前で作るしかないと。
せっかくなので、初めてIteratorを作ってみた。
こんな感じでいいのだろうか・・・
class LongStream(init:Long) extends Iterator[Long] {
var counter = init
def hasNext = true
def next = {
counter += 1L
counter
}
}
scala> new LongStream(0).takeWhile(_<=3000000000L).foldLeft(0L)(_+_)
res23: Long = 4500000001500000000
どうしてもStreamにしたければ、Stream.fromItaratorが使えそう。
>>886 Stream.fromの実装を見ると早いと思うけど、こんな感じになってる。
#実際はオーバーロードがあるからちょっと違うけど。
def from(n:Int) = Stream.cons(n, from(n + 1))
なんで、MAX_INTまでいったら、次のtailはfrom(MIN_INT)になっちゃう。
単純にLongのStreamが欲しいなら、次のコードで良いんじゃない?
def from(n:Long) = Stream.cons(n, from(n + 1))
scalaはbreakがない糞
scalaって、なんでtraitがclassを継承できるようになってるんだ?
たとえば、
class a{}
trait b extends a{}
みたいに。
でも以下のようになるとコンパイルエラーになるから、
もちろん間接的に多重継承をしようとしてもできないようになってるわけだが・・・
class a{}
trait b extends a{}
class c{}
class d extends c with b{}
いまいち利点というか、使う場面がわからない・・・
890 :
880:2010/05/23(日) 07:41:20
>>887 なるほど〜、その通りだった。
Stream深いな・・・
scala> def from(n:Long):Stream[Long] = Stream.cons(n,from(n+1))
from: (Long)Stream[Long]
scala> from(1)
res0: Stream[Long] = Stream(1, ?)
scala> from(1).takeWhile(_<=3000000000L).foldLeft(0L)(_+_)
res1: Long = 4500000001500000000
たまにドキュメントにでてくる
トランポリンってどういうときに使うもんなの?
>>891 Scalaでは、たとえば相互再帰する関数をStackOverflowすること
無しに扱いたい(末尾再帰にしたい)場合とか。2.8では
scala.util.control.TailCallsを使うと実現できる。
>> 892
ありがとうございます。
トランポリンは末尾最適化の名前?という理解で正しいですか?
末尾再帰で相互再帰を使っており、末尾最適化するときにトランポリンを使うということですか?
894 :
デフォルトの名無しさん:2010/05/24(月) 00:42:11
scalaはインタプリタとしても使えるようですけど、
liftのプロジェクトって mvn packageとかしてコンパイルしないと実行できないんですかね??
ソース変更する毎にコンパイルせずにそのまま走らせることできたらいいなと思うんですが・・
ScalaでLift以外のWebアプリケーションフレームワークでいいのある?
サーブレットで動かすのが前提の現状だと既存のFWのロジックを勝手にScalaで書けば?みたいな感じかな
Playとかそうだけど
コアの部分もScalaで再発明するメリットあんまないからね
ScalaがCGIで楽に動くようにでもなれば変わるだろうけど
898 :
デフォルトの名無しさん:2010/05/25(火) 01:16:56
>>◆ueEP8Ean2lqc
Scalaの本って厚すぎて・゚・(ノД`)・゚・。な感じに陥るんだけど。
もっとシンプルで簡潔に書いた読みやすい本だしてよ。
JavaScript: The Good Partsみたいな本。
170ページ1,800円くらいの。
あるよ
あるけどこのスレでその話しちゃ駄目らしいよ
公式サイトのドキュメントのpdf印刷で
いいじゃない
日本語が良ければ翻訳版かWeb連載記事の印刷で
>>898 このスレの 100から120くらいを読め。
内容は薄いので、1時間くらいで読めるぞ!
でも、本自体は厚い。
紙質が厚いから厚い。
文庫本サイズで600円だったら、買う価値のある本。
2.8.0 Finalまだ〜 待ちくたびれたぁ〜チンチン
(残念?) 2.8.0.RC3 キタ
905 :
デフォルトの名無しさん:2010/05/28(金) 17:12:53
906 :
デフォルトの名無しさん:2010/05/28(金) 22:51:03
ScalaよりもJavaScriptの方が関数脳になる近道じゃね?
>>906 本当に関数脳を鍛えたいなら
それこそ関数型言語が本筋だろう
909 :
デフォルトの名無しさん:2010/05/29(土) 00:25:56
だって敷居高いじゃん
910 :
デフォルトの名無しさん:2010/05/29(土) 00:29:52
結論:手続き型なOOで充分。
Schemeなら覚えるべき文法が少ないから、敷居も低いな。
912 :
デフォルトの名無しさん:2010/05/29(土) 21:58:35
Schemaとかカッコ多すぎてゲロ吐くレベル
スキーマ?
>>912 関数型言語向いてなさ過ぎだろ
Schemeやったら死ぬぞ
>>911 386アセンブラなら覚えるべき文法が少ないから、敷居も低いな。
そもそもSchemeは関数型じゃないし
本当の関数型は、HaskellとかConcurrent Cleanとかだな。
918 :
デフォルトの名無しさん:2010/05/30(日) 21:18:10
>>905 とちょっと違うけど自分もそのページの見てやってて、
4ページまで行ったんだけどコンパイルしてブラウザからアクセスしたら
Message: java.lang.NullPointerException
ってエラーが出ました。
コンパイルが通ってるのにエラー出るってどういうことなんでしょう?
Javaやったことないのでエラー文もよくわからないのです・・
ぬるぽがわからんやつには早いって
> コンパイルが通ってるのにエラー出るってどういうことなんでしょう?
これに少し感動。
初心者がこんな風に思う時代になったんだ
いや、Haskell使いかも知れん。
923 :
918:2010/05/31(月) 01:54:30
アドバイスいただけると嬉しいです。。
924 :
デフォルトの名無しさん:2010/05/31(月) 06:31:55
エラー名でググれ
>>918 値が入っていない変数に、メソッドを発行するとよく出るよ。
変数の初期化し忘れとか確認してみな。
Scalaでnull使ったら負けでしょ。
OptionかBox型を使うべき。
>>923 > アドバイスいただけると嬉しいです。。
codezine の記事書いている作者にメール送るのも手ですよ。
読者からの反応はうれしいものなんです。
yuroyoroさん降臨か
微妙にScala界隈の著名人が集まるスレになっとるな
Scalaの本売れすぎだろ
八重洲ブックセンター行ったらコップも入門も売り切れだったぜ
あっちの方の入門は残ってたけど
オアゾの丸善の方が良くない?
えーだって俺会社八重洲だもん
933 :
デフォルトの名無しさん:2010/06/01(火) 01:50:28
八重洲ブックセンターちょくちょく行くが売り切れとかありえんだろ
なんの自演だそれは
いやコップといい方の入門は先週は平積みだったのに今日行ったら1冊も無かったんだよマジで
売れないから返品されただけじゃないか。
昨日日本橋の丸善でコップ買ったよ。
あと3冊ぐらいあった。
オアゾは売りきれてたよ。在庫検索では。
なんで2種類だけそんなに売り切れてんの
工学社のも買ってやれよw
>>934 ブレークするような出来事あったっけ?
なんかいまいち、盛り上がりに欠けると思うのだが。
新人にjavaで何か新しいもんさわってみろ
でscalaという流れとか
androidとかgae/jとかもあるけどな
まぁ八重洲あたりはIT企業が多いからそこだけの地域特需かもな
オー○ックとかリク○ートあたりが採用したのかもしれんと妄想
941 :
デフォルトの名無しさん:2010/06/02(水) 12:09:45
liftでプリントデバッグに使える関数ってありますか??
printlnだとサーバのログには書き出せるんですがブラウザで確認するにはどうすればいいかなと・・
942 :
918:2010/06/02(水) 12:53:45
色々教えていただきありがとうございます。
ちょっとずつ分かってきましたがまだ疑問点があります・・
http://codezine.jp/article/detail/5103?p=3 ここのページの通り、
case class Event(
id:Option[Long],
name:String, description:String,
fromDate:Date, toDate:Date, place:String,
join:Long, count:Long, user:User, members:List[User] )
が定義されているのですが、
entityValueメソッド
-----定義-----------
def entityValue[T]( e:Entity, name:String ) =
e.getProperty( name ).asInstanceOf[T]
--------------------
を使って、のちに
entityValue[User]( e, "user" ),
entityValue[JList[User]]( e, "members" ).toList
(eはgoogle app engineのEntityクラスオブジェクト)
などとしているところがありまして、ここの
entityValue[JList[User]]( e, "members" ).toList
の部分でmembersプロパティに値がなかった場合、entityValue関数内の e.getProperty( name )で nullが返ってきて
null.asInstanceOf[JList[User]]
が実行され、
java.lang.NullPointerException
となるようです。
(分けます・・)
943 :
918:2010/06/02(水) 12:55:58
しかしエラーが出る上の行の
entityValue[User]( e, "user" )
では、たとえuserプロパティの値が空であったとしても、
entityValue関数内の e.getProperty( name ) でnullではなく空文字が返ってくるようで
"".asInstanceOf[User] となり、この場合はNULLエラーにならないようです。
userプロパティ、membersプロパティ共に値が空であることには代わりが無いのに
e.getProperty("user")では空文字列が返り、
e.getProperty("members")ではNullが返ってきてしまう理由がよくわからないのですが、
これはなぜなのでしょうか?
[User]と[JList[User]]の違いなのか、それとももしかするとapp engine sdkの仕様なのでしょうか。
度々質問ですいません。アドバイスいただけると嬉しいです。
blogの話題解析ページ見ると、"scala"で4〜5月に大きな盛り上がりの山があったようだ。
Software Design誌の影響?
945 :
デフォルトの名無しさん:2010/06/05(土) 09:39:31
はてなで話題になったからだろ
想像以上にひどい提灯記事w
AKBヲタかよw
頼むから公表しないでくれマイナス要因になるから
握手が生き甲斐でプログラム組んでると思われるぞ
ベリーずからAKBに乗り替えクマー
もうGOと一緒でScalaも下火だな。
D言語まっしぐらだわ。
そもそも、ScalaとRubyは比較対象になるのか。
使い道が違うと思うんだけど。
>952
上記エントリから関連記事を辿るとさんざん指摘されてる。
動的言語と静的言語は違うからな。
もともと静的言語が好みで、しかしJavaみたいに煩雑な記述はしたくない、という話だろう。
まあ、そういう層は潜在的に多そうに感じるけど。
逆にJavaからRubyへって本だと静的言語終わったこれからは動的って書いてあるから
お互い様だよそこは
scalaとrubyって使い途ちがうの?
同じだよ
ていうかScalaが動的型付け言語の中ではRubyにかなり似てるからじゃね?
SS本の中でもやたらRubyとの比較がでてくる
じゃなければ普通PHPやPythonと比較するだろう
Twitterがらみで比較されてんじゃないの?
全然似てないよ
ただ単にあの人がrubyの人だったってだけじゃない。
pythonと比べても大してかわらん。
scalaはユニークだ。
ちなみに>961の著者は>954の著者だとおもう。
ちょっと次スレ立ててくる
964 :
963:2010/06/07(月) 15:27:28
965 :
デフォルトの名無しさん:2010/06/09(水) 23:39:19
rubyでいうところのDatetime型ってScala/liftではないんですかね?
Dateならあるみたいなんですが・・
えっ
みんなJoda Timeとか使ってんの?
俺もJavaのライブラリあんまよく知らないんだけど
こうやっていちいち調べなきゃいけないのが面倒くさいよね
ふつー、Joda Timeじゃないの?
java.sql.Timestampでも使ってろよw
スレ違いだろうが他に聞けそうなところも無いので聞かせてくれ。
Scala 向けのテンプレートエンジン Scalate を
http://github.com/scalate/scalate/tree/scala_next から DL してきてsbt か mvn でビルドしようとしている。
どうやら CLASSPATH に jar が追加されていないようで、
コンパイルに失敗する。
どうしたらコンパイルド通るの?
ってか、Scalate のソースから一発でまともにコンパイルできた
覚えがないのだけど、そういうもんなの?
Scalate の公式に載っている通りだと思うのだが、俺の手順がいけないの?
全然スレ違いじゃないけど多分答えられる人もいない気がする
>>970 よくわからんが
mvn -Dtest=false install -Pdownload
でいけた
>>972 やってみたら、だいぶエラーが減った。次の 1 つだけになった。
(略) scalate-core/src/main/scala/org/fusesource/scalate/filter/MarkdownFilter.scala:19: error: value petebevin is not a member of package com
[INFO] import com.petebevin.markdown.MarkdownProcessor
[INFO] ^
[ERROR] one error found
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
だけどやっぱり CLASSPATH に追加されてない気がする。
974 :
965:2010/06/12(土) 13:14:03
ありがとうございます!
975 :
デフォルトの名無しさん:2010/06/12(土) 14:01:24
liftのShtmlとStatefulSnippet ってどう違うんですかね?
>>973 ウチじゃコンパイルエラーは出ないな。テスト通らないけどな!
>975
むしろ、何が同じなの?
2.8は、何でこんな難航してるの?
大幅修正があったものをイベントあわせで、リリース候補にしたように見えたから、
RC3が本来のRC1ぐらいなんじゃね?
We are now getting really close to the final release! って、大きなバグ無ければ最終候補かな?
>>980 たぶんそうだろうねえ。Scala DaysでRC1出すために
スケジュールが前倒しされてるのだと思う
本来よりも差し引いて考えるべきだろね
RC4キタと思ったら、即座にRC5がきた。