プログラミング言語 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の連載記事、各々で開かれた勉強会の資料などがあります。
2015/12/15(火) 23:53:59.11ID:tTRjJjUN
つかscalaのコレクションがもろにそれだな
2015/12/16(水) 11:38:35.08ID:/BiwQQbr
>>141
わかる。副作用が扱えるscala のいい使い方だな
2015/12/16(水) 21:50:03.43ID:wGMv7ZuK
速度の要求厳しくなければ細部もイミュータブルに書けるし、開発者がHaskellやML系での設計に慣れてればクラスは単にモジュールとしてだけ使えるかな
2015/12/16(水) 23:14:14.73ID:L4gRMC3t
scalaz使えば型クラス使えるし
shapeless使えば自動導出だってあるよ!
2015/12/17(木) 08:26:22.18ID:nE3SkfcG
技術に拘る意識高い系って業務から逃げちゃうからなあ
そういう連中が積極的に業務に向き合えば関数型バリバリ使ってWebなんかよりよっぽど面白い世界になりそうだけど
2015/12/17(木) 15:54:44.26ID:JPaEl+Ww
関数型って要はモナドだろ?みんながアレを使いこなせることはこの先ないだろうな。
関数型ブーム来てるけど、けっきょく高階関数が便利とかイミュータブルにしようとか、当たり前のことだけで落ち着くだろうな
2015/12/17(木) 19:30:28.55ID:26mXuTjH
haskellこそが関数型言語だっていう風潮どうなのよ
遅延評価かつ副作用をモナドに閉じるって関数型言語一般の話じゃない
2015/12/17(木) 19:45:29.27ID:o180MFzD
まぁそうだけど、じゃあ関数型一般に特有なのはなんだ
最近の言語はラムダくらい使えて当たり前だし
2015/12/17(木) 20:09:47.72ID:26mXuTjH
147のとパターンマッチと型推論と型安全で当たり前に便利でも十分だとおもう
2015/12/17(木) 20:15:16.06ID:BcK+i/Ip
>>147
maybeモナドやlistモナドあたりに限って言えば全然難しくないので広まるのでは
特にmaybeモナドがないプログラミングはもう考えられないっていうレベルで便利だし
>>149
関数型の定義が曖昧だから再代入禁止にして高階関数使ってイミュータブルコレクション使えば
もう関数型でいい気がするけど最近のオブジェクト指向言語大体揃えてる気がする。。
ml系になってしまうけど代数的データ型、パターンマッチ、型クラスあたり・・?
2016/01/17(日) 20:52:36.64ID:a1wlASK2
ScalaMatsuri 二日目まだTBDが半数以上とかどうなっとるんですか…
2016/01/17(日) 21:20:03.61ID:6oiqScYX
モナドみたいな汚いハックが持て囃されるうちは関数型は主流にはなれないよね
関数型の実用的なメリットはその宣言性の高さなのに
それを損なうことがカッコいいみたいな空気は気に入らない
2016/01/17(日) 23:57:12.78ID:komzhbr6
純粋なオブジェクト指向が主流になったことがないように
関数型が主流になることはないだろうし
仮に関数型が主流になったところで
Scalaがその筆頭になることはないから安心しろ
2016/01/18(月) 07:09:36.14ID:fb3J4oW9
C#だと最近null propagation operatorっていう演算子が入って
mayBeNull() ?. nullの場合 .? 単に .? nullが .? 返る();
みたいな書き方でMaybeモナドのようなことを実現できるようになったけど
これ自体がイケてるかどうかは別にして、本来プログラミング言語が目指すべきところはこっちだと思うんだよね
それを安易にハックに頼っちゃうと際限なく複雑になってしまう
2016/01/18(月) 23:13:47.46ID:HgVFfOde
>>155のいう「ハック」って何なんだろう?
モナドは数学的バックグラウンドがある理論なんだけど…
2016/01/18(月) 23:36:09.36ID:kgzqpMhC
関数型で文脈を記述するDSLを実現する「ハック」だな
こういう言語内言語みたいなのは進化の過渡期にありがちな状態で、いずれ言語本体に自然な形で統合されていく
2016/01/18(月) 23:58:54.60ID:sxAam2+1
プログラミング言語がどんなに進化しようとも
それを扱う人間の質が変わらないのなら
2016/01/19(火) 07:20:59.22ID:i1u/RpO5
進化というより再定義だな。
モナドを言語に統合していけば、結局は関数型言語の中に従来の手続き型言語に似たものが同居する形に行き着くはず。
そうなったところで実質何も変わらないが、ガチ関数型信者連中にとっては関数モデルが基礎になっていることが重要なんだよ。
160デフォルトの名無しさん
垢版 |
2016/01/19(火) 17:34:14.29ID:IRtxNT/4
>>155
なんか色々勘違いしてるようだけどそれmonadじゃなくてただのfunctorじゃね?
ハックが云々って言ってもmonadってただの型クラスなのですごい特別なものでもないし
do構文やfor式が嫌いなら>>=やflatMapを使えばいいし
>>157
monadを使えば文脈を表せるっていうけど別にListやOptionやTry(モナド則満たさないけど)使う時は意識しないし
多くの純粋ではない関数型言語では状態やIOをそのまま使えばいいわけで
161デフォルトの名無しさん
垢版 |
2016/01/19(火) 17:45:14.03ID:IRtxNT/4
>>160
>モナドを言語に統合していけば、結局は関数型言語の中に従来の手続き型言語に似たものが同居する形に行き着くはず。
maybeやeitherはどうするんですかね
ていうかfunctorやapplicativeを言語を統合するみたいな話と同じなので意味がよく分からん
STArrayやSTRefやIO Monadが汚いハックってんならわからんでもないけど
普通の関数型言語では使わないし
>そうなったところで実質何も変わらないが
純粋な関数から副作用がある関数を呼べないという点が違う(unsafePerformIO? 知らんな)
2016/01/19(火) 17:57:56.52ID:IRtxNT/4
>>155
あ ごねん勘違いしてた
途中でnull返ったら全体がnullになるのね
でもnullableかどうかを型で表せないからっぽい?ので やっぱmaybe monadより力が劣ると思う
mayBeNull() ?. nullが返らないと思ったけどnullだった . 返る(); // ぬるぽ
nullの為に特殊な構文を導入するよりかはmonadのほうがいいと思う
2016/01/20(水) 23:33:59.18ID:YNTp5hgV
155が言いたいのはモナドも模倣するような機能が、後から入ってくるのがハックってことでは?
2016/01/23(土) 14:39:30.69ID:NoyNaMdb
Scalaでモナドのような型クラスを使おうとするとimplicit conversionを使ったりしなきゃ
いけないのが汚いということなのかなぁ?
いやでも>>153で関数型全体の話をしてるから、Haskellみたいに型クラスを普通に
扱える言語もあるから違うか

