Developers Summit 2014 「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」
Indroduction Xtend, Extending Java, Statically typed, Closure, Extension method
独習 Scalaz これまでいくつのプログラミング言語が羊の衣を着た Lisp に喩えられただろうか? Java は馴染み親しんだ C++ のような文法に GC を持ち込んだ。それまで他にも GC を載せた言語はあったけども、現実的に C++ の代替となりうる言語に GC が載ったことは 1996年には画期的に思われた。やがて時は経ち、人々は自分でメモリ管理をしないことに慣れていった。JavaScript と Ruby の両言語もその第一級関数 (first-class function) やブロック構文を持つことから羊の衣を着た Lisp と呼ばれたことがある。S式の同図像性がマクロに適することから Lisp系の言語はまだ面白いと思う。 近年の言語はもう少し新しい関数型言語から概念を借りるようになってきた。型推論やパターンマッチングは ML にさかのぼることができると思う。時が経てば、人
なぜScalaがバカ向けなのか。 ぼくの経験を元に、バカ向け言語と非バカ向け言語を比較しながら見て行きましょう 非バカ向け言語 C プログラマーとして最初に携わったのがC言語です。 それは以下のようなものでした。 何十ものファイルにまたがるグローバル変数 緻密な制御が必要であるにも関わらず、無秩序に取得/開放が行われているメモリー管理 このような複雑な構造を、ぼくのようなポケコン並の処理能力しか持たないバカに把握可能でしょうか。もちろん不可能です そこで、次のようなコーディングを心がけました。 グローバル変数を使わず、関数に引数を定義して渡す メモリーの取得/解放を同一ファイル内に限定する これで、メモリーや変数参照の影響範囲を限定し、ぼくのようなバカでも理解できるようになります。 ですが、わざわざそんな事をやらなくても全てを理解できるエリート様達は、 「なぜ引数で渡すんだ。グローバル変数
はじめに 関数型といえばモナド、モナドといえば難しいという事が巷で言われていますが、いきなりモナドを理解しようとするから難しく思えるだけで、圏論から順序を追って理解していけば全然難しく無いんだよって事を分かって貰えればいいなぁと思い書いて見ることにしました。 ただ、圏論といっても適用範囲がとっても広く、応用編になると分けわかんなくなってくるので、ここではプログラミング分野に特化したFP(functional programing)圏論*1について書きます。 また、説明を簡単にする為に細かい部分をいろいろ省略しています。学術的な定義としては正確ではないので、このエントリの説明は大体合ってる位の気持ちで読んでくださいね。 尚、ぼくは圏論の詳しい事はさっぱり分からないので、学問的な話を振られても回答できませんキリッ 圏ってなんなの? 圏論と言えば、圏です。 圏って何なのかというと、対象(obje
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
Scalaプログラミングで知っておきたい基本構文まとめ:スケーラブルで関数型でオブジェクト指向なScala入門(2)(1/2 ページ) REPLを使ってScalaの文法を覚えよう 前回の連載第1回記事「EclipseでScalaプログラミングを始めるための基礎」では、Scalaの特徴についての解説から始まり、Scalaのインストール、そしてScalaプログラムを記述してREPLとScala IDE for Eclipse(以下、Scala IDE)での動作を確認してみました。Scalaプログラミングを始めるための準備ができたので、いよいよ今回からScalaの文法について紹介します。 第1回記事では、Scala標準のREPLとScala IDEで動作を確認してみました。今後本記事のサンプルコードは、どちらで確認しても問題はありませんが、対話的に実行でき、1文ごとにコードの結果が分かって便利な
Martin Oderskyによる 関数型かつオブジェクト指向プログラミング言語 Java 1.1–1.4コンパイラの開発者 Pizzaの開発者 (Philip Wadlerと共同) オープンソース 活発に開発が行われている 応用 Twitterの分散DBフレームワークGizzardはScalaで記述されている Foursquare, Tumblr, LinkedIn, Amazon, VMware, はてな, ドワンゴなどでも利用されている WebアプリケーションフレームワークとしてPlayなどがある プログラミング言語別年収ランキング 2017年は1位, 2018年は2位 言語の特徴 関数型プログラミング言語とオブジェクト指向プログラミング言語の融合 強力な型推論 高階関数 Immutable Collections 並行計算 Java言語もJava 8から,関数型プログラミングの特徴
Effective Scala Marius Eriksen, Twitter Inc. marius@twitter.com (@marius) [translated by Yuta Okamoto (@okapies) and Satoshi Kobayashi (@scova0731)] Table of Contents 序章 書式: ホワイトスペース, 命名, インポート, 中カッコ, パターンマッチ, コメント 型とジェネリクス: 戻り型アノテーション, 変位, 型エイリアス, 暗黙 コレクション: 階層, 使う, スタイル, 性能, Java コレクション 並行性: Future, コレクション 制御構造: 再帰, Return, forループと内包, require と assert 関数型プログラミング: 代数的データ型としてのケースクラス, Option, パターンマ
PHP5.4にはトレイトという文法が導入されて、多重継承の便利さが享受できるようになるそうです。 いろいろ試してみることにしました。 トレイトといえば代表選手はScalaですね。Scalaでいうトレイトは、インターフェースの定義とメソッドの実装を同時にやってくれる便利な概念でした。単一継承のOOP言語では「〜は〜の一種」という制約が強すぎて、「ペンギンは鳥の飛行メソッドによって飛行できてしまう」という問題があります。でもちゃんと「ペンギンは飛べないが泳げる鳥」を綺麗に解決する必要はあって、その解答として、トレイトのあるScalaではこんな解が導けます。 abstract class Animal abstract class Bird extends Animal { def hasBeak = true // 鳥にはかならずクチバシがある def hasWings = true // 翼
こんにちは初めましてー。2011年度新卒の田中です。 12月から急に寒くなってきましたね。 11月が暖かかったからといって油断していませんか? 私は完全に油断していました。まだ冬服を買っていません。 さて、まだ暖かかった11月、ドワンゴでScala勉強会という熱いイベントがありました。 私は最近Scalaを勉強し始めたのですが、この勉強会で、Scalaの魅力的な機能をたくさん知ることができました。 今回はScala勉強会から持ち帰った情報や今まで私が勉強してきたことを元に、Scalaのどこが魅力的なのかを記事をしていこうと思います。 それではよろしくお願いいたします。 対象読者 Javaを書いたことがある方 Scalaを知りたい方 Scalaを始めたばかりの方 Scala? ドワンゴはエンジニア同士の技術交流が盛んな会社で、プログラミング言語を中心に日々、情報交換、議論が行われています。
この記事はScala Advent Calendar jp 2011 - PARTAKEの19日目の記事です。 概要 Scalaのリストと関数型っぽい操作について説明します。 一通りリストについて説明をした後、通常のリストとちょっと違った「Snocリスト」を作ってみます。 Listについて Scalaのリストは連結リストです。どういうことかというと、 通常の配列はこんな感じです。 配列は、 連続したメモリ空間を占有している ランダムアクセス(番地指定でのアクセス)が定数時間で可能 サイズを拡大する場合、最悪全体が作り直しになる という特徴があります。これに対してScalaのリストは、 ひとつ前の要素へのポインタでつながっている 空リストを示すオブジェクト(Nil)がある ランダムアクセスできない 一番前の要素の挿入、削除が定数時間で可能 といった特徴があります。 実際のところリストは単純な
1から10までのランダムな数をつくるのはどうやるんだろう。 Scala Standard Library 2.12.8 - scala.util.Randomを見てみたが、おおむねjava.util.Randomとおなじか? scala> import scala.util.Random import scala.util.Random scala> val r = new Random r: scala.util.Random = scala.util.Random@5f04eb scala> r.nextInt res173: Int = -49067135 scala> r.nextInt(10) res175: Int = 4 scala> r.nextInt(10) + 1 res176: Int = 1 ランダムな数字のリストがほしい scala> r.shuffle((1 t
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く