プログラミング言語 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/06/09(木) 03:05:15.46ID:rVZX7CxP
Scalaって短いコードが正義だとばかりめちゃくちゃやってない?
短いのは良いけどそれが他人に読めないようではゴミだと現場でもリーダブル・コードでも教わったけど、
それの真逆を行ってる気がする
2016/06/09(木) 05:31:52.10ID:fwgjgofC
そもそも実用言語じゃないからねこれ
研究用の実験言語
2016/06/09(木) 10:46:22.60ID:mypD/X+t
実装を読み解かないと挙動が分からない時点で
読みやすさを論じる価値がない

「読み解くくらいなら自分で実装したほうが早い」
って思えるくらいの粒度ならシンプルな方がいいんでは?

別にゴルフやってる訳じゃないんだから
短く書くのは分かりきっている部分で
そこを冗長に書いたところで読みやすくはならない
2016/06/09(木) 14:12:37.84ID:ifPE+NTk
記述の抽象度が高いのと暗黙的なのとははっきり区別して考えるべき
Scalaは関数型としてはそれほど抽象度は高くないかわりに後者による省略が目立つ
409デフォルトの名無しさん
垢版 |
2016/06/09(木) 19:20:06.80ID:SBNt8N/h
具体例を上げてもらわんとなんとも
暗黙の型変換の多用はうんちだけど
2016/06/11(土) 23:16:17.51ID:F/F4wJ23
単純にカッコやドットの省略とかも利点ない気がする
2016/06/11(土) 23:19:44.60ID:tJYHO1Ae
カッコの省略は超大事
Rubyのブロックのような書き方はある意味衝撃だったからねー
あれを捨てるのはさすがにできない
Swiftもそうだしね
2016/06/12(日) 23:57:27.55ID:LInyuzht
文法については、コンパイル時間が伸びなければ簡略化取り入れてもいいけど、
セーブするときはフォーマッターで;付きに整形したい派
2016/06/13(月) 03:40:36.02ID:936E8706
>>410
fuge.method(hoge)を fuge method hoge みたいに書ける奴?
あれないと演算子を定義する時に演算子オーバーロード用の構文が必要になるよ
2016/06/13(月) 09:27:49.08ID:R0RMs4bq
>>413
騙されるな
結局、単項演算子や結合順序の問題があるから演算子オーバーロードには特殊なルールがある
それを「命名規約」と呼ぶことであたかも特別扱いではないかのように見せ、ブロガーを欺いている
2016/06/13(月) 09:39:31.25ID:QPr6F1yt
演算子については、メソッドと演算子を統一的に扱うというアイデアに固執した結果、かえって複雑になっている感がある
あの「命名規約」が美しいとはあまり思わないな
2016/06/13(月) 15:05:47.35ID:936E8706
>単項演算子
単項演算子はユーザーがあんまり定義しないし
結合順序は末尾=がつくの以外はそんなに気にしないっしょ
2016/06/20(月) 21:15:43.22ID:e35Nkr0d
2.12リリースまだぁー
2016/06/21(火) 02:09:43.80ID:bdFMFD8l
scalaって借金管理(こっちが貸してる方)のシステムを書くのとか得意ですかね?
数十件の利息、延滞金をミスなく計算したいので、型がしっかり(?)してて、
ライブラリ豊富そうだなと思い、聞いてみました。
2016/06/21(火) 07:29:48.84ID:qU7L11UT
そういうのはテストをどれだけちゃんと書くかが全てだから正直あんまり関係無い
Scalaはある程度バグの許容されるWeb系の連中が多いので、関数型最強ウェーイみたいなのをあまり真に受けない方がいい
2016/06/22(水) 12:32:22.07ID:75XiCOP3
むー。
非プログラマな職場で
自分しかテストやらチェックできないので、
普段使ってるrubyよりかは
型チェックされるし、自前のguiがあるという点でいいのかなーと、思ってました。

