プログラミング言語 Scala 10冊目

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
The Scala Programming Language
ttp://www.scala-lang.org/

日本Scalaユーザーズグループ
ttp://jp.scala-users.org/

■前スレ
プログラミング言語 Scala 9杯目
http://toro.2ch.net/test/read.cgi/tech/1364619119/

■Scalaの紹介文(さわり)
Scalaは簡潔かつ優雅で型安全な方法でよくあるプログラミングパターンを表現できるように
設計された汎用プログラミング言語です。
Scalaはオブジェクト指向と関数型言語の特徴をスムーズに統合しておりJavaやその他の言語を扱う
プログラマをより生産的にすることができます。(以下略)
ttp://www.scala-lang.org/node/25

■Scalaに関する書籍(英語)
ttp://www.scala-lang.org/node/959
リファレンスマニュアルや草稿のPDFなども充実しているのでそちらも参照してください。
日本語の資料には、チュートリアルの訳やIBM dW、IT Pro, @ITの連載記事、各々で開かれた勉強会の資料などがあります。
2デフォルトの名無しさん:2014/01/25(土) 15:10:36.80
前スレがいつの間にか埋まってたので立てといた
3デフォルトの名無しさん:2014/01/25(土) 16:44:45.56
               ノ      ゚.ノヽ  , /}      ...
            ,,イ`"     、-'   `;_' '    ..::::::::::::::...
   ,-、  _.._   (        (,(~ヽ'~     ..:::::::::::::::::::::::
 )'~  レー'  〉   ヽ       i`'}       .:::::::::::::::::::::::
 ~つ     '-ー、  i       | i'     ...:::::::::::::::::::::::
 /       <  /     。/   !  ......:::::::::::::::::::::::::    これは>>1乙じゃなくて
/         ~^´     /},-'' ,●::::::::::::::::::::::::::::::::::::
i、        ,i' _,,...,-‐-、/    i  ::::::::  .:::::::::::::
..ゝ        <,,-==、   ,,-,/      .:::::::::::            放射能がうんたら
 )       {~''~>`v-''`ー゙`'~       ..:::::::::                          ........::.
 {        レ_ノ            ..::::::::.                         ......:::::::::
ノ         ''           ..:::::::                        ...::.:...:::::::::
                     .:::::::::                     ...:......:::::::::::: .
                    .:::::::::::.        .....      ..  ..::::::::::::::::::::::::   :::.
                    ::::::::::::::::.::::::....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.. ::  ::..
                    .:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::    ::.
                    ::::::::::::::::: :::::::::::::::::::::::::::::: :::::
                          .::    ::.  :::
4デフォルトの名無しさん:2014/01/25(土) 18:34:17.20
凄く基本的なことを聞くんだけど
scala+Play framework2.0で作ったサービスを公開するには
どういう鯖を借りればいいんだ?
javaが動けばどれでもいいんでする
5デフォルトの名無しさん:2014/01/25(土) 19:01:58.79
お手軽なのは平六かな
6デフォルトの名無しさん:2014/01/25(土) 22:55:32.62
herokuはrootアクセスできなくて面倒みたいな話がある
https://gist.github.com/Gab-km/5660808
7デフォルトの名無しさん:2014/01/26(日) 02:05:44.02
枯れているけどナウくないDbUtils
枯れてないけどナウいScalikeJDBC
JDBCのラッパーはどっちがええの?
8デフォルトの名無しさん:2014/01/26(日) 03:52:37.67
そもそもJDBCのラッパーって必要なのだろうか…
RDBMSとは文字列と数値のやりとりしかしないんだし
9デフォルトの名無しさん:2014/01/26(日) 08:36:24.95
トランザクションなどを上手く抽象化したいというのはあるな。
10デフォルトの名無しさん:2014/01/26(日) 08:47:09.37
jdbcの不完全な点はリゾルトセット取得後もコネクションを保持していなきゃいけないことだ。
これさえ解消されてれば自作ラッパーを作る必要も無かった。
11デフォルトの名無しさん:2014/01/26(日) 09:12:27.57
>>6
まあ、Herokuは開発者に対してrootアクセスを提供しない代わりに色々なサービス(freeプランのは大体制限がきついけど)をaddonとしてコマンド一発で
インストールできるし色々な雑務から開発者を解放してくれるよというものだしね。その代わりにHeroku特有の制限を色々受け入れなきゃいけない
し、Herokuへのデプロイは遅いしとまあ別の苦労を背負わされることでもある

自分で作ったサービスをとりあえず手軽にデプロイして公開したいならHeroku自体は悪くないんじゃないかな。デプロイ作業は確かに簡単だし
12デフォルトの名無しさん:2014/01/26(日) 09:15:27.19
リザルトセットは必要な行をとっととフェッチしてなるべく早く閉じるのが鉄則。
なのでコネクションを保持云々の不満が起こる理由がよく分からん。
13デフォルトの名無しさん:2014/01/26(日) 09:30:11.74
レコードが少ない場合はそれでいいけど,そういう状況ばかりじゃないんだよ。
14デフォルトの名無しさん:2014/01/26(日) 15:16:26.35
scalaのprotected[this]ってrubyのprivate相当なんだな
使いやすいと思うんだけどあんまり話題にならんね
15デフォルトの名無しさん:2014/01/26(日) 16:07:22.54
逆にどこに話題性が?
16デフォルトの名無しさん:2014/01/26(日) 16:58:18.45
「このフィールドはサブクラスにはインスタンスの外からアクセス出来るようにしよう」なんてケースあんま無いんだから
protectedを使う事は大分少なくなるんじゃないかと思うんだが
17デフォルトの名無しさん:2014/01/26(日) 17:58:24.07
いつ使うんだよ
18デフォルトの名無しさん:2014/01/26(日) 18:13:16.32
普通に上位クラスの実装を下位のクラスでも利用させたいとき
普通のprotectedだとインスタンスの外からアクセス出来ちゃう可能性があるけど
そんな意図が無いときはprotected[this]でいいんじゃないかと
19デフォルトの名無しさん:2014/01/26(日) 18:40:37.26
rubyのprivateがprotectedになってるのって
実装の都合上とかで仕方なくそうなってるんじゃなかったか
20デフォルトの名無しさん:2014/01/26(日) 18:58:03.50
Matzもどうしてそうしたか忘れてると言ってた
21デフォルトの名無しさん:2014/01/29(水) 15:13:57.27
ArrayとListを比べると生成時に使うコストがListのほうがはるかに小さいことはわかったんだけど、他はどうなんですかね。
調べてもよくわからないので教えてください。
22デフォルトの名無しさん:2014/01/29(水) 15:16:28.04
ListとSeqの使い分けについて、誰か語ってくれ。
23デフォルトの名無しさん:2014/01/29(水) 15:17:57.91
Scalaのコレクション周りは秘境
24デフォルトの名無しさん:2014/01/29(水) 17:24:34.66
canbuildなんとかを理解したと思ったら翌日には忘れてる
25デフォルトの名無しさん:2014/01/29(水) 17:30:52.62
Listは不変だから部分が共有されるからArrayより速いの?
それとももっとローレベルの話ですか
26デフォルトの名無しさん:2014/01/29(水) 18:44:53.67
可変Listは?
27デフォルトの名無しさん:2014/01/29(水) 20:04:22.48
Listはリンクリストだから固定長かつ不変の時は一般にメモリ消費も速度もArrayBufferに劣る
28デフォルトの名無しさん:2014/01/29(水) 21:06:56.37
Arraybuffer使っときゃいいの?わけわからん
29デフォルトの名無しさん:2014/01/29(水) 21:24:08.50
>>22
関数の引数は基本全部Seq型にしてる
でも戻り値の型もSeqになってしまって、元々の型情報が失われるのは不便
canbuildfromで頑張れば何とかなるみたいだが俺の頭では理解不能
30デフォルトの名無しさん:2014/01/29(水) 21:28:42.65
31デフォルトの名無しさん:2014/01/29(水) 21:38:32.74
コレクション+わかりやすく豊富なコレクションメソッド+第一級関数=最強
32デフォルトの名無しさん:2014/01/29(水) 21:43:22.63
.filter()にブール型の関数を渡すというのは割と衝撃的だった
33デフォルトの名無しさん:2014/01/30(木) 02:47:48.00
言語設計者の意図をくめば、ListよりもSeqを使うようにした方がいい。
何故なら、名前が1文字短いから。
ユーザにどんどん使って欲しいからこそ、SequenceでなくSeqにしたに違いない。
34デフォルトの名無しさん:2014/01/30(木) 15:31:15.24
Scalaを学ぶには、言語設計者の気持ちを理解しなければならない…!!
35デフォルトの名無しさん:2014/01/30(木) 16:39:54.35
actorオブジェクトのフィールドにスレッドセーフじゃないもの持たせても大丈夫?
java.sql.Connectionなんだけど
insertに結構時間かかるから非同期にやろうとしてるんだけど
36デフォルトの名無しさん:2014/01/30(木) 19:36:01.73
自分が気を付けてれば問題ない
処理速度とかは知らんけどな
メッセージで送るのはイミュータブルなのがいいよ
37デフォルトの名無しさん:2014/01/30(木) 21:45:28.59
> 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の良いパーツを自分で定義しないといけない
38デフォルトの名無しさん:2014/01/30(木) 21:47:32.52
何だその訳w
39デフォルトの名無しさん:2014/01/31(金) 00:09:29.86
scalaってもっとマシな構文にすりゃ流行ってたんだけどね
javaとrubyをセンスのないバカが混ぜて作りあがったカオスがscala
40デフォルトの名無しさん:2014/01/31(金) 00:55:39.95
>>37
マルチパラダイム言語をうまく扱うには、
領域に合った適当な部分言語を考えておかないといけないんだけど
でも結局人のコードを読むことを考えると、言語全体を把握しておかないとダメっていう辺りは
C++と似たような状況になるのかなあと

C++の場合はマルチパラダイムに加えて互換性の制約があるからもっと難しいはずで
そういう意味ではScalaはまだマシだとは思うが
41デフォルトの名無しさん:2014/01/31(金) 01:10:31.63
http://www.scala-lang.org/old/sites/default/files/linuxsoft_archives/docu/files/LangSpec2.8-ja_JP.pdf
言語仕様だけで200ページとかどんなけなんだよ…
これ、ライブラリ抜きなんだぜ?

Scalaはただでさえ仕様がオバケなのに、その上
自由度が高すぎてカオスになりやすいRuby系の文法だからもう無茶苦茶
42デフォルトの名無しさん:2014/01/31(金) 01:41:01.43
scala始めようと思ったけどひき返そうかな。こんなぼくにはpython辺りがよいでしょうか?
43デフォルトの名無しさん:2014/01/31(金) 01:53:15.49
プログラミングから引き返せ
44デフォルトの名無しさん:2014/01/31(金) 02:05:00.67
SQL>PHP>Java>Ruby>Python>c>>scala
45 ◆QZaw55cn4c :2014/01/31(金) 02:12:13.20
>>44
C++はどこ?
46デフォルトの名無しさん:2014/01/31(金) 02:15:01.75
http://docs.oracle.com/javase/specs/jls/se7/jls7.pdf
200ページでオバケなら670ページあるjavaはどうなっちゃうの?
47デフォルトの名無しさん:2014/01/31(金) 06:43:38.37
そもそも言語を選ぶ時に仕様書のページ数なんて気にする人間はほとんどいない
48デフォルトの名無しさん:2014/01/31(金) 08:55:55.89
CやC++も大概だし、Schemeの倍って考えると意外と小さいな
49デフォルトの名無しさん:2014/01/31(金) 10:06:40.32
仕様書が少ない!じゃあこの言語をを使おう!って人間がこの世にいるとは思えないんだが
50デフォルトの名無しさん:2014/01/31(金) 10:39:08.25
だっておまいらがページ数で脅かすんだもん。
51デフォルトの名無しさん:2014/01/31(金) 12:04:13.46
し、仕様書オバケが出たー!
52デフォルトの名無しさん:2014/01/31(金) 13:40:21.82
>>42
引き返すなら今のうちだぞ…
53デフォルトの名無しさん:2014/01/31(金) 22:47:04.73
scalaで自分が作った関数をprintln()などのように何もせず使えるようにするにはどうすればいいですか?
54デフォルトの名無しさん:2014/01/31(金) 22:56:12.13
何もせずっていうのがちょっとひっかかる言い方だけど
パッケージオブジェクトに置くか、もしくは
例えばobject A { def println() = {略} }って定義ならimport A._とかimport A.printlnすればいいよ
55デフォルトの名無しさん:2014/01/31(金) 23:12:18.91
ありがとうございます。
56デフォルトの名無しさん:2014/02/01(土) 00:27:21.23
前スレにあったeclipseのコンパイル早くなったというのあったけど、intelijやsbtにもネタがあるらしい

sbt0.13.2-M1の新しいインクリメンタルコンパイル試したら素晴らしい結果がでた
http://d.hatena.ne.jp/xuwei/touch/20140110/1389327912

IntelliJ IDEA 13.0.2の新しいScalaコンパイラ – 最大で25%高速化
http://blog.jetbrains.com/jp/2014/01/30/380
57デフォルトの名無しさん:2014/02/03(月) 00:35:27.34
scalatra使ったwebアプリをeclipseで開発したいけどどうしたらええの
58デフォルトの名無しさん:2014/02/03(月) 01:17:42.53
59デフォルトの名無しさん:2014/02/03(月) 03:03:43.51
Scala IDEは、いつになったら、呼び出し元一覧とか出せるようになるの?
60デフォルトの名無しさん:2014/02/05(水) 21:35:39.76
お前らケース文教えて
それか、vipにプログラミングスッドレ立てて
case classの変数マッチ case Class(1, a, b)みたいのって
どう実装されてるの?
冗長な引数があったらダメなの?例えば、角度で370度と10度は同じ意味ですみたいな
61デフォルトの名無しさん:2014/02/05(水) 23:03:08.88
ガード式使えばいけるやろ。
case figuare(_, angle) if angle ==10 || (360 - angle) == 10
とか
62デフォルトの名無しさん:2014/02/05(水) 23:08:38.88
angle % 360 == 10 二番目の条件はこうだったわ
63デフォルトの名無しさん:2014/02/05(水) 23:15:49.08
常にそういう性質持たすならunapplyを自分で実装するか
64デフォルトの名無しさん:2014/02/06(木) 18:27:54.34
身も蓋もない言い方をするとそんな入力値は無効だな。前持って正規化すればいいんじゃないのか。(そういうことではない)
65デフォルトの名無しさん:2014/02/06(木) 21:58:27.96
並列コレクションが有効な場面と無効な場面がよくわかりません
例えば、元々あるコレクションに対する演算ではどのようなものが高速になるのですか?
ソートなどでは意味がありませんよね?
66デフォルトの名無しさん:2014/02/06(木) 22:39:23.33
並列コレクションが有効と確信できる場合以外は無駄だと思った方が良いよ
67デフォルトの名無しさん:2014/02/06(木) 23:02:34.41
並列コレクションってそんな難しい概念かぁ?
何でこんな質問が来るんだろう
68デフォルトの名無しさん:2014/02/07(金) 00:24:27.79
>>65
並列コレクションはコレクションに対する演算を並列化するんじゃない
foreachを並列実行する、ただそれだけ
各要素に対して完全に独立した処理を行うのに使う
69デフォルトの名無しさん:2014/02/07(金) 00:30:25.95
C#/VBのParallelEnumerableと全く同じ概念だからそっちの情報を参照した方が分かりやすいんじゃないか
あっちは変に気取ってないからな
70デフォルトの名無しさん:2014/02/07(金) 01:20:52.80
並列コレクションのどこに気取る要素があるんだよ
71デフォルトの名無しさん:2014/02/07(金) 01:33:57.50
どうでもいいことにいちいち新しい名前を与えたがる
それで覚えることが増える。凡人のやること
72デフォルトの名無しさん:2014/02/07(金) 02:43:44.89
actorモデルが一般化されたりするのかな
オブジェクト指向m9(^Д^)プギャーみたいな
73デフォルトの名無しさん:2014/02/07(金) 04:59:25.39
Actorって、今までスレッド使ってた箇所全てで、Actorに置き換え可能なの?
74デフォルトの名無しさん:2014/02/08(土) 00:00:31.32
>>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の実装なども考えましたが、いまいちどう書けばよいのか分かりません。
この場合どのように書くべきでしょうか?
76_uy2.1p0:2014/02/08(土) 10:30:30.63
rubyなら簡単に出来る

def ary n , h
  return h if n == 0
  ary n-1 , ->{ h.call }
end

p a = ary( 3 , ->{ "a" } )

p a.call
77デフォルトの名無しさん:2014/02/08(土) 12:18:59.01
>>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
79デフォルトの名無しさん:2014/02/08(土) 13:21:52.98
>>75
Itarator版

def f[A](a: A)(failable: A => Option[A]): Iterator[A] =
 Iterator.iterate(failable(a))(_.flatMap(failable)).takeWhile(_.isDefined).map(_.get)
80デフォルトの名無しさん:2014/02/08(土) 14:05:48.12
>>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) }
8180:2014/02/08(土) 14:34:11.94
f(_) は failable(_) の間違い
82デフォルトの名無しさん:2014/02/08(土) 14:37:25.47
scalaz勉強しようと思ったらやっぱり公式ドキュメントとソース眺めるくらいしか方法ない?
83デフォルトの名無しさん:2014/02/08(土) 14:40:29.14
ScalazはHaskell勉強したほうが早いのでは
84デフォルトの名無しさん:2014/02/08(土) 14:51:37.60
85デフォルトの名無しさん:2014/02/08(土) 14:55:57.16
scalazって何?
scalaとはまた違うの?
86デフォルトの名無しさん:2014/02/08(土) 14:57:51.02
scalazっていうただのScalaライブラリの名前だよ
87デフォルトの名無しさん:2014/02/08(土) 14:59:07.72
へー、何か凄いんです?
88デフォルトの名無しさん:2014/02/08(土) 17:11:24.29
ちょっと便利な関数とかいろいろ詰め合わせましたみたいな感じのライブラリ
8975:2014/02/08(土) 18:25:53.11
みなさんありがとうございました。
>>78,79,80を見て勉強しようと思います。
90デフォルトの名無しさん:2014/02/09(日) 17:23:45.54
スカラ座
91デフォルトの名無しさん:2014/02/11(火) 19:44:29.04
class A protected ()
object A { def make(): A = new B }
class B protected () extends A
これできないけどなんでなの?コンパニオンオブジェクトからコンストラクタにアクセスできない?
92デフォルトの名無しさん:2014/02/12(水) 12:31:57.59
scalax.io って、もう終わってるって事でいいの?
93デフォルトの名無しさん:2014/02/12(水) 14:53:48.87
そもそもscalaが(略)
94デフォルトの名無しさん:2014/02/12(水) 15:31:52.76
始まってすらいないから!
95デフォルトの名無しさん:2014/02/12(水) 15:37:48.64
始まってもないのに終わった言語ということか
96デフォルトの名無しさん:2014/02/12(水) 16:10:32.58
>>91
基本コンストラクタをprotectedにしたんならB自身とそのサブクラスからしかnewできんよ
object Aとclass Bは何の継承関係にもないじゃん?
97デフォルトの名無しさん:2014/02/12(水) 16:27:06.84
http://www.slideshare.net/extempore/a-scala-corrections-library
これakkaみたいにscala本体に取り込まれないかな
98デフォルトの名無しさん:2014/02/12(水) 16:50:57.83
結局、I/Oは、どのライブラリ使えばいいんだよ?
99デフォルトの名無しさん:2014/02/12(水) 17:16:36.98
javaのCommonsIO
100デフォルトの名無しさん:2014/02/12(水) 17:27:34.99
他にもJavaから引っ張ってきたほうがいい、そうせざるを得ない機能ってある?
101デフォルトの名無しさん:2014/02/12(水) 18:14:10.17
scala製ライブラリはまだ数が少ない
文字コード判定ライブラリとかjavaのものしかない
102デフォルトの名無しさん:2014/02/12(水) 18:20:01.82
暗号関係とかDBとか
103デフォルトの名無しさん:2014/02/12(水) 18:57:22.78
>>92
2年間放置されてる?

今は、Java 7 NIO file APIベースがいいと思うんだけど
104デフォルトの名無しさん:2014/02/12(水) 19:17:07.43
>>103
https://github.com/jesseeichar/scala-io
こっちは最後のコミットが6ヶ月前になってるけど
105デフォルトの名無しさん:2014/02/13(木) 17:33:21.46
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を行いたい
* 具体的には副作用のある「ネットワーク上のホストをあるリストに追加する処理」をするクラスを「リストに追加したふりをしてくれる自前のクラス」に交換したい
よろしくお願いします。
107デフォルトの名無しさん:2014/02/16(日) 14:19:35.67
http://eed3si9n.com/ja/real-world-scala-dependency-injection-di
主に調べたのって、scalaでDIする方法かな?
108デフォルトの名無しさん:2014/02/16(日) 14:21:53.97
http://lab.synergy-marketing.co.jp/blog/tech/scala-で-di-effective-scala-lift-のdi編
http://togetter.com/li/505702
テストと結び付いてると、そのまま参考になるんだけどね。
109デフォルトの名無しさん:2014/02/16(日) 19:16:09.65
トレイトALikeを実装したAdapterをAに噛ませれば
AdapterとDummyAが交換可能になるはず
110デフォルトの名無しさん:2014/02/16(日) 21:09:39.96
真面目な奴ほど、一年に一つ新しいプログラミング言語を覚えよう、とかいうのを
真に受けちゃって、やっぱり今は関数型言語だよね、Scalaって奴がなんかすごいらしい、
とオーム社の買って、カリー化あたりで良い加減面倒になって、新しい発想が身に付いた、
とか勘違いしてるけど、結局やってる仕事や書いてるコードに何も変化はありませんでした、
となってしまうのかな?
111デフォルトの名無しさん:2014/02/16(日) 21:30:52.91
ふと思い出したけど、カリー化ってあんまり使われてないな。
他の関数型言語と違って、括弧分けるところがイケてないからか。
112デフォルトの名無しさん:2014/02/16(日) 21:46:09.98
あれ?カリー化する関数みたいなのなかったっけ?
単純にJavaとの相性がよくないからだけな気がする。
カリー化するとJavaから使いにくいから。
113デフォルトの名無しさん:2014/02/16(日) 22:22:34.06
昔から関数型入門すると、null禁止、代入禁止、副作用を分けるのが身について、
手続き型に戻っても効果があるとは言われてたので、いいんじゃないかな。
ギプスとしては、ocamlやhaskellのがいいかもしれないが、
scalaならそのまま使えるというのがあるのが悩みどころ

Tumblerとドワンゴはphpからscalaいったみたいだけど、phpプログラマの生い立ちが違いそうだね。
http://www.slideshare.net/sifue/developers-summit-2014-play2scalaweb
http://2012.8-p.info/japanese/2/18/tumblr
何にせよ技術レベル底上げするのに、会社として講習会やるべきなんだろうな。

話が逸れるけど、playのscalaテンプレートは、デザイナーフレンドリーじゃないという評価だね。
http://tech.furyu.jp/blog/?p=1884
もともと.net MVCのrazerが元になってるはずだけどそっちでもなんだろうか。
テンプレートエンジンは構造制御に絞るべきというのもよく聞く。
114デフォルトの名無しさん:2014/02/16(日) 22:34:54.17
そんな個人的な意見を取り上げられてもな
ホスト言語のコードを直接埋め込むタイプなだけだ
専用言語ならデザイナーフレンドリーなのか?
そんなもん馬鹿げた思い込みだ
115デフォルトの名無しさん:2014/02/16(日) 22:56:29.62
> 私が英語を読めていないのかもしれないけど、個人的にはこの感覚はあまり共有できていない。表も Scala でもいいんじゃないかと思う。

これと同意見なのかな?
116デフォルトの名無しさん:2014/02/16(日) 22:58:15.14
カリー化より部分適用の方が簡単だから使われてない感じがする
117デフォルトの名無しさん:2014/02/16(日) 22:59:47.26
そういや、play1はGroovyテンプレートだったけど、ドワンゴのは別物なのかな?
118デフォルトの名無しさん:2014/02/16(日) 23:40:34.22
何人かそれなりにScalaに熟練した人に話を聞いたけど、
Play標準のテンプレートエンジンはだいたい評判が良くない気がする

自分で使ってみた感触としては、@の挙動がわけわからんというか、
あんまり思い通りに書けないというか……
119デフォルトの名無しさん:2014/02/17(月) 14:13:08.98
spring mvcより、playの方がメジャーなの?
120デフォルトの名無しさん:2014/02/17(月) 23:12:45.43
Scalaの時点でアレなんだから自分が気に入ったのを使え
121デフォルトの名無しさん:2014/02/17(月) 23:23:13.99
再帰呼出をしないメソッドでも、最後の行以外での途中returnは推奨されないんですか?
122デフォルトの名無しさん:2014/02/18(火) 02:53:45.50
>>121
途中のreturnが必要なほど長いメソッドはなるべく書かない
123デフォルトの名無しさん:2014/02/18(火) 07:39:38.77
>>122
長さって関係ありますか?
def hoge(): Moge = {
if (isA) {
return a
}
if (isB) {
return b
}
return o
}
124デフォルトの名無しさん:2014/02/18(火) 07:45:49.92
>>122
というような、視野を短く切るためのreturnです
途中送信してしまった
125デフォルトの名無しさん:2014/02/18(火) 07:59:41.70
def hoge(): Moge = if (isA) a else if (isB) b else c
126デフォルトの名無しさん:2014/02/18(火) 08:54:09.55
それreturnいらんやろ
127デフォルトの名無しさん:2014/02/18(火) 08:58:10.07
手続き型プログラミングと関数型プログラミングの違いかな

個人的には関数型プログラミング言語なんだから関数っぽく書きたいが、
if式の連鎖は分かり難いのでこんな感じにしてる:
def hoge(): Moge = (isA, isB) match {
  case (true, _) => a
  case (_, true) => b
  case _ => o
 }
拡張性が要るならListにする
128デフォルトの名無しさん:2014/02/18(火) 09:00:48.92
「視野を短く切る」とか言ってる時点で実際はもっと長いメソッド書いてるんじゃね
129デフォルトの名無しさん:2014/02/18(火) 09:05:36.62
>>127
むしろifより読みづらいし書きづらいんじゃないかw
条件の数が多くなると大変だし

どうせmatchを使うならこれでどうか? Lisp系のcondみたいな感じで
() match { case _ if isA => a;case _ if isB => b; case _ => o }
130デフォルトの名無しさん:2014/02/18(火) 18:37:49.57
うん、それは無い
131デフォルトの名無しさん:2014/02/18(火) 19:07:58.15
>>128
>>124です
Java畑ですが「1メソッド20行以内」はなるべく守ってますよ
だから先の例のifブロック内が複雑だとしたら、1ブロック毎にメソッドに切り出したりしますよ
もし2択で済むなら三項演算子使いますよ
他にはなんだろう、ネストを浅くしたいとかもあります

周りに関数型言語やってる人いないし、ベストがよく分かんないです
ループを末尾再帰で考えるってのは、出来てきた気がします
132デフォルトの名無しさん:2014/02/18(火) 19:42:58.66
ラムダ関数をよく使うので
どこへのreturnなのかがわかりにくいので使いたくない
133デフォルトの名無しさん:2014/02/18(火) 20:54:21.97
むしろreturn非推奨って誰が言い出したの?
134デフォルトの名無しさん:2014/02/18(火) 21:48:31.97
関数型プログラマ
135デフォルトの名無しさん:2014/02/18(火) 22:06:39.58
実際ほとんど使わないよねreturn
136デフォルトの名無しさん:2014/02/18(火) 23:07:46.98
>>131
関数型言語ってHaskellしかまともに触った事がないんだけれど、
Haskellではifは関数なので必ずelseが必要だったから、それと同様に必ずelse書いてる。

あってる間違ってるは分からないけど、ifにelse付けてる限りはreturn要らない感じはする。
あと単純なifでもついついmatch使ってしまう。
137デフォルトの名無しさん:2014/02/18(火) 23:11:14.81
Haskellのifは関数じゃないぞ
138デフォルトの名無しさん:2014/02/18(火) 23:38:58.36
純粋関数ならいいが、副作用の後のreturnを省略するのは
マジで気持ち悪いしわかりにくいからやめてほしい
139デフォルトの名無しさん:2014/02/20(木) 21:36:17.45
ifは関数というよりも演算子かなぁ
140デフォルトの名無しさん:2014/02/21(金) 23:40:46.05
まあ演算子も関数だから間違ってないね
141デフォルトの名無しさん:2014/02/22(土) 02:10:12.27
Haskellのifは構文であって関数でも演算子でもないぞ
142デフォルトの名無しさん:2014/02/22(土) 02:50:16.56
Haskell文法的には式扱いだったはず
意味論的にはλ計算がベースだから全部関数だーとか言い始めたら
まあそうかもしれないけどあんまり実入りのない議論に……
143デフォルトの名無しさん:2014/02/22(土) 15:01:41.45
statmentではなくexpressionなので個人的には文より式の方がしっくりくる
144デフォルトの名無しさん:2014/02/24(月) 18:17:06.06
C、Objective-C、ruby、pythonをやってきたんだが
javaやらずにscalaって難しい?
入門書いくつかチラ見したがjava経験者向けに説明してる感じで焦った
java未経験者におすすめの本とかないかな?
145デフォルトの名無しさん:2014/02/24(月) 19:06:55.25
そんだけやってきたならJavaなんかサンプルコードをしばらく眺めたら十分理解できるはず
悩んでる暇があったら一時間で十分だ
身構えるようなことではない
146デフォルトの名無しさん:2014/02/24(月) 19:08:35.56
Javaをやってないならscalaなんか何一つうれしくないだろ
147デフォルトの名無しさん:2014/02/24(月) 19:24:34.03
遅くないRuby感覚の言語としては価値がある
まあ結局何をするにもJavaの情報に頼るから、Javaが読めないとまず何も作れないし
Java由来の妙な部分が受け入れられなくてクソ言語に感じるだろうね
148デフォルトの名無しさん:2014/02/24(月) 19:53:40.03
コップとかならJava知らんでも理解できると思うけど、いざ運用しようとなると無理だろうな
149デフォルトの名無しさん:2014/02/24(月) 20:33:37.24
>>144
CやらずにObjective-Cって難しい?
150デフォルトの名無しさん:2014/02/24(月) 21:02:08.44
>>149
Objective-Cでもポインタからは逃げられない
151デフォルトの名無しさん:2014/02/24(月) 21:46:00.48
java知ってるほうが嬉しいよね
javaではくっそめんどくせぇのにscalaだと楽だなって感じで
152デフォルトの名無しさん:2014/02/24(月) 21:50:19.81
javaからそのままscalaに行くとそうでもないけど、
途中にCとかhaskellとかが入ると、scalaの起動の遅さにイライラする
153デフォルトの名無しさん:2014/02/24(月) 23:25:29.72
scalaの起動って何のこと?

それはそうとjava知ってるとscalaに限らず大抵の言語が素晴らしく感じる
でも今からjavaを知ることになる人は不幸だと思う
154デフォルトの名無しさん:2014/02/24(月) 23:27:39.12
scala と scalac と scalaのload が遅い
155デフォルトの名無しさん:2014/02/24(月) 23:33:50.06
ScalaはJava使いにとっては最高の関数型言語なんだと思う
近い将来、ScalaがJavaを置き換える存在になるという言葉も、
その可能性を(個人的には)認めたい
ただし逆の見方をすれば、Javaを使っていない人から見ると
関数型言語としてのScalaは魅力に欠ける
156デフォルトの名無しさん:2014/02/25(火) 00:05:13.59
javaはマジでクソ言語。
c#とか似てるって言われるけどjavaと同じって言われるなんてc#が可哀そう
157デフォルトの名無しさん:2014/02/25(火) 00:08:52.42
多分関数型言語で一番無難なのはocamlな気がする
構文は冗長だけどhaskellよりはだいぶ敷居が低いと思う
個人的にはschemeが覚えること少ないし簡単だと思うんだけど
人に進めてもlispってことで拒否感出す人も多いからな。。
158デフォルトの名無しさん:2014/02/25(火) 03:37:19.03
ocamlは構文がフランスすぎるから駄目
159デフォルトの名無しさん:2014/02/25(火) 06:58:43.43
schemeは関数型言語っていうかlispだろ
160デフォルトの名無しさん:2014/02/25(火) 08:34:36.88
ocamlはutf-8が標準じゃないのできつい。
GUIも作りにくいし
実用をためらう

なのでocaml使うならF#だわ
161デフォルトの名無しさん:2014/02/25(火) 18:46:57.02
f#はライブラリとideとguiの作りやすさが関数型言語だと最強レベルになりそうだけど
unix環境じゃ流行らなそうなのが気はする
162デフォルトの名無しさん:2014/02/25(火) 22:39:01.27
unix環境で実用を考えるならScalaで満足している。
windowsでもScalaで満足しているけど。

ToyならHaxeかなぁ
使ってみたことないけど
163デフォルトの名無しさん:2014/02/25(火) 23:44:41.70
>>161
ありがとう!
ウチはMacだが早速F#拾ってきた。

Scalaは1.7,1.8のJavaでトラブルだし
そろそろ見切り時かもだった。
164デフォルトの名無しさん:2014/02/26(水) 00:04:08.46
ClojureがML系だったらなあ
いくら闇鍋ScalaよりずっとクリーンでもLispじゃ普及は望めないよね
165デフォルトの名無しさん:2014/02/26(水) 00:20:37.40
lispはいい言語だけどバカに使わせるとゴミみたいなコードになる
でもポール・グレアムみたいなlispのすごい人は少数のハッカーでやるのが良いって言ってるし
clojureの開発陣も門戸広げてバカが来ることなんて望んでないんだろ
166デフォルトの名無しさん:2014/02/26(水) 20:25:54.38
Lispは再起の勉強にはイイ言語だけれども、
状態遷移の塊でしかないという現実を反映していない
167デフォルトの名無しさん:2014/02/26(水) 21:54:46.34
なんだそりゃ……
168デフォルトの名無しさん:2014/02/27(木) 00:34:17.20
こいつはPure Lisp原理主義者だ!
169デフォルトの名無しさん:2014/02/27(木) 00:45:53.34
LISPは解散しました
170デフォルトの名無しさん:2014/02/27(木) 00:48:24.22
破壊的代入のできるLispはともかく、
代入できない純粋関数型のHaskellとかでも状態遷移は表現できるんだよー
171デフォルトの名無しさん:2014/02/27(木) 00:57:32.05
時間積分を使うシミュレーション(ゲーム含む)を関数型で作るなら
やっぱり漸化式の形で書くことになるの?
それだともうほとんど関数型の意味ないね
172デフォルトの名無しさん:2014/02/27(木) 01:02:18.05
漸化式って再帰ってことか?
foldで抽象化できるじゃん
173デフォルトの名無しさん:2014/02/27(木) 01:08:09.92
>>170
状態がないのに状態遷移が表現できるってのは
哲学的というかメタ的というか
日本語でも英語について語ることができますみたいな
そりゃそうかも知れないけど
日本語で語られる英語って英語なの?みたいな
174 ◆QZaw55cn4c :2014/02/27(木) 02:57:24.09
つ再帰関数、不動点コンビネータ
すべての状態遷移は再帰で表現できますよ〜ペアノにより自然数の定義とか
175デフォルトの名無しさん:2014/02/27(木) 07:27:55.31
>>173
あたかもプログラミング言語上は
状態を書き換えていないかのように振る舞うというだけであって、
実際上は、状態にあたるメモリを書き換える代わりに新しい所に書いてるだけ

なにしろ最終的には、機械語の命令列とメモリの読み書きにしないと計算機上で動かんので、
この手の変換はJVMも含めてありふれてる
自然言語的な混乱とはぜんぜん違う話だと思う
176デフォルトの名無しさん:2014/02/27(木) 08:17:39.44
でそれが関数型なのか?ってことでしょ
そういう理屈なら全ての手続き型は関数型と見做せることになるよ
177デフォルトの名無しさん:2014/02/27(木) 09:42:55.10
それが「モナド」。(純粋)関数型言語の上に、手続きというモデルを再構築したもの。
178デフォルトの名無しさん:2014/02/27(木) 18:44:55.34
オブジェクト指向の機能を使ったからオブジェクト指向だ!
とか抜かしてるよくいるバカと一緒だな
179デフォルトの名無しさん:2014/02/27(木) 19:50:58.91
Scalaだと関数型意識してクラスもイミュータブルにするん?
面白そうだけどクラスタ構成するような規模じゃないと意味無さそう
180デフォルトの名無しさん:2014/02/27(木) 21:10:43.11
>>179
case class って書くと勝手にイミュータブルになるしあまり気にした事がないなぁ。
凄い人たちはちゃんと気にしてるんだろうけど。
181デフォルトの名無しさん:2014/02/27(木) 23:09:49.69
モナドはオタク的自己満足のために余分なレイヤーを重ねているだけという印象が強いな

ミュータブルはオブジェクト指向、イミュータブルは関数型でまとめたocamlの方が素直に思える。
182デフォルトの名無しさん:2014/02/27(木) 23:33:27.42
sbtにcache proxyを設定したくて、LAN内に置いたnexusやArtifactoryを設定してみるんだけど、
全然うまく行かない。
下の記事の通りにやっても、中途半端にしか成功しない。
http://engineering.clever-cloud.com/sysadmin/2013/11/30/set-up-sbt-for-proxy-use.html

いつもJava用のライブラリは、うまく取ってこれるんだけど、Scala用のJARファイル名にバージョン番号が
入ってるようなライブラリがエラーになる。ちゃんと設定出来てる人居る?
183デフォルトの名無しさん:2014/02/27(木) 23:36:59.90
外部の実行ファイルをプログラムに同梱し、その同梱ファイルを実行した結果を取得するということは可能でしょうか?
184デフォルトの名無しさん:2014/02/28(金) 00:58:47.80
何故このスレでそういう質問をするのか謎
他にふさわしい場所いくらでも有るだろうに

実行ファイルをテンポラリに書き出して実行すればいいだけじゃね
185デフォルトの名無しさん:2014/02/28(金) 08:01:02.53
普通に考えてScalaでやりたいからじゃね?
可能かどうかで言うと可能だし、やり方はいくらでもあるけど、
どういう状況でもっと具体的に何がしたくて、
何で詰まってるか分からないとアドバイスは難しいよね。
186デフォルトの名無しさん:2014/02/28(金) 11:48:36.52
おそらくコプロセスの標準ハンドルをどうこうしたいということだろうけど
javaで探したほうが早いな。
187デフォルトの名無しさん:2014/02/28(金) 16:27:37.14
>>113
playは大分前に少し勉強してみただけだから詳しくは言えないが、.netのrazorの場合、vsの補完が強力で@を変に使ったらその場で警告が出るので、razorの文法を理解してなくてもなんとかなる
188デフォルトの名無しさん:2014/02/28(金) 21:11:38.46
禅の心でコーディングすれば、VisualStudioなんて不要
189デフォルトの名無しさん:2014/02/28(金) 22:23:01.43
好き嫌いはともかくVisualStudioのIDEとしての完成度の高さはやっぱすごいと思う
190デフォルトの名無しさん:2014/02/28(金) 23:01:23.15
好き嫌いはともかくJavaの業務系での実績の多さはやっぱすごいと思う

「好き嫌いはともかく」と付ければ何とだって言える
結局人間ってのは好きか嫌いかだ
191デフォルトの名無しさん:2014/02/28(金) 23:10:46.00
自分で作って自分で売るんじゃない限り好き嫌いなんかどうでもいいだろ
生産性の低い言語を使って困るのは客や会社であってプログラマじゃない
192デフォルトの名無しさん:2014/02/28(金) 23:11:32.22
好き嫌いはともかく中国は島国だと思う

ほんと?
193デフォルトの名無しさん:2014/03/01(土) 04:12:48.47
むしろ好き嫌いはともかくとつけると言えること狭くなるような
194デフォルトの名無しさん:2014/03/01(土) 04:58:10.34
このスレは母国語も危うい馬鹿しかいないのか?

>>189において「好き嫌いはともかく」ってのは補助的な役割しか果たしていない。
メインは「すごい」と「思う」だよ。
具体的な数値を提示しなければ何とでも言えるし、評価の指標を設定することすら難しい内容。
それに加えて「思う」の主格がないために「一般的に思われている」との錯覚を与えている。
「好き嫌いはともかく」ってのはそれを強化しているに過ぎない。

好き嫌いはともかく日本の政治家はリーダーシップがあると思う
好き嫌いはともかく地球は太陽系で最も美しい星だと思う
好き嫌いはともかくアキバ系アイドルは可愛いと思う
好き嫌いはともかく2chの運営は優秀だと思う
195デフォルトの名無しさん:2014/03/01(土) 05:12:48.04
主格がないために「一般的に思われてる」との錯覚を与えている(キリッ
196デフォルトの名無しさん:2014/03/01(土) 08:25:09.45
お疲れですねw
197デフォルトの名無しさん:2014/03/01(土) 08:57:58.46
そういう中身の無い議論はHaskellスレで頼む
198デフォルトの名無しさん:2014/03/01(土) 09:50:19.27
haskellスレ荒れすぎて辛い
199デフォルトの名無しさん:2014/03/01(土) 14:57:39.76
junitでscalatraのテストのやり方教えて
200デフォルトの名無しさん:2014/03/01(土) 15:12:38.08
ScalaTest, Specs2, ScalaCheck じゃだめなんだよね。一応確認
201デフォルトの名無しさん:2014/03/01(土) 15:16:56.66
junitやないとあかんのや
馴染みのある奴やないと嫌やねん
202デフォルトの名無しさん:2014/03/01(土) 15:51:59.97
ツール連携ができなくて無理とかそういうんじゃなくて
馴染みがあるとかそういうレベルの話なの
むしろよくその状態で Scalatra や Scala に手をだそうとしたなと感心してしまう
203デフォルトの名無しさん:2014/03/01(土) 16:04:11.82
むしろ実在するかも疑わしい人物像を作り上げて感心してしまう
202の想像力に感心してしまう
204デフォルトの名無しさん:2014/03/01(土) 16:25:42.02
というかJavaとの親和性が魅力のScalaのスレで
「馴染みがある」を軽視する発言はどうかと
205デフォルトの名無しさん:2014/03/01(土) 16:32:07.72
>>182
この件、やっと自己解決したよ。

Artifactoryのリモートリポジトリ設定で、"Suppress POM Consistency Checks"をオンにすれば、
Scala用の、パスにコンパイラバージョン番号が入るJARファイルでもエラーにならなくなる。
エラーログは出まくるけど。
206デフォルトの名無しさん:2014/03/01(土) 18:03:55.52
scalaはjavaみたいに書けるけどjavaみたいに書くとダサイとか言われる謎言語だからしょうがないね
207デフォルトの名無しさん:2014/03/01(土) 21:58:59.50
>>204
Javaとの親和性は、1からすべてのライブラリをScalaで作らなくてもいい、段階的にでも移行できるって話だ
すでに Scalatra/Scala と親和性の高い test framework があるのだから、そっち使ったらどうなのってだけだ
208デフォルトの名無しさん:2014/03/02(日) 01:04:16.89
そっち使ったらどうなのって「だけ」で
人を小馬鹿にするからつっこまれたんじゃ?
209デフォルトの名無しさん:2014/03/02(日) 03:02:36.33
まぁでも>201はJavaやってた方が幸せだと思うけど
210デフォルトの名無しさん:2014/03/02(日) 04:30:35.22
Scala extends Java
211デフォルトの名無しさん:2014/03/03(月) 10:32:28.95
eclipseのScala IDEってどれくらい進化してるん?
212デフォルトの名無しさん:2014/03/03(月) 12:29:16.11
>>211
諦めて、 IntelliJ IDEA使うよろし
213デフォルトの名無しさん:2014/03/03(月) 12:36:55.76
>>212
UIが不安定なイメージが・・・

とりあえずJavaソースと混同してもリファクタリングがちゃんと働いてくれるのが理想なんですが
214デフォルトの名無しさん:2014/03/03(月) 13:34:54.47
def using[T <: {def close()}](x:T)(f:T => Unit) =
try { f(x) } finally { x.close() }
こんなのやりたいんだけど構造的サブタイピング使うと遅くなる?
215デフォルトの名無しさん:2014/03/03(月) 16:40:41.40
Structural Subtypingはリフレクションの機能使って実装されてるからその分のコストはかかるよ
216デフォルトの名無しさん:2014/03/03(月) 20:18:26.99
intellijはuiがjavaだからもっさりなんだよな
ネイティブのuiと違和感大きいし
217デフォルトの名無しさん:2014/03/03(月) 20:48:19.97
同じ理由でNetbeansも苦手だわ
218デフォルトの名無しさん:2014/03/03(月) 21:23:46.00
IntelliJはそこまで重くない気がするけど、
文字列リテラルにも補完をかけようとするのか、ガクッと遅くなることはある
あとデフォルト設定だとカーソルが浮くのとか、細かい部分が積み重なって
微妙な不快感につながってるのかも

とはいえ、ベースが売り物なだけあって完成度は高いと思う
219デフォルトの名無しさん:2014/03/03(月) 21:24:19.02
貧弱ゥ、貧弱ゥ
220デフォルトの名無しさん:2014/03/04(火) 21:44:09.36
InteliJはリファクタリングの動作が安定してて良いよね
特にメンバ変数名変えたときに、名前付き引数使ってる部分をちゃんと追従してくれる

でも、名前付き引数って内部ではデフォルトコンストラクタ後にsetter使ってるだけだから
EclipseGroovyではwithで代入するようにすれば良いだけかも
221デフォルトの名無しさん:2014/03/05(水) 10:48:53.85
でもIntelliJはモジュール間(Eclipseのプロジェクト)で
リファクタリング反映してくれないのが
222デフォルトの名無しさん:2014/03/05(水) 17:09:08.19
ルックアンドフィールがおかしい
ファイル選択ダイアログとかJavaでUI作ってるのまるわかり
223デフォルトの名無しさん:2014/03/05(水) 22:15:10.99
IntelliJは、UIはアレだが、実用性が高い。
224デフォルトの名無しさん:2014/03/05(水) 23:33:22.94
プロジェクトの感じ苦手なんだけどみんなはどうなの?
sbtでゴリゴリやってたりするの?
225デフォルトの名無しさん:2014/03/05(水) 23:46:18.84
ScalaはIDEに完全に管理されて補完がバリバリ動いてこそだろ
Scala自体はともかく、Javaのゲロみたいなライブラリを補完や動的チェックなしで使うのは苦行
226デフォルトの名無しさん:2014/03/09(日) 14:35:12.06
現在プログラム板のID制導入の投票を実施中です
よろしくお願いします

プログラム板 強制ID制導入に関する投票スレ
http://kohada.2ch.net/test/read.cgi/vote/1394290844/
227デフォルトの名無しさん:2014/03/09(日) 16:01:41.71
>>225
マクロ対応してるIDEってあるかな?
228デフォルトの名無しさん:2014/03/10(月) 11:58:02.13
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.

この警告ってどういう意味ですか?
230デフォルトの名無しさん:2014/03/13(木) 00:51:32.46 ID:yfVBSL8u
231デフォルトの名無しさん:2014/03/13(木) 16:17:49.13 ID:j0o71mYX
Play! framework 2.2.3で開発してるけど、リクエストのエンコーディングがUTF-8で決め打ちになっているのが困る。
SJISのリクエストが来ても正しくエンコーディングできない。
リコンパイルするしか対処法はないのかなあ。PaaSとかにデプロイしたいからあまりPlayには手を加えたくない。
たいていのPaaSは標準のPlayしか利用できない。
232デフォルトの名無しさん:2014/03/13(木) 22:56:58.71 ID:jchWpC25
PR送れば?
233デフォルトの名無しさん:2014/03/29(土) 15:15:02.64 ID:iSspUegM
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/""")
234ver2: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/")
235デフォルトの名無しさん:2014/03/29(土) 18:32:52.55 ID:H5CN7Obn
>mkString.split("\n")
ここgetLinesでよくね
236ver3: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)
}
}
237デフォルトの名無しさん:2014/03/30(日) 22:00:29.19 ID:6sp9d58I
gistでやれ
238デフォルトの名無しさん:2014/04/25(金) 02:10:23.92 ID:gi5f+y0I
「Scala 2.11」リリース、コンパイラの性能強化などが行われる
http://sourceforge.jp/magazine/14/04/22/143000


あれ?
スレ間違えたかな?
新しいバージョン出たのに、一ヶ月以上投稿されていないぞ。
239デフォルトの名無しさん:2014/04/25(金) 12:04:32.34 ID:gb+da3V7
なんかscalaの人がD社に集まってる?
240デフォルトの名無しさん:2014/04/25(金) 12:11:08.60 ID:vpRHTENH
女子マネ弁当うらやましす
241デフォルトの名無しさん:2014/04/25(金) 13:43:40.85 ID:xYpIBQ/t
女子マネ弁当のせいで逆に朝行かない人もいるし、あれはほんとクソ
242デフォルトの名無しさん:2014/04/25(金) 19:28:32.60 ID:jPmvuOB6
上鳥取弁当
243デフォルトの名無しさん:2014/04/26(土) 10:58:21.58 ID:KWFffi1l
ドワンゴってキーワード出しただけで、もうScalaと違う話になってる、、、。

でも、ドワンゴがScalaを本格採用したら、この状況も変わるかもね。
逆に、TwitterがScalaを捨てたら、Scalaは本当にオワコン。
244デフォルトの名無しさん:2014/04/26(土) 12:18:26.98 ID:xctJXi+r
ドワは大嫌い
245デフォルトの名無しさん:2014/04/26(土) 14:36:26.65 ID:hLRLrFim
派手に大爆死するか静かに息を引き取るかの違いでしか無いな
とっくにオワコン
246デフォルトの名無しさん:2014/04/26(土) 15:17:49.23 ID:rVQYbF8V
はいはい
247461 ◆Of8OpFdQADOA :2014/04/29(火) 04:54:14.07 ID:yHrjP2Pq
Spray.ioの話題はここでいいですか?
P2P掲示板を作ってるスレから来たものです。
実装につまづいている部分があってそれを相談しに来ました。
ドキュメントや例が少なくて苦心しています。
もし他に適当なスレがあったら誘導お願いいたします。
248デフォルトの名無しさん:2014/04/29(火) 11:24:25.48 ID:vcN4iS4p
ここでいいよ
249デフォルトの名無しさん:2014/04/29(火) 14:07:55.92 ID:fqLJb+0P
https://groups.google.com/forum/#!forum/spray-user
一日に10件近く新規投稿あったりするんだな。スゲー
250デフォルトの名無しさん:2014/04/29(火) 14:39:40.80 ID:eBu7xOA+
せっかくだから、Spray.ioがPlayよりどのへんで優れてるのか、実感を語ってくれ。
251デフォルトの名無しさん:2014/04/29(火) 16:49:53.41 ID:pvgpWpOe
>>244
奇遇ですね
私も嫌いです
252デフォルトの名無しさん:2014/04/29(火) 19:23:09.80 ID:fqLJb+0P
Play2かSprayに移るって話出てくるのは、WebAPIぐらいじゃないかな。
Sprayって非同期RPCとかのレイヤーなんじゃなかったっけ?

最近は、Finagleの上にというのもあるみたいだけど。
https://github.com/twitter/finatra
253461 ◆Of8OpFdQADOA :2014/04/30(水) 00:32:53.40 ID:m2hxDZhX
ありがとうございます。ではここでお話させていただきます。
spray-clientとspray-canで、ケースクラスをJSONに自動で変換して送受信しようという計画です。
具体的なJson-supportの使い方が分からずに途方に暮れています。
試しに書いてみたコードでは、MarshallerとUnmarshallerが足りないなどのコンパイルエラーが出ます。
手動でStringを送受信してその都度JSON<->ケースクラスで変換するほうが良いのでしょうか?

参考
http://spray.io/documentation/1.2.1/spray-httpx/spray-json-support/
254デフォルトの名無しさん:2014/04/30(水) 03:56:56.99 ID:TLgfnSfz
試しに書いてみたコード
とscalaとsprayのバージョンはいくつなのか見せて
255461 ◆Of8OpFdQADOA :2014/04/30(水) 20:07:03.12 ID:m2hxDZhX
遅くなりました。
今現在なんとか動かせるようになったので、質問は取り消すことにします。
またその方法やコードについてはブログなどに纏めて後で公開したいと思います。
お騒がせしました。
256デフォルトの名無しさん:2014/05/05(月) 03:35:07.02 ID:3Ni5KvUG
半年ぶりくらいに scala をやろうと思って
sbt とか giter8 とか落としなおしてたんだけど、
Typesafe が 便利なものだしてたんだな。
今はコレが主流なん?
257デフォルトの名無しさん:2014/05/05(月) 03:48:44.44 ID:fiA0HUlx
sbtが標準のプロジェクト管理ツールになってるとおもう。intellij ideaとかでも、プロジェクトが認識される。
giter8はプロジェクトのテンプレート展開するツールだけど、イマイチ浸透してないような?
チュートリアルに書いてあるプロジェクトはどれぐらいあるかな?
258デフォルトの名無しさん:2014/05/05(月) 16:16:19.70 ID:wgCLsPWH
スカラ祭り、今年はやるらしいな。
http://scalamatsuri.org/
259デフォルトの名無しさん:2014/05/05(月) 16:32:30.27 ID:wgCLsPWH
>>258
面接官 「Pythonの倒し方、知らないでしょ? オレらはもう知ってますよ」
260デフォルトの名無しさん:2014/05/05(月) 17:37:52.21 ID:GqplFE2u
>>258
英語話せなくても何とかなるなら行きたいです
261デフォルトの名無しさん:2014/05/06(火) 17:13:35.77 ID:8r5Ba8c0
scala> 10000000000.0.toInt
res0: Int = 2147483647

例外出さないとかありえないんだが?
俺のGWを返してほしいんだが?
262デフォルトの名無しさん:2014/05/06(火) 18:29:39.49 ID:d9R3RQy1
Double#toIntは単にintにキャストするだけみたいだな
(10000000000.0).asInstanceOf[Int]と同じ
263デフォルトの名無しさん:2014/05/06(火) 19:07:39.05 ID:r9HN0+TW
そういや、思い出したけど、
String#toIntは、Option[Int]を返すバージョンも作るべきだと思う。
Liftでは用意してたぞ。asInt

これ、実装はStringLikeかな。
264デフォルトの名無しさん:2014/05/06(火) 19:15:51.70 ID:d9R3RQy1
https://github.com/scala/scala/blob/master/src/library/scala/collection/immutable/StringLike.scala#L241
Integer.parseInt呼んでるだけだな
まあこっちは例外出すしTry("10000000000.0".toInt).toOptionでいいんでないかね
265デフォルトの名無しさん:2014/05/15(木) 01:48:08.06 ID:6KypUwmR
Scalaの入門書はどれがオススメですかね?
266デフォルトの名無しさん:2014/05/15(木) 01:53:13.81 ID:yJ+NDsnO
というか、日本語の本って2冊しかなくね?
267デフォルトの名無しさん:2014/05/15(木) 02:10:46.39 ID:EhgFi1pN
>>266
んなこたない
http://jp.scala-users.org/books.html

入門者におすすめできる本ってもしかしてないのでは……
初期に出た入門書っぽいのは対応しててもせいぜい2.8で2.7メインだったりするし
コップ本は「ちょっとscalaやってみるわw」って人に勧めるにはヘビーすぎる感じ
268デフォルトの名無しさん:2014/05/16(金) 00:21:02.28 ID:rkwNW8iO
コップ本の前に大学講義用の簡潔な資料の多い*MLで肩慣らしするとか
269デフォルトの名無しさん:2014/05/16(金) 04:41:23.64 ID:tC3uNMQ9
少し古いけど「Scala逆引きレシピ」で肩慣らししてから
コップ本かな
270デフォルトの名無しさん:2014/05/16(金) 09:16:29.76 ID:X7ZngJ90
コレクションクラスの全容と使い分けを書いた本って有るの?
271デフォルトの名無しさん:2014/05/16(金) 10:55:14.11 ID:rkwNW8iO
ここら辺とAPIドキュメントでいいような。
全部書いてあるかは、分からないけど。
http://docs.scala-lang.org/ja/overviews/collections/overview.html
272デフォルトの名無しさん:2014/05/19(月) 17:18:33.86 ID:RGM3YAZ3
List(Some(1), Some(2)) => Some(List(1, 2))
こういう変換してくれる関数はありますか?
273デフォルトの名無しさん:2014/05/19(月) 18:18:05.85 ID:EBM13Ejd
>>272
Scalazのsequenceかな?
274デフォルトの名無しさん:2014/05/19(月) 19:26:21.31 ID:1Vquo/IO
>>272
flattenでよいんじゃないかな
275デフォルトの名無しさん:2014/05/22(木) 02:16:24.36 ID:kNyzitze
3日間使っただけだけど、Slickってダメなライブラリじゃね?
すぐハマるんだけど。
コード例に載ってる奴だけで済むならいいんだろうけど。
276デフォルトの名無しさん:2014/05/22(木) 07:41:41.24 ID:ECkRJuZ0
それはOSSのほとんどに言えること
277デフォルトの名無しさん:2014/05/22(木) 15:17:30.88 ID:j+3vqhqP
ベンダーが提供するものだけ使えばいいよ
278デフォルトの名無しさん:2014/05/22(木) 23:07:11.09 ID:/0gQcYjf
そんな時はScalikeJDBC

でもscalaベンダ提供のライブラリっていったら
http://slick.typesafe.com
279デフォルトの名無しさん:2014/05/23(金) 00:48:03.04 ID:BtDc2LWD
最近、Typesafe社を信用しすぎないようにしようと思った。
280デフォルトの名無しさん:2014/05/23(金) 19:28:21.40 ID:WVZoxCv3
281デフォルトの名無しさん:2014/05/25(日) 23:30:45.42 ID:Kqg55CS/
>>272
List(Some(1), None, Some(2)) => List(1, 2)
でいいんならflatten
282デフォルトの名無しさん:2014/05/28(水) 00:29:39.91 ID:v0COvUG2
283デフォルトの名無しさん:2014/06/04(水) 22:21:07.21 ID:UyIsHdSg
アップルがパクリ言語Swiftを出したな。
すべて持ってかれてオワコン言語になるか
相乗効果で有名になるかどうやら
284デフォルトの名無しさん:2014/06/04(水) 22:40:14.96 ID:oN6V+kTo
Scalaはサーバー専用言語であっちはApple端末専用言語だろ
何をどう持っていくのか
285デフォルトの名無しさん:2014/06/04(水) 23:16:40.05 ID:ZW3U0roy
Windowsでも使えて、Scalaとjavaの関係と同じくらいの簡単さで、ObjectiveCを使えるなら乗り換えたい
286デフォルトの名無しさん:2014/06/05(木) 00:31:53.51 ID:sFfzPzAE
パクリってどの辺が?
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の変わりとして選ぶならどれ?って聞かれたらという感じかな。
289デフォルトの名無しさん:2014/06/05(木) 23:15:56.62 ID:ZqenSHM0
仕事はSwiftの方が多そうだよね
大事な事です、残念だけど。
290デフォルトの名無しさん:2014/06/05(木) 23:20:10.08 ID:OExbqmqh
SwiftはWindowsでも使えるのでしょうか?
291デフォルトの名無しさん:2014/06/05(木) 23:59:50.79 ID:KZps3rc8
言語だけなら誰かがすぐにコンパイラ作るだろうけど
互換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だいぶ強化されてるぞ
日本語情報ぜんぜん無いが
294デフォルトの名無しさん:2014/06/15(日) 03:23:02.16 ID:C08jxBHd
>>292
動作は同じでもっとシンプルかつ分かりやすく効率的な書き方あるから大人しくこっち使えよオラって意味だよ
たぶん君の場合はmapとgetOrElse(false)の組を使ってるせいでexists使えって言われてるんだと思うよ

IDEAのSetting -> Inspections -> Scala: General -> Simplifiable operation on collection
でどんなコードが警告出されてどう変換されるか確認できるから見ればいいよ
295デフォルトの名無しさん:2014/06/15(日) 06:02:36.52 ID:HmoyO5I3
???の意味が知りたいんだけど、何でググれば出てくる?
296デフォルトの名無しさん:2014/06/15(日) 06:18:19.64 ID:0Xbi4t4E
297デフォルトの名無しさん:2014/06/15(日) 13:42:22.46 ID:iTUQluLb
Akka IOのサンプルコードが足りなすぎてどう書いて良いのかわからない。
TCP通信をさせたいのだけれど。
役に立つ書籍とかご存知ないですか?
298デフォルトの名無しさん:2014/06/19(木) 22:35:20.11 ID:KRuS/Nkr
Rubyで以下の様なシナリオ生成用の
ツール作っていたのですがわけあって
Scalaでも同じものを作ってみたいのですが
類似するサンプルがどうしてもみつからないのですが
どうやって作ればいいか助言をいただけないでしょうか?

Title {
Description "TEST"

scenario {
name "scene1"
data 1
}
scenario {
name "scene2"
data 1
}
}
299デフォルトの名無しさん:2014/06/19(木) 23:17:45.87 ID:2pIWoYhf
>>297
akkaは公式ドキュメントが充実してるじゃん
http://doc.akka.io/docs/akka/snapshot/scala/io-tcp.html
akkaの本は洋書だと結構あるけど和書はまだ1つも出てないな
>>298
「scala パーサコンビネータ」でググったらいっぱいでてくるよ
300デフォルトの名無しさん:2014/06/19(木) 23:30:10.92 ID:KRuS/Nkr
>>299
書き忘れたんですけど内部DSLの例で括弧使った例って
よくわからないのだけど
301デフォルトの名無しさん:2014/06/20(金) 00:43:28.34 ID:1cTFM3kL
DSLって部分を読み落としたんだろ
302デフォルトの名無しさん:2014/06/20(金) 01:18:50.96 ID:fiYVjyLm
>>304
外部DSLを知らないってことですね
303デフォルトの名無しさん:2014/06/20(金) 11:50:05.10 ID:aFVmrh+o
304デフォルトの名無しさん:2014/06/20(金) 12:57:20.72 ID:+KfxKSN3
RT >304
305デフォルトの名無しさん:2014/06/30(月) 23:35:39.25 ID:/VX5kW5x
REPLで複数行書きたい時はどうすればいいんですか?
306デフォルトの名無しさん:2014/06/30(月) 23:45:51.71 ID:ZuJKedxl
:paste
307デフォルトの名無しさん:2014/06/30(月) 23:50:01.16 ID:wg1FsARY
Scala 2.12 ロードマップ
http://www.scala-lang.org/news/2.12-roadmap
308デフォルトの名無しさん:2014/07/01(火) 00:56:30.83 ID:AScZaUEE
SparkやるからしかなてくScalaやってる
309デフォルトの名無しさん:2014/07/05(土) 08:21:34.99 ID:hui6Zpi5
>>296
ありがとう!!!
310デフォルトの名無しさん:2014/07/06(日) 14:29:54.31 ID:PhqEnIg/
311デフォルトの名無しさん:2014/07/06(日) 16:47:37.80 ID:XWehaxkr
違った、今回メインスピーカーをEPFLから呼んで発表してもらうのか。
312デフォルトの名無しさん:2014/07/22(火) 01:23:00.17 ID:8fKoNhp+
scalazでHaskellのreturnに相当するのはpointだというところまでは分かったのですが、
failに相当するものも用意されているのでしょうか?
名前かURL等だけでも教えていただけると助かりますm(_ _)m
313デフォルトの名無しさん:2014/07/24(木) 22:37:00.06 ID:8wjKk8WJ
Scala 2.11.2 リリース
http://www.scala-lang.org/news/2.11.2
314デフォルトの名無しさん:2014/07/26(土) 22:36:05.28 ID:akzyvIVX
Scala、今月の日経ソフトウェアで、また紹介されていたな。
日経ソフトウェアでは、何度も何度もScala紹介特集記事が組まれるけど、毎回、紹介どまり。
使われているんか?これ?
315デフォルトの名無しさん:2014/07/26(土) 22:43:42.69 ID:QpStjJL+
意思決定の本買ったら付録で簡単な計算ソフトが付いてたけど、それがscalaで作ってあった
316デフォルトの名無しさん:2014/07/26(土) 23:26:57.61 ID:omqjkMZj
>>315
あまり詳しくないんだけど、scalaで作られてるかどうかって分かるの?
317デフォルトの名無しさん:2014/07/26(土) 23:37:44.22 ID:QpStjJL+
>>316
ライセンスのフォルダにscalaのが入ってた
318デフォルトの名無しさん:2014/07/26(土) 23:52:27.18 ID:omqjkMZj
>>317
そうだったのか、ありがとう。
ちょっとマニアックな著者だね
319デフォルトの名無しさん:2014/07/27(日) 23:02:51.06 ID:zvGXOn3J
>>314
使われてないし今後もあり得ないから安心していいよ
320デフォルトの名無しさん:2014/07/27(日) 23:13:21.50 ID:kfoRg0UT
さわりは素晴らしい言語に見えるんだけどね
カオスな暗黒面に足を踏み入れると、こんなものがJavaに取って代わって
広く使われたりしたら悪夢だとわかるよな
321デフォルトの名無しさん:2014/07/29(火) 18:20:45.23 ID:2/t5IWNy
例えば以下のようなメソッドを
> 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デフォルトの名無しさん:2014/07/31(木) 00:33:16.16 ID:K5ixd5cr
>>320
暗黒面って例えばどんなところ?
323デフォルトの名無しさん:2014/07/31(木) 00:47:31.66 ID:WhIuVQf3
324デフォルトの名無しさん:2014/07/31(木) 07:20:16.44 ID:cjUptmKw
>>322
たとえば例外処理に何通りのやり方がある?
その中で今どれを使うべきか理由付きではっきり言える?
2,3年後もそのやり方がベストだと言える?
325デフォルトの名無しさん:2014/07/31(木) 11:00:24.01 ID:TyXWzrY4
>>324
むしろ、構文側できちっと用意してないので、何種類でもやり方があるのが問題なのではなかろうか

そもそもjavaのtry-catchスタイルの例外処理自体が失敗だったと言う説も…
326デフォルトの名無しさん:2014/07/31(木) 20:09:46.22 ID:V5ufa/CK
何かをしたいとき、選択肢が多すぎる
ベストプラクティスが無いか変わるのが早過ぎる
327デフォルトの名無しさん:2014/07/31(木) 21:44:57.14 ID:TyXWzrY4
用途の半分以上がスクリプト言語のscalaにベストプラクティスを求めるのも酷な気がする
328デフォルトの名無しさん:2014/07/31(木) 23:13:00.62 ID:hAgm6RGa
>>325

その説ってWebだとどこで読める?


>>327

> 用途の半分以上がスクリプト言語

スクリプト「言語」じゃなくて、スクリプトとしてScalaが使われているってだけだよね。
用途の半分以上ってどこかにソースある?
個人的には、そういう実行方法はおまけ程度の話だと思っていて、
用途の半分以上ってにわかには信じがたい。
329デフォルトの名無しさん:2014/07/31(木) 23:18:40.44 ID:hAgm6RGa
>>327

ちなみに、正真正銘スクリプト言語の Perl も Ruby も
O'Reilly からベストプラクティスについて書かれた本が出てるよ。
330デフォルトの名無しさん:2014/08/01(金) 00:03:53.51 ID:NVVZFtzI
>>328
半分以上どころか、scalaの用途のほとんどすべてが「スクリプト言語として」だと思う根拠は、どのみち顧客に触らせるアプリケーションの実装はjavaかCだから
331デフォルトの名無しさん:2014/08/01(金) 00:09:48.45 ID:NVVZFtzI
>>329
PerlやRubyについては、ベストプラクティスは自明じゃないからこそ本にしたり議論を紛糾させてるのではなかろうか
332デフォルトの名無しさん:2014/08/01(金) 02:41:20.58 ID:VlaOK2Ua
>>330
その根拠からだと、顧客に触らせるアプリケーションの実装はjavaかCで、
scalaは使われないっていうだけの結論だよね。

>>331
俺が言いたいのは「スクリプト言語だから」みたいな話は変だよねっていうこと。

仮に議論が
「Scala は開発者の日々のタスクを自動化するような比較的小さな規模のアプリケーションでしか使われない」
みたいなというところから始まっていればまだ少しはわかる気がするんだけど。

ところで「スクリプト言語」ではない言語だと、ベストプラクティスは自明になったり、
ベストプラクティス本が無かったり、議論が紛糾しなかったりするの?
333デフォルトの名無しさん:2014/08/01(金) 15:26:10.17 ID:vm60yDAy
http://qiita.com/yimajo/items/a3fac0026c07ec538fc2

記法に一定のモラルを持たすこと。

漠然とした表現だけれども自分の中ではそう認識している。
ただこれはあのひとらの流儀に則るならどうか
でも別のグループのひとらは別の規約をお持ちのようだから
あちら流に合わせるとどうかと、

強いて言うならその場の勢いで盛り上がったまではよかった。

しかし道場破りが状態化してそうな格闘技のジャンルみたいに
なっていくんでないかという懸念(実質フリーダムに分派していくことも多し)

バックグラウンドが同じではないなら、なおさらバラバラに
なり易い。少人数でローカルで規約作って書き上げれるためにはある程度の錬度は必要だと思う。
334デフォルトの名無しさん:2014/08/01(金) 23:38:07.54 ID:NVVZFtzI
>>332
scalaが使われないのは、「顧客に触らせるアプリケーションの実装」ではなく、他人のレビューに耐えうるコードの公開

「Scala は開発者個人の日々の仕様書が存在すないタスクを自動化するような比較的小さな規模のアプリケーションでしか使われない」

スクリプト言語ではない言語だとベストプラクティスが自明になる(ならざるをえないレベルに強制的に徹底教育される)理由は、他人とのコミュニケーションを必須とするチーム開発をするから
335デフォルトの名無しさん:2014/08/02(土) 00:22:53.10 ID:8ls/zwO2
それSlerの話しでしょ
自社でWebサービスやってるような会社ではScala使ってたりする
336デフォルトの名無しさん:2014/08/02(土) 00:53:04.26 ID:UBZX0AEK
Twitter では Scala がインフラ開発で広く活用されているのは
Scala使いなら常識だと思っていたんだけど、
どこから >>334 みたいな珍説が生まれたんだろう?
337デフォルトの名無しさん:2014/08/02(土) 07:48:39.99 ID:fNoV+ZBu
マルチパラダイムというほどのことではなく、実際には以前の設計がちょっと気に入らないために
似たようなものが再発明されて放置されてるゴミが多いんだよな
一番問題なのはマルチパラダイムという言葉に甘えた無節操・無計画な開発方針だよ
338デフォルトの名無しさん:2014/08/02(土) 08:55:10.64 ID:mREeLnvF
一般の業務システム程度の要求に対してScalaはオーバースペックだし難しすぎる
これだけでSIerが採用しない理由としては十分

普及ってのがSIerを対象にしていないのなら別に気にしなくていいんだろうけど
339デフォルトの名無しさん:2014/08/02(土) 14:56:09.02 ID:kNRdpdrF
どこが難しくてオーバースペックなのかわからない

何と比較してるのかわからないが
JavaやPHPなんかよりすっきりするし、
変数の扱い等も楽だと思うのだけど
340デフォルトの名無しさん:2014/08/02(土) 15:25:23.82 ID:1euMp4Dx
>>339
プログラムを簡潔に記述できる!=プログラムを覚えやすい、ではないでしょ
簡潔に表現するための抽象的で自由度の高い機能は、知らない人にとっては複雑に感じるよ。

JavaやPHPは旧来の言語(CやC++)を知っていれば何と無くかけるし、世の中に情報が溢れているからね。
Scalaは関数型言語としては、その点を重視して旧来の考え方を取り込んでいるから実用性が高いけど、まだ世間が追いついていない。
341デフォルトの名無しさん:2014/08/02(土) 15:35:09.23 ID:kNRdpdrF
>>340
簡潔に書けることよりvalがあるのが大きい
まだ追いつかないのは仕方ないとは思うけどね
342デフォルトの名無しさん:2014/08/02(土) 15:56:57.86 ID:537qFnzj
メンバーが全員関数型言語に理解があるなら迷わずScala使うけど、
そんなチームがどれだけあるのやら
スクリプト的な用途だと最後まで1人で作ることがほとんどだから
気軽に採用できるけどね
343デフォルトの名無しさん:2014/08/02(土) 16:16:03.26 ID:HM7CQAr9
Scalaを使う層は、関数型的な使い方なんてしてないだろ
c++とhaskell以外はプログラマなんて名乗ったり、語らなくていいよ
344デフォルトの名無しさん:2014/08/02(土) 16:25:32.10 ID:1euMp4Dx
>>342
会社(集団)としてScalaを推し進めて行けば、普及は可能だと思うけど。
もちろん、派遣メインのSIerじゃ無理だから、自社サービスやってるところに限られるけど。
最近だと、ドワンゴがPHP→Scalaを推し進めているみたいね。
345デフォルトの名無しさん:2014/08/02(土) 16:26:41.36 ID:8ls/zwO2
D, Go, RustがあるからC++はもういらないけどな
346デフォルトの名無しさん:2014/08/02(土) 16:28:25.91 ID:0zt4dTHD
関数言語として使い方が分からないときでも、自力でなんとかプログラムできないと困るしな…
347デフォルトの名無しさん:2014/08/02(土) 16:30:08.10 ID:UBZX0AEK
>>342
関数型言語というのが純粋で遅延評価な Haskell であれば、
システム開発への適用は無茶だという意見に自分も同意する

でも JavaScript や Ruby といったスクリプト言語では、
関数型プログラミングというスタイルは
すでに常識となっている(Java でもラムダ式構文が追加された)
だから数年前とは違って、ML族(SML/OCaml/F#)や Scala のような
「ふつうの関数型言語」であれば、システム開発に採用するハードルは
十分に低くなっていると思う
348デフォルトの名無しさん:2014/08/02(土) 16:32:36.03 ID:zMi2Xe+5
うちは受託開発で普通にScala使ってるけど。
客に「Scalaって何ですか?」って聞かれたら、「Javaに毛が生えたようなもんですよ」って
言っとけば、だいたい何となく納得してくれる。
349デフォルトの名無しさん:2014/08/02(土) 16:36:27.17 ID:0zt4dTHD
>>347
基本情報処理技術者試験に具体的なコードの問題が存在しない関数型プログラミングというスタイルを常識と呼ぶのはいかがなものか
350デフォルトの名無しさん:2014/08/02(土) 16:38:55.57 ID:0zt4dTHD
>>348
拡張部分を他者にJavaで作らせて結合できなくて「Javaじゃないの?」とクレーム入れられて死ぬパターンとみた
351デフォルトの名無しさん:2014/08/02(土) 16:40:09.68 ID:1euMp4Dx
>>348
おっいいねー。
どのぐらいの規模?直受け?
352デフォルトの名無しさん:2014/08/02(土) 16:49:56.05 ID:UBZX0AEK
>>349
基本情報処理技術者試験で出題されるプログラミング言語は、
C、COBOL、Java、アセンブリ言語の4種類しかない

つまり >>349 の住んでいる異次元世界だと、
C++/C#/JavaScript/Python/Ruby/PHP は
非常識なプログラミング言語という扱いなんですねー(棒
353デフォルトの名無しさん:2014/08/02(土) 16:57:55.82 ID:0zt4dTHD
>>352
C、COBOL、Java、アセンブリ言語に代表される線形なプログラミング言語による開発は常識ですが、C++/C#/JavaScript/Python/Ruby/PHP をλ抽象を型として抽象化する関数型プログラミング言語は非常識と言う扱いです

用語すら統一されておりません
354デフォルトの名無しさん:2014/08/02(土) 17:05:37.13 ID:kNRdpdrF
JavaでScala。
355デフォルトの名無しさん:2014/08/02(土) 17:13:36.10 ID:ETyhgdmp
>>340
一番完結なのはアセンブラとか機械語だな
あれこそ高度に抽象化されてる
356デフォルトの名無しさん:2014/08/02(土) 17:16:29.49 ID:UBZX0AEK
>>353
そうですか、>>353氏の住んでおられる異次元世界では
C# の LINQ や JavaScript の jQuery は非常識なんですね
しかも C++/C#/JavaScript/Python/Ruby/PHP は
「関数型言語」として扱われているんですね

つまり「手続き型言語」として認められているのは
基本情報処理技術者試験で出題される
C/COBOL/Java/アセンブリ言語だけ

こりゃ異次元世界の住人様と話が合うはずもありませんねー(棒
357デフォルトの名無しさん:2014/08/02(土) 17:17:00.88 ID:0zt4dTHD
>>355
いまだに社会インフラのインフラ部分がアセンブラだから、機械語とアセンブラに関しては言語の性質関係なく技術者確保が必須になる
というか、団塊の世代が完全引退したらもうメンテできない

2000年問題どころの騒ぎじゃないんだけど、もうあきらめてるのかな
358デフォルトの名無しさん:2014/08/02(土) 17:23:08.04 ID:0zt4dTHD
>>356
どの言語であれ、λ抽象を型として抽象化する関数型プログラミング言語は日本では非常識

学術的にはλ抽象を型として抽象化する言語を「関数型言語」として扱うが、私の住んでいる異次元世界日本では、その「関数型言語」の範囲すら統一されていない

つまり、常識として認められてるのは、C/COBOL/Java/アセンブリ言語を典型例として基本情報処理技術者試験で出題される「手続き型言語」だけ
359デフォルトの名無しさん:2014/08/02(土) 17:27:25.39 ID:UBZX0AEK
>>358
私も住んでいるのは日本ですけど、
やはり>>358氏の住んでおられる日本は
同じ日本でも次元の異なる異世界だったのですねー(棒
360デフォルトの名無しさん:2014/08/02(土) 17:35:43.60 ID:0zt4dTHD
>>359
例えば、常識の定義を

「社内の技術者の80%の人が同じ意味として理解しており使える」
「これに沿ってプログラミングしていれば作業環境を交換しても今からすぐに相手の作業を継続できる」
「質問したときに即答できないとペナルティを受ける知識」

とするなら、あなたは「関数型プログラミングというスタイルは常識」の世界に住んでいるのでしょうかね?
361デフォルトの名無しさん:2014/08/02(土) 17:42:41.21 ID:gLUtqrlx
パラダイムと言語の違いもわからない人が常識とか言ってるの・・・
362デフォルトの名無しさん:2014/08/02(土) 17:46:49.94 ID:UBZX0AEK
>>360
そうですね

「社内の技術者の大半(80%?)にとってCOBOLやアセンブリ言語は常識ではない」し、
「COBOLやアセンブリ言語で書かれたプログラムを社内の誰もが引き継げるとは考えられない」し、
「COBOLやアセンブリ言語に関する質問に答えられなくてもペナルティを受けることはない」から、

>>360氏の住む異世界日本の常識とは、かなりかけ離れているみたいですねー(棒
363デフォルトの名無しさん:2014/08/02(土) 17:48:40.92 ID:0zt4dTHD
>>361
正確には、非常識なのは「関数型プログラミングというスタイル」でしたね

「パラダイム」という単語の意味も80%の人が同値な説明をするのは無理なので、常識とは呼べないでしょう

応用技術者の方にも具体的なコードでの関数型プログラミングというスタイルの出題がないくらいだし
364デフォルトの名無しさん:2014/08/02(土) 17:52:37.49 ID:0zt4dTHD
>>362
「社内の技術者の大半(80%?)にとって、COBOLやアセンブリ言語を典型例とする手続き型プログラミングのスタイルが常識ではなく」
「COBOLやアセンブリ言語を典型例とする手続き型プログラミングのスタイルで書かれたプログラムを社内の誰もが引き継げるとは考えられなくて」
「COBOLやアセンブリ言語を典型例とする手続き型プログラミングのスタイルに関する質問に答えられなくてもペナルティを受ける」

ような世界でも関数型プログラミングのスタイルを理解できるんですね
365デフォルトの名無しさん:2014/08/02(土) 17:54:35.87 ID:UBZX0AEK
>>363
関数型プログラミングですら非常識という人が
常識的には関数型言語に分類される Scala のスレで
いったい何をしたいのですかね?

(はたして Scala は関数型言語なのか?という議論はさておき....)
366デフォルトの名無しさん:2014/08/02(土) 18:00:18.12 ID:0zt4dTHD
>>365
どんな先進的な科学も、社会の常識になる前にいろいろと議論する人達がいるわけでして…
367デフォルトの名無しさん:2014/08/02(土) 18:09:37.27 ID:mREeLnvF
>>341
> valがあるのが大きい

Javaのfinalと同じじゃないの?
368デフォルトの名無しさん:2014/08/02(土) 18:41:05.56 ID:UBZX0AEK
>>364
いや、

> 「COBOLやアセンブリ言語を典型例とする手続き型プログラミングのスタイルに関する質問に答えられなくてもペナルティを受ける」

ような世界では、おそらく関数型プログラミングのスタイルを理解するのは難しいんじゃないですかね?

私の住んでいる次元世界の日本では、(>>362で書いたように)
「ペナルティを受けることはない」ので、自分では想像できないですねー(棒
369デフォルトの名無しさん:2014/08/02(土) 18:57:55.40 ID:UBZX0AEK
>>366
COBOLやアセンブリ言語が手続き型言語の典型例であるとする
異次元世界の住人との間では、そもそも議論にならないのではないかと思われ...

自分は最初(>>352)からまともに相手してませんよー(棒
370デフォルトの名無しさん:2014/08/02(土) 20:47:19.99 ID:qJcWiIKu
久しぶりに伸びてると思ったらこんな話題かよ
371デフォルトの名無しさん:2014/08/02(土) 21:21:09.15 ID:kNRdpdrF
>>367
確かにfinalでもいいのかも
372デフォルトの名無しさん:2014/08/02(土) 21:24:50.23 ID:mREeLnvF
Scalaだとvalが肯定される一方、Javaでfinalを付けると
「気持ち悪いから止めろ」
「finalを付けたくなるというのは、そもそもお前の書き方が悪い」
って全否定されたでござるの巻
373342:2014/08/02(土) 21:56:59.71 ID:537qFnzj
なんか変な種撒いたみたいですまん。申し訳ない。
うちは派遣メインなんだわ…やっぱ自社開発したいなあ。頑張ろう
374デフォルトの名無しさん:2014/08/02(土) 22:31:23.70 ID:0zt4dTHD
>>368-369
基本情報処理技術者試験でわざわざ具体的なコードを提示して問題を出している手続き型プログラミングのスタイルを知らなくてもペナルティを受けないような人達がscalaの機能について議論するのはいかがなものか?
375デフォルトの名無しさん:2014/08/02(土) 22:44:36.46 ID:UBZX0AEK
>>370,373
スルーできなかった自分が悪かった、ゴメソ
376デフォルトの名無しさん:2014/08/02(土) 23:12:04.12 ID:fNoV+ZBu
ドメイン駆動よりもむしろドカタの得意技トランザクションスクリプトの方が関数型には合ってるよ
COBOLアプリの設計書なんかそのまま関数型で実装すれば関数型として違和感のないものが出来上がるはず
Scalaみたいな最近流行りの「関数オブジェクト指向」じゃなくてガチな宣言型の方の関数型な
377デフォルトの名無しさん:2014/08/03(日) 00:12:47.91 ID:+5GTUuN1
>>337
http://www.reddit.com/r/scala/comments/2cc671/the_10_most_annoying_things_coming_back_to_java/
[–]vytah 3 points 22 hours ago
I can honestly say if someone had shown me the Programming Scala book by
Martin Odersky, Lex Spoon & Bill Venners back in 2003.
I'd probably have never created Groovy.
― James Strachan, creator of Groovy

[–]expatcoder 1 point 21 hours ago
and now author of the Kotlin standard library, ironically enough, guy gets around ;-)

十一年前そう思って作ってやったんだぜ?
がgroovyらしい。

しかしgroovyもscalaも十年前からあるんだ
という事実にちょっとビビってしまう。

Haskel的立ち位置にありそうだけど使いどころは要検討かなと認識
個人的に強い型チェックが馴染まんのでlisp界隈いじりたい今日のこのごろやな…

http://redmonk.com/sogrady/category/programming-languages/
378デフォルトの名無しさん:2014/08/03(日) 00:12:49.39 ID:Kg8uVIVR
>>376
君この記事読みなよ
http://zerobase.hateblo.jp/entry/2013/02/21/171750

SIerが作ってるプログラムだって、抽象度が高い箇所はある(主に画面、画面が持つ機能。Controller,Service,Logic,DAO,Entity)
それらまで関数型だけで実現するコストは如何なもの?
379デフォルトの名無しさん:2014/08/03(日) 00:38:05.54 ID:+5GTUuN1
Spring Framework 4プログラミング入門 [単行本]
http://www.amazon.co.jp//dp/4798041564
掌田 津耶乃

http://www.amazon.co.jp/掌田-津耶乃/e/B004L5AED8/

なぜに今spring framework4なのか...
380デフォルトの名無しさん:2014/08/03(日) 00:44:41.22 ID:hQ3yR5lB
禿本を読んだのも もう10年前の話だな 懐かしい
381デフォルトの名無しさん:2014/08/03(日) 01:04:42.68 ID:XCZJfuBH
>>378
リンク先の記事の技術レベルは「アルゴリズム宣言」と同じだね
少なくともシステム開発には直接関連しない話題だ

また抽象度が高いからこそ、オブジェクト指向よりも抽象化の粒度が小さく
形式的である(Scala を含む)関数型パラダイムが適していると思う
382デフォルトの名無しさん:2014/08/03(日) 01:30:26.57 ID:Kg8uVIVR
>>381
>>378
>リンク先の記事の技術レベルは「アルゴリズム宣言」と同じだね
>少なくともシステム開発には直接関連しない話題だ
意味不明。説明願おう

>また抽象度が高いからこそ、オブジェクト指向よりも抽象化の粒度が小さく
>形式的である(Scala を含む)関数型パラダイムが適していると思う
言葉足らずだったが、抽象化の粒度が大きいもの(実世界に存在するもの)はどうするんだ?
383デフォルトの名無しさん:2014/08/04(月) 16:29:42.31 ID:8cMXTNzM
とはいえ現実には世の中だいたいトランザクションスクリプトでうまく回ってわけだしな
粗粒度の抽象化をしないことによる生産性や保守性低下の弊害は宣言型により極めて劇的に改善できる
関数型普及の切り札はやっぱりトランザクションスクリプトとの相性の良さでしょ
384デフォルトの名無しさん:2014/08/04(月) 18:05:17.58 ID:SEnw8P0k
> 極めて劇的に

そりゃまた大きく出たもんだな
385デフォルトの名無しさん:2014/08/04(月) 18:44:57.55 ID:hGuEjdDh
>>383
お前さあ、言いたいことだけ言ってて、全く根拠が無いんだが?
ちったあ、考えてもの家
386デフォルトの名無しさん:2014/08/04(月) 19:39:37.20 ID:8cMXTNzM
誰かのブログ記事貼ればよかったの?w
387デフォルトの名無しさん:2014/08/04(月) 20:37:43.19 ID:CJ83fxk4
>>382
関数型言語プログラマまたは関数型プログラミングをしている人であれば、
誰でもオブジェクトの不変性が重要である事は理解しているはず(しかもココは Scala スレ)

>>378 の記事は、著者がこうした関数型への壁を一つ乗り越えた感動を表現した感想文である
もちろんブログとは日々の心を綴る日記なのだから、>>378 の記事そのものに何ら問題はない

ただし、わざわざこの記事を引用し、それを読めと命ずる >>378 の意図がサッパリわからないという話
繰り返すけど、ここは関数型言語である Scala のスレだよ(他の雑談スレへ逝ったほうがいいと思うな)
388デフォルトの名無しさん:2014/08/04(月) 22:36:25.14 ID:DoTGORwJ
オブジェクトの不変性が大事だと言いつつ、実務ではmutableコレクションを使いまくってる感じだな…
389デフォルトの名無しさん:2014/08/04(月) 23:45:38.02 ID:u+J9LOc+
>>387
Scalaは関数型でありOOPでもある。両者は共存できる。オブジェクトの不変性よりこれを伝えたかった。
どうやら彼は関数型とOOPは水と油みたいに考えているようなので、そのことについての当てつけ。

何にしろ、本題のトランザクションスクリプトに関数型が合っているというのは理解できないけど。
390デフォルトの名無しさん:2014/08/04(月) 23:50:57.71 ID:X7ytY+se
みなさんエラー処理はどうしてます?
391デフォルトの名無しさん:2014/08/05(火) 00:13:33.14 ID:IMXi2FpS
scalaが関数型というより、scalaは関数型を持ってると言った方が正確ではなかろうか
392デフォルトの名無しさん:2014/08/05(火) 01:36:25.40 ID:jeY7qdd3
最近忘れてたが、純粋なオブジェクト指向だけど、速さも両立してるというのは独特だったね。
393デフォルトの名無しさん:2014/08/05(火) 01:41:37.56 ID:jeY7qdd3
>>390
Ether使った上で個別のエラーを取りたいときどうするかが、話題になってたね。
394デフォルトの名無しさん:2014/08/05(火) 07:27:03.67 ID:ghCtuQ0N
>>391
同意
宣言型じゃないんだからデリゲート指向とでも呼ぶべきもの
395デフォルトの名無しさん:2014/08/05(火) 08:12:20.31 ID:IpAz30+6
>>394
>>391はhas-aって言ってるけど、お前はis-not-aじゃねーか。なーにが同意だ
そもそもデリゲート指向ってなんだよ。お前Scalaのこと何も分かってねえだろ
396394:2014/08/05(火) 08:16:04.90 ID:ghCtuQ0N
関数オブジェクトを持ってるという意味な
>>391がそういう意味なのか関数型言語を包含してるという意味なのかは知らないけど
397デフォルトの名無しさん:2014/08/05(火) 23:27:29.77 ID:nq9s5bEX
なんでtrueやfalaseってTrueやFalseじゃないんですか?
398デフォルトの名無しさん:2014/08/06(水) 02:35:05.64 ID:ZQqZwKiZ
>>390
Eitherとscala.util.Tryで大半を扱ってる
try-catchを使わない理由はtail callを壊してくれるから
399デフォルトの名無しさん:2014/08/06(水) 08:42:10.11 ID:AGBFAu/N
この手の言語で関数型というとき、第一級関数だけに目が行ってて宣言的プログラミングを軽視する奴が多いのは確か
400デフォルトの名無しさん:2014/08/06(水) 09:46:03.05 ID:gMehfwaL
Haskell作者のインタビュー本には、今時、どの言語でも関数オブジェクト扱えるんだから、
関数型言語とはと聞かれたら、immutableのサポートと副作用の制御あたりを挙げるべき
てな話が載ってたはず。
401デフォルトの名無しさん:2014/08/06(水) 18:22:22.18 ID:GvRv1e44
>>399
逆に宣言型マンセーでマルチパラダイムの関数型言語軽視するやつが多くも感じる。
結局の所、自分の認めたこと以外認めない奴の声が大きいだけなんだよ。
402デフォルトの名無しさん:2014/08/06(水) 19:12:40.42 ID:AGBFAu/N
まあそれはそうだが、filterやmapの後にforeachしてこれが関数型だと言われてしまうと、
さすがに抵抗を感じる奴は多いんじゃないだろうか
マルチパラダイム言語らしいところではあるけど、その点ではストリームのメソッドにforeachを入れずに
副作用は従来のforeach文で分けて書かせることを選択したC#は上手い
403デフォルトの名無しさん:2014/08/06(水) 21:19:52.01 ID:cXwK7sUI
Anormシンプルでいいな
Slickみたいな言語内DSL型のORMを使うと破綻する
404デフォルトの名無しさん:2014/08/06(水) 22:15:54.12 ID:e5ISbei6
そもそもscalaを選択する理由が、関数型プログラミングをしたいからじゃなくて、既存のプログラミングスタイルの中で関数型を使いたいからだしな…
そこら辺が分かってるからこそmutableなんて変なコレクションを置いているのではなかろうか
405デフォルトの名無しさん:2014/08/06(水) 22:51:58.07 ID:WntmyFY5
Scalaだめだろ
アドホックにいろいろくっつけすぎて
大したことできないのにわけわかめなことに
406デフォルトの名無しさん:2014/08/06(水) 22:58:28.77 ID:e5ISbei6
とりあえず、Javaでできることは全部できるよ
407デフォルトの名無しさん:2014/08/06(水) 23:11:08.18 ID:m3/gfdXx
>>402
固く考えるなよ。>>400ぐらいの解釈でいいんじゃね?
俺はC#がforeachをlinqにないのは不便だと思うし、ネット調べたらそういった感想がいっぱい出てくるぜ?
Ixにはなぜかあるしな。
408デフォルトの名無しさん:2014/08/06(水) 23:14:28.38 ID:m3/gfdXx
>>405
むしろ何ができないのか教えてほしいもんだ。
409デフォルトの名無しさん:2014/08/07(木) 08:33:53.34 ID:UhGIHveY
>>407
>>400の解釈ならforeachなんかもってのほかだろ
Scalaってイミュータブルにしろ純粋関数使えというのがやたらと強調される割に
途中過程でforeach使うなというのはあまり聞かないよな
まさに副作用の象徴といえる存在なのに
410デフォルトの名無しさん:2014/08/07(木) 12:18:47.77 ID:hdemE6Ef
mapとかfilterとかはわかるけど、foreachってイマイチどこで使えばいいのかわからない。
411デフォルトの名無しさん:2014/08/07(木) 18:25:41.06 ID:j7LnXvCB
>>409
immutableのサポートであって、強制ではないでしょ。
foreachがないと、ビジネスロジックが処理できなくなるじゃん
412デフォルトの名無しさん:2014/08/07(木) 18:27:24.86 ID:j7LnXvCB
>>410
やろうと思えばなんでもできる。ってのがforeachの役割。基本、最終手段に使えばいいんじゃね?
413394:2014/08/07(木) 21:11:14.69 ID:UhGIHveY
>>411
>foreachがないと、ビジネスロジックが処理できなくなるじゃん
それimmutableだけではビジネスロジックが処理できなくなると言ってるのと同じだよ
foreachはimmutableだけで構成されたコードでは本質的に全く意味を持たないからね
命令型のためのAPIを流用する以上、最終的な出力にはforeachは必須だけどそれ以外には不要だよ
414デフォルトの名無しさん:2014/08/07(木) 21:28:14.98 ID:7g/ek2KL
>>413
お前極端に受け取りすぎだよ。
filterやmapした後に、各要素に対してDBアクセスしたい場合、foreachを使わず悩まず処理ができるかって話だ。

本質的に意味を持たない?コレクションに対する必要な処理をした後に、そのままの流れで副作用のある処理をするのならforeachが自然だろ。

それでもimmutableにこだわるのなら、Scalaを使うべきでは無いのでは?
415デフォルトの名無しさん:2014/08/07(木) 22:29:04.69 ID:/tp7lvnq
phpはmap処理よりforeachのが速いのか。
416デフォルトの名無しさん:2014/08/07(木) 22:35:29.79 ID:kMs4sz3W
Scalaのライブラリコードは、foreachってかwhile文使いまくりだよね。
417デフォルトの名無しさん:2014/08/07(木) 22:35:50.13 ID:/tp7lvnq
http://yuroyoro.hatenablog.com/entry/20100317/1268819400
scalaだとこういうこと出来るのか。
418デフォルトの名無しさん:2014/08/07(木) 22:44:01.01 ID:/tp7lvnq
http://xin9le.net/articles/90
http://www.slideshare.net/mobile/zoetrope/java8-lambdaandstream
逆にいうと、C#やjavaだと区別がつかないのか。
419デフォルトの名無しさん:2014/08/08(金) 00:59:39.36 ID:a3yimXET
Java8が出た今、存在価値なくなったよね
420デフォルトの名無しさん:2014/08/08(金) 02:09:34.29 ID:TNc1fB7W
本気でそう思ってるのなら頭ん中お花畑としか思えない
421デフォルトの名無しさん:2014/08/08(金) 12:14:56.39 ID:I3/yjOSM
言語仕様なんて一つの要素にすぎないからね
結局、比較的マイナーな言語を使うことによる環境面での諸々のデメリットとJavaのストレスとどっちを取るかだから、
そこのバランスは多少なりとも変わる
422デフォルトの名無しさん:2014/08/08(金) 18:13:09.67 ID:lfSHbP83
Javaが重要なのは仕様ではなく、APIと企業の宣伝だしな…
423デフォルトの名無しさん:2014/08/09(土) 00:18:19.17 ID:u5v054hr
今月の日経ソフトウェア見たけど
Scalaは今後世界を席巻しそうだね
424デフォルトの名無しさん:2014/08/09(土) 00:51:25.18 ID:SbXIDJGW
コンパニオンオブジェクト鬱陶しい
static使わせろ
425デフォルトの名無しさん:2014/08/11(月) 23:02:43.45 ID:Fy8byxke
何度か使ってみたが同じ仕様でスタートしても実装の収束性が悪い気がする。
あまりいろいろできすぎるのも考えものだ。
426デフォルトの名無しさん:2014/08/12(火) 00:45:14.16 ID:/O5QMX+D
静的型付け界のperl
427デフォルトの名無しさん:2014/08/12(火) 07:40:07.19 ID:bJ/x0GjC
>>425
気がするどころかScala最大の欠点としてずっと言われ続けてるが
今も変わらず9割のクソと1割のまともなブツが生み出されてはカオスに仲間入りし続けている
428デフォルトの名無しさん:2014/08/12(火) 10:04:03.75 ID:78ufZTe1
まあどうせ主流になることはあり得ないからどうでもいい
429デフォルトの名無しさん:2014/08/12(火) 18:11:21.27 ID:AWDNtOwp
>>428
なんであり得ないの?ねえ?ねえ?
なんでwwwwあwりwえwなwいwのwwww!!!???
430デフォルトの名無しさん:2014/08/12(火) 18:20:14.52 ID:Uf5VA/xc
>>429
scalaを使うべき理由のNo1は(Javaの)APIが充実しているからだが、そもそもJavaですら使い切れておらず、Javaの存在そのものがセキュリティホールになっているから
431デフォルトの名無しさん:2014/08/13(水) 21:37:13.46 ID:vh/ykZOT
Scalaいらないものリスト
・コンパニオンオブジェクト
・newキーワード
・抽象型
・lazy引数
・implicit宣言
・インポート時の_root_
・デフォルトをprivateに
・for文のfilterその他
・自分型アノテーション
etc,etc....
432デフォルトの名無しさん:2014/08/13(水) 22:13:24.68 ID:xwn08+4R
>>431
>newキーワード
Javaクラスのインスタンス化。そもそもapplyでnew使うじゃん
>implicit
Javaオブジェクトの変換どうすんの?
433デフォルトの名無しさん:2014/08/14(木) 00:48:07.22 ID:q1H0Af2x
>>431
scalaコード一万行ぐらい書いてたが
数えてみたら抽象型とか一回も使ってなかったわ。
implicitはscalikejdbc使うときに必要なぐらい。
その他は好みの違いで済むものにいちゃもんつけてるように見える。
まぁもっとデカいプロジェクト
あるいはフレームワークっぽいの作ろうとしたら
色々使う機会もあるんでしょう。
434デフォルトの名無しさん:2014/08/18(月) 19:44:29.89 ID:4VAcRAlT
ゴテゴテ色んな機能が付いてて要らなく感じても邪魔になるようなものは少ないと思う
435デフォルトの名無しさん:2014/08/18(月) 21:26:38.89 ID:NjByR6kn
本で紹介されてた機能が便利で簡単そうだと思って使ってみら、半年後の自分にはコードだけでは理解不能

という状態を回避したい
436デフォルトの名無しさん:2014/08/18(月) 22:58:04.56 ID:18kJ6Cmw
Scalaって今後有望ですかね
437デフォルトの名無しさん:2014/08/19(火) 00:14:11.31 ID:dGN2Xh51
難しいだろうね
何かが足りないのはいくらでも改善できるけど、Scalaの場合はありすぎるのが最大の問題とされているので常に悪化する一方だ
438デフォルトの名無しさん:2014/08/19(火) 06:31:36.04 ID:RLzZhY/k
>>437
何が足りないの?挙げてみてよ
フルボッコにしてやるから
439デフォルトの名無しさん:2014/08/19(火) 08:07:25.50 ID:KuDDZyzc
シンプルさ?
440デフォルトの名無しさん:2014/08/19(火) 11:39:12.13 ID:VxtC/3Yq
わかりやすさ
適度な冗長さ
441デフォルトの名無しさん:2014/08/19(火) 12:45:41.24 ID:g7X0G1cO
>>438
ニュータイプ宣言
442デフォルトの名無しさん:2014/08/19(火) 12:51:08.59 ID:KntmMyQR
コードの堅牢さ
443デフォルトの名無しさん:2014/08/19(火) 15:54:37.43 ID:oAxlpYMb
sbtの複雑さはやばい
あれだけは擁護不可能
444デフォルトの名無しさん:2014/08/19(火) 16:29:11.80 ID:ACkzRhgX
s i m p l e b u i l d t o o l
445デフォルトの名無しさん:2014/08/19(火) 16:59:54.75 ID:dGN2Xh51
sbtはscalaにポータビリティに難ありというイメージを付けてしまった元凶だよな
446デフォルトの名無しさん:2014/08/19(火) 20:17:14.18 ID:KuDDZyzc
誰かS--とか作れ
447デフォルトの名無しさん:2014/08/19(火) 22:53:19.39 ID:ACkzRhgX
scalaが複雑すぎだとかなんとか言ってる人はKotlinとかその辺がいいんじゃないっすかね
使ったことないけど
448デフォルトの名無しさん:2014/08/21(木) 12:52:23.48 ID:94oPmB25
scalaってocamlのまんまパクリなのに何故もてはやされてるの?
氷水被るステマと同じ?
449デフォルトの名無しさん:2014/08/21(木) 16:59:39.46 ID:rdgyoHzk
>>448
JVMとjavaのAPIが使えるから
450デフォルトの名無しさん:2014/08/21(木) 17:02:28.59 ID:hozPYr3C
各種C++コンパイラも原典のパクリだが。
もてはやされる。
451デフォルトの名無しさん:2014/08/21(木) 17:11:14.43 ID:npCrOf/M
構文の上っ面を眺める作業に戻るんだ
452デフォルトの名無しさん:2014/08/21(木) 19:06:39.44 ID:hOocc919
正直、前方参照の問題を除けばOCamlで十分だよね
JVMとの親和性を高めるにしても、F#みたいなのでよかった
453デフォルトの名無しさん:2014/08/21(木) 19:25:36.91 ID:rdgyoHzk
>>452
そもそも大学で研究用に作られたモノだから、文句があるなら自分で作れという返答が返ってきそうだな…
454デフォルトの名無しさん:2014/08/21(木) 23:03:09.67 ID:V3wFXCwZ
>>448
どっかの受け売り?
455デフォルトの名無しさん:2014/08/21(木) 23:08:50.95 ID:V3wFXCwZ
haskellもocamlあまり移植が上手く行ってないんじゃなかったっけ?
http://jaskell.codehaus.org/
http://www.ocamljava.org/

haskellライクなやつはあるけど、これも開発者が少ない段階
https://github.com/Frege/frege
456デフォルトの名無しさん:2014/08/21(木) 23:17:20.01 ID:V3wFXCwZ
scalaは関数も含めて全てがオブジェクトという世界。
JVMでほかのML語族使いたいというなら、いまのところはfrageあたりで頑張るしかないんじゃないかな。
457デフォルトの名無しさん:2014/08/21(木) 23:22:15.41 ID:8dV6uUfa
ocamlだすとかネタでしょ
458デフォルトの名無しさん:2014/08/22(金) 00:18:33.10 ID:o8MxvfV6
scalaとocamlではオブジェクト指向の扱いが大分違うのでは?
F#は知らんけど。
http://d.hatena.ne.jp/camlspotter/touch/20080906/1220723583
459デフォルトの名無しさん:2014/08/22(金) 06:27:15.09 ID:c+MP2XXJ
F#はOCamlの不便なところ異質なところをだいぶ改善してる
結果的にかなりScalaに似てる
460デフォルトの名無しさん:2014/08/22(金) 14:12:53.08 ID:IpJPA1GG
結局javaのライブラリを呼び出すことになるから
null排除できないよね
461デフォルトの名無しさん:2014/08/22(金) 20:04:59.15 ID:612G7yH4
Optionに包めよ
462デフォルトの名無しさん:2014/08/22(金) 20:12:55.37 ID:qAmpYI06
マルチスケールって、いろんな抽象度でプログラミングできるってことなのね
463デフォルトの名無しさん:2014/08/22(金) 20:56:15.85 ID:I7aAUkM3
Optionは多用するには字面が長すぎる
Option[String] が String? みたいに書けたら良かったのに。
464デフォルトの名無しさん:2014/08/24(日) 13:09:37.76 ID:1VxSfKmv
A[B,C]をB A Cみたいに中置記法で書けなかったっけ
それで>>463できないの
465デフォルトの名無しさん:2014/08/30(土) 12:02:08.52 ID:hcc9935Q
そろそろScalaでFPGAを設計しようぜ。

http://wasa-labo.com/wp/?p=50
Synthesijer.Scalaをはじめました
466デフォルトの名無しさん:2014/08/30(土) 16:08:26.55 ID:sqMEbrT8
スカラ祭りどうなったん?
467デフォルトの名無しさん:2014/09/01(月) 04:25:29.58 ID:skqaNXzx
冗長でも読みやすい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)

例が極端なのかもしれないけど、う・・・うーん・・・・
なれる自信がないお
468デフォルトの名無しさん:2014/09/01(月) 06:11:04.55 ID:VWVGqYlR
その例なら普通にScalaの方が読みやすく感じる
そのScalaの例のようなスタイルのコレクション操作は他の多くの言語じゃ一般的に使われてて目新しいものじゃないし、
Javaにも最近ついに導入された
今時そういう考え方に馴染めない奴は時代遅れで生きる資格ないってことだ
469デフォルトの名無しさん:2014/09/01(月) 08:18:09.17 ID:9Mt2VCh8
>>467
names.stream().filter(n -> n.length() >= len).map(n -> n.toUpperCase()).collect(Collectors.toList());

慣れないと、Javaでも置いてかれるで。
470デフォルトの名無しさん:2014/09/01(月) 15:25:54.12 ID:skqaNXzx
>>468-469
なんてこったい・・・わけわからんでー
何がどうしてそうなるのか掘り下げてちゃんとやらないとなぁ
471デフォルトの名無しさん:2014/09/01(月) 18:40:26.90 ID:VWVGqYlR
>>467の上が読みやすいのって結局パターンを覚えてるからだよ
パターン抜きだと、上はいちいち処理を追ってみて動作から推測しないと何がしたいのか分からない
対して下はどういう結果が欲しいのかを宣言的に書いているので、パターンに当てはめるまでもなく意図が明らか
最初は難しいかもしれないけど、慣れてくると中で何をやっているのかは気にしなくなり、単に入出力のルールとしてコードを見られるようになる
472デフォルトの名無しさん:2014/09/01(月) 20:11:09.40 ID:kVDwsFss
基本は簡単

特定の条件を満たす要素だけ取り出す
一対一で別の型へ変換する
畳込みする

だけ
473デフォルトの名無しさん:2014/09/01(月) 20:52:41.69 ID:CiNZKcmO
names.stream().filter(
  n -> n.length() >= len
).map(
  n -> n.toUpperCase()
).collect(
  Collectors.toList()
);

こうやって折り曲げてみると読みやすくなる(鴨
474デフォルトの名無しさん:2014/09/03(水) 04:06:48.30 ID:0/Tw8rfN
スレの速度も遅いし日本じゃScalaってあんまはやってない?
関数型言語ってだけでビビられるから?
475デフォルトの名無しさん:2014/09/03(水) 07:02:28.36 ID:wZQ4Lp8r
日本以外でも別に流行ってはいないよ
どこでもScala技術者を集めるのなんて事実上不可能なので、内製でしか使えないからね
476デフォルトの名無しさん:2014/09/03(水) 10:49:14.07 ID:QONXtDoH
内製やツールからだね。
英語可・ただし社内公用語は日本語だから覚えてもらう条件で日本からscala技術者募集したら、海外から捕捉されて応募がくるレベル。
477デフォルトの名無しさん:2014/09/03(水) 18:26:02.15 ID:3KSJfFho
内製やツールからってのは同意だが、JVM言語の中では流行の兆しがある。
http://redmonk.com/sogrady/category/programming-languages/

TwitterやFoursquare、日本だとドワンゴとかネームバリューのある企業で実績があるので、マイナー言語の中では抜きん出てる感じ。
478デフォルトの名無しさん:2014/09/03(水) 19:38:53.60 ID:X0bCDfKh
sbtのsbtconfig.txtの記述って
build.sbtみたいに行と行の間に空行を入れないとだめ?
479デフォルトの名無しさん:2014/09/03(水) 21:14:28.69 ID:Fyy5dCxV
順位が徐々に落ちているのに流行の兆しとはこれ如何に
480デフォルトの名無しさん:2014/09/03(水) 21:19:33.26 ID:Y1teGBhn
>>479
対して変わってねーよカス
481デフォルトの名無しさん:2014/09/03(水) 23:46:27.79 ID:Ld1lmAG9
D言語よりは流行る見込みがある
そんなふうに考えていた時期が僕にもありました
482デフォルトの名無しさん:2014/09/04(木) 00:25:51.95 ID:/76N4Xsr
scalaが流行ってるのか…
JavaのAPIをいい加減に使いたい人が多いだけなのか…
483デフォルトの名無しさん:2014/09/04(木) 10:39:08.15 ID:t+YSKgeI
RT >>481
484デフォルトの名無しさん:2014/09/04(木) 16:21:44.84 ID:phUsPz7i
>>482
JavaがC#並にバシバシ更新されるならJavaでも良かったんだけど、
停滞激しかったんでScala。
485デフォルトの名無しさん:2014/09/04(木) 19:39:07.58 ID:/3JR0XIG
C#はバシバシ更新されて逆にやりすぎてカオスになってるけどな
486デフォルトの名無しさん:2014/09/04(木) 20:57:44.19 ID:TIeZUDIH
C#程度でカオスなんて言ってたらScalaはどうなるんだよ
C#は設計者の将来を見通すビジョンが神憑ってるので、一見無節操に拡張してるように見える割には
驚くほど失敗が少なく互換性も保たれている
487デフォルトの名無しさん:2014/09/04(木) 22:30:46.32 ID:qeEe482M
結構失敗してゴミ機能が散らかってるけど
あんまり全体に波及してないよな
488デフォルトの名無しさん:2014/09/04(木) 22:31:54.56 ID:7HfK9Ux7
>>487
ゴミ機能って例えば?
489デフォルトの名無しさん:2014/09/04(木) 22:33:13.21 ID:7HfK9Ux7
>>486
言うのは容易いね。
具体例を教えてくれ
490デフォルトの名無しさん:2014/09/04(木) 22:39:19.38 ID:qeEe482M
delegateとかeventとか
491デフォルトの名無しさん:2014/09/04(木) 22:50:41.51 ID:TIeZUDIH
eventはIDE向けの機能としては重要だろう
プロパティと同じで、単なるaddEventListener/removeEventListenerのシンタックスシュガーだ
VB6みたいないい加減な実装やJavaみたいなプリミティブな実装ではなく
関数オブジェクト(デリゲート)を選んだことで、後に関数型を自然に導入できた
まあデリゲートが高階関数で使われることが多くなった今となってはマルチキャストなんて明らかに失敗だけどね
492デフォルトの名無しさん:2014/09/04(木) 22:56:59.10 ID:7HfK9Ux7
ああ、C#の話ね
493デフォルトの名無しさん:2014/09/04(木) 22:58:54.08 ID:qeEe482M
Scalaはすでにゴミ屋敷だろw
494デフォルトの名無しさん:2014/09/04(木) 23:06:19.12 ID:7HfK9Ux7
>>493
ゴミ屋敷って例えば?
495デフォルトの名無しさん:2014/09/04(木) 23:11:28.79 ID:TIeZUDIH
>>494
じゃあ例えばScalaとJavaのコレクションを相互変換する際のベストプラクティスを教えてくれ。
知らないなら調べてみればいい。ゴミ屋敷というのがどういうことか実感できる。
496デフォルトの名無しさん:2014/09/04(木) 23:20:58.78 ID:7HfK9Ux7
>>495
それってJavaの資産を再利用するためのトレードオフじゃね?
やり方がまずいってか?
497デフォルトの名無しさん:2014/09/05(金) 22:43:30.29 ID:wnbFz6tV
ScalaMatsuri
http://scalamatsuri.org/

Scala祭 A会場 生中継 - 2014/09/06 09:55開始 - ニコニコ生放送
http://live.nicovideo.jp/watch/lv191315006

Scala祭 B会場 生中継 - 2014/09/06 09:55開始 - ニコニコ生放送
http://live.nicovideo.jp/watch/lv191315534

オダスキー先生 基調講演
09/06 10:15-10:55 A会場
498デフォルトの名無しさん:2014/09/06(土) 05:21:11.28 ID:OOdmM81I
色々いらん機能はおいといて

Traitはどんな感じですか?
インターフェースより使いやすい?
499デフォルトの名無しさん:2014/09/06(土) 08:51:18.77 ID:pFfZGxbT
>>498
使ってみればわかるだろ…
個人的には他の言語でも使いたくなるレベル
500デフォルトの名無しさん:2014/09/06(土) 10:12:24.62 ID:GAr/vTxS
Scala Matsuriなう
501デフォルトの名無しさん:2014/09/06(土) 10:19:17.30 ID:mR0iWa8+
小田さんが若くてイケメンだった
てっきり髭もじゃのおっさんかと思ってた

ってか英語がさっぱり分からん
502デフォルトの名無しさん:2014/09/06(土) 13:55:14.82 ID:ASRhmvFn
F#とこれだとどっちが勢いあるの?どっちもどっちか?
503デフォルトの名無しさん:2014/09/06(土) 14:01:01.09 ID:GuSRX+KM
ScalaはWeb系の連中がメインだから流行ってるかどうかはともかく声はでかいね
F#はモデル書くための言語なので、内々で使われててもなかなか外に情報は出にくいだろう
504デフォルトの名無しさん:2014/09/06(土) 14:46:35.77 ID:ASRhmvFn
なるほど、棲み分けてる感じか
505デフォルトの名無しさん:2014/09/06(土) 17:56:20.22 ID:GAr/vTxS
小田好先生、若いよね
506デフォルトの名無しさん:2014/09/10(水) 13:14:46.01 ID:OGYLu77Z
なんか面白そう

Functional Programming in Scala
ttp://www.amazon.com/dp/1617290653
507デフォルトの名無しさん:2014/09/11(木) 19:10:25.20 ID:FBULLL+R
>503
ScalaFXMLのおかげでデスクトップアプリもポトペタ開発ができるんだけど
もっと流行ってほしいよね。
508デフォルトの名無しさん:2014/09/11(木) 20:36:36.44 ID:p8xl46sF
純粋に言語として好き好んでScala使ってる奴はあんまりいないだろ
「Javaよりマシ」で使ってる奴がほとんどで、
デスクトップアプリみたいな元々Javaが全くと言っていいほど使われていないところで
わざわざScala使いたいというニーズはほとんどないだろう
509デフォルトの名無しさん:2014/09/11(木) 20:41:29.67 ID:iMb89+Ox
scalaをx86/x64バイナリにコンパイルするのやってないんかと思ったら、LLVM+Scalaでいっぱいでてくるね
510デフォルトの名無しさん:2014/09/11(木) 21:18:04.38 ID:u7D02Ifa
JVMフリーにできるん?
511デフォルトの名無しさん:2014/09/11(木) 21:35:55.77 ID:YYptXSvy
scala+LLVMは2,3年くらい前に話題出た気がするけどあれから進んでんの?
512デフォルトの名無しさん:2014/09/11(木) 21:50:11.60 ID:ItD6Xlgu
rt.jarはどうすんだ
513デフォルトの名無しさん:2014/09/12(金) 00:33:31.24 ID:0BYn51Wm
.netや.jsでもjava互換じゃないし適当なんじゃない?
514デフォルトの名無しさん:2014/09/12(金) 13:05:51.26 ID:DG53EyxR
自分ではあんまりパターンマッチとかimplicit系使わないし
java8に移行でもいい気がしてきたけど
結構使ってるライブラリが中でその辺の機能使ってるんだよなー
515デフォルトの名無しさん:2014/09/12(金) 13:56:06.43 ID:ylwL1QX/
Scala はオワコン
516デフォルトの名無しさん:2014/09/12(金) 14:29:07.93 ID:Rlgj4qMQ
パターンマッチ使わないってマジかよ
517デフォルトの名無しさん:2014/09/12(金) 23:29:37.14 ID:aSXhEBy3
val a = 1
を代入だと思ってるかもしれないが、実際にはパターンマッチしてんだぞ
val 1 = 2
とか実行時にこけるけどちゃんとコンパイルできるからやってみれ
518デフォルトの名無しさん:2014/09/13(土) 00:36:47.68 ID:FW2AVG6W
$ 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
-
519デフォルトの名無しさん:2014/09/13(土) 14:05:12.04 ID:qZFgBNfb
sml じゃんって突っ込みはおいといて、Scala でも REPL じゃ動かない。
520デフォルトの名無しさん:2014/09/16(火) 21:20:01.26 ID:PVbEy2qP
jreがjava8に勝手にアップデートされててscalaのreplを起動するたびにエラーが出るのですが、
scalaのバージョンアップしないとダメでしょうか
scalacはまったくできません

バージョンは 2.10.0です
521デフォルトの名無しさん:2014/09/17(水) 00:51:27.14 ID:ry1QXF9R
http://d.hatena.ne.jp/xuwei/touch/20130507/1367933673
対応したのは、scala2.11以降みたいだね。

scalaのバージョンアップ無理なら、
環境変数にJRE7のディレクトリをJAVA_HOMEに定義したり、
JRE7のディレクトリのbinフォルダをPATH追記してみてはどうだろう。
522デフォルトの名無しさん:2014/09/17(水) 12:10:34.14 ID:s3EEUMiw
523デフォルトの名無しさん:2014/09/17(水) 21:56:45.30 ID:ni7V6gFc
>>507
> >503
> ScalaFXMLのおかげでデスクトップアプリもポトペタ開発ができるんだけど

なにそれ?日本語の情報とかブログ記事が全然ないけど。。
JavaFX Scene Builder と Scalaを結びつけるようなツール?
524デフォルトの名無しさん:2014/09/17(水) 23:08:00.90 ID:ry1QXF9R
https://github.com/vigoo/scalafxml
こんなんでてきた
525デフォルトの名無しさん:2014/09/20(土) 08:19:05.53 ID:fKogPvtk
もうsbtもxmlもみたくないです
526デフォルトの名無しさん:2014/09/24(水) 22:25:09.86 ID:yadyJ4T4
不変クラスと最適化(コンパイル時&実行時)についての質問です。

二次元の点を表すPointクラス(不変なx, y)と、矩形を表すRectangleクラス(不変なleft, right, top, bottom)がある時に、
Rectangleクラス中に矩形の左上の点に相当するPointクラスを得るメンバを定義したい場合
@val leftTop = Point(left, top)
Adef leftTop() = Point(left, top)
どちらが効率的か、もしくはScalaの流儀に近いのでしょうか?

Java自体初心者なので、このあたりのバイトコードの最適化や実行時のプール(キャッシュ?)が
どうなるのかもわかっていないので恐縮なのですが、Java風に愚直に考えますとメモリと実行速度の
トレードオフなのかな?程度の認識であります
527デフォルトの名無しさん:2014/09/24(水) 23:00:54.55 ID:CDwr8wLF
defの方は毎回新たなPointを作って返すので不変ならキャッシュされるvalの方でおk

scala> rect.leftTopVal eq rect.leftTopVal
res0: Boolean = true

scala> rect.leftTopDef() eq rect.leftTopDef()
res1: Boolean = false
528デフォルトの名無しさん:2014/09/25(木) 22:29:14.27 ID:7HVWG8nF
>>527
ありがとうございます
529デフォルトの名無しさん:2014/09/26(金) 23:55:43.45 ID:o9Kksrnh
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"の部分はソースの位置関係で直してくださいね。
533デフォルトの名無しさん:2014/09/29(月) 18:37:18.64 ID:Cpf505MC
富豪的にやっていたところjava.lang.OutOfMemoryErrorが連発して困っているんですが
foreachをwhileに書き換えたらマシになりますか?
534デフォルトの名無しさん:2014/09/29(月) 19:27:59.24 ID:7NGLULLv
まずはプロファイラでどこでメモリを消費してるのか調べる所から
ついでに言っとくと中間コレクションを作るmap/filter系ならともかくforeachをwhileにした所でほぼ意味はない
535デフォルトの名無しさん:2014/09/29(月) 23:22:57.68 ID:ALvDn+8A
>>533
連立方程式だけど、全部のforeachをwhileに書き換えたら10倍のオーダーで速くなった
536デフォルトの名無しさん:2014/09/30(火) 01:18:50.48 ID:DNHzTUo6
Scalaコンパイラに1週間で2つのフォーク
http://www.infoq.com/jp/news/2014/09/scala-compiler-forks
537デフォルトの名無しさん:2014/10/04(土) 16:34:13.39 ID:kuR5U7xS
>>533
亀だけどStreamとかEnumerateeとか使えば?
538デフォルトの名無しさん:2014/10/10(金) 19:58:03.61 ID:ZRo9q53y
どう頑張ってもbetter javaくらいにしか使えない... 皆よくScalaを使いこなせるなー.
539デフォルトの名無しさん:2014/10/10(金) 22:09:28.22 ID:j7rjXjTe
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
543540: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ってネットに繋がっていないと
コンパイルとか実行とか出来ないものなの?
545デフォルトの名無しさん:2014/10/20(月) 21:27:54.35 ID:5yUl/Y88
>>544
ネット出られる必要があるのはプロジェクト作成時のテンプレート持ってくるとこくらいじゃないかな
546デフォルトの名無しさん:2014/10/21(火) 18:24:25.78 ID:tvrnfHdI
http://codahale.com/the-rest-of-the-story/

皆さんお疲れ様でした〜 (^^)/
547デフォルトの名無しさん:2014/10/21(火) 19:51:25.90 ID:J5QTOqbt
それもう見飽きた
548デフォルトの名無しさん:2014/10/21(火) 20:01:55.46 ID:tssqKg1C
結局scalaは流行らなかったなwww
549デフォルトの名無しさん:2014/10/22(水) 03:31:45.73 ID:vm6AE+XF
もう言語っていうよりフレームワークとDSLの時代だもんな
Groovyは言語仕様としての質も完成度も低いが時代の流れに完全にマッチしてた
言語自体のGroovyは死ぬ可能性はあるがGradleはもうなくならんだろう
ScalaはそもそもSBTの時点でセンスなかった
550デフォルトの名無しさん:2014/10/22(水) 20:36:11.37 ID:9jtn+Bo4
俺もSBTとXML嫌いだ。あとCSSも。
3つに共通することだが簡易さと厳密さのバランスが感性に合わぬ。
俺が欲しかったのは動的すぎるのを適度に抑えた
GroovyやPythonやRubyでありScalaではなかった。
551デフォルトの名無しさん:2014/10/22(水) 21:25:48.61 ID:lgl8UBuc
自分で作れ
552デフォルトの名無しさん:2014/10/23(木) 01:29:20.98 ID:6Dqy3QI+
これからはセイロンの時代
553デフォルトの名無しさん:2014/10/26(日) 00:30:25.77 ID:1gOcb0xq
>>552
Ceylonはnull関連以外はいいところってあるの?
>>548
大物案件ぐらいしか使わないだろうしな
play2が流行ればあるいは
554デフォルトの名無しさん:2014/10/26(日) 05:40:18.72 ID:92b4LBoc
Kotlinにもあるがnull禁止型の考えは良いよなぁ
Scalaも値型を強制するような記述ができればよかったのに
555デフォルトの名無しさん:2014/10/26(日) 13:36:59.34 ID:1gOcb0xq
scalaって2014年になってからまた注目度も上がっているような気がするが、
556デフォルトの名無しさん:2014/10/26(日) 13:53:23.26 ID:36WJPz7e
一般の人が使う関数原語の機能なんてjava8で十分なんじゃね?
557デフォルトの名無しさん:2014/10/26(日) 13:58:22.69 ID:+LJzbNuz
Java.next("笑");
558デフォルトの名無しさん:2014/10/26(日) 18:32:03.35 ID:RPezmOOm
>>556
clojure で scala と java 呼びだしてる俺に隙はない
559デフォルトの名無しさん:2014/10/26(日) 19:44:18.35 ID:1gOcb0xq
>>556
関数型の部分抜きにしてオブジェクト指向言語としても
scalaはbetter javaだと思うんだけど

>>558
clojureのいい本教えて!
560デフォルトの名無しさん:2014/10/26(日) 21:39:12.19 ID:N4XFMXzM
>>559
何も知らねえ奴に勧める本なんかねえよ
せめてプログラミングClojureくらい読んでから質問しろやカス
561デフォルトの名無しさん:2014/10/27(月) 04:05:48.12 ID:7bYMC8Tr
>>560
ありがと
562デフォルトの名無しさん:2014/10/27(月) 22:11:48.80 ID:X3xt+VA5
repl のあるjava
jdkがreplを採用するまでは scalaの優位は揺るがない
563デフォルトの名無しさん:2014/10/28(火) 05:51:29.10 ID:xmGpgvM5
いやIDEならJavaもreplあるでしょ
どうせJavaもScalaもIDEないと使いものにならないんだし
564デフォルトの名無しさん:2014/10/28(火) 20:31:31.30 ID:r0bJEdJf
いや重いide立ち上げなきゃいけないのとは違うと思うが
上手い人はコマンドラインで結構バリバリ書いてるし
565デフォルトの名無しさん:2014/10/28(火) 21:12:12.53 ID:+jM/bTCW
emacs+コマンドプロンプトなのは俺だけか…
566デフォルトの名無しさん:2014/10/28(火) 21:12:31.24 ID:NKYjPxlr
Java9にREPL入れたいって話出てて織田先生が文志向の言語にREPL入れてもってコメントしてた
567デフォルトの名無しさん:2014/10/28(火) 21:18:44.39 ID:0nka3Inw
>>566
確かにそうだよね
java9が値ベースになればいいのでは()
568デフォルトの名無しさん:2014/10/28(火) 21:55:40.35 ID:+jM/bTCW
むしろ、replを残したままCと互換性を作る方向に行ってほしい
scalaっぽくて、replで使えるCがあればぜったい使うのだが
569デフォルトの名無しさん:2014/10/28(火) 22:23:06.93 ID:ZOLvQIZQ
>>568
C++そのものだけどClingってのがあるよ
570 ◆QZaw55cn4c :2014/10/28(火) 22:56:29.55 ID:uvfLqTRT
>>568
C インタプリタをお望みか?後藤さんのCINT はいまいずこ?
571デフォルトの名無しさん:2014/10/29(水) 22:11:21.38 ID:GPUXProf
ガベージコレクタ前提の言語にcは大変なんじゃね?
572デフォルトの名無しさん:2014/10/29(水) 22:37:54.80 ID:sAUwAoWk
ある任意のクラスをEnumみたいに列挙したい場合に、
Enumの代わりにcaseobjectがよく例に挙げられるけど、
列挙したメンバはループで回したいからEnumみたいに自動でリスト化して欲しいんだよね・・・
なんか良い方法ないかな?
573デフォルトの名無しさん:2014/10/29(水) 23:28:58.39 ID:GPUXProf
javaのenumを使えばいいんじゃ?
574デフォルトの名無しさん:2014/10/29(水) 23:50:35.90 ID:sAUwAoWk
Javaは「任意のクラス」をEnum化できないよね
一応その任意のクラスがinterfaceを継承してれば、Enumにも同じinterface実装させて
メンバとして任意のクラスのインスタンス包含してメソッド移譲すればいけるけど、それは条件付きだし面倒じゃん?

それともJavaのEnumを継承するっていう裏ワザ?
あれ挙動がわからないから知ってる人おしえて欲しい
575デフォルトの名無しさん:2014/10/30(木) 00:18:46.96 ID:eELuPMAu
Clojureにはdefrecordがあるんだけどね
576デフォルトの名無しさん:2014/11/07(金) 21:43:28.70 ID:zWfuzZHv
reflectionってどういう用途で使うの?
577デフォルトの名無しさん:2014/11/08(土) 23:07:05.51 ID:zoQOtECa
Javaから移ってきたけど、今まで可変なListで状態を管理していた部分を、不変で上手く表現できない。
例えばJavaのGUIでよくあるリスナーなんかは、都度addしたりremoveしたりするけど、
Scala流でいくと、そのたびに新しいリストを作るのかな?
(この場合、リスナーがそもそも可変な状態を持ってることが多いから当てはまらないかもしれないけど)

自分にそういった設計する力がない場合は無理に不変にしなくていいんだよね?
578デフォルトの名無しさん:2014/11/08(土) 23:16:22.94 ID:rWmp+yU0
>>577
immutableでやるなら、元リストから新リストを新しく作る
だけど、元リストが不変であることから、内部的には元リストへのリンクを追加していくだけになり、それほど問題はないはず
579デフォルトの名無しさん:2014/11/09(日) 00:03:15.71 ID:JWR8ncyO
>>578
なるほどありがとう、追加と削除はさほど問題ないのね。
もしプリミティブのリストの1要素が変わる場合でも、同じことだよね。頑張ってみる
580デフォルトの名無しさん:2014/11/09(日) 13:21:50.76 ID:PMdr4BQl
いやイベントを発行するクラスが不変じゃなきゃ意味ないだろ
その内部でリスナを保持するコレクションが不変かどうかなんてはっきり言ってどうでもいい
581デフォルトの名無しさん:2014/11/09(日) 14:03:34.91 ID:VcMedQcJ
582デフォルトの名無しさん:2014/11/09(日) 16:07:41.99 ID:2mw0izN0
>>576
コンパイル時にclassファイルがないとか、関数が決定してないとかに使う。
ただし遅い&コンパイル時チェック出来ない。
例えばjsonからクラス作ったりとか。
遅いことに関しては、関数ポインタキャッシュしたり動的バイトコード生成したりで対処することも多い。
http://www.ne.jp/asahi/hishidama/home/tech/java/reflection.html
583デフォルトの名無しさん:2014/11/09(日) 21:26:33.03 ID:PMdr4BQl
リフレクションはフレームワークやを作る人のためのものだな
アプリケーションコードで好き勝手に使わせると最低最悪の糞ができあがる
584デフォルトの名無しさん:2014/11/13(木) 00:50:09.05 ID:rsmCfUri
今日本屋行ったらコップ本の第二版がでていたけど、初版持ってても買い直す価値あるの? それともあまり変わってないの?
585デフォルトの名無しさん:2014/11/13(木) 12:57:24.04 ID:qgYUywN0
>>584
書店で見たなら手にとって中身確認すればよかったじゃん。
初版も読んでないから比べられないってとこなんだろうけど。
どうせ読まないなら買いなおす価値なんてないよ。
586デフォルトの名無しさん:2014/11/15(土) 12:17:36.19 ID:9CCG+v0o
“azzbzzzczzzz”
こういう文字列を”z”じゃない先頭の文字で”z”をreplaceして
以下のような文字列に置き換えたいんだけど、smartかつimmutableにやる方法無いかな?
“aaabbbbccccc”

fold使ってキーブレイクしてるんだけど、いまいちsmartじゃ無くてさ
587デフォルトの名無しさん:2014/11/16(日) 19:55:33.39 ID:QkHPkx5P
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
588デフォルトの名無しさん:2014/11/16(日) 23:08:18.86 ID:QkHPkx5P
>>587
こっちのがいいか

def replace(s: String) = ptn.replaceAllIn(s, m => m.group(1) * (m.group(2).length+1))
589デフォルトの名無しさん:2014/11/17(月) 22:46:31.92 ID:8bpMIfSu
>>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)
590デフォルトの名無しさん:2014/11/18(火) 03:28:43.36 ID:NOXAhKQ6
>>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
591デフォルトの名無しさん:2014/11/18(火) 03:33:48.37 ID:NOXAhKQ6
>>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)
592デフォルトの名無しさん:2014/11/19(水) 00:26:13.69 ID:N2hIEB54
@BeanProperty試そうと思ったら
scala.beansパッケージをIntelliJが認識してくれない(コンパイルは通る)
同じ症状の人いる?
593デフォルトの名無しさん:2014/11/20(木) 00:01:51.08 ID:cfO2qF6m
>>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
594デフォルトの名無しさん:2014/11/20(木) 02:11:09.73 ID:iZxyrQFk
>>593

readable とは何かって話だが、提示された仕様を実装するための
自分自身の思考パターンをほぼそのままコードにしているから
記述スタイルを除いて、俺にとってはこれ以上 readable にならん。

実際 >>593 を見てなぜそれでいいのか即座には理解できないでいる。
595デフォルトの名無しさん:2014/11/27(木) 23:00:55.11 ID:z7rvU/Vo
Akka を使って、処理を map reduce のように
1 -> N -> 1
としたいのですが、N の送り先をどのように設定するのがベストでしょうか。
object を宛先とすれば勝手にこうなりますか?
1 -> N はわりとサンプルが多いので簡単に作れたのですが。
596デフォルトの名無しさん:2014/11/28(金) 00:06:24.07 ID:7XNBsotE
aggregator パターンと呼ばれているものが使えそうでしたが、
それほど複雑なものは必要なかったので ActorRef を保持する object を作り
それを参照して送受信するようにしてしまいました。
ありがとうございました。
597デフォルトの名無しさん:2014/11/28(金) 04:04:44.49 ID:O/dyue/E
pathでやったことがあるような気がする。
598デフォルトの名無しさん:2014/11/29(土) 22:13:32.35 ID:minsRaFd
並列コレクションでいいじゃん
Actor使う意味がない
599デフォルトの名無しさん:2014/11/30(日) 02:19:56.72 ID:eUaHiCdR
ましんまたぐんじゃないの
600デフォルトの名無しさん:2014/12/03(水) 22:36:37.34 ID:mN47767/
scalaスレ最近書き込み少ない。
興味はあるんだけど、将来性はどうなん?
業務で使われているみたいな話はたまにあるけど
案件増えてるんですかね?
601デフォルトの名無しさん:2014/12/03(水) 23:13:05.58 ID:WRoQBeep
なんか Scala ってごちゃごちゃしてる
602デフォルトの名無しさん:2014/12/03(水) 23:43:16.82 ID:fPpGIPtv
すっからかん
603デフォルトの名無しさん:2014/12/04(木) 00:16:28.05 ID:HlG2OCoT
もうコップも空だね
604デフォルトの名無しさん:2014/12/04(木) 19:40:11.01 ID:ByGCb4eC
いまのところ、2年くらい前に作った自社用プログラムの保守だけ
605デフォルトの名無しさん:2014/12/04(木) 21:27:50.95 ID:LLako/JK
>>604

全くないって訳じゃないけどごく稀にって感じですか。
今更ですけど、最近"Scalaで学ぶ関数脳入門"っていう本を読んで
悪くないと思ったんですけど、じゃあjavaの代替として主流になるというとどうかと。
javaがよく使われる大規模な業務システムとか大人数の開発だと
レベルの高い人と低い人がいる訳で、全員が使いこなせるとは思えなく。
Ruby(Rails)なんかで開発してる層はtwitterみたいに移行する事もあるでしょうけど...
606デフォルトの名無しさん:2014/12/05(金) 01:06:52.79 ID:O+MQ7/rK
>>605
流行らないって言われたら手を出すのはやめるの?
自分の興味関心に忠実になればいいだけの話だと思うんだけどなー
まあ技術的な興味ではなく「自己啓発」でScalaに関心を持った人にとっては
仕事にできるかどうかがなにより重要なんでしょうけどw
607デフォルトの名無しさん:2014/12/05(金) 01:18:09.27 ID:0DuWRmu1
Javaのラムダ式が広く使われるようになったら
Scalaももっと受け入れられるかと思っていたが
精神衛生的にJavaでラムダ式使える人はJava使っていれば済むんだよな

Androidの標準開発言語になるくらいのインパクトがないと
このままじゃね
608デフォルトの名無しさん:2014/12/05(金) 06:48:40.78 ID:f5JIJXMS
Scalaはレベルの高い人同士でも各自が好き勝手に「使いこなしたら」本当にそれぞれ全然違ったコードになっちゃう
せいぜい、密接にコミュニケーションが取れる数人のチームまでだね
609デフォルトの名無しさん:2014/12/05(金) 10:21:44.33 ID:NyP973bT
>>605
604 本人じゃないけど
興味関心が高まる要素の中に「流行ってる」ていうのが入ってるひとが居てもおかしくないと思うが
610デフォルトの名無しさん:2014/12/05(金) 10:51:43.47 ID:fhimsKny
今後のことはわからないけど、思ったより流行らなかった
みんな4,5年前はもう少し流行ると思ってた
611デフォルトの名無しさん:2014/12/05(金) 18:17:26.09 ID:Izx+IQ1I
みんな勘違いしてる
scalaがうけたのはλ式ではない

replだ
612デフォルトの名無しさん:2014/12/05(金) 21:09:47.74 ID:f5JIJXMS
珍説登場
613デフォルトの名無しさん:2014/12/05(金) 22:09:55.73 ID:2o7r4qwS
もうちょっと java っぽくなければやってた
614デフォルトの名無しさん:2014/12/05(金) 22:26:15.08 ID:Izx+IQ1I
javaっぽい上にデフォルトでreplがあるのがscalaの売りです
615デフォルトの名無しさん:2014/12/05(金) 22:29:48.33 ID:ry2Jek4M
えぇー……
616デフォルトの名無しさん:2014/12/05(金) 22:31:39.53 ID:f5JIJXMS
APIの綴りが長すぎてreplやエディタで気軽にとはいかないんだよな
617デフォルトの名無しさん:2014/12/09(火) 20:30:40.08 ID:/ijYo4+P
>>610
scala祭りとかやったりしてて4,5年前よりかは期待も上がってると思う
javaの代替とまではならないんだろうけど(個人的になんでjavaで書くのかよくわからん)
618デフォルトの名無しさん:2014/12/10(水) 05:28:19.42 ID:L2VGD1VN
JavaがTrait導入すればいいだけなような
619デフォルトの名無しさん:2014/12/10(水) 05:44:51.94 ID:iMNQyCTe
Java の標準コレクション、特にメソッドが不十分
620デフォルトの名無しさん:2014/12/10(水) 05:53:53.55 ID:L2VGD1VN
Scalaは可読性悪すぎ
621デフォルトの名無しさん:2014/12/10(水) 06:03:52.85 ID:+IoSb7+r
>>617
なんでJavaで書くのかわからんならScala使わなくてもいいんじゃない?
言語だけで自由に選べるならScalaより洗練されてる言語はたくさんあるよ
Scalaが使われる理由の8割はJavaが使われる理由と同じ
622デフォルトの名無しさん:2014/12/10(水) 13:22:28.41 ID:KjHGoGyM
Javaが使われる理由

@30% 今までJavaだったから、他のプロジェクトがJavaだったから
A30% Javaが書ける人が沢山いるから
B30% 静的言語を使いたいのにC#が利用できないから
C10% Javaが好きだから


Scalaを使うとしたらBの状況で、少数精鋭でもっとマシな言語を使いたいって場合だけじゃね
623デフォルトの名無しさん:2014/12/10(水) 13:35:11.88 ID:ukCIk/ls
関数型言語でも箇条書きのように羅列する人が多い
コピペしずらいとも苦情が
求められているのはシンプルで綺麗なものではなく
誰でも書けるイージーなものだったりして
プロジェクトに採用しない理由
624デフォルトの名無しさん:2014/12/10(水) 16:51:51.29 ID:H2sLcAHK
本格的にドカタ開発で関数型を使うなら、変にOOを混ぜないで純粋にIPOで設計して
データ項目間のルールをそのままコードで羅列するスタイルがよさそう
それなら分かりやすいし規模的にスケールさせやすいだろう
625デフォルトの名無しさん:2014/12/10(水) 20:41:23.68 ID:+OotUVpA
>>621
ちょっといいすぎた
jvmで動くしjavaapi使えるんし関数型やらんでもbetter javaなんだから
もうちょっと普及してもいいんじゃなかなぁと
626デフォルトの名無しさん:2014/12/11(木) 00:04:22.13 ID:mbz3wuYK
みんな難しく考えすぎ

Java = ポインタのない C
Scala = replのある java
627デフォルトの名無しさん:2014/12/11(木) 00:38:13.73 ID:8X2eWoyC
Java1.4とScala2.11ならScala選ぶけどJava8との比較だと導入の手間考えてJava8でもいいやと思ってしまう
628デフォルトの名無しさん:2014/12/11(木) 03:34:02.42 ID:QzXqBBc1
まずはシンプルなビルドツールをだな
629デフォルトの名無しさん:2014/12/11(木) 21:43:00.83 ID:c9V48XMs
Optionalとstreamで片付くこと多いからな
630デフォルトの名無しさん:2014/12/11(木) 21:59:57.63 ID:JVLmOrgp
あとはクラス定義が面倒なのと検査例外が邪魔なのさえ何とかなればもうScalaはいいや
検査例外はラムダが普及すれば自然に滅びてくれるはず
クラス定義はC#6.0を丸パクリしてくれれば
631デフォルトの名無しさん:2014/12/12(金) 17:54:24.50 ID:U4NMp7xw
えっおまえらcase classとパターンマッチと型推論いらないの
632デフォルトの名無しさん:2014/12/12(金) 22:29:25.54 ID:4pnM2nTR
もちろん要るからScala使えるメンバー揃ってるならそっちにするんだが
633名無しさん@そうだ選挙に行こう:2014/12/13(土) 13:44:01.53 ID:oDPenYV8
>>621の言うように、より優れた言語は沢山あるのにScalaを選んでる時点で
もともとJavaプラットフォームを使うために言語をある程度妥協してるんだよな
そこの環境と言語のバランスに強く影響される言語なのは確か
Haskellとかだと言語100%で使ってる人がほとんどなんだろうけど
634名無しさん@そうだ選挙に行こう:2014/12/13(土) 14:39:26.56 ID:4dRs6Zja
そう考えると、C言語にオブジェクト指向の味付けして、その後Javaとか
C#とかにも影響与えたC++ってすごかったんだな。

中途半端な妥協言語で終わらなかったわけだから。
635名無しさん@そうだ選挙に行こう:2014/12/13(土) 15:19:10.24 ID:hDRXKpp+
複雑なものが拒否されなかった時代だったからこそC++はあんなことになったんだと思う。
JavaEE辺りが本来不必要な思想的な複雑さを極めた反省からか、今は数学的なバックグラウンドがないと複雑さは受け入れられなくなってる。
今後は数学的なバックグラウンドがあってもやはり受け入れられないタイプの複雑さってのが整理されて消えていくと思うよ。

モナドとか。
636名無しさん@そうだ選挙に行こう:2014/12/13(土) 16:46:48.99 ID:G1l2H28J
リスト処理とか気付いてないけどモナドなんですが…どうやって消すの?
637名無しさん@そうだ選挙に行こう:2014/12/13(土) 18:04:37.26 ID:/wm7pCNP
>>634
C++を使うくらいなら、Cの構造体を駆使して頑張るよ
638名無しさん@そうだ選挙に行こう:2014/12/13(土) 20:13:22.58 ID:LmsGKyNP
どっちかっていうと、モナドって Haskell だから意味があるんであって。
個人的には do式、Scala で言うと for式 がモナドごとに名前付けられるとよかったな
F# のコンピュテーション式?みたいな
639名無しさん@そうだ選挙に行こう:2014/12/13(土) 20:34:32.79 ID:/wm7pCNP
プログラムの計算の列を抽象化したものがモナド
つまり、どの言語にもモナドが隠れている

逆に、モナドを明示的に示す形でしか計算の列を書けなくしたのがHaskell
640名無しさん@そうだ選挙に行こう:2014/12/13(土) 21:10:36.52 ID:LmsGKyNP
いやだからその抽象を明示的に扱えるのが意味のあるところなんだろ?
641名無しさん@そうだ選挙に行こう:2014/12/13(土) 21:21:40.33 ID:/wm7pCNP
>>640
「意味のある」の意味が、「論文をたくさんかける」「実際に動くコードを使った計算理論の説明がしやすい」なら、その通りです
642名無しさん@そうだ選挙に行こう:2014/12/13(土) 21:39:36.96 ID:LmsGKyNP
おっと。確かに意味があるって書き方が曖昧だったね。
文脈で構文の話だって分かると思ったんだけど
643名無しさん@そうだ選挙に行こう:2014/12/13(土) 22:42:17.35 ID:QWnf+Ls3
「抽象」って「隠れて」たり「在」ったりするものなの?
おしえて偉い人
644名無しさん@そうだ選挙に行こう:2014/12/14(日) 15:15:11.95 ID:uIhmr5dV
>>643
抽象は隠れてますがあります

「+」と「*」を抽象化した「演算」ですが、「+」と「あ」を抽象化したら「文字」です
645デフォルトの名無しさん:2014/12/17(水) 22:56:42.97 ID:d9eSqfr3
ScalaってRailsより生産性高い?
646デフォルトの名無しさん:2014/12/17(水) 23:11:19.91 ID:eIMkWRP9
>>645
言語とフレームワークは比較対象としておかしい
Play framework と Ruby on Rails あるいは、
Scala と Ruby なら比較できる

また、どういう領域、目的でそれらを適用しようとしているか明確にしないと答えようがない
647デフォルトの名無しさん:2014/12/17(水) 23:23:28.37 ID:+9Ck4qiZ
実質RubyとRailsはイコールみたいなもんだからおk
認めたくない人は多いだろうけど現実見ようぜ
648デフォルトの名無しさん:2014/12/18(木) 00:11:10.26 ID:kTQgNQyl
Railsで半日でやれることをScalaだけで半日でやれる気はしない
Scalaで数ヶ月かかることをRailsでやれる気もしない
649デフォルトの名無しさん:2014/12/18(木) 00:15:16.30 ID:06tYSw2u
 
 で も や る ん だ よ
650デフォルトの名無しさん:2014/12/20(土) 21:26:57.48 ID:JtAcEBQT
Scalaの正しい発音ってどんなのですか
自分はピザーラと同じ発音をしていますが
651デフォルトの名無しさん:2014/12/20(土) 21:48:33.73 ID:7VpkwSit
>>948
そしたらJava使う
652デフォルトの名無しさん:2014/12/21(日) 17:51:33.44 ID:hFJCQocc
>>650
スカラ
653デフォルトの名無しさん:2014/12/21(日) 18:06:40.92 ID:JX15aD5+
シャラ
654デフォルトの名無しさん:2014/12/26(金) 17:03:59.57 ID:gZ41P3hh
個人で触ってるだけなんだけど、Scalaz無しのScalaをまともに使える気がしない。
でも、仕事で触るなら普通Scalaz入ってないってマジなの?
みんなどうやってカバーしてるの?
655デフォルトの名無しさん:2014/12/26(金) 19:43:38.60 ID:PAahfQLZ
>>654
Scalazさっぱり分からない
どこから手を付ければいいのアレ
656デフォルトの名無しさん:2014/12/26(金) 23:17:20.21 ID:1JYz2Hcm
Scalaはお前が想像しているほど難しいことには使われていない
大抵、ベターJavaとしてWebのクソつまらん似たようなコードをちょっとだけ簡潔に書くのに使われているだけ
657デフォルトの名無しさん:2014/12/27(土) 13:19:09.99 ID:kjN3kdaX
関数型バリバリのライブラリは名前が抽象的すぎ
他人が書いたコードで使われてると、メンバの役割と名前の対応を暗記してないと何やってるのか全然わかんない
複数人での開発だと、利用範囲を絞り込んでリストでも作っとかないと使い物にならないね
658デフォルトの名無しさん:2014/12/27(土) 17:02:38.36 ID:8fK95Rgh
それは命名規則の話でscalaの問題としては一般化できないし
プログラミングにおける問題としては一般的すぎるような
659デフォルトの名無しさん:2014/12/27(土) 17:52:34.59 ID:OVKBEHKE
名前が過度に抽象的になりがちなのは関数型プログラミングの特徴的な問題ではあると思うぞ
関数型では操作のパターンを抽出してコードを共通化していく場合が多いが、
それを端的に表現するような言葉は自然言語には少ないからね
660デフォルトの名無しさん:2014/12/27(土) 18:20:56.75 ID:kcXcAVhx
命名規則を機能から辞書順序集合への写像として分析する分野があってもいいはずだ
661デフォルトの名無しさん:2014/12/27(土) 23:32:38.32 ID:8fK95Rgh
まぁ名前で分かった気になるくらいなら
暗記するまで毎回定義(実装)を確認しに行くくらいの方が
長期的には有益な気もする
IDE使っていれば大した手間じゃないし

数式なんて形式的意味しかない(つまり意味のない)名前ばっかりだが
それほど問題じゃないところを見ると
単に馴れの問題かと
662デフォルトの名無しさん:2014/12/27(土) 23:53:09.39 ID:elScS0oP
日経ソフトウェアでScalaの連載が始まるね。

ただ、あの雑誌いつまでも最初の導入の記事ばかりなのが少し残念。
あの雑誌の想定読者が幅広く設定しているから、
だれでも読み始めることができる導入部分しか企画として通らないのだろうけど。

連載一ヶ月分のページ数内で、一見さんにも「おおっ」って言わせられるような、
具体的な応用例とか載せてくれると面白いのだが。
663デフォルトの名無しさん:2014/12/28(日) 00:08:02.80 ID:2ZQi4yDZ
事実だとしたら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座
666デフォルトの名無しさん:2014/12/29(月) 10:55:32.51 ID:U8iTlWQL
もういい加減RustかSwiftか仕様決めてくれよ!
あとScala--出せ

ほんとにC#なんかが天下取っちまうぞ
667デフォルトの名無しさん:2014/12/29(月) 11:08:36.28 ID:tirsBVZi
C#は今パターンマッチを導入しようとしてるね
JVMとの相性の悪さが致命的だが、言語としてはもうC#でいいな
668デフォルトの名無しさん:2014/12/29(月) 17:33:44.59 ID:0o73V2FG
KotlinあたりがちょうどScala--にあたらなかったっけ
669デフォルトの名無しさん:2014/12/29(月) 20:24:50.76 ID:CSKZlxbR
>>667
一瞬 C#とJVMの相性が悪い? って勘違いした
670デフォルトの名無しさん:2014/12/29(月) 20:34:51.09 ID:CSKZlxbR
Scalaは底辺の頭の悪さをなめてるんだよ
反変共変+−どっちだっけ?より、C#の out/in の方が分かりやすいかなあ
671デフォルトの名無しさん:2014/12/29(月) 20:48:01.82 ID:X4sGBoa8
>>670
はっきり言うとそういう底辺はプログラマを目指すべきじゃないでしょ
javaどころかphpも触っていけないタイプ
精々vbaでもやってて下さいって感じ
672デフォルトの名無しさん:2014/12/29(月) 20:57:36.33 ID:tirsBVZi
>>667
>C#とJVMの相性が悪い?
そのつもりだよ
C#をJVMで動かすのってできそうでできないんだよ、JVMの機能が全然足りなくて
逆に.NETでJava動かすのは簡単なんだけどね
673デフォルトの名無しさん:2014/12/29(月) 21:22:12.92 ID:CSKZlxbR
>>671
その通りだなあ。最近読みやすさが一番大事になってきた

>>672
うん。Scala も足を引っ張られてるって話ね。
だから、何か JVM 上で C# 動かすプロジェクトがあるのかと勘違いした
674デフォルトの名無しさん:2014/12/30(火) 06:16:34.48 ID:ByhLfRSz
JVM言語で.NET上でも動くやつなかったっけ?
675デフォルトの名無しさん:2014/12/30(火) 07:10:39.99 ID:vxok/W8a
.netでscala動かすって話は立ち消えになっちゃったのね
できたら凄いのに
676デフォルトの名無しさん:2014/12/30(火) 07:58:48.14 ID:dxBK7ujR
動かせない理由はないし実際昔はあったけど、
C#じゃどう考えてもクソ強力なIDEサポートを捨てるデメリットの方が遥かにデカいだろ
ScalaはJVMに引きずられて不自然な制限がたくさんあるから、言語仕様面でも総合的にはC#より強力とは言い難い
677デフォルトの名無しさん:2014/12/30(火) 08:32:04.32 ID:nLX6XrO1
頑張ればネイティブコードも吐き出せるようにできるのだけど、そうするとJava系のライブラリ資産が使えなくなるのが厳しい。
何かと惜しいよね。Scalaは。

今時のLL言語って、RubyもPythonも独自のVM上で動かしているんだから、
ScalaがJVM上の言語というのも悪い話ではないはずなのに。
678デフォルトの名無しさん:2014/12/30(火) 11:34:42.32 ID:qWUDrM3h
JVMの方ではErasureのお陰で高階型が楽に実装できたけどCLRの方では無理っぽいんじゃなかった?
679デフォルトの名無しさん:2014/12/30(火) 11:45:20.86 ID:bUalCEjV
>>676
>ScalaはJVMに引きずられて不自然な制限がたくさんあるから
例えばどういうのがあるの?
JVMの制限が無ければこうした方が良かったのに、と思うような仕様って?
680デフォルトの名無しさん:2014/12/30(火) 13:20:31.63 ID:dxBK7ujR
高階型はそもそもJavaとも互換性無いでしょ
Scalaみたいにリフレクション使った無茶な実装でいいんならどうとでもなるよ
JVMに由来するScalaの制限としては、値クラスやClassTagなんかが代表的かな
JVMの仕様を知らなければ誰が見ても不自然
681デフォルトの名無しさん:2014/12/30(火) 14:19:06.01 ID:3v7rngRa
Scalaの教訓

必要なのはJVMではない
REPLだ
682デフォルトの名無しさん:2014/12/31(水) 00:00:46.89 ID:+fY/V6Ks
>>679
コンテナの型消去なんかが代表的じゃない?
後これはjvmの由来ではないけどjavaとの互換性のためにNull型のインスタンスのnullが存在していて
scalaでも悪さする場合があるところとか
683デフォルトの名無しさん:2014/12/31(水) 00:06:10.74 ID:+fY/V6Ks
>>681
replというか重要なのはライブラリの豊富さと実行環境の普及度と信頼性じゃないか?
他の関数型の言語が言語としての完成度はscalaよりも上でも中々普及しないのはここらへんじゃないかな
まぁscalaが従来のオブジェクト指向言語としても使えるっていう柔軟性もかってるだろうけど
684デフォルトの名無しさん:2014/12/31(水) 00:23:44.33 ID:geaLZRSJ
ライブラリの豊富さと実行環境の普及度はJavaと同じ
商用プロジェクトでもないかぎり、プログラマはそれほど高い信頼性を求めていない

scalaの普及度が低い理由は、理数系のテキストで使うプログラム言語に採用されてないからでしょう
連立方程式あたりを標準ライブラリとしてデフォルトで入れて、replから使えるようにすれば普及度が上がるでしょう
685デフォルトの名無しさん:2014/12/31(水) 00:57:30.80 ID:/vIALUin
数値計算に使おうとするとJVMのせいでパフォーマンスが出ないから、理数方面だと魅了はないだろ
Javaが遅いって意味じゃなくて、パフォーマンスを出そうとすると結局JVM的に普通なコード(=Javaと変わらないコード)になるって意味な
686デフォルトの名無しさん:2014/12/31(水) 01:07:33.17 ID:+fY/V6Ks
>>684
>ライブラリの豊富さと実行環境の普及度はJavaと同じ
だからその上で関数型言語を使えるようにした事がscalaがある程度成功した要因じゃね?
javaは十分に普及してるから
687デフォルトの名無しさん:2014/12/31(水) 15:02:29.32 ID://62RoNN
JVMについては、Windows環境でのJVMの冷遇っぷりがひどかったというのもあるよね。
Linuxだと JVMアプリが素直に立ち上がるけど、Windowsだと何かと面倒。

学術的な分野では、一時期、フリーな開発環境として、Javaがよく使われていた。
当時は、Cの開発環境とかCのライブラリを教えるよりかは、Javaの方が教えやすかった。
その影響からか、理数系分野でJavaのライブラリを使うのも流行っていた。
例えば、Wekaとか。
http://en.wikipedia.org/wiki/Weka_(machine_learning)

Scalaの数値計算のアプリとかライブラリとしては、
Scalala(行列系) とか Scalalab(Matlab系) とかもある。
https://github.com/scalala/Scalala
https://code.google.com/p/scalalab

今は、この辺、何もかもPython信者ばかりになってしまって、それはそれでツマラナイ状況。
688デフォルトの名無しさん:2014/12/31(水) 22:42:46.98 ID:geaLZRSJ
なんか、オライリーがpython信者な気がする
689デフォルトの名無しさん:2014/12/31(水) 23:23:48.51 ID:A/ir56Zb
時代は、scala から pythonへ。なの? www
690デフォルトの名無しさん:2014/12/31(水) 23:33:57.37 ID:/vIALUin
プログラミングより数式に興味がある人は
Scalaみたいな複雑な言語覚えるより
環境構築が楽で出来合いの道具が揃ってて覚えるのも使うのも簡単で周りに使える人の多い言語を選ぶ
691デフォルトの名無しさん:2014/12/31(水) 23:36:51.09 ID:geaLZRSJ
今調べたら家にある統計関係のオライリー本はpythonとRのやつしかなかった
たぶん、どっかの大学がpythonを推してるのではなかろうかと推察
692デフォルトの名無しさん:2014/12/31(水) 23:40:25.33 ID:A/ir56Zb
どっかの大学? MIT のことですかねぇ。
693デフォルトの名無しさん:2015/01/01(木) 01:58:57.72 ID:izRh1GEq
二兎を追う者は一兎をも得ず

【意味】
二兎を追う者は一兎をも得ずとは、欲を出して
同時に二つのことをうまくやろうとすると、
結局はどちらも失敗することのたとえ。
694デフォルトの名無しさん:2015/01/01(木) 13:01:24.78 ID:kfvwaXN/
結論: せめて二百兎くらいまとめて追いなさい
695デフォルトの名無しさん:2015/01/01(木) 18:34:04.96 ID:V3per93J
いかに有望な候補手に探索を集中させるかが大事
696デフォルトの名無しさん:2015/01/02(金) 01:02:19.98 ID:iMKpuMxF
MSと違ってGoogleはJVM作者いたりしてうまくやってたけど、Android抱えてからは訴訟抱えて新しいリソースは社外から集めてる印象。
697デフォルトの名無しさん:2015/01/02(金) 08:34:59.85 ID:UoXQYS7H
Javaコンパイラ開発チームにいてMSに移った人が1.5以降のJavaはクソと言ってたぞ
698デフォルトの名無しさん:2015/01/02(金) 15:10:16.18 ID:2iH+RE9d
Generics来て1.5から神になったんじゃねえかw

エンジニアのためのエンジニアのくせに
開発者の視点でしか物を見てなすぎだろ
699デフォルトの名無しさん:2015/01/02(金) 15:43:00.67 ID:9VoF1EwG
>>697
なお1.5以前のjava(笑)は・・・
700デフォルトの名無しさん:2015/01/02(金) 15:55:30.20 ID:9VoF1EwG
そういえばジェネリックなかったころのjavaってどうやってたの?
701デフォルトの名無しさん:2015/01/02(金) 16:11:57.35 ID:ZewlL3X3
Objectクラスとダウンキャストかな
702デフォルトの名無しさん:2015/01/02(金) 16:12:40.44 ID:UoXQYS7H
Javaのジェネリクスはキャスト自動挿入のシンタックスシュガーに過ぎないから無くても大きな違いはないよ
>>697で批判されてたのはその点
703デフォルトの名無しさん:2015/01/02(金) 22:44:54.05 ID:Cj7wITub
キャストの自動挿入と手動でキャストするのが大差無いって、
caseクラスやapplyメソッドの全否定じゃないの???
704デフォルトの名無しさん:2015/01/03(土) 01:15:06.46 ID:lFDIcml9
javaのジェネリクスって不変だもんね
? がでてきてやっと共変とかできるようになったんだっけ
705デフォルトの名無しさん:2015/01/07(水) 19:57:22.94 ID:4MYIFh4i
scalaってweb系以外の業務で使われてる実績あるの?
706デフォルトの名無しさん:2015/01/07(水) 23:02:37.20 ID:yytTE4BC
関数型の真価はむしろ大規模業務アプリケーションのモデル記述で発揮されると思うけど、
それならF#みたいにもっと宣言性を強調した言語のほうが適してるだろうな
ScalaはOOが出しゃばりすぎ
707デフォルトの名無しさん:2015/01/08(木) 22:23:41.24 ID:Z9Q3anII
>>705
意思決定法の本に付属してたプログラムがscala使ってた
コードはなかったけど
708デフォルトの名無しさん:2015/01/09(金) 13:13:18.61 ID:GLe7yQcF
OOがでしゃばりすぎっていうかOOで関数型を表現したって感じの言語だし
709デフォルトの名無しさん:2015/01/09(金) 17:45:25.30 ID:LBD0z7pz
俺もはじめ実用性でScala使おうと思って今もScalaを覚えるつもりだけど
Haskellの入門書チラ見してこれHaskell理解してないと関数型使えてるとは言えないと悟りScala一本で関数プログラミングを覚えるのはあきらめた
Haskell理解せずにScala使っても構文と周辺機能の恩恵でバグを減らせるJavaの上位互換くらいでしかないんじゃないかな
実績が上がっても業界的には下請けの水準が上がればJavaの代わりに使わせようくらいの残念な扱いになりそう
710デフォルトの名無しさん:2015/01/10(土) 09:12:35.22 ID:kTT0/GFr
業務で使うメリットがあるのは関数型というか宣言型だろうなあ
高階関数よりデータ間のルールを見通し良く記述することが重要
711デフォルトの名無しさん:2015/01/10(土) 23:51:28.68 ID:+xbnxNj/
>>709
>Haskellの入門書チラ見してこれHaskell理解してないと関数型使えてるとは言えないと悟りScala一本で関数プログラミングを覚えるのはあきらめた

scalaz「せやな」
>>710
コレクションの操作とか業務でも普通に使うんじゃね
filter map あたりは便利だし
712デフォルトの名無しさん:2015/01/11(日) 00:49:45.65 ID:bIz/N1xB
>>711
filtermap使った程度で関数やってますなんて言ったら嘲笑もんじゃね
あとScalazとHaskellじゃ情報量的な学習難易度がダンチとおもわれ
713デフォルトの名無しさん:2015/01/11(日) 01:24:40.42 ID:yONU8dYO
>filtermap使った程度で関数やってますなんて言ったら嘲笑もんじゃね
いや >>710が高階関数よりって言ってたから
高階関数ってコレクション操作とかで使うよなって

scalazは確かにhaskellやってからじゃないときついかも
型クラスとか意味不明だろうし
714デフォルトの名無しさん:2015/01/11(日) 02:13:53.45 ID:jQsmpaL2
結局は、mapだろ?
Obj_Aで、Func_Bを実行する

ここでA,Bは無関係でもよく、継承関係にならず、
インターフェースみたいなもの

例えば、Bがディレクトリツリー全体を走査する機能で、
Aがコピーする機能とか、A'がファイル情報を見る機能とか

Bがリモコンで操作する機能なら、
Aはテレビ・ゲーム・ラジコンなどに変わる
715デフォルトの名無しさん:2015/01/11(日) 02:58:31.24 ID:VrB2aC8y
そもそも関数型の手引きがだいたいHaskellで書かれてるので
それ読まない縛りで書こうとしても関数型言語でOOかよくて宣言型で書くレベルから
先に進めないかと
716デフォルトの名無しさん:2015/01/11(日) 04:26:17.53 ID:y/Gfhyr7
99.9%の人にはJAVA8で充分
717デフォルトの名無しさん:2015/01/11(日) 05:17:42.55 ID:4kOuNpF9
関数型の一歩目って map より fmap じゃない。どっちにしろ scala だとよく分からないで終わる気が。
718デフォルトの名無しさん:2015/01/11(日) 16:08:37.52 ID:Z07Ss1Ij
>>716
せやな
scalaなんて名前出した途端に99.9%の人に拒否られるやろw
719デフォルトの名無しさん:2015/01/11(日) 19:14:38.32 ID:Bz+OwwHJ
>>716

Java9とかJava10でどんどん関数型の機能が取り入れられるだろうから
ますますどうなることやら
720デフォルトの名無しさん:2015/01/11(日) 19:55:49.75 ID:CzPOjlNR
>>719
パターンマッチでダウンキャストする日も近いかもね
721デフォルトの名無しさん:2015/01/11(日) 20:00:22.54 ID:m1MZJ4zp
マルチパラダイム言語の優位とはなんぞや
オブジェクト指向との親和性だけか?
722デフォルトの名無しさん:2015/01/11(日) 20:46:55.19 ID:yONU8dYO
scalaで言えばオブジェクト指向の言葉で書かれているから
オブジェクト指向の人でも使えるし書けるし習得もしやすい事とか
haskellみたいな純粋な関数型だと手続きっぽく書いたりするのできなくはないけど
結構大変だし
723デフォルトの名無しさん:2015/01/12(月) 11:58:57.00 ID:LpPMJZpp
ScalaはどっちかというとC#のようにOOを関数型で補完するという感じだったのに
関数型ジャンキーのオモチャにされてカオスになっちゃった
724デフォルトの名無しさん:2015/01/12(月) 15:29:04.60 ID:SxPXluwc
Scalaはオブジェクト指向に無理矢理擬似的な関数型を取り入れたことが原因でカオス言語になったよなー
725デフォルトの名無しさん:2015/01/12(月) 15:49:36.23 ID:twZsvoP0
まるでカオスじゃなかった時代があったかのような

大体Javaが十分にカオスな時点で
カオス上等くらいの心構えじゃないと
726デフォルトの名無しさん:2015/01/12(月) 16:13:31.58 ID:seCuarF3
「デフォルトでreplが入ったjava」で良かったのに…
727デフォルトの名無しさん:2015/01/13(火) 21:28:10.74 ID:F/RYjFqI
なんでreplそんなに好きなの?
728デフォルトの名無しさん:2015/01/13(火) 23:05:56.67 ID:qLrwRMDC
最近、「コンパイルして人間が読めないファイルを作る」が普及を妨げていることが分かった
729デフォルトの名無しさん:2015/01/14(水) 00:55:32.43 ID:un+T0AHM
個人開発レベルですが拡張メソッドと@specializedがScala使う理由ですね。
他に後押ししてるのは、<:<とか@BeanPropertyとか。
しかし@specializedは値クラスを扱うというやり方でJavaにも輸入(輸入元はC#っぽいが)
730デフォルトの名無しさん:2015/01/14(水) 07:29:34.44 ID:8Q2tOiyG
lambdaに10年かかったJavaに値クラスなんか未来永劫入らないよw
たかが既存機能(ネストクラス)のシンタックスシュガーですらあの有様なのに、
VMの大大大改造の必要な根本的な改修なんか今更できるわけがない
クソGenericsと同じようにerasureで実装するんなら結局配列に入れたりgenericsで扱う際に
ボックス化が必要になるからパフォーマンス上のメリットはほぼ無いし
731デフォルトの名無しさん:2015/01/15(木) 16:46:22.32 ID:ojV8YXVD
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
732デフォルトの名無しさん:2015/01/16(金) 20:05:27.44 ID:LsYSUQKD
今時cygwinとかないわ
どうせプロダクションで使えないのに苦労するだけ時間の無駄だろ
Winでなきゃいけないなら普通に使うか仮想マシンにLinux入れてSSH
733デフォルトの名無しさん:2015/01/16(金) 20:37:58.60 ID:PoJiHUt9
そういうのは結構です
知ってる人のみ答えてください
734デフォルトの名無しさん:2015/01/17(土) 16:14:15.91 ID:rEt2+N9g
>>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)がおかしくならないで戻ってこれたけど?
735デフォルトの名無しさん:2015/01/25(日) 08:33:41.26 ID:4n+jRXJn
Scalaのフレームワークってどんなのがあるん?
736デフォルトの名無しさん:2015/01/25(日) 10:30:41.54 ID:XPwi6yeC
何をするフレームワークを聞いてるのか
737デフォルトの名無しさん:2015/01/25(日) 19:01:00.78 ID:/ILbZFHt
>>735
メモ帳+コマンドプロンプト開発フレームワーク
738デフォルトの名無しさん:2015/01/25(日) 21:19:35.79 ID:kLlDeCRS
>>737
それ標準の統合開発環境や
739デフォルトの名無しさん:2015/01/26(月) 00:23:04.31 ID:WHjADl5S
>>735
定番はplayだろ
740デフォルトの名無しさん:2015/01/26(月) 23:13:17.14 ID:5QqZI2K9
ScalaとJavaは両方できた方がいいですかね
741デフォルトの名無しさん:2015/01/26(月) 23:19:26.76 ID:S26t8+EC
というより、両方できないとあまり意味がないかと
Javaの仕様に合わせるためにいろいろ諦めてる歪な言語なので、
Javaとの相互運用性を捨てたら割に合わんよ
742デフォルトの名無しさん:2015/01/26(月) 23:28:31.60 ID:Ly3CAIWB
「できる」の意味が「読める」なら、JVM言語は一通りできなきゃダメですね
最新のアルゴリズムやフレームワークは、どの言語で紹介されても理解してツギハギしなきゃダメですから
743デフォルトの名無しさん:2015/01/26(月) 23:29:16.68 ID:2Y7GB+OC
Scalaを使うときの検索ワードはほとんど「Java なんとか」だわ
Javaが読めないと無理と断言できるしメリットも無いと思う
744デフォルトの名無しさん:2015/01/26(月) 23:39:02.19 ID:/uyO0/FQ
エラーメッセージがJVMからのそれだし
745デフォルトの名無しさん:2015/01/26(月) 23:40:22.32 ID:Ly3CAIWB
全部で28MBだから、アクターモデルが標準から消えなければ、scala 自体をjavaの標準API程度には理解しておけと言いたいが、Akkaになっちゃったからな…
746デフォルトの名無しさん:2015/01/27(火) 07:26:46.34 ID:tYNOUScu
今現在Java未経験だとしても、他のメジャーな言語は複数経験してて
Javaもやろうと思えばサンプル見ながらなんとなく類推で使えるくらいでないと
この手の言語に手を出すのは早い
747デフォルトの名無しさん:2015/01/27(火) 07:53:52.06 ID:ox5yAQX/
scalaの良書は何がありますか?
javaはそこそこ理解している前提
748デフォルトの名無しさん:2015/01/27(火) 21:54:36.75 ID:zxc1Q4JE
がっつりやるならコップ本(Scalaスケーラブルプログラミング)がバイブル的扱い
http://www.amazon.co.jp/gp/product/4844330845/
749デフォルトの名無しさん:2015/01/27(火) 23:48:48.93 ID:JHhKc92n
洋書除くとコップ本と逆引きレシピだなあ
他はバージョン的にも辛いものがある
とはいえコップ本はちょっとハードル高いし、
逆引きレシピは他の本で一通り基礎をやった後に手元においておくタイプの本だと思うので
この辺は初学者のハードルになってるんじゃないかと思う
750デフォルトの名無しさん:2015/01/27(火) 23:57:45.62 ID:mf0t6skC
Akkaについて詳しく書かれてる本なんてないですよね?
751デフォルトの名無しさん:2015/01/28(水) 06:56:24.95 ID:D4DppUD9
コップ本は高い厚いハードル高い
752デフォルトの名無しさん:2015/01/28(水) 14:26:40.66 ID:NJCG/69A
洋書でのオススメはありますか?
753デフォルトの名無しさん:2015/01/28(水) 22:32:29.91 ID:i2j0jpQg
洋書読めるなら、ドキュメント読めとしか…
754デフォルトの名無しさん:2015/01/28(水) 23:41:04.82 ID:phfxK0em
Scalaで関数型デザインパターンの本は何冊か洋書で出てて、他の関数型言語やってないなら割とオススメ
755デフォルトの名無しさん:2015/01/29(木) 23:04:03.89 ID:x+DZkfv5
オブジェクト指向言語でデザインパターンを駆使して実現していた目的の半分くらいは、
関数型では言語自体の仕組みで代替できる
756デフォルトの名無しさん:2015/01/29(木) 23:13:59.55 ID:Vl4KJLr6
GoFデザインパターンのことを言ってるなら、
その多くは単なる関数オブジェクトを別の名前で呼んでるだけだから、
ガチ関数型じゃなくても第1級関数さえ使える言語なら代替できるよ
757デフォルトの名無しさん:2015/01/29(木) 23:25:08.62 ID:aSkGGm54
> その多くは単なる関数オブジェクトを別の名前で呼んでるだけだから、

多くは? たとえば?
758デフォルトの名無しさん:2015/01/30(金) 00:12:24.21 ID:J3I/JY19
その代替できるってことも慣れてないと知らないことあるから本あるよってことね
シンプルなストラテジーやファクトリは単に高階関数で済むとか外部イテレータあんまり要らないとか
759デフォルトの名無しさん:2015/01/30(金) 00:17:44.05 ID:3t6BwGFS
オブジェクト指向は名詞的だけど、関数型言語は動詞的だから、なんとかかんとか
760デフォルトの名無しさん:2015/01/30(金) 19:14:17.47 ID:oSV8k0Me
Scalaの和書ってAmazonで見ると2010年か11年ごろに出版されたものばかりですが、今から入門する場合でもそういう本使って問題なしですか?
http://en.wikipedia.org/wiki/Scala_(programming_language)#Versions
見てると、2013年のver2.10でガッツリ変更入ってる感じに見えるのですが
761デフォルトの名無しさん:2015/01/30(金) 19:28:53.42 ID:3t6BwGFS
>>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並の人気言語になりますかね
765デフォルトの名無しさん:2015/02/02(月) 21:11:12.13 ID:HgzOzGeM
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.
767デフォルトの名無しさん:2015/02/02(月) 21:23:41.88 ID:KT6cnHtO
>>764
残念ながらそれはないだろうね
JavaやC#が「カオスにならない程度に」関数型を取り入れている一方
ガチ関数型も注目を集めつつある今、
Scalaは大衆言語にも関数型にもなりきれない極めて中途半端な言語になってしまった
768デフォルトの名無しさん:2015/02/02(月) 21:41:28.52 ID:PMz0XDHH
JavaがScala以上に関数型になることもないだろうから
差が縮まった時点でScalaに乗り換えるシナリオもなくはない
769デフォルトの名無しさん:2015/02/02(月) 22:01:09.69 ID:9cAbPLA5
Scalaはガチ関数型として使うにはあまりにも面倒臭すぎる
まずは例外乱発のファッキンJavaAPIをなんとかしてくれ
770デフォルトの名無しさん:2015/02/02(月) 23:23:30.18 ID:QSwprIrE
>>769
この時のための検査例外だったのだッ!全て自動で直和型にッッッ!。
なおscalaの直和型()は
771デフォルトの名無しさん:2015/02/03(火) 05:30:48.03 ID:DuwxATIz
scalaは、関数型言語としての書き方が
分からなくても、最悪Javaっぽく書くことができるというのがメリットだと思う
772デフォルトの名無しさん:2015/02/03(火) 07:26:59.62 ID:rhxr8Hwo
Eitherみたいに全てを型で保証しなければならない系のガチなやつは
いったん使うと決めたら使い通さないとあまり意味がない
無理のない範囲で既存資産と折り合いをつけながら使うならJavaやC#程度が限界だね
773デフォルトの名無しさん:2015/02/03(火) 13:23:28.73 ID:cFvQZFKE
Eitherってなんて発音するの?
いーざー?えいざー?
774デフォルトの名無しさん:2015/02/03(火) 14:53:46.12 ID:PEE4K+0t
either は中学英語の範囲だべ
775デフォルトの名無しさん:2015/02/03(火) 19:53:51.39 ID:wiwHxQ34
イーざー
オア
アイざー

ざは、舌の先をかみます(ダにもきこえる)

How to Pronounce Either - YouTube
https://www.youtube.com/watch?v=5zC-XJEhxms
776デフォルトの名無しさん:2015/02/03(火) 20:30:35.04 ID:uHK9mhCY
>>768
scala の優位性は「関数型」ではなく「デフォルトで入ってるREPL」だと何度言ったら…
777デフォルトの名無しさん:2015/02/03(火) 20:42:30.71 ID:v7tAs31H
関数型要素いらないならGroovyでいいじゃん
778デフォルトの名無しさん:2015/02/03(火) 20:46:27.60 ID:SQgfjbpU
初心者のお遊び以外でREPLが役に立つのはデバッグ実行中だけだが、
その際は当然デフォルトのREPLなんか使えないし
デバッグ中のREPLなんかIDEで20年前から実現されていること
779デフォルトの名無しさん:2015/02/03(火) 20:50:31.17 ID:uHK9mhCY
普及を競うなら、庶民がIDEを入れるまでに高いハードルがあることを知るべきかと
780デフォルトの名無しさん:2015/02/03(火) 20:54:04.23 ID:rhxr8Hwo
一般庶民なら黒い画面にコマンドをパチパチ打つよりは
インストーラでIDE入れて実行ボタン押す方がずっとハードルが低いと感じる人が多いかと
781デフォルトの名無しさん:2015/02/03(火) 20:59:11.11 ID:uHK9mhCY
IDEの問題は、scala本がIDEを紹介してない点
一方、javaの入門書ではなぜかeclipse前提なのが多いという不思議
782デフォルトの名無しさん:2015/02/03(火) 21:05:02.90 ID:rhxr8Hwo
そりゃ言語とIDEを分けて考えられない程度の人たちを相手にする段階じゃないからだろ
自分用にオプティマイズされたWebの世界しか見てないと錯覚するかもしれないが、
「ごく一部のマニアだけが使っている言語」の域を出ないよ
783デフォルトの名無しさん:2015/02/03(火) 21:12:01.84 ID:uHK9mhCY
>>782
一般というより、学部の卒業研究で導入できるかどうかが分かれ目かと
「コンパイル」を教えないで済む方法がある分だけ、javaよりはscalaかと
784デフォルトの名無しさん:2015/02/03(火) 22:19:20.83 ID:hYktHZLE
CI環境作りだすとIDEの設定が面倒すぎてもうVimでいいやになる
785デフォルトの名無しさん:2015/02/04(水) 00:06:48.95 ID:FTYyQxvZ
商用UNIXでviしか使えなかった時はパニックになった
786デフォルトの名無しさん:2015/02/04(水) 08:54:58.61 ID:onPjtyvU
化学系出身だけど,実社会でc言語絶世でC++に移行中のときにpascal習った。
今何教えてるんだろう。と思ったら、情報系でjava教えてるのはわかるとして、
化学系はC言語教えてる。データ解析のこと考えたら関数型言語教えて、
実社会のこと考えるならjava系がいいと思うのだが、
何故に大学の授業って「一般教養化」していくんだろうか。
787デフォルトの名無しさん:2015/02/04(水) 09:01:55.06 ID:onPjtyvU
>>784
素の状態だと普通に使えるのにIDEの設定間違えるとうまく動かないのな。
IDEの勉強なんぞしたくないし、するのがおかしい。
788デフォルトの名無しさん:2015/02/04(水) 09:41:37.84 ID:4ZehlrdF
そもそもIDEなんて開発者を囲い込むかマイナー言語の使用者を増やすかのどちらかのためのものだし
前者は一般的機能すら独自化して他言語に応用が利かず閉じており後者は完成度が低くすぐ行き詰る
IDEとVimはWindowsとMac(Unix)の違いと同じくコード片を実行する以上のことをしようと思ったらIDEは足かせになるだけ
ただリファクタリングのときだけはリネームにIDEを使う
789デフォルトの名無しさん:2015/02/04(水) 11:27:14.17 ID:UfeJxSul
君たちは何を言っているのかね
IDE使おうぜ
790デフォルトの名無しさん:2015/02/04(水) 14:14:05.79 ID:4ixiaMOO
>>788
こういう連中が普及を妨げてるよね
テキストエディタの方が使い勝手がいい言語は確かに多い。
しかし、それらとScalaが決定的に異なる点がある。Java資産を使うということ。
Scalaの最大のアピールポイントはそこにあり、純粋に言語としては魅力に欠ける。
従ってJavaのIDEを前提にした既存の綴りの長いライブラリを使わざるを得ず、
補完のないエディタによるコーディングには相当な苦痛を伴う。
791デフォルトの名無しさん:2015/02/04(水) 16:32:41.25 ID:onPjtyvU
>>790
要するに既存のライブラリが使いたい。ていうのと
ライブラリの中のモジュール名が長くて覚えにくくてタイプミス
犯しやすいから、IDEを使わざるを得ない。と
792デフォルトの名無しさん:2015/02/04(水) 16:42:08.84 ID:2SCz0dM4
なんか最近ズレてる奴が多いな
お前らちゃんとscala使ったことあんの?
793デフォルトの名無しさん:2015/02/04(水) 17:27:50.16 ID:rrYn295i
リネームさえバシッとできればテキストエディタでいい。他の機能大して使いこなしてない。
794デフォルトの名無しさん:2015/02/04(水) 19:16:46.74 ID:5h793BIM
JDTとは構造ちがうからプラグイン機構のあるエディタでなら普通にやれるはず
http://scala-refactoring.org/
795デフォルトの名無しさん:2015/02/04(水) 20:32:57.09 ID:tjSlws+J
Scalaが人気出るのは言語仕様が固まって後方互換性を維持できるようになったとき
今はまだa better Javaでしかない
796デフォルトの名無しさん:2015/02/04(水) 21:02:31.17 ID:Ds7L7DGt
まだってBetter Javaを名乗るなら互換性は必須でしょ
あえて言うならFaster Ruby (without Rails)だな
797デフォルトの名無しさん:2015/02/04(水) 21:09:36.38 ID:nU6uTuJs
Java の資産が利点であり、最大の欠点な気がするが
798デフォルトの名無しさん:2015/02/04(水) 21:12:22.22 ID:Ds7L7DGt
最大の欠点はカオスな標準ライブラリと
それを生み出し続ける関数型マニアコミュニティだろ
799デフォルトの名無しさん:2015/02/04(水) 21:50:49.97 ID:lFSTLdPe
最大の欠点は、Windowsネイティブコンパイラの不在
800デフォルトの名無しさん:2015/02/04(水) 22:07:17.34 ID:tgcu4mjH
型安全
801デフォルトの名無しさん:2015/02/04(水) 22:44:45.06 ID:onPjtyvU
>>799
それ作りづらいっていう意味か、windowsなんぞ後回しって言う意味か
jitがあるからそんなの必要ないって意味か、作っちゃいけない制限があるのか
どれ
802デフォルトの名無しさん:2015/02/04(水) 23:02:04.77 ID:lFSTLdPe
>>801
いつまでたってもスタンドアロンの売り物を作れないという意味
803デフォルトの名無しさん:2015/02/04(水) 23:05:21.10 ID:FJftdSk8
クラスファイルとしてはJavaとほぼ同等だから原理的にはAOTコンパイラ作れるはずだけどモバイルや組み込み環境以外で必要か?
804デフォルトの名無しさん:2015/02/04(水) 23:08:43.60 ID:rrYn295i
scalaに期待することではない気がする
805デフォルトの名無しさん:2015/02/04(水) 23:10:08.55 ID:Ds7L7DGt
もともとJavaがほとんど使われてない分野でわざわざScala使う必要はないわな
WinならC#でいい
806デフォルトの名無しさん:2015/02/04(水) 23:25:26.47 ID:lFSTLdPe
そもそもjavaには互換性がなかったという強烈なオチがある
嘘だと思ったら、10年前に作ったclassファイルを実行できるかいくつか確認してみるとよい
807デフォルトの名無しさん:2015/02/04(水) 23:27:34.76 ID:FTYyQxvZ
しかしJavaFXなら標準でプライベードJRE同梱のインストーラ作れるまでにはなったからな
ネイティブコード云々はもう拘らなくてもいいかな
808デフォルトの名無しさん:2015/02/04(水) 23:38:55.74 ID:FJftdSk8
ちょっと前のセキュリティ強化で古いAppletが一切動かないとかじゃなくて、Java5のころの普通のclass動かないのか?
809デフォルトの名無しさん:2015/02/05(木) 00:40:57.50 ID:gLl3//bv
play2+scalaで考えれば
IntelliJで決まりだと思うんだけどなー
typescriptやらマイナー言語にも対応してるし
>>795
scalaってまだ人気でてない扱いなのか?
そらjavaやらc#やら超メジャー言語に比べればそうかもしれんけど
http://redmonk.com/sogrady/2015/01/14/language-rankings-1-15/
とか見ると14位くらいあるし この上みるとperl rubyが落ちるとしてもちょっとあがるのが難しい感じ
810デフォルトの名無しさん:2015/02/05(木) 06:41:50.33 ID:jxBo3eTF
>>806
Enterprise分野で使用されるようになっているので
流石にJava1.5以降は後方互換性に気を使ってる
ソースから再コンパイルすればほとんどは動く
(動かないケースはゼロではない)
バイナリそのまま持って来たらちと厳しいけど
最近のJavaはサーバサイドで使われているだろうからそれでも問題ないのでは
Androidは知らん
811デフォルトの名無しさん:2015/02/05(木) 08:58:10.85 ID:IVBxxALS
バイナリ互換じゃなかった? ソースをコンパイルできない
812デフォルトの名無しさん:2015/02/05(木) 09:10:05.05 ID:eURNC5PH
-sourceや-targetでの古いバージョンの指定は順次切られてるね
古いソースでバージョン指定しないと警告大量に出るのはわかるけどコンパイル出来なくなる変更なんかあったっけ
813デフォルトの名無しさん:2015/02/05(木) 11:46:00.11 ID:amkou/MB
>>810-812
どっちみち Enterprise用途は業者レベルのスキルの人が使うから、互換性がなくても問題ないかと
個人のPCで人知れず眠ってるclassファイルが動かないのは痛い
10年前の俺のソースなんか読むのも嫌だよ

ただ、Enterprise用途でも、ライブラリ関係の互換性がなかったり仕様が変わってるからコンパイルが失敗したり、警告の嵐に遭遇する
文字コード関係はバージョンやOSによっても、入力コードを統一していてもエラーなく動作が異なるから注意が必要かと
814デフォルトの名無しさん:2015/02/05(木) 12:27:49.58 ID:5jIFMaXm
10年前のapache commons普通に使えたけど
815デフォルトの名無しさん:2015/02/05(木) 12:32:27.15 ID:4O3ODdxu
ドカタ現場じゃソースのないサードのライブラリも使うこともソースが失われてることも
再コンパイルしてもなぜか動かないことも日常茶飯事よ
816デフォルトの名無しさん:2015/02/05(木) 12:36:13.46 ID:amkou/MB
>>814
tomcat とかはそろそろヤバい
817デフォルトの名無しさん:2015/02/07(土) 01:25:58.53 ID:0RBvpWmK
ひさびさにスレが伸びていると思ったら、いつもの、不満大会かよ。

ところで、今月の日経ソフトウェア見たけど、JavaFxが手軽に使えるのは面白そうだと思う。
818デフォルトの名無しさん:2015/02/07(土) 01:46:12.63 ID:jVkbAda3
まぁそのJavaFx自体が
手軽に使えるとは言いにくい気もするのだが
819デフォルトの名無しさん:2015/02/07(土) 02:20:39.39 ID:Jfs2dga4
GUIエディタの出来ってどう?
820デフォルトの名無しさん:2015/02/07(土) 08:28:57.46 ID:UxV2OHq5
・Swingに比べれば安定している(メタな仕組みじゃなくてXMLを編集してるだけだからかな)
・業務アプリなどのベーシックな画面を作る程度の最低限の機能は備えている
・ビルダ内でXMLを直接表示/編集できないのが極めて不便
・スタイルの設定は色なども全て手書き
・ビルダ自体のUIが貧弱、アニメーションが鬱陶しい
・コードとの連携が無いに等しく、コントローラは完全に手書き
VSと比べるならWinFormsとWPFのデザイナを足して16くらいで割った感じだね
821デフォルトの名無しさん:2015/02/07(土) 09:33:32.85 ID:us6S6BiX
IntelliJはUIはいいんだけどもっさりしてて…
Eclipseに戻ってしまう
822デフォルトの名無しさん:2015/02/07(土) 14:56:51.24 ID:xuToCkQ7
似たタイプのGUIビルダの中だとFXMLはVSのXAMLどころか
QtのQMLと比べても全くお話にならないレベル
AndroidのレイアウトエディタからIDE統合とXMLエディタを抜いた感じ
823デフォルトの名無しさん:2015/02/07(土) 15:06:38.13 ID:jVkbAda3
もっさり具合はEclipseも負けてないと思うが

明らかに高負荷な処理をやっているときに
もっさりなのは我慢するとして
Eclipseは後ろの処理がよく見えず
予想外のところで引っかかるからストレスがたまる
感覚的な話だけど
824デフォルトの名無しさん:2015/02/08(日) 00:46:32.38 ID:Sm8ZKvEA
ide単体としてはvisual studioさんが凄すぎてな
825デフォルトの名無しさん:2015/02/08(日) 01:04:46.73 ID:8BxICIem
VSの本当の「統合」を知ってしまうとIntelliJやEclipseでのScalaみたいに
出来合いのシェルにとりあえず言語追加したレベルのものを統合開発環境
と呼ぶのには抵抗を感じるようになるね
826デフォルトの名無しさん:2015/02/08(日) 07:52:39.29 ID:z9uApDmq
そこまで差があるとは思えんのだが

もっさりだが
827デフォルトの名無しさん:2015/02/08(日) 12:06:36.99 ID:lYLvg9qm
自分の知らない場所で勝手にファイルを編集される部分があるのが嫌だ
いちいちマウスをクリックするのが嫌だ

そんな私のIDEは、メモ帳+コマンドプロンプト です
828デフォルトの名無しさん:2015/02/08(日) 12:13:49.36 ID:mWfbdRxi
Scalaはそれでいいかも知れないけど
JavaはIDEなしなんて考えられないんだが
829デフォルトの名無しさん:2015/02/08(日) 18:23:50.74 ID:8ToV8Cnf
>>825
同意
「機能」としては言葉の上では似たようなものに思えるかもしれないが、入力補完のスピードとか含めた完成度がぜんぜん違う
VSは確かに凄いよ
830デフォルトの名無しさん:2015/02/08(日) 19:34:45.99 ID:dveMpYIi
scalaでtuiアプリを作りたいんですが
何かいいモジュールはありますか?自分で探しましたが見つけられませんでした…
831デフォルトの名無しさん:2015/02/08(日) 19:44:21.15 ID:dveMpYIi
すいません、言葉足らずでした
tuiを簡単に実装できるモジュールです
832デフォルトの名無しさん:2015/02/09(月) 23:27:21.77 ID:ybRvGCvO
Javaの3rdPartyでよければググってこんなのがあったけど
Scalaは調べた事ないから知らない

lanterna
https://code.google.com/p/lanterna/
Java Curses Library
http://sourceforge.net/projects/javacurses/
833デフォルトの名無しさん:2015/02/11(水) 21:43:16.16 ID:zQ7E6eZT
日本国内でScalaで書かれたWebサービス提供してるとこある?
834デフォルトの名無しさん:2015/02/12(木) 00:57:30.42 ID:Uh2ZxlVl
http://jp.scala-users.org/scala-cases-in-japan.html
あんまり載ってないけど

あといわゆるWebサービスじゃないが
サーブレットという意味では
GitBucketは参考になるしお世話になってる
835デフォルトの名無しさん:2015/02/12(木) 06:31:18.03 ID:pHxoVY9X
やはりjavaのを使わないといけないですよね、ありがとうございました
836デフォルトの名無しさん:2015/02/12(木) 06:32:04.79 ID:dcvh813Z
AndroidのアプリもScalaで書けそう?
837デフォルトの名無しさん:2015/02/12(木) 07:50:33.41 ID:yDIkiztO
Scala使うのが目的でなくアプリを作るのが目的なら時間の無駄だから絶対にやめておけ
バックエンドだけScalaで書け
838デフォルトの名無しさん:2015/02/12(木) 13:06:48.61 ID:nQ7pUD5q
うち、Scalaでwebサービス構築してるよ。
Scalaである必要があるかと言われたら、まぁないと思うけど。
839デフォルトの名無しさん:2015/02/12(木) 14:54:34.50 ID:2uNgZJlO
Scalaが次世代言語の最有力と聞いてコップ本を根性で読破したけどかなり難しいな
今までやった言語の中で一番難しかったわ
840デフォルトの名無しさん:2015/02/12(木) 15:15:34.33 ID:5oB/LYoT
prologやhaskellのパラダイムを個別に習得しないと意味ないだろ
841デフォルトの名無しさん:2015/02/12(木) 19:56:49.29 ID:Uh2ZxlVl
prologもhaskellも癖というか思想が強すぎて
マスターする頃にはScalaのこと忘れてそう

あと、もはや次世代じゃないし
最有力ってのも買いかぶりすぎだと思う
そうなったら面白いとは思うけど残念ながら
842デフォルトの名無しさん:2015/02/12(木) 20:39:52.34 ID:5oB/LYoT
Scalaをスクリプト言語のように使うなんてストラディヴァリウスのヴァイオリンで釘を打つようなもの
843デフォルトの名無しさん:2015/02/12(木) 21:00:33.56 ID:Uh2ZxlVl
そんなこと言うとREPL君がまた暴れますよ

釘が打てりゃ上出来じゃない?
みんな自分の頭を打ってるよ
844デフォルトの名無しさん:2015/02/12(木) 21:00:35.61 ID:DvTDGtdT
>>839
後半の半分はGUIのところ以外は読まなくてもOKだよ
読んだところで、どうせ仕様が変わるだろうし
845デフォルトの名無しさん:2015/02/12(木) 22:06:50.52 ID:dcvh813Z
コップ本はいい本だと思うけど最初に読む本じゃないな
初学者向けの関数型プログラミング本を先に読んだ方がいい

>>841
Scalaが登場してから10年ちょっと経ってその間にJavaでのパラダイムも一巡して
JVM上の言語も増えてきたってことで適度に枯れて機が熟したってことじゃないの
ErlangやHaskellだって前世紀の言語だしな
846デフォルトの名無しさん:2015/02/13(金) 06:37:18.79 ID:mocLL0Pr
JVM入れてScala入れてEclipse入れてPlay2入れてEclipseからPlay2使えるようにするまでがめんどい
もっと簡単にならんの
847デフォルトの名無しさん:2015/02/13(金) 07:41:02.91 ID:od1SHQ4F
たいぷせーふあくちべーたーとかいうの使えば簡単にできるんじゃねえの
使ったことないけど
848デフォルトの名無しさん:2015/02/14(土) 13:35:17.93 ID:EkzT7W5q
トンカチを持つと、人間がみんな釘に見える(危険)
849デフォルトの名無しさん:2015/02/16(月) 22:43:20.04 ID:GqArjrVy
共変と反変ってどういう状況で使えばいいの?
イマイチ使い道がわからん
850デフォルトの名無しさん:2015/02/16(月) 22:48:34.96 ID:EASUHFdM
無理して使う必要はない
というか、あなたが分からないってことは、普通の人も分からないはずなので、よほど教育をほどこした内輪プロジェクト以外では使うべきではない
851デフォルトの名無しさん:2015/02/16(月) 23:08:21.76 ID:2/NgXL9j
意味をなさない名前のせいでわけわからんくなってるだけで
そんなに難しいかなあ

実際にやることといえば
リストを読み取り用に受け取るメソッド宣言するとき、
その引数のジェネリクスを共変にするってだけだろ?

それ以外の使い方なんて見たことない
852デフォルトの名無しさん:2015/02/16(月) 23:21:01.23 ID:5aq/WjdM
反変と共変の指定の仕方はC#のin/outが抜群に分かりやすい
基本的に反変は入力に、共変は出力に使う
853デフォルトの名無しさん:2015/02/17(火) 20:13:56.80 ID:tgjlJ38r
その昔Cを知っている人がC++をa better Cとして使ったように
Scalaもまずはa better Javaとして使っておけばいいんじゃない?
マルチパラダイムな汎用性の高い言語なんだしイディオムを習得するのはその先でもいい
いきなりコップ本とか読んじゃって躓くのがこのパターン
854デフォルトの名無しさん:2015/02/17(火) 20:38:00.48 ID:yKx9IB7b
反変・共変ってライブラリ作る人以外はあまり気にしなくていいと思う。

型変数使ってないからイメージだけだけど、例えば以下のようなtraitをイメージする。
trait Sample { def m1(p: String): CharSequence}

これを継承したクラスでm1を実装するわけだけど、
def m1(p: String): String
みたいに必ずStringを返す実装をしたとしても、
元のtraitは満たせるはずだよね?ってのが共変。

def m1(p: CharSequence): CharSequence
みたいに、引数はCharSequencenならなんでもいいよってしても、
同じく元のtraitに対してStringを渡したら絶対処理できるよね?ってのが反変。

厳密に話すともっとややこしくなるだろうけど、イメージとしてはこれで十分だと思う。
855デフォルトの名無しさん:2015/02/18(水) 07:01:34.05 ID:26ZUZzKY
Javaのはアレ反変兇変って言わないんだな…
インターフェースの定義側で反変兇変できるの羨ましい
856デフォルトの名無しさん:2015/02/18(水) 07:31:12.55 ID:FJC9eT5Z
ドカタが怖がるから共変反変言わないだけで、ワイルドカードがあれば十分でしょ
定義側で方向指定すると制限がインターフェース全体に及んでしまうしな
まあ、常に利用する側で指定させるやり方だとジェネリックなクラスを自分で定義せずに使うだけのドカタも
ワイルドカードを駆使しなきゃいけないわけで、明らかに大失敗だけどね
857デフォルトの名無しさん:2015/02/18(水) 23:28:53.73 ID:8ge0yGxX
>>853

C→C++ は、ほとんど上位互換だけど、
Java→Scalaは、文法がだいぶ違うからなあ。。
Scalaは、Javaのバックグランドが利用できる強みは大きいけど。
肝心のJavaが下火だと、、、。

Perl→Ruby は、移行することで世界が広がったけど、
今、Scalaに移行したところで、あんまりメリットがないんだよなあ。

だけど、日経ソフトウェア見て、ScalaFX(JavaFX)は、少し使いたいと思った。
858デフォルトの名無しさん:2015/02/18(水) 23:32:10.88 ID:8ge0yGxX
Scala言語が生きそうな道って、関数型言語の並列性を発揮できるような分野?
究極的にはハードウェア記述とか?

ScalaによるFPGA
http://www.slideshare.net/miyox/synthesijerscala-prosym-2015
859デフォルトの名無しさん:2015/02/18(水) 23:38:29.26 ID:zm4f9Bf3
Haskellみたいな副作用強制的に分離させられる言語ならまだ納得出来ないこともないが
関数型言語で並列性って基本セールストークじゃない?

そのFPGAはScalaでDSL書きやすいって話で並列あんま関係なさそう
860デフォルトの名無しさん:2015/02/18(水) 23:55:32.02 ID:/cB70mAI
関数型の恩恵で並列化できたとしてもパフォーマンスの向上はあまり期待できないとどこでもいわれている
並列化前提のときに生産性と安定性を求めて選ばれるものだろう
861デフォルトの名無しさん:2015/02/19(木) 00:39:25.53 ID:1LBnym+M
フォーマルメソッド()
862デフォルトの名無しさん:2015/02/19(木) 02:53:13.07 ID:z6pi1paq
副作用を強制的に分離させられて基本的に正格評価な言語はないんですか
863デフォルトの名無しさん:2015/02/19(木) 05:33:06.57 ID:aN1WlKg3
そのような言語のメリットを教えて
864デフォルトの名無しさん:2015/02/19(木) 05:54:35.43 ID:DBmDNRKA
elmとかidrisとか
865デフォルトの名無しさん:2015/02/19(木) 07:24:23.90 ID:kP+TkhZJ
Scalaはどこでも普通に副作用書けるしそれを処理系が厳密に検知するのも不可能だから
特に並列性の面で有利なことはないよ
866デフォルトの名無しさん:2015/02/19(木) 19:53:14.29 ID:iyHfikAq
JVM上で動くことが大きいな
Javaはなんだかんだで広い範囲で使われてきたので、それを実行するJVMの安定性は
大きな魅力だね
867デフォルトの名無しさん:2015/02/19(木) 20:40:18.85 ID:cTaAdkiA
とりあえずvalしとけ
868デフォルトの名無しさん:2015/02/19(木) 20:49:49.18 ID:kP+TkhZJ
変数書き換えはともかく、静的検査を厳密に行うにはOO流の多態を完全に捨てなきゃいけない
だけどそこまで行ってしまうとScalaの存在意義が…
869デフォルトの名無しさん:2015/02/19(木) 22:41:25.19 ID:1LBnym+M
OO流の多態?
せいぜい程度の問題であって
完全に捨てるってのは分からん
870デフォルトの名無しさん:2015/02/19(木) 23:22:01.23 ID:gsoDS5fN
>>866
JVMというより、Webサーブレットでjavaの資産が使えるということかと
Webサーバーと特殊すぎるデバイスドライバ以外ではjavaの製品は見たことないし
871デフォルトの名無しさん:2015/02/21(土) 14:50:47.16 ID:hXBq8SET
>>870

職場のメインOSがWindowsオンリーで
開発のバックプレーンはLinux で、
一方で、Macを使う社員やお客さんもいるので、アプリを提供できればうれしい、
というような会社では、Javaはありがたい存在のはずなんだけどね〜。、
いかんせん組込み系の会社なので、Javaはものすごく嫌われている。www
Web系の会社だとJavaに抵抗感ないのだろうなあ。

> Webサーバーと特殊すぎるデバイスドライバ以外ではjavaの製品は見たことないし

Notesとか、その手のデータベース系のソフトは、インストするとJVMを個別のフォルダにインストールしてたような。。
872デフォルトの名無しさん:2015/02/21(土) 17:33:59.46 ID:+7rc5lcp
Javaは、とにかくユーザーインターフェイスがウンコ
873デフォルトの名無しさん:2015/02/21(土) 20:05:33.50 ID:NZKwFt1Y
swtそこまで悪くないやん
どうしてもいやならjambiとか
874デフォルトの名無しさん:2015/02/21(土) 22:37:29.92 ID:OrY6Qps/
SWTはJavaじゃないだろ
美しいJavaの世界を汚す、忌むべき不浄な存在
875デフォルトの名無しさん:2015/02/22(日) 04:28:23.51 ID:RMVSmAx/
亀レスだか、確かにC#のin/outの説明の方が単語がとっつきやすいかも。
http://www.atmarkit.co.jp/fdotnet/csharp4/csharp4_06/csharp4_06_01.html
876デフォルトの名無しさん:2015/02/26(木) 01:31:24.03 ID:Nr5g+HBJ
Scalaの技術書3冊ぐらい読んで勉強したけど
実務で使えるようになった気がしない
877デフォルトの名無しさん:2015/02/26(木) 06:36:37.59 ID:Zl1401DB
実務でScala使えるかどうかは勉強じゃなくコミュニケーション能力の問題
878デフォルトの名無しさん:2015/03/03(火) 14:46:19.40 ID:AJWFRdg7
Scalaではどのフレームワークが人気ある?
879デフォルトの名無しさん:2015/03/03(火) 16:09:14.39 ID:68X/j5zu
メモ帳+コマンドプロンプト開発フレームワーク が一強かと
880デフォルトの名無しさん:2015/03/03(火) 18:16:59.76 ID:5uN1b58U
なんのフレームワークについて聞いてるのかはっきりしろよな
Web?開発?PJ管理?
881デフォルトの名無しさん:2015/03/07(土) 17:38:06.77 ID:XVcFmamb
Web…play2が制したと言ってもいいんじゃないかな。liftは負けた
開発…IntelliJが無難かな。eclipseはJava臭いので避ける人も多い
    emacs(or vim, sublime) + ensime も実用レベルになってきてる感じ
882デフォルトの名無しさん:2015/03/07(土) 17:42:46.26 ID:nGmpbqSS
俺もLiftはもうやめたけど、JSON部分とBoxクラスは嫌いじゃなかった。
前者は、Json4sとして今後も使う予定。
883デフォルトの名無しさん:2015/03/08(日) 17:20:16.83 ID:uwMJxf/3
みなさまはsbtを使っていますか?
884デフォルトの名無しさん:2015/03/09(月) 10:43:08.81 ID:i1+W+GiO
>>883
むしろsbtを使わなくてもscalaってできるものなの?
sbtを使いこなせてる気は全くしないけど、常に使った状態でしかscala触ったことが無い。
885デフォルトの名無しさん:2015/03/09(月) 12:24:55.36 ID:pBNngRzj
IDEなら特にビルドツールがなくても動くし、
パッケージ管理が不要なら極端な話Makefileでも十分
Javaと組み合わせるならMavenの方が好まれる場合もあるだろうな
886デフォルトの名無しさん
IDEAしか使ったことないけど
sbtじゃないとコンパイルとか実行とかめっちゃ遅くない?