トップページ⇒tech
1001コメント329KB

プログラミング言語 Scala 7冊目

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2011/09/04(日) 20:07:34.70
The Scala Programming Language
ttp://www.scala-lang.org/

■リンク集
ttp://sites.google.com/site/scalatohoku/%E5%8B%89%E5%BC%B7%E4%BC%9A%E8%B3%87%E6%96%99

■前スレ
プログラミング言語 Scala 6冊目
ttp://hibari.2ch.net/test/read.cgi/tech/1307416864/

■Scalaの紹介文(さわり)
Scalaは簡潔かつ優雅で型安全な方法でよくあるプログラミングパターンを表現できるように
設計された汎用プログラミング言語です。
Scalaはオブジェクト指向と関数型言語の特徴をスムーズに統合しておりJavaやその他の言語を扱う
プログラマをより生産的にすることができます。(以下略)
ttp://www.scala-lang.org/node/25

■Scalaに関する書籍(英語)
ttp://www.scala-lang.org/node/959
リファレンスマニュアルや草稿のPDFなども充実しているのでそちらも参照してください。
日本語の資料には、チュートリアルの訳やIBM dW、IT Proの連載記事、各々で開かれた勉強会の資料などがあります。
0357デフォルトの名無しさん2011/10/22(土) 14:00:01.44
>>356


連載っていうか、もともとは月刊雑誌の一回だけの特集を、Webに乗せただけ。


日経ソフトウェアの2011年6月号  pp.78-79 が、
http://itpro.nikkeibp.co.jp/article/COLUMN/20111011/370488/
変数とクラスを学ぶ---Scalaの基本1

同じく pp.85-87が
http://itpro.nikkeibp.co.jp/article/COLUMN/20111011/370491/
Scalaプログラミングに欠かせない機能---Scalaの基本4


だから、最初から これで完結だよ。
0358デフォルトの名無しさん2011/10/24(月) 00:33:03.64
HaskellもOCamlも、定義したヴァリアントはデータ型の内部構造を
直接さらしてしまう、という欠点を持っているけど
Scalaではケースクラスにしつつ内部表現を隠蔽することも簡単にできるらしい

これってどういうこと?
0359デフォルトの名無しさん2011/10/24(月) 08:36:24.45
プライベートなメソッドを持てるかどうかって事?
なんかOCamlとかでもできそう。
0360デフォルトの名無しさん2011/10/24(月) 10:03:50.82
Haskellならデータ構築子をモジュール外に公開しないことで可能
内部と外部の境界がモジュールなので、クラスとかに比べたら少し大きい
0361デフォルトの名無しさん2011/10/24(月) 17:22:44.52
発想の基本がOOPの言語と発想の基本が関数型では違ってくるよ。
ありがたがってる土俵が関数型のプログラミングではあまりありがたみが
ないというのはよく有りそうだよ。
0362デフォルトの名無しさん2011/10/24(月) 17:53:53.25
関数型言語ではそもそもアクセスされて困るプロパティが作れないからなぁ。
0363デフォルトの名無しさん2011/10/24(月) 18:15:42.33
>>362
何を言っているのか理解できないので
くわしく教えて
0364デフォルトの名無しさん2011/10/24(月) 19:49:26.90
そもそも、関数型でOOP的なものが必要なところは限られてる。シミュレーション
をやるなら重宝するんだけど。でもScalaをやってる人のソースを見てるとやっぱり
関数型っぽくないというのかJavaの後継という使い方に見える。
関数型のスタイルでScalaをやってるブログなどがあったらぜひ見てみたいので
英語でもいいし教えてね。
0365デフォルトの名無しさん2011/10/24(月) 20:13:16.66
scalaz界隈をうろつけばいいじゃない(想像)
0366デフォルトの名無しさん2011/10/24(月) 23:01:42.68
なぜScalaモヒカンは他言語をdisるのか
それも詳しく知りもしないくせに
0367デフォルトの名無しさん2011/10/24(月) 23:11:28.45
>>366
いいじゃん別に
disらせとけば
なんか不利益でも被ってんの?
0368デフォルトの名無しさん2011/10/24(月) 23:20:17.71
不利益を被ってないなら黙ってろって?
どうせScalaをdisられたら顔真っ赤にして反論するくせにw
0369デフォルトの名無しさん2011/10/24(月) 23:31:42.66
うむ、disられたら顔真っ赤にしてキッチリ反論するのはいいと思うよ
2chの言語スレに来てグダグダいうよりはよっぽど
0370デフォルトの名無しさん2011/10/24(月) 23:41:40.60
>>358
ocamlのvariantもモジュールで隠蔽できるから、
たぶんそれ書いた人の勘違いじゃないか?
0371デフォルトの名無しさん2011/10/25(火) 00:42:22.72
sbtのtestの出力結果ってwinではカラー表示できないの?
0372 ◆CgacaMDhSQ 2011/10/25(火) 00:48:17.81
>>370
たぶん書いた本人です。
>>358はちょっと誤解で、元の発言は
http://twitter.com/#!/kmizu/status/128044795615653888
http://twitter.com/#!/kmizu/status/128045117264248832