というか、本音はコップ本を前に買ったままだったのでscala使いたかっただけなのかもしれない…と気が付きました
2016/06/22(水) 20:48:36.24ID:+togyD5I
自前のgui…
2016/06/22(水) 21:23:55.40ID:ShWHWHC0
ScalaでGUI作ってる奴なんて日本で100人もいなさそう
2016/06/23(木) 08:00:34.64ID:b238+E4M
あ、間違いです!
javaのguiでした!
2016/06/23(木) 21:50:39.00ID:T6UvsyMz
誠に遺憾ながらそれもそれで100人が200人にはなるかなという代物
425418
垢版 |
2016/06/29(水) 23:50:04.15ID:gdvQHAi2
まさか、このスレで、オススメされないとは思わなんだ。
日頃scalaと向き合ってる人からの忠告なのでありがたく参考にさせてもらいます。
一番得意なruby(jruby)で、テストをしっかり作ってやってみます。
2016/06/30(木) 00:04:15.36ID:iTuzTFvO
GUIやる時点で選択肢は相当に狭められるからね
Web系ならまだしも
2016/06/30(木) 00:23:09.72ID:L1psIJpl
Scalaはあんまり宣言的じゃないから、関数型らしいロジックの見通しの良さがあんまり感じられないんだよな
良くも悪くもRuby系
2016/07/03(日) 11:06:08.21ID:ZEr6aDFZ
オブジェクト指向と関数型の良いとこ取りした、銀の弾丸に今最も近い言語でしょ?
Rubyみたいなハチャメチャ言語と比較されてしまう程度の言語なの?

IDEはeclipseしかないの?
2016/07/03(日) 11:43:48.73ID:dqZh4yhX
オブジェクト指向と関数型のいいとこ取りとしては今はF#がそれに近いかなあ
Scalaは無計画に便利そうなもの全部ブチ込んで混ぜただけのカオス
2016/07/03(日) 11:53:28.68ID:OKnEuR5T
ブーム一瞬で終わったな
2016/07/03(日) 13:03:17.56ID:ZEr6aDFZ
DDD界隈だと人気らしいじゃん?
もしかして、Javaが中途半端なラムダ式導入しただけでScalaは洋梨オワコンなの??
2016/07/03(日) 13:19:14.42ID:T6bq1Tjn
>>428
Ruby と書き方は似てるからねー
メソッド引数のカッコ省略とか return 省略とか、Ruby のブロック構文とそっくりな書き方を
できるところとか
だから Scala は Java より Ruby から入る人の方が多いんじゃね?と言われるぐらい

Ruby から入る人の方が多いからかどうか知らないけど、eclipse はあまり使われてない感じ
IntelliJ の方がどちらかというと有名かな
あとは Emacs(やVim、Sublime)+ensime とかね(これも Java から入る人が少ないことと
関係してそう)
2016/07/03(日) 13:23:38.14ID:ZEr6aDFZ
括弧省略あるんですね 幻滅しました
誰が書いても似たようなコードになるPythonが至高だと思ってます
でもPythonのOOPってちょっと変なのが残念
実行速度遅いのも残念だし、型なし君なのも残念
Scalaこそが人類を救済の地に誘う神の導き手だと信じていたのに、幻滅しましたよ
2016/07/03(日) 13:38:56.80ID:T6bq1Tjn
>>433
そういうカッチリ書く系の人は Java と親和性が高いんだろうね
Scala は Ruby との親和性が高いから Ruby と比べられるんだろうね
2016/07/03(日) 13:47:02.08ID:ZEr6aDFZ
javaのOptionalが、Kotlinくらいにもっと手軽に使えたらよかったのに

英語ってさ、記号が少ないからどこに何があるか瞬時に判別しづらいんだよ
だから象形文字としての記号は、コードリーディングに置いて非常に重要だと思う

大して違いもない一時の書きやすさ(幻想)のために
おかしな省略記法があるのは本当によくないとおもう
Scalalintとか、標準コーディングスタイルとかで禁止にして然るべきだわ
2016/07/03(日) 13:48:37.64ID:jvF65JbL
Pythonの思想に共感する人はF#の方が合ってるよ
C#の実用性とML系の宣言性の高さを継承しつつ、
OCamlの使いづらさをPython風のシンタックスを取り入れることで改善した理想的な言語
2016/07/03(日) 13:53:59.17ID:T6bq1Tjn
>>435
そこはバランスだよねー
ひどすぎると APL になっちゃうし
2016/07/03(日) 14:19:19.21ID:ZEr6aDFZ
>>436
そうなんだ
でもF#使ってる案件なんて聞いたこともない
使えなきゃ結局ただのオナニーだよね

>>437
APLって初めて聞いた
ひでえ糞言語もあるんだな、サンキュー
2016/07/03(日) 14:22:34.99ID:ILiEBqRk
javaとscalaがクラス(optionalとoption)でkotlinが演算子(エルビス式)だっけ。
エルビス式も深くネストされたオブジェクト中に出てくるとなんか読みにくいんだよね。
慣れてないだけかもしれんけど。
2016/07/03(日) 14:34:47.72ID:ZEr6aDFZ
ここらで一つ最強言語が出てくれんかね

