タグ

programmingに関するkzk_watanabeのブックマーク (9)

  • 論文紹介: The Evolution of C Programming Practices: A Study of the Unix Operating System 1973–2015 - みずぴー日記

    ICSE 2016勉強会に参加するために論文リストを確認していたら、40年間のC言語のプラクティスの変遷を追った論文がおもしろかったので紹介する。 対象の論文 論文: The Evolution of C Programming Practices: A Study of the Unix Operating System 1973–2015 論文中で使われれたデータ: https://github.com/dspinellis/unix-history-repo 要約 過去40年間のUnixのソースコードを分析し、コーディングスタイルの変化を調査した。その結果、以下のことが分かった。 新しい言語機能は価値のあるものならば採用される レジスタ割り当てをコンパイラに任せるようになる スペースをどこにいれるかなどのコードの書き方が統一されていく 分析対象 1972年以降にリリースされた計66個

    論文紹介: The Evolution of C Programming Practices: A Study of the Unix Operating System 1973–2015 - みずぴー日記
  • 関数型プログラミングはまず考え方から理解しよう

    関数型プログラミングが注目されて久しいです。 そろそろ勉強しておかないとなぁということで調べてみるものの、情報として出てくるのは"高階関数","カリー化","遅延評価","モナド"などの物々しい単語の数々。これらを勉強して理解した気になったものの、プログラムを書こうと思うと全然書けませんでした。 結局、関数型言語を実現する手段を学ぶ前に関数型と言われるパラダイムを理解しないことには書けません。ということでここでは関数型プログラミングの"手法"ではなく、オブジェクト指向と関数型プログラミングを比較しながら考え方の違いを見ていきます。 日の例題 プログラミング課題を設定してオブジェクト指向と関数型で解答してみましょう。 課題: 唐揚げ弁当がいくつかあるとします。それぞれ唐揚げが複数入っています。 この中からx個の唐揚げをつまみいするプログラムを作りましょう。 つまみいはバレないようにする

    関数型プログラミングはまず考え方から理解しよう
  • 計算量はコンピュータ性能論の「入り口」にすぎない--専門家が語る、IT屋に知っておいてほしい基礎知識

    情報処理における全国のエキスパートが一堂に会したリクルート主催の「春の情報処理祭」。HPC(High Performance Computing)研究分野の専門家である、京都大学の中島浩教授は、HPCの役割や速さの秘密について説明するとともに、HPCがビジネス全体にもたらす影響を語ります。コンピュータの性能を生かすために知っておくべき、HPCの基礎知識とは?(春の情報処理祭in京都より) ハイパフォーマンスコンピューティング(HPC)とは 中島浩氏:(BGM「Let It Be」を流しながら登場)さすがにビートルズの「Let It Be」ぐらいは知っているかな。皆さんが生まれるずいぶん前の歌ですけれども。 『アナ雪(アナと雪の女王)』というのがあって、あっちは「Let It Go」なんですね。こっちは「Let It Be」で、何が違うのか。英語のニュアンスはほとんど同じなんですけれども「L

    計算量はコンピュータ性能論の「入り口」にすぎない--専門家が語る、IT屋に知っておいてほしい基礎知識
  • git blameによるSRP(単一責任原則)の定量化 - どこでも見れるメモ帳

    はじめに ソースコードを静的解析することでSRP(単一責任原則)を定量的に算出します.*1 svn blameによるSRP算出*2を参考に、git blameによる算出をshで行ってみました. このSRP値が最大のモジュールが王様モジュールに相当します. # 単一責務性の違反指数(SRP) # SRP=R+U+((L/100)-5) # R:修正リビジョンのユニーク数 # U:修正ユーザのユニーク数 # L:モジュールのライン数 function get_SRP() { local target_filepath=$1 echo $(( \ $(git --no-pager blame --line-porcelain $target_filepath | sed -n 's/^summary //p' | sort | uniq -c | sort -rn | wc -l) + \ $(

    git blameによるSRP(単一責任原則)の定量化 - どこでも見れるメモ帳
  • メソッド名をシンプルにするために、 知っておくと便利な英語のprefixとsuffix - codic ブログ

    メソッド名などをネーミングする際に、知っておくと便利な、接頭辞と接尾辞をリストアップしてみました。どのように元の単語の意味が変わるかのルールを知っておくと、よく使う単語をベースにボキャブラリーを増やすことができるので、覚えておいて損はないと思います。 使う場合は、当たりを付けて実際の使用がないか、Googleなどで調べてみてください。 1. pre-, post- / 事前〜、事後〜 per-は、元の意味に “事前に、前に”、post-は “事後に”という意味が付け加わえます。汎用性が高いのでとても便利です。afterやbeforeの代替になるかもしれません。 // 事前テストする function testBefore(); ↓ function pretest(); // 事後処理する function executeAfter(); ↓ function postexecute();

  • Google Code Jam Japan 2011 練習問題A - 平々毎々(アーカイブ)

    練習問題なら公開してもいいだろう。 問題はこちら。flipflopみたいなSnapperを数珠つなぎした時の出力を求める問題。 問題のサイズを見ると、Largeで1 ≤ N ≤ 30、0 ≤ K ≤ 10^8 なので、O(N * K)なアルゴリズムだと時間がかかってしまう。 そこで頭を使って問題を変換しないといけない。 この手合いであればビット演算でいけるんじゃないかなと予想を立てる。Nは最大で30なので、Nビット整数であればint32に収まる。 というわけで、N=4として、Kを増やしていった時の状態をビット列として書いてみる。 Snapperの状態としては、スイッチのon/offと通電のon/pffがある。そして、i回目のスイッチ状態は、i-1回目のスイッチ状態と通電状態で決まる(xorになる)。 K スイッチ 通電 0 0000 0001 1 0001 0011 2 0010 0001

    Google Code Jam Japan 2011 練習問題A - 平々毎々(アーカイブ)
    kzk_watanabe
    kzk_watanabe 2011/10/05
    なるほど~
  • 関数型言語でのデザイン手法

    Takashi Miyamoto @tmiya_ オブジェクト指向はOOPの他にOOA,OODなど上流工程向けの方法論があるのだが、関数型言語についてもFPの他にFA,FDがあるのだろうか?誰か適切な論文/教科書とか知りませんか? 2010-05-30 09:26:38 Ikegami Daisuke @ikegami__ 探してみます。でも強い型付けか、弱い型付けかで、まるっきり異なるでしょう RT @tmiya_: オブジェクト指向はOOPの他にOOA,OODなど上流工程向けの方法論があるのだが、関数型言語についてもFPの他にFA,FDがあるのだろうか?誰か適切な論文/教科書とか知りませんか? 2010-05-30 09:30:40 Ikegami Daisuke @ikegami__ @tmiya_ 個人的な感想ですが、強い型付けのプログラミング言語で開発を行う場合、実装の前に、全体

    関数型言語でのデザイン手法
  • Haskell for C# 3 Programmers

    I've been occupying myself as best I can, waiting impatiently for .NET 3.5 to come out. In the meantime I've been playing with Lisp and Haskell, two of the languages with the most cache among the smart folks who hang out at Lambda the Ultimate. Well it’s happened: I've fallen head over heels for Haskell. It's just so beautiful. It is a pure functional language and is therefore limited in the kinds

  • DCIアーキテクチャ - Trygve Reenskaug and James O. Coplien - Digital Romanticism

    この記事はartima developerに掲載されている、Trygve Reenskaug氏とJames O. Coplien氏による記事「The DCI Architecture: A New Vision of Object-Oriented Programming」を、著作権者であるBill Bennrs氏の許可を得て翻訳したものです。文内の図の著作権はArtima, Inc.に帰属します。(原文公開日:2009年3月20日) 要約 オブジェクト指向プログラミングはプログラマとエンドユーザの視点をコンピュータコードにおいて統一するものと考えられていた。この恩恵はユーザビリティとプログラムの分かりやすさの両面にわたる。しかし、オブジェクトは構造をとらえるのに長けている一方で、システムの動作をとらえることができていない。DCIはエンドユーザのロールに関する認識モデルとロール間の関係を

    DCIアーキテクチャ - Trygve Reenskaug and James O. Coplien - Digital Romanticism
  • 1