これはこれでちょっとわかりにくいですけど、要はパターンマッチ使いたかったら
variantの内部構造さらさなきゃいけないけど、Scalaだとパターンマッチのために
内部構造さらさなくても良いよね、という話です。

Haskellだとviewパターン、F#ならActive Patternがあるので似たような事が比較的簡単に
できますが、少なくともOCamlではvariantの構造をさらさなければパターンマッチング
できない(モジュールにvariantの構造を隠蔽しちゃうと外からパターンマッチングはできない)と
認識しています。もし間違っていたら、文献へのポインタを教えていただけるとありがたいです。

>>364
>>365が挙げてるようにscalaz界隈の人(単なるマニア向けライブラリに見えますが、意外にこれ
使ってるScalaプロジェクトは多いです)はかなり関数型的なスタイルやってますし、sbtも
かなり関数型的なコードになってます。全体的に見て、関数型スタイルでScalaプログラミング
やってる人は以前に比べてかなり増えてる印象です(少なくとも海外は)。

あと、ブログでも、関数型的なスタイルでScalaやってるところは、たくさん見つけられるかと。
@djspiewak さんのブログとか、@jamesiry さんのブログとか、色々ヒットしますよ。
0373デフォルトの名無しさん2011/10/25(火) 00:58:38.49
actorでreplyするとAny型じゃん.
Int型の値に代入すると怒られるんだが,match文使わずにエレガントに
代入したい.
0374デフォルトの名無しさん2011/10/25(火) 07:44:36.51
>>372
variantの構造、で何を指してるのかがイマイチわからない
例があると良いと思う
0375デフォルトの名無しさん2011/10/25(火) 08:02:14.78
あ、良く読んでなかった。F#のActive Patternsねー
あれと同じことをOCamlでやるにはパターンガード使うしか無いけど、
それでパターンマッチできてるとは言わないわな
0376デフォルトの名無しさん2011/10/25(火) 08:14:15.47
個人的にはパターンって内容を取り出すのが目的だと思ってた
0377デフォルトの名無しさん2011/10/25(火) 08:20:26.47
Scalaは型ちゃんと書くから2nd order polymorphismが表現できてもよいと思うんだけど
(つまり、forall をいろんなところにつけれる)
例えば:
def foo(id : [A]. A => A) : Unit =
 id(id)(())
これが普通にできればMLやHaskellより明らかに強力と言えるのではないか。
0378デフォルトの名無しさん2011/10/25(火) 08:38:11.46
>>376
ですよねー
0379デフォルトの名無しさん2011/10/25(火) 08:46:09.53
多分この中のどれかにやりたいことがあるのでは?

(* データ型の隠蔽 *)
module type S1 = sig
  type r
  type s
  type t = Foo of r | Bar of s
end

(* コンストラクタの隠蔽 *)
module type S2 = sig
  type t = private Foo of int | Bar of string
end