マルチパラダイム(OOP + 関数型)
記法はCベース
型あり
型推論あり
インデント強制
The Zen of Pythonベース

たったこれだけの簡単なことがなんでできないんだ?
Scala作った奴もJava作った奴もPython作った奴も
俺以下の無能なのか?
2016/07/03(日) 14:38:10.30ID:T6bq1Tjn
>>440
Python ってラムダがものすごい書きにくい印象なんだけど
Haskell もインデント強制ではないし、もしかしてインデント強制と関数型は相性が悪い?
2016/07/03(日) 14:47:39.98ID:ZEr6aDFZ
>>441
Pythonのラムダ糞だよね
中途半端なOOPも糞
普通list.lengthなのにlen(list)みたいな書き方できない

Pythonも結局の所糞なんだよ
どいつもこいつも糞だらけでイラつく
2016/07/03(日) 18:39:07.18ID:XXPwjW7o
>>442
その程度の知識で糞呼ばわりしている君も糞
2016/07/03(日) 19:14:48.98ID:ZEr6aDFZ
>>443
糞なもんは知識量に関係なく糞なんだよ、屑が
おまえもPHPみたいになりたいのか?
2016/07/03(日) 19:38:26.35ID:XXPwjW7o
>>444
落ち着け
意味不明だぞ
2016/07/03(日) 23:15:17.31ID:ZEr6aDFZ
>>445
俺はいつでも冷静だよ
君みたいに無意味なレスしてくる糞に対しては別だけどね
2016/07/05(火) 15:17:43.51ID:P+pVcrz7
お前もPHPにしてやろうか
2016/07/05(火) 20:09:37.71ID:a9hkGJry
頭の弱い子いじゃっちゃ駄目
2016/07/05(火) 22:49:22.90ID:jRJDfSwk
>>447
こわい、こわすぎる
2016/07/06(水) 10:32:39.91ID:gihp0uzt
msでもこんなのやってるぐらいだから、
https://azure.microsoft.com/ja-jp/documentation/articles/service-fabric-reliable-actors-introduction/

akkaでサービス周りでもいじってみては。
http://www.lightbend.com/activator/template/akka-http-microservice
https://tech.iheart.com/why-we-picked-akka-cluster-as-our-microservice-framework-bbf3019a3217
2016/07/06(水) 23:42:52.29ID:mxUXCuWS
MSってこういう新しいプログラミングモデル広めるの上手いよな
理論と実用性のバランス感覚が絶妙
2016/07/06(水) 23:52:34.70ID:qGJVKz7K
 三  ギ  そ  三            ,ィ/イ,r'" .i!li,il i、ミ',:;;;;
 三.  ャ  れ  三    ,. -‐==- 、, /!li/'/   l'' l', ',ヾ,ヽ;
 三  グ  は  三  ,,__-=ニ三三ニヾヽl!/,_ ,_i 、,,.ィ'=-、_ヾヾ
 三  で       三,. ‐ニ三=,==‐ ''' `‐゛j,ェツ''''ー=5r‐ォ、, ヽ
 三.   言  ひ  三  .,,__/      . ,' ン′    ̄
 三   っ  ょ  三   /           i l,
 三.  て   っ  三  ノ ..::.:... ,_  i    !  `´'      J
 三   る  と  三  iェァメ`'7rェ、,ー'    i }エ=、
  三   の   し  三 ノ "'    ̄     ! '';;;;;;;
  三   か  て  三. iヽ,_ン     J   l
  三  !?    三  !し=、 ヽ         i         ,.
2016/07/06(水) 23:58:36.82ID:+HpR73sf
・オブジェクト指向+関数型
・遅延ストリームと言語内DSLによるコレクション操作
・リアクティブプログラミング
プログラミングモデルについてはMSの影響力は実際大きいよ
尖ったものを大衆化する設計のセンスは評価されていい
2016/07/07(木) 00:00:56.51ID:hNsvcGxY
いぅーておめーF#の案件なんか聞いたことねーぞ
2016/07/08(金) 14:58:55.41ID:boUdIPMC
Scala と Java が共に jvm 上で動くように、C# と F# は cli ( .NET ) 上で動く兄弟言語で、
.NET 案件なら F# を使っている人もいそうだが 実体は闇

