タグ

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

  • ChatGPTのヤバさは、論理処理が必要と思ったことが確率処理でできるとわかったこと - きしだのHatena

    ChatGPTのヤバいところは、論理処理が必要だと思っていたことが、じつは多数のデータを学習させた確率処理で解決可能だと示したことだと思います。 たとえば、このように正規表現にマッチする文字列を生成するには、特別に専用の論理処理が必要だと思っていました。 前のブログのときには特殊処理が必要だと考えてましたね。 ウソはウソと見抜ける人じゃないとChatGPTを使うのは難しい - きしだのHatena けど、123_45678world.mdはマッチするのにマッチしないと言っているので、そのような誤りが入ることを考えると、どうも確率処理だけでやっているようです。 考えてみると、3層以上のニューラルネットであれば論理素子を再現できるので、ディープラーニングで論理処理を模倣することは可能なんですよね。 バックプロパゲーションでニューラルネットの学習 - きしだのHatena そもそも論理は、多数の

    ChatGPTのヤバさは、論理処理が必要と思ったことが確率処理でできるとわかったこと - きしだのHatena
  • オブジェクト指向はすでに粒度が時代にあっていない - きしだのHatena

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

    オブジェクト指向はすでに粒度が時代にあっていない - きしだのHatena
  • 作って理解するDIコンテナ - きしだのHatena

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

    作って理解するDIコンテナ - きしだのHatena
  • Java8で最もインパクトのある構文拡張、デフォルトメソッド - きしだのHatena

    Java8でのラムダの使い方などを説明してきたのですが、構文拡張自体には触れていなかったので、改めてここで簡単に説明しておこうと思います。 まずは、Java8で実際に最もインパクトがある言語拡張、インタフェースのデフォルトメソッドです。 デフォルトメソッドとデフォルト実装 いままでインタフェースには実装をもつことができませんでしたが、Java 8からはインタフェースが実装をもてるようになります。 実装をもつメソッドを定義するときには、キーワードdefaultをメソッドの前につけます。 interface Foo{ void print(String s); default void twice(String s){ print(s); print(s); } } twiceメソッドが実装をもっています。この実装をデフォルト実装といいます。 デフォルトメソッドを実装するクラスで、デフォルトメ

    Java8で最もインパクトのある構文拡張、デフォルトメソッド - きしだのHatena
  • Java8でのプログラムの構造を変えるOptional、ただしモナドではない - きしだのHatena

    ※ 5/29 3:23 追記:なんかモナドになったかも。最下部参照 さて、Java8での拡張をいろいろ見てきたわけですが、ではアプリケーションプログラムでFunctionを受け取るメソッドをがんがん定義するかというとそういうことはあまりなく、フレームワーク的な部分で数個定義する感じになると思います。もちろん数個でも効果はでかいのですが。 また、おそらくStreamを受け取ったり返したりするメソッドを定義することは、めったにないのではないかと思います。 Mapでの拡張も、メソッド内部での処理記述がかわる話で、メソッドの引数や戻り値はMapのまま変わりありません。 Javaでのプログラムの構造というのは、メソッドの引数や戻り値の型がなんであるかで決まると言うことができます。その意味では、lambdaやStreamというのは処理の記述は変わるけどプログラムの構造は変わらないとなります。 けれども

    Java8でのプログラムの構造を変えるOptional、ただしモナドではない - きしだのHatena
  • Java 8を関数型っぽく使うためのおまじない - きしだのHatena

    やあ、3月に延期になったとはいえ、Java 8リリースが具体化してきましたね。 もうこれで、Lambdaがはずれるとかいうことはなさそうです。 ところで、Java 8で関数型っぽいことができるようになってうれしいのですが、ちょっと記述が冗長です。ということで、短く書けるおまじない考えてみました。 Function型 さて、まずはJava 8で標準で入ったFunction型をみてみましょう。パッケージ名まで含めるとjava.util.funciton.Functionです。 こんな感じで使います。 Function<String, String> enclose = s -> "[" + s + "]"; Genericsでの型指定の最初が引数、あとが戻り値の型です。ここではStringをとってStringを返す関数としてencloseを定義しています。 これを呼び出そうとすると、こんな感じ

    Java 8を関数型っぽく使うためのおまじない - きしだのHatena
  • 文章に向いてない構造をいかに文章に向いた構造に直列化するかが大事 - きしだのHatena

    Software Design 12月号の特集が「なぜエンジニアは文章が下手なのか?」というタイトルだったので、読んでみたら、ちょっと残念な内容だった。 「それは文章で書くべき情報なのか」という章があって、直列化した論理構造であれば文章には書きやすいけど、分岐やループがあるような構造だと書きにくいということが書いてあった。そこで文章化しにくい構造の例として地図があげてあって、暗にそういう構造は文章化をやめて図であらわせと言っているように読める。 けれども、図に書いたところで、書く側は文章化から逃げれて満足かもしれないけど、それを読み取る側は結局どこかから順番に解釈していく必要がある。図に逃げるのは、読み手に責任を押し付けているだけだと思う。 で、「ですから文章を書く前にまず論理構造を考える必要があります」と続いていて、では考えた論理構造が「文章に向かない論理構造」だったらどうするの?逃げる

    文章に向いてない構造をいかに文章に向いた構造に直列化するかが大事 - きしだのHatena
    akkun_choi
    akkun_choi 2012/11/24
    直列化
  • テストというのは、ソースコードの冗長化だと思う - きしだのHatena

    テストというのは、基的にはソースコードの冗長化だと思う。来ならプロダクトコードだけ書けばよいところを、信頼性を高めるために複数の視点でのコードを追加する。 また、サーバーの冗長化で、2台構成を3台構成にするよりも、はるかに1台構成を2台にするのが難しいように、テストも、10のテストを20にするよりも、最初のテスト(プロダクトコードも含めると2目のコード)を書くのが一番難しい。 テストがソースコードの冗長化であるなら、アクセスのないサイトでサーバーをクラスタリングするのが単なる金や設定時間の無駄であるように、長期的な信頼性の求められないプロダクトにテストを書くことも金の無駄だ。 アクセスが多いのにサーバー冗長化の金を払わない顧客に対してクラスタリング構成を構築する義理がないように、信頼性が求められるのにテストの金を払わず時間も確保しない顧客のためにテストを書いてやる必要もない。もち

    テストというのは、ソースコードの冗長化だと思う - きしだのHatena
    akkun_choi
    akkun_choi 2012/02/26
    品質、信頼性の担保。最初のテストを書くのが難しい。同じものでもよりテストが少ない方がエライ。
  • おとうさん、ぼくにもYコンビネータがわかりましたよ! - 2009-04-09 - きしだのはてな

    やっと、Yコンビネータが何を意味するものなのか、どういう意義があるのかがわかりました。 名前を使わず再帰ができますよ!というだけのものじゃなかったのですね。 まずλありき 関数の話をしたいのです。 そのとき、いちいち hoge(x) = x * 2 としてhogeを・・・、とか名前をつけて話を進めるのがめんどうなので、関数を値としてあらわすと便利ということで、λという値を定義するのです。 そうすると、上のhoge関数なんかはλ(x)(x*2)などとあらわせますが、引数をあらわすのに()を使うといろいろまぎらわしいので、 λx.x*2 のように表記します。 というのがλ。 このとき、λになにかわたされたら、引数としてあらわされる部分を単純におきかえます。 (λx.x*2)y とあったら、xの部分をyでおきかえて (λx.x*2)y → y * 2 となります。λの引数部分を与えられた引数で置

    おとうさん、ぼくにもYコンビネータがわかりましたよ! - 2009-04-09 - きしだのはてな
  • いまSICPを読むのは時間の無駄 - きしだのはてな

    SICPは、よい内容について書かれたであり、最良のだった時期もあった。 けれども、今となっては、理解が難しく内容の割には時間がかかる、時間の無駄ともいえるといってもいいかもしれない。 もちろん、Schemeの可能性、数値計算、プログラミング、コンピュータ教育歴史、そしてSICP自体のすべてに興味があれば、効率がいいかもしれない。 けれども、コンピュータ教育歴史、SICP自体に興味がないのなら、あまり効率のいいとはいえない。特に、Scheme、数値計算に当面の興味はなく、プログラミングについてだけを学びたいのであれば、時間の無駄でしかないと思えるし、今となっては足りない部分もある。 SICPの欠点として、まず、次の点が挙げられる。 日語がよみにくい サンプルに数学の知識が必要 プログラムがよみにくい 日語がよみにくいというのはよく指摘される。ただこれは翻訳だけが悪いのではな

    いまSICPを読むのは時間の無駄 - きしだのはてな
  • GoogleのMapReduceは僕たちに必要か? - きしだのはてな

    ということで、Google MapReduceの実装であるHadoopを使ったMapReduceと、JMSを使ったMapReduceをやってみました。 メッセージキューを使って分散MapReduceを実装する HadoopでのMapReduceを気軽に試すサンプル これ何のためにやったかというと、そこらにあるような数十台規模のサーバーを前提としたときに、Hadoopの有効性、ひいてはその元になってるGoogle MapReduceの有効性について疑問に思ったからです。そこで、ちょっと試してみた、と。 ここで、メッセージキューを使った場合に1秒でできてた処理が、Hadoopを使うとスタンドアロンモードでも40秒近くかかりました。擬似分散モードだと4分近くです。 いくらHadoopの実装がひどいとしても、これはあんまりです。 Googleでの実装はもっと効率的なものになっていると思いますが、そ

    GoogleのMapReduceは僕たちに必要か? - きしだのはてな
    akkun_choi
    akkun_choi 2009/02/21
    「要するにGoogleのシステムは、効率は悪いがスケールする仕組みを使っているわけです。」
  • 2年後にはEclipseを使う人はいなくなる - きしだのHatena

    Eclipseは「リファクタリングと補完にしか取り柄のないIDE」ですが、NetBeansは逆に「リファクタリングと補完に欠陥のあるIDE」ですね。 そこでJackpotですよ、と。 http://jackpot.netbeans.org/ Jackpotは、Javaのコードをオブジェクトとして扱ったり、そこからなにか抽出したり、変更したりするためのフレームワークです。 このルール言語のリファレンスをみると、どんなことができるか想像がつくと思います。 http://jackpot.netbeans.org/docs/rule-language.html これを見ると、リファクタリングや静的検査、コード補完なんかの仕組みが書きやすくなることが想像でします。 そうすると、NetBeansでのコード補完やリファクタリングというのは、ありえない速さで進化します。 NetBeans6が出た時点では、

    2年後にはEclipseを使う人はいなくなる - きしだのHatena
  • 1