(* 幽霊型 *)
module type S3 = sig
  type s = Foo | Bar
  type 'a t constraint 'a = s
end
0380デフォルトの名無しさん2011/10/25(火) 11:55:40.54
Camlp4使うしexperimental featureだけど一応こんなのあるみたいっすよ
http://martin.jambon.free.fr/mikmatch-manual.html#htoc10
0381デフォルトの名無しさん2011/10/25(火) 16:32:39.86
>>377
書いてみた
import scalaz.Forall
def foo(id : Forall[({ type X[A] = A => A })#X]) : Unit = id.apply(id.apply[Unit])(())
foo(new Forall[({ type X[A] = A => A })#X] { def apply[A] = identity })
0382デフォルトの名無しさん2011/10/25(火) 17:30:56.34
もうちょっと短く書けた
import scalaz.Forall
def foo(id : Forall[({ type X[A] = A => A })#X]) : Unit = id.apply(id[Unit])(())
foo(Forall[({ type X[A] = A => A })#X](_(identity)))
0383デフォルトの名無しさん2011/10/25(火) 18:57:12.81
>>372
ありがと いくつかのブログ漁ってみるよ。
0384デフォルトの名無しさん2011/10/25(火) 22:36:49.23
ファイル出力の標準的な方法ってありますか?
ファイル入力のSource.fromFileに対応するようなものです。

今はFileOutputStream〜PrintWriterといったJavaのAPIを使ってますが正直面倒です。
0385デフォルトの名無しさん2011/10/25(火) 22:50:02.40
jajava.nioで
0386デフォルトの名無しさん2011/10/27(木) 08:47:25.77
(Int)=>Intのような関数を引数に取るAPIを、Javaから呼ぶにはどうやって引数を渡せばよいの?
自力でFunction2にラップする?
そういうユーティリティが既にある?
0387デフォルトの名無しさん2011/10/27(木) 13:41:22.80
>>386
scala.Function1をimportして
new Function1<Integer,Integer>() { public Integer apply(Integer i) {...}}
とすればよいのではないか。
0388デフォルトの名無しさん2011/10/27(木) 13:56:12.49
>>386
ScalaのtraitはJavaのinterfaceになるから、具体メソッドはすべてつぶされてしまう(ヒドス)。
Function1はtraitなのでJavaから便利に使うためにabstract classにする。

==========scala============
abstract class Fun[-A,+B] extends Function1[A,B] {
override def andThen[T](g: (B) => T): (A) => T = this.andThen(g)
override def compose[T](g: (T) => A): (T) => B = this.compose(g)
override def toString(): String = this.toString()
}
0389デフォルトの名無しさん2011/10/27(木) 13:59:31.00
==========java=============
import scala.Function1;
import scala.Some;

public class Main {
public static void main(String[] _args) {
Fun<Integer,Integer> f = new Fun<Integer,Integer>() {
@Override
public Integer apply(Integer n) {
return n+1;
}
};
System.out.println(new Some(3).map(f));
}
}
03903862011/10/28(金) 08:38:52.69
>>387,388,389

さんきゅー!
基本は388&389の方針に従った。

scala側は

abstract class Func1[-A,+B] extends Function1[A,B]

で十分みたい。
andThen,compose,toStringは勝手に生成されたよ。

実装のあるtraitをabstract classでextendsしたら
その実装を引き継ぐコードが自動生成されるみたいだね。

(Int)=>Intの関数は、JavaではFunction1<Object,Object>に
見えるらしく、Java側はこんなコードになったけど、
まあ、我慢できる範囲かな。andThenもこのまま使えたよ!

| Func1<Object,Object> f = new Func1<Object,Object>() {
|  @Override public Object apply(Object v) {
|   return (Integer)v + 1;
|  }
| };

ありがと!
0391デフォルトの名無しさん2011/10/28(金) 11:37:21.63
play2.0ってeclipsify出来ないの?
0392デフォルトの名無しさん2011/10/28(金) 19:04:31.14
上でファイル出力の質問があったけど、実際みんなJavaのAPIでやってます?
Sourceはなぜこんな非対称な仕様なんだろう…
0393デフォルトの名無しさん2011/10/28(金) 20:59:19.04
俺はOutputStreamへの書き込みは次のようなusing関数を使うのがよいと思うのだが
どうだろう?
| def using[T](out : OutputStream)(f : Outputstream => T) : T = {
| try {
| val r = f(out)
| out.close()
| r
| } catch {
| e => out.close(); throw e
| }
| }
0394デフォルトの名無しさん2011/10/28(金) 21:01:17.45
def usingFile[T](fileName : String) = using[T](new FileOutputStream(filename))
0395デフォルトの名無しさん2011/10/28(金) 21:07:42.43
使い方
usingFile("foo.txt") {
 out =>
  val w = new PrintWriter(out)
  w.println("firstLine")
  w.println("secondLine")
}
0396デフォルトの名無しさん2011/10/28(金) 22:17:31.96
>>395
out => ってどこから使えるようになったの?
0397デフォルトの名無しさん2011/10/28(金) 22:43:58.48
>>396
仮引数だよ。

list.map { a => a+1 }

の a と一緒。
0398デフォルトの名無しさん2011/10/28(金) 22:47:46.22
PrintWriterもusingFileで作ってしまったら?
0399デフォルトの名無しさん2011/10/28(金) 22:49:50.13
か、か、かりひきすう?
それなに?まだよくわからん

引数と違うの?
0400デフォルトの名無しさん2011/10/28(金) 23:15:58.69
>>399

仮引数ってのは正確な物言いじゃあないかもしらんが、Java でも何でも一般的な概念でしょう。
0401デフォルトの名無しさん2011/10/28(金) 23:21:54.39
仮引数に束縛…とか、アリティが…とか、正直実用だけを考えるなら、用語を知る必要もない。
つか仮引数とかって基本情報とかに出てきたような過去の記憶が。
0402デフォルトの名無しさん2011/10/29(土) 08:05:34.67
>>396
関数を引数として渡すときに #Scala ではしばしば {}で囲って表現する。
someArray.foreach(x => save(x); println(x)) って書くよりも
someArray.foreach {
 x =>
  save(x)
  println(x)
}
って書いた方がDSLぽくてカッコいいでしょ。
0403デフォルトの名無しさん2011/10/29(土) 09:07:43.26
>>388

> Function1はtraitなのでJavaから便利に使うためにabstract classにする。
>
> ==========scala============
> abstract class Fun[-A,+B] extends Function1[A,B] {

その目的のためには、scala.runtime.AbstractFunction1が既に標準で用意されている也。
0404デフォルトの名無しさん2011/10/29(土) 09:24:30.22
>>396

気になってるのは out が前触れなしに出てきたからでしょ。
これってたとえば 「def add1(a: Int) = a + 1」 の add の直後に出てくる a つまり仮引数と一緒なんですよ。

で、もう最初に気になったあたりを見直すと、

def using[T](out : OutputStream)(f : Outputstream => T)

ってなってて、結果的に usingFile の 2 つめの引数の型は「Outputstream => T」になる。
これは「Outputstream を一つ引数にとり T を返す関数」を要求してることになるから、

(out: Outputstream) => hogehoge....

と書くところを

out => hogehoge...

と書けるわけ。
0405デフォルトの名無しさん2011/10/29(土) 13:54:53.12
>>404

def using[T](out : OutputStream)(f : Outputstream => T)
って表記されればわかった。

REPLってなんで定義した関数の型とか引数の情報も
詳しく出してくれないのですか?F#ならでるのですが
0406デフォルトの名無しさん2011/10/29(土) 23:47:25.13
>>405
え、嘘、出るだろ!?と思ってやってみたら出たけど、
どういう時に出ないの?
0407デフォルトの名無しさん2011/10/30(日) 02:18:06.25
今更かもしれませんが、これってどう思いますか?

SIP-12 - Uncluttering Scala's syntax for control structures.
http://docs.scala-lang.org/sips/pending/uncluttering-control.html
(なぜか過去のコメントが見られなくなってしまったようです)

個人的には、利点があまり感じられない上に、
ユーザ定義の制御構造との統一感が無くなるので、
賛成できないのですが。
0408デフォルトの名無しさん2011/10/30(日) 03:02:51.57
forのカッコは鬱陶しいと思ってたので歓迎
他はどっちでもいいかな
0409デフォルトの名無しさん2011/10/30(日) 09:40:42.29
>>407
#Scala がますます #Haskell や #OCaml みたいになるな。
しかしあまりJavaと離してしまうと、Javaユーザーが導入しづらくなり、
ポストJavaの立場がやばくなるのでは。scalaユーザが増えてほしい俺としては
ちょっと反対。
0410デフォルトの名無しさん2011/10/30(日) 09:51:31.15
>>409
その#は何?
0411デフォルトの名無しさん2011/10/30(日) 09:54:00.13
Twitterのつもりなのでは。
0412 ◆CgacaMDhSQ 2011/10/30(日) 10:23:03.80
>>409
個人的には、もっと早いタイミングで導入するのならアリだった。
シンタックスがよりJavaっぽくなくなってしまうことはそれほど問題じゃないと思う。
ただ、2.10のタイミングで、こういう、言語の表現力を上げるわけでもない「些細な」
構文的変更入れてしまうのは、反対というか遅すぎるな。

まだSIPの段階なんで入ると決まったわけじゃない。提案者が
Odersky先生ではあるけれど、まだpendingだし、MLで反対票が
多ければ入らない可能性も十分ある(2.8のときに、Seq -> Sequence
の名前変更が、反対が多くて断念したという実例とか)。

今は当時よりもScalaを実用で使ってるユーザが増えてるので、幅広く
意見集めれば反対票も出てくるのでは、と思う。
0413デフォルトの名無しさん2011/10/30(日) 11:10:07.78
>>412
Javaユーザが敬遠してしまう要因を増やすことになると思うがそれはよい?
JavaユーザがScalaへ移行することは重要ではないと言っている?
0414 ◆CgacaMDhSQ 2011/10/30(日) 11:51:43.42
>>413
最初の問いについては、元々Scalaの構文はJava互換でないので、>>407くらいの
変更が入ったところで、敬遠する要因が増えるかというとそんなに変わらないのでは、というのが自分の考え。

ただ、「2.10のタイミングで」これを入れるのは、Scalaへの移行を検討しているJavaユーザを遠ざける
要因になり得るので、反対(既存の構文がすぐに使えなくなるわけではないにせよ、
しばらく、旧構文と新構文を使ったコードの両方が出てきて、無用な混乱を招きそう)。

二つ目の問いについては、重要だと思っている。だからこそ、SIP 12に対しては反対。
なら行動起こせよ、と言われそうなので、説得力のある反論をまとめて、>>407のページに
コメントする事は検討中。
0415デフォルトの名無しさん2011/10/30(日) 12:20:19.45
>>413
お前も然るべきところで意見できるように精進しろよ^w^
0416デフォルトの名無しさん2011/10/30(日) 12:31:12.24
>>415 はい。勉強させていただきます。先生。
0417デフォルトの名無しさん2011/10/30(日) 13:17:07.97
しかしifにかっこがいるというのは最初の頃はしょっちゅう間違えたところなので、
できれば導入して欲しいな。
せっかく一引数関数のかっこを不要にしてるんだから。
0418デフォルトの名無しさん2011/10/30(日) 15:46:25.80
構文まで変えるなら2.10じゃなくて3.0にすればいいのでは
0419デフォルトの名無しさん2011/10/30(日) 16:42:09.31
省略できるもんはなんでも省略しようぜww
Javaなんて忘れて新しい秩序をつくるんだ
0420デフォルトの名無しさん2011/10/30(日) 16:45:16.71
Scalaが話題にのぼるようになってから、もう何年経つと思ってるんだ
未だにJavaで満足してる奴はもう切り捨て!いらね!
というわけで「Javaっぽさ」という視点はもうScalaには不要
0421デフォルトの名無しさん2011/10/30(日) 20:38:06.81
>>419
カッコは必ず書く派としては賛同できんな。
言語仕様として「できる」ようにする事には必ずしも反対ではないが、原則は書くべき。
0422デフォルトの名無しさん2011/10/30(日) 20:49:46.82
設定した通りにカッコとかを付けたり付けなかったりしてくれるコード整形ツールがあればいいと僕は思います!
0423デフォルトの名無しさん2011/10/30(日) 21:53:06.95
よく分からんが、

現在の
if (expression) expression else expression
という構文は廃止して
if expression then expression [else expression]
という構文になるってことか。


ただ、expression の外側に "( )" をつけてもそれはexpression だから、

if ( expression ) then expression [else expression]

はOKなんだよね?
つまり、then 必須になるってこと?
0424デフォルトの名無しさん2011/10/30(日) 22:23:50.38
これまでかっこが果たしていたセパレータとしての役割をthenが果たすようになるってこと
0425デフォルトの名無しさん2011/11/04(金) 10:06:39.96
Javaで書いていたswingの部品(たとえばJPanel)を
scala.swingのフレームに張り付けるなんてことは可能でしょうか?

scala.swingは薄いラッパーといわれているので、Javaとまぜて使えないかと期待してます。
0426デフォルトの名無しさん2011/11/05(土) 15:30:38.80
>>425
できるよー。scala.swingのコンポーネントには、peerというメソッドがあって、対応するSwingの
コンポーネントを取り出すことができる。

val panel : scala.swing.Panel = ...
val peer = panel.peer

みたいな感じで
0427デフォルトの名無しさん2011/11/05(土) 16:12:50.58
>>426
横からだけど便利だな〜
objectにしておいてくれたほうが良かった気がするけど。
何か理由があるのかな?
0428デフォルトの名無しさん2011/11/05(土) 21:19:41.59
>>426
ありがとうございます。

私のやりたかったこととは逆(scalaで書いていた部品をJavaに取り込む方法ですよね?)
ですが、便利そうです。

なお私のやりたかったことはwrapでできるということがわかりました。
0429デフォルトの名無しさん2011/11/07(月) 01:00:13.70
http://www.eclipse.org/Xtext/xtend/
もうScala不要じゃね?
0430デフォルトの名無しさん2011/11/07(月) 01:13:52.90
関数型としてじゃなくてBeyond javaとしては、そっちの方が筋いいかも
0431デフォルトの名無しさん2011/11/07(月) 03:15:48.89
genericsの型制約のシンタックスが好きじゃない
? extends とか読めない
Scalaのほうが良いと思う
0432デフォルトの名無しさん2011/11/07(月) 07:32:22.17
Scala終わったなぁ
0433デフォルトの名無しさん2011/11/07(月) 10:58:20.13
http://lambda-the-ultimate.org/node/4396
これぐらいしかnewsがないな。

xtext2.1リリースで、xtendもバージョンアップしたのかな?
http://www.infoq.com/jp/news/2011/06/xtext-20
0434デフォルトの名無しさん2011/11/08(火) 14:15:14.59
バイトコードじゃなくて、Javaコードを吐くというのが特徴?
0435デフォルトの名無しさん2011/11/08(火) 14:21:55.62
このクロージャの構文、リスト内包表記に喧嘩売ってる気が

val predicate = [ Person person | "Hans" == person.name ]
0436デフォルトの名無しさん2011/11/08(火) 17:42:24.87
どっちかというとSmalltalkのパクりじゃね?
0437デフォルトの名無しさん2011/11/08(火) 19:57:24.06
公式の右下に開発環境は何よ?ってミニアンケートがあるね。
もちろん皆 vimだよな?!
0438デフォルトの名無しさん2011/11/08(火) 23:03:23.17
IDEA1択
0439デフォルトの名無しさん2011/11/08(火) 23:05:28.63
sbtがあるから普通のテキストエディタでも問題ないね
0440デフォルトの名無しさん2011/11/09(水) 00:10:47.06
>>429

JetBrainsのKotlin といい、 ほとんど同じような言語開発する暇あったら、
Scala を手伝ってやれよ、って思ってしまう。

言語ばっかり乱立しても、共倒れするだろうに。
0441デフォルトの名無しさん2011/11/09(水) 00:19:08.57
xtendは、xtextのサンプルでもあるから、
JVM上のbetter javaのCeylonやKotlinとはちょっと意味合いが違うと思う。
0442デフォルトの名無しさん2011/11/09(水) 00:27:54.68
たしかにいくつ作るんだよとは思うが。
Javaのシンタックスシュガーに徹するんならJSRにのせたりしないのかね。
0443デフォルトの名無しさん2011/11/09(水) 00:59:45.83
別にいくら作ってもいいんだが、なぜみんなScalaとJavaの中間を目指すんだろう
仕様は日和っているわりに、これから実装しますとか実用性もない状態で、誰が使おうと思うのだろう
0444デフォルトの名無しさん2011/11/09(水) 03:11:09.07
えっ、気分でしょ?
0445デフォルトの名無しさん2011/11/09(水) 06:07:14.92
>>443
Scalaより単純で実用的と言ってるんだから、使える標準ライブラリとひとまとめにしてさっさと公開すればよいのにね
結局、現時点でScalaの方が基本インフラ整ってる分実用性が高いとか皮肉すぎる
0446デフォルトの名無しさん2011/11/09(水) 06:33:03.79
>>443
発想が「ぼくのかんがえた さいきょうの Better Java」だから、だろうねぇ。
0447デフォルトの名無しさん2011/11/09(水) 10:14:51.22
xtext,xbase,xtend 2.1 リリース
http://www.infoq.com/jp/news/2011/11/xtext21
scalaこれで実装したら遅くなるんだろうな
0448デフォルトの名無しさん2011/11/09(水) 23:00:13.38
Oderskyはバリバリ実装する人であると同時に優秀な理論屋なので、Scalaの仕様は
理想と現実の妥協点がよく考えられてるんだけど、後発のおいしい所取り狙ってる言語は、
なんかよくわからずにテキトーにScalaの一部分持ってきてるだけに見えるんだな
0449デフォルトの名無しさん2011/11/10(木) 00:58:45.17
最近更新されてないんだな。
あんまり学会発表しなくなった?
http://www.scala-lang.org/node/143
0450デフォルトの名無しさん2011/11/10(木) 01:10:23.66
http://ppl.stanford.edu/wiki/index.php/Publications
もしかして、こっちで少し指導してる?
並列とDSLだね。(C++テンプレート使った奴が何年か前かなり流行ってた。最近はHaskellとかも)
0451デフォルトの名無しさん2011/11/12(土) 05:41:40.07
#xtend って結局Javaと #Scala の中間的言語だから Java->Scalaの道が
よりなだらかになったと考えるべきじゃね。だから Scalarはむしろ
xtendを大歓迎すべきだと思う。そしてxtendに新しい機能が追加される
度に「あーそれ2年前にやったわー」と言っておけばよい。
問題はむしろJavaがいつまでも使われ続けること。
0452デフォルトの名無しさん2011/11/12(土) 06:33:46.17
JVMで動く言語、に限らずだけど、スクリプト系の言語みたいに一ファイルだけデプロイして置き換えるだけでOKって出来ないのが辛い
0453デフォルトの名無しさん2011/11/12(土) 06:43:17.48
>>452 まともなスクリプト言語開発者なら、デプロイする前に
単体テストしたりコミットしたりするだろ?それを考えると
そこまで大差ないと思うんだが。
0454デフォルトの名無しさん2011/11/12(土) 06:52:33.30
s/スクリプト言語開発者/スクリプト言語を使う開発者/
0455デフォルトの名無しさん2011/11/12(土) 12:52:56.77
xtendがあればScalaが不要になるんだよね?
0456デフォルトの名無しさん2011/11/12(土) 13:50:53.98
gitからhotデプロイ出来る仕組みにしてみるとか?
■ このスレッドは過去ログ倉庫に格納されています