>>440 は C ベース記法を除けば F# が当てはまるな
The Zen of Python の解釈次第だが
2016/07/08(金) 20:34:15.16ID:k8qiMefn
ウェーイな連中ばかりのScalaと違って、
F#は金融系とかのお硬いシステムの込み入ったロジックを見通しよく記述するための言語だからな
あまり表に出てくるようなものではない
2016/07/08(金) 20:48:13.25ID:esdiiBum
インデント強制はいらないかな
2016/07/09(土) 00:07:39.61ID:2HQAmygx
>>440
じゃあ、自分で作ればいいじゃない。
>>440は俺以下の無能かな?
2016/07/09(土) 10:02:34.87ID:fotlBSyc
Scalaってノイズが多くて見通し悪い割には大事なところ省略してて理不尽なエラーが多いんだよな
JVMで動くML系言語の決定版があればScalaなんか完全に用済みなんだけど
2016/07/09(土) 10:41:12.43ID:70tfGxUK
>>459
具体的にどういう理不尽なエラーが起きたの?
461名無しさん@そうだ選挙に行こう! Go to vote!
垢版 |
2016/07/10(日) 19:19:55.81ID:htqwtIVV
そもそも省略ってなんだろ
暗黙の引数とか?
起こるのはコンパイルエラーだけど
2016/07/10(日) 20:07:15.04ID:vClNR34Z
トランスレータ系がトラブった時に不親切なのは必然
2016/07/13(水) 13:00:21.79ID:C7S+nyqs
インテッリジェーイデアの設定よくわからンゴ・・・
2016/07/14(木) 02:12:52.72ID:XeOsjsau
巣に帰って教えてもらいなさい
2016/07/15(金) 02:05:46.31ID:Koaa2yGE
akkaとfinagleどっちがタイプ?
2016/07/15(金) 07:37:39.62ID:sS/v2c9e
akkaちゃんかな
2016/07/22(金) 01:04:04.85ID:FwAbLbLj
総合的に考えて、やっぱScalaが最強言語ですよね?
2016/07/22(金) 01:15:18.93ID:JPruashr
カレーライスとラーメンと焼き肉を混合したら最強の料理だろうか?ということだな
2016/07/22(金) 01:31:51.67ID:FwAbLbLj
最強言語Scala
SPEED DEMON の C
Webならしょうがないからhtml/css/typescript
科学計算ならしょうがないからpython

以上。
他の言語全部要らんでしょ
なんか異論ある?
2016/07/22(金) 23:27:26.52ID:vT54bahR
ゲームは?組み込みは?
後お前がいらないって言われたがってる?
2016/07/26(火) 13:23:58.92ID:HpNSLC50
アスペルガー専用言語Scala
472デフォルトの名無しさん
垢版 |
2016/08/03(水) 21:01:40.97ID:R60S+MMN
2016年6月プログラミング言語ランキング
ttp://redmonk.com/sogrady/2016/07/20/language-rankings-6-16/
2016/08/03(水) 22:38:38.56ID:MksUbGAm
ペチパーまじで死ねよ
474デフォルトの名無しさん
垢版 |
2016/08/11(木) 01:27:02.21ID:8PcWlI1C
Scalaスケーラブルプログラミングの第3版でるみたい。
2016/08/11(木) 13:05:55.92ID:A0visMXY
>>474
ををぉいいですね。
2.12対応かなぁ
2016/08/11(木) 18:56:38.94ID:fWtdHshT
http://www.artima.com/shop/programming_in_scala_3ed
2.12ベースだね。
2016/08/12(金) 22:55:12.82ID:6MA5LqXO
和訳はよ
英語は読めンゴ
2016/08/13(土) 10:50:26.09ID:ElZ+6tgG
https://www.amazon.co.jp/gp/aw/d/4844381490/
9/20予定だそうだ
2016/08/13(土) 11:39:48.95ID:4qr6AZVG
いい加減電子書籍化しろや
重いんじゃボケ
2016/08/14(日) 11:50:49.17ID:8jqCcBeq
技術書ってえらく高いから僕みたいな低所得者は何冊も買えないんですよ
火を灯すべき爪ももうないです
2016/08/21(日) 01:21:05.20ID:j6B6Cd/k
Frege!Frege!
2016/08/21(日) 18:20:42.07ID:s9hu1dfL
図書館に入れてもらったら。
ただ、版が変わったからってあんまり入れてもらえないかも。

学生ならACMの学生会員になると、おそらく年間$19で
Safari, Books24x7で扱ってる英語書籍の一部が講読できるような気がする。
http://www.acm.org/membership/student/

