プログラミング言語 Scala 11冊目 [転載禁止]©2ch.net
レス数が900を超えています。1000を超えると表示できなくなるよ。
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の連載記事、各々で開かれた勉強会の資料などがあります。 >>800
KotlinはBetter Java、Scalaは関数型の機能充実で住み分けすれば何の問題もない 純粋に関数型として売り出すのはScalaには正直厳しいんじゃないかな
実用プログラミングにおける関数型の最大の売りはモナド遊びでも公開関数でもなくその宣言性の高さ
所詮は手続き型ベースの構文で、バリバリ宣言的プログラミングするにはロジックの見通しが悪すぎるよ >>802
Java VM上で動くという点はやはり大きいよ
ライブラリ不足で困ることはまずないからね >>803
Scalaではそもそも関数型のメリットを広く訴求することが難しいということだよ
既存の関数型マニアだけでは実用的なエコシステムを構築するには全く開発リソースが足りない
宣言性の問題は言語の本質的な素性の問題だからライブラリや新しい機能を追加すればよいというものでもないし 初めは宣言型で書いて次第に関数型へシフトしていけるのはScalaの強みじゃないかな
チームの習熟度に応じてプロダクトを発展させていけば
メンバーの技術力向上に繋がったりするよ
お金の余裕が無いとそうそうできないけど
関数型への理解は後の宣言型で組むコードにも役立つ知識だと思う はてぶの特集見たか?
あそこにKotlinが載るようになったんだぞ?
一度でもScalaなんか載ったことあったか?
そういうことだよ 関数型プログラミングについても(Scalaで満足しているのであればの話だが)そもそもKotlinでだいたい問題無いからな
大きな違いはimplicitが無いくらいじゃないの
それも一般的にはむしろ大きなメリットと捉えられるだろうし関数型に必要な機能というわけじゃない このスレでKotlinの話しだす人の目的がよくわからないな
俺はKotlinも大好きだよ せいぜい航海関数が使いやすけりゃそれで十分なんだよな
あとはヌル安全
関数型なんて大仰なこといって、これくらいしか使ってないだろ実際おまえらさんも
つーことは、さ、つまり、わかるよね? >>808
JVM最強決戦でScalaは負けて、Kotlinが勝った
話題にするには十分な理由だろう? >>810
でもなぜかKotlinを推す人間は糞ジャップとかいう汚い言葉を使ってるんだよな
糞ジャップはPerlかPHPしか使っちゃいけないはずなのにさ サーバーサイドならScala圧勝なのは変わらん
クライアントならKotlinの方が良いけど
似たようなものだから使い分けろ 勝った負けたってそんなに大事な視点なのかな?
本質を見誤っていると思うのだけど なにをもって勝ちと言ってるのかな?
これからAndroidではKotlinが主流なるからシェアで負けるってこと?
シェアが増えれば勝ちで勝ってるほうがいいならScalaはJavaやPHP等々に負けてるわけだからそっちやればいいのに >>813
じゃあ完全負確塵屑糞尿吐瀉物ペチプーでも使ってりゃええねん
>>811
使っちゃいけないなんて、僕は思わないな
でも、それくらいしか使いこなせないだろ、って連中は多いだろ
日本のIT(笑)なんて韓国以下、最近まで土食ってたイン土人にすら劣ってるし >>815
やっぱりこいつかって感じだね
もうこのスレでやたらKotlin推してる人間は疑ってかかった方がいいね こういうのが建設的な議論もせずに私怨で言語を貶して粘着し続けてるんだから2chは魔窟だわ
そりゃあ知識も逃げていくわけだよ 知識どころかユーザも逃げてしまったな
ああKotlin ぶっちゃけ、KotlinにはScalaみたいなスター性みたいのが感じられないんだよな
Scalaやってますって言われたらオオッってなるけど
Kotlinやってますって言われてもアッフーン程度じゃん
でもこれが初心者でもとっつきやすさに繋がっていいってことなのかな
わかるやつおらん? スター性って要するに習得難易度が高いって意味?
難易度に見合ったメリットとか独自性がないと簡素な言語に流れるのは当然だなあ
Scalaが爆発的な人気を得ることはないだろうなと思ってるが少数精鋭でいいとも思ってる >>822
書いてる俺カッケー感だよ
KotlinはなんかJavaがすっきりした程度だけど
Scalaだとウオオってなるじゃん >>823
早く追い越してくれ
動的型のゴミオモチャはPythonだけで十分だ
屁臭いペチプーも詐欺師ルビーも公害粗大ゴミのペェ〜ルも
全部要らん
書いてるやつほんとにマウスで殴り殺してやりたい >>825
ぜひやってくれ
そして社会から消えてくれ >>824
そうかなあ
implicitを使ったトリッキーなパターンを生産するたびにウェッってなるわ >>828
implicitはアドホック多相専用にしちゃえばそこまでウェッってならないよ アドホック多相という単語にウェッってなっちゃった僕はどうしたらいいですか? >>831
ファ!?
こんなんだからお前らはコトリンに負けたンゴよ! 1ヶ月間衰えぬことを知らない中学生の勃起チンポのようなコトリンと
1ヶ月ぶりにレスがついたと思ったら死にかけの爺の老害レスばかりのスカラ
どうしてこうなった その煽り癖コミットログに滲み出るからやめたほうがいいよ その煽りtwitterでやってれば
2chにScala使いなんてそもそも少ないんだから >>839
大規模案件に使われてて需要があるのか? Scalaを採用する企業の年収が高いという落ちでは 棒チャットのあれ、チャットのアレが日本語化して大変そうだな
せっかくゴミ屑のペチプァ捨ててScalaにしたのに
ペチプァのサゲマンっぷりはすごいな 大企業だから大規模案件を起こせて
社員の年収も高いって考えても
常識的におかしくないな それ半年以上前から言ってるよね
本当なのかな
てかもはや
早くするのが遅すぎたね
Kotlin・・・ KotlinがAndroid公式言語になってから
すっかりScalaの勢いが衰えたな 途中送信してしまった
https://scala.epfl.ch/
https://typelevel.org/
https://www.scala-exercises.org/
コンパイラ開発やマルチプラットフォーム、マルチスクリーン、プログラミングパラダイムにドキュメント整備
いろんな方向へ発展していてたまに覗くと面白い 現実を見てない空盛り上がり
そんなこと言ったらペェチプァだった盛り上がってますわ すまん。仕事でイライラして難癖つけるだけのレスしちまった。
無視してくれ。 Javaはうんざりしてるので違うことやりたいと思う人にKotlinより
Scalaの方が良い点はなんだろう。
自分はScalaからKotlinに引越中だけど…。 ちょっと基本的な質問。
val a = Array("a","b","c")
a(0) = "ABC"
val は更新不可だと思ったんだが、フツーに通ったんですよ。
こりゃいったいどういうことですかね。
ちょっと不思議でして。 コップ本第3版のp.061の真ん中あたりの説明だと思うんですが、
いまいちわかんないんですよね。
ポインタ的なアレすかね。 >>857
a は Array というコンテナを他の値に変更しちゃだめだと言ってるだけで、コンテナの中身を変更
しちゃだめだとは言ってないから
コンテナの中身も変更不可にするためには、変更不可コンテナを使わないとだめ あ、なるほど、変更不可コンテナがあるんですね。
ありがとうございます。
ちょっと別件で一個、ベテランの書き方を聞いていいですか。
具体的には、PaizaD006とかなんですが、文字sがkmの場合、mの場合とかで数値を適当に求めるパズルなんですが、
関数言語っぽく書くとどうなるんでしょうか。
var ans = 0L
if ( s == "km") {
ans = n * 1000 * 100 * 10
} else if ( s == "m" ) {
ans = n * 100 * 10
} else if ( s == "cm" ) {
ans = n * 10
}
println(ans)
動くは動くんですが、もっと関数型っぽい書き方があるのではないかと思いまして。 Paizaの問題を具体例出して答えるのはまずい気がする
パターンマッチングで調べるといいよ Project AmberのおかげでますますScalaちゃんが用済みになるね
やったね! Kotlinに負けGoに負けRustに負け、勝ってたはずのJavaにすら負け
檄遅低脳コンパイラと
オタクのマウンティングのための糞記号祭りで
何もかも失ってしまったね
後に残るはPHP並の負債のみ
悲しいなぁ PHPという糞の山にScalaとかいう糞を混ぜ込んだ究極糞大山のSlackのパ●リはどうなりましたか?(凍え) コンパイル速度はdottyさんが何とかしてくれんじゃなかったっけか sbtが蛇足だった
ScalaCheckはよかった(今もあるが) >>868
それ3年くらい前から言ってない?
ドッティはドコッティ? ドッティはドコッティ?
これは流行る
糞ペチプァにすら負けたドッティはドコッティ? 自分の発言に自分でウケてやがる
アルツ一歩手前の症状だな いつの間にかverupしてるな
そして全く話題にならんという JavaのObject ArrayをscalaのArrayに変換する方法を教えてください。
Arrayには数値が入っていますが、Object型だとscalaでの計算に使用できず困っています。
Javaとの相互運用は色々と癖がありますね……。 実体が java.lang.Integer[] な java.lang.Object[] を Array[Int] として扱いたいって意味なら
こんな感じでできる
val javaArray: Array[Object] = Array(new Integer(2), new Integer(3), new Integer(5))
val scalaArray: Array[Int] = javaArray.map(Int.unbox) >>884
返信ありがとうございました。目的はお察しの通りです。
下記のエラーで通らないようです。
missing argument list for method unbox in object Int
Unapplied methods are only converted to functions when a function type is expected.
java.lang.Objectなのは間違いないですが、java.lang.Integer[]かどうかの確認も厳しいです。
インタプリタの出力はObject = Array(数値1、数値2、……)という状況です。
Javaは型の確認や変換関係がドロドロですね……。
pythonやC#から比べると難易度高いです。 最後の2行みたいな事は火種にしかならないのに
どうして書いちゃうんだろうねえ >>887
3日ほど進捗なしで心が折れてます。
getClass()でclass [Dと出るのでArrayかつDoubleのobjectのようです。
APIにはjava.lang.Objectと書いてあるのですが。
何をやってもvalue ×× is not a member of Objectと出るので
死にたくなってきました……。 とりあえずこんな風に書いてみてObjectの実体が何なのか調べてみたら
val javaArray: Array[Object] = Array(new Integer(2), new Integer(3), new Integer(5))
val objectTypes = javaArray.map(_.getClass.getName).distinct.mkString(", ")
println(objectTypes) ひょっとしてこう書けば解決する話なんじゃないの
javaArray.map(Double.unbox)
それと『計算に使用できず困ってる』ってアバウトすぎてよくわからないよ >>889
ありがとうございます。
value map is not a member of Object
でエラーになります。
関数の元は下記です。
https://www.unidata.ucar.edu/software/netcdf/java/docs/ucar/netcdf/RemoteAccessorImpl_Stub.html#toArray(java.lang.Object,%20int[],%20int[])
1次元配列で戻すと書いてありますが……。 [Dはjava.lang.Double[]じゃなくてプリミティブ配列のdouble[]だよ
ScalaだとArray[Double]として変換なしでそのまま使える
まあわかりにくいよな… val obj: Object = accessor.toArray(arg0, arg1, arg2)
val array = obj match {
case double: Array[Double] => double
case _ => throw new InternalError()
} >>892
変身ありがとうございます。Object=Arrayとあるので
私も当初はそう思ったのですが、toListや配列を反転させるreverseすら通らないです。
error: value reverse is not a member of Object
下のサイトにあるような、object型配列ではないかと推測します。
https://ameblo.jp/gdgd-programmer/entry-12182237268.html あ、キャストはいるから>>893みたいにしてね
てか問題箇所のコード片貼ってもらった方が早いかな… >>893
返信ありがとうございます。
error: object java.lang.reflect.Array is not a value
とエラーが出るので、
今回の対象はjava.lang.reflect.Arrayに該当するのでしょうか。
調べてみます。 import java.lang.reflect.Array を消せ >>897=893
通りました!ObjectがArray[Double] に変わって
計算できるようになりました。
3日苦労したのが嘘のようです。
非常に助かります。ありがとうございました! Javaにかぶせたのが間違いだったな
LLVMにしとけばよかったのに scalaでforやwhileを使わずに、下記の計算をする方法、
あるいは行列用のライブラリってありますか?
1. ListやArrayの範囲指定(内容ではなく座標範囲)して抽出や計算
⇨位置指定して演算したい、画像や行列、ベクトルを想定
2. ListやArray同士の四則演算
⇨配列をベクトルや行列として取り扱いたい
pythonのnumpyやmatllab、Rのように、行列演算でscalaを使いたいと考えています。
何かお勧めがありましたらご教授いただけると嬉しいです。 レス数が900を超えています。1000を超えると表示できなくなるよ。