2017/9/9(土) Scala関西Summit 2017での登壇資料です。

class: center, middle # 制約をロジックではなく<br/>型で表現する 渋谷Java 第十五回 2016/04/23 --- class: left, middle ## 自己紹介 * 中村 学(Nakamura Manabu) * [@gakuzzzz](https://twitter.com/gakuzzzz) * 株式会社 Tech to Value * Japan Scala Association --- class: center, middle # みなさん<br />テスト書いてますか? --- class: center, middle ## 僕はテスト書くのが<br/>あまり好きではありません。 --- class: middle # 型 > テスト 偉い人は言いました。 テストで示せるのはバグの存在であって、<br />バグの不在は証明できない。
@nakanishiyasuo Javaには無名クラスがあります。お暇があれば双方のバイトコードを逆コンパイルしてみてください。 結局バックエンドはJavaVMですから、JavaScriptに対するAltJSと同じで、皮を被せたところでやれること自体が変わるわけではないのです。
ScalaとJava 8に関する プレゼンテーション が、他の似た内容のものよりも多くリツイートされ、大変うれしく思います。だから、こうして皆さんにブログでも書いてお伝えすることにしました。ScalaとJavaとの違いと、それぞれの重要性についてお話しします。両者は相互にイノベーションしています。言語間でお互いに取り入れています。では、Javaが使える場合であっても、Scalaを学ぶ必要があるのでしょうか? もちろんです。より多くの言語を知れば知るほど、あなたはさらにプロフェッショナルになっていきます。 もし、ScalaエンジニアにScalaとJavaとの基本的な違いについて尋ねたとしても、おそらくその人はラムダ関数とトレイトに関する違いを全て言うことはないでしょう。代わりに次のような例を出すはずです。 public class Person { private String firstN
常に世界のどこかで誰かが、この世で一番のプログラミング言語は何かというトピックで投稿し、忘れ去られた言語のすばらしい一面や、新しい言語の有用性を主張しています。どうやら、その順番が私に回ってきたのかもしれません。そろそろ私も、プログラミング言語についての自分の考えを皆さんにお伝えしようと思います。 始めに少し言い訳をさせてください。30以上の言語で開発した経験があり、他の人が書いた多くのコードと悪戦苦闘をしてきた開発者でもない限り、「自分の意見には客観性がある」とはとても言えないと思います。そんなわけで、このトピックを取り上げる他の多くの人と同じように、私の意見も偏っています。多くの言語に精通した開発者がこの話題自体を不毛だと感じるのは、このせいかもしれませんね。 要約: すばらしい言語 早速、このブログ限定ということで、私が考える”すばらしい言語”を発表しましょう。 アセンブリ言語: マ
なぜScalaがバカ向けなのか。 ぼくの経験を元に、バカ向け言語と非バカ向け言語を比較しながら見て行きましょう 非バカ向け言語 C プログラマーとして最初に携わったのがC言語です。 それは以下のようなものでした。 何十ものファイルにまたがるグローバル変数 緻密な制御が必要であるにも関わらず、無秩序に取得/開放が行われているメモリー管理 このような複雑な構造を、ぼくのようなポケコン並の処理能力しか持たないバカに把握可能でしょうか。もちろん不可能です そこで、次のようなコーディングを心がけました。 グローバル変数を使わず、関数に引数を定義して渡す メモリーの取得/解放を同一ファイル内に限定する これで、メモリーや変数参照の影響範囲を限定し、ぼくのようなバカでも理解できるようになります。 ですが、わざわざそんな事をやらなくても全てを理解できるエリート様達は、 「なぜ引数で渡すんだ。グローバル変数
動的型付け vs 静的型漬けのアレでもんにょりしてたのをついったーに放出して会話してたらなんとなく自分なりの考えがまとまったので貼っておく。 ……(ファントムタイプとか型安全ビルダーパターンとかで、型レベルにロジックをエンコードした結果、ライブラリ利用者がテストを書くまでもなく適切にライブラリを利用できるようになる、という意味での「静的型でコンパイラは最強のテスティングフレームワーク」という視点があると思う)— 蒸発プログラマさん (@yuroyoro) 2013年3月11日 @yuroyoro 最初のメジャーなテスティングフレームワークがJUnitなので違和感を感じます。— ぎゃばんぱみゅぱみゅさん (@ledsun) 2013年3月11日 @ledsun メジャーかそうでないかで言われると反論しようがないですが、捉え方というか視点として、ビジネスロジックを型レベルにエンコードして、テス
ソフトウェア開発に Scala や Haskell、Erlang といった関数型言語を採用する企業が増えているそうだ (ITpro の記事より) 。 関数型プログラミング言語には「迅速に開発できる、バグを抑えやすい、アプリケーションの性能を向上させやすい」といった特徴があるとし、これらは新規のサービス開発に向いているという。「言語選定が競争力に直結」といった意見も記事には掲載されている。 これだけだといいことずくめのようにも聞こえるが、関数型言語は習得しにくく、ライブラリなども C/C++ や Java と比べるとまだ少ない。使いこなせるプログラマも少なく、関数型言語で大規模システムの設計を行えるエンジニアはまだ少ないのではないだろうか。関数型言語を使える人材はある程度スキルの高い人であり、そのために生産性が高いのではという疑問もある。今後日本で関数型言語の採用は進んでいくのだろうか?
みなさま、ご無沙汰しております。1ヶ月以上ぶりのブログ更新となりました。Python界の情弱こと山口です。 この度、拙訳の「Java開発者のための関数プログラミング」という書籍がオライリー・ジャパンより電子書籍(ePub)で出版される運びとなりました。原著者はProgramming Scala(日本語版「プログラミングScala」)のDean Wampler氏。 Java開発者のための関数プログラミングDean Wampler 著、山口能迪、株式会社トップスタジオ 訳 フォーマット ePub O'Reilly で詳細を見る Java開発者のための関数プログラミング - Google+ 本書は、無理をしてJavaで関数プログラミングで実装してがんばろう、という本ではありません。一部そういうところもあるかもしれませんが、そういう方向は目指していません。あくまで関数型と呼ばれるものにはどういう概
2012年07月02日01:43 カテゴリScala これからPlay Frameworkをはじめる人が読むリンク集 とりあえず動かしたい人が読むリンク集をメモ。 ・想定環境:Play frameworkのver2系をScalaでInteliJを使い開発したい人。 ・Play ver1系とver2系は別のものです。間違えてver1の資料を読まないようにしましょう。 ・(そもそもフレームワークとは何か勉強したい、という人は、)Rub on RailsとかCake PHPとか他のフレームワークを知らないときつい気がします。そっちを軽くやってから入るのも良さそう。 ・Play 2.0 ドキュメント · playframework-ja/Play20 Wiki とりあえずここを読みましょう。 ・初めての Play アプリケーション · playframework-ja/Play20 Wiki He
http://www.yamdas.org/column/technique/hatenablog.html なお、タイトルに PART I とあるが、このネーミングはメル・ブルックスの『珍説世界史 PART I』にちなんだもので、PART II 以降は存在しない。つまり、あなた(ソフトウェア企業)が絶対すべきでないことは、Joel Spolsky にとってこの文章に書かれることだけなのだ。それは何か? プログラムをスクラッチから書き直すことに決めることだ。 まぁ、そんなわけないんだけどね。 「最近のはてなの体たらくへの失望感に名前を付けたい」というだけの文章にマジレスするのも我ながらどうかと思うし、気持ちは分からなくもないんだが、最近は「はてブ」以外全く使ってない俺でも、長年お世話になってきたはてなに対してそれなりに愛着というものがあるわけで、ディスられるばかりの流れに少しばかり反抗を試
EclipseでScalaプログラミングを始めるための基礎知識:スケーラブルで関数型でオブジェクト指向なScala入門(1)(1/3 ページ) 人気の「Scala」を一から学ぼう 最近、私の周りでもScalaに関する話題が増えてきました。Twitterやブログ、技術系のニュースサイトでは毎日のようにScalaに関連する話を見かけます。 また、筆者が現在携わっているプロジェクトでも実際にScalaを用いて開発しています。いままではJavaで開発をすることが多かったのですが、それよりも簡潔で柔軟性のある記述が可能であり、Scalaでの開発は非常に生産性が高いと感じています。 本連載は、Scalaの特徴を紹介し、基本構文や関数、クラスなど、Scalaの基本的な機能について解説していきます。何らかのプログラミング言語を学んだことがあり、プログラミングの基本的なことが分かる人を対象としています。特に
_ 動的、静的 ただ、勘違いする人がいるわけだが、 for (int i = 0; i < 9999999999999999999; i++) { と書くとコンパイルエラーになるから、 for (long i = 0; i < 9999999999999999999; i++) { と書いてみたのは良いが、ある日を境に、<の右項が10の30乗になって、しょうがないから、BigDecimalにしたら++が使えなくなって、というようなしょうもない制約は、まったくもってよろしくない。 というのは、彼らの好きなお題目、コンパイラによってチェックがなされるからというやつが、コンパイラによって書き方を制限される/制約されるというネガティブな方向にしか働いていないからだ。 そんなどうでも良いところに制約があることはむしろ恥ずべきことだということを意識すべきだろう。
はじめに Ruby対Scala, 動的型付言語は使い物にならないという興味深いWeb記事を読みました。 はじめに断っておきますが、おいらは別にRubyが嫌いなわけではないですし、「動的型付言語は使い物にならない」と思っているわけではありません。 そもそもRubyや動的型付言語での大規模開発経験がないので、良し悪しを正当に評価できません。 ましてやScalaなんて文法すらまともに知らないので、Scalaバンザイ!なんて言えるわけもありません。 ただ、おいら自身も「Rubyとかで開発したらこんな問題が起きるかも〜」と想像していたことが、結構そのまま書かれていたのが印象的でした。 これまで中規模〜大規模なシステムはJavaやC#で開発してきたので、IDEやコンパイラの支援はたっぷり受けてきました。 Ruby on Railsで開発してみたい!という憧れはありますが、IDEの入力補完やリファクタリ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く