それとも単純にモナドのような強烈な抽象化が生理的に受け付けないだけなのかなぁ?
2016/01/23(土) 16:50:24.89ID:Q6XJFQjz
状態扱うのに、参照透明でも手続き型を模倣した方法使い始めると、そのうち管理しきれなくなるとかそういうのはないの?
2016/01/23(土) 18:22:32.33ID:KCwna5vH
状態を濫用すると結局手続き型と等価になっちゃうだけだよ
相当慎重に作らないとあっという間に大部分の関数がモナドで汚されてしまう
2016/01/25(月) 00:10:54.02ID:ZrKcoj3n
chainer とかの backward って勾配を計算してるんだから、実際自動微分だと思ってたんだけど違うの?
Theano も同じことやってるだろ?
2016/01/25(月) 00:11:34.26ID:ZrKcoj3n
すまん盛大にスレ間違えた
169デフォルトの名無しさん
垢版 |
2016/01/25(月) 22:48:18.30ID:w3dq64Gi
ほんとだよ
170デフォルトの名無しさん
垢版 |
2016/01/29(金) 00:50:37.57ID:klBArT7P
Scala開発にはどのIDEがいい?
2016/01/29(金) 01:10:59.43ID:WoUmweSq
>>170
インテリジェー
2016/01/29(金) 22:47:46.94ID:YK9TzO4/
intellij一択
2016/01/29(金) 23:22:27.25ID:4RN5yrs8
emacs + ensime …はだめですよね、はい
2016/01/30(土) 01:07:22.95ID:MQtKZdqk
職場にいるわw
2016/01/30(土) 02:54:19.85ID:55b+/as7
intellij に ideaVim が至高
176デフォルトの名無しさん
垢版 |
2016/01/30(土) 02:59:35.43ID:eJpLCaMd
Scala IDEもイイヨ
2016/01/30(土) 12:49:01.50ID:V/06QySV
09:40
〜18:10
放送中 ScalaMatsuri 2016 1日目 メイントラック

lv249050979
2016/01/31(日) 02:09:37.30ID:0uPinBxR
10:00
〜18:00 ScalaMatsuri 2016 2日目 メイントラック

