タグ

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

  • プログラミングの最初の壁は逐次実行 #projava - きしだのHatena

    プログラミングの入門書で、変数だとかfor文なんかは丁寧に例えなどを使って説明されていることが多いのですけど、逐次実行はほとんど説明されていることがありません。 入門書を書く人にとって、逐次実行は自明であって説明が必要なものではないという認識があると思います。 プログラムに慣れた人にとって、プログラムが上から順に実行されるというのは当たり前で学習が必要なことには思えないと思います。 「見たままやん」 となるのではないかと。 けど、実際には上から順に動くというのがよくわからないようです。 「あ、プログラムって上から順番に実行されるんですね、わかってなかった」 と言われたことがあります。そういうふうに言ってくれる人がいるということは、言わないけどわかってなかったという人が何倍もいるはずです。 通常の文章というのは、基的には一定の状態を仮定して書かれていて、前部と後部で表す状態が違うということ

    プログラミングの最初の壁は逐次実行 #projava - きしだのHatena
    rin51
    rin51 2022/03/18
  • オブジェクト指向はすでに粒度が時代にあっていない - きしだのHatena

    定期的にオブジェクト指向disを書いてしまってるのだけど。 とりあえずオブジェクト指向の話をすると定義が人によって違いすぎるので、改めてここでの定義を書いておくと 、基的にはOMTの「データ構造と振る舞いが一体となったオブジェクトの集まりとしてソフトウェアを組織化すること」 に従うのですが 「1990年に流行りソフトウェア開発のすべてを飲み込み、いまとなっては人それぞれ定義が違って技術的議論に使えなくなった、主にオブジェクトを基単位としてプログラムを整理するやりかたを指すマーケティング用語」 という感じです。 ほとんどの場合で人によってオブジェクト指向の指す範囲が違いすぎて、技術的知見の共有には使えなくなっています。でも、いずれの定義にしろオブジェクトを基単位にするというのは重要ではないかと。 ソフトウェアの組織化の単位としてオブジェクトを使うというのが大事で、データの搬送に構造体代

    オブジェクト指向はすでに粒度が時代にあっていない - きしだのHatena
    rin51
    rin51 2021/09/25
    きしださんは何と戦ってるんだ?
  • 「写経」の原典 - きしだのHatena

    書籍とかのサンプルコードをそのまま入力して勉強することを「写経」というけども、それを言い出したのは角谷さん、というメモ。 写経は言葉ではなく心で理解するのが大事。 2004-2005頃に @t_wada と働いていた頃、サンプルコードをコピペでなく手打ちすることを「写経」と呼んでました。和田さんが以前の現場に通いながら"TDD by Example"のサンプルコードを「祈るような気持ち」で手打ちしていたというエピソードを形容して「写経ですね」と呼んだのが始まりだったような…— Kakutani Shintaro (@kakutani) 2021年9月18日 恐らく2005年7月ごろではないかと思われる。 この夏は写経が来るね, 地震が来た - 角谷HTML化計画(2005-07-23) 角谷さんのブログでの初出も7/15だけど、babieさんのコメントを見るとこの時期にまわりで語ってたこと

    「写経」の原典 - きしだのHatena
    rin51
    rin51 2021/09/18
    角谷さんの写経
  • オブジェクト指向には、カメラがやっとついたころのガラケーのイメージがある - きしだのHatena

    某所でオブジェクト指向についていろいろ書いたのでまとめておく。 問題意識としては初学者がなにかというと「オブジェクト指向できるようになりたい」のようなことを言うけどそこまでの優先順位でがんばるものではないんでは、というところです。 まず前提として、オブジェクト指向は1980-2000年くらいに流行って発達したものの、それ以降は時代にあわせた進歩はしていない20年以上前の技術ってのがあります。 そのころは今だとCPUのキャッシュにも満たないようなメモリをやりくりしてプログラムを書く必要があったので、オブジェクト指向はメモリ上のデータをコピーすることなくうまく使いまわせるようなプログラム技術になっています。 そしてオブジェクト指向にはそこから目だった更新はなく、タイトルに書いたように、カメラがやっとついたくらいのガラケーのような古い技術という感じがします。 オブジェクト指向について、アプリケー

    オブジェクト指向には、カメラがやっとついたころのガラケーのイメージがある - きしだのHatena
    rin51
    rin51 2021/01/21
  • 正月からMSXのZ80アセンブラを書いていた - きしだのHatena

    あけましておめでとうございます。 どこぞに、正月3日に起こった出来事が1年を決めるという話が流れてましたが、そうすると今年は1年、夜中にZ80アセンブラを書いて昼間寝る感じになるんでしょうか・・・ 書いてたのは、こんな感じで誤差拡散でカラーテーブルを表示するプログラムです。 まずは素直なカラーテーブル 最初、年末に何を思ったかこんな感じのカラーテーブル表示プログラムを作りました。MSX2は赤緑8階調、青4階調の256色を同時表示できていたので、それを表示するとこうなるのです。 100 DEFINT A-Z 110 SCREEN 8 120 FOR I=0 TO 15 130 R=(I MOD 8)*32 140 B1=INT(I/8) 150 FOR J=0 TO 15 160 LINE (I*16,J*13)-(I*16+15,J*13+12),R+B1+(J MOD 8)*4+INT(

    正月からMSXのZ80アセンブラを書いていた - きしだのHatena
    rin51
    rin51 2018/01/07
  • ぼくの実装した最弱のディープラーニング - きしだのHatena

    8月の頭からディープラーニングを実装していたのを、先日、プレゼンしてきました。 プログラマのための数学勉強会@福岡 - connpass ぼくの実装した最弱のディープラーニング from なおき きしだ ※追記 2023/4/12 SpeakerDeckにも置いてます https://speakerdeck.com/kishida/weakest-deep-learning-i-implemented GPU対応したり、ドロップアウトとかミニバッチとかいろいろ実装して、結構つよくなってます。 ちゃんと学習してくれないこと以外は。 ソースはこんな感じになってきています。 https://github.com/kishida/neuralnet/tree/CorrectOperationAsCCN GPU対応にはaparapiを使っています。JavaGPUコードが書けるスグレモノです。 ap

    ぼくの実装した最弱のディープラーニング - きしだのHatena
    rin51
    rin51 2015/09/07
  • 「Javaエンジニア養成読本」養成読本 - きしだのHatena

    Javaエンジニア養成読」でてます。 Javaエンジニア養成読 [現場で役立つ最新知識、満載!] (Software Design plus) 作者: きしだなおき,のざきひろふみ,吉田真也,菊田洋一,渡辺修司,伊賀敏樹出版社/メーカー: 技術評論社発売日: 2014/11/11メディア: 大型この商品を含むブログ (9件) を見る すでにもうみんな買って読んでると思うので、内容についてはここで書くまでもないと思います。 内容については、他の著者のエントリや Javaエンジニア養成読が出ます! - Challenge Java EE ! 「Javaエンジニア養成読」が出るのです - 日々常々 Javaエンジニア養成読が発売されました!! - bitter_foxの日記 読んだ人の書評などで。 L'eclat des jours(2014-11-11) 「Javaエンジニア養成

    「Javaエンジニア養成読本」養成読本 - きしだのHatena
    rin51
    rin51 2014/11/14
  • 「きしだのはてなのあれってどうなの勉強会」やってきました - きしだのHatena

    24日の土曜日に、「きしだのはてなのあれってどうなの勉強会」やってきました。 【東京】きしだのはてな勉強会 〜「きしだのはてな」のあれってどうなの〜 - 日Javaユーザーグループ | Doorkeeper んで、あいかわらずその場にいないと意味がわからない資料ができあがりました。 きしだのはてなのあれってどうなの勉強会 運営のmegascusさんは 思ったよりもきしださんの人気が薄かったのか人が集まりませんでした。 【東京】きしだのはてな勉強会 〜「きしだのはてな」のあれってどうなの〜をやってきた - 水まんじゅう とは書いてますが、内容もなにか具体的にわからない、参加費3000円、そしてPlay勉強会とかぶる(時間的にはかぶってなかったようだけど)という中で21人集まってもらえたのは、なかなかありがたいことだなーと思いました。 運営のmegascusさんと岡澤さん、おつかれさまでした

    「きしだのはてなのあれってどうなの勉強会」やってきました - きしだのHatena
    rin51
    rin51 2014/05/29
    > 大人になったので一日8時間働くということを覚えた
  • 組み込みソフトウェア業界というナゾの裏世界の話 - きしだのHatena

    ここまでのあらすじ 我々の住むソフトウェア業界は、SI、サービス・パッケージ、ユーザー企業という大小3つの大陸にわかれ、時々いさかいがありながらも平和に暮らしていた。 そして、我々の住む世界とは別に、同規模の技術者が暮らす、組み込み業界という世界の存在も知られていた。 組み込み業界は、存在はすることは確かなのだが技術者の姿は見えず、そのプロダクトの存在も、わかるものにしかわからないのであった。 我々は、組み込み業界と交信できる唯一の手段、C言語を使って、その世界の住人と交信するしかなかった。 しかしあるとき、FPGAという次元ホールをみつけたワカモノ達が、組み込み業界に迷い込んでしまう。ワカモノ達の前に立ちはだかる屈強な組み込み技術者。彼らの前にワカモノたちは、あるものは倒され、あるものは捕らわれ、そして、命からがら表の世界に逃れてきたワカモノも「べり・・・ろ・・ぐ・・・」というナゾの言葉

    組み込みソフトウェア業界というナゾの裏世界の話 - きしだのHatena
    rin51
    rin51 2014/03/16
    スパコンのCPU設計しつつウェブで遊んでいるうちにGoogleへ行ったひとが身近に居るのでなんとも
  • コミュニティに入るか入らないかでエンジニアとしての幸福度がかわる - きしだのHatena

    以前、「勉強会に参加しないと不幸になる話」というのをアップしました。 勉強会に参加しないと不幸になる話 - きしだのはてな このときは、勉強会x勉強会という枠だったので、「勉強会」と表現していますが、実際にはコミュニティに参加しないと不幸になる話でした。 あと、ここでの幸せ・不幸せというのは、エンジニアとして、という話で、エンジニアリング能力があがるとか、エンジニアリングの活動がやりやすいとか、エンジニアリングの活動が評価されるとか、エンジニアリングの話題を共有できる仲間が増えるとか、そういう観点です。 エンジニアとしての幸せ以外にも、人生にはさまざまな観点の幸せがある、ということは最初に補足しておきます。 会社が教育機能をもっていない エンジニアとしての幸せに大切なのは、エンジニアリング能力を上げていくことです。 ただ、2013年の産業経済省IT人材白書の概要に IT企業に対して、201

    コミュニティに入るか入らないかでエンジニアとしての幸福度がかわる - きしだのHatena
    rin51
    rin51 2014/02/26
  • FPGAとArduinoとRasberryPIの違いと、FPGAを勉強する理由 - きしだのHatena

    はたから見てると、FPGAとArduinoとRasberry PIって、なんか小さくてデバイス挿して使ってて似たもののように見えるかもしれません。 そんな中、どこが違うの?って思ってる人もいるかと思ったので、それぞれの違いと、そしてそこから得られる技術者としての知識をまとめてみます。 まあ、得られる知識として「それぞれのデバイスの使い方と周辺環境」ってのはありますが、それは当然として。「それぞれのデバイスの使い方と周辺環境」を得るメリットがわかる比較としてまとめたいと思います。 根底は「なんで最近FPGAをやってるか」っていうことの説明なので、そういうバイアスがあると思ってください。 FPGAというのはチップの種類なので、実際にはDE0などのFPGA評価ボードとの比較ですが。中でもDE0-nanoは大きさや価格を考えると、豪華なArduinoくらいの位置づけとして出してきたようにも見えます

    FPGAとArduinoとRasberryPIの違いと、FPGAを勉強する理由 - きしだのHatena
    rin51
    rin51 2013/02/19
  • ナイーブベイズ分類器であいさつbot作ってみた

    スパムフィルタでよく使われてる、ベイジアンフィルタのことです。これを使って「おはよう」判定してみました。 1000speakersのときに「ベイズやらないんですか?」って言われたり、tockriの人が以前「やっぱベイズよくできとるわ」とか書いてたり、テキスト分類ならベイズでいいん違うかと思ってみたので、やってみました。 結果から言うと、なんか不安定というか、1文字の違いで「おはよう」判定してしまうことがあります。ちゃんと性能測ってみないとわかんないですけど。 考えられるのは、データが少ないことですが(「おはよう」が750件中39件)、それよりも、ついったの発言では「おはよう」発言の中に「おはよう」と関係ない言葉が入ることが多くて、それが悪影響あたえてるんじゃないかと思います。ナイーブベイズのアルゴリズムを考えると、データ中のノイズに弱い気がします。 「。」や「!」で文章を区切って学習・判定

    ナイーブベイズ分類器であいさつbot作ってみた
  • サポートベクターマシンであいさつbotを作るためのカーネル関数 - きしだのはてな

    Twitterの発言に、「おはよう」かどうかのフラグをつけてSVMにわせると、その発言が「おはよう」かどうか判定できるようになるので、「おはよう」判定したら「おはよ〜」と返すようにするとあいさつbotのできあがり。 というときに問題になるのが、カーネル関数をどうするかということ。文字列カーネルというのがあるようなんだけど、詳しいことがわからなかったのと、ちゃんと調べて実装するのもめんどかったので、とりあえず2文字ずつを比べてみるようなカーネル関数を考えてみた。 2文字の頻度=√(2文字の出現回数/全体の長さ) としておいて 一致度=Σ(発言1での頻度 * 発言2での頻度) とするようなカーネル関数を作成。完全に一致すると1、まったく一致しないと0になるはず。これがカーネル関数として使えるかどうかわかんないけど、内積の計算っぽいから大丈夫なはず。 そう。計算としては超高次元の内積を計算して

  • [機械学習]サポートベクターマシンの本 - 2008-07-15 - きしだのはてな

    うちにあるで、サポートベクターマシン(SVM)について書いてあるをあげてみます。 まずは、これ。機械学習ってなんなの?という人におすすめ。パーセプトロンからSVM、ニューラルネットワークときて、そうやってできた学習機械の評価方法についても書いてあります。 フリーソフトでつくる音声認識システム パターン認識・機械学習の初歩から対話システムまで 作者: 荒木雅弘出版社/メーカー: 森北出版発売日: 2007/10/01メディア: 単行(ソフトカバー)購入: 45人 クリック: 519回この商品を含むブログ (39件) を見る SVM・カーネルに関しては記述が軽く、これも機械学習の入門書。けど、学習機械を組み合わせるブースティングなどの話が書いてある。 パターン認識と学習の統計学―新しい概念と手法 (統計科学のフロンティア 6) 作者: 甘利俊一,麻生英樹,津田宏治,村田昇出版社/メーカー

  • ところでサポートベクターマシンって何なの? - きしだのHatena

    最近、機械学習とか、そのアルゴリズムのひとつであるサポートベクターマシンとかやってるわけですが、そもそも機械学習ってなんなんでしょか? 機械学習ってのは、なんとなく与えられた点の分類から、新たに与えられた点の分類を推測するのですが、ようするに、点が与えられたときにそこから分類の領域を推測しておいて、新たな点がきたときにはどの領域に入るかを判別するのです。 ニューラルネットワークは、名前にニューロンとかついてて、とてもステキな響きがするのですが、あれは関数のあてはめを行っているのです。そうやって関数をあてはめることで、領域の境界面を求めます。 NN法は、学習とかせず、一番近いデータが同じ分類になるはずという戦略でやってます。 サポートベクターマシンも考え方としてはNN法と同じで、新しい点がやってくると、学習したそれぞれの点までの近さを計算して、一番ちかい分類を求めます。そのため、学習データが

  • 2008-07-01 - きしだのはてな - バックプロパゲーションでニューラルネットの学習

    ニューラルネットというのは、入力があって、複数の階層を経て出力を得るようなグラフ構造のことです。通常は、入力層・中間層・出力層のように層構造になっているようなものを差します。中でも、中間層が1層の、3層構造になっているものが多くとりあげられます。バックプロパゲーションは、誤差逆伝播法とも言って、ニューラルネットワークのパラメータを学習するための手法です。 ニューラルネットについてのサイトやでは、中間層を多層に対応した一般的な表現で説明されることが多いのですが、なかなか式を読み解くのが難しかったりするので、今回は3層で入力が2パラメータ、出力は1つ、中間層のニューロンは2つという、単純なものを取り上げます。 では、3層ニューラルネットワークでの判定時のデータの流れを見てみます。 3層ということになっていますが、実際の処理は2層になっています。実装するときには2層だと考えたほうがわかりやすい

    2008-07-01 - きしだのはてな - バックプロパゲーションでニューラルネットの学習
  • 黎明期のJava入門書の話 - きしだのHatena

    結城さんのJava入門書、「Java言語プログラミングレッスン」がJava7に対応した第3版が出るということで、思い出した話。 まずは出版おめでとうございます、おつかれさまでした。ただ、評価はちょっと厳しめです。 Java言語プログラミングレッスン 第3版(上) Java言語を始めよう 作者: 結城浩出版社/メーカー: SBクリエイティブ発売日: 2012/11/14メディア: 単行購入: 1人 クリック: 7回この商品を含むブログ (8件) を見るJava言語プログラミングレッスン 第3版(下) オブジェクト指向を始めよう 今回の「Java言語プログラミングレッスン」もやはり上巻でif、for、配列、下巻でクラス、インタフェースという構成になっていて、1冊にまとめれなかったものかという感がぬぐえない。 あわせて5040円というのは入門書として高価だし、上巻だけでは役にたたない。 まだ発

    黎明期のJava入門書の話 - きしだのHatena
    rin51
    rin51 2012/11/19
  • 誰かが亡くなった - きしだのHatena

    朝。 訃報を聞いたという人がいた。 それが確かかどうかもわからない。 だれかもぼくにはわからない。 ただ、訃報があったと知った。 気になった。 昼。 数日前に会った友達が亡くなった、と嘆いてる人がいた。 その人は知り合いも多いだろうし、ぼくと興味の範囲も違っているので、あまり面識がない人なのだろうと思った。 少し年下の人が、年も近いのにと嘆いていた。やはり、あまり知らない人かなと思った。 それでも、気になった。 夕方。 福岡の人が、また来ると言ってたのに、と嘆いてた。 お会いしたかったと言っている人もいた。 案外、知っている人なのかもしれないと思った。 夜。 亡くなった人の名前を聞いた。 知ってる人だった。@akhkさん。 Twitterでは、初期から知っていた。やりとりしたこともある。 実際に会って話したこともあった。ただ、会話がはずんだわけでもなく、単に社交辞令的な挨拶だった。 構築し

    誰かが亡くなった - きしだのHatena
    rin51
    rin51 2012/11/08
  • おねえさんを組み合わせ爆発から救う:2分決定木を作る - きしだのHatena

    おねえさんを組み合わせ爆発から救うために、まず格子グラフを作成しました。 http://d.hatena.ne.jp/nowokay/20121015#1350267331 こんどは、そのグラフの辺について、それぞれ通るか通らないかの組み合わせによって、始点から終点までの単純な経路になってるかどうか判定して、それをツリーとして表してみます。 右の実線に行く場合はその辺を通る、左の点線にいく場合はその辺は通らない、ということをあらわします。そして、最終的に始点から終点までの単純な経路になっている場合を「T」なっていない場合を「F」とします。 ここでは、1x1マスのグラフをあらわしているので、「1:3」と「3:4」を通る場合、つまり右に分岐する場合と、「1:2」と「2:4」を通る場合、右に分岐する場合だけが「T」となっています。 判定方法は、ツリーの途中では、始点と終点に入る辺が2以上になる

    おねえさんを組み合わせ爆発から救う:2分決定木を作る - きしだのHatena
    rin51
    rin51 2012/10/16
  • MVCは死んだ。MOVEするときがきた - きしだのHatena

    Conrad Irwinさんの「MVC is dead, it's time to MOVE on.」を訳してみました。 MVC is dead, it's time to MOVE on. この訳文も原文のライセンスを引き継いでCC-BY-3.0ライセンスで利用可能とします。 追記13:58 すでに訳してた方がいました。MVCの時代は終わった。MOVEを使い始めましょう。 - ふじこのプログラミング奮闘記 MVCは死んだ。MOVEするときがきた MVCはすばらしいアイデアだ。モデルを持ち、モデルは内部に少しの状態をもつ。ビューは内部に少しのUIをもつ。そして、コントローラは内部に少しの・・・ 何を持つ? 私は確かにこのことに気づいた最初の人物ではない。しかし示されたようなMVCの問題のために、あなたは最後には過剰なコードをコントローラに詰め込むことになる。なぜなら、他にどこに入れていいか

    MVCは死んだ。MOVEするときがきた - きしだのHatena
    rin51
    rin51 2012/07/05