1 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 22:40:17 ] The Scala Programming Language ttp://www.scala-lang.org/ チュートリアル日本語訳 ttp://homepage.mac.com/takashi_miyamoto/scala/ScalaTutorial.pdf どう書く?org Scala ttp://ja.doukaku.org/lang/scala/
752 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 00:15:33 ] >>737 Clojureは人口が少ないからね。scalaよりは。スレを作ってもarcスレみたいになりそう。 ircとgoogle groupをみてると盛りあがってるんだがね。 ScalaとClojureはライバル関係みたいだがなぁ。 ところでScalaでどのくらいの人口なの?
753 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 00:57:02 ] clojureやarcは「yet another my own Lisp」でしょ。 面白いところはあるけど、Scalaとは無縁。
754 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 01:08:45 ] >>753 調べた上でそういってるなら正しいが
755 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 01:15:14 ] 仮に調べてなくても正しいものは正しい。
756 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 01:18:06 ] >>755 それは率直にいうと頭が悪いな
757 名前:753 mailto:sage [2009/02/26(木) 01:28:37 ] >>753 が間違っていると思う人は根拠を言ってみれば? Scalaは静的な言語ですが、clojureやarcはそうではありません。 clojureなんて動的馬鹿といっていいような仕様です。 型システムや関数/メソッド呼び出しも全然違います。 OCaml辺りの方がずっとずっと近いです。 clojureやarcはLisp SchemeスレかARCスレがあるし、 ココで語る意味のある言語とは思えん。
758 名前:デフォルトの名無しさん [2009/03/02(月) 00:03:43 ] Lift 1.0が出たとか
759 名前:デフォルトの名無しさん [2009/03/02(月) 01:30:11 ] >>758 出ましたね。 APIドキュメントとか、Lyxで書いたドキュメントはいまいち整っていませんが・・
760 名前:デフォルトの名無しさん [2009/03/02(月) 01:34:09 ] Terracottaの中の人(Scala OTPの作者)が、QCon Londonで発表するスライドも SlideShareにupされています ttp://www.slideshare.net/jboner/pragmatic-real-world-scala-45-min-presentation
761 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 17:12:16 ] >>757 最近見かけたのは、 scala と clojureの共通点は java VM上の言語だってことだが それだけじゃなくて、並列処理のことが念頭にあるみたいなのね。だからその並列処理 の考えかたの違いもあって、どっちが。。。みたいなことが話題として出てきてる。 だから、無縁だと考えるのは視点の違いから来てるね。悪いけど>>757 は視野が狭いとしか 思えないね。言語の系統を語ってるだけなら無縁だからね。だから、言ってることはもっと もなことを言ってるし、そこでライバル関係だとは誰も言わないだろう。 もっとも、たまたま、>>737 で話題になって>>752 で答えたにすぎないし、 対立を煽ったり、>>752 や>>757 にあるように、他の言語をどこか馬鹿にするようなことも 言う気はないよ。
762 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 17:17:59 ] >>761 >>752 じゃなくて>>753 だね。 おまけとして、 japan.internet.com/column/developer/20090224/26.html でもみればいいよ。
763 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 20:26:57 ] > あるみたいなのね こういうの勘弁
764 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 23:00:48 ] マギー司郎の声でよめば大丈夫だ
765 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 22:53:35 ] ScalaはJava互換あるし、第一言語がJavaで、 Haskellもちょっとだけかじった俺なら余裕だろと思ったら、 Listのインスタンス化に2時間ハマったぞWWWWWWWW ArrayListをnewしようとちょっとずつ構文変えて頑張ってた健気な俺涙目WWWWWWWWW ていうか巷のブログ書いてるやつら、動くコード書いてくれよWWWW 断片だけじゃわからないからWWWWWWWWW コンパイルする身にもなれってのWWWWWWWWWWWWWW
766 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 10:41:55 ] マニュアル嫁
767 名前:デフォルトの名無しさん [2009/03/07(土) 11:25:33 ] Haskellかじったらリストのインスタンス化思い当たるんじゃん
768 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 12:09:38 ] >>765 ScalaByExample和訳 ttp://www29.atwiki.jp/tmiya/pages/23.html
769 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 18:28:12 ] リストのインスタンス化で2時間悩むとか、プログラム初心者ならともかく、どうかしてるだろ Scala Listでぐぐって出てくる最初のページにすら、やり方出てくるぞ。
770 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 19:07:59 ] こういうのを書きたかったんだ List<File> list = new ArrayList<File>(); で、ググってでてくるのかね?
771 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 20:28:23 ] ああ、すまん。Javaの方のListを作りたかったわけね。それなら、Listでぐぐっても 出てこないわ(それだと、ScalaのListが出てくるし)。調べるべきは、Listの作り方じゃなくて、 ScalaでのGenericsの使い方の方だったね。Scala Genericsでぐぐれば、色々出てくる。 var list = new ArrayList[File]
772 名前:デフォルトの名無しさん [2009/03/08(日) 11:33:00 ] コレクションは特別な理由がない限りScalaライブラリのを使ったほうがいいとおもうけどなあ。
773 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 16:32:46 ] 関数型言語について勉強中の者です。 関数型言語らしいプログラムの書き方ってどういうのを言うんでしょうか? 「リスト」を最初に作り、それに関数を適用して行くという形式で行くのが大事そうだ、というのは解りました。 ただ、これを読んでかえって解らなくなってしまいました。 刺激を求める技術者に捧げるScala講座---目次:ITpro 第7回 関数脳のつくり方 First Season ttp://itpro.nikkeibp.co.jp/article/COLUMN/20090224/325385/?ST=develop これを書いている人はなんか理解したようなのですが、読んでもちっとも解りません。 特に ttp://itpro.nikkeibp.co.jp/article/COLUMN/20090224/325385/?ST=develop&P=6 >しかし,オブジェクトの技術を使わず,純粋に手続きで考えてみたのですが,頭がパニックになりそうでした。 >最初のNode(XMLタグ)を取得して,その子要素をとってループをまわす。 >その子要素がDirの場合は,childでさらにその子要素をとってループを回す。 >Fileの場合は中身のファイル名を表示する。Dirの子要素にまたDirが含まれていたら,さらにchildを適用して…。 このあたり。 手続きだって再帰すればすぐだと思うのですが。 手続きって言った場合、再帰は含まないのでしょうか?
774 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 17:09:12 ] 駄文読まずに>>8 のチュートリアル翻訳版読めば?
775 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 20:05:13 ] >>773 その文章、体裁はともかく内容としては 人に何かを説明することを目的として書かれたという感じがしない。 自分の頭を自分なりに整理してみただけの感想文という感じ。
776 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 21:23:46 ] ScalaってJavaで作られた過去の遺産をそのまま使えるという点では素晴らしいけどさ Scala使うなら関数型の技法を習得必要があるじゃん だってScalaでJavaの書き方使うってんなら、Scala使う意味がないんだもん 大変残念だけど日本のほとんどのシステム開発の現場では採用されないだろうね 先鋭的な技術会社なら別だけど
777 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 21:25:52 ] >>776 > Scala使うなら関数型の技法を習得必要があるじゃん scalaを学べば十分
778 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 21:45:34 ] だからScalaを習得するってことは関数型言語を習得するってことと同義だろ? Scala使って関数型言語のメリットを利用しないってのは意味がない Javaだけ使ってればいいんだから 学習コスト高すぎってことだ
779 名前:デフォルトの名無しさん [2009/03/27(金) 22:01:50 ] リストを使うっていうよりは一般的に副作用を最小化する心がけを持つといいんじゃないかな。 そして副作用のないコレクションの代表選手がリストなのでリストはよくつかわれる。 その記事で何を手続き的として想定してるかはわかんないけど、同じ再帰を使うのでも、 たとえばツリー構造からある条件で抽出するときに、 「結果を格納する変更可能なコレクションを用意しておいて再帰しながらその入れ物に追加していく」だとかなり手続き的だけど、 「再帰呼び出ししながら戻り値であるリストの和集合をとっていく」だとちょっと関数的になる、みたいな。
780 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 22:02:30 ] scalaって関数型にしては癖が強いと思うよ。それはjavaを使った人向けに作られた 関数型言語でもあるからだよ。 日本で採用されるかどうかってのは、海外で普及して権威付けされるかどうかでしょ。 右に習えしか出来ないんだからね。先陣を切ってやるような多少?のリスクを背負っ て進めるようなところはないだろうから。まだ、ベンチャーが育つ土壌があるならば、 可能性はあると思うが、海外で普及したあとの2、3年まちってところではないかな。 並列プログラミングが重要さを増せば変わってくると思う。 学習コストは手続き型しか知らないような人にとってみれば未知への恐怖というコスト が高いと思うが、基本的なところは然程難しくないと思うよ。この手の事で保守的な ことを言って無理だと言う人って、一般的に融通が利かない人の傾向があるよ。そんな 人が多いんかなぁ。プログラマってひとたちは。。。
781 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 22:03:39 ] javaプログラマ向けの関数型言語になってるから学習コストはさほど高くないと思うんだが。
782 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 22:06:29 ] >>778 全然そうは思わない。ScalaはScala、関数型言語ではない。
783 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 22:13:56 ] >>780 >>782 Scalaと関数型言語の特性については無知だったようですまねぇ でもね、俺みたいな2次請け3次請けで働いてるプログラマってプログラマの多数派なわけじゃん そんな多数派の「現場」ではRubyすら使われる気配がないし、ましてや関数型言語なんて採用されるわけがない ってことを言いたかっただけなんだが
784 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 22:29:12 ] >>783 ごめん。言いすぎた。 言うようになかなか採用されないと思ってるよ。
785 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 22:35:34 ] Scalaは関数型言語ではなくて、 関数型言語の機能、特徴[も]兼ね備えている言語。 今では特に珍しいことではない。 www.scala-lang.org/node/25 Introducing Scala > It smoothly integrates features of object-oriented and functional languages www.scala-lang.org/node/1305#Func Learning Scala > If you come to Scala with a functional programming background > you will find most of the more advanced functional programming style familiar. www.scala-lang.org/node/959 Book "Programming Scala" > "Programming Scala" will show you the fundamentals of functional programming using Scala.
786 名前:デフォルトの名無しさん [2009/03/27(金) 22:41:01 ] ちょっと件のページのデータを踏襲した例を作ってみた。 まずこれは再帰を使ってるけど手続きっぽいでしょ。resultが順次更新されていくから。 import scala.xml._ import scala.collection.mutable._ val result = new ArrayBuffer[Node] def find1(node: Node)(pred: Node => Boolean): Unit = { if (pred(node)) result += node for (child <- node.child) find1(child)(pred) } find1(xml) { case <file>{_*}</file> => true; case _ => false } こうするとちょっと関数型っぽくなる。 def find2(node: Node)(pred: Node => Boolean): List[Node] = { if (pred(node)) List(node) else node.child.toList.map(find2(_)(pred)).flatten[Node] } val result = find2(xml) { case <file>{_*}</file> => true; case _ => false } find2は便利メソッドのflatMapを使ってこう書いても同じ。 def find3(node: Node)(pred: Node => Boolean): List[Node] = { if (pred(node)) List(node) else node.child.toList.flatMap(find3(_)(pred)) }
787 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 22:50:18 ] >>773 関数型言語の勉強なら「プログラミングの基礎」がいいよ。 www.amazon.co.jp/dp/4781911609/
788 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 23:01:52 ] Scalaは関数型の要素抜きのGood Javaで使っても結構いい線いけてるから、 なかなか関数型まで行き着かないんだよね。 同じJavaVMで動くといってもJavaと食い合う言語だなと思ったよ。 確かに関数型だけを学びたいならHaskellやML系の言語を先にやったほうが手っ取り早いかもしれない。
789 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 23:10:13 ] OCaml亜種のF#がC#や他の.NETグループの言語と組み合わせる前提の 設計になってるのと対比すると特徴的だな。
790 名前:デフォルトの名無しさん [2009/03/28(土) 09:22:03 ] jp.techcrunch.com/archives/20090326get-ready-for-java-on-appengine/ コンパイルしたScalaもつかえそう。
791 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 09:40:47 ] いや、当然APIが制限されてるって。 Python版がそうであるように。