タグ

programmingに関するUDONCHANのブックマーク (41)

  • オブジェクト指向のプログラムに込める「意図」 - 都元ダイスケ IT-PRESS

    その昔、プログラムを覚えたての頃、プログラムってのは単に「処理」を記述するものだと考えていた。処理を1ステップごとに記述し、場合によってはサブルーチンに切り出し、再利用する。 今振り返ると、オブジェクト指向を覚え始めてしばらくして、その意識は変わっていた。当然「処理」を落とし込まなければプログラムは動かない。だから「処理」はプログラムに込める。ただ、オブジェクト指向言語を使うと、これに加えて「意図」を落とし込むことができる。 オブジェクト指向を学び始めた当初、Javaのインターフェイスの存在意義がわからなかった。プログラムは「処理」を記述するものだという視点で見ると、インターフェイスには「処理」を書くことができない。インターフェイスだけでは何も起こらないからだった。 さらに、IDEを使ってコードを追っていると、途中でインターフェイスのソースを開くことになり、「なんだよ、中で何やってっかわか

    オブジェクト指向のプログラムに込める「意図」 - 都元ダイスケ IT-PRESS
  • PHPの「えせプログラミング言語」の弊害 - moriyoshiの日記

    先日のエントリーでも少し触れたが、PHPの最大の問題点は、それが持つ「一見その言語構造がよくあるプログラミング言語の形をとりながら、プログラミング言語の最も大切なところを外している『えせプログラミング言語』である」点にある。Webアプリケーションの開発で注意すべき部分とは何かを根底の部分でちゃんと理解せずにPHPアプリケーションを作ると、後々ひどい目に会うので注意が必要である。 その意味では「PHPでプログラミング言語を学ぶ」などもっての他だし、「JavaでもPHPと同じようなプログラミング言語を作ってWebアプリの開発を効率化しよう」などという発想もとても危険である。 PHPの発想の根底には、「HTMLテンプレート用言語とロジック記述用言語の統一により、開発コストを減らそう」という CGI 時代の安易な発明がある。PHPは、その前近代的な発想を通じて、テンプレートとロジックを同じファイル

    PHPの「えせプログラミング言語」の弊害 - moriyoshiの日記
  • 「実践 Erlang」講義用資料 まとめ - Twisted Mind

    たけまるさんにご推薦いただき、とあるところで Erlang の講師をやることになったので資料を作るメモ 講義について # 明日にでもまとめます 以下での補助事業の一部で「実践 Erlang」の講師を担当させていただくことになりました。 コミュニティから広島に Erlang を広めたいという話を伺い、 少しでもお役に立てればと言うことで快諾させていただきました。 平成21年度「地域経済情報化基盤整備補助事業」 ビジネスベースひろしま−3ESC−コンソーシアム(中国) http://www.meti.go.jp/information/data/c90810dj.html 地域製造業に求められる「エレクトロニクス 化」を促進するために、高機能や新しいサービス を実現するソフトウェア開発を担う地域の中小 IT ベンダおよび係わる人材を育成する。また、 高度化・高付加価値のソフトウェアを提供する体

    「実践 Erlang」講義用資料 まとめ - Twisted Mind
  • MapReduceのJava実装Apache Hadoopを使ってみた (1/3) - @IT

    MapReduceのJava実装Apache Hadoopを使ってみた:いま再注目の分散処理技術(後編)(1/3 ページ) 最近注目を浴びている分散処理技術MapReduce」の利点をサンプルからアルゴリズムレベルで理解し、昔からあるJava関連の分散処理技術を見直す特集企画(編集部) Apache Hadoopプロジェクトとは何か? 特集では、いま再注目の分散処理技術についていろいろと紹介してきました。前編の「GoogleMapReduceアルゴリズムをJavaで理解する」では、分散処理技術で最近注目を浴びているものとして、グーグルMapReduceアルゴリズムを紹介し、中編の「イロイロな分散処理技術とイマドキのWebサービス」では、MapReduceに至るまでのさまざまな分散処理技術Webサービスについて紹介しました。 そのMapReduceアルゴリズムをJavaで実装したも

    MapReduceのJava実装Apache Hadoopを使ってみた (1/3) - @IT
  • Collection & Copy - RubyについてJavaプログラマが知るべき10の事柄

    翻訳原文:10 Things Every Java Programmer Should Know About RubyJim Weirichコンサルタント / Compuwarejim@weirichhouse.org Copyright 2005 by Jim Weirich (All Rights Reserved)自己紹介ジム・ワイリック (Jim Weirich)Compuware社コンサルタントJavaのプログラマRubyの熱狂的支持者大事なことを、まず先に私は以前、大規模製造会社の従業員に就業後のC言語コースを教えていました。提出されたCのコードのスタイルをちょっと見ただけで、生徒が以前にどんな言語を利用していたかを簡単に当てられました。全くもって当のことです。「どの言語でも、君はFORTRANを書けるね」 Rubyを調査中のJavaプログラマなら、Rubyが色々な点でJav

  • The Evolution of a Programmer

    #include <stdio.h> void main(void) { char *message[] = {"Hello ", "World"}; int i; for(i = 0; i < 2; ++i) printf("%s", message[i]); printf("\n"); } #include <iostream.h> #include <string.h> class string { private: int size; char *ptr; string() : size(0), ptr(new char[1]) { ptr[0] = 0; } string(const string &s) : size(s.size) { ptr = new char[size + 1]; strcpy(ptr, s.ptr); } ~string() { delete [] p

  • C言語で非決定的計算 - sumiiのブログ

    http://www.kmonos.net/wlog/96.html#_2319090427 今ある普通の言語の場合、「別に最左である必要はなくて、最大要素のインデックスならどれでもよかった」という実装をすることができません。 「普通の言語」どころか(書いた私が)頭のおかしいコードですが、 > cat max.c #include <stdio.h> #include <assert.h> #include <setjmp.h> void amb(int x, int y) { assert(0); } /* longjmpは返値型がvoidなのでint型に合わせる */ int mylongjmp(jmp_buf cont, int ans) { longjmp(cont, ans); assert(0); } /* arrの最大要素(の一つ)のインデックス+1を非決定的に返す */ v

    C言語で非決定的計算 - sumiiのブログ
  • 僕がJavaを選ばなかった理由 - カタチづくり

    先日、大学時代の後輩と久しぶりに会った。彼はSeasarのコミッタにもなっているとても優秀なJavaプログラマだ。 その彼が、ビールを片手にこう尋ねた。 「どうしてC#にしたんですか?Javaを選ばなかった理由って何かあるんですか?」 僕は答えた。 「Javaにはstructがないから、かな。」 彼はずいぶん驚いた様子だった。 「えーっ?struct?・・・そんなに必要ですか、struct?」 彼は、いわゆるSIに近いところにいて、ウェブアプリなどの開発などにも携わっていて、という立場。一方僕は3次元CAD関係だから、彼とは全く違う分野でやっている。二人ともプログラマでありながら、お互いに知らない分野をやっているので、こういう情報交換はとても面白い。 「ほら、3次元の幾何演算をしようと思ったら、座標値(x,y,z)を格納したり演算したりしたいからさ、ベクトルクラスとか作るでしょ?doubl

    僕がJavaを選ばなかった理由 - カタチづくり
  • Objective-Cの構文のキモチワルさを伝えたい。。 - このブログは証明できない。

    AIRでアプリを作ってみて、Macアプリもこれでいいやと感じました。 HTML + JavaScriptでAdobe AIRアプリを作ってみた - このブログは証明できない。 が、一応はMacネイティブなアプリも作ってみたい。それに、その知識はiPhone開発に直結します。 というわけで、ちょっと良さげなを購入。「CocoaではじめようMac/iPhoneプログラミング入門」という新しい。プログラミングの入門書を買うのはメズラシイ。 なかなかイイっす。XcodeとInterface Builderの使い方。Cocoaプログラミングの仕方。Objective-Cの構文。実際のMacアプリ作成。そして、そのアプリをiPhoneに移植。さすがにiPhoneの機能(加速度センサーとか)までは解説されていませんが。そこは、iPhone SDKの参考書を読めばOK。逆に、Cocoaという切り口で、

    Objective-Cの構文のキモチワルさを伝えたい。。 - このブログは証明できない。
  • プログラマは履歴書をどう見るか

    当の見方はこちら 上のから読むといい。 How to recognize a good programmer (いいプログラマの見分け方) Another Resume Tip (さらに履歴書のコツについて) - Joel on Software Ten Tips for a Slightly Less Awful Resume (履歴書をもうちょっとマシにするための10のヒント) - Steve Yeggeによるアドバイスで、楽しい読み物。 Getting your resume read (履歴書を読んでもらうには) - Joel on Software

  • クラスとは何かを集合論から考えなおす - 2009-03-08 - きしだのはてな

    いま論理学とか集合論とかを勉強してるので、クラスって何かという話のときも集合論として考えてた。 なので、そのとき考えたことをまとめておく。 まず、「なにか」があるとする。「なにか」はなんでもいい。 そして、その「なにか」の集合を考える。たとえば"aaa"や"bbb"を要素とするStringという集合を考える。3とか5とかを要素とするIntegerという集合を考える。 ここで、その集合がなにを扱うかという規則をどうするかというのがオブジェクト指向としては大切になるかもしれないけど、今回はそこには触れないでおく。 とにかく、「なにか」と『「なにか」の集合』を考えることをここでは大切にする。 これで『「なにか」の集合』を考えたところで、『「なにか」の集合』を要素とする集合を考えて、この集合をクラスとする。つまり、クラスという集合は、StringやIntegerといった集合を要素にもつ。 ここで、

    クラスとは何かを集合論から考えなおす - 2009-03-08 - きしだのはてな
  • Perl を crash させる方法 - モダンなPerl入門

    Perl を Crash させたい。そんな欲求を抑えきれないあなたのために、いくつかの方法を教えよう。 いろいろな crash unpack で不正アクセス perl -e 'unpack "p",0xdeadbeef' pack において 'p' は A pointer to a null-terminated string. を意味する。不正なメモリ領域にアクセスすれば死ぬのはあたりまえである。 overload の中で再帰する perl -e 'use overload q{""}=>sub{"$_[0]"};$a=bless{},main;"$a"' overload の stringify させる部分などで無限ループにおちいると、segv する。 このバグは昔から知られており、ticket が切られているが、なおっていない。 @INC の中の coderef で再帰する perl

  • エンジニアの勉強法について

    ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog こんにちは。 サービス統括部に所属しております、堀 邦明と申します。 普段はYahoo! JAPANトップページのフロントエンドエンジニアとして、JavaScriptPHP,Perlといった言語を利用して開発しています。 この度、デベロッパーズサミット2009というイベントにおいてエンジニア勉強法というテーマでJavaScript勉強法についてお話をさせていただきました。 今回は、そのときのお話について発表しきれなかった部分も含めてご紹介できればと思います。 勉強の分類 勉強には大きく分類して2つのステップがあると思います。 1. 情報収集 1つは情報収集です。 技術書やウェブサイト、ブログを読んだり、勉強会やセミナーに参加

    エンジニアの勉強法について
  • java.util.Dateをjava.sql.Dateにきちんと変換する方法 - ひがやすを技術ブログ

    多くの人はこうやればいいと思っているかもしれません。 java.util.Date d = new java.util.Date(); java.sql.Date d2 = new java.sql.Date(d.getTime());確かにこれでも一応変換はできますが、きちんと変換してはいません。java.sql.DateのJavadocを見るとこう書いてあります。 SQL DATE の定義に対応させるために、java.sql.Date のインスタンスでラップされたミリ秒の値は、インスタンスが関連した特定のタイムゾーンで時間、分、秒、ミリ秒をゼロに設定することで、「標準化」する必要があります。 つまり、java.util.Date#getTime()をjava.sql.Dateにただ渡すだけでは不十分で、「特定のタイムゾーンで時間、分、秒、ミリ秒をゼロに設定しなければいけない」のです。そ

    java.util.Dateをjava.sql.Dateにきちんと変換する方法 - ひがやすを技術ブログ
  • メタプログラミングの光と影 - ひがやすを技術ブログ

    メタプログラミングとはソースコードを生成するプログラミングのことです。メタプログラミングによって生成したソースコードは、eval関数で実行することができます。 メタプログラミングとは、ロジックを直接コーディングするのではなく、あるパターンをもったロジックを生成する高位ロジックによってプログラミングを行う方法、またその高位ロジックを定義する方法のこと。 メタプログラミング - Wikipedia だから、eval関数は、手段であり、メタプログラミングそのものではない。これは弾さんが指摘してますね。 evalだけがメタプログラミングの技法ではないし、またevalはその威力ゆえ最後の選択肢とすべきだ。 弾さんのパフォーマンスの指摘に対して、miyagawaさんが、「必ずしもevalが遅いとは限らない」と指摘してますね。 メタプログラミングとevalのベンチマーク - Bulknews::Subt

    メタプログラミングの光と影 - ひがやすを技術ブログ
  • 結論:結局、Javaはクロージャを使えるの? - lethevert is a programmer

    【追記 2008/7/2】とても昔のClosureについて書いた記事が注目を集めてしまったみたいですが、ぜひ、もっと後で書いた次の記事とその関連スレッドの方も確認してみてください。このときよりも、もう少し事情が分かってから書いたものなので、より正確に状況を理解できると思います。それに、私自身、この言葉にはまだ混乱しています・・・ http://d.hatena.ne.jp/lethevert/20070524/p2 - という問いに対して、そろそろ私の結論を整理しておきます。 これは、将来の自分に対する参照の便のための整理です。 前提知識 前提知識として、こちらの内容を読んで理解しておきます。 Closure (computer programming) - Wikipedia [id:lethevert:20060119:p1] [id:lethevert:20060121:p2] また

    結論:結局、Javaはクロージャを使えるの? - lethevert is a programmer
  • 3人の天才が生んだパソコン移植版「ゼビウス」 - シューティングゲーム探究記

    ゼビウスを生んだ遠藤雅伸、それに追従するかのように世に出た 大堀康祐(うる星あんず)、松島徹、藤岡忠。この3人の天才が絡んで生まれたパソコン移植版ゼビウス誕生秘話です。 ゼビウスはスペースインベーダーやギャラクシアンがそうであったようにパソコンへの移植が期待されていました。しかし、ゼビウス用に設計された基板はCPUを3つも利用しているため当時のパソコンに比べて非常に性能が高く、移植は不可能であると当時の記事でも喧伝されていました。ところがゼビウスの発売から10ヶ月足らずしか経っていない1983年12月、誰もがゼビウスが稼働することすら夢に思わなかったであろうパソコン「PC-6001」で動かせる移植版ゼビウス第1号が発売されたのでした。その「タイニーゼビウス」をプログラムした松島徹は当時、中学生でした。不可能と思われていた移植を可能にしたのは天才ならではの大胆な発想の転換があったからでした。

    3人の天才が生んだパソコン移植版「ゼビウス」 - シューティングゲーム探究記
  • はやいTCPサーバの書き方 - nyaxtのPC作業ログ

    cagra高速化にあたってのノウハウを一部公開してみます。また明日校正/更新します。つっこみ待ちです。 select(2)の代わりにepoll_wait(2), kqueue, /dev/epoll等を使う 他に山ほど解説ページがあるので略 大量のディスクリプタを処理するようなサーバの場合、多少効果があるかもしれません。しかし、クライアント数が少ない場合、劇的な性能の向上は見込めないとおもいます。クライアント数が多い場合は、1セッション1スレッドなモデルではOS側のタスクスイッチングのオーバーヘッドが効いてくることも多いです。クライアント数を増やすには複数のセッションを1スレッドで処理できるようにすると良いです。実装にあたっては、non-blocking ioを活用すると効果的です。 TCP_NODELAYを設定する Nagleアルゴリズムをオフにします。多少応答性が良くなります。 これっ

    はやいTCPサーバの書き方 - nyaxtのPC作業ログ
  • Java5 - For-Each ループ

    Java Is the Language of Possibilities Java is powering the innovation behind our digital world. Harness this potential with Java resources for student coders, hobbyists, developers, and IT leaders.

  • 参照とポインタの違い - 2008-12-11 - mad日記

    科学者とあたまを書いたひとだけれども、この名前どっかで聞いた事があるなと思ったら, 昨日劇団青年座の人の講演で聞いたのだった。 「フユヒコ」という劇団青年座の公演が明日NHKで放送されるらしいです。冬彦ってのは寺田寅彦のペンネームらしい。 http://cgi4.nhk.or.jp/hensei/program/p.cgi?area=001&date=2008-12-12&ch=31&eid=9950 おもしろそうだから観てみようかな。 ところで小柴先生が同じような事を言っていたのを思い出した。このインタビューは面白い。 一流の理論家は、「自分の理論では、ここまでは使えるけれど、これから先は分からない」という適用限界をいつも意識している。ところが二流の理論家というのは、自分が名前を覚えた、あるいは、使った理論で何でもやれると思ってしまう。二流の理論家に困らされるのは、新しい実験計画が出てき

    参照とポインタの違い - 2008-12-11 - mad日記