タグ

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

  • 新しいリリースモデルはJavaを使う人 全員要注目だった - きしだのHatena

    9月の頭くらいに、Javaのリリースモデルが6ヶ月ごとの短期リリースになるということが発表されてました。 で、「へぇ〜」みたいな感じで見てたのですけど、JavaOneでの話を聞くと、これ結構大変なのかも、ということになってそうなので、ちょっとまとめてみます。 追記:2018年05月の状況をQiitaでまとめています。 [Javaのサポートについてのまとめ2018 - Qiita](https://qiita.com/nowokay/items/edb5c5df4dbfc4a99ffb) Javaの新しいリリースモデル 公式情報はこちらにまとめられています。(10/4にアップデートされてます) http://www.oracle.com/technetwork/jp/java/eol-135779-ja.html ざっくり言えば、6ヶ月ごとに機能リリースを行い、3ヶ月ごとにメンテナンス/セキ

    新しいリリースモデルはJavaを使う人 全員要注目だった - きしだのHatena
    vanbraam
    vanbraam 2017/10/07
    これもうJavaはOracle離れするしかないのでは.その力(経済力)がJavaコミュニティにあるかどうかはわからないが
  • ソフトウェアエンジニアの人数に関するフェルミ推定 - きしだのHatena

    以前から、日のプログラマってどのくらいいるんだろう?って思ってて、なんとなくの数字を思い浮かんでいるので、メモ的に書いておきます。 2〜3倍の差はあっても1桁は違わんだろうなーくらいの誤差感です。 まず、プログラマ全体の数。どうも、20万人〜100万人くらいな感じ。かき集めて200万人はいなさそう。 IT人材白書2017の「情報処理・通信に携わる人材」が100万人ちょい。 ある程度の機能を持ったプログラムをドキュメントやチュートリアルを見ながら自分のコードで書けるというのは、5万人〜10万人くらいではないかなと。 を買ったりして自分で勉強する人が3〜5万人。 小さなアプリケーションをひとりで作れるレベルだと1〜3万人。 自発的に勉強会に出る人は5000人〜1万人。東京に6000人、大阪700人、福岡300人くらいかなー。*1 高階型がわかるとか、高階関数がわかるとか、ある程度「プログラ

    ソフトウェアエンジニアの人数に関するフェルミ推定 - きしだのHatena
    vanbraam
    vanbraam 2017/07/27
    どの辺がフェルミ推定なのだろう?最初の"100万人"はともかく,残りの部分は(これだけだと)推定ではなく,根拠も何もない適当な数字でしかない様に見えるのだが
  • Javaの難しいところ - きしだのHatena

    Javaをプログラム未経験者に教えるときの話。 細かいところまでちゃんと理解するための難しさではなくて、とりあえず頻出コードが読み書きできるまでの難しさの話です。細かいところまでの理解、どの言語も難しいので。 あと、ここではプログラム自体の難しさは別の話、ということで。 で、Javaには難しいところが結構あるんですけど、難しいのをひとことでいうと「昔の事情や歴史的経緯により、が多い」ところです。 プログラムを教えるときに何が難しいか たとえばpublic static void mainを書くとか、おまじないが多いとか記述量が煩雑とかは、ツールで対処可能で、ツールで対処可能というのは機械的に慣れればいい部分なので、そこまで問題にならないと思います。 あと「おまじないを減らしたい」というのは教える側のこだわりであって、理解しやすさとは別で、そのおまじないがどういうときに必要かというところさえ

    Javaの難しいところ - きしだのHatena
    vanbraam
    vanbraam 2017/04/01
    じゃあやっぱりデータ型も構文も全てlistでシンプルなLispだな,にならない?; TMTOWTDIはPythonにもある(strとstring)し,暗黙のルールはRubyの方が多い;入門言語はOOでない方がいいとは思うので,割とガチでPascalかもしれない
  • 作って理解するWebフレームワーク - きしだのHatena

    前回、簡単なDIコンテナを作ってみたので、次はこれを使ってWebフレームワークを作ってみたいと思います。 Webサーバーをつくる まず、WebフレームワークなのでHTTPサーバーが必要ですね。なので簡単なものを作ります。 とりあえずブラウザからリクエストを受け取ったら200 OKとHTMLを返すだけのサーバーです。 今回は、そこらのブラウザからアクセスできればいいや、ということで、RFCとかの仕様に準拠することは考えません。 public class Server { public static void main(String[] args) throws IOException { ServerSocket serverSoc = new ServerSocket(8989); for (;;) { Socket s = serverSoc.accept(); new Thread((

    作って理解するWebフレームワーク - きしだのHatena
  • 作って理解するDIコンテナ - きしだのHatena

    DIコンテナ使ってるけど、アノテーションってなんなの!って聞かれて、作ってみたらわかるよと答えてみたので、自分でも作ってみました。 よくわかった。 「DIコンテナ使うと何がいいの?」ということも、作ってみるとわかります。あと「DIって何がいいの?」に関しては、「DIはちょっとコードを書くのが楽になるだけで、それだけあっても仕方ない、大事なのはコンテナ」と答えるようにしてますが、コード比率からもそれがよくわかります。 続編としてWebフレームワークも作っているので参考まで。 作って理解するWebフレームワーク - きしだのHatena まずはコンテナを作る とりあえず1ソースの状態で。 こんな感じで、管理する型を登録できるようにします。 static Map<String, Class> types = new HashMap<>(); static void register(String

    作って理解するDIコンテナ - きしだのHatena
  • 小学校低学年へのプログラミング教育には効果がないと考えたほうがいい - きしだのHatena

    子どもへのプログラミング教育は早ければ早いほどいいというものではない。 最近子どもへのプログラミング教育が話題になることが多いけど、恐らく小学3年生までの子どもへの効果はほとんどなく、小学4年生でもほとんどの子どもには難しいと思う。 人間の知能の発達には段階があって、必要な段階に達していないうちにそれが必要な教育を行っても効果は望めない。 まず、なんでこのエントリを書いたかというと、プログラミングには適した発達段階があるということを知らないと、その発達段階に達する前にプログラミング教育を行って、もちろんプログラミングは出来なくて、その子には適性がないという判断をしてしまうとうことが起きてしまうんじゃないかと思ったからだ。 まだ適した段階まで来てないだけなのにプログラミング教育をして失敗して「この子にはプログラミングができなかった/興味をもたなかった」という実績を作ってしまうことによって、将

    小学校低学年へのプログラミング教育には効果がないと考えたほうがいい - きしだのHatena
    vanbraam
    vanbraam 2016/01/07
    確かに,と思う一方で,b:id:entry:275803214b:id:entry:275805940の様な物であれば行けるのではないかとも思う;自分がプログラミングに興味を持ったのは小5くらいだったと思う.但しその頃はPC自体が珍しかった
  • 品質の文脈でコメントの代わりのメソッド導入が安易に受け入れられない理由 - きしだのHatena

    前提 目的は品質であり、品質のために読みやすさを求める。 メソッドを導入するとコードの複雑度はあがる。 コメントの記述ではコードの複雑度はあがらない。 コードの複雑度が高くなるとバグがでやすくなる。 バグがでやすくなると品質はさがる。 ここまでは今回前提とさせてもらいます。なので、ここで異論があれば、あぁそこに考え方の違いがあったのね、ということで。 目的が読みやすさであれば、まあそれで読みやすい人もいるんですねぇ、ということで終わらせることもできます。 ただ、このまえのエントリでは、品質がテーマです。 そういう前提では、読みやすいだけじゃなくて、品質を落とさないということも大事になります。 メソッドの導入は、基的に複雑度をあげるので、それはそれでやりすぎるとバグの原因にもなっていきます。 もちろん、メソッドによって式や処理に名前をつけるというのは、複雑度をあげたことを補ってあまる効果が

    品質の文脈でコメントの代わりのメソッド導入が安易に受け入れられない理由 - きしだのHatena
    vanbraam
    vanbraam 2015/05/14
    ほぼ同意;メソッド化って元は共通部分の切り出しが目的だったと思うが,長いメソッドや深いインデントを嫌悪する宗派に,それは"無条件に切り出すべき"と言われるのは嫌だった;切り出した方がいいケースもあるのは理解
  • Java SEバージョンアップでのトラブルの話が面白かった - きしだのHatena

    Java Day Tokyo 2015で、NECJava SEバージョンアップでのトラブルの話が面白かった。 Java EEアプリケーションサーバの開発現場で見たJava SEの実際 資料はこちらで公開されてるので、資料に書かれてることはそちら参照という感じで、どんな話だったか書いてみます。 Java Day Tokyo 2015 アプリケーションサーバーを提供する中でJava SEをバージョンアップしたときに出て来たさまざまなトラブルの話と、Java SE 8から導入されたMetaspaceの話が主でした。 Java EEは機能が標準化されているので、アプリケーションサーバーはカスタマーサポートで差別化をはかるしかない、顧客から見ると、Java SEやOSまで全て含めてアプリケーションサーバーなので、全部対応していく、という話をされていました。 Javaにもそれなりにバグはあって、アプ

    Java SEバージョンアップでのトラブルの話が面白かった - きしだのHatena
    vanbraam
    vanbraam 2015/04/27
    これは深い.沼っぽい
  • コードに対してコメントを書くと実装に関するコメントになる - きしだのHatena

    おととい、渋谷JVMというイベントがあって登壇させてもらったんですが、そのあとビール飲んでるときに、ぼくが「コード書く前にコメントだけ書くのいいよね」と言ったあとの返答としてきょんくん(kyon_mm)が言った言葉。 全体としては 「コード先に書いてそのコードに対してテストを書くと実装に対するテストになるし、コードを先に書いてそのコードに対してコメントを書くと実装に対するコメントになる」 という感じ。 ここに至るまでの話もおもしろかったんだけど、ここでは、コメントについて書いてみます。 まず、実装に対するコメントってどういうのかというと、こういうの。 id = findId(name); if(id == -1){ // idが-1だったとき登録 register(name); } いやそれはコード見ればわかるから、ってやつですね。 これは、こうやるとより適切です。 id = findId

    コードに対してコメントを書くと実装に関するコメントになる - きしだのHatena
    vanbraam
    vanbraam 2015/04/20
    "コード書く前にコメントだけ書くのいいよね";"コードを書くとき、なんらか意図があってコードを書くわけなんで、その時点でコメント書いておけば意図をあらわすコメントになる";実装前に流れをコメントで書く事はある
  • ソフトウェアプロセス技術がロストテクノロジーになっている - きしだのHatena

    最近会った人とよく話すのが、ソフトウェアプロセス技術がロストテクノロジーになってるんではないかということです。 ソフトウェアプロセスというのは、「プロセスがよいソフトウェアをつくる」という前提のもと、どのようなタイミングでどのような成果物を作り、どのような管理をし、どのように検査をしてソフトウェアを作るかという手順です。 そして、プロセス技術というのは、そのようなプロセスを構築し運用し改善する技術です。 このようなソフトウェアプロセス技術は、1995年くらいから2000年くらいにかけて盛り上がり広まりかけたのですが、そのタイミングでWebが広まりはじめ、「Webは進化が速い」「作るものがどんどん変わる」などを合言葉に、「アジャイルプロセスを採用する」という名目でなんら管理されないプロセスが普及しました。その結果、プロセス技術は完全に下火になっているように思います。 もちろん、Webの発展段

    ソフトウェアプロセス技術がロストテクノロジーになっている - きしだのHatena
    vanbraam
    vanbraam 2015/03/12
    そのWaterfallは反復型or直列型? b:id:entry:101166214;直列型の失敗率は75% b:id:entry:112652450;高度の堅牢性が必要な系(原発等)については,欧州では形式手法の活用が盛ん;これらを踏まえた上でなければ,software processの議論など無意味
  • 形式仕様記述Alloyを試してみる - きしだのHatena

    試してみるよ。 とりあえず商品をまとめたセット商品についての仕様を書いてみる。 まず商品の定義 module exec/shohin sig Shohin{} pred show{ } run show sigはJavaとかのclassだと思えばだいたいOK。 なんか商品がみっつ出た。 じゃあ、セット商品を定義してみる。 sig SetShohin{ bundle: set Shohin } おー、同じ商品が3つのセットに含まれてしまった。Alloyさんイヤらしいとこついてくる。 ということで、ひとつの商品は多くてもひとつのセットにしか含まれない、っていう制約を加えます。 fact { all s: Shohin | lone bundle.s } 書き下ろすと「すべての商品について、商品をbundleとして持つのはたかだか1つ」になるんですけど、この、フィールドを左に書く書き方は通常のプ

    vanbraam
    vanbraam 2013/10/01
    面白い;いつか機会を見つけて試したいなぁ
  • 1