プログラミング言語 Scala 11冊目 [転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2015/08/28(金) 07:25:25.39ID:YozprJV9
The Scala Programming Language
ttp://www.scala-lang.org/

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

■前スレ
プログラミング言語 Scala 10冊目
http://peace.2ch.net/test/read.cgi/tech/1390629242/

■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の連載記事、各々で開かれた勉強会の資料などがあります。
2016/02/09(火) 22:32:28.42ID:6ph8GDr2
確かに単純なwebアプリを作るとかだとたしかにruby使えよって思うな
重いバッチ処理があるとか
非同期ですぐレスポンス返す必要があるとかだね>scala
playはformのバリデーションの型付けがとにかく面倒で
2016/02/11(木) 07:52:13.90ID:q9GsbCBT
簡単なものつくるにしてもrubyとかだと固まらない粘土で像つくってるみたいで不安が拭えない勢
2016/02/11(木) 08:51:06.73ID:bLlX/NkI
フロント寄りのところは固めたそばから変わるからほとんど意味無いけどね
奥の方の頻繁に変わらなくてスループットが重要なところに使うのが正しい
2016/02/11(木) 09:54:49.72ID:F4UnMKVG
>>206
うまい表現やなわかるわそれ
2016/02/11(木) 14:16:33.47ID:N4V9Gj9t
>>206
Rubyは粘土で作ってる感じ
作り上げてもすぐ変形しそうだけど、逆に言えば変更には柔軟

Scalaは型枠を作ってそこに材料を流し込む感じ
かっちり作れるけど変更するときはうまく型枠を変形する技術がいる
2016/02/11(木) 14:21:41.85ID:Jlw9Mhxv
ruby は言語自体は好きだけど周りのツールとかが面倒くさいんだよな
2016/02/11(木) 22:18:42.90ID:1A1rQ/NR
「変更のしやすさ」は色々あってフロント側の変更は型安全なところが面倒だけど
逆にビジネスロジックで少し変更がしっかりとコンパイルエラーになるからむしろ動的型付けより
変更が楽に感じる
2016/02/11(木) 22:48:52.29ID:LX62t3BW
同意
フロントでフォームを型付けしたりとかはガチの阿呆
2016/02/12(金) 01:01:56.97ID:Izyjri30
>>211
ビジネスロジックなんてテスト書くの必須なんだから動的静的はあまり関係ない気がする
どちらかというとスループットの方がScalaのメリットじゃないか
2016/02/12(金) 06:57:04.54ID:mqC6zGT8
そもそも静的型や関数型の堅牢性のメリットが得られるほどビジネスロジックが複雑な分野でScalaが使われてるかっていうとね
Web系ばっかりで、スループットくらいしか恩恵がないのが現状
業務系のドカタITは自動テストなんてまず無いし業務ロジッククソ複雑だし頻繁に更新しないし論理的な正しさが最重要だしで
まさに静的型の関数型言語向きなんたけど
215デフォルトの名無しさん
垢版 |
2016/02/12(金) 13:00:42.64ID:d070x0CG
>>213
なんかいつもの動的型付けvs静的型付けになるけど型は証明だけどテストはそうじゃなくてテストが全部網羅してるわけではないので安心感が違うというか
例えばDBのあるcolumnがnot nullになった場合にOption[A]をAに変えればいいけどこの影響を全部テストでカバーできるかっという不安
2016/02/12(金) 14:20:10.23ID:p+hiYDib
>>213
テストはどっちにしても必須なのは同意だけど、書かないといけないテストの量が段違いやん?
2016/02/12(金) 17:15:59.71ID:knRGP6M+
それな
2016/02/13(土) 15:02:14.88ID:6Xm9VASh
>>214
アドテク
2016/02/13(土) 22:45:56.09ID:/hNlBG8h
アドテクやってないお前らがアドテクで使われてますって喧伝しても滑稽なだけなんだが
2016/02/13(土) 23:47:40.16ID:bNYKyrDh
アドテクってビジネスロジック複雑なのか?
スループットが重視される好例としか思えないんだが
2016/02/14(日) 03:19:33.91ID:n6XHezc3
バッチ処理なんかは結構複雑
逆にスループットはそこまで求めてない
>>219
実際うちは使ってるわけで
2016/02/14(日) 12:36:18.72ID:YVSY6+gv
>>221
え?バッチ処理こそ速度命だろ
そもそも時間がかかるからバッチに回してるわけなんだし
2016/02/14(日) 12:39:05.75ID:7V8dKUBy
開発と運用が簡単だからリアルタイム性が必要ない処理を安易にバッチにするというのはドカタITじゃ珍しくないよ
2016/02/14(日) 12:49:33.33ID:yzL4vbY6
というか、計算機資源をうまく使うためのバッチは、常套手段でしょ。
2016/02/14(日) 13:43:33.80ID:ux7j3gL6
scalaはバッチ処理にはかなり重宝してるわ。
ある程度速いし、コレクションメソッド山ほどあるし、並列化も超簡単だし、ジャバも呼べるし
2016/02/14(日) 16:20:04.20ID:n6XHezc3
>>222
リアルタイム性は重要じゃないので言語の速度(という言葉は正確じゃないけど)はんな重要じゃなくて
いかに並列にするかスケールするかとかの方が重要
時間は早いに越したことはないけどデータウェアハウスなんか使う場合はIO待ちの方が多いしね
2016/02/15(月) 21:22:53.68ID:CchXTN/L
scala2.12-の新しいのが一向に出て来ないのは何でなんでしょうか?
詳しいかた教えて下さい。
2016/02/15(月) 22:36:31.91ID:I97ctguZ
わろた
俺も分からん
229デフォルトの名無しさん
垢版 |
2016/02/16(火) 03:09:13.11ID:WpVqeRrd
kotlin1.0がリリースされたよ〜
2016/02/16(火) 11:36:54.76ID:BWHo9T1a
おれはscalaでAndroid書いてるわ
2016/02/16(火) 12:50:39.62ID:dZPNfmcL
>>230
まだScalaでAndroidやってんのw
2016/02/16(火) 12:58:33.50ID:BWHo9T1a
>>231
コトリン使えってこと?
コトリンってscalaの劣化版じゃないの?
233デフォルトの名無しさん
垢版 |
2016/02/16(火) 16:28:50.12ID:kI6nCTCW
Scalaでandroidは辛みかでかすぎる
2016/02/18(木) 01:23:17.40ID:BpWsLDGp
Android+Kotlin流行りそうだし、Javaに次ぐJVM言語の座は1年後にはKotlinになってそうだなw
2016/02/18(木) 06:53:50.82ID:8/3qfXIq
Scalaの劣化というより改良といっていいと思う
Scalaと違ってまともな取捨選択のセンスがあるってだけで十分乗り換えるモチベーションになるよね
2016/02/18(木) 07:25:07.57ID:A95vaTyu
Kotlinはbetter Javaの領域をまったくはみ出していないという点では、Scalaとは別物だろう
2016/02/18(木) 07:33:35.31ID:A9GxfPem
Kotlinのスレを立てよう
2016/02/18(木) 08:06:28.90ID:8/3qfXIq
>>236
具体的には?
一般的なScalaらしさってほとんどは言語仕様ではなくあのカオスな標準ライブラリによるもので、
implicitを除けば大部分はKotlinの範囲で問題なく実装できると思うが
239デフォルトの名無しさん
垢版 |
2016/02/18(木) 11:36:34.88ID:FE8+VCji
そのカオスな標準ライブラリでimplicitめっちゃ使われてる(collectionや型クラス)のでむずくね?
型消去対策が最初からしっかりしてるのはいいところ
後 委譲用の構文があるのはいいよね
2016/02/18(木) 13:35:19.49ID:BlPadxAo
scala の for 式に相当するものとパターンマッチがあればあんまり文句はないが…
2016/02/19(金) 00:56:53.94ID:OKfPept7
scalaは十分に枯れているので
androidではなくサーバーでkotlinを使いたいとは思わない
2016/02/19(金) 01:40:42.90ID:Ylp3MecO
言語仕様はscalaで、VM言語じゃない言語が欲しい。近いのはrustかswift?
2016/02/20(土) 11:41:35.02ID:NPEQ4RNb
Scalaパズル Kindle版が半額セール
2016/02/20(土) 17:15:40.44ID:nZ5dx2pK
Scalaパズルは固定レイアウトかぁ
逆引きレシピも半額だね
2016/02/20(土) 17:39:10.95ID:u9ML1X1s
発売直後の本を半額セールするという誠意のなさ
2016/02/20(土) 19:46:47.09ID:SJ1YLAR4
出版社的には前からkindle半額セールあるみたいなので、今後は考慮して買うしかないね。
2016/02/21(日) 15:11:10.55ID:ZQGtUybE
>>243
翔泳社全点半額セールってことで早速購入したけど、電子書籍って微妙に扱いづらいな
248デフォルトの名無しさん
垢版 |
2016/02/21(日) 17:42:44.10ID:pJXyJCMn
慣れれば電子書籍しか読めなくなるよ
2016/02/21(日) 22:11:19.84ID:e+/WmwFI
>>248
読み物はそうやけど
マニュアル系は紙のほうがよくね?
2016/02/21(日) 22:16:35.30ID:e97PvTZr
逆だろ
マニュアルは検索性能が大事だから電子媒体の方が強い
2016/02/21(日) 23:13:00.64ID:nFHhaFix
電子書籍は形式によって読みにくかったり検索しにくかったりするので当たりハズレがある

紙書籍で読みにくい書き方・編集・構成のものは電子書籍になっても読みにくい

紙書籍は一度通して読んでればだいたいどの辺に欲しい情報が載ってるか分かる
一度通して読むのは初めて学習するときくらいしかないがパソコンの脇に置いておいてもすぐ探せる
利点は電気機器を使えない場所でも読める。欠点は場所を取る、持ち運びに重い。
また複数のジャンルにまたがる情報が必要なときその分だけ紙書籍を揃える必要があり糞邪魔

紙書籍は通して読むのでなくリファレンスマニュアルのような字引きとして使うには邪魔で不便
検索機能のある電子書籍のほうが便利な場合が多い(もちろん前述のとおり書籍の形式次第だが)

数千ページを1つのPDFやHTML1ページにまとめたタイプとか俺としては使いにくいので嫌い

電子書籍サイトの専用アプリで閲覧するとき同時に2冊以上を展開できないタイプもあったりするので
電子書籍で読む場合は形式等を十分に考慮するべし
2016/02/22(月) 02:09:43.67ID:8XXoqZ3L
Kindleの固定レイアウトは勘弁
検索もできないし、マーカーも引けない

Kindle版のScalaパズルがそれ
2016/02/22(月) 21:00:15.86ID:6cWcowj1
たまにはGroovyのこと思い出してあげてください。
2016/02/22(月) 21:43:08.26ID:kvVXTKO8
あいつはもう消した
2016/02/23(火) 15:41:24.42ID:3c10bRvk
swift がサーバーサイドに入り込んでくるっぽいな
scala は java のおかげで地位は確保できるだろうけど
2016/02/23(火) 21:20:22.62ID:xN2jtrGY
swiftの敵はKotlinじゃないかな
2016/02/23(火) 21:42:13.32ID:EekGY/S2
Go(笑)だろ
2016/02/24(水) 00:06:35.70ID:4L1Xo6cN
Goとかマジで持て囃されはじめてて引くわ
Rust, Swiftの方がマシだ
2016/02/24(水) 00:18:19.56ID:iS/0W36o
go は if err != nil 書くゲームだからな。
optionモナドに慣れてる人間からしたら我慢ならん。あとGenericsがないせいで事実上リストの高階関数が作れないのも終わってる。モダンの欠片もないロクでもない言語だわ
260デフォルトの名無しさん
垢版 |
2016/02/25(木) 22:21:14.20ID:oAowmf7g
Android用のGroovyそのまま使えてメッチャ楽なのに
何でみんな使わないんだろ?
Android開発でscalaとか正気の沙汰じゃないと思うけど
2016/02/25(木) 22:22:57.56ID:oAowmf7g
>>259
静的なOptional/Nullableに慣れてる人からすると
scalaのモナドを動的マッチングするのもかなり我慢ならんけどね
2016/02/25(木) 22:23:47.81ID:oAowmf7g
正確にはモナドじゃなくてモナド型か
2016/02/25(木) 23:01:57.10ID:LU0a9xcK
>>260
GroovyとJavaとかRubyとかPHPを比較するならわかるけど
Scalaと比較するのは方向性からして間違ってない?
Scalaを選択した人が求めているものはGroovyにはないと思うの(逆もしかり)
2016/02/26(金) 00:22:25.83ID:lNyk6opz
>>261
静的なOptionて何?
おれはfor式で複数のモナドをまとめて扱えてハッピーくらいにしか思ってない人間なんだけど
2016/02/26(金) 07:10:25.90ID:PCB0D50w
>>263
Scalaを選択してしまった大半の人が求めているのはLightweight Java
まあ実際使うと全然Lightweightじゃないことを思い知るんだけどね
2016/02/26(金) 11:35:47.36ID:NcCB/Z3U
Groovyって型書けるんだな。。
今後新規で泥アプリの開発することあったらKotlinとどちらを採用するか悩むな
Scalaで書けるならそれが一番良いのだけれど
2016/02/26(金) 13:12:05.70ID:lNyk6opz
>>266
scala でAndroidは環境整えたりライブラリアノテーション有功にしたりがとにかく面倒。
それ以降は快適そのもの…と言おうと思ったがコンパイルが面倒
2016/02/26(金) 20:18:24.96ID:KBsVtPlI
>>265
それはないわ

関数型というオブジェクト指向とはまったく違うパラダイムを前面に押し出してるのに
Better Javaだと思い込んで選択してるんだとしたら、それはただの調査能力不足かと
2016/02/26(金) 22:49:00.74ID:CeiSQ4wy
>>265
あんだけ関数型を前面に押し出してるのにそう思う奴いねーだろ
2016/02/26(金) 22:52:24.97ID:CeiSQ4wy
>>261
(動的マッチングってなんだろう)
2016/02/26(金) 23:50:43.13ID:NcCB/Z3U
型クラスのインスタンスはScalaではtraitのサブクラスのオブジェクトだから
それに対するコールは動的バインディング(=動的マッチング?)になるって事では?

仮想関数の呼び出しコストすら看過できない
めちゃパフォーマンスクリティカルなシステムを組まれているお方なのかなと
2016/02/27(土) 00:10:47.85ID:xfshl45r
ガチな方の関数型には動的ディスパッチなんか無いからな
速度云々じゃなくて不確定な振る舞いが存在するのが問題なんだよ
2016/02/27(土) 01:23:24.32ID:ji72dwxR
haskellで instance で自分でモナド型を宣言して使うのって実質的に動的バインディングと同じじゃない?

virtualメソッド呼び出しの何が問題なのかもイマイチ分からんのだけど
2016/02/27(土) 03:16:16.54ID:t6rk1hjG
>>272
不確定ってどこが不確定なんでしょう?
275263
垢版 |
2016/02/27(土) 08:48:41.19ID:g7Q1skIR
>>265
少なくとも自分はJavaより強力な型システムを求めて辿り着いたわ
Better Java的な使い方にとどまるならGroovyを選んでたと思う
2016/02/27(土) 08:57:35.28ID:g7Q1skIR
>>267
最近泥Scala環境見直しけど、以前に比べると環境構築自体は大分楽になったと思う
確かここを参考にしたはず
https://tanoshiilife.wordpress.com/2015/12/16
Scaloidも便利なんだけどハマりどころが多い気がする

まあ、コンパイル時間の問題は解決しないけどなー
2016/02/27(土) 12:04:44.80ID:hI6CEqxt
>>273-274
haskellとかだと、コンパイルリンクした時点で、
実行時に呼び出される関数が確定してるって意味でしょ
たとえ自分で宣言したモナド型であってもね
2016/02/27(土) 12:26:14.93ID:ji72dwxR
>>277
いやそうだろうけど、haskellでも多相にできるんだから、その型を使う側からしたら振舞いは不確定じゃん?
というかその不確定さが多相、多態性の売りなんじゃない?
scala でもコンパイル時にチェックはしてるんだから変なメソッド呼び出しにはならないし
2016/02/28(日) 06:12:35.94ID:3V3Hoj/K
>>278
scalaはAnyがあるので、haskellと違って型推論だけで判断してません
型のマッチングは動的になってる
2016/02/28(日) 06:20:22.65ID:3V3Hoj/K
型が強いと言う理由でscala使ってる人たちは他の言語使ってるのかな?
型を中心に見た静的型付けの関数型言語としてはかなり微妙だと思うんだけど
2016/02/28(日) 10:05:13.94ID:Zdb7ju2I
>>280
webアプリ作るとかだと他に選択肢あるっけ?
2016/02/28(日) 10:15:59.48ID:3V3Hoj/K
>>281
OCamlとかHaskellとか。手抜きがしたいならF#。
Webは書けない言語のが珍しいんじゃない?
2016/02/28(日) 10:20:56.50ID:QIQTr9Pj
F#はセンスいいよな
あれJVMで使えたらいいのに
2016/02/28(日) 12:07:15.32ID:MU6IEt8P
>>279
理論上そうだけどまともなプログラマーなら Any で型指定することなんてまずあり得ないから

scala の型が強いって思ってる人いるのかね?
2016/02/28(日) 12:16:43.25ID:3V3Hoj/K
>>284
いないならこっちの早とちりだった。

>理論上そうだけどまともなプログラマーなら Any で型指定することなんてまずあり得ないから
型注釈を書く頻度が多くて面倒くさくないですか?
2016/02/28(日) 12:35:19.07ID:MU6IEt8P
>>285
面倒くさいけど、結局 Haskell でも分かりやすさ求めてみんな関数の型注釈はちゃんと書くじゃん?
2016/02/28(日) 12:53:49.70ID:u6kuw5v2
普通のプログラミングならscalaの型推論あんまこまらないけど(foldLeftやfoldの最初の引数に型書かなくちゃいけなくて面倒くらい)
scalazとかになると途端に厳しくなるな
後 関数(methodじゃないよ)や値が多相になれないのもキツイ(まぁ普通は困らないけどさ)
2016/02/28(日) 13:18:09.60ID:3V3Hoj/K
自分もscalaにそこまで求めてませんよ。気にはなりますけど。
Java資産を有効活用できるからこそ、有意義な言語なのに、
そこ削ってまで突き詰める必要ないと思いますし。
2016/02/28(日) 13:21:45.18ID:3V3Hoj/K
>>286
すみません、注釈はあまり書かないですね…。
Haskellは勝手に上に推論しないので。
さすがにIOUArrayなどは書きますけどね。
2016/02/28(日) 13:25:15.31ID:3V3Hoj/K
また早とちりしてしまった。
型変数での指定なら、確かに思いっきり書いてますね。
2016/02/28(日) 15:57:21.07ID:u6kuw5v2
>>288
Scalaの型推論が残念なのはjava資源云々というより
継承ベースの型理論と型推論が相性悪いって感じかと
2016/02/28(日) 18:09:46.42ID:3V3Hoj/K
>>291
自分もどれには同意です。
型を強力にすると、Java資源が使いにくくなる。
それが他のJVM言語が流行らない理由かと。
293281
垢版 |
2016/02/29(月) 08:25:02.28ID:ufDHf3id
>>282
書けない言語のほうが少ないだろうけど、書きやすい言語がいいなあ…
haskellとか一度触って投げてるし、他は触ったこともないので
とりあえず一度やってみます。
2016/03/01(火) 00:39:50.34ID:yt4dkBOn
ocaml も haskell も web 書けるけどそれは書けるとは言わない。(そもそも用途が違うけど)
2016/03/01(火) 06:43:55.89ID:u3C+MgxS
それをいうならScalaもフロント周りはかなり無理があるぞ
関数型はあくまでモデル記述に使うものだよ
F#なんかは明確にそう位置付けられてるね
2016/03/01(火) 11:32:52.73ID:t0FqAuam
ツイッターでScala勢がKotlinを警戒敵視し始めてて草生える
2016/03/01(火) 13:35:11.91ID:0zGGRChA
フロントはどうせjsで書くんだから、そもそもscalaが踏み込む必要がないやん
まぁscalaJSとかあるけど
298デフォルトの名無しさん
垢版 |
2016/03/01(火) 15:39:06.49ID:0aMYPTBw
>>296
って主に水島さんやん
あの人は言語オタで昔からあんな感じだしな
2016/03/01(火) 15:43:50.60ID:0aMYPTBw
ScalaはJVMで動いていてjavaのsdkやライブラリ使い放題(実際使うときにはラップするけど)
なのが有利
2016/03/01(火) 16:23:18.56ID:0zGGRChA
コトリンは名前がな…
do式的なのあるっけ?
2016/03/01(火) 16:24:34.39ID:0aMYPTBw
yield構文はサポート予定らしいけど
scalaのfor yieldに相当するものかどうかは不明
2016/03/01(火) 16:54:17.68ID:u3C+MgxS
わざわざyieldと言うからにはC#やPythonみたいなyieldじゃね
Scalaのyieldなら要らんわ
紛らわしいだけ
2016/03/01(火) 20:19:13.01ID:0aMYPTBw
まあそもそもscalaのoption型みたいなのないみたいだから
do式っぽいのあってもそんなにうれしくないよね
2016/03/01(火) 20:24:03.06ID:0zGGRChA
>>303
いや、optionくらいはあるんじゃね?
数年前にできた言語だぞ?
あってもmapとflatmapなかったら終わってるがそれは流石にあるだろ?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況