前スレがいつの間にか埋まってたので立てといた
ノ ゚.ノヽ , /} ...
,,イ`" 、-' `;_' ' ..::::::::::::::...
,-、 _.._ ( (,(~ヽ'~ ..:::::::::::::::::::::::
)'~ レー' 〉 ヽ i`'} .:::::::::::::::::::::::
~つ '-ー、 i | i' ...:::::::::::::::::::::::
/ < / 。/ ! ......::::::::::::::::::::::::: これは
>>1 乙じゃなくて
/ ~^´ /},-'' ,●::::::::::::::::::::::::::::::::::::
i、 ,i' _,,...,-‐-、/ i :::::::: .:::::::::::::
..ゝ <,,-==、 ,,-,/ .::::::::::: 放射能がうんたら
) {~''~>`v-''`ー゙`'~ ..::::::::: ........::.
{ レ_ノ ..::::::::. ......:::::::::
ノ '' ..::::::: ...::.:...:::::::::
.::::::::: ...:......:::::::::::: .
.:::::::::::. ..... .. ..:::::::::::::::::::::::: :::.
::::::::::::::::.::::::....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.. :: ::..
.:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::: ::.
::::::::::::::::: :::::::::::::::::::::::::::::: :::::
.:: ::. :::
凄く基本的なことを聞くんだけど scala+Play framework2.0で作ったサービスを公開するには どういう鯖を借りればいいんだ? javaが動けばどれでもいいんでする
お手軽なのは平六かな
枯れているけどナウくないDbUtils 枯れてないけどナウいScalikeJDBC JDBCのラッパーはどっちがええの?
そもそもJDBCのラッパーって必要なのだろうか… RDBMSとは文字列と数値のやりとりしかしないんだし
トランザクションなどを上手く抽象化したいというのはあるな。
jdbcの不完全な点はリゾルトセット取得後もコネクションを保持していなきゃいけないことだ。 これさえ解消されてれば自作ラッパーを作る必要も無かった。
>>6 まあ、Herokuは開発者に対してrootアクセスを提供しない代わりに色々なサービス(freeプランのは大体制限がきついけど)をaddonとしてコマンド一発で
インストールできるし色々な雑務から開発者を解放してくれるよというものだしね。その代わりにHeroku特有の制限を色々受け入れなきゃいけない
し、Herokuへのデプロイは遅いしとまあ別の苦労を背負わされることでもある
自分で作ったサービスをとりあえず手軽にデプロイして公開したいならHeroku自体は悪くないんじゃないかな。デプロイ作業は確かに簡単だし
リザルトセットは必要な行をとっととフェッチしてなるべく早く閉じるのが鉄則。 なのでコネクションを保持云々の不満が起こる理由がよく分からん。
レコードが少ない場合はそれでいいけど,そういう状況ばかりじゃないんだよ。
scalaのprotected[this]ってrubyのprivate相当なんだな 使いやすいと思うんだけどあんまり話題にならんね
逆にどこに話題性が?
「このフィールドはサブクラスにはインスタンスの外からアクセス出来るようにしよう」なんてケースあんま無いんだから protectedを使う事は大分少なくなるんじゃないかと思うんだが
いつ使うんだよ
普通に上位クラスの実装を下位のクラスでも利用させたいとき 普通のprotectedだとインスタンスの外からアクセス出来ちゃう可能性があるけど そんな意図が無いときはprotected[this]でいいんじゃないかと
rubyのprivateがprotectedになってるのって 実装の都合上とかで仕方なくそうなってるんじゃなかったか
Matzもどうしてそうしたか忘れてると言ってた
ArrayとListを比べると生成時に使うコストがListのほうがはるかに小さいことはわかったんだけど、他はどうなんですかね。 調べてもよくわからないので教えてください。
ListとSeqの使い分けについて、誰か語ってくれ。
Scalaのコレクション周りは秘境
canbuildなんとかを理解したと思ったら翌日には忘れてる
Listは不変だから部分が共有されるからArrayより速いの? それとももっとローレベルの話ですか
可変Listは?
Listはリンクリストだから固定長かつ不変の時は一般にメモリ消費も速度もArrayBufferに劣る
Arraybuffer使っときゃいいの?わけわからん
>>22 関数の引数は基本全部Seq型にしてる
でも戻り値の型もSeqになってしまって、元々の型情報が失われるのは不便
canbuildfromで頑張れば何とかなるみたいだが俺の頭では理解不能
コレクション+わかりやすく豊富なコレクションメソッド+第一級関数=最強
.filter()にブール型の関数を渡すというのは割と衝撃的だった
言語設計者の意図をくめば、ListよりもSeqを使うようにした方がいい。 何故なら、名前が1文字短いから。 ユーザにどんどん使って欲しいからこそ、SequenceでなくSeqにしたに違いない。
Scalaを学ぶには、言語設計者の気持ちを理解しなければならない…!!
actorオブジェクトのフィールドにスレッドセーフじゃないもの持たせても大丈夫? java.sql.Connectionなんだけど insertに結構時間かかるから非同期にやろうとしてるんだけど
自分が気を付けてれば問題ない 処理速度とかは知らんけどな メッセージで送るのはイミュータブルなのがいいよ
> To successfully use Scala, you need to research the language > and have a very strong opinion on which parts are right for > you, creating your own definition of Scala, the good parts. Scalaを上手く使うには、Scalaの良いパーツを自分で定義しないといけない
何だその訳w
39 :
デフォルトの名無しさん :2014/01/31(金) 00:09:29.86
scalaってもっとマシな構文にすりゃ流行ってたんだけどね javaとrubyをセンスのないバカが混ぜて作りあがったカオスがscala
>>37 マルチパラダイム言語をうまく扱うには、
領域に合った適当な部分言語を考えておかないといけないんだけど
でも結局人のコードを読むことを考えると、言語全体を把握しておかないとダメっていう辺りは
C++と似たような状況になるのかなあと
C++の場合はマルチパラダイムに加えて互換性の制約があるからもっと難しいはずで
そういう意味ではScalaはまだマシだとは思うが
scala始めようと思ったけどひき返そうかな。こんなぼくにはpython辺りがよいでしょうか?
プログラミングから引き返せ
SQL>PHP>Java>Ruby>Python>c>>scala
そもそも言語を選ぶ時に仕様書のページ数なんて気にする人間はほとんどいない
CやC++も大概だし、Schemeの倍って考えると意外と小さいな
仕様書が少ない!じゃあこの言語をを使おう!って人間がこの世にいるとは思えないんだが
だっておまいらがページ数で脅かすんだもん。
し、仕様書オバケが出たー!
scalaで自分が作った関数をprintln()などのように何もせず使えるようにするにはどうすればいいですか?
何もせずっていうのがちょっとひっかかる言い方だけど パッケージオブジェクトに置くか、もしくは 例えばobject A { def println() = {略} }って定義ならimport A._とかimport A.printlnすればいいよ
ありがとうございます。
scalatra使ったwebアプリをeclipseで開発したいけどどうしたらええの
Scala IDEは、いつになったら、呼び出し元一覧とか出せるようになるの?
60 :
デフォルトの名無しさん :2014/02/05(水) 21:35:39.76
お前らケース文教えて それか、vipにプログラミングスッドレ立てて case classの変数マッチ case Class(1, a, b)みたいのって どう実装されてるの? 冗長な引数があったらダメなの?例えば、角度で370度と10度は同じ意味ですみたいな
ガード式使えばいけるやろ。 case figuare(_, angle) if angle ==10 || (360 - angle) == 10 とか
angle % 360 == 10 二番目の条件はこうだったわ
常にそういう性質持たすならunapplyを自分で実装するか
身も蓋もない言い方をするとそんな入力値は無効だな。前持って正規化すればいいんじゃないのか。(そういうことではない)
並列コレクションが有効な場面と無効な場面がよくわかりません 例えば、元々あるコレクションに対する演算ではどのようなものが高速になるのですか? ソートなどでは意味がありませんよね?
並列コレクションが有効と確信できる場合以外は無駄だと思った方が良いよ
並列コレクションってそんな難しい概念かぁ? 何でこんな質問が来るんだろう
>>65 並列コレクションはコレクションに対する演算を並列化するんじゃない
foreachを並列実行する、ただそれだけ
各要素に対して完全に独立した処理を行うのに使う
C#/VBのParallelEnumerableと全く同じ概念だからそっちの情報を参照した方が分かりやすいんじゃないか あっちは変に気取ってないからな
並列コレクションのどこに気取る要素があるんだよ
71 :
デフォルトの名無しさん :2014/02/07(金) 01:33:57.50
どうでもいいことにいちいち新しい名前を与えたがる それで覚えることが増える。凡人のやること
actorモデルが一般化されたりするのかな オブジェクト指向m9(^Д^)プギャーみたいな
Actorって、今までスレッド使ってた箇所全てで、Actorに置き換え可能なの?
>>73 可能だけどループは再帰で置き換え可能ってのと一緒で
メンタルモデル的なのが違うから置き換わらないと思う
75 :
デフォルトの名無しさん :2014/02/08(土) 04:42:10.92
書き込むスレが不適切かもしれませんが御教授ください。 失敗する可能性のある関数failable: A ⇒ Option[A]があり、 それを最初の引数x: Aから漸化式のように連結させ、 List(failable(x).get, failable(failable(x).get).get, failable(failable(failable(x).get).get).get, ...) と任意の回数*もしくは失敗するまで*続かせるリストを作る関数はどのように定義すればよいのでしょうか。 末尾再帰やscalazのKleisliを利用したreduce(>=>), Iteratorの実装なども考えましたが、いまいちどう書けばよいのか分かりません。 この場合どのように書くべきでしょうか?
rubyなら簡単に出来る def ary n , h return h if n == 0 ary n-1 , ->{ h.call } end p a = ary( 3 , ->{ "a" } ) p a.call
>>75 逆順のリスト作って最後に反転させるような書き方なら普通に書けない?
78 :
デフォルトの名無しさん :2014/02/08(土) 12:39:53.03
>>75 Streamでやれば?
def failable(x: Int) = Option(x + 1)
def hoge(x: Int): Stream[Int] =
failable(x) match {
case Some(r) => r #:: hoge(r)
case None => Stream.empty
}
hoge(0) take 5 foreach println
>>75 Itarator版
def f[A](a: A)(failable: A => Option[A]): Iterator[A] =
Iterator.iterate(failable(a))(_.flatMap(failable)).takeWhile(_.isDefined).map(_.get)
>>75 Scalaz
import scalaz.std.stream._
import scalaz.syntax.id._
def f[A](x: A)(failable: A => Option[A]): Stream[A] = unfold(x) { f(_).map(_.squared) }
81 :
80 :2014/02/08(土) 14:34:11.94
f(_) は failable(_) の間違い
scalaz勉強しようと思ったらやっぱり公式ドキュメントとソース眺めるくらいしか方法ない?
ScalazはHaskell勉強したほうが早いのでは
scalazって何? scalaとはまた違うの?
scalazっていうただのScalaライブラリの名前だよ
へー、何か凄いんです?
ちょっと便利な関数とかいろいろ詰め合わせましたみたいな感じのライブラリ
89 :
75 :2014/02/08(土) 18:25:53.11
みなさんありがとうございました。
>>78 ,79,80を見て勉強しようと思います。
スカラ座
class A protected () object A { def make(): A = new B } class B protected () extends A これできないけどなんでなの?コンパニオンオブジェクトからコンストラクタにアクセスできない?
scalax.io って、もう終わってるって事でいいの?
そもそもscalaが(略)
始まってすらいないから!
始まってもないのに終わった言語ということか
>>91 基本コンストラクタをprotectedにしたんならB自身とそのサブクラスからしかnewできんよ
object Aとclass Bは何の継承関係にもないじゃん?
結局、I/Oは、どのライブラリ使えばいいんだよ?
javaのCommonsIO
他にもJavaから引っ張ってきたほうがいい、そうせざるを得ない機能ってある?
scala製ライブラリはまだ数が少ない 文字コード判定ライブラリとかjavaのものしかない
暗号関係とかDBとか
>>92 2年間放置されてる?
今は、Java 7 NIO file APIベースがいいと思うんだけど
javaライブラリの知識はもしscalaが消滅しても無駄にならないので 枯れたjavaライブラリをなるべく使うようにしている
106 :
デフォルトの名無しさん :2014/02/16(日) 12:56:53.81
こんにちは。ここで質問させてください。 外部から提供されるクラスAがあり、それをこちらのクラスBが使用している状況です。 さて、クラスAはネットワークライブラリの一部なため、動作が複雑でテストに不便です。 テストのためdependency injectionの手法を使い、クラスAをダミークラスDummyAに置換したいと考えています。 まず継承を使おうかと考えたのですが、そもそも外部のクラスは継承させることができません。(1) (1) trait ALike { ... } // 必要な機能をまとめたトレイト class A extends ALike ... // ←外部クラスだから無理 class DummyA extends ALike... def task(a: ALike) = ... そこで、あらゆるクラスを横断的に処理できる型クラスを導入してみようかと思ったのですが、 インターネットで調べてみたところ、*型クラスが実装されている型を引数に取る処理しかできない*(2)ような書かれかたがなされています。 (2) implicit class HogeHoge extends TypedClass[A] { def hogehoge(x: A) = ... // ここ。hogehoge(message: String)で受けて内部でAを使いたい } この場合どのように書けばよいのでしょうか?こういう用途では型クラスは使えないのでしょうか? 質問が分かりにくくて申し訳ありません。簡潔に書くと、 * importした外部のクラスと内部のダミークラスを交換し、クラスBのコンストラクタ経由でのDIを行いたい * 具体的には副作用のある「ネットワーク上のホストをあるリストに追加する処理」をするクラスを「リストに追加したふりをしてくれる自前のクラス」に交換したい よろしくお願いします。
トレイトALikeを実装したAdapterをAに噛ませれば AdapterとDummyAが交換可能になるはず
真面目な奴ほど、一年に一つ新しいプログラミング言語を覚えよう、とかいうのを 真に受けちゃって、やっぱり今は関数型言語だよね、Scalaって奴がなんかすごいらしい、 とオーム社の買って、カリー化あたりで良い加減面倒になって、新しい発想が身に付いた、 とか勘違いしてるけど、結局やってる仕事や書いてるコードに何も変化はありませんでした、 となってしまうのかな?
ふと思い出したけど、カリー化ってあんまり使われてないな。 他の関数型言語と違って、括弧分けるところがイケてないからか。
あれ?カリー化する関数みたいなのなかったっけ? 単純にJavaとの相性がよくないからだけな気がする。 カリー化するとJavaから使いにくいから。
そんな個人的な意見を取り上げられてもな ホスト言語のコードを直接埋め込むタイプなだけだ 専用言語ならデザイナーフレンドリーなのか? そんなもん馬鹿げた思い込みだ
> 私が英語を読めていないのかもしれないけど、個人的にはこの感覚はあまり共有できていない。表も Scala でもいいんじゃないかと思う。 これと同意見なのかな?
カリー化より部分適用の方が簡単だから使われてない感じがする
そういや、play1はGroovyテンプレートだったけど、ドワンゴのは別物なのかな?
何人かそれなりにScalaに熟練した人に話を聞いたけど、 Play標準のテンプレートエンジンはだいたい評判が良くない気がする 自分で使ってみた感触としては、@の挙動がわけわからんというか、 あんまり思い通りに書けないというか……
spring mvcより、playの方がメジャーなの?
Scalaの時点でアレなんだから自分が気に入ったのを使え
再帰呼出をしないメソッドでも、最後の行以外での途中returnは推奨されないんですか?
>>121 途中のreturnが必要なほど長いメソッドはなるべく書かない
>>122 長さって関係ありますか?
def hoge(): Moge = {
if (isA) {
return a
}
if (isB) {
return b
}
return o
}
>>122 というような、視野を短く切るためのreturnです
途中送信してしまった
def hoge(): Moge = if (isA) a else if (isB) b else c
それreturnいらんやろ
手続き型プログラミングと関数型プログラミングの違いかな 個人的には関数型プログラミング言語なんだから関数っぽく書きたいが、 if式の連鎖は分かり難いのでこんな感じにしてる: def hoge(): Moge = (isA, isB) match { case (true, _) => a case (_, true) => b case _ => o } 拡張性が要るならListにする
「視野を短く切る」とか言ってる時点で実際はもっと長いメソッド書いてるんじゃね
>>127 むしろifより読みづらいし書きづらいんじゃないかw
条件の数が多くなると大変だし
どうせmatchを使うならこれでどうか? Lisp系のcondみたいな感じで
() match { case _ if isA => a;case _ if isB => b; case _ => o }
うん、それは無い
>>128 >>124 です
Java畑ですが「1メソッド20行以内」はなるべく守ってますよ
だから先の例のifブロック内が複雑だとしたら、1ブロック毎にメソッドに切り出したりしますよ
もし2択で済むなら三項演算子使いますよ
他にはなんだろう、ネストを浅くしたいとかもあります
周りに関数型言語やってる人いないし、ベストがよく分かんないです
ループを末尾再帰で考えるってのは、出来てきた気がします
ラムダ関数をよく使うので どこへのreturnなのかがわかりにくいので使いたくない
むしろreturn非推奨って誰が言い出したの?
関数型プログラマ
実際ほとんど使わないよねreturn
>>131 関数型言語ってHaskellしかまともに触った事がないんだけれど、
Haskellではifは関数なので必ずelseが必要だったから、それと同様に必ずelse書いてる。
あってる間違ってるは分からないけど、ifにelse付けてる限りはreturn要らない感じはする。
あと単純なifでもついついmatch使ってしまう。
Haskellのifは関数じゃないぞ
純粋関数ならいいが、副作用の後のreturnを省略するのは マジで気持ち悪いしわかりにくいからやめてほしい
ifは関数というよりも演算子かなぁ
まあ演算子も関数だから間違ってないね
Haskellのifは構文であって関数でも演算子でもないぞ
Haskell文法的には式扱いだったはず 意味論的にはλ計算がベースだから全部関数だーとか言い始めたら まあそうかもしれないけどあんまり実入りのない議論に……
statmentではなくexpressionなので個人的には文より式の方がしっくりくる
144 :
デフォルトの名無しさん :2014/02/24(月) 18:17:06.06
C、Objective-C、ruby、pythonをやってきたんだが javaやらずにscalaって難しい? 入門書いくつかチラ見したがjava経験者向けに説明してる感じで焦った java未経験者におすすめの本とかないかな?
そんだけやってきたならJavaなんかサンプルコードをしばらく眺めたら十分理解できるはず 悩んでる暇があったら一時間で十分だ 身構えるようなことではない
Javaをやってないならscalaなんか何一つうれしくないだろ
遅くないRuby感覚の言語としては価値がある まあ結局何をするにもJavaの情報に頼るから、Javaが読めないとまず何も作れないし Java由来の妙な部分が受け入れられなくてクソ言語に感じるだろうね
コップとかならJava知らんでも理解できると思うけど、いざ運用しようとなると無理だろうな
>>144 CやらずにObjective-Cって難しい?
>>149 Objective-Cでもポインタからは逃げられない
java知ってるほうが嬉しいよね javaではくっそめんどくせぇのにscalaだと楽だなって感じで
javaからそのままscalaに行くとそうでもないけど、 途中にCとかhaskellとかが入ると、scalaの起動の遅さにイライラする
scalaの起動って何のこと? それはそうとjava知ってるとscalaに限らず大抵の言語が素晴らしく感じる でも今からjavaを知ることになる人は不幸だと思う
scala と scalac と scalaのload が遅い
ScalaはJava使いにとっては最高の関数型言語なんだと思う 近い将来、ScalaがJavaを置き換える存在になるという言葉も、 その可能性を(個人的には)認めたい ただし逆の見方をすれば、Javaを使っていない人から見ると 関数型言語としてのScalaは魅力に欠ける
javaはマジでクソ言語。 c#とか似てるって言われるけどjavaと同じって言われるなんてc#が可哀そう
多分関数型言語で一番無難なのはocamlな気がする 構文は冗長だけどhaskellよりはだいぶ敷居が低いと思う 個人的にはschemeが覚えること少ないし簡単だと思うんだけど 人に進めてもlispってことで拒否感出す人も多いからな。。
ocamlは構文がフランスすぎるから駄目
schemeは関数型言語っていうかlispだろ
ocamlはutf-8が標準じゃないのできつい。 GUIも作りにくいし 実用をためらう なのでocaml使うならF#だわ
f#はライブラリとideとguiの作りやすさが関数型言語だと最強レベルになりそうだけど unix環境じゃ流行らなそうなのが気はする
unix環境で実用を考えるならScalaで満足している。 windowsでもScalaで満足しているけど。 ToyならHaxeかなぁ 使ってみたことないけど
163 :
デフォルトの名無しさん :2014/02/25(火) 23:44:41.70
>>161 ありがとう!
ウチはMacだが早速F#拾ってきた。
Scalaは1.7,1.8のJavaでトラブルだし
そろそろ見切り時かもだった。
ClojureがML系だったらなあ いくら闇鍋ScalaよりずっとクリーンでもLispじゃ普及は望めないよね
lispはいい言語だけどバカに使わせるとゴミみたいなコードになる でもポール・グレアムみたいなlispのすごい人は少数のハッカーでやるのが良いって言ってるし clojureの開発陣も門戸広げてバカが来ることなんて望んでないんだろ
Lispは再起の勉強にはイイ言語だけれども、 状態遷移の塊でしかないという現実を反映していない
なんだそりゃ……
こいつはPure Lisp原理主義者だ!
LISPは解散しました
破壊的代入のできるLispはともかく、 代入できない純粋関数型のHaskellとかでも状態遷移は表現できるんだよー
時間積分を使うシミュレーション(ゲーム含む)を関数型で作るなら やっぱり漸化式の形で書くことになるの? それだともうほとんど関数型の意味ないね
漸化式って再帰ってことか? foldで抽象化できるじゃん
>>170 状態がないのに状態遷移が表現できるってのは
哲学的というかメタ的というか
日本語でも英語について語ることができますみたいな
そりゃそうかも知れないけど
日本語で語られる英語って英語なの?みたいな
つ再帰関数、不動点コンビネータ すべての状態遷移は再帰で表現できますよ〜ペアノにより自然数の定義とか
>>173 あたかもプログラミング言語上は
状態を書き換えていないかのように振る舞うというだけであって、
実際上は、状態にあたるメモリを書き換える代わりに新しい所に書いてるだけ
なにしろ最終的には、機械語の命令列とメモリの読み書きにしないと計算機上で動かんので、
この手の変換はJVMも含めてありふれてる
自然言語的な混乱とはぜんぜん違う話だと思う
でそれが関数型なのか?ってことでしょ そういう理屈なら全ての手続き型は関数型と見做せることになるよ
それが「モナド」。(純粋)関数型言語の上に、手続きというモデルを再構築したもの。
オブジェクト指向の機能を使ったからオブジェクト指向だ! とか抜かしてるよくいるバカと一緒だな
Scalaだと関数型意識してクラスもイミュータブルにするん? 面白そうだけどクラスタ構成するような規模じゃないと意味無さそう
>>179 case class って書くと勝手にイミュータブルになるしあまり気にした事がないなぁ。
凄い人たちはちゃんと気にしてるんだろうけど。
モナドはオタク的自己満足のために余分なレイヤーを重ねているだけという印象が強いな ミュータブルはオブジェクト指向、イミュータブルは関数型でまとめたocamlの方が素直に思える。
外部の実行ファイルをプログラムに同梱し、その同梱ファイルを実行した結果を取得するということは可能でしょうか?
何故このスレでそういう質問をするのか謎 他にふさわしい場所いくらでも有るだろうに 実行ファイルをテンポラリに書き出して実行すればいいだけじゃね
普通に考えてScalaでやりたいからじゃね? 可能かどうかで言うと可能だし、やり方はいくらでもあるけど、 どういう状況でもっと具体的に何がしたくて、 何で詰まってるか分からないとアドバイスは難しいよね。
おそらくコプロセスの標準ハンドルをどうこうしたいということだろうけど javaで探したほうが早いな。
>>113 playは大分前に少し勉強してみただけだから詳しくは言えないが、.netのrazorの場合、vsの補完が強力で@を変に使ったらその場で警告が出るので、razorの文法を理解してなくてもなんとかなる
禅の心でコーディングすれば、VisualStudioなんて不要
好き嫌いはともかくVisualStudioのIDEとしての完成度の高さはやっぱすごいと思う
好き嫌いはともかくJavaの業務系での実績の多さはやっぱすごいと思う 「好き嫌いはともかく」と付ければ何とだって言える 結局人間ってのは好きか嫌いかだ
自分で作って自分で売るんじゃない限り好き嫌いなんかどうでもいいだろ 生産性の低い言語を使って困るのは客や会社であってプログラマじゃない
好き嫌いはともかく中国は島国だと思う ほんと?
むしろ好き嫌いはともかくとつけると言えること狭くなるような
194 :
デフォルトの名無しさん :2014/03/01(土) 04:58:10.34
このスレは母国語も危うい馬鹿しかいないのか?
>>189 において「好き嫌いはともかく」ってのは補助的な役割しか果たしていない。
メインは「すごい」と「思う」だよ。
具体的な数値を提示しなければ何とでも言えるし、評価の指標を設定することすら難しい内容。
それに加えて「思う」の主格がないために「一般的に思われている」との錯覚を与えている。
「好き嫌いはともかく」ってのはそれを強化しているに過ぎない。
好き嫌いはともかく日本の政治家はリーダーシップがあると思う
好き嫌いはともかく地球は太陽系で最も美しい星だと思う
好き嫌いはともかくアキバ系アイドルは可愛いと思う
好き嫌いはともかく2chの運営は優秀だと思う
主格がないために「一般的に思われてる」との錯覚を与えている(キリッ
お疲れですねw
そういう中身の無い議論はHaskellスレで頼む
haskellスレ荒れすぎて辛い
junitでscalatraのテストのやり方教えて
ScalaTest, Specs2, ScalaCheck じゃだめなんだよね。一応確認
junitやないとあかんのや 馴染みのある奴やないと嫌やねん
ツール連携ができなくて無理とかそういうんじゃなくて 馴染みがあるとかそういうレベルの話なの むしろよくその状態で Scalatra や Scala に手をだそうとしたなと感心してしまう
むしろ実在するかも疑わしい人物像を作り上げて感心してしまう 202の想像力に感心してしまう
というかJavaとの親和性が魅力のScalaのスレで 「馴染みがある」を軽視する発言はどうかと
>>182 この件、やっと自己解決したよ。
Artifactoryのリモートリポジトリ設定で、"Suppress POM Consistency Checks"をオンにすれば、
Scala用の、パスにコンパイラバージョン番号が入るJARファイルでもエラーにならなくなる。
エラーログは出まくるけど。
scalaはjavaみたいに書けるけどjavaみたいに書くとダサイとか言われる謎言語だからしょうがないね
>>204 Javaとの親和性は、1からすべてのライブラリをScalaで作らなくてもいい、段階的にでも移行できるって話だ
すでに Scalatra/Scala と親和性の高い test framework があるのだから、そっち使ったらどうなのってだけだ
そっち使ったらどうなのって「だけ」で 人を小馬鹿にするからつっこまれたんじゃ?
まぁでも>201はJavaやってた方が幸せだと思うけど
Scala extends Java
eclipseのScala IDEってどれくらい進化してるん?
>>211 諦めて、 IntelliJ IDEA使うよろし
>>212 UIが不安定なイメージが・・・
とりあえずJavaソースと混同してもリファクタリングがちゃんと働いてくれるのが理想なんですが
def using[T <: {def close()}](x:T)(f:T => Unit) = try { f(x) } finally { x.close() } こんなのやりたいんだけど構造的サブタイピング使うと遅くなる?
Structural Subtypingはリフレクションの機能使って実装されてるからその分のコストはかかるよ
intellijはuiがjavaだからもっさりなんだよな ネイティブのuiと違和感大きいし
同じ理由でNetbeansも苦手だわ
IntelliJはそこまで重くない気がするけど、 文字列リテラルにも補完をかけようとするのか、ガクッと遅くなることはある あとデフォルト設定だとカーソルが浮くのとか、細かい部分が積み重なって 微妙な不快感につながってるのかも とはいえ、ベースが売り物なだけあって完成度は高いと思う
貧弱ゥ、貧弱ゥ
InteliJはリファクタリングの動作が安定してて良いよね 特にメンバ変数名変えたときに、名前付き引数使ってる部分をちゃんと追従してくれる でも、名前付き引数って内部ではデフォルトコンストラクタ後にsetter使ってるだけだから EclipseGroovyではwithで代入するようにすれば良いだけかも
でもIntelliJはモジュール間(Eclipseのプロジェクト)で リファクタリング反映してくれないのが
ルックアンドフィールがおかしい ファイル選択ダイアログとかJavaでUI作ってるのまるわかり
IntelliJは、UIはアレだが、実用性が高い。
プロジェクトの感じ苦手なんだけどみんなはどうなの? sbtでゴリゴリやってたりするの?
ScalaはIDEに完全に管理されて補完がバリバリ動いてこそだろ Scala自体はともかく、Javaのゲロみたいなライブラリを補完や動的チェックなしで使うのは苦行
scalatraってservletのラッパーだから サーブレットの機能も使える? WEB-INF/web.xmlにフィルタ追加したいです
229 :
デフォルトの名無しさん :2014/03/12(水) 20:41:55.44 ID:WNHX0k15
The outer reference in this type XXX cannot be checked at run time. この警告ってどういう意味ですか?
Play! framework 2.2.3で開発してるけど、リクエストのエンコーディングがUTF-8で決め打ちになっているのが困る。 SJISのリクエストが来ても正しくエンコーディングできない。 リコンパイルするしか対処法はないのかなあ。PaaSとかにデプロイしたいからあまりPlayには手を加えたくない。 たいていのPaaSは標準のPlayしか利用できない。
PR送れば?
import java.io.File
import java.net.URL
import org.apache.commons.io.{FileUtils, FilenameUtils}
val urlRe = """(?i)h?ttps?://[\w/:%#\$&\?\(\)~\.=\+\-]+\.(jpg|jpeg|png|bmp)""".r
val imgDir = new File("img")
val encoding = "Shift_JIS"
def エロ画像収集(url: String) = {
if (!dir.exists()) dir.mkdir()
val urls = io.Source.fromURL(url, encoding).mkString.split("\n").map(s => urlRe.findAllIn(s).toList).flatten
val fixedUrls = urls.map(s => if (s.startsWith("ttp")) "h" + s else s)
fixedUrls.par.foreach{ url =>
def recur(n: Int): Unit = {
val name = FilenameUtils.getName(url)
val file = new File(imgDir, + name)
try {
if (!file.exists()) FileUtils.copyURLToFile(new URL(url), file)
} catch {
case e: java.io.FileNotFoundException =>
case e: java.io.IOException =>
if (n < 3) {
java.lang.Thread.sleep(3000)
recur(n + 1)
}
}
}
recur(0)
}
}
def test_エロ画像収集() = エロ画像収集("""
http://pele.bbspink.com/test/read.cgi/ascii2d/1394675699/ """)
234 :
ver2 :2014/03/29(土) 15:31:22.62 ID:iSspUegM
import java.io.{File, FileNotFoundException, IOException}
import java.net.URL
import java.lang.Thread
import org.apache.commons.io.{FileUtils, FilenameUtils}
import java.util.concurrent.atomic.AtomicInteger
val urlRe = """(?i)h?ttps?://[\w/:%#\$&\?\(\)~\.=\+\-]+\.(jpg|jpeg|png|bmp)""".r
val imgDir = new File("img")
val encoding = "Shift_JIS"
val count = new AtomicInteger()
def エロ画像収集(url: String) = {
if (!dir.exists()) dir.mkdir()
val urls = io.Source.fromURL(url, encoding).mkString.split("\n").map(s => urlRe.findAllIn(s).toList).flatten
val fixedUrls = urls.map(s => if (s.startsWith("ttp")) "h" + s else s).distinct
fixedUrls.par.foreach{ url =>
def recur(n: Int): Unit = {
val ext = FilenameUtils.getExtension(url)
val file = new File(imgDir, count.incrementAndGet().toString + "." + ext)
try {
if (!file.exists()) FileUtils.copyURLToFile(new URL(url), file)
} catch {
case e: FileNotFoundException =>
case e: IOException =>
if (n < 3) {
java.lang.Thread.sleep(3000)
recur(n + 1)
}
}
}
recur(0)
}
}
def test_エロ画像収集() = エロ画像収集("
http://pele.bbspink.com/test/read.cgi/ascii2d/1394675699/ ")
>mkString.split("\n") ここgetLinesでよくね
236 :
ver3 :2014/03/29(土) 23:39:16.57 ID:iSspUegM
import java.io.{File, FileNotFoundException, IOException} import java.net.URL import java.lang.Thread import org.apache.commons.io.{FileUtils, FilenameUtils} val urlRe = """(?i)h?ttps?://[\w/:%#\$&\?\(\)~\.=\+\-]+\.(jpg|jpeg|png|bmp)""".r val imgDir = new File("img") def エロ画像収集(url: String) = { if (!dir.exists()) dir.mkdir() val urls = io.Source.fromURL(url, "Shift_JIS").getLines.map(s => urlRe.findAllIn(s)).flatten.toList val fixedUrls = urls.map(s => if (s.startsWith("ttp")) "h" + s else s).distinct fixedUrls.par.foreach{ url => def recur(n: Int): Unit = { val ext = FilenameUtils.getExtension(url) val file = new File(imgDir, url.replaceAll("[^a-zA-Z0-9]","") + "." + ext) try { if (!file.exists()) FileUtils.copyURLToFile(new URL(url), file) } catch { case e: FileNotFoundException => case e: IOException => if (n < 3) { Thread.sleep(3000) recur(n + 1) } } } recur(0) } }
gistでやれ
なんかscalaの人がD社に集まってる?
女子マネ弁当うらやましす
241 :
デフォルトの名無しさん :2014/04/25(金) 13:43:40.85 ID:xYpIBQ/t
女子マネ弁当のせいで逆に朝行かない人もいるし、あれはほんとクソ
上鳥取弁当
ドワンゴってキーワード出しただけで、もうScalaと違う話になってる、、、。 でも、ドワンゴがScalaを本格採用したら、この状況も変わるかもね。 逆に、TwitterがScalaを捨てたら、Scalaは本当にオワコン。
ドワは大嫌い
派手に大爆死するか静かに息を引き取るかの違いでしか無いな とっくにオワコン
はいはい
Spray.ioの話題はここでいいですか? P2P掲示板を作ってるスレから来たものです。 実装につまづいている部分があってそれを相談しに来ました。 ドキュメントや例が少なくて苦心しています。 もし他に適当なスレがあったら誘導お願いいたします。
ここでいいよ
せっかくだから、Spray.ioがPlayよりどのへんで優れてるのか、実感を語ってくれ。
試しに書いてみたコード とscalaとsprayのバージョンはいくつなのか見せて
遅くなりました。 今現在なんとか動かせるようになったので、質問は取り消すことにします。 またその方法やコードについてはブログなどに纏めて後で公開したいと思います。 お騒がせしました。
半年ぶりくらいに scala をやろうと思って sbt とか giter8 とか落としなおしてたんだけど、 Typesafe が 便利なものだしてたんだな。 今はコレが主流なん?
sbtが標準のプロジェクト管理ツールになってるとおもう。intellij ideaとかでも、プロジェクトが認識される。 giter8はプロジェクトのテンプレート展開するツールだけど、イマイチ浸透してないような? チュートリアルに書いてあるプロジェクトはどれぐらいあるかな?
259 :
デフォルトの名無しさん :2014/05/05(月) 16:32:30.27 ID:wgCLsPWH
>>258 面接官 「Pythonの倒し方、知らないでしょ? オレらはもう知ってますよ」
>>258 英語話せなくても何とかなるなら行きたいです
261 :
デフォルトの名無しさん :2014/05/06(火) 17:13:35.77 ID:8r5Ba8c0
scala> 10000000000.0.toInt res0: Int = 2147483647 例外出さないとかありえないんだが? 俺のGWを返してほしいんだが?
Double#toIntは単にintにキャストするだけみたいだな (10000000000.0).asInstanceOf[Int]と同じ
そういや、思い出したけど、 String#toIntは、Option[Int]を返すバージョンも作るべきだと思う。 Liftでは用意してたぞ。asInt これ、実装はStringLikeかな。
Scalaの入門書はどれがオススメですかね?
というか、日本語の本って2冊しかなくね?
コップ本の前に大学講義用の簡潔な資料の多い*MLで肩慣らしするとか
少し古いけど「Scala逆引きレシピ」で肩慣らししてから コップ本かな
コレクションクラスの全容と使い分けを書いた本って有るの?
List(Some(1), Some(2)) => Some(List(1, 2)) こういう変換してくれる関数はありますか?
3日間使っただけだけど、Slickってダメなライブラリじゃね? すぐハマるんだけど。 コード例に載ってる奴だけで済むならいいんだろうけど。
それはOSSのほとんどに言えること
ベンダーが提供するものだけ使えばいいよ
最近、Typesafe社を信用しすぎないようにしようと思った。
280 :
デフォルトの名無しさん :2014/05/23(金) 19:28:21.40 ID:WVZoxCv3
>>272 List(Some(1), None, Some(2)) => List(1, 2)
でいいんならflatten
アップルがパクリ言語Swiftを出したな。 すべて持ってかれてオワコン言語になるか 相乗効果で有名になるかどうやら
Scalaはサーバー専用言語であっちはApple端末専用言語だろ 何をどう持っていくのか
Windowsでも使えて、Scalaとjavaの関係と同じくらいの簡単さで、ObjectiveCを使えるなら乗り換えたい
パクリってどの辺が?
287 :
デフォルトの名無しさん :2014/06/05(木) 00:41:03.07 ID:/T91KtMA
GoやMLよりもAOTなscalaって感じはする。
288 :
デフォルトの名無しさん :2014/06/05(木) 00:46:19.88 ID:/T91KtMA
違うな。 AOT環境でscalaの変わりとして選ぶならどれ?って聞かれたらという感じかな。
仕事はSwiftの方が多そうだよね 大事な事です、残念だけど。
SwiftはWindowsでも使えるのでしょうか?
言語だけなら誰かがすぐにコンパイラ作るだろうけど 互換APIはAppleに訴えられるだろうね
292 :
デフォルトの名無しさん :2014/06/14(土) 22:22:14.84 ID:+wPvk2Xf
opt.map(_.value).getOrElse(デフォルト) //optはOption型 みたいなコードをIDEAで書くと 「Simplifiable operation on collection」という警告が出て existsを使え、みたいな事を言われるんですが どういう意味なんでしょうか?
293 :
デフォルトの名無しさん :2014/06/15(日) 00:23:28.69 ID:PFhEfnYG
ScalaのAOTだいぶ強化されてるぞ 日本語情報ぜんぜん無いが
>>292 動作は同じでもっとシンプルかつ分かりやすく効率的な書き方あるから大人しくこっち使えよオラって意味だよ
たぶん君の場合はmapとgetOrElse(false)の組を使ってるせいでexists使えって言われてるんだと思うよ
IDEAのSetting -> Inspections -> Scala: General -> Simplifiable operation on collection
でどんなコードが警告出されてどう変換されるか確認できるから見ればいいよ
???の意味が知りたいんだけど、何でググれば出てくる?
Akka IOのサンプルコードが足りなすぎてどう書いて良いのかわからない。 TCP通信をさせたいのだけれど。 役に立つ書籍とかご存知ないですか?
Rubyで以下の様なシナリオ生成用の ツール作っていたのですがわけあって Scalaでも同じものを作ってみたいのですが 類似するサンプルがどうしてもみつからないのですが どうやって作ればいいか助言をいただけないでしょうか? Title { Description "TEST" scenario { name "scene1" data 1 } scenario { name "scene2" data 1 } }
>>299 書き忘れたんですけど内部DSLの例で括弧使った例って
よくわからないのだけど
DSLって部分を読み落としたんだろ
RT >304
305 :
デフォルトの名無しさん :2014/06/30(月) 23:35:39.25 ID:/VX5kW5x
REPLで複数行書きたい時はどうすればいいんですか?
:paste
308 :
デフォルトの名無しさん :2014/07/01(火) 00:56:30.83 ID:AScZaUEE
SparkやるからしかなてくScalaやってる
310 :
デフォルトの名無しさん :2014/07/06(日) 14:29:54.31 ID:PhqEnIg/
違った、今回メインスピーカーをEPFLから呼んで発表してもらうのか。
scalazでHaskellのreturnに相当するのはpointだというところまでは分かったのですが、 failに相当するものも用意されているのでしょうか? 名前かURL等だけでも教えていただけると助かりますm(_ _)m
Scala、今月の日経ソフトウェアで、また紹介されていたな。 日経ソフトウェアでは、何度も何度もScala紹介特集記事が組まれるけど、毎回、紹介どまり。 使われているんか?これ?
意思決定の本買ったら付録で簡単な計算ソフトが付いてたけど、それがscalaで作ってあった
>>315 あまり詳しくないんだけど、scalaで作られてるかどうかって分かるの?
>>316 ライセンスのフォルダにscalaのが入ってた
>>317 そうだったのか、ありがとう。
ちょっとマニアックな著者だね
>>314 使われてないし今後もあり得ないから安心していいよ
さわりは素晴らしい言語に見えるんだけどね カオスな暗黒面に足を踏み入れると、こんなものがJavaに取って代わって 広く使われたりしたら悪夢だとわかるよな
例えば以下のようなメソッドを > def foo[A](implicit x: Ordered[A]) = /* (略) */ 以下のように書けることは分かったのですが、 > def foo[A: Ordered] = /* (略) */ 以下のように型引数が型引数を取る場合は、上記のような書き方 (context bound?) は できないのでしょうか? > def hoge[M[_]:Monad, A](implicit x: TypeClass[M[A]]): M[A] = /* (略) */
>>322 たとえば例外処理に何通りのやり方がある?
その中で今どれを使うべきか理由付きではっきり言える?
2,3年後もそのやり方がベストだと言える?
>>324 むしろ、構文側できちっと用意してないので、何種類でもやり方があるのが問題なのではなかろうか
そもそもjavaのtry-catchスタイルの例外処理自体が失敗だったと言う説も…
何かをしたいとき、選択肢が多すぎる ベストプラクティスが無いか変わるのが早過ぎる
用途の半分以上がスクリプト言語のscalaにベストプラクティスを求めるのも酷な気がする
>>325 その説ってWebだとどこで読める?
>>327 > 用途の半分以上がスクリプト言語
スクリプト「言語」じゃなくて、スクリプトとしてScalaが使われているってだけだよね。
用途の半分以上ってどこかにソースある?
個人的には、そういう実行方法はおまけ程度の話だと思っていて、
用途の半分以上ってにわかには信じがたい。
>>327 ちなみに、正真正銘スクリプト言語の Perl も Ruby も
O'Reilly からベストプラクティスについて書かれた本が出てるよ。
>>328 半分以上どころか、scalaの用途のほとんどすべてが「スクリプト言語として」だと思う根拠は、どのみち顧客に触らせるアプリケーションの実装はjavaかCだから
>>329 PerlやRubyについては、ベストプラクティスは自明じゃないからこそ本にしたり議論を紛糾させてるのではなかろうか
>>330 その根拠からだと、顧客に触らせるアプリケーションの実装はjavaかCで、
scalaは使われないっていうだけの結論だよね。
>>331 俺が言いたいのは「スクリプト言語だから」みたいな話は変だよねっていうこと。
仮に議論が
「Scala は開発者の日々のタスクを自動化するような比較的小さな規模のアプリケーションでしか使われない」
みたいなというところから始まっていればまだ少しはわかる気がするんだけど。
ところで「スクリプト言語」ではない言語だと、ベストプラクティスは自明になったり、
ベストプラクティス本が無かったり、議論が紛糾しなかったりするの?
http://qiita.com/yimajo/items/a3fac0026c07ec538fc2 記法に一定のモラルを持たすこと。
漠然とした表現だけれども自分の中ではそう認識している。
ただこれはあのひとらの流儀に則るならどうか
でも別のグループのひとらは別の規約をお持ちのようだから
あちら流に合わせるとどうかと、
強いて言うならその場の勢いで盛り上がったまではよかった。
しかし道場破りが状態化してそうな格闘技のジャンルみたいに
なっていくんでないかという懸念(実質フリーダムに分派していくことも多し)
バックグラウンドが同じではないなら、なおさらバラバラに
なり易い。少人数でローカルで規約作って書き上げれるためにはある程度の錬度は必要だと思う。
>>332 scalaが使われないのは、「顧客に触らせるアプリケーションの実装」ではなく、他人のレビューに耐えうるコードの公開
「Scala は開発者個人の日々の仕様書が存在すないタスクを自動化するような比較的小さな規模のアプリケーションでしか使われない」
スクリプト言語ではない言語だとベストプラクティスが自明になる(ならざるをえないレベルに強制的に徹底教育される)理由は、他人とのコミュニケーションを必須とするチーム開発をするから
それSlerの話しでしょ 自社でWebサービスやってるような会社ではScala使ってたりする
Twitter では Scala がインフラ開発で広く活用されているのは
Scala使いなら常識だと思っていたんだけど、
どこから
>>334 みたいな珍説が生まれたんだろう?
マルチパラダイムというほどのことではなく、実際には以前の設計がちょっと気に入らないために 似たようなものが再発明されて放置されてるゴミが多いんだよな 一番問題なのはマルチパラダイムという言葉に甘えた無節操・無計画な開発方針だよ
一般の業務システム程度の要求に対してScalaはオーバースペックだし難しすぎる これだけでSIerが採用しない理由としては十分 普及ってのがSIerを対象にしていないのなら別に気にしなくていいんだろうけど
どこが難しくてオーバースペックなのかわからない 何と比較してるのかわからないが JavaやPHPなんかよりすっきりするし、 変数の扱い等も楽だと思うのだけど
>>339 プログラムを簡潔に記述できる!=プログラムを覚えやすい、ではないでしょ
簡潔に表現するための抽象的で自由度の高い機能は、知らない人にとっては複雑に感じるよ。
JavaやPHPは旧来の言語(CやC++)を知っていれば何と無くかけるし、世の中に情報が溢れているからね。
Scalaは関数型言語としては、その点を重視して旧来の考え方を取り込んでいるから実用性が高いけど、まだ世間が追いついていない。
>>340 簡潔に書けることよりvalがあるのが大きい
まだ追いつかないのは仕方ないとは思うけどね
メンバーが全員関数型言語に理解があるなら迷わずScala使うけど、 そんなチームがどれだけあるのやら スクリプト的な用途だと最後まで1人で作ることがほとんどだから 気軽に採用できるけどね
Scalaを使う層は、関数型的な使い方なんてしてないだろ c++とhaskell以外はプログラマなんて名乗ったり、語らなくていいよ
>>342 会社(集団)としてScalaを推し進めて行けば、普及は可能だと思うけど。
もちろん、派遣メインのSIerじゃ無理だから、自社サービスやってるところに限られるけど。
最近だと、ドワンゴがPHP→Scalaを推し進めているみたいね。
D, Go, RustがあるからC++はもういらないけどな
関数言語として使い方が分からないときでも、自力でなんとかプログラムできないと困るしな…
>>342 関数型言語というのが純粋で遅延評価な Haskell であれば、
システム開発への適用は無茶だという意見に自分も同意する
でも JavaScript や Ruby といったスクリプト言語では、
関数型プログラミングというスタイルは
すでに常識となっている(Java でもラムダ式構文が追加された)
だから数年前とは違って、ML族(SML/OCaml/F#)や Scala のような
「ふつうの関数型言語」であれば、システム開発に採用するハードルは
十分に低くなっていると思う
うちは受託開発で普通にScala使ってるけど。 客に「Scalaって何ですか?」って聞かれたら、「Javaに毛が生えたようなもんですよ」って 言っとけば、だいたい何となく納得してくれる。
>>347 基本情報処理技術者試験に具体的なコードの問題が存在しない関数型プログラミングというスタイルを常識と呼ぶのはいかがなものか
>>348 拡張部分を他者にJavaで作らせて結合できなくて「Javaじゃないの?」とクレーム入れられて死ぬパターンとみた
>>348 おっいいねー。
どのぐらいの規模?直受け?
>>349 基本情報処理技術者試験で出題されるプログラミング言語は、
C、COBOL、Java、アセンブリ言語の4種類しかない
つまり
>>349 の住んでいる異次元世界だと、
C++/C#/JavaScript/Python/Ruby/PHP は
非常識なプログラミング言語という扱いなんですねー(棒
>>352 C、COBOL、Java、アセンブリ言語に代表される線形なプログラミング言語による開発は常識ですが、C++/C#/JavaScript/Python/Ruby/PHP をλ抽象を型として抽象化する関数型プログラミング言語は非常識と言う扱いです
用語すら統一されておりません
JavaでScala。
>>340 一番完結なのはアセンブラとか機械語だな
あれこそ高度に抽象化されてる
>>353 そうですか、
>>353 氏の住んでおられる異次元世界では
C# の LINQ や JavaScript の jQuery は非常識なんですね
しかも C++/C#/JavaScript/Python/Ruby/PHP は
「関数型言語」として扱われているんですね
つまり「手続き型言語」として認められているのは
基本情報処理技術者試験で出題される
C/COBOL/Java/アセンブリ言語だけ
こりゃ異次元世界の住人様と話が合うはずもありませんねー(棒
>>355 いまだに社会インフラのインフラ部分がアセンブラだから、機械語とアセンブラに関しては言語の性質関係なく技術者確保が必須になる
というか、団塊の世代が完全引退したらもうメンテできない
2000年問題どころの騒ぎじゃないんだけど、もうあきらめてるのかな
>>356 どの言語であれ、λ抽象を型として抽象化する関数型プログラミング言語は日本では非常識
学術的にはλ抽象を型として抽象化する言語を「関数型言語」として扱うが、私の住んでいる異次元世界日本では、その「関数型言語」の範囲すら統一されていない
つまり、常識として認められてるのは、C/COBOL/Java/アセンブリ言語を典型例として基本情報処理技術者試験で出題される「手続き型言語」だけ
>>358 私も住んでいるのは日本ですけど、
やはり
>>358 氏の住んでおられる日本は
同じ日本でも次元の異なる異世界だったのですねー(棒
>>359 例えば、常識の定義を
「社内の技術者の80%の人が同じ意味として理解しており使える」
「これに沿ってプログラミングしていれば作業環境を交換しても今からすぐに相手の作業を継続できる」
「質問したときに即答できないとペナルティを受ける知識」
とするなら、あなたは「関数型プログラミングというスタイルは常識」の世界に住んでいるのでしょうかね?
パラダイムと言語の違いもわからない人が常識とか言ってるの・・・
>>360 そうですね
「社内の技術者の大半(80%?)にとってCOBOLやアセンブリ言語は常識ではない」し、
「COBOLやアセンブリ言語で書かれたプログラムを社内の誰もが引き継げるとは考えられない」し、
「COBOLやアセンブリ言語に関する質問に答えられなくてもペナルティを受けることはない」から、
>>360 氏の住む異世界日本の常識とは、かなりかけ離れているみたいですねー(棒
>>361 正確には、非常識なのは「関数型プログラミングというスタイル」でしたね
「パラダイム」という単語の意味も80%の人が同値な説明をするのは無理なので、常識とは呼べないでしょう
応用技術者の方にも具体的なコードでの関数型プログラミングというスタイルの出題がないくらいだし
>>362 「社内の技術者の大半(80%?)にとって、COBOLやアセンブリ言語を典型例とする手続き型プログラミングのスタイルが常識ではなく」
「COBOLやアセンブリ言語を典型例とする手続き型プログラミングのスタイルで書かれたプログラムを社内の誰もが引き継げるとは考えられなくて」
「COBOLやアセンブリ言語を典型例とする手続き型プログラミングのスタイルに関する質問に答えられなくてもペナルティを受ける」
ような世界でも関数型プログラミングのスタイルを理解できるんですね
>>363 関数型プログラミングですら非常識という人が
常識的には関数型言語に分類される Scala のスレで
いったい何をしたいのですかね?
(はたして Scala は関数型言語なのか?という議論はさておき....)
>>365 どんな先進的な科学も、社会の常識になる前にいろいろと議論する人達がいるわけでして…
>>341 > valがあるのが大きい
Javaのfinalと同じじゃないの?
>>364 いや、
> 「COBOLやアセンブリ言語を典型例とする手続き型プログラミングのスタイルに関する質問に答えられなくてもペナルティを受ける」
ような世界では、おそらく関数型プログラミングのスタイルを理解するのは難しいんじゃないですかね?
私の住んでいる次元世界の日本では、(
>>362 で書いたように)
「ペナルティを受けることはない」ので、自分では想像できないですねー(棒
>>366 COBOLやアセンブリ言語が手続き型言語の典型例であるとする
異次元世界の住人との間では、そもそも議論にならないのではないかと思われ...
自分は最初(
>>352 )からまともに相手してませんよー(棒
久しぶりに伸びてると思ったらこんな話題かよ
Scalaだとvalが肯定される一方、Javaでfinalを付けると 「気持ち悪いから止めろ」 「finalを付けたくなるというのは、そもそもお前の書き方が悪い」 って全否定されたでござるの巻
373 :
342 :2014/08/02(土) 21:56:59.71 ID:537qFnzj
なんか変な種撒いたみたいですまん。申し訳ない。 うちは派遣メインなんだわ…やっぱ自社開発したいなあ。頑張ろう
>>368-369 基本情報処理技術者試験でわざわざ具体的なコードを提示して問題を出している手続き型プログラミングのスタイルを知らなくてもペナルティを受けないような人達がscalaの機能について議論するのはいかがなものか?
>>370 ,373
スルーできなかった自分が悪かった、ゴメソ
ドメイン駆動よりもむしろドカタの得意技トランザクションスクリプトの方が関数型には合ってるよ COBOLアプリの設計書なんかそのまま関数型で実装すれば関数型として違和感のないものが出来上がるはず Scalaみたいな最近流行りの「関数オブジェクト指向」じゃなくてガチな宣言型の方の関数型な
禿本を読んだのも もう10年前の話だな 懐かしい
>>378 リンク先の記事の技術レベルは「アルゴリズム宣言」と同じだね
少なくともシステム開発には直接関連しない話題だ
また抽象度が高いからこそ、オブジェクト指向よりも抽象化の粒度が小さく
形式的である(Scala を含む)関数型パラダイムが適していると思う
>>381 >
>>378 >リンク先の記事の技術レベルは「アルゴリズム宣言」と同じだね
>少なくともシステム開発には直接関連しない話題だ
意味不明。説明願おう
>また抽象度が高いからこそ、オブジェクト指向よりも抽象化の粒度が小さく
>形式的である(Scala を含む)関数型パラダイムが適していると思う
言葉足らずだったが、抽象化の粒度が大きいもの(実世界に存在するもの)はどうするんだ?
とはいえ現実には世の中だいたいトランザクションスクリプトでうまく回ってわけだしな 粗粒度の抽象化をしないことによる生産性や保守性低下の弊害は宣言型により極めて劇的に改善できる 関数型普及の切り札はやっぱりトランザクションスクリプトとの相性の良さでしょ
> 極めて劇的に そりゃまた大きく出たもんだな
>>383 お前さあ、言いたいことだけ言ってて、全く根拠が無いんだが?
ちったあ、考えてもの家
誰かのブログ記事貼ればよかったの?w
>>382 関数型言語プログラマまたは関数型プログラミングをしている人であれば、
誰でもオブジェクトの不変性が重要である事は理解しているはず(しかもココは Scala スレ)
>>378 の記事は、著者がこうした関数型への壁を一つ乗り越えた感動を表現した感想文である
もちろんブログとは日々の心を綴る日記なのだから、
>>378 の記事そのものに何ら問題はない
ただし、わざわざこの記事を引用し、それを読めと命ずる
>>378 の意図がサッパリわからないという話
繰り返すけど、ここは関数型言語である Scala のスレだよ(他の雑談スレへ逝ったほうがいいと思うな)
オブジェクトの不変性が大事だと言いつつ、実務ではmutableコレクションを使いまくってる感じだな…
>>387 Scalaは関数型でありOOPでもある。両者は共存できる。オブジェクトの不変性よりこれを伝えたかった。
どうやら彼は関数型とOOPは水と油みたいに考えているようなので、そのことについての当てつけ。
何にしろ、本題のトランザクションスクリプトに関数型が合っているというのは理解できないけど。
みなさんエラー処理はどうしてます?
scalaが関数型というより、scalaは関数型を持ってると言った方が正確ではなかろうか
最近忘れてたが、純粋なオブジェクト指向だけど、速さも両立してるというのは独特だったね。
>>390 Ether使った上で個別のエラーを取りたいときどうするかが、話題になってたね。
>>391 同意
宣言型じゃないんだからデリゲート指向とでも呼ぶべきもの
>>394 >>391 はhas-aって言ってるけど、お前はis-not-aじゃねーか。なーにが同意だ
そもそもデリゲート指向ってなんだよ。お前Scalaのこと何も分かってねえだろ
396 :
394 :2014/08/05(火) 08:16:04.90 ID:ghCtuQ0N
関数オブジェクトを持ってるという意味な
>>391 がそういう意味なのか関数型言語を包含してるという意味なのかは知らないけど
397 :
デフォルトの名無しさん :2014/08/05(火) 23:27:29.77 ID:nq9s5bEX
なんでtrueやfalaseってTrueやFalseじゃないんですか?
>>390 Eitherとscala.util.Tryで大半を扱ってる
try-catchを使わない理由はtail callを壊してくれるから
この手の言語で関数型というとき、第一級関数だけに目が行ってて宣言的プログラミングを軽視する奴が多いのは確か
Haskell作者のインタビュー本には、今時、どの言語でも関数オブジェクト扱えるんだから、 関数型言語とはと聞かれたら、immutableのサポートと副作用の制御あたりを挙げるべき てな話が載ってたはず。
>>399 逆に宣言型マンセーでマルチパラダイムの関数型言語軽視するやつが多くも感じる。
結局の所、自分の認めたこと以外認めない奴の声が大きいだけなんだよ。
まあそれはそうだが、filterやmapの後にforeachしてこれが関数型だと言われてしまうと、 さすがに抵抗を感じる奴は多いんじゃないだろうか マルチパラダイム言語らしいところではあるけど、その点ではストリームのメソッドにforeachを入れずに 副作用は従来のforeach文で分けて書かせることを選択したC#は上手い
403 :
デフォルトの名無しさん :2014/08/06(水) 21:19:52.01 ID:cXwK7sUI
Anormシンプルでいいな Slickみたいな言語内DSL型のORMを使うと破綻する
そもそもscalaを選択する理由が、関数型プログラミングをしたいからじゃなくて、既存のプログラミングスタイルの中で関数型を使いたいからだしな… そこら辺が分かってるからこそmutableなんて変なコレクションを置いているのではなかろうか
Scalaだめだろ アドホックにいろいろくっつけすぎて 大したことできないのにわけわかめなことに
とりあえず、Javaでできることは全部できるよ
>>402 固く考えるなよ。
>>400 ぐらいの解釈でいいんじゃね?
俺はC#がforeachをlinqにないのは不便だと思うし、ネット調べたらそういった感想がいっぱい出てくるぜ?
Ixにはなぜかあるしな。
>>405 むしろ何ができないのか教えてほしいもんだ。
>>407 >>400 の解釈ならforeachなんかもってのほかだろ
Scalaってイミュータブルにしろ純粋関数使えというのがやたらと強調される割に
途中過程でforeach使うなというのはあまり聞かないよな
まさに副作用の象徴といえる存在なのに
mapとかfilterとかはわかるけど、foreachってイマイチどこで使えばいいのかわからない。
>>409 immutableのサポートであって、強制ではないでしょ。
foreachがないと、ビジネスロジックが処理できなくなるじゃん
>>410 やろうと思えばなんでもできる。ってのがforeachの役割。基本、最終手段に使えばいいんじゃね?
413 :
394 :2014/08/07(木) 21:11:14.69 ID:UhGIHveY
>>411 >foreachがないと、ビジネスロジックが処理できなくなるじゃん
それimmutableだけではビジネスロジックが処理できなくなると言ってるのと同じだよ
foreachはimmutableだけで構成されたコードでは本質的に全く意味を持たないからね
命令型のためのAPIを流用する以上、最終的な出力にはforeachは必須だけどそれ以外には不要だよ
>>413 お前極端に受け取りすぎだよ。
filterやmapした後に、各要素に対してDBアクセスしたい場合、foreachを使わず悩まず処理ができるかって話だ。
本質的に意味を持たない?コレクションに対する必要な処理をした後に、そのままの流れで副作用のある処理をするのならforeachが自然だろ。
それでもimmutableにこだわるのなら、Scalaを使うべきでは無いのでは?
phpはmap処理よりforeachのが速いのか。
Scalaのライブラリコードは、foreachってかwhile文使いまくりだよね。
Java8が出た今、存在価値なくなったよね
本気でそう思ってるのなら頭ん中お花畑としか思えない
言語仕様なんて一つの要素にすぎないからね 結局、比較的マイナーな言語を使うことによる環境面での諸々のデメリットとJavaのストレスとどっちを取るかだから、 そこのバランスは多少なりとも変わる
Javaが重要なのは仕様ではなく、APIと企業の宣伝だしな…
今月の日経ソフトウェア見たけど Scalaは今後世界を席巻しそうだね
コンパニオンオブジェクト鬱陶しい static使わせろ
何度か使ってみたが同じ仕様でスタートしても実装の収束性が悪い気がする。 あまりいろいろできすぎるのも考えものだ。
静的型付け界のperl
>>425 気がするどころかScala最大の欠点としてずっと言われ続けてるが
今も変わらず9割のクソと1割のまともなブツが生み出されてはカオスに仲間入りし続けている
まあどうせ主流になることはあり得ないからどうでもいい
>>428 なんであり得ないの?ねえ?ねえ?
なんでwwwwあwりwえwなwいwのwwww!!!???
>>429 scalaを使うべき理由のNo1は(Javaの)APIが充実しているからだが、そもそもJavaですら使い切れておらず、Javaの存在そのものがセキュリティホールになっているから
Scalaいらないものリスト ・コンパニオンオブジェクト ・newキーワード ・抽象型 ・lazy引数 ・implicit宣言 ・インポート時の_root_ ・デフォルトをprivateに ・for文のfilterその他 ・自分型アノテーション etc,etc....
>>431 >newキーワード
Javaクラスのインスタンス化。そもそもapplyでnew使うじゃん
>implicit
Javaオブジェクトの変換どうすんの?
>>431 scalaコード一万行ぐらい書いてたが
数えてみたら抽象型とか一回も使ってなかったわ。
implicitはscalikejdbc使うときに必要なぐらい。
その他は好みの違いで済むものにいちゃもんつけてるように見える。
まぁもっとデカいプロジェクト
あるいはフレームワークっぽいの作ろうとしたら
色々使う機会もあるんでしょう。
ゴテゴテ色んな機能が付いてて要らなく感じても邪魔になるようなものは少ないと思う
本で紹介されてた機能が便利で簡単そうだと思って使ってみら、半年後の自分にはコードだけでは理解不能 という状態を回避したい
Scalaって今後有望ですかね
難しいだろうね 何かが足りないのはいくらでも改善できるけど、Scalaの場合はありすぎるのが最大の問題とされているので常に悪化する一方だ
>>437 何が足りないの?挙げてみてよ
フルボッコにしてやるから
シンプルさ?
わかりやすさ 適度な冗長さ
441 :
デフォルトの名無しさん :2014/08/19(火) 12:45:41.24 ID:g7X0G1cO
コードの堅牢さ
sbtの複雑さはやばい あれだけは擁護不可能
s i m p l e b u i l d t o o l
sbtはscalaにポータビリティに難ありというイメージを付けてしまった元凶だよな
誰かS--とか作れ
scalaが複雑すぎだとかなんとか言ってる人はKotlinとかその辺がいいんじゃないっすかね 使ったことないけど
scalaってocamlのまんまパクリなのに何故もてはやされてるの? 氷水被るステマと同じ?
450 :
デフォルトの名無しさん :2014/08/21(木) 17:02:28.59 ID:hozPYr3C
各種C++コンパイラも原典のパクリだが。 もてはやされる。
構文の上っ面を眺める作業に戻るんだ
正直、前方参照の問題を除けばOCamlで十分だよね JVMとの親和性を高めるにしても、F#みたいなのでよかった
>>452 そもそも大学で研究用に作られたモノだから、文句があるなら自分で作れという返答が返ってきそうだな…
scalaは関数も含めて全てがオブジェクトという世界。 JVMでほかのML語族使いたいというなら、いまのところはfrageあたりで頑張るしかないんじゃないかな。
ocamlだすとかネタでしょ
F#はOCamlの不便なところ異質なところをだいぶ改善してる 結果的にかなりScalaに似てる
結局javaのライブラリを呼び出すことになるから null排除できないよね
Optionに包めよ
マルチスケールって、いろんな抽象度でプログラミングできるってことなのね
Optionは多用するには字面が長すぎる Option[String] が String? みたいに書けたら良かったのに。
A[B,C]をB A Cみたいに中置記法で書けなかったっけ
それで
>>463 できないの
スカラ祭りどうなったん?
冗長でも読みやすいJavaのコードに慣れてると Scalaは小難しく感じるなぁ・・・ 入門サイト見てるけど 【Java】 public List filterNames(List<String> names, int len) { List<String> result = new ArrayList(); for (String name : names) { if (name.length() >= len) { result.add(name.toUpperCase()); } } return result; } ↓ 【Scala】 def filterNames(list: List[String], len: Int) = list.filter(_.length() >= len).map(_.toUpperCase) 例が極端なのかもしれないけど、う・・・うーん・・・・ なれる自信がないお
その例なら普通にScalaの方が読みやすく感じる そのScalaの例のようなスタイルのコレクション操作は他の多くの言語じゃ一般的に使われてて目新しいものじゃないし、 Javaにも最近ついに導入された 今時そういう考え方に馴染めない奴は時代遅れで生きる資格ないってことだ
>>467 names.stream().filter(n -> n.length() >= len).map(n -> n.toUpperCase()).collect(Collectors.toList());
慣れないと、Javaでも置いてかれるで。
>>468-469 なんてこったい・・・わけわからんでー
何がどうしてそうなるのか掘り下げてちゃんとやらないとなぁ
>>467 の上が読みやすいのって結局パターンを覚えてるからだよ
パターン抜きだと、上はいちいち処理を追ってみて動作から推測しないと何がしたいのか分からない
対して下はどういう結果が欲しいのかを宣言的に書いているので、パターンに当てはめるまでもなく意図が明らか
最初は難しいかもしれないけど、慣れてくると中で何をやっているのかは気にしなくなり、単に入出力のルールとしてコードを見られるようになる
基本は簡単 特定の条件を満たす要素だけ取り出す 一対一で別の型へ変換する 畳込みする だけ
names.stream().filter( n -> n.length() >= len ).map( n -> n.toUpperCase() ).collect( Collectors.toList() ); こうやって折り曲げてみると読みやすくなる(鴨
スレの速度も遅いし日本じゃScalaってあんまはやってない? 関数型言語ってだけでビビられるから?
日本以外でも別に流行ってはいないよ どこでもScala技術者を集めるのなんて事実上不可能なので、内製でしか使えないからね
内製やツールからだね。 英語可・ただし社内公用語は日本語だから覚えてもらう条件で日本からscala技術者募集したら、海外から捕捉されて応募がくるレベル。
sbtのsbtconfig.txtの記述って build.sbtみたいに行と行の間に空行を入れないとだめ?
順位が徐々に落ちているのに流行の兆しとはこれ如何に
D言語よりは流行る見込みがある そんなふうに考えていた時期が僕にもありました
scalaが流行ってるのか… JavaのAPIをいい加減に使いたい人が多いだけなのか…
>>482 JavaがC#並にバシバシ更新されるならJavaでも良かったんだけど、
停滞激しかったんでScala。
C#はバシバシ更新されて逆にやりすぎてカオスになってるけどな
C#程度でカオスなんて言ってたらScalaはどうなるんだよ C#は設計者の将来を見通すビジョンが神憑ってるので、一見無節操に拡張してるように見える割には 驚くほど失敗が少なく互換性も保たれている
結構失敗してゴミ機能が散らかってるけど あんまり全体に波及してないよな
>>486 言うのは容易いね。
具体例を教えてくれ
delegateとかeventとか
eventはIDE向けの機能としては重要だろう プロパティと同じで、単なるaddEventListener/removeEventListenerのシンタックスシュガーだ VB6みたいないい加減な実装やJavaみたいなプリミティブな実装ではなく 関数オブジェクト(デリゲート)を選んだことで、後に関数型を自然に導入できた まあデリゲートが高階関数で使われることが多くなった今となってはマルチキャストなんて明らかに失敗だけどね
ああ、C#の話ね
Scalaはすでにゴミ屋敷だろw
>>494 じゃあ例えばScalaとJavaのコレクションを相互変換する際のベストプラクティスを教えてくれ。
知らないなら調べてみればいい。ゴミ屋敷というのがどういうことか実感できる。
>>495 それってJavaの資産を再利用するためのトレードオフじゃね?
やり方がまずいってか?
色々いらん機能はおいといて Traitはどんな感じですか? インターフェースより使いやすい?
>>498 使ってみればわかるだろ…
個人的には他の言語でも使いたくなるレベル
Scala Matsuriなう
501 :
デフォルトの名無しさん :2014/09/06(土) 10:19:17.30 ID:mR0iWa8+
小田さんが若くてイケメンだった てっきり髭もじゃのおっさんかと思ってた ってか英語がさっぱり分からん
F#とこれだとどっちが勢いあるの?どっちもどっちか?
ScalaはWeb系の連中がメインだから流行ってるかどうかはともかく声はでかいね F#はモデル書くための言語なので、内々で使われててもなかなか外に情報は出にくいだろう
なるほど、棲み分けてる感じか
小田好先生、若いよね
507 :
デフォルトの名無しさん :2014/09/11(木) 19:10:25.20 ID:FBULLL+R
>503 ScalaFXMLのおかげでデスクトップアプリもポトペタ開発ができるんだけど もっと流行ってほしいよね。
純粋に言語として好き好んでScala使ってる奴はあんまりいないだろ 「Javaよりマシ」で使ってる奴がほとんどで、 デスクトップアプリみたいな元々Javaが全くと言っていいほど使われていないところで わざわざScala使いたいというニーズはほとんどないだろう
scalaをx86/x64バイナリにコンパイルするのやってないんかと思ったら、LLVM+Scalaでいっぱいでてくるね
JVMフリーにできるん?
scala+LLVMは2,3年くらい前に話題出た気がするけどあれから進んでんの?
rt.jarはどうすんだ
.netや.jsでもjava互換じゃないし適当なんじゃない?
自分ではあんまりパターンマッチとかimplicit系使わないし java8に移行でもいい気がしてきたけど 結構使ってるライブラリが中でその辺の機能使ってるんだよなー
Scala はオワコン
パターンマッチ使わないってマジかよ
val a = 1 を代入だと思ってるかもしれないが、実際にはパターンマッチしてんだぞ val 1 = 2 とか実行時にこけるけどちゃんとコンパイルできるからやってみれ
$ sml Standard ML of New Jersey v110.76 [built: Fri Jul 12 16:57:10 2013] - val a = 1; val a = 1 : int - val 1 = 2; uncaught exception Bind [nonexhaustive binding failure] raised at: stdIn:2.5-2.10 -
sml じゃんって突っ込みはおいといて、Scala でも REPL じゃ動かない。
jreがjava8に勝手にアップデートされててscalaのreplを起動するたびにエラーが出るのですが、 scalaのバージョンアップしないとダメでしょうか scalacはまったくできません バージョンは 2.10.0です
>>507 > >503
> ScalaFXMLのおかげでデスクトップアプリもポトペタ開発ができるんだけど
なにそれ?日本語の情報とかブログ記事が全然ないけど。。
JavaFX Scene Builder と Scalaを結びつけるようなツール?
もうsbtもxmlもみたくないです
不変クラスと最適化(コンパイル時&実行時)についての質問です。 二次元の点を表すPointクラス(不変なx, y)と、矩形を表すRectangleクラス(不変なleft, right, top, bottom)がある時に、 Rectangleクラス中に矩形の左上の点に相当するPointクラスを得るメンバを定義したい場合 @val leftTop = Point(left, top) Adef leftTop() = Point(left, top) どちらが効率的か、もしくはScalaの流儀に近いのでしょうか? Java自体初心者なので、このあたりのバイトコードの最適化や実行時のプール(キャッシュ?)が どうなるのかもわかっていないので恐縮なのですが、Java風に愚直に考えますとメモリと実行速度の トレードオフなのかな?程度の認識であります
defの方は毎回新たなPointを作って返すので不変ならキャッシュされるvalの方でおk scala> rect.leftTopVal eq rect.leftTopVal res0: Boolean = true scala> rect.leftTopDef() eq rect.leftTopDef() res1: Boolean = false
leftTopからrightBottomまで持つならオススメはできん lazyにしても参照変数分は節約できんからなぁ
530 :
デフォルトの名無しさん :2014/09/27(土) 16:29:51.55 ID:vwp0uufz
>>523 InteliJでsbtプロジェクト作ってbuilt.sbtファイルのlibraryDependenciesに
"org.scalafx" %% "scalafx" % "8.0.0-M3",
"org.scalafx" %% "scalafxml-core" % "0.1",
を追加。
メニューのSettings-> IDE Settings-> JavaFXでJavaFX Scene Builderのパスを設定。
src/resourcesの下にfxmlとか適当な名前のディレクトリを作成、
JavaFX Scene Builderで作ったfxmlファイルをそこに保存する。
次からはfxmlファイルを右クリックしたらJavaFX Scene Builderが起動するようになるよ。
531 :
デフォルトの名無しさん :2014/09/27(土) 16:49:08.83 ID:vwp0uufz
ああ、ごめんScalaFXMLがバージョンアップしてた。
>>524 のサイトの情報が最新ですね。
あと、Exampleのobject SimpleDemo extends JFXApp...の
FXMLView(getClass.getResource("test.fxml"),
のパスは"../../fxml/test.fxml"
してください。
IntelliJはCommunityEditionでも大丈夫です。
532 :
デフォルトの名無しさん :2014/09/27(土) 16:59:56.61 ID:vwp0uufz
"../../fxml/test.fxml"の部分はソースの位置関係で直してくださいね。
富豪的にやっていたところjava.lang.OutOfMemoryErrorが連発して困っているんですが foreachをwhileに書き換えたらマシになりますか?
まずはプロファイラでどこでメモリを消費してるのか調べる所から ついでに言っとくと中間コレクションを作るmap/filter系ならともかくforeachをwhileにした所でほぼ意味はない
>>533 連立方程式だけど、全部のforeachをwhileに書き換えたら10倍のオーダーで速くなった
>>533 亀だけどStreamとかEnumerateeとか使えば?
どう頑張ってもbetter javaくらいにしか使えない... 皆よくScalaを使いこなせるなー.
Scalaを使いこなしたら支離滅裂なとんでもない糞コードになる 必要なものと良いものとゴミカスを見極めて使う言語だ
540 :
デフォルトの名無しさん :2014/10/14(火) 21:18:29.72 ID:thhDfX/j
scala でテストレポートHTML生成するのはどうやったらよいんだぜ!? junitのxmlから生成すべき?それともspecsのstatsファイルを使うべき? bootstrapのcssとか使えんもんかなぁ
541 :
デフォルトの名無しさん :2014/10/14(火) 23:28:17.32 ID:fJVhU1Rh
>>539 そうか? 確かに_の多用は簡潔だけど分かりにくくなったりするが
>>538 better javaとして使ってたらそのうち関数型っぽく書けるようになるさ
542 :
デフォルトの名無しさん :2014/10/15(水) 17:13:42.45 ID:dxKBuKcI
543 :
540 :2014/10/17(金) 22:44:05.70 ID:TZCpFU8p
>>542 ありがとうございます!カッコイイHTMLが自動生成されました!
実際にはbuild.sbtに次のように書きました。(思い出して想像で書くのでタイポ御免)
scalaVersion := 2.10.3
libraryDep += org.specs2 % 2.3.13 % test
testOption := (html)
544 :
デフォルトの名無しさん :2014/10/20(月) 18:21:43.29 ID:sAG3BTXt
typesafe activatorってネットに繋がっていないと コンパイルとか実行とか出来ないものなの?
>>544 ネット出られる必要があるのはプロジェクト作成時のテンプレート持ってくるとこくらいじゃないかな
それもう見飽きた
結局scalaは流行らなかったなwww
もう言語っていうよりフレームワークとDSLの時代だもんな Groovyは言語仕様としての質も完成度も低いが時代の流れに完全にマッチしてた 言語自体のGroovyは死ぬ可能性はあるがGradleはもうなくならんだろう ScalaはそもそもSBTの時点でセンスなかった
俺もSBTとXML嫌いだ。あとCSSも。 3つに共通することだが簡易さと厳密さのバランスが感性に合わぬ。 俺が欲しかったのは動的すぎるのを適度に抑えた GroovyやPythonやRubyでありScalaではなかった。
自分で作れ
これからはセイロンの時代
553 :
デフォルトの名無しさん :2014/10/26(日) 00:30:25.77 ID:1gOcb0xq
>>552 Ceylonはnull関連以外はいいところってあるの?
>>548 大物案件ぐらいしか使わないだろうしな
play2が流行ればあるいは
Kotlinにもあるがnull禁止型の考えは良いよなぁ Scalaも値型を強制するような記述ができればよかったのに
scalaって2014年になってからまた注目度も上がっているような気がするが、
一般の人が使う関数原語の機能なんてjava8で十分なんじゃね?
Java.next("笑");
>>556 clojure で scala と java 呼びだしてる俺に隙はない
>>556 関数型の部分抜きにしてオブジェクト指向言語としても
scalaはbetter javaだと思うんだけど
>>558 clojureのいい本教えて!
>>559 何も知らねえ奴に勧める本なんかねえよ
せめてプログラミングClojureくらい読んでから質問しろやカス
repl のあるjava jdkがreplを採用するまでは scalaの優位は揺るがない
いやIDEならJavaもreplあるでしょ どうせJavaもScalaもIDEないと使いものにならないんだし
いや重いide立ち上げなきゃいけないのとは違うと思うが 上手い人はコマンドラインで結構バリバリ書いてるし
emacs+コマンドプロンプトなのは俺だけか…
Java9にREPL入れたいって話出てて織田先生が文志向の言語にREPL入れてもってコメントしてた
>>566 確かにそうだよね
java9が値ベースになればいいのでは()
むしろ、replを残したままCと互換性を作る方向に行ってほしい scalaっぽくて、replで使えるCがあればぜったい使うのだが
>>568 C++そのものだけどClingってのがあるよ
>>568 C インタプリタをお望みか?後藤さんのCINT はいまいずこ?
ガベージコレクタ前提の言語にcは大変なんじゃね?
ある任意のクラスをEnumみたいに列挙したい場合に、 Enumの代わりにcaseobjectがよく例に挙げられるけど、 列挙したメンバはループで回したいからEnumみたいに自動でリスト化して欲しいんだよね・・・ なんか良い方法ないかな?
javaのenumを使えばいいんじゃ?
Javaは「任意のクラス」をEnum化できないよね 一応その任意のクラスがinterfaceを継承してれば、Enumにも同じinterface実装させて メンバとして任意のクラスのインスタンス包含してメソッド移譲すればいけるけど、それは条件付きだし面倒じゃん? それともJavaのEnumを継承するっていう裏ワザ? あれ挙動がわからないから知ってる人おしえて欲しい
Clojureにはdefrecordがあるんだけどね
reflectionってどういう用途で使うの?
Javaから移ってきたけど、今まで可変なListで状態を管理していた部分を、不変で上手く表現できない。 例えばJavaのGUIでよくあるリスナーなんかは、都度addしたりremoveしたりするけど、 Scala流でいくと、そのたびに新しいリストを作るのかな? (この場合、リスナーがそもそも可変な状態を持ってることが多いから当てはまらないかもしれないけど) 自分にそういった設計する力がない場合は無理に不変にしなくていいんだよね?
>>577 immutableでやるなら、元リストから新リストを新しく作る
だけど、元リストが不変であることから、内部的には元リストへのリンクを追加していくだけになり、それほど問題はないはず
>>578 なるほどありがとう、追加と削除はさほど問題ないのね。
もしプリミティブのリストの1要素が変わる場合でも、同じことだよね。頑張ってみる
いやイベントを発行するクラスが不変じゃなきゃ意味ないだろ その内部でリスナを保持するコレクションが不変かどうかなんてはっきり言ってどうでもいい
リフレクションはフレームワークやを作る人のためのものだな アプリケーションコードで好き勝手に使わせると最低最悪の糞ができあがる
584 :
デフォルトの名無しさん :2014/11/13(木) 00:50:09.05 ID:rsmCfUri
今日本屋行ったらコップ本の第二版がでていたけど、初版持ってても買い直す価値あるの? それともあまり変わってないの?
>>584 書店で見たなら手にとって中身確認すればよかったじゃん。
初版も読んでないから比べられないってとこなんだろうけど。
どうせ読まないなら買いなおす価値なんてないよ。
“azzbzzzczzzz” こういう文字列を”z”じゃない先頭の文字で”z”をreplaceして 以下のような文字列に置き換えたいんだけど、smartかつimmutableにやる方法無いかな? “aaabbbbccccc” fold使ってキーブレイクしてるんだけど、いまいちsmartじゃ無くてさ
scala> val ptn = "([^z])(z+)".r ptn: scala.util.matching.Regex = ([^z])(z+) scala> def replace(s: String) = ptn.replaceAllIn(s, (m: util.matching.Regex.Match) => m.group(1) + m.group(1) * m.group(2).length) replace: (s: String)String scala> replace("azzbzzzczzzz") res0: String = aaabbbbccccc
>>587 こっちのがいいか
def replace(s: String) = ptn.replaceAllIn(s, m => m.group(1) * (m.group(2).length+1))
>>588 ごめん。分かりやすくしようとしてシンプルにしすぎた。
実際はもう少し複雑なんだ。
sealed trait X
case class A() extends X
case class B() extends X
case class C() extends X
case class Z() extends X
List(A,Z,B,Z,Z,C,Z,Z,Z)
↓
List(A,A,B,B,B,C,C,C,C)
>>589 やっぱそうだろうと思ったわw
scala> def replace[A](list: List[A])(p: A => Boolean): List[A] = list match {
| case Nil => Nil
| case x :: rest =>
| val (xs, ys) = rest.span(p)
| List.tabulate(xs.length + 1)(_ => x) ++ replace(ys)(p)
| }
replace: [A](list: List[A])(p: A => Boolean)List[A]
scala>
scala> replace("azzbzzzczzzz".toList)('z' ==) == "aaabbbbccccc".toList
warning: there were 1 feature warning(s); re-run with -feature for details
res1: Boolean = true
>>590 ちなみに、 case class より case object のがいい。
sealed trait X
case object A extends X
case object B extends X
case object C extends X
case object Z extends X
replace(List(A,Z,B,Z,Z,C,Z,Z,Z))(Z ==) == List(A,A,B,B,B,C,C,C,C)
@BeanProperty試そうと思ったら scala.beansパッケージをIntelliJが認識してくれない(コンパイルは通る) 同じ症状の人いる?
>>590 なるほど、その発想は無かった。やっぱり再帰使うしかないのか。
ただこれだと、末尾再帰じゃないからデータが増えると奴がやってくるね。
今、こんな感じでやってるんだけど、こっちの方がreadableじゃないかな。
val list = List(A(),Z(),B(),Z(),Z(),C(),Z(),Z(),Z())
list.foldLeft((list.head,List.empty[X])){(l,r) =>
val (target,result) = l
r match {
case x:Z => (target, target :: result)
case x => (x,x :: result)
}
}._2.reverse
>>593 readable とは何かって話だが、提示された仕様を実装するための
自分自身の思考パターンをほぼそのままコードにしているから
記述スタイルを除いて、俺にとってはこれ以上 readable にならん。
実際
>>593 を見てなぜそれでいいのか即座には理解できないでいる。
Akka を使って、処理を map reduce のように 1 -> N -> 1 としたいのですが、N の送り先をどのように設定するのがベストでしょうか。 object を宛先とすれば勝手にこうなりますか? 1 -> N はわりとサンプルが多いので簡単に作れたのですが。
aggregator パターンと呼ばれているものが使えそうでしたが、 それほど複雑なものは必要なかったので ActorRef を保持する object を作り それを参照して送受信するようにしてしまいました。 ありがとうございました。
pathでやったことがあるような気がする。
並列コレクションでいいじゃん Actor使う意味がない
ましんまたぐんじゃないの
600 :
デフォルトの名無しさん :2014/12/03(水) 22:36:37.34 ID:mN47767/
scalaスレ最近書き込み少ない。 興味はあるんだけど、将来性はどうなん? 業務で使われているみたいな話はたまにあるけど 案件増えてるんですかね?
なんか Scala ってごちゃごちゃしてる
すっからかん
603 :
デフォルトの名無しさん :2014/12/04(木) 00:16:28.05 ID:HlG2OCoT
もうコップも空だね
いまのところ、2年くらい前に作った自社用プログラムの保守だけ
605 :
デフォルトの名無しさん :2014/12/04(木) 21:27:50.95 ID:LLako/JK
>>604 全くないって訳じゃないけどごく稀にって感じですか。
今更ですけど、最近"Scalaで学ぶ関数脳入門"っていう本を読んで
悪くないと思ったんですけど、じゃあjavaの代替として主流になるというとどうかと。
javaがよく使われる大規模な業務システムとか大人数の開発だと
レベルの高い人と低い人がいる訳で、全員が使いこなせるとは思えなく。
Ruby(Rails)なんかで開発してる層はtwitterみたいに移行する事もあるでしょうけど...
>>605 流行らないって言われたら手を出すのはやめるの?
自分の興味関心に忠実になればいいだけの話だと思うんだけどなー
まあ技術的な興味ではなく「自己啓発」でScalaに関心を持った人にとっては
仕事にできるかどうかがなにより重要なんでしょうけどw
Javaのラムダ式が広く使われるようになったら Scalaももっと受け入れられるかと思っていたが 精神衛生的にJavaでラムダ式使える人はJava使っていれば済むんだよな Androidの標準開発言語になるくらいのインパクトがないと このままじゃね
Scalaはレベルの高い人同士でも各自が好き勝手に「使いこなしたら」本当にそれぞれ全然違ったコードになっちゃう せいぜい、密接にコミュニケーションが取れる数人のチームまでだね
>>605 604 本人じゃないけど
興味関心が高まる要素の中に「流行ってる」ていうのが入ってるひとが居てもおかしくないと思うが
今後のことはわからないけど、思ったより流行らなかった みんな4,5年前はもう少し流行ると思ってた
みんな勘違いしてる scalaがうけたのはλ式ではない replだ
珍説登場
もうちょっと java っぽくなければやってた
javaっぽい上にデフォルトでreplがあるのがscalaの売りです
えぇー……
APIの綴りが長すぎてreplやエディタで気軽にとはいかないんだよな
617 :
デフォルトの名無しさん :2014/12/09(火) 20:30:40.08 ID:/ijYo4+P
>>610 scala祭りとかやったりしてて4,5年前よりかは期待も上がってると思う
javaの代替とまではならないんだろうけど(個人的になんでjavaで書くのかよくわからん)
JavaがTrait導入すればいいだけなような
Java の標準コレクション、特にメソッドが不十分
Scalaは可読性悪すぎ
>>617 なんでJavaで書くのかわからんならScala使わなくてもいいんじゃない?
言語だけで自由に選べるならScalaより洗練されてる言語はたくさんあるよ
Scalaが使われる理由の8割はJavaが使われる理由と同じ
Javaが使われる理由 @30% 今までJavaだったから、他のプロジェクトがJavaだったから A30% Javaが書ける人が沢山いるから B30% 静的言語を使いたいのにC#が利用できないから C10% Javaが好きだから Scalaを使うとしたらBの状況で、少数精鋭でもっとマシな言語を使いたいって場合だけじゃね
関数型言語でも箇条書きのように羅列する人が多い コピペしずらいとも苦情が 求められているのはシンプルで綺麗なものではなく 誰でも書けるイージーなものだったりして プロジェクトに採用しない理由
本格的にドカタ開発で関数型を使うなら、変にOOを混ぜないで純粋にIPOで設計して データ項目間のルールをそのままコードで羅列するスタイルがよさそう それなら分かりやすいし規模的にスケールさせやすいだろう
>>621 ちょっといいすぎた
jvmで動くしjavaapi使えるんし関数型やらんでもbetter javaなんだから
もうちょっと普及してもいいんじゃなかなぁと
みんな難しく考えすぎ Java = ポインタのない C Scala = replのある java
Java1.4とScala2.11ならScala選ぶけどJava8との比較だと導入の手間考えてJava8でもいいやと思ってしまう
まずはシンプルなビルドツールをだな
Optionalとstreamで片付くこと多いからな
あとはクラス定義が面倒なのと検査例外が邪魔なのさえ何とかなればもうScalaはいいや 検査例外はラムダが普及すれば自然に滅びてくれるはず クラス定義はC#6.0を丸パクリしてくれれば
えっおまえらcase classとパターンマッチと型推論いらないの
もちろん要るからScala使えるメンバー揃ってるならそっちにするんだが
>>621 の言うように、より優れた言語は沢山あるのにScalaを選んでる時点で
もともとJavaプラットフォームを使うために言語をある程度妥協してるんだよな
そこの環境と言語のバランスに強く影響される言語なのは確か
Haskellとかだと言語100%で使ってる人がほとんどなんだろうけど
634 :
名無しさん@そうだ選挙に行こう :2014/12/13(土) 14:39:26.56 ID:4dRs6Zja
そう考えると、C言語にオブジェクト指向の味付けして、その後Javaとか C#とかにも影響与えたC++ってすごかったんだな。 中途半端な妥協言語で終わらなかったわけだから。
複雑なものが拒否されなかった時代だったからこそC++はあんなことになったんだと思う。 JavaEE辺りが本来不必要な思想的な複雑さを極めた反省からか、今は数学的なバックグラウンドがないと複雑さは受け入れられなくなってる。 今後は数学的なバックグラウンドがあってもやはり受け入れられないタイプの複雑さってのが整理されて消えていくと思うよ。 モナドとか。
リスト処理とか気付いてないけどモナドなんですが…どうやって消すの?
>>634 C++を使うくらいなら、Cの構造体を駆使して頑張るよ
どっちかっていうと、モナドって Haskell だから意味があるんであって。 個人的には do式、Scala で言うと for式 がモナドごとに名前付けられるとよかったな F# のコンピュテーション式?みたいな
プログラムの計算の列を抽象化したものがモナド つまり、どの言語にもモナドが隠れている 逆に、モナドを明示的に示す形でしか計算の列を書けなくしたのがHaskell
いやだからその抽象を明示的に扱えるのが意味のあるところなんだろ?
>>640 「意味のある」の意味が、「論文をたくさんかける」「実際に動くコードを使った計算理論の説明がしやすい」なら、その通りです
おっと。確かに意味があるって書き方が曖昧だったね。 文脈で構文の話だって分かると思ったんだけど
「抽象」って「隠れて」たり「在」ったりするものなの? おしえて偉い人
>>643 抽象は隠れてますがあります
「+」と「*」を抽象化した「演算」ですが、「+」と「あ」を抽象化したら「文字」です
ScalaってRailsより生産性高い?
>>645 言語とフレームワークは比較対象としておかしい
Play framework と Ruby on Rails あるいは、
Scala と Ruby なら比較できる
また、どういう領域、目的でそれらを適用しようとしているか明確にしないと答えようがない
実質RubyとRailsはイコールみたいなもんだからおk 認めたくない人は多いだろうけど現実見ようぜ
Railsで半日でやれることをScalaだけで半日でやれる気はしない Scalaで数ヶ月かかることをRailsでやれる気もしない
で も や る ん だ よ
Scalaの正しい発音ってどんなのですか 自分はピザーラと同じ発音をしていますが
シャラ
個人で触ってるだけなんだけど、Scalaz無しのScalaをまともに使える気がしない。 でも、仕事で触るなら普通Scalaz入ってないってマジなの? みんなどうやってカバーしてるの?
>>654 Scalazさっぱり分からない
どこから手を付ければいいのアレ
Scalaはお前が想像しているほど難しいことには使われていない 大抵、ベターJavaとしてWebのクソつまらん似たようなコードをちょっとだけ簡潔に書くのに使われているだけ
関数型バリバリのライブラリは名前が抽象的すぎ 他人が書いたコードで使われてると、メンバの役割と名前の対応を暗記してないと何やってるのか全然わかんない 複数人での開発だと、利用範囲を絞り込んでリストでも作っとかないと使い物にならないね
それは命名規則の話でscalaの問題としては一般化できないし プログラミングにおける問題としては一般的すぎるような
名前が過度に抽象的になりがちなのは関数型プログラミングの特徴的な問題ではあると思うぞ 関数型では操作のパターンを抽出してコードを共通化していく場合が多いが、 それを端的に表現するような言葉は自然言語には少ないからね
命名規則を機能から辞書順序集合への写像として分析する分野があってもいいはずだ
まぁ名前で分かった気になるくらいなら 暗記するまで毎回定義(実装)を確認しに行くくらいの方が 長期的には有益な気もする IDE使っていれば大した手間じゃないし 数式なんて形式的意味しかない(つまり意味のない)名前ばっかりだが それほど問題じゃないところを見ると 単に馴れの問題かと
日経ソフトウェアでScalaの連載が始まるね。 ただ、あの雑誌いつまでも最初の導入の記事ばかりなのが少し残念。 あの雑誌の想定読者が幅広く設定しているから、 だれでも読み始めることができる導入部分しか企画として通らないのだろうけど。 連載一ヶ月分のページ数内で、一見さんにも「おおっ」って言わせられるような、 具体的な応用例とか載せてくれると面白いのだが。
事実だとしたら3年遅い
664 :
デフォルトの名無しさん :2014/12/29(月) 07:09:07.73 ID:X4sGBoa8
>>655 すごいhaskell本みながら独習scalaz勉強すればいいんじゃないかな?
665 :
デフォルトの名無しさん :2014/12/29(月) 09:41:00.97 ID:RT8SA5DK
新宿Scala座
もういい加減RustかSwiftか仕様決めてくれよ! あとScala--出せ ほんとにC#なんかが天下取っちまうぞ
C#は今パターンマッチを導入しようとしてるね JVMとの相性の悪さが致命的だが、言語としてはもうC#でいいな
KotlinあたりがちょうどScala--にあたらなかったっけ
>>667 一瞬 C#とJVMの相性が悪い? って勘違いした
Scalaは底辺の頭の悪さをなめてるんだよ 反変共変+−どっちだっけ?より、C#の out/in の方が分かりやすいかなあ
>>670 はっきり言うとそういう底辺はプログラマを目指すべきじゃないでしょ
javaどころかphpも触っていけないタイプ
精々vbaでもやってて下さいって感じ
>>667 >C#とJVMの相性が悪い?
そのつもりだよ
C#をJVMで動かすのってできそうでできないんだよ、JVMの機能が全然足りなくて
逆に.NETでJava動かすのは簡単なんだけどね
>>671 その通りだなあ。最近読みやすさが一番大事になってきた
>>672 うん。Scala も足を引っ張られてるって話ね。
だから、何か JVM 上で C# 動かすプロジェクトがあるのかと勘違いした
JVM言語で.NET上でも動くやつなかったっけ?
.netでscala動かすって話は立ち消えになっちゃったのね できたら凄いのに
動かせない理由はないし実際昔はあったけど、 C#じゃどう考えてもクソ強力なIDEサポートを捨てるデメリットの方が遥かにデカいだろ ScalaはJVMに引きずられて不自然な制限がたくさんあるから、言語仕様面でも総合的にはC#より強力とは言い難い
頑張ればネイティブコードも吐き出せるようにできるのだけど、そうするとJava系のライブラリ資産が使えなくなるのが厳しい。 何かと惜しいよね。Scalaは。 今時のLL言語って、RubyもPythonも独自のVM上で動かしているんだから、 ScalaがJVM上の言語というのも悪い話ではないはずなのに。
JVMの方ではErasureのお陰で高階型が楽に実装できたけどCLRの方では無理っぽいんじゃなかった?
679 :
デフォルトの名無しさん :2014/12/30(火) 11:45:20.86 ID:bUalCEjV
>>676 >ScalaはJVMに引きずられて不自然な制限がたくさんあるから
例えばどういうのがあるの?
JVMの制限が無ければこうした方が良かったのに、と思うような仕様って?
高階型はそもそもJavaとも互換性無いでしょ Scalaみたいにリフレクション使った無茶な実装でいいんならどうとでもなるよ JVMに由来するScalaの制限としては、値クラスやClassTagなんかが代表的かな JVMの仕様を知らなければ誰が見ても不自然
Scalaの教訓 必要なのはJVMではない REPLだ
>>679 コンテナの型消去なんかが代表的じゃない?
後これはjvmの由来ではないけどjavaとの互換性のためにNull型のインスタンスのnullが存在していて
scalaでも悪さする場合があるところとか
>>681 replというか重要なのはライブラリの豊富さと実行環境の普及度と信頼性じゃないか?
他の関数型の言語が言語としての完成度はscalaよりも上でも中々普及しないのはここらへんじゃないかな
まぁscalaが従来のオブジェクト指向言語としても使えるっていう柔軟性もかってるだろうけど
ライブラリの豊富さと実行環境の普及度はJavaと同じ 商用プロジェクトでもないかぎり、プログラマはそれほど高い信頼性を求めていない scalaの普及度が低い理由は、理数系のテキストで使うプログラム言語に採用されてないからでしょう 連立方程式あたりを標準ライブラリとしてデフォルトで入れて、replから使えるようにすれば普及度が上がるでしょう
数値計算に使おうとするとJVMのせいでパフォーマンスが出ないから、理数方面だと魅了はないだろ Javaが遅いって意味じゃなくて、パフォーマンスを出そうとすると結局JVM的に普通なコード(=Javaと変わらないコード)になるって意味な
>>684 >ライブラリの豊富さと実行環境の普及度はJavaと同じ
だからその上で関数型言語を使えるようにした事がscalaがある程度成功した要因じゃね?
javaは十分に普及してるから
なんか、オライリーがpython信者な気がする
時代は、scala から pythonへ。なの? www
プログラミングより数式に興味がある人は Scalaみたいな複雑な言語覚えるより 環境構築が楽で出来合いの道具が揃ってて覚えるのも使うのも簡単で周りに使える人の多い言語を選ぶ
今調べたら家にある統計関係のオライリー本はpythonとRのやつしかなかった たぶん、どっかの大学がpythonを推してるのではなかろうかと推察
どっかの大学? MIT のことですかねぇ。
二兎を追う者は一兎をも得ず 【意味】 二兎を追う者は一兎をも得ずとは、欲を出して 同時に二つのことをうまくやろうとすると、 結局はどちらも失敗することのたとえ。
結論: せめて二百兎くらいまとめて追いなさい
いかに有望な候補手に探索を集中させるかが大事
MSと違ってGoogleはJVM作者いたりしてうまくやってたけど、Android抱えてからは訴訟抱えて新しいリソースは社外から集めてる印象。
Javaコンパイラ開発チームにいてMSに移った人が1.5以降のJavaはクソと言ってたぞ
Generics来て1.5から神になったんじゃねえかw エンジニアのためのエンジニアのくせに 開発者の視点でしか物を見てなすぎだろ
>>697 なお1.5以前のjava(笑)は・・・
そういえばジェネリックなかったころのjavaってどうやってたの?
Objectクラスとダウンキャストかな
Javaのジェネリクスはキャスト自動挿入のシンタックスシュガーに過ぎないから無くても大きな違いはないよ
>>697 で批判されてたのはその点
キャストの自動挿入と手動でキャストするのが大差無いって、 caseクラスやapplyメソッドの全否定じゃないの???
javaのジェネリクスって不変だもんね ? がでてきてやっと共変とかできるようになったんだっけ
scalaってweb系以外の業務で使われてる実績あるの?
関数型の真価はむしろ大規模業務アプリケーションのモデル記述で発揮されると思うけど、 それならF#みたいにもっと宣言性を強調した言語のほうが適してるだろうな ScalaはOOが出しゃばりすぎ
>>705 意思決定法の本に付属してたプログラムがscala使ってた
コードはなかったけど
OOがでしゃばりすぎっていうかOOで関数型を表現したって感じの言語だし
俺もはじめ実用性でScala使おうと思って今もScalaを覚えるつもりだけど Haskellの入門書チラ見してこれHaskell理解してないと関数型使えてるとは言えないと悟りScala一本で関数プログラミングを覚えるのはあきらめた Haskell理解せずにScala使っても構文と周辺機能の恩恵でバグを減らせるJavaの上位互換くらいでしかないんじゃないかな 実績が上がっても業界的には下請けの水準が上がればJavaの代わりに使わせようくらいの残念な扱いになりそう
業務で使うメリットがあるのは関数型というか宣言型だろうなあ 高階関数よりデータ間のルールを見通し良く記述することが重要
711 :
デフォルトの名無しさん :2015/01/10(土) 23:51:28.68 ID:+xbnxNj/
>>709 >Haskellの入門書チラ見してこれHaskell理解してないと関数型使えてるとは言えないと悟りScala一本で関数プログラミングを覚えるのはあきらめた
scalaz「せやな」
>>710 コレクションの操作とか業務でも普通に使うんじゃね
filter map あたりは便利だし
>>711 filtermap使った程度で関数やってますなんて言ったら嘲笑もんじゃね
あとScalazとHaskellじゃ情報量的な学習難易度がダンチとおもわれ
>filtermap使った程度で関数やってますなんて言ったら嘲笑もんじゃね
いや
>>710 が高階関数よりって言ってたから
高階関数ってコレクション操作とかで使うよなって
scalazは確かにhaskellやってからじゃないときついかも
型クラスとか意味不明だろうし
結局は、mapだろ? Obj_Aで、Func_Bを実行する ここでA,Bは無関係でもよく、継承関係にならず、 インターフェースみたいなもの 例えば、Bがディレクトリツリー全体を走査する機能で、 Aがコピーする機能とか、A'がファイル情報を見る機能とか Bがリモコンで操作する機能なら、 Aはテレビ・ゲーム・ラジコンなどに変わる
そもそも関数型の手引きがだいたいHaskellで書かれてるので それ読まない縛りで書こうとしても関数型言語でOOかよくて宣言型で書くレベルから 先に進めないかと
99.9%の人にはJAVA8で充分
関数型の一歩目って map より fmap じゃない。どっちにしろ scala だとよく分からないで終わる気が。
>>716 せやな
scalaなんて名前出した途端に99.9%の人に拒否られるやろw
>>716 Java9とかJava10でどんどん関数型の機能が取り入れられるだろうから
ますますどうなることやら
>>719 パターンマッチでダウンキャストする日も近いかもね
マルチパラダイム言語の優位とはなんぞや オブジェクト指向との親和性だけか?
scalaで言えばオブジェクト指向の言葉で書かれているから オブジェクト指向の人でも使えるし書けるし習得もしやすい事とか haskellみたいな純粋な関数型だと手続きっぽく書いたりするのできなくはないけど 結構大変だし
ScalaはどっちかというとC#のようにOOを関数型で補完するという感じだったのに 関数型ジャンキーのオモチャにされてカオスになっちゃった
Scalaはオブジェクト指向に無理矢理擬似的な関数型を取り入れたことが原因でカオス言語になったよなー
まるでカオスじゃなかった時代があったかのような 大体Javaが十分にカオスな時点で カオス上等くらいの心構えじゃないと
「デフォルトでreplが入ったjava」で良かったのに…
なんでreplそんなに好きなの?
最近、「コンパイルして人間が読めないファイルを作る」が普及を妨げていることが分かった
個人開発レベルですが拡張メソッドと@specializedがScala使う理由ですね。 他に後押ししてるのは、<:<とか@BeanPropertyとか。 しかし@specializedは値クラスを扱うというやり方でJavaにも輸入(輸入元はC#っぽいが)
lambdaに10年かかったJavaに値クラスなんか未来永劫入らないよw たかが既存機能(ネストクラス)のシンタックスシュガーですらあの有様なのに、 VMの大大大改造の必要な根本的な改修なんか今更できるわけがない クソGenericsと同じようにerasureで実装するんなら結局配列に入れたりgenericsで扱う際に ボックス化が必要になるからパフォーマンス上のメリットはほぼ無いし
Windows8にScalaをインストールし、Cygwinでscalaを動作させているのですが 標準入力をリダイレクトしたりパイプから送ったりすると、動作はするものの以下の警告(エラー?)が出ます。 stty: standard input: Inappropriate ioctl for device 原因もよくわかっていないのですが、警告が出ないようにする方法はありますでしょうか? $ cat ../input | scala stty: standard input: Inappropriate ioctl for device Welcome to Scala version 2.11.4 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_25). Type in expressions to have them evaluated. Type :help for more information. scala> 42 res0: Int = 42 scala> :quit
今時cygwinとかないわ どうせプロダクションで使えないのに苦労するだけ時間の無駄だろ Winでなきゃいけないなら普通に使うか仮想マシンにLinux入れてSSH
そういうのは結構です 知ってる人のみ答えてください
>>731 やってみた:
```
$ cat <<EOF > hello.txt
println("Hello")
EOF
$ cat hello.txt |scala
```
うちのLinuxでやったところ、
731 と同様に、REPLが立ち上がったあと、エラーなしに Helloが出力されるものの
その後の端末の動作がおかしくなったけど? (キー入力を受付けなくなる)
これって、やりたいことは、ScalaをREPLモードで立ち上げて出力を得たいってこと?
ならば、
```
$ echo 'println("Hello")' | xargs -0 -i scala -e {}
Hello
$
```
みたいなのでどう?
こっちなら端末(tty)がおかしくならないで戻ってこれたけど?
Scalaのフレームワークってどんなのがあるん?
何をするフレームワークを聞いてるのか
>>735 メモ帳+コマンドプロンプト開発フレームワーク
740 :
デフォルトの名無しさん :2015/01/26(月) 23:13:17.14 ID:5QqZI2K9
ScalaとJavaは両方できた方がいいですかね
というより、両方できないとあまり意味がないかと Javaの仕様に合わせるためにいろいろ諦めてる歪な言語なので、 Javaとの相互運用性を捨てたら割に合わんよ
「できる」の意味が「読める」なら、JVM言語は一通りできなきゃダメですね 最新のアルゴリズムやフレームワークは、どの言語で紹介されても理解してツギハギしなきゃダメですから
Scalaを使うときの検索ワードはほとんど「Java なんとか」だわ Javaが読めないと無理と断言できるしメリットも無いと思う
エラーメッセージがJVMからのそれだし
全部で28MBだから、アクターモデルが標準から消えなければ、scala 自体をjavaの標準API程度には理解しておけと言いたいが、Akkaになっちゃったからな…
今現在Java未経験だとしても、他のメジャーな言語は複数経験してて Javaもやろうと思えばサンプル見ながらなんとなく類推で使えるくらいでないと この手の言語に手を出すのは早い
scalaの良書は何がありますか? javaはそこそこ理解している前提
洋書除くとコップ本と逆引きレシピだなあ 他はバージョン的にも辛いものがある とはいえコップ本はちょっとハードル高いし、 逆引きレシピは他の本で一通り基礎をやった後に手元においておくタイプの本だと思うので この辺は初学者のハードルになってるんじゃないかと思う
750 :
デフォルトの名無しさん :2015/01/27(火) 23:57:45.62 ID:mf0t6skC
Akkaについて詳しく書かれてる本なんてないですよね?
コップ本は高い厚いハードル高い
洋書でのオススメはありますか?
洋書読めるなら、ドキュメント読めとしか…
Scalaで関数型デザインパターンの本は何冊か洋書で出てて、他の関数型言語やってないなら割とオススメ
755 :
デフォルトの名無しさん :2015/01/29(木) 23:04:03.89 ID:x+DZkfv5
オブジェクト指向言語でデザインパターンを駆使して実現していた目的の半分くらいは、 関数型では言語自体の仕組みで代替できる
GoFデザインパターンのことを言ってるなら、 その多くは単なる関数オブジェクトを別の名前で呼んでるだけだから、 ガチ関数型じゃなくても第1級関数さえ使える言語なら代替できるよ
> その多くは単なる関数オブジェクトを別の名前で呼んでるだけだから、 多くは? たとえば?
その代替できるってことも慣れてないと知らないことあるから本あるよってことね シンプルなストラテジーやファクトリは単に高階関数で済むとか外部イテレータあんまり要らないとか
オブジェクト指向は名詞的だけど、関数型言語は動詞的だから、なんとかかんとか
Scalaの和書ってAmazonで見ると2010年か11年ごろに出版されたものばかりですが、今から入門する場合でもそういう本使って問題なしですか?
http://en.wikipedia.org/wiki/Scala_ (programming_language)#Versions
見てると、2013年のver2.10でガッツリ変更入ってる感じに見えるのですが
>>760 本の中でアクターモデルの解説がどうなってるか、買う前に確認した方がいい
762 :
デフォルトの名無しさん :2015/01/31(土) 08:17:42.32 ID:fHA0y3z4
♪ 世界で一番優れた民族アクター、アクター共和国
763 :
デフォルトの名無しさん :2015/01/31(土) 10:55:47.40 ID:YMt5PyZL
764 :
デフォルトの名無しさん :2015/02/02(月) 21:07:43.93 ID:O11nlKXF
ScalaはJava並の人気言語になりますかね
JVM言語はパフォーマンス気になるようになったら コアをJavaに差し替えればいいだけじゃないかな パレートの法則的に
766 :
デフォルトの名無しさん :2015/02/02(月) 21:11:21.42 ID:UKP5zWl9
Javaの1.6以降てかいてありますね Software Requirements The Scala software distribution can be installed on any platform with a Java runtime, version 1.6 or later.
>>764 残念ながらそれはないだろうね
JavaやC#が「カオスにならない程度に」関数型を取り入れている一方
ガチ関数型も注目を集めつつある今、
Scalaは大衆言語にも関数型にもなりきれない極めて中途半端な言語になってしまった
JavaがScala以上に関数型になることもないだろうから 差が縮まった時点でScalaに乗り換えるシナリオもなくはない
Scalaはガチ関数型として使うにはあまりにも面倒臭すぎる まずは例外乱発のファッキンJavaAPIをなんとかしてくれ
>>769 この時のための検査例外だったのだッ!全て自動で直和型にッッッ!。
なおscalaの直和型()は
scalaは、関数型言語としての書き方が 分からなくても、最悪Javaっぽく書くことができるというのがメリットだと思う
Eitherみたいに全てを型で保証しなければならない系のガチなやつは いったん使うと決めたら使い通さないとあまり意味がない 無理のない範囲で既存資産と折り合いをつけながら使うならJavaやC#程度が限界だね
773 :
デフォルトの名無しさん :2015/02/03(火) 13:23:28.73 ID:cFvQZFKE
Eitherってなんて発音するの? いーざー?えいざー?
either は中学英語の範囲だべ
775 :
デフォルトの名無しさん :2015/02/03(火) 19:53:51.39 ID:wiwHxQ34
>>768 scala の優位性は「関数型」ではなく「デフォルトで入ってるREPL」だと何度言ったら…
関数型要素いらないならGroovyでいいじゃん
初心者のお遊び以外でREPLが役に立つのはデバッグ実行中だけだが、 その際は当然デフォルトのREPLなんか使えないし デバッグ中のREPLなんかIDEで20年前から実現されていること
普及を競うなら、庶民がIDEを入れるまでに高いハードルがあることを知るべきかと
一般庶民なら黒い画面にコマンドをパチパチ打つよりは インストーラでIDE入れて実行ボタン押す方がずっとハードルが低いと感じる人が多いかと
IDEの問題は、scala本がIDEを紹介してない点 一方、javaの入門書ではなぜかeclipse前提なのが多いという不思議
そりゃ言語とIDEを分けて考えられない程度の人たちを相手にする段階じゃないからだろ 自分用にオプティマイズされたWebの世界しか見てないと錯覚するかもしれないが、 「ごく一部のマニアだけが使っている言語」の域を出ないよ
>>782 一般というより、学部の卒業研究で導入できるかどうかが分かれ目かと
「コンパイル」を教えないで済む方法がある分だけ、javaよりはscalaかと
CI環境作りだすとIDEの設定が面倒すぎてもうVimでいいやになる
商用UNIXでviしか使えなかった時はパニックになった
化学系出身だけど,実社会でc言語絶世でC++に移行中のときにpascal習った。 今何教えてるんだろう。と思ったら、情報系でjava教えてるのはわかるとして、 化学系はC言語教えてる。データ解析のこと考えたら関数型言語教えて、 実社会のこと考えるならjava系がいいと思うのだが、 何故に大学の授業って「一般教養化」していくんだろうか。
>>784 素の状態だと普通に使えるのにIDEの設定間違えるとうまく動かないのな。
IDEの勉強なんぞしたくないし、するのがおかしい。
そもそもIDEなんて開発者を囲い込むかマイナー言語の使用者を増やすかのどちらかのためのものだし 前者は一般的機能すら独自化して他言語に応用が利かず閉じており後者は完成度が低くすぐ行き詰る IDEとVimはWindowsとMac(Unix)の違いと同じくコード片を実行する以上のことをしようと思ったらIDEは足かせになるだけ ただリファクタリングのときだけはリネームにIDEを使う
君たちは何を言っているのかね IDE使おうぜ
>>788 こういう連中が普及を妨げてるよね
テキストエディタの方が使い勝手がいい言語は確かに多い。
しかし、それらとScalaが決定的に異なる点がある。Java資産を使うということ。
Scalaの最大のアピールポイントはそこにあり、純粋に言語としては魅力に欠ける。
従ってJavaのIDEを前提にした既存の綴りの長いライブラリを使わざるを得ず、
補完のないエディタによるコーディングには相当な苦痛を伴う。
>>790 要するに既存のライブラリが使いたい。ていうのと
ライブラリの中のモジュール名が長くて覚えにくくてタイプミス
犯しやすいから、IDEを使わざるを得ない。と
なんか最近ズレてる奴が多いな お前らちゃんとscala使ったことあんの?
リネームさえバシッとできればテキストエディタでいい。他の機能大して使いこなしてない。
Scalaが人気出るのは言語仕様が固まって後方互換性を維持できるようになったとき 今はまだa better Javaでしかない
まだってBetter Javaを名乗るなら互換性は必須でしょ あえて言うならFaster Ruby (without Rails)だな
Java の資産が利点であり、最大の欠点な気がするが
最大の欠点はカオスな標準ライブラリと それを生み出し続ける関数型マニアコミュニティだろ
最大の欠点は、Windowsネイティブコンパイラの不在
型安全
>>799 それ作りづらいっていう意味か、windowsなんぞ後回しって言う意味か
jitがあるからそんなの必要ないって意味か、作っちゃいけない制限があるのか
どれ
>>801 いつまでたってもスタンドアロンの売り物を作れないという意味
クラスファイルとしてはJavaとほぼ同等だから原理的にはAOTコンパイラ作れるはずだけどモバイルや組み込み環境以外で必要か?
scalaに期待することではない気がする
もともとJavaがほとんど使われてない分野でわざわざScala使う必要はないわな WinならC#でいい
そもそもjavaには互換性がなかったという強烈なオチがある 嘘だと思ったら、10年前に作ったclassファイルを実行できるかいくつか確認してみるとよい
しかしJavaFXなら標準でプライベードJRE同梱のインストーラ作れるまでにはなったからな ネイティブコード云々はもう拘らなくてもいいかな
ちょっと前のセキュリティ強化で古いAppletが一切動かないとかじゃなくて、Java5のころの普通のclass動かないのか?
>>806 Enterprise分野で使用されるようになっているので
流石にJava1.5以降は後方互換性に気を使ってる
ソースから再コンパイルすればほとんどは動く
(動かないケースはゼロではない)
バイナリそのまま持って来たらちと厳しいけど
最近のJavaはサーバサイドで使われているだろうからそれでも問題ないのでは
Androidは知らん
バイナリ互換じゃなかった? ソースをコンパイルできない
-sourceや-targetでの古いバージョンの指定は順次切られてるね 古いソースでバージョン指定しないと警告大量に出るのはわかるけどコンパイル出来なくなる変更なんかあったっけ
>>810-812 どっちみち Enterprise用途は業者レベルのスキルの人が使うから、互換性がなくても問題ないかと
個人のPCで人知れず眠ってるclassファイルが動かないのは痛い
10年前の俺のソースなんか読むのも嫌だよ
ただ、Enterprise用途でも、ライブラリ関係の互換性がなかったり仕様が変わってるからコンパイルが失敗したり、警告の嵐に遭遇する
文字コード関係はバージョンやOSによっても、入力コードを統一していてもエラーなく動作が異なるから注意が必要かと
10年前のapache commons普通に使えたけど
ドカタ現場じゃソースのないサードのライブラリも使うこともソースが失われてることも 再コンパイルしてもなぜか動かないことも日常茶飯事よ
817 :
デフォルトの名無しさん :2015/02/07(土) 01:25:58.53 ID:0RBvpWmK
ひさびさにスレが伸びていると思ったら、いつもの、不満大会かよ。 ところで、今月の日経ソフトウェア見たけど、JavaFxが手軽に使えるのは面白そうだと思う。
まぁそのJavaFx自体が 手軽に使えるとは言いにくい気もするのだが
GUIエディタの出来ってどう?
・Swingに比べれば安定している(メタな仕組みじゃなくてXMLを編集してるだけだからかな) ・業務アプリなどのベーシックな画面を作る程度の最低限の機能は備えている ・ビルダ内でXMLを直接表示/編集できないのが極めて不便 ・スタイルの設定は色なども全て手書き ・ビルダ自体のUIが貧弱、アニメーションが鬱陶しい ・コードとの連携が無いに等しく、コントローラは完全に手書き VSと比べるならWinFormsとWPFのデザイナを足して16くらいで割った感じだね
IntelliJはUIはいいんだけどもっさりしてて… Eclipseに戻ってしまう
似たタイプのGUIビルダの中だとFXMLはVSのXAMLどころか QtのQMLと比べても全くお話にならないレベル AndroidのレイアウトエディタからIDE統合とXMLエディタを抜いた感じ
もっさり具合はEclipseも負けてないと思うが 明らかに高負荷な処理をやっているときに もっさりなのは我慢するとして Eclipseは後ろの処理がよく見えず 予想外のところで引っかかるからストレスがたまる 感覚的な話だけど
ide単体としてはvisual studioさんが凄すぎてな
VSの本当の「統合」を知ってしまうとIntelliJやEclipseでのScalaみたいに 出来合いのシェルにとりあえず言語追加したレベルのものを統合開発環境 と呼ぶのには抵抗を感じるようになるね
そこまで差があるとは思えんのだが もっさりだが
自分の知らない場所で勝手にファイルを編集される部分があるのが嫌だ いちいちマウスをクリックするのが嫌だ そんな私のIDEは、メモ帳+コマンドプロンプト です
Scalaはそれでいいかも知れないけど JavaはIDEなしなんて考えられないんだが
>>825 同意
「機能」としては言葉の上では似たようなものに思えるかもしれないが、入力補完のスピードとか含めた完成度がぜんぜん違う
VSは確かに凄いよ
scalaでtuiアプリを作りたいんですが 何かいいモジュールはありますか?自分で探しましたが見つけられませんでした…
すいません、言葉足らずでした tuiを簡単に実装できるモジュールです
日本国内でScalaで書かれたWebサービス提供してるとこある?
やはりjavaのを使わないといけないですよね、ありがとうございました
AndroidのアプリもScalaで書けそう?
Scala使うのが目的でなくアプリを作るのが目的なら時間の無駄だから絶対にやめておけ バックエンドだけScalaで書け
うち、Scalaでwebサービス構築してるよ。 Scalaである必要があるかと言われたら、まぁないと思うけど。
839 :
デフォルトの名無しさん :2015/02/12(木) 14:54:34.50 ID:2uNgZJlO
Scalaが次世代言語の最有力と聞いてコップ本を根性で読破したけどかなり難しいな 今までやった言語の中で一番難しかったわ
prologやhaskellのパラダイムを個別に習得しないと意味ないだろ
prologもhaskellも癖というか思想が強すぎて マスターする頃にはScalaのこと忘れてそう あと、もはや次世代じゃないし 最有力ってのも買いかぶりすぎだと思う そうなったら面白いとは思うけど残念ながら
Scalaをスクリプト言語のように使うなんてストラディヴァリウスのヴァイオリンで釘を打つようなもの
そんなこと言うとREPL君がまた暴れますよ 釘が打てりゃ上出来じゃない? みんな自分の頭を打ってるよ
>>839 後半の半分はGUIのところ以外は読まなくてもOKだよ
読んだところで、どうせ仕様が変わるだろうし
コップ本はいい本だと思うけど最初に読む本じゃないな
初学者向けの関数型プログラミング本を先に読んだ方がいい
>>841 Scalaが登場してから10年ちょっと経ってその間にJavaでのパラダイムも一巡して
JVM上の言語も増えてきたってことで適度に枯れて機が熟したってことじゃないの
ErlangやHaskellだって前世紀の言語だしな
JVM入れてScala入れてEclipse入れてPlay2入れてEclipseからPlay2使えるようにするまでがめんどい もっと簡単にならんの
たいぷせーふあくちべーたーとかいうの使えば簡単にできるんじゃねえの 使ったことないけど
848 :
デフォルトの名無しさん :2015/02/14(土) 13:35:17.93 ID:EkzT7W5q
トンカチを持つと、人間がみんな釘に見える(危険)
849 :
デフォルトの名無しさん :2015/02/16(月) 22:43:20.04 ID:GqArjrVy
共変と反変ってどういう状況で使えばいいの? イマイチ使い道がわからん
無理して使う必要はない というか、あなたが分からないってことは、普通の人も分からないはずなので、よほど教育をほどこした内輪プロジェクト以外では使うべきではない
意味をなさない名前のせいでわけわからんくなってるだけで そんなに難しいかなあ 実際にやることといえば リストを読み取り用に受け取るメソッド宣言するとき、 その引数のジェネリクスを共変にするってだけだろ? それ以外の使い方なんて見たことない
反変と共変の指定の仕方はC#のin/outが抜群に分かりやすい 基本的に反変は入力に、共変は出力に使う
その昔Cを知っている人がC++をa better Cとして使ったように Scalaもまずはa better Javaとして使っておけばいいんじゃない? マルチパラダイムな汎用性の高い言語なんだしイディオムを習得するのはその先でもいい いきなりコップ本とか読んじゃって躓くのがこのパターン
反変・共変ってライブラリ作る人以外はあまり気にしなくていいと思う。 型変数使ってないからイメージだけだけど、例えば以下のようなtraitをイメージする。 trait Sample { def m1(p: String): CharSequence} これを継承したクラスでm1を実装するわけだけど、 def m1(p: String): String みたいに必ずStringを返す実装をしたとしても、 元のtraitは満たせるはずだよね?ってのが共変。 def m1(p: CharSequence): CharSequence みたいに、引数はCharSequencenならなんでもいいよってしても、 同じく元のtraitに対してStringを渡したら絶対処理できるよね?ってのが反変。 厳密に話すともっとややこしくなるだろうけど、イメージとしてはこれで十分だと思う。
Javaのはアレ反変兇変って言わないんだな… インターフェースの定義側で反変兇変できるの羨ましい
ドカタが怖がるから共変反変言わないだけで、ワイルドカードがあれば十分でしょ 定義側で方向指定すると制限がインターフェース全体に及んでしまうしな まあ、常に利用する側で指定させるやり方だとジェネリックなクラスを自分で定義せずに使うだけのドカタも ワイルドカードを駆使しなきゃいけないわけで、明らかに大失敗だけどね
>>853 C→C++ は、ほとんど上位互換だけど、
Java→Scalaは、文法がだいぶ違うからなあ。。
Scalaは、Javaのバックグランドが利用できる強みは大きいけど。
肝心のJavaが下火だと、、、。
Perl→Ruby は、移行することで世界が広がったけど、
今、Scalaに移行したところで、あんまりメリットがないんだよなあ。
だけど、日経ソフトウェア見て、ScalaFX(JavaFX)は、少し使いたいと思った。
Haskellみたいな副作用強制的に分離させられる言語ならまだ納得出来ないこともないが 関数型言語で並列性って基本セールストークじゃない? そのFPGAはScalaでDSL書きやすいって話で並列あんま関係なさそう
関数型の恩恵で並列化できたとしてもパフォーマンスの向上はあまり期待できないとどこでもいわれている 並列化前提のときに生産性と安定性を求めて選ばれるものだろう
フォーマルメソッド()
副作用を強制的に分離させられて基本的に正格評価な言語はないんですか
そのような言語のメリットを教えて
elmとかidrisとか
Scalaはどこでも普通に副作用書けるしそれを処理系が厳密に検知するのも不可能だから 特に並列性の面で有利なことはないよ
JVM上で動くことが大きいな Javaはなんだかんだで広い範囲で使われてきたので、それを実行するJVMの安定性は 大きな魅力だね
とりあえずvalしとけ
変数書き換えはともかく、静的検査を厳密に行うにはOO流の多態を完全に捨てなきゃいけない だけどそこまで行ってしまうとScalaの存在意義が…
OO流の多態? せいぜい程度の問題であって 完全に捨てるってのは分からん
>>866 JVMというより、Webサーブレットでjavaの資産が使えるということかと
Webサーバーと特殊すぎるデバイスドライバ以外ではjavaの製品は見たことないし
>>870 職場のメインOSがWindowsオンリーで
開発のバックプレーンはLinux で、
一方で、Macを使う社員やお客さんもいるので、アプリを提供できればうれしい、
というような会社では、Javaはありがたい存在のはずなんだけどね〜。、
いかんせん組込み系の会社なので、Javaはものすごく嫌われている。www
Web系の会社だとJavaに抵抗感ないのだろうなあ。
> Webサーバーと特殊すぎるデバイスドライバ以外ではjavaの製品は見たことないし
Notesとか、その手のデータベース系のソフトは、インストするとJVMを個別のフォルダにインストールしてたような。。
Javaは、とにかくユーザーインターフェイスがウンコ
swtそこまで悪くないやん どうしてもいやならjambiとか
SWTはJavaじゃないだろ 美しいJavaの世界を汚す、忌むべき不浄な存在
876 :
デフォルトの名無しさん :2015/02/26(木) 01:31:24.03 ID:Nr5g+HBJ
Scalaの技術書3冊ぐらい読んで勉強したけど 実務で使えるようになった気がしない
実務でScala使えるかどうかは勉強じゃなくコミュニケーション能力の問題
878 :
デフォルトの名無しさん :2015/03/03(火) 14:46:19.40 ID:AJWFRdg7
Scalaではどのフレームワークが人気ある?
メモ帳+コマンドプロンプト開発フレームワーク が一強かと
なんのフレームワークについて聞いてるのかはっきりしろよな Web?開発?PJ管理?
Web…play2が制したと言ってもいいんじゃないかな。liftは負けた 開発…IntelliJが無難かな。eclipseはJava臭いので避ける人も多い emacs(or vim, sublime) + ensime も実用レベルになってきてる感じ
俺もLiftはもうやめたけど、JSON部分とBoxクラスは嫌いじゃなかった。 前者は、Json4sとして今後も使う予定。
みなさまはsbtを使っていますか?
>>883 むしろsbtを使わなくてもscalaってできるものなの?
sbtを使いこなせてる気は全くしないけど、常に使った状態でしかscala触ったことが無い。
IDEなら特にビルドツールがなくても動くし、 パッケージ管理が不要なら極端な話Makefileでも十分 Javaと組み合わせるならMavenの方が好まれる場合もあるだろうな
886 :
デフォルトの名無しさん :
2015/03/09(月) 13:30:49.43 ID:kghuyWld IDEAしか使ったことないけど sbtじゃないとコンパイルとか実行とかめっちゃ遅くない?