タグ

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

  • Qiita記事「エンジニアの"有害な振る舞い"への対処法」への強烈な違和感 - kmizuの日記

    最近、Qiitaで話題になってそこそこバズった(?)記事に、 qiita.com がありました。これ、最初は一読して凄いまともなことばかり書いているように見えましたが、一方で何か妙な違和感がありました。それは、私がいくつかの振る舞いについて思い当たりがあるせいではないか?と考えてみましたが、反省するところがあるなと思いつつも、何かが変だと感じていました。今朝、違和感の理由がわかった気がするので、書いておきたいと思います。 一番大きな問題は、「有害な振る舞い」といいながら、客観的に観察できる行為ではなく、主観的に行為の意図を勘繰っていることです。 そもそも、著者様は 私個人の経験に基づくため定性的かつ主観的な意見にはなりますが、メガベンチャーにて8年間様々なチームメンバと開発業務に携わりながらスクラム開発の各役割を1年ずつ、それからミドルマネージャーを2年経験し、さ> らに周辺チームや他部署

    Qiita記事「エンジニアの"有害な振る舞い"への対処法」への強烈な違和感 - kmizuの日記
    tsimo
    tsimo 2022/01/15
  • 今までの事に関する反省とか色々 - kmizuの日記

    このエントリをあえて書こうと思ったきっかけなんですが、先日の、とあるQiita記事です。この中で、 もちろん全員ではなくいい人もいるが、一部の人がKotlinGoをディスっていて、かつその人が日Scalaの第一人者的存在のため 誰も咎めることができず感じ悪い印象を与えることがあった。 と名指しで(訂正されて過去形になっていますが、読んだ時点では、現在形でした)中傷されたことがきっかけでした。というのは、この条件に当てはまる人は日で私以外存在しないわけなので。 で、何が中傷かというと、日Scalaの第一人者的存在のため誰も咎めることができずという辺りです。KotlinGoをディスっていたのは事実なんでいいんですが、自分が偉い人だから誰も注意できなかった、みたいな物言いは端的に事実に反しますし、私を諭してくれた方々にも失礼なことです。 ただ、それは中傷ということで自分の中では決着

    今までの事に関する反省とか色々 - kmizuの日記
    tsimo
    tsimo 2020/02/06
  • Re: Go にジェネリクスがなくても構わない人たちに対する批判について - kmizuの日記

    先日自分がGoについてつぶやいたものが、id:methaneさんに捕捉されていて、それに対する反論記事 methane.hatenablog.jp があがっていたので、それに対する所感を書いてみました。(2017/09/22 追記):cocoatomoさんから指摘があったのですが、引用元は全て id:methane さんの、上記ブログエントリの文章です。雑多な感想に関して反応しているものではないです。 前置き Goや言語批判に関するスタンスを誤解されると嬉しくないので、最初に書いておきます。 Goの言語仕様はあまり好きではないけど、Goユーザーを見下したり、馬鹿だとかそういう風には思っていない 言語仕様批判とユーザー批判は別の話ですが、しばしばいっしょくたにされて、糞言語Xを使うユーザは糞だ、みたいな主張がされることがあるので、 そういう意図はないという表明です。 Goユーザーの中で、ジェ

    Re: Go にジェネリクスがなくても構わない人たちに対する批判について - kmizuの日記
    tsimo
    tsimo 2017/09/21
    トレードオフで妥協してる点を取り上げてダメ出しするの、アンフェアやと思うけどな。Scalaのコンパイル時間に外野がケチつけるようなもんでしょ。
  • Scalaでimplicits呼ぶなキャンペーン - kmizuの日記

    はじめのはじめに implicitsは可読性が…という人が居たら、この記事へのリンクを教えてあげていただければと思います TL;DR Scalaには俗に「implicits」と呼ばれる機能がある 実際にはそれらは3つの機能をまとめて指す用語である それぞれの機能は全く異なる 暗黙の型変換は現代では無視してよし 拡張メソッドは、既存の言語でそれを持つのと同じ程度の簡単さである 型クラスとしての用法は、型クラスがある言語を知らないとやや難しいが、積極的に使う価値がある機能である 「implicits」は異なる3つの機能を一つにまとめた呼び方に過ぎず混乱を招くので、使うのをやめよう(個々の機能名で呼ぼう)。また、暗黙の型変換は無視して良いし、拡張メソッドはよく知られているので、型クラスとしての用法にフォーカスして良い はじめに Scalaには俗にimplicitsと呼ばれる機能(群)があります。

    Scalaでimplicits呼ぶなキャンペーン - kmizuの日記
    tsimo
    tsimo 2017/05/19
  • PEG基礎文法最速マスター - kmizuの日記

    Scala基礎文法最速マスターを書こうか迷っていたら、既にyuroyoroさんに書かれてしまったので、ちょっと違う方向で。BNFを既に知っている人は、これを読めばPEGの基礎をマスターしてPEGを書くことができるようになるでしょう(ほんとか?)。 基 Parsing Expression Grammar(PEG)はBNFに似ているけど、ちょっと(かなり?)違う文法の表記法です。BNFはその文法がどのような言語を表現しているかを定めるのに対して、PEGは入力がどのように解析されるかを定めます。PEGとBNFの一番大きな違いは、PEGには曖昧さが無いことです。たとえば、プログラミング言語のif文を表現する次の擬似BNFには曖昧さがあります。 statement ::= if_statement | ...; if_statement ::= IF LPAREN expr RPAREN sta

    PEG基礎文法最速マスター - kmizuの日記
    tsimo
    tsimo 2017/01/04
  • ScalaとKotlin(と昔のJava)のジェネリクスが壊れている理由 - kmizuの日記

    表題の通りです。とりあえず、Kotlin版とScala版のコード貼ります。 gist.github.com gist.github.com これらのコードでは、両方とも明示的なダウンキャストやその他の抜け穴を使っていないので、実行しても決してClassCastExceptionが起きてはいけないのですが、実際に実行するとClassCastExceptionが起きてしまいます。 さて、これはコンパイラの実装のバグでもあり、言語仕様のバグでもあるのですが、ちょっと理由を説明してみたいと思います。 class B extends A with Comparable[B] { def compareTo(b: B): Int = 0 } 上記のコードをコンパイルすると、下記のコードが生成されます。ここで、int compareTo(java.lang.Object)というメソッドが 定義されている

    ScalaとKotlin(と昔のJava)のジェネリクスが壊れている理由 - kmizuの日記
    tsimo
    tsimo 2016/09/05
  • Scala Nativeを動かしてみた(1) - kmizuの日記

    Scala Nativeはscalaのコードを(LLVMのIRを経由して)ネイティブコードにコンパイルするAOTコンパイラ(Ahead Of Time Compiler)です。その存在については、少し前にサイトができていたことで一部で話題になっていましたが、Scala Days 2016 NYCにて正式に公開されました。現在はPre-Release段階ですが、既にサンプルコードを試せるようになっていたので、環境を構築してみました(on Mac OS)。 scala-nativeのリポジトリをcloneする $ git clone git@github.com:scala-native/scala-native.git --recursive git submoduleとしてscala/scalaを持っているので、--recursiveを付けるのを忘れないようにしましょう。 llvm(cla

    Scala Nativeを動かしてみた(1) - kmizuの日記
    tsimo
    tsimo 2016/05/13
  • あなたの知らないKotlinのsmart cast(known as Flow-Sensitive Type) - kmizuの日記

    皆さん、Kotlin触っていますか?Kotlinかわいいですよね、Kotlin(どの口がそんなことを言うかって感じですが)。Kotlinにはsmart castという機能があり、安全なキャストができます、というのは不正確で、KotlinはFlow-Sensitive Typeと呼ばれる型システムを持っています。おおざっぱに言えば、制御フローによってある変数や式の型が変わる型システムの総称(だと思います。間違ってたらご指摘願います)Kotlinではそれをsmart cast(と公式ドキュメントには書いてある)と呼んでいるという話のようです。 公式ドキュメントにある例からいくつか引用します: fun demo(x: Any) { if (x is String) { print(x.length) // x is automatically cast to String } } if (x !

    あなたの知らないKotlinのsmart cast(known as Flow-Sensitive Type) - kmizuの日記
    tsimo
    tsimo 2016/03/14
  • Java Generics 導入の裏側 - kmizuの日記

    このエントリは、これまで自分がさんざんTwitterで書いてきたことですし、Martin Odersky教授へのインタビュー www.artima.com でおおむね語られていることでもあります。ただ、この辺の事情についてあまり詳しくない方も居るようなので、上記インタビューの引用を交えて、JavaにGenericsが入るに至った経緯や関連して活躍した人物についても書いてみようと思います。 事の始まりは1995年にJavaが発表されたことでした。これに触発された、Philip Wadler先生(世界的に有名なコンピュータ科学者)、Martin Odersky先生と同じ研究室に居た助手さん?がこれでなんかやってみないかと煽ったらしく、翌年の1996年には、JavaにGenericsや高階関数、ADTなど関数型プログラミング言語の機能を入れ込んだPizza言語をMartin Odersky先生が

    Java Generics 導入の裏側 - kmizuの日記
    tsimo
    tsimo 2016/02/15
  • Scala DaysにおけるKeynoteの歴史(或は、Rod Johnsonの"Scala in 2018"について) - ((プログラミング | 形式) 言語) について書く日記

    注:このエントリの結論は、これまでScala Daysに参加してきた経験と、一連の騒ぎにおける対応から推測したものであり、決定的な証拠があるわけではないことをお断りしておきます さて、皆様いかがお過ごしでしょうか。近頃、海外Scala界隈では、Scala Days 2013におけるRod JohnsonのKeynoteである"Scala in 2018"が発端となって、海外Scalaコミュニティを中心に、Twitter上での炎上が起きています。 特に、 Typesafeのboard(顧問?)の一人であるRod Johnson(彼はEJB批判やSpring Frameworkの作者としてJavaコミュニティではよく知られた人物です)がKeynote中で、Scalaコミュニティの主要コントリビュータの一人が開発したHTTPクライアントライブラリdispatchを例としてScala界隈におけ

    Scala DaysにおけるKeynoteの歴史(或は、Rod Johnsonの"Scala in 2018"について) - ((プログラミング | 形式) 言語) について書く日記
    tsimo
    tsimo 2013/06/28
  • Scalaによる Expression Problemの解決 (Visitor編) - kmizuの日記

    参考:ジェネリクスによるVisitorパターン拡張の考察 Scalaは元々は、複数の関連しあったクラス群をうまく再利用可能なことにすることも視野にいれていただけあって、こういうのを(オブジェクト指向モデルの中で)簡単に取り扱えます。 trait VisitorsBase {self => trait Node { def accept(v: V) } case class Add(l: Node, r: Node) extends Node { def accept(v: V) { v.visit(this) } } case class Sub(l: Node, r: Node) extends Node { def accept(v: V) { v.visit(this) } } case class Value(value: Int) extends Node { def accep

    Scalaによる Expression Problemの解決 (Visitor編) - kmizuの日記
    tsimo
    tsimo 2013/05/25
  • 1