カタログ
http://learning.acm.org/books/ebooks_catalog.cfm
オライリーのsafariで9月に入れ替わる予定のやつ
http://learning.acm.org/safariswap.cfm
2016/09/08(木) 00:20:33.37ID:DQ9TtYdj
南蛮毛唐の言葉なんてわかるわけないだろ・・・・・・・・・・
2016/09/08(木) 01:49:27.81ID:vx58Uxa1
こういうこと言う奴って
普段どうやって変数などの名づけしてるの?
2016/09/08(木) 02:40:36.27ID:O9Q2b1T3
google先生やweblio先生に単語を英訳してもらってる
2016/09/08(木) 07:36:44.09ID:DQ9TtYdj
クラス名や関数名や変数名は、全て連番で付ける
Excelに名前対応表を作って、それで管理する
面倒な翻訳も意味の通じない南蛮毛唐の言葉も必要ない、最も効率的な方法よ
2016/09/08(木) 09:20:54.68ID:vx58Uxa1
(つд⊂)ゴシゴシ→(;゚ Д゚) …!?
2016/09/08(木) 09:25:28.07ID:q+L7mUb+
変数やメソッドに日本語使えるだろ
2016/09/08(木) 22:07:35.46ID:DQ9TtYdj
>>488
それだと補完が効かないし
機能変更があった場合に名前の修正まで必要になる
本質的でないdiffはコミットしてはいけない
こんな常識も知らないのか?
2016/09/08(木) 22:21:32.55ID:X2CKIGTP
釣りにしては針がでかすぎて面白くないし、本気だとしたら病院直行レベルだし
2016/09/08(木) 23:52:07.32ID:2gFs3OWY
これコピペに丁度いいな
2016/09/09(金) 00:14:14.74ID:YLYNtIU0
staticおじさんと同じ感じがする
40代以上なのは確定
2016/09/09(金) 00:24:48.34ID:k/s80EQ+
static以外使うな、ラムダ使うな、変数名はエクセルで管理←new
2016/09/09(金) 00:25:08.27ID:k/s80EQ+
このスレIT速報の管理人いる?
2016/09/09(金) 05:13:47.70ID:EXJ63xav
変数名を連番でつけられるのは勘弁ですな
ネタであることを願いたい
2016/09/09(金) 08:51:16.73ID:On0Lg/Mj
>>486>>483に対する皮肉かと思ったら同一人物かよ…
そもそも機能に変更があったら変数名変えるだろ
それで頻繁に変数名の変更が入って困るようなら機能分割に失敗してる
2016/09/09(金) 21:02:04.05ID:k/s80EQ+
補助コンストラクタでval変数の初期化は出来ないのでしょうか?

Hoge(int i){
/*
処理
*/

//定数初期化
}

Hoge(int i,int j){
/*
処理
/*

//定数初期化
}

のような事をしたい場合どうすればいいですか
2016/09/09(金) 21:51:07.55ID:m6wVh0rp
>>497
もちょっと具体的に書いてくれないと何がしたいのか不明
2016/09/09(金) 22:11:36.07ID:k/s80EQ+
>>498
javaのソースで言うと

private final Foo foo;
private final Bar bar;
public Hoge(Foo foo,Bar bar){
  this.foo=foo;
  this.bar=bar;
}

public Hoge(){
  LocalDate date=LocalDate.now();
  this.foo=new Foo(date);
  this.bar=new Bar(date);
}

のような事をしたいです
2016/09/10(土) 01:07:15.93ID:+QFLkWhC
ScalaとPHPだったら、やっぱりPHPだよね?
2016/09/10(土) 02:21:31.44ID:+iWBBdqo
>>500
全然適用範囲が違うので、ケースバイケースだと思う
2016/09/10(土) 04:33:08.69ID:i/18gAHO
>>500
言語としての適用範囲が違うから、比べるのは難しいと思うよ
2016/09/10(土) 08:12:22.28ID:+QFLkWhC
PHPにすら劣る言語なのか・・・
2016/09/10(土) 09:21:55.27ID:dd89IFLr
いくら過疎ってるからってそんな馬鹿を装ってまで盛り上げようとしなくていいんだよ
2016/09/10(土) 09:59:00.71ID:+iWBBdqo
>>499
こんな感じかなぁ…

class Hoge(f: Option[Foo] = None, b: Option[Bar] = None) {
 val date = LocalDate.now
 val foo = f getOrElse { new Foo(date) }
 val bar = b getOrElse { new Bar(date) }
}
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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