<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Language" content="en" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<meta http-equiv="Last-Modified" content="Sun, 26 Dec 2010 16:30:19 GMT" />
<meta http-equiv="Cache-Control" content="no-cache" />
<meta name="author" content="Office Blackboard" />
<meta name="generator" content="Tokyo Promenade 0.9.18" />
<meta name="robots" content="index,follow" />
<link rel="start" href="/2010/promenade.cgi" type="text/html; charset=UTF-8" title="the top page" />
<link rel="help" href="/2010/promenade.cgi?name=tp-help-en&amp;adjust=front" title="the help page" />
<link rel="alternate" href="/recent.atom" type="application/atom+xml" title="Atom feed of recet articles" />
<!--
<link rel="alternate" href="/2010/promenade.cgi?format=atom&amp;act=timeline&amp;order=mdate" type="application/atom+xml" title="Atom feed by modification date" />
<link rel="alternate" href="/2010/promenade.cgi?format=atom&amp;act=timeline&amp;order=xdate" type="application/atom+xml" title="Atom feed by comment date" />
-->
<link rel="alternate" href="/2010/promenade.cgi?format=atom&amp;id=36" type="application/atom+xml" title="(Atom feed of this article)" />
<link rel="stylesheet" href="/2010/promenade.css" type="text/css" />
<title>blog.8-p.info: Scala の複雑さについて</title>
</head>
<body class="ua_generic env_generic">
<div id="frame" class="frame_normal">
<div id="main" class="view_single">

<div class="article" id="article36">
<h1 class="attr ah0"><a href="http://blog.8-p.info/2010/36-scala" class="name">Scala の複雑さについて</a> <img src='https://chart.googleapis.com/chart?chs=40x40&amp;chd=t:3.604105,2.679080&amp;cht=p&amp;chp=0.209440' alt='22:17' /></h1>

<div class="attr">
  Posted at 2010/09/14 22:17,
  Modified at 2010/09/16 22:05
  </div>

<div class="text">
<p>RubyKaigi で講演した ThoughtWorks のひとが <a href="http://www.atmarkit.co.jp/news/201009/13/spell.html">@IT の取材</a> に対して</p>
<blockquote>
<p>ScalaもClojureも非常に有望な言語だと思います。ただ、Scalaは機能が豊富すぎて、たくさんのゴミが詰まっているというのが個人的な印象ですね。</p>
</blockquote>
<p>といったというので、ちょっと <a href="http://togetter.com/li/50284">盛り上がっていた</a> みたい。Scala の複雑さについては先月あたり英語圏でも議論になっていたらしく、親玉 Martin Odersky が文章をかいていたので、それを紹介します。</p>
<h2 id="article36_1" class="ah1 topic">Which one is simpler ?</h2>
<p><a href="http://lamp.epfl.ch/~odersky/blogs/isscalacomplex.html">Simple or Complex</a> で Odersky は</p>
<ul>
<li>モールス信号器とスマートフォンはどちらがシンプルだろう。作るのは比較にならないけど、使う場合は人による。キーボードを打ったことがあって、電話をかけたことがあるなら、スマートフォンのほうがシンプルだろう。<ul>
<li>Scala はスマートフォンだ。中身は複雑だけど、使うぶんには、自由度もあり使いやすい。インドの高校生は Scala ベースの <a href="http://netbeans.dzone.com/learn-scala-with-kojo">Kojo</a> でプログラミングを学んでいる。</li>
</ul>
</li>
<li>この Playmobil のキットと、この LEGO とではどちらがシンプルだろう。部品の種類は Playmobil のほうが多いけど、組み合わせの種類は LEGO のほうが多い。<ul>
<li>Scala は LEGO だ。<a href="http://carlosqt.blogspot.com/2010/07/how-many-keywords-do-you-type-in-your.html">予約語の数</a> や文脈自由文法のサイズでは Scala はコンパクトだけど、Scala のあつかう概念は汎用かつ直交するので、組み合わせはいろいろある。</li>
</ul>
</li>
<li>この LEGO デュプロのキットと LEGO テクニックとではどっちがシンプルだろう。デュプロだね。でもこれで複雑なものをつくれっていわれたら、テクニックより大変なことになるよ。<ul>
<li>Scala はテクニックだ。表現力があり、外部ファイルなしに <a href="http://jonasboner.com/2008/10/06/real-world-scala-dependency-injection-di.html">DI</a> もできる。</li>
</ul>
</li>
</ul>
<p>と、3つの例をあげて説明し「シンプルさといってもいろいろな側面があり、しばしば、議論しているあいだでも別の意味で使われている」とむすんでいる。</p>
<p>日本語訳かつ要約なので話の流れや細かいところが抜けてるし、原文では &quot;The Playmobil kit&quot; と写真もそえられているので、リンクはたどってみてください。</p>
</div>
<div class="comments" id="article36_comments">
<div class="meta">2 comments</div>
<div class="comment" id="article36_c1">
<span class="owner">morita</span> :
<span class="text">Scala は周辺環境というか Java の遺産で複雑さの心象を強めている気がしますね。Scala の複雑さやパワフルさの根源にある問題という気もしますが。Java からみた (C の遺産をうけた) C++ の残念さのような...</span>
<span class="date">(2010/09/16 00:25)</span>
</div>
<div class="comment" id="article36_c2">
<span class="owner">kzys</span> :
<span class="text">たまにみかける Maven は XML 愛が満ちていたころの Java っぽくて苦手です。言語自体は Java 関係なく、マルチパラダイムゆえのパワフルさに、短くも書けるってパワフルさを欲張ったところが大きいのかなあと思ってます。</span>
<span class="date">(2010/09/16 21:25)</span>
</div>
<form method="post" action="/2010/promenade.cgi" class="riddleform">
<dl class="riddleformlist">
<dt>riddle for guest comment authorization:</dt>
<dd>
<span class="question">Where is the capital city of Japan?</span> ...
<input type="text" name="umridans" value="" size="12" />
<input type="submit" value="answer" />
<input type="hidden" name="id" value="36" />
</dd>
</dl>
</form>
</div>
</div>
</div>
<div id="about">
  <p>
    <a href="/">blog.8-p.info</a> は
    <a href="http://8-p.info/me/">加藤和良</a> の個人的なブログで、プログラミングのはなしが多めです。
  </p>
</div>
</div>
</body>
</html>
