タグ

ブックマーク / kmizu.hatenablog.com (10)

  • Scalaに関する誤解と事実を語る - kmizuの日記

    TL;DR 世間のScalaに関するイメージは、昔のままであることが多い 昔のままどころか、最初から間違ったイメージを持たれていることも多い 実際には、既に解決されている問題は多々あるし、改善に向かっていることも多い プロジェクト管理の問題を言語に押し付けているケースもある はじめに 自分が最初にScalaに触れたのが2005年(Scala 1からカウントした場合)、あるいは2007年(Scala 2以降からカウントした場合)と、Scalaとの付き合いも結構長くなってきましたが、その間に Typesafe社(現Lightbend社)の設立 実質標準ビルドツールとしてのsbtの確立 ライブラリのバイナリ後方互換性に関するポリシーの策定 公式ScalaイベントScala Daysのはじまり Play 2 Frameworkの登場 Scala Center発足 その他色々 がありました。この間、

    Scalaに関する誤解と事実を語る - kmizuの日記
    modal_soul
    modal_soul 2017/05/06
    ここまで明確な誤解 よりも、ただなんとなく”関数型だからダメ”って言ってる人 のほうが多いな、っていう印象。"Scalaは関数型だから、オブジェクト指向できない"って言われたことあるし。なんだかなぁって
  • TwitterはScalaを捨ててません(少なくとも現在は) - kmizuの日記

    なんだかTwitterの一部で www.utali.io の記事が話題になってるようですが、はっきり言って誤情報です(というか、何故そんな誤解をしたのか知りたいくらい)。根拠はいくつかありますが Twitterは最近(ここ数ヶ月)にScala CenterのAdvisory Boardにjoinしている 置換えたとされるFinagleのコミットが最近でも活発である そもそも引用元ツイートで一言も、Scalaを捨てたに相当する表現が見られない 1についてですが、Scala作者のMartin Odersky先生が Odersky先生も参戦してる。"For what it's worth Twitter just joined the Scala Center advisory board as a full member. Don't believe the FUD."— 水島宏太(ゆる糖質制

    TwitterはScalaを捨ててません(少なくとも現在は) - kmizuの日記
    modal_soul
    modal_soul 2017/03/23
    元ネタ記事読んで「捨ててねーじゃん、真に受けるやつとかいねーだろw」って思ってたけど「興味深い、これからはnode」みたいな人がいて、みんなタイトルしか読んでないんだなーって思った。誤りを訂正するのは難しい
  • Scalaの学習コストを下げるための心得 - kmizuの日記

    追記:Twitterで、「それって、言語マニアにしかできない技のような気が」という指摘を受けました。自分としては一般的に適用可能な話だと思っていますが、あるいは自分の感性が著しくずれているのかもしれません。その辺承知の上でお読みください。 Scalaは習得が難しい言語だ、とよく言われます。また、実際問題として、Scalaの言語仕様の全体はそれなりに複雑でもあります。しかし、それはたとえばJavaでも言語仕様の全体像を把握するのは難しい話であり、Scalaに限った話ではありません。にも関わらず、Scalaの習得が難しいとよく言われるのはプログラミング言語の学習モデルが誤っているからではないかと最近思うようになりました。そこで、Scala(や他の言語も含めて)のコストを下げるために必要な心得についてちょっと書いてみます。 Scalaはオブジェクト指向言語である これは、Scalaは関数型プログ

    Scalaの学習コストを下げるための心得 - kmizuの日記
    modal_soul
    modal_soul 2016/10/12
    前に、「Scalaz使ってないの?意味ないじゃん?君のコードからは関数型のニオイがしないなぁ」ってイミフなdisくったので、"Scalaはオブジェクト指向言語である"ってとこは強く主張しようと思ってる
  • Scala Days 2014にドワンゴ社のエンジニアとして参加して来ます - kmizuの日記

    Scala Days 2014(2014年6月16日〜2014年6月18日)に参加することは先日のエントリで書いた通りなのですが、今年は正式にドワンゴ社のエンジニアとして参加することになりました。ですので、一部の費用を除いて、必要経費のほとんどが会社から出ることになります。 今年はその分いつもより現地でのエンジニアとの議論や発表の視聴を初め、気合いを入れて行って来たいと思います。滞在記も書き溜めて、帰国後はドワンゴ社のエンジニアブログでScala Days 2014についてリポートする予定です。それなり以上の性能のカメラで写真も豊富に撮ってくる予定ですので、こうご期待! ○○をOdersky教授に聞いてきてもらいたい 発表者の○○さんにこんな質問をして来て欲しい といった希望もこのコメント欄で受け付けていますので、どうぞよろしくお願いします。 ドワンゴ社は、社内のプロジェクトの新規案件では

    Scala Days 2014にドワンゴ社のエンジニアとして参加して来ます - kmizuの日記
    modal_soul
    modal_soul 2014/06/16
    “本物のScalaエンジニア”というフレーズに畏怖を禁じ得ないgkbr
  • 初学者向けの Scala Tips (3) - 型に対するマッチより構造に対するマッチ - kmizuの日記

    皆さんご存知の通り、Scalaにはパターンマッチという機能があります。この機能、しばしば型に対するswitch-caseとして使われていることがあるようです。 たとえば、 sealed trait class Value case class Hoge(value: Int) extends Value case class Foo(value: String) extends Value case class Bar(value: List[String]) extends Value というコードがあったとき、しばしば value match { case hoge:Hoge => doHoge(hoge.value) case foo:Foo => doFoo(foo.value) case bar:Bar => doBar(bar.value) } のような形で使われることがありま

    初学者向けの Scala Tips (3) - 型に対するマッチより構造に対するマッチ - kmizuの日記
  • 初学者向けの Scala Tips (2) - nullからOptionへの変換 - kmizuの日記

    Scalaでnullを使っていいのは小学生までだよねー、というのは冗談ですが、Scala文化圏ではnullを使わないのが原則です(いくつか例外はありますが)。代わりに出てくるのがOption型です。しかし、Scalaでは困ったことにnullを返すJavaのメソッドを呼び出さなければいけない場面がたくさんあります。 たとえば、以下のようなコードを書かなければいけない場面にはしばしば遭遇します。 val javaMap: java.util.Map[String, String] = javaObject.getMapping() val value: String = javaMap.get(key) // 型注釈はあえて付けている if(value != null) { ... } else { ... } さて、ここで困るのが、javaMap.get(key)はkeyに対応する値が入って

    初学者向けの Scala Tips (2) - nullからOptionへの変換 - kmizuの日記
    modal_soul
    modal_soul 2014/05/09
    "汚物は消毒だー! "
  • Scala 2.11.0で標準ライブラリから分離されたライブラリのjarファイル - kmizuの日記

    今日のScala勉強会第124回 in 郷で話題に出てたことの備忘録。Scala 2.11で、scala.util.parsing.combinatorとscala.xml、scala.util.continuationsが標準のライブラリから分離されたのだが、これを今まで通りに使うにはどうすればいいのか。実は、分離されたライブラリの内、前者二つは以下に https://oss.sonatype.org/content/repositories/releases/org/scala-lang/modules/ continuationsは https://oss.sonatype.org/content/repositories/releases/org/scala-lang/plugins/ に入っているので、これらを今まで通りに使うにはsbtの設定ファイルに libraryDepen

    Scala 2.11.0で標準ライブラリから分離されたライブラリのjarファイル - kmizuの日記
  • 初学者向けの Scala Tips (1) - Option#map()を使おう - kmizuの日記

    唐突に始まったScala Tipsコーナー、初学者が陥りがちなScalaのコードパターンを例にして、より良い方法を解説していきます。第一回はOptionクラスのmap()メソッドを使おうというものです。知ってる人には今更ですが、Option#map(f)は、レシーバーの値がSome(v)の場合は、fにvを渡した結果のSome(f(v))が、Noneの場合はNoneが返ります。したがって、パターンマッチを使った以下のようなコードは val result = exp1 match { case Some(v1) => val vx = //expression using v1 Some(vx) case None => None } 常に以下のような形に書き換えることができます。 val result = exp1.map{v1 => val vx = //expression using

    初学者向けの Scala Tips (1) - Option#map()を使おう - kmizuの日記
  • kmizuの日記

    皆様、お久しぶりです。去る2月10日(土)、2月11日(日)に筑波大学情報科学類にて特別講義の講師をやってきました。といっても、私が全日担当したわけではなくOB一人が一コマを自分の得意分野について講義をするオムニバス形式のものです。 私はといえば去年やったのと同様、JavaScriptで抽象構文木を「手で」組み立てて解釈・実行するプログラミング言語Minisとその処理系を作るという講義を行いました。講義当日はスライドにミスがあることに途中で気づいたり色々あってテンパりましたがそれはそれとして。 元々、私が担当した「プログラミング言語作成概論」の趣旨は プログラミング言語を作るというのはとても簡単な作業なのに、プログラマにすらあまり知られていないのはけしからん。 とはいえ、実際に作ってみせないと実感が湧かないのが人情。 抽象構文木をJavaScript上で組み立てて、それをevalする関数を

    kmizuの日記
  • Scala変態技法最速マスター - kmizuの日記

    Java変態文法最速マスターなんてのがかなりブクマされてるみたいだが、変態さならJavaなんてScalaの足元にも及ばないぜ!!ということで、Scala版を書いてみました。しかし、実はあまり変態ではないかもしれません。元ネタと違って、これを読めば何かがわかる、という意味の実用性はあまり無いでしょう。 implicit conversion編 基 Scalaのimplicit conversionは使いようによってはScalaの強力な型システムを台無しにしてしまう力を持っています。たとえば、 implicit def string2int(x: String): Int = Integer.parseInt(x) というimplicit conversionを定義してやると、"300" / 3が100になるなどというキモい挙動を実現することができます。また、さらにカスタマイズして、16進数

    Scala変態技法最速マスター - kmizuの日記
  • 1