lv249051017
179デフォルトの名無しさん
垢版 |
2016/01/31(日) 02:50:34.66ID:voWQoFzP
Scalaの案件って増えてるの?
180デフォルトの名無しさん
垢版 |
2016/01/31(日) 03:00:43.50ID:LANc8IHu
アドテク周りが増えてる?
2016/01/31(日) 10:38:55.80ID:MfNUXcLT
javaだしね
2016/02/05(金) 16:22:28.89ID:7CkN2sOV
仕事でscala使ってるところって型クラスとかバンバンなん?
optionモナド便利とかimplicit最高とかで満足してるレベルの人は厳しい?
2016/02/05(金) 20:06:01.50ID:is8S4oy+
それでjava8と比較したうえでメリットがまさると判断したんならいいんじゃね?
2016/02/05(金) 21:05:45.79ID:8RV0QGg0
>>182
型クラスバンバンはライブラリ製作者じゃないかな
仕事で使うならそこまでバリバリに使わなくてもいいとは思う
185デフォルトの名無しさん
垢版 |
2016/02/05(金) 22:00:48.84ID:yx3imKew
自分が型クラスを定義してやる事は殆どないと思う
たまにフレームワークやライブラリが型クラスのインスタンスを要求する事があるからそんときに
implicit val fuge = new TypeClass[Fuge]{...} みたいな事やるくらいかな
型クラスおじさんがいる現場は知らないです
2016/02/06(土) 22:41:51.17ID:7g0sefOr
好きにやっていいそうだからいっそScalaとSparkを導入したいが、
全く新しいこと知らないカスSIerで自分以外にメンテできる気がしない
2016/02/06(土) 22:53:12.38ID:iv9uLbIs
向上心のない奴らなんか後ろに置いて先へ進め
2016/02/06(土) 23:04:48.86ID:scYGTD1J
>>186
好きにやっていいとはいえ、仕事なんだからオワコンScalaを選んだ理由は必要だろ。
それが相手が納得できるように説明できるならいいんじゃない?
2016/02/06(土) 23:23:06.35ID:JQHaigYg
本当に終わるんなら理由として十分かな
下手に長生きされたほうが面倒くさい
2016/02/07(日) 08:27:22.51ID:CTHi5OK2
勝手にオワコンにするなよ
2016/02/07(日) 08:37:12.92ID:2xuESUN6
Sparkでなんとか話題を保ってるけど、正直Scalaが普及の足を引っ張ってる感しかないな
データ分析はJavaかPythonで新定番が出てきたらあっという間に消えると思う
2016/02/07(日) 11:38:42.21ID:EGU7Eu2Q
>>186
COBOLだってメンテされてんだ
お前が作ったものが会社にとってどうしても必要だというならScalaプログラマぐらいちょっと本気で
探せば見つかるレベルなんだから心配すんな
2016/02/07(日) 14:48:31.84ID:qUC696to
python はほんとやめて欲しい
java は言わずもがな
2016/02/07(日) 15:17:34.23ID:vhQgXj1G
結局マクロは頓挫したの?
ダメならダメで綺麗さっぱり削除してほしいな
またゴミが増える
195デフォルトの名無しさん
垢版 |
2016/02/08(月) 22:35:28.36ID:OuuRgtc4
experimentaじゃなくって正式にscala標準になるってのがscala.metaってだけ
つかマクロ使ってるライブラリがバリバリあんのに削除したらそれこそオワコンになるのでは
>>191
scala祭りが盛況だったのにオワコン化にすんなよ。。
つか大企業が普通に使ってるのになんでオワコンオワコン言ってる人がいんのか理解できん
2016/02/08(月) 23:32:11.87ID:lhSKWD63
アンチだろ
枯れた言語だしjavaが機能的にscalaに追いつかない限りオワコンにはならないと思う
197デフォルトの名無しさん
垢版 |
2016/02/08(月) 23:42:08.64ID:b9RkDeW8
Scalaはビッグデータ分野で勝ち組になるよ
2016/02/09(火) 14:05:50.78ID:Qkh88I8Z
ビッグデータ分野の勝ち組がほんの一握りのような
2016/02/09(火) 14:30:45.38ID:OJMdLEFS
ビッグデータというとPythonが浮かんでくるがこれじゃあかんのか?
そもそも企業がビッグデータを解析するってなったときは、
いちいちコードなんて書かないで、AzureみたいにGUIでぱぱっとやる方向に進んじゃうんじゃないか?
2016/02/09(火) 18:39:59.37ID:+8lsHOza
ビッグデータというかその基盤を作るために使われてるね
あくまでJVMがどうしても必要なときのベターJavaとしての選択なのであまり広がりはない
実際にデータ解析する人が使うのはPythonとRだよ
2016/02/09(火) 18:58:20.01ID:Qkh88I8Z
Juliaが仲間になりたそうにこちらを見ている
202デフォルトの名無しさん
垢版 |
2016/02/09(火) 19:25:12.90ID:/aGQoNgm
普通にサーバーサイドとして使えばいいんじゃないか
2016/02/09(火) 19:41:34.12ID:+8lsHOza
>>202
Scalaの花形は基盤領域だよ
Webアプリでも大量のメッセージのストリーミング処理や大規模バッチ処理
Javaが進んでる分野だからね
カジュアルなWebのスクリプトとして使うには面倒臭すぎて割に合わんよ
204デフォルトの名無しさん
垢版 |
2016/02/09(火) 22:23:13.86ID:6ph8GDr2
sprayみたいなかなり早くて軽いREST APIなのもあるじゃん
特にあのルーティングの定義は他の言語では中々難しいし(HListとマグネットパターン)
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を使いたいとは思わない
■ このスレッドは過去ログ倉庫に格納されています