タグ

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

  • オブジェクト指向はすでに粒度が時代にあっていない - きしだのHatena

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

    オブジェクト指向はすでに粒度が時代にあっていない - きしだのHatena
    rindenlab
    rindenlab 2021/09/25
  • ソフトウェアプロセス技術がロストテクノロジーになっている - きしだのHatena

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

    ソフトウェアプロセス技術がロストテクノロジーになっている - きしだのHatena
  • 作るプログラムの機能や性能で勝負したい。そうだ、データベースを勉強しよう - きしだのはてな

    さて、アルゴリズムの勉強のしかたと、ラムダ計算の勉強のしかたの目星をつけました。 アルゴリズムの勉強のしかた - きしだのはてな ラムダ計算の勉強のしかた、プログラム意味論 - きしだのはてな これでここで書いたプログラムの理論の基礎は勉強できたことになるんじゃないかと思います。 プログラムの理論とはなにか - きしだのはてな ところで、プログラムの勉強地図としてこういう図を書きました。 で、ハードウェアまわりについても、プロセッサを支える技術やネットワークはなぜつながるのかでひととおり勉強したとしましょう。 じゃあ次は、アジャイルか?テストか?UIデザインか?となるわけですが、やはりプログラマなら、プログラムの作り方や使いやすさの前に、作るプログラムの機能や性能で勝負したいじゃないですか。 いい感じに関数が分割できるよとか、読みやすい名前がつけれるよとか、効率よく仕事して定時に帰れるよと

    作るプログラムの機能や性能で勝負したい。そうだ、データベースを勉強しよう - きしだのはてな
  • プログラマになるための勉強をしている人の前で話をしてきた - きしだのHatena

    イデアルITスクールというところで、1時間ほど話をしてきました。 プログラマとしてやっていくために大事なことというテーマ。 資料を作らずに、というか構想すら練らずにやってしまったので、ここで整理とまとめと補足を。実際にこれをしゃべったというのではなくて、だいたいこんなことをしゃべろうとしてたという内容をかなり盛って書いてます。 当然ですが、プログラマの仕事はプログラムを書くことです*1。 プログラマとしてやっていくためには、どこで動くプログラムを書くか、なにをするプログラムを書くかということを意識することが大事です。 ということで、まずはプログラムが動くところがどう変わったかという話。 1970年代ころは、デバイスを動かすためのプログラムが多かったのではないかと。 あと、ここには書いてないけど、業務アプリはほぼメインフレームで動いてたと思います。 それが、1980年代くらいからパソコンが出

    プログラマになるための勉強をしている人の前で話をしてきた - きしだのHatena
  • どのプログラム言語を選ぶべきか・・・ - きしだのHatena

    PHP-erはダメな言語でいかにまともなものを作るかっていうマイナスからのスタートだし、 JavaScript-erは何もないところで何か動いて楽しいっていう0からのスタートだし、 Ruby-erはRuby好きって言ってるだけだし、 Java-erはJavaの仕様にしか興味がないし。 Scala-erは生ぬるいこと言うと狩られるし、 Smalltalk-erは過去の栄光語ってるだけだし、 COBOL-erは苦労話しか出ないし、 FORTRAN-erはプログラムに興味ないし、 Perl-erは同窓会みたいだし、 Python-erは仲間探すの大変だし、 Erlang-erはどこにもいないし、 C-erは目先の仕事にしか興味ないし、 C++-erはC++の復興にしか興味ないし、 C#-erはWindowsにひきこもるし、 ActionScript-erはAdobe税はらうのに大変そうだし、 O

    どのプログラム言語を選ぶべきか・・・ - きしだのHatena
  • 2010-11-25 - きしだのはてな - 技術力をあげたいプログラマが読んでおかないと話にならない本10冊

    ここにあげたじゃなくてもいいので、同じ分野でなにか読むとか、に書いてあるほど詳しくなくてもそれなりに知識をもっておくべき。 アルゴリズムクイックリファレンス 作者: George T. Heineman,Gary Pollice,Stanley Selkow,黒川利明,黒川洋出版社/メーカー: オライリージャパン発売日: 2010/04/26メディア: 単行(ソフトカバー)購入: 11人 クリック: 656回この商品を含むブログ (72件) を見る まずはアルゴリズム。クイックって書いてあるけどぜんぜんクイックじゃないw。各言語で書かれた入門書を読んでもいいと思う。 実際のプログラムにアルゴリズムの知識を活かすということを知りたいならプログラミングコンテストチャレンジブックがおすすめ。 プログラミングの基礎 ((Computer Science Library)) 作者: 浅井健一

    2010-11-25 - きしだのはてな - 技術力をあげたいプログラマが読んでおかないと話にならない本10冊
  • Google App Engineでコードを書くと、処理のひとつひとつが課金に見える

    先週末、ちょっとしたプログラムをGAE/Jで動かして実際に使ってもらってみたのですが、そうすると、いままでテストでちょこちょこやってたときには全部のDaily Quotaが0%だったものが、数%の数字を示すようになります。 これを、ちゃんとプロモーションして多くの人に使ってもらおうとすると、課金が発生したり制限にひっかかったりしそうです。 で、たとえばDatastore APIの呼び出し回数がヤバいとして、API呼び出しを減らすためにキャッシュしようとすると、MemcacheのほうのAPI呼び出し回数がヤバくなってきます。 で、じゃあということでデータストアにデータを置くようにすると、保存量の制約で課金がかかってきます。で、それならと、データストアに置くのはシリアライズしたデータにしてデータ量が最低限になるようにすると、今度はその処理をするためのCPU時間で課金がかかってきます。 コードを

    Google App Engineでコードを書くと、処理のひとつひとつが課金に見える
  • HTML5ローカルストレージの本当の難しさ 2009-11-16 - きしだのはてな

    HTML5でローカルストレージが使えるようになる。 そこでちょっと使ってみようと思ったのだけど、これはかなり難しいのではないかと思った。 もちろん、データを入れたり出したりするだけなら、window.openDatabaseなどとして、普通にSQLを発行すればいい。 SQL呼び出し結果の取得がコールバックになっているので少しコーディングは面倒だけども、それを除けば特に難しいことはない。 HTML5 ローカルストレージが難しいのは、実際にアプリケーションを組むときにそれが使えるとは限らないし、使えるときは唯一のDBではないということだ。 つまり、まず過渡期では、HTML5 ローカルストレージが使えるブラウザと使えないブラウザが混在する。Google Gearsをインストールすることで同様のことは可能だけど、そこでもGoogle Gearsをインストールしているブラウザとしてないブラウザが混在

    HTML5ローカルストレージの本当の難しさ 2009-11-16 - きしだのはてな
  • ソフトウェア工学、ソフトウェア理学、ソフトウェア人文学 - 2009-03-10 - きしだのはてな

    ソフトウェアには、3つの側面があると思う。 どういう切り口で3つの側面を取り出してもいいのだけど、とにかく3つの側面がある。 最近は、工学・理学・人文学の側面として考えるようになってきた。 たとえば、論理学などからプログラムの表現を考えていくようなプログラム意味論は理学だと思う。それから、プログラムの手続きのグラフ構造から最適化や計算可能性を考えるような、計算理論も理学になる。 なので、理学では意味論と計算論に分かれる。 この、理学だけでは実際に動くプログラムは組めないので、データベース論だとかユーザーインタフェースだとか、アプリケーションを組むためのことも考えないといけない。 理学をもとにアプリケーションを考えることになるので、これは工学になる。工学は多岐にわたる。 ただ、これをソフトウェア工学というと、別の分野になってしまう。 ソフトウェアを作成するとき、基原理やアプリケーションの手

    ソフトウェア工学、ソフトウェア理学、ソフトウェア人文学 - 2009-03-10 - きしだのはてな
  • Twitterのアーキテクチャと遅延のしくみを考えてみる - 2009-03-04 - きしだのはてな

    今日もTwitterは遅延してたんで、その遅延が起こるようなTwitterのアーキテクチャを考えてみるよ。Twitterの不具合から考えてみただけで、完全に想像であって、実際になにかの資料に基づいたりはしてないので、念のため。 まず、サーバー構成はこんな感じ。 Webサーバーとデータベースサーバーは当然として、投稿したときの処理を管理するためのメッセージキューとユーザートップページを保存しておくキャッシュがあると思う。 ちなみにこのメッセージキューは今までRubyで書かれていたものがScalaに書き直されたらしく、Twitter Kestrel Projectとしてソースが公開されてる。 Twitter message queues move to Scala | The Scala Programming Language で、データベース。 ユーザーテーブルとステータステーブルはもちろ

    Twitterのアーキテクチャと遅延のしくみを考えてみる - 2009-03-04 - きしだのはてな
  • クラウド時代のトランザクション(2009-02-09 - きしだのはてな)

    今のデータベースシステムでは、トランザクションはACIDという考え方が基になってます。 これらの用語の頭文字をとってACIDです。 Atomicty 原子性:トランザクション中の処理は全部行われるか全く行われないか Consistency 一貫性:トランザクションが完了したとき、データの状態が正しい Isolation 分離性:複数のトランザクションが実行されても、完了してないトランザクションが他のトランザクションに影響しない Durability 永続性:トランザクションが完了したら、その状態は保存される。 ただ、分散システムでACIDを適用しようとすると、複数のサーバーで処理を分担させたときに一台のサーバーがこけてたらトランザクションが全く行えないとか、トランザクションマネージャーがボトルネックになってしまうとか、スケールアウトしにくくなってしまいます。 Brewerという人が、一貫

    クラウド時代のトランザクション(2009-02-09 - きしだのはてな)
  • RDBMSの時代の終わりが見えてきた - きしだのはてな

    クラウドと一緒にやってきたもの 最近、クラウドが流行ってます。 GoogleMapResuceから始まって、MicrosoftのAzureまで、大手のクラウド製品が出揃った感じ。 で、そこで、こんなクラウド製品が出ましたというときに、必ずといっていいほどそのクラウド用のデータベースの説明があります。そして、それはRDBMSではありません。 GoogleだとBigTable、MicrosoftだとSQL Data Services、あとはAmazonSimpleDB。どれも、基的にはひとつのテーブルにハッシュコードでアクセスするようになっています。 ほかのクラウド製品も、Oracle Coherenceだったり、楽天のRomaだったり、非RDBMSのデータストレージを提供します。 クラウドというわけではないけど、mixiのTokyo TyrantやApache CouchDBも、RDB

    RDBMSの時代の終わりが見えてきた - きしだのはてな
  • 1