タグ

関連タグで絞り込む (204)

タグの絞り込みを解除

Programmingに関するVoQnのブックマーク (311)

  • OpenGLでムカつくこと

    Rich Geldreich's Blog: Things that drive me nuts about OpenGL Valve社員のRich Geldreichが、OpenGLの設計が古臭すぎることについて不満を爆発させている。 OpenGLについてムカつくことを脳内ダンプしてみる(これは個人的な件秋であって、Valveや同僚の見解ではない。あと、ここ数年、OpenGLと格闘してきたので、今日は機嫌が悪い)。これを投稿する理由はこうだ。GL APIには再設計が必要だ。というのも、思うに、MantleやD3D12がどうせ昼飯前にOpenGL APIを駆逐してしまうだろうから、この問題については、今考える必要があるのだ。 ここに見れば些細な問題もある。単にAPIのトレースの問題というのもある。しかし、それらの問題が積み重なって、他の開発者にGL APIという環境に飛び込むよう誘うのを躊

    VoQn
    VoQn 2014/05/20
    GLUT使っててもOpenGL簡単なモノ動かすまでがしんどかった記憶がある
  • 新人プログラマに知っておいてもらいたい人類がオブジェクト指向を手に入れるまでの軌跡 - Qiita

    あわせて読みたい 新人プログラマに知ってもらいたいメソッドを読みやすく維持するいくつかの原則 ペアプログラミングして気がついた新人プログラマの成長を阻害する悪習 「オブジェクト指向プログラミング」と「関数型プログラミング」のたった一つのシンプルな違い あきらめるにはまだ早い!ソースコードの品質向上に効果的なアプローチ 2015年に備えて知っておきたいリアクティブアーキテクチャの潮流 この記事について この記事は新人向けの研修内容を再編集してお送りいたします。 ここで述べる内容はどのようにして現在のプログラミングスタイルが生まれてきたかを理解することで、よりよいプログラムを書くためのもので、正確なソフトウェア工学の歴史を学ぶためのものではありません。正確な歴史を把握したい場合は、原典をあたるようにしてください。 また、想定している読者は「よくあるオブジェクト指向プログラミングの学習」を既にし

    新人プログラマに知っておいてもらいたい人類がオブジェクト指向を手に入れるまでの軌跡 - Qiita
    VoQn
    VoQn 2014/05/14
    よくまとまってる
  • Learn C • Build Your Own Lisp

    Build Your Own Lisp Learn C and build your own programming language in 1000 lines of code! If you're looking to learn C, or you've ever wondered how to build your own programming language, this is the book for you. In just a few lines of code, I'll teach you how to use C, and together, we'll start building your very own language. Along the way we'll learn about the weird and wonderful nature of Li

    VoQn
    VoQn 2014/04/08
    C言語でLisp処理系を実装するチュートリアルブック
  • 非公式PDF版SICPの全訳を公開しました - minghaiの日記

    また1年振りの更新となりかけました。 Andres Raba氏により2011年から開発が続けられている、非公式PDF版SICPを全訳しました。 ファイル 恒例のgithubです。 https://github.com/minghai/sicp-pdf jsicp.pdfが日語版の体です。 ejsicp.pdfはデバッグ用の日語・英語併記となります。 ライセンスはCC BY-NC-SA 3.0です。商業使用は認められないことにご注意下さい。 SICPとは何か? SICPとはMITが作成した何も知らない新入生向けのプログラミングの教科書です。 プログラミングと強調したことには理由があります。このは良くあるプログラミング言語の教科書ではなく、あくまでもプログラミングを勉強するための教科書だからです。このことはこのの中でも、最初の前書き、序文にて何度でも繰り返し強調されています。筆者達が

    VoQn
    VoQn 2014/04/03
    4章5章の内容もう忘れはじめているし、この機会に学び直すか
  • Racket

    #lang racket/gui (define my-language 'English) (define translations #hash([Chinese . "你好 世界"] [English . "Hello world"] [French . "Bonjour le monde"] [German . "Hallo Welt"] [Greek . "Γειά σου, κόσμε"] [Portuguese . "Olá mundo"] [Spanish . "Hola mundo"] [Thai . "สวัสดีชาวโลก"] [Turkish . "Merhaba Dünya"])) (define my-hello-world (hash-ref translations my-language "hello world")) (message-box "" my

    VoQn
    VoQn 2014/04/03
    あー、DrScheme後継なのか
  • http://imranontech.com/2007/01/24/using-fizzbuzz-to-find-developers-who-grok-coding/

    http://imranontech.com/2007/01/24/using-fizzbuzz-to-find-developers-who-grok-coding/
    VoQn
    VoQn 2014/03/27
    FizzBuzz問題の発端。この問題の作者は「こんな程度の問題が解けない奴、数十分かけて解く自称ベテランとかばっかりでうんざりだ」っていう文脈で紹介している
  • Overloading Macro on Number of Arguments

    I have two macros FOO2 and FOO3: #define FOO2(x,y) ... #define FOO3(x,y,z) ... I want to define a new macro FOO as follows: #define FOO(x,y) FOO2(x,y) #define FOO(x,y,z) FOO3(x,y,z) But this doesn't work because macros do not overload on number of arguments. Without modifying FOO2 and FOO3, is there some way to define a macro FOO (using __VA_ARGS__ or otherwise) to get the same effect of dispatchi

    Overloading Macro on Number of Arguments
    VoQn
    VoQn 2014/03/21
    C言語マクロの引数オーバーロードテクニック。なるほどそんな技が…
  • あなたのJavaコードをスッキリさせる、地味に便利な新API 10選(後編) - Taste of Tech Topics

    こんにちは。 アキバです。 日3/18、ついに、Java8が正式リリースされますね! もうダウンロードされましたか?ってまだですかね?私はまだです(だって公開前にエントリ書いてるんだもんね) 2014/03/19追記:Oracleのページが更新されました!→こちら さて、前回に続いて、Java8で追加された地味で便利なAPIを紹介していきます。 今回は、みんな大好きMapとConcurrent、あとちょびっとComparatorです。 3. Map操作編 (1) Map#getOrDefault() これまでは、Mapから値を取得してnullだったらデフォルト値を使用する、みたいなコードを以下のように書いていたと思います。 Map<String, String> map; // 何らかのMap String value = map.get("key"); if (value == nul

    あなたのJavaコードをスッキリさせる、地味に便利な新API 10選(後編) - Taste of Tech Topics
    VoQn
    VoQn 2014/03/18
    java8で追加された Map(getOrDefault,replace,computeIfPresent), Concurrent(LongAdder,LongAccumulator), Comparator(naturalOrder,reverseOrder) APIのイントロダクション記事。ラムダ式が随分軽快な印象持てるわ
  • muo-notes

    PetaLinuxとは何なのか 私の現時点でのPetaLinux認識は次のとおりです。 Xilinxが提供しているカスタムLinux構成管理ツール兼カーネル・rootfsビルダー。標準のYocto Linux向けビルドツールチェーンに手を加えてXilinx SoC向けの各種コンフィグを追加したり、bitbakeコマンド体系をラップして扱ってくれたり、Yocto向けの適切なレシピ管理あたりまでやってくれるもの。Vivadoが生成するハードウェア定義を利用し、当該ハードウェア向けLinux一式の構築から各種媒体への一次デプロイメントまである程度カバーする。 PetaLinuxの基をざっと把握する Xilinxのドキュメントをひたすら読んでいくのが良いです。 私はUG980→1156→1157→1144という順でざっと読んでいきました。順序はドキュメント一覧(https://www.xilin

    VoQn
    VoQn 2014/03/17
    PNaClとasm.jsの動向について
  • Unity のシェーダの基礎を勉強してみたのでやる気出してまとめてみた - 凹みTips

    はじめに 近年の GPU の進化に伴い 3D 周りの表現力がとても豊かになりました。そしてこの多彩な表現を可能としているのはシェーダによるところが大きく、シェーダを理解して書くことが出来ると、表現できることの幅がとても広がります。 Unity では素晴らしいことにシェーダを強力にサポートしていて、多様なデフォルトのシェーダに加え、カスタムシェーダを簡単に作るための土台が用意されています。しかしながら、パッとリファレンスや色々なサイトを見ただけでは、何がどうなっていて何をどうすれば良いのかなかなか分からないところがあります。 そこで、これから始める人の参考になればと思い、勉強しながら理解したことをまとめておこうと思います。調べながら書いているので、間違いなども多々あると思いますが、見つけた際はコメントや Twitter などでご指摘いただけると嬉しいです。 シェーダで色々出来る例 Unity

    Unity のシェーダの基礎を勉強してみたのでやる気出してまとめてみた - 凹みTips
    VoQn
    VoQn 2014/03/17
    参照リンク多めで学習の基点によい
  • ウェーブレット木の世界 - Preferred Networks Research & Development

    岡野原です。ウェーブレット木の解説を統数研チャンネルにて行いました。 統数研チャンネル(プレミアム会員ならしばらくタイムシフト視聴可能)。 ウェーブレット木は万能のデータ構造であり、系列データ、全文検索、グラフ、二次元情報、フィンガープリントなど様々なデータに対して多くの操作をサポートします。 解説では大規模データの背景、ウェーブレット木の作り方、使い方、様々なデータへの適用、最前線(ウェーブレット行列)などを紹介しています。解説は拙著「高速文字列解析の世界」とあわせてみていただけたらと思います。

    ウェーブレット木の世界 - Preferred Networks Research & Development
  • The Julia Programming Language

    Fast Julia was designed for high performance. Julia programs automatically compile to efficient native code via LLVM, and support multiple platforms. Dynamic Julia is dynamically typed, feels like a scripting language, and has good support for interactive use, but can also optionally be separately compiled. Reproducible Reproducible environments make it possible to recreate the same Julia environm

    The Julia Programming Language
  • Semantic Versioning 2.0.0

    Semantic Versioning 2.0.0 Summary Given a version number MAJOR.MINOR.PATCH, increment the: MAJOR version when you make incompatible API changes MINOR version when you add functionality in a backward compatible manner PATCH version when you make backward compatible bug fixes Additional labels for pre-release and build metadata are available as extensions to the MAJOR.MINOR.PATCH format. Introductio

    VoQn
    VoQn 2014/02/26
    標準化を目指したバージョン番号の付け方の仕様提案
  • MVCの流れを簡単にまとめてみる - Qiita [キータ]

    理解しやすいように適当に遮ったり、言い切ってしまったところもあるがご容赦いただきたい。 MVCの登場 MVCは、SmalltalkのGUIライブラリのモデルとして登場した。 これはGUIアプリケーションを記述する際に、適切なモデル化を進めるのにとてもいい考え方だと思われていたし、実際にそうだった。 これはアーキテクチャパターンとして、それぞれがどのように依存するべきか、どこにコードを書くべきかということを端的に表している。 安定依存の原則というものがある。これは、要件が安定しているモジュールに依存し、要件が変動しやすいモジュールには依存しないようにするという原則だ。MVCアーキテクチャでは、GUIアプリケーションの安定関係をModel > View > Controllerの順でとらえている。データ処理や業務要件というのは安定しており、UIパーツもまた比較的安定している。それらを統合してア

    MVCの流れを簡単にまとめてみる - Qiita [キータ]
    VoQn
    VoQn 2014/01/18
    MVCデザインパターンの起こりからDDDが考えられるようになった経緯まで。個人的にはMVVMとかMVPもっと流行って安定したデザインパターンになってほしい
  • メタプログラミングをして割に合うかの判断基準:処理を1箇所に局所化できるか - 2014-01-16 - ククログ

    毎日他の人のコミットをながめる文化で生活していると、理由は浮かばないけど「ん?このコミットはなんか気になる」と感じるようになります。それは、新しいことを知ることができたコミットだったり、真似したくなるようなコードが入っているコミットだったり、なんかまずそうな気がするコミットだったり、様々です。 「ん?」と感じてコミットを見直してみても、何が気になったか自分でもすぐにわからない場合があります。そんなとき、気になったことをコミットした人に伝えるために、コミットへのコメントをまとめ始めます。「コミットした人に伝えるため」というように、他の人に伝えようとすることがポイントです。他の人に伝えるためにまとめようとすると、思いの外なにが気になったかまとまるものです。 今回は、メタプログラミングを使ってコードを整理したコミットで「ん?」と感じたときのことについて紹介します。このおかげで「メタプログラミング

    メタプログラミングをして割に合うかの判断基準:処理を1箇所に局所化できるか - 2014-01-16 - ククログ
    VoQn
    VoQn 2014/01/18
    個人プロダクトはともかく、他者がメンテする前提だったら短さより「分かりやすいか」で考えた方がいいですよね
  • FICC | デジタルエージェンシー

    LEADING BRANDS TO DIGITAL WE ARE A DATA-DRIVEN MARKETING AGENCY FICCはデータに基づく論理的なマーケティングを提供するデジタルエージェンシーです。 消費者に価値あるコンテンツと体験を届けるため、戦略立案から施策実行まで一貫して提供しています。

    FICC | デジタルエージェンシー
    VoQn
    VoQn 2014/01/15
    あー、jsと言わず最初に「手習い的に触れる習慣を作る」っていうのはどのスキルにも通じると思う(逆に言えばプログラマーもデザイン行為に触れた方がいいですよ)
  • プログラミング言語内の正規表現リテラルについて — KaoriYa

    プログラミング言語内の正規表現リテラルが是か非か、 そんな議論にいまさらながら参加してます。 ただしどちらかの立場に立って擁護したいというわけではなく、 話を抽象化というか一般化して問題の質にせまります。 今週始めに「プログラミング言語内に正規表現リテラルが必要かどうか」という論争がtwitterの一部で盛り上がっておりました。私個人の意見としては以下の発言に集約されております。 正規表現リテラルの議論、プログミング言語の良さをどう定義するかに、結論が大きく依存しそう。言語の定義を最小にするなら要らないし、記述を最小にするなら要る。更に言うと描きやすさと読みやすさの定義と比重。 — MURAOKA Taro (@kaoriya) 2013, 12月 18 つまり言語の良さなどドメイン(≒用途)で決まるのだから、その設定次第で結論はどちらにでもできてしまう、というわけですね。 でも、まてよ

  • C言語でハッシュテーブルを実装してしまった - へぼいいいわけ

    2ちゃんねるのdatを高速で処理するプログラムを書いていたら、いつのまにかC言語でハッシュテーブルを実装していました。これぞ車輪の再発明って感じです。 名前は「unhash」としておきます。 とりあえず、ダウンロードはこちらです。 http://www.heiwaboke.net/lang-c/src/unhash-0.01.zip 2012/09/16追記 ソースコードを紛失してしまったので、こそこそ改造してたバージョンの方にリンク貼っておきます。 名前が変わってちょっとだけ省メモリ化していますが、大の仕組みと使い方は同じです。 参考程度にどうぞ。 https://github.com/tanaton/unmap ベンチマーク 一番下がunhashです。 ベンチマークの方法はC/C++ で使える HashtableCommentsAdd Starを参考にしました。 tanaton@he

    VoQn
    VoQn 2013/12/16
    GitHub に上がっているものは命名規約もAPIも変わってるけど実装内容は勉強になる
  • リリカル☆Lisp開発日記 » Blog Archive » 自作Lispインタプリタを公開して後悔しないように

    (この記事はLisp Advent Calendar 2日目のためのエントリです。) 「え、お前の家、カレーに味噌汁付けてるの!?」 頑張って作っていたLispインタプリタがついに完成。友達に自慢してソースコードを見せてみたら 「え、なんでそんな実装になってるの? それって変じゃない?」 といった反応が返ってきたことはありませんか。きっとありますよね。昔から「人の数だけLispがある」と言われていまして、書く人によって色々と違いが出てくるのは当然です。しかし、どんな違いが出てくるのかを知らないと、要らぬ混乱を招く可能性があります。 この記事を読むことで、一言に「自作Lispインタプリタ」と言っても、色々なやり方があることを知り、友人の心ない発言に傷ついたり、逆に人を傷つけないようにする知識を身につけた気分になれます。 「あの人は自分でごみ集めを書いてくれたのに」 Lispインタプリタを書く

    VoQn
    VoQn 2013/12/16
    はい(実際やってみるとシンボルのlookupにHashtable実装するとかGCの為にVM作るとかそっち方向に時間の殆どを取られた気がした…)
  • 私が考える安全なプログラムを書くために必要なこと

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    私が考える安全なプログラムを書くために必要なこと
    VoQn
    VoQn 2013/12/13
    自分が最近 gem / npm / cabal に以前ほど信頼置かなくなって、逆にバリバリ他のパッケージに依存してるライブラリを信じなくなった理由に近いや