プログラミング言語 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/11/07(土) 23:06:23.35ID:vYEJsDm4
まあでも、勝手に利用者増えてってる状況だからな。
普通に学部のCS出たらML系には馴染みがあるし、
erlangから移植したものとjvmから引き継げるものがあって、さっと使えるし、監視系に強いのが利点だと思う。
goが置き換えそうな分野が増えてるけどね。
2015/11/07(土) 23:09:48.31ID:vYEJsDm4
ml系使えるならhaskellやocamlでなんで書かないのというのはあるが、そこはライブラリがあったり情報があったりなんだろうなと。
2015/11/08(日) 02:48:28.67ID:Wnkcx7Tx
Scalaは普通にオブジェクト指向言語として書ける & jvmで動きjavaライブラリが普通に使える
って点がでかい
てかscala書いててそんなに関数型プログラミング意識しないし scalazとか使うのならともかく
>>104
>学習コストが1日かからないような洗練された言語が数ある中で
そんな言語はない 
2015/11/08(日) 05:35:04.24ID:l3pcokKZ
仮に1日かからない言語があったとするとその言語の使用者は代わりがいくらでも簡単に用意できるということ
学習コストが高いというのはある意味長所だと思う

まあGoとかScalaとかHaskellとか業務系でメインじゃない言語をやってる人って
プログラミングが好きな人のイメージだから学習コストとか気にしないんじゃないかな
実際俺も実務で使わないけどScalaやり始めたし
今はScalaメインの会社に転職して楽しくコーディングしてるわ
2015/11/08(日) 10:14:00.73ID:WIQI5dDH
アセンブラとか低級言語は1日で理解できるが会得は困難
比較的高級なC++はとりあえず書けるが理解は一生かかってもできないと思う
どこまでを学習コストと見るかだな

Scalaは既存のJavaアプリの段階的移植という学習方法があるのがいい
Haskellは勉強のための勉強ばっかで苦痛だった
2015/11/08(日) 11:04:41.20ID:w/pNyAon
どうやら、

IQに差がありすぎて会話になりませんね

Scala厨はもう少し頑張りましょう
2015/11/08(日) 12:44:16.66ID:YL2+Mlqr
uyは色々な言語スレに登場しては荒らしていってる奴だから、無視が正解
2015/11/08(日) 14:44:55.43ID:2RNLDzo4
すごいHaskellすげー面白かったぞ
パラダイムの学習以上のことをしようと思ったら苦痛そうだけど
2015/11/09(月) 22:51:48.65ID:7SsmzSLU
uy戻ってきたのか。もう成人したのか?
114デフォルトの名無しさん
垢版 |
2015/11/10(火) 00:27:23.14ID:FDGXqd+V
言語が面白いとかどんなレベルなんだよw
115デフォルトの名無しさん
垢版 |
2015/11/10(火) 15:45:53.50ID:6XbD1nF4
本だろ
2015/11/16(月) 11:33:28.62ID:7yHHnP/U
職種別、資格別、スキル別の平均最低月給リスト(ほぼ毎日更新)
http://jobinjapan.jp/cate/
全掲載求人109,160件の平均最低月給195,800円

Scalaの求人 の平均最低月給268,000円
http://jobinjapan.jp/job-listing/keyword-scala.html
2015/12/09(水) 08:35:00.26ID:fDilOssF
haskellって圏論やらないと使えないのが痛いけど
scalaはjavaの亜種だから親しみがあっていいよな
2015/12/12(土) 00:42:28.28ID:k/gE59IS
別に圏論やろんでも使えるだろ
2015/12/12(土) 11:08:21.23ID:iW7VBp1s
寧ろJavaなんかに親しんでしまった人々を哀れむ

