タグ

programmingに関するwata88のブックマーク (199)

  • x + 0.25 - 0.25 = xが成り立たないxとは何か|Rui Ueyama

    スタンフォードのコンピュータサイエンスの授業で、ときどきこれは良問と思う問題がテストで出ることがある。僕の印象に残っているのは「xをfloatとするとき、x + 0.25 - 0.25 = xが成り立たないxを求めよ」というものだ。浮動小数点数を理解していないと、両辺が同じにならないケースがあるほうが不自然に思えるだろうから、この問題は浮動小数点数の奇妙さを結構うまく突いていると思う。この問題を元に浮動小数点数についてちょっと説明してみよう。 まずコンピュータ上での数について少し考えてみよう。コンピュータにおける数と、数学の整数や実数は、よく考えてみると全然違う。コンピュータは有限の記憶領域しか持っていないので、無数にある数を表すことが根的にできない。つまりコンピュータ上の数は「物の数になるべく似せた別の何か」だ。現実的には、例えば32ビットの数なら2^32パターンしか表せないので、そ

    x + 0.25 - 0.25 = xが成り立たないxとは何か|Rui Ueyama
    wata88
    wata88 2017/11/29
    試験で解くことになったら天を仰ぐわ...
  • ソフトウェアの互換性と僕らのUser-Agent文字列問題|Rui Ueyama

    いろいろな環境で動くプログラムでは互換性のためにその場しのぎのことをしないといけないことがよくあるけど、歴史が積み重なってくると、アドホックな技の上にアドホックな技が積み上がる喜劇的な状態になることがある。こういう問題は認識するのは簡単だが直すことは誰にもできない。まさに僕がそのような体験をしたのでちょっと説明したい。 僕は仕事としてオープンソースのlldというリンカを書いている。リンカというのはコンパイラが生成したバイナリファイルをつなぎ合わせて最終的な実行ファイルやDLLを作成するプログラムで、知らない人も多いと思うけど、何をコンパイルしても最後にはリンカが動いている。lldは既存プログラムより何倍も速くてビルドが早くなるというので最近は結構人気が高まっていて、FreeBSDなどのいくつかのOSが全面的にスイッチしようとしたり、あるいは大規模プロジェクトChromeや、どうもFire

    ソフトウェアの互換性と僕らのUser-Agent文字列問題|Rui Ueyama
  • プログラマーに聞くが、フローチャートって書いた方が良いの? : IT速報

    3:以下、\(^o^)/でVIPがお送りします 2017/08/28(月) 22:21:21.678 ID:CQEpLxPE0.net

    プログラマーに聞くが、フローチャートって書いた方が良いの? : IT速報
    wata88
    wata88 2017/09/04
    何を作ろうとしてるか、考えるツールかなぁ。思考を整理するのには良いと思う
  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

    wata88
    wata88 2017/07/27
    全然お気楽じゃないじゃない
  • コーディングに対する考え方を変える6つのプログラミングパラダイム | POSTD

    私は時折、コーディングに対する考え方を変えさせられるような、従来と非常に異なるプログラミング言語に出会います。記事では、その中でも特に気に入っている発見をいくつかご紹介したいと思います。 これは、先賢による「関数型プログラミングは世界を変える!」的な投稿ではありません。記事で挙げるのは、もっと「知る人ぞ知る」的なリストです。多くの読者の方にとって、以下の言語やパラダイムは聞いたことのないものが大半だと思いますので、私が経験したように、これらの新しい概念を学ぶ楽しさを感じていただければ幸いです。 注:私は以下の言語の多くに関して最低限の経験しかありません。その発想に引き込まれたのであって、専門的知識は持ち合わせていないため、訂正すべき点や誤りがあればどうぞご指摘ください。また、記事で取り上げていない新しいパラダイムや概念に出会った方は、ぜひお知らせください。 最新情報:記事が r/p

    コーディングに対する考え方を変える6つのプログラミングパラダイム | POSTD
  • 今はコードがお偉いさんなんだからMOBは雁首揃えろって話 - アンカテ

    技術なきマネジメントの衰退とその対策 - メソッド屋のブログ Mob Programmingって初めて聞いたけど、とてもいい方法に思える。 コードを書く時に、今現在の仕様はわかっていたとしても、今後どうなるか、どういう方向に発展するのか気になって、ビジネス的にその分野に詳しい人の所に聞きに行ってから書きはじめることがあるし、性能的に大丈夫かDBに詳しい人の意見を聞いたり、何か迷った時に過去のプロジェクトで似たようなケースをどっちの方法で解決したか調べたりすることもある。 書き出すとすぐ終わる短いコードでも、書き出す前に、聞きにいったり議論したりする時間が随分かかっていることもある。この時間をかけないと、結局、後で変更になるので、先に聞きにいくのがベターなんだが、チーム全員集まってひとつのコードを書けば、そういう時間を省略できるような気はする。 だから、これが生産性が高いということは感覚的に

    今はコードがお偉いさんなんだからMOBは雁首揃えろって話 - アンカテ
  • コードのインデントにスペースを使う開発者はタブを使う開発者よりも高収入という調査結果 | スラド デベロッパー

    Stack Overflow 2017 Developer SurveyのデータをStack OverflowのデータサイエンティストDavid Robinson氏が分析したところ、コードのインデントにタブを使う開発者よりもスペースを使う開発者の収入が高いという結果が出たそうだ(Stack Overflow Blogの記事、 The Registerの記事、 Ars Technicaの記事)。 回答者51,392名のうち、インデントにタブを使うかスペースを使うかという設問に回答したのは28,657名。プロの開発者の回答に限定すると40.7%がタブ、41.8%がスペース、17.5%が両方となっている。このうち12,426名が給与(年間)の情報を回答している。 給与の中央値はインデントにスペースを使用する開発者が59,140ドル、タブを使用する開発者は43,750ドルとなっている。両方使用する

    コードのインデントにスペースを使う開発者はタブを使う開発者よりも高収入という調査結果 | スラド デベロッパー
    wata88
    wata88 2017/06/18
    そんなもんコード規約に合わせるしかないじゃん
  • Vim scriptを処理系レベルから高速化しようとしている話 - Qiita

    TL; DR Vim scriptをパースしてASTを作り、高速化を図ります。リポジトリはこちら→wholekeik/vim 追記: ベンチマーク追加しました AST化 Vim script は実行のたびにコマンドをパースしているので非常に遅い言語です。コマンドをパースしておいてASTとし、それを実行すれば高速化が見込めます。しかし、Vim scriptでは引数の解釈が各コマンドによって全く異なるため、共通のパーサーを書くのは不可能です。したがって事前にパースするのではなく実際に実行しながら並行してASTを作っていきます。なおVim scriptの実行はユーザーの入力(コマンドモード)やオートコマンド、関数などがありますが、ASTとなるのは関数内のみです。また、AST化は行単位で行われます。 大まかな流れ 関数を定義する 通常通り呼ばれる 呼ばれたExコマンドのうち、ASTにできるものがあ

    Vim scriptを処理系レベルから高速化しようとしている話 - Qiita
    wata88
    wata88 2017/06/10
    すごーい
  • エンジニアの信頼を得るには良質なアウトプットが必要な話 - そーだいなるらくがき帳

    先日、僕が大好きでリスペクトしてるソフトウェアエンジニアさんたちと意見交換会(呑み会)中にソフトウェアエンジニアの信用と信頼について話題になったのでメモ。 僕が「このソフトウェアエンジニアは信用できる」っていうのはどういう指標がありますか?って質問した時に出た意見としては コードに対して何らかの貢献をしている 新規プロダクトの開発など OSSのメンテナンスなど(パッチを送るなど) 自分の持つプロダクトに対する反応など が出てきた。 これらのような「良質なアウトプット」を定期的に行う頻度も大事だよねという感じ。 なるほど、確かにって思ったのだけど更にその中で良質なアウトプットとは何かという話題になった。 ソフトウェアエンジニアの属性 ソフトウェアエンジニアには得手不得手がある。 言語だったりレイヤーだったりで好き嫌いも含めて得手不得手がある。 更にもっと言えば「プロダクトの成長段階」でも得手

    エンジニアの信頼を得るには良質なアウトプットが必要な話 - そーだいなるらくがき帳
  • 突如パソピアIQを手に入れたJKが突如twitterに現れたオッサンからMSX-BASICを教わってゲームをプログラミング

    Shuhei Miyazawa @room_909 突如パソピアIQを手に入れたJKが突如twitterに現れたオッサン(僕)からMSX-BASICを教わってゲームプログラムを入力する2017年5月。楽し過ぎてずっと笑ってる。素晴らしい。 twitter.com/butai_nunoshi/… 2017-05-25 01:09:59

    突如パソピアIQを手に入れたJKが突如twitterに現れたオッサンからMSX-BASICを教わってゲームをプログラミング
    wata88
    wata88 2017/05/26
    懐かしきMSX
  • 知っているようで知らないWebサーバアーキテクチャ

    第6回ゲームサーバ勉強会用資料です。 Webの技術の根幹となるHTTPやTCP/IPを軽くおさらいしたあと、 マルチプロセス、マルチスレッド、イベント駆動といったサーバアーキテクチャについて解析し、 さらにイベント駆動を実現するための非ブロッキングI/OとI/Oの多重化について解説します。

    知っているようで知らないWebサーバアーキテクチャ
    wata88
    wata88 2017/05/22
    綺麗にまとまっててわかりやすい
  • その事例だとコメントは不要だと思います - erukitiのmiscなやつ

    「正しく書かれたソースコードにコメントは必要ない」なんて幻想だという話 - 土屋つかさのテクノロジーは今か無しか および 「正しく書かれたソースコードにコメントは必要ない」なんて幻想だという話(補足編) - 土屋つかさのテクノロジーは今か無しかで、計算式の意図を説明するためにコメントを書こうぜという主張が書かれてますが、この内容だと全く賛同できませんね。別にコメントを全否定するわけではありませんが、この主張の例だと不適切です。 //フェードインが未完了の場合 if (alpha < 1.0f){ //処理A } 元記事の主張は、alpha < 1.0f という計算式はコメントなしでは来の意味であるフェードインが未完了の場合、というものがさっぱりわからないということでした。つまり意味情報の欠落を問題にしています。 const isFadeinCompleted = () => alpha

    その事例だとコメントは不要だと思います - erukitiのmiscなやつ
    wata88
    wata88 2017/05/21
    おおむね条件文にコメント書くのは条件文がわかりづらくてリファクタが必要な場合が多い印象。冗長な処理とかになぜなのか書かれてたりすると助かる
  • 非同期とノンブロッキングとあと何か | κeenのHappy Hacκing Blog

    κeenです。最近同期/非同期、ブロッキング/ノンブロッキング、直接形式/継続渡し形式あたりが混乱してきたので個人的に整理します。 あくまで私個人の理解を纏めただけなので誤謬などに注意して下さい。 追記: @tanaka_akrさんから指摘されたのですが、用語の説明が間違っていそうだったので書き直しました。 diffはこちら 非同期とノンブロッキングはよく混同されます。また、非同期処理の記述形式として直接形式や継続渡し形式などがあります。 私自身違う言葉だなとは思いつつも混同したり違いを忘れたりしています。 非同期もノンブロッキングもナイーブなIOに比べると速い方式だな程度の理解でいてそんなに困らないと思ってますし混同や誤用に目くじらを立てるつもりもありません。 しかしながら3者を区別しないと意味を成さない文脈で3者を混同している技術を何度か見掛けたので(自分の中で)整理しようと思ったのが

    非同期とノンブロッキングとあと何か | κeenのHappy Hacκing Blog
  • レガシーコードの触り方 / Working Effectively with Legacy Code

    オープンセミナー2017@岡山

    レガシーコードの触り方 / Working Effectively with Legacy Code
    wata88
    wata88 2017/05/15
    デモがきになりすぎるw
  • 社内横断の技術組織を終わらせました - nottegra’s blog

    内容がネガティブに取られそうで、公式なところに書くべきではないので個人ブログで書きます。 この記事は、公式なブログで僕が書いた「社内横断の技術組織をはじめました」という記事へのアンサーブログになります。 ※元の記事は探せば出てきそうだし、個人的なブログと紐付けるべきではないのであえて出しません。 特定の誰かを陥れる目的ではなく、完全に個人の責任として、始めたものを終わらせてしまったことへの事の顛末を記録する目的で書きます。 はじめに 始めた理由 CTOの不在 品質面に対するレビュー不足 技術広報の不足 それぞれの施策の結果 時間がかかってみんなストレスが溜まる新規レビュー 当たり障りの無いことしか表現できない運用レビュー 兼任状態が続き、進まない新規技術検証 やる必要の薄い「全社」広報 終わった理由 成果が出せなくて、そもそも証明出来ないかもしれない 問題解決は組織じゃなくても出来ると気が

    社内横断の技術組織を終わらせました - nottegra’s blog
    wata88
    wata88 2017/05/14
    やりたいことが多すぎる印象。CTO/広報は別に無くてもいいと思う、レビューもポストレビューにしてリリースについては各事業に任せたほうがよさそう
  • Scalaに関する誤解と事実を語る - kmizuの日記

    TL;DR 世間のScalaに関するイメージは、昔のままであることが多い 昔のままどころか、最初から間違ったイメージを持たれていることも多い 実際には、既に解決されている問題は多々あるし、改善に向かっていることも多い プロジェクト管理の問題を言語に押し付けているケースもある はじめに 自分が最初にScalaに触れたのが2005年(Scala 1からカウントした場合)、あるいは2007年(Scala 2以降からカウントした場合)と、Scalaとの付き合いも結構長くなってきましたが、その間に Typesafe社(現Lightbend社)の設立 実質標準ビルドツールとしてのsbtの確立 ライブラリのバイナリ後方互換性に関するポリシーの策定 公式ScalaイベントScala Daysのはじまり Play 2 Frameworkの登場 Scala Center発足 その他色々 がありました。この間、

    Scalaに関する誤解と事実を語る - kmizuの日記
  • スタンフォードのコンピュータサイエンスの授業の感想|Rui Ueyama

    いまのところ25単位分(マスター修了に必要な単位数の約半分)の授業を取ったので感想を時系列でちょっとまとめたい。昔のやつは記憶が曖昧になっているけど。 CS243 プログラムの解析と最適化 (2014Q4)要するにコンパイラの最適化の授業。前半はデータフロー解析とかでかなり実用的な感じがしたが、後半は行列計算の命令の依存関係を抽出してベクトル最適化とか、ItaniumみたいにレジスタのたくさんあるCPUでループアンローリングするみたいな話で、実際に役に立つのかはよくわからなかった。 と、そのときは思ったが、巨大な行列の計算はよくあるので、興味を持てなかった僕がダメだっただけかもしれない。 とにかく難易度が高かった。かなりがんばって夜中までやっていたつもりだけどもっと真剣に取り組むべきだったかもしれない。なにせこれが最初の授業だったのでレベル感がよくわかっていなかった。教授がドラゴンブックの

    スタンフォードのコンピュータサイエンスの授業の感想|Rui Ueyama
    wata88
    wata88 2017/04/07
    すごい
  • なぜプログラマはあなたの事が嫌いなのか - megamouthの葬列

    営業やマネージャーにとって、現場にいるプログラマというのは扱いづらい存在である。 飲み会などで、普段の彼らを観察してみると。同じエンジニア同士で固まってボソボソとよくわからない話をして、控えめな声で笑っており、総じて温厚で、扱いやすそうな人々に見える。 ところが、仕事になると、彼らはなんやかんのと理由をつけて、スケジュールに文句を言い、プロジェクト途中のリクエストには素直に答えてくれず、あげくには遠回しな嫌味を言ってきたり、極端な場合には、その温厚な仮面を投げ捨てて、攻撃的な暴言さえ吐く事がある。 どうも彼らは我々の事が嫌いらしい、と感じている営業・マネジメント職の人もいるのではないだろうか? 彼らの人格や価値観に問題がある可能性も否定しないが、このような感情的な齟齬は、多くの場合、あなた自身が彼らの「自尊心」を傷つけていることに気づいていないことが多い。 プログラマの自尊心 プログラミン

    なぜプログラマはあなたの事が嫌いなのか - megamouthの葬列
  • なぜGo言語 (golang) はよい言語なのか・Goでプログラムを書くべき理由 | yunabe.jp

    結論としてはGo言語には以下のようないくつかの長所があり、現実路線で非常にバランスがとれた言語だと思います。 これらの長所のために失われたメリットも当然いくつもありますが、一定程度以上の規模のプロジェクトで利用する言語の選択肢としては現存するプログラミング言語の中では一番か二番目によいのではないかと思います。 コンパイルが速い (vs. C++) GCとメモリ安全性 (vs. C++) 妥当で現実的なレベルの型安全性 (vs. Python/Ruby) 実行時パフォーマンスが良さ (vs. Python/Ruby) 現実問題、ある程度の規模と期間のプロジェクトになると型検証があるとリファクタリングなどがだいぶ楽になるのでありがたい。 型があるので自然と実行時パフォーマンスも良い 標準ライブラリが整備されている (vs. C++) むしろ標準ライブラリにjsonのparserすら存在しないC

    wata88
    wata88 2017/01/17
    どうも、非知的なプログラマです^q^
  • バグなどの謎の現象に立ち向かうも闇が濃く、どうしても沼から脱出できない時に見るフローチャート - Thanks Driven Life

    ご査収ください (2022年12月8日 追記) フローチャートを書き直しました。内容自体は当時のものと同じです。 補足 パフォーマンスの出し方は人それぞれなので「私はこんな感じです」というものです。 とりあえず「なんかやばいな?」と思ったら休む 体調的にはもちろん、「これ結構やばそうだな?」という勘所は大事 15分以上(長くても30分)悩んだら周りに聞いてみる こういう時はだいたい 視野が狭くなっている(簡単なスペルミスだったり) 暗黙知に触れている(業務だとよくある) とてつもない難問にぶちあたっている といったケースなので、仲間にSOSを出した方がチーム全体の進捗も結果的に良くなる、という経験談です。 ちなみに15分の根拠はなんとなくです。 ちなみに、問題に取り組み始めるその瞬間から「15分やってわからなかったら誰かに聞こう」としている場合は、 フローチャートの「30分動いてなかったら

    バグなどの謎の現象に立ち向かうも闇が濃く、どうしても沼から脱出できない時に見るフローチャート - Thanks Driven Life
    wata88
    wata88 2017/01/06
    わかる〜(沼にいるときはわかってない