というかScalaは「Javaでない」ところに
魅力というか存在意義があると思うんだが
ScalaはJavaの亜種って相当な皮肉に聞こえる
2015/12/12(土) 11:28:57.93ID:LWxp7tFX
JVM上で動くから、Javaのクラスが普通に使えるってだけで、全然別言語だよな
2015/12/12(土) 11:39:58.18ID:LM4caT06
Javaの資産を流用できることが最大の売りであると同時に足を引っ張ってる
おかげで仕様に不自然な制限がとても多いしライブラリもクソ使いづらい
2015/12/12(土) 12:45:22.80ID:eoIxbs5E
過去の資産使えなかったらまず始まりがないからな
C#あたりはそれだけで完結させるなら綺麗だがやはり既存のNativeコードとの連携では足を引っ張られてるしな
2015/12/12(土) 13:45:23.86ID:TykcQzq2
NashornやJRubyやOCamlJavaだとJVMで動くからJavaのクラスが使えるだけの別言語という雰囲気だが
ScalaやGroovyだとJavaとの相互運用性を念頭に設計されてて別言語っていうのにも違和感ある
2015/12/13(日) 01:42:12.41ID:1JQzcdVR
>>121
具体的には?
jvmのアレさが足を引っ張ってる所は感じてるけど
(主にarrayと型消去)
2015/12/13(日) 07:41:44.16ID:ZNtKD4M4
>>124
単にJavaAPIをFFI出来るだけにJavaとの互換性限定すればJVM上でも配列や型消去も(パフォーマンス上の問題はあるが)好きにやれるんじゃないか?
2015/12/14(月) 00:24:20.24ID:ibuklJou
Scalaを勉強した感想
・複雑な処理でも簡潔に書けると謳っているが、簡潔に書けるまでにはかなり勉強が必要だと思った
・可読性なくね?
2015/12/14(月) 02:44:26.88ID:ZlvMub8C
https://github.com/twitter/gizzard

これなんか全部Scalaで書かれてるけど可読性は
2015/12/14(月) 02:45:10.27ID:ZlvMub8C
https://github.com/twitter/gizzard/search?l=scala

可読性は無いようなもんだよ
2015/12/14(月) 07:58:52.26ID:G8UG3fl8
>>127
もうベターJavaというか完全にJavaじゃないか
これだったらもう普通にJavaでいいわ
2015/12/14(月) 19:36:02.13ID:Z6ntNZEd
>>126
scalaで簡潔に書けないのは関数型に慣れてないだけでは?
あとちょっと勉強したくらいでその言語の可読性を語っちゃいけない
2015/12/14(月) 23:58:17.28ID:QlAHLIYt
>>126
普通に書いてる分にはそんなに可読性悪くないと思う
implicit使いまくると可読性落ちるけど
2015/12/15(火) 00:04:09.04ID:tTRjJjUN
あとあんまりにもdslっぽく書くために演算子を使いまくったり
macroに手を出したりするとわけわかめ
2015/12/15(火) 00:05:43.06ID:QXgfrh72
>>129
どのへんが完全にJavaなのかわからなかった
2015/12/15(火) 00:53:09.35ID:vRVqaoZM
>>133
むしろどのへんがScalaらしいのか教えてほしい
普通のJavaとしてはお手本のような綺麗なコードだけど、少なくとも関数型プログラミングとは言い難い
2015/12/15(火) 01:07:08.72ID:r4CwdFuT
Implicit 最高やろ。extends AnyVal が効くようになってから使いまくってるわ
2015/12/15(火) 01:26:19.05ID:NAlzzOwp
可読性は言語自体が持つ構文にも影響されるけど
最も可読性に影響を与えるのはコードを書く人だから
twitter社のscalaのコードが読みやすい読みにくいはtwitter社のプログラマのせい
2015/12/15(火) 07:57:49.37ID:dq1yXLSb
>>127が「実世界での開発におけるScalaの正しい使い方」なんだとしたら、
一部の企業でScalaからJavaに回帰する動きがあるのも納得
これなら確かにJava8でいいね
2015/12/15(火) 11:49:41.60ID:kvDOoT0H
単純にvar禁止にすれば嫌でもある程度scalaっぽいコードになるだろうな
2015/12/15(火) 12:32:36.60ID:dq1yXLSb
>>127のようなインフラに近い部分って本質的にミュータブルにならざるを得ないんだよな
それにweb系は基本的にモデルが単純であることが多く、関数型のメリットを受けづらい
関数型の真価はむしろ、見ただけで吐き気するようなクソ複雑な業務ロジックと業務フローを記述するのに発揮されると思うが
日本の大規模システム開発に果たしてそんな日が来るのかどうか
2015/12/15(火) 16:41:19.87ID:kvDOoT0H
関数型っぽいコード書けなくても
・ある程度速くて
・冗長すぎず
・Javaの資産を呼び出せる

ってだけでも使う価値あるだろ。少なくともJava直接書くよりは断然生産性がいい
2015/12/15(火) 22:19:58.18ID:QXgfrh72
ローレベルなメソッドではミュータブルに命令形的に高速に書いて、中間はイミュータブルに関数型的に書いて、その入出力をOOPでまとめるってすごくScala的だと思う
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とマグネットパターン)
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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