Please select the category that most closely reflects your concern about the presentation, so that we can review it and determine whether it violates our Terms of Use or isn't appropriate for all viewers.
GitHubタイムラインを記録するGitHub Archiveを素材として、Google BigQueryを使い解析した結果が、Google Developer Relations Japan Blogで紹介されています。 Google BigQuery を使って GitHub のデータを研究しよう この1カ月で人気のあるプログラミング言語を見ると、1位JavaScript、2位Java、3位Rubyという結果です。 1位はJavaScriptですが、Webブラウザの標準言語は強いと思わされます。 2位のJavaですが、人気は根強いですね。オープンソース・ソフトウエアの開発言語としてJavaを使う事例はいぜん多いということですね。 Ruby言語は、Python、PHP、Perlの3大「P言語」を抑えて3位となっています。最近のRubyコミュニティの活発さが反映しているのかもしれません。 関
Chromium と WebKit は二つの独立したプロジェクトだ。 ソースツリーはそれぞれ別で、そこにはインテグレーションの苦労がある。 WebKit 以外にも V8 や Skia など Chromium が依存している外部のプロジェクトは山ほどあるけれど, WebKit とは特にぴったりくっついている。 そのぶん二つの足並みをあわせる手間も際立つ。 以前、書籍 ”アジャイル開発の本質とスケールアップ” で リリーストレイン という大規模プロジェクトのインテグレーション手法を読んだ。 プロジェクトの内部で一段細かい時限リリースを設け、そのタイミングでインテグレーションする方法。 内部リリースにあわせてプロジェクト同士が依存している相手のバージョンを上げ、 壊れたところをなおすわけ。 Chromium と WebKit もこまめに相手のバージョンを新しくする。 主たる依存の向きは Chro
最近CoffeeScriptというものを知って少し調べてみたら、本家の言語リファレンスがそんなに多くなかったので日本語訳に挑戦してみました。 http://coffeescript.org/ CoffeeScriptとはJavaScriptにコンパイル可能なシンプルな言語です。クラスベースのオブジェクト指向、Python/Rubyを参考にした内包表記、文字列内変数展開、スタティックスコープなどなどがあります。 先にネタバラシをしておくと日本語訳は既に別の方がしていました\(^o^)/ http://sites.google.com/site/sappariwiki/coffeescript しかも僕の日本語訳より全然わかりやすい!ぶっちゃけ英語は大の苦手なので、翻訳したはいいけど間違ってるところは色々あるはずです。 でもまあ技術的なドキュメントの翻訳に挑戦したのは、数年前に前職でRDP(R
一口に「比較する」といっても色々な観点が考えられますが、ここでは、コードの読みやすさという点に注目して比べてみます。 人間が考えた処理内容・データ構造などを直訳的な表現で書けるか。(0は1月、1が2月、…なんてのは勘弁) 冗長な記述が少なくて済むか。 これらの点で言語ごとの違いが見えるような題材をなるべく選び、それぞれの言語で実装したサンプルコードを以下のページに並べてあります。 カテゴリ別 サンプルコード 基本的な処理 数値、日時 リスト(または配列) マップ(または連想配列、ハッシュ) クラスとインスタンス ファイルとディレクトリ、通信 並列処理(スレッド) その他 このサイトで取り上げている言語 言語名 サンプルコードの凡例 参考サイト
バグから学ぶ計算機科学 Scalaのハッシュテーブルにおいて並列コレクションのためのコード変更が大量の衝突を引き起こした事例 書いた人: ると 書いた日: 2012年1月21日 はじめに Twitterで「有名なオープンソースソフトで今まであったおもしろいバグを解説した本とかないだろうか」とツイートしたらそれなりに需要があるようでした。そこで先ず隗より始めよという故事にのっとり、死馬の骨としてバグ解説記事を書いてみます。 今回のバグはScala 2.9の標準ライブラリに含まれるmutable.HashSet(ハッシュテーブルを使った重複無しコレクション)のコピーがJavaの標準ライブラリに含まれるHashSetの100倍遅いというバグです。並列コレクションのためにぱっと見問題の無い変更を加えたら思わぬところで影響が出たというものです。 なお、今回はScalaに関するバグですが、Scalaに
PHPのJITコンパイラ「HipHop Virtual Machine」、Facebookがオープンソースで公開 HipHop Virtual Machineは、PHPを高速に実行するためにPHPのコードをC/C++に変換してg++でコンパイルし、バイナリコードにするHiphop compiler(hphpc)と、PHPのインタプリタであるHipHop interpreter (hphpi)を組み合わせたもの。PHPのコードをダイナミックにバイナリコードへと変換することで、高速な実行を目指しています。 コンパイラと同等以上の実行速度へ HipHopはFacebookが開発し、オープンソースとして公開しています。今回のHipHop Virtual Machineも、これらの開発の延長線上にあるものです。 Our experiences with hphpc led us to start e
素人の目から見るとプログラム言語なんてどれも同じじゃないの?と思ってしまうのですが、これがなかなか奥が深い。言語によって使用する文字や記号が大きく違っていることがよく分かるヒートマップです。英語なので「E」の頻度が高いのは当然として、「ははぁ、あの命令をよく書くからここが赤いんだな……」とニヤニヤするといいのではないでしょうか。 出現頻度を調べるためのソースコードは、Githubから取られたものなのだそうです。 Javascript Shell Java C C++ Ruby Python PHP Perl ObjC Lisp こちらのサイトで同じヒートマップを作成することができます。ただし、日本語のキータイピングは認識しないので気をつけてください。 Keyboard Heatmap | Realtime heatmap visualization of text character di
最近、スタートHaskellで「カリー化された関数のメリットは何か?」という質問が出た。そのすぐ後に、kmizuさんがカリー化の誤用に対して警鐘を鳴らしてしていた。僕からするとkmizuさんの「カリー化の定義」も誤用に思えたので、調べるとともに考えたことのまとめ。 いろんな定義 「カリー化する」という用語は、すくなくとも以下の3つの意味で使われているようだ。 部分適用という意味 これは明らかに間違い 「複数の引数を取る関数」を「一引数を取る関数のチェインに直す」こと これはkmizuさんの定義。世間でもよく使われる。 「構造体を一つ取る関数」を「構造体のメンバーを複数の引数にばらし、一引数を取る関数のチェインに直す」こと これは僕の定義。というか、Haskellコミュニティの定義。 「部分適用」の意味で使うのは明らかに間違いのなで排除。定義2と3について議論する。あとで、部分適用とは何かに
はじめに JavaScriptで文字列を反転する10の方法を(無理矢理?)思いついたので、ちょっと簡単に紹介したい。また、それぞれについて、各ブラウザでパフォーマンスを測定してみたので、その結果も合わせて載せる。 文字列のStringオブジェクトには、部分切り出し(substring, slice)や置換(replace)、連結(concat)など豊富な機能があるのに、反転(reverse)機能はない。Arrayのreverseはあるのに、Stringのreverseがないのはどうしてなのだろうか。 各ブラウザとそのバージョンは以下の通り: Chrome Firefox Opera Safari IE 13.0.782.112 m 6.0 11.50 5.1(7534.50) 8.0.7600.16335 rev01: C言語的発想 空の配列を作って、そこに元の文字列の後ろから1文字つづ入
Introduction In an essay Paul Graham wrote: Kevin Kelleher suggested an interesting way to compare programming languages: to describe each in terms of the problem it fixes. The surprising thing is how many, and how well, languages can be described this way. http://paulgraham.com/fix.html Here is a chart of the resulting dependencies. Oh, and - added later - the original from PG is undated, but the
モナドって結局何なのよ?¶ Haskell を勉強しようとすると必ず「モナド」ってのが出てきます。困ったものです。数学とか圏論とか関係があるらしくって、何が書いてあるんだか分からなくって嫌になってしまいます。でもね、Haskell って凄いらしいじゃないですか、格好良いらしいじゃないですか。ここはちょっとがんばって色々考えてみましょう。 そもそも Haskell って何なのよ?¶ 何なんでしょうね、Haskell って。コンピュータ言語らしいんです、あ、それは分かってると。良く挙げられる性質は次な感じ?: 関数型言語 強い型付け 遅延評価 参照透過 ここでちょっと型に関して見てみましょう。試しに Haskell の実装の 1 つである Hugs で 1 について考えてみます: $ hugs __ __ __ __ ____ ___ _____________________________
BDDについて自分なりにまとめてみた Published on 2011-07-02 Updated on 2011-07-02 BDDという言葉も割と人によって指すものが違うようなので「俺の中でのBDDはこうだよ」って内容のエントリ。別に絶対的なものでもないと思うので参考までに 結論から とりあえず結論だけ知りたい人向けに。 BDDにはふたつの種類がある TDDの言い換えのBDD(開発寄り) ATDD(受け入れテスト)でのBDD(ユーザ寄り) 振る舞い BDDは振る舞い駆動開発と言われたりするように、テストという言葉のかわりに振る舞いという言葉を使う。日本語的には仕様と言うほうがわかりやすいかもしれない。多分、BDDのイメージが掴みにくいのはこの振る舞いという言葉にあると思う。と言うのも振る舞いと言うのは、人の立場よって変わるからだ。例えば、プログラマがあるクラスを実装している時に言う振
Maven3 を使ったプロジェクトでの BDD(振舞駆動開発)の実施方法をまとめてみました。 今回試した BDD ツールは以下の通りです。 Specs Specs2 RSpec Easyb(Maven2) spock 結果として、この中では Specs/Specs2 か spock あたりを使うのが良さそうです。(RSpec と Easyb は問題あり) なお、実行環境は以下の通りです。 Java SE 6 Update 24 Maven 3.0.3(Easyb のみ Maven 2.2.1) サンプルのソースは http://github.com/fits/try_samples/tree/master/blog/20110321/ Specs の場合 Scala による BDD ツールの Specs を使用する場合、pom.xml を以下のように設定します。 なお、surefire プ
PerlCasual #4 (2011/4/28, 池袋ジュンク堂)で行ったトークのスライドです。 動画をYouTubeで公開しているので、あわせてご覧ください。http://youtu.be/kLt2aYN7UYE, http://youtu.be/xVC9pqCe8cE Read less
Tython とはhttps://github.com/gongo/Tython/tree/development 肉体言語 Tython は、Kinect センサーを用いて、体の動きを利用してプログラムを入力する言語、というかインターフェースというかフレームワークというか。 図にするとこんな感じです。 Kinect を介して動きを検知 (Detector) 検知した動きによって、入力するソースコードを決定 (InputMethod) ソースコードを入力し終わったら、コンパイル (Compile) コンパイルしてできた命令列を実行 (VM) デモ 「Hello, World!」Tython を使って Hello, World! を出力してみました。 Hello, World! 出力まで 4分強 一回で成功しなかった 最終的に成功するまでの時間は 90分 一度でも文字入力失敗すると最初から
僕の TL には C++er がたくさんいます。僕は脳ミソ沸いてるのでこんな感じですが。 @PG_kura C++ はぁはぁ C++ はぁはぁ C++ はぁはぁ C++ はぁはぁ C++ はぁはぁ C++ はぁはぁ C++ はぁはぁ C++ はぁはぁ C++ はぁはぁ C++ はぁはぁ C++ はぁはぁ C++ はぁはぁ C++ はぁはぁ C++ はぁはぁ C++ はぁはぁ C++.. 2010-09-03 18:40:09 via ラーメン大陸 とかく、Twitter にはすごい人がたくさん居るので興味ある人はフォローしてみると良いと思います。*1 *2 @nagoya313 僕はC++を得たが代わりに青春を失ったことに気づいた。 2010-07-13 00:30:23 via web @fetus_hina 「// このコードが直感に反して正しく動く事に関して、私は真に驚くべき理由を見
Pythonistaとしてステップアップするには何が必要か。 それは、 Pythonの弱みと強みを知ること でしょう。 これは他言語にも言えます。 Pythonを含め、プログラミング言語は道具です。 道具を使うためには、その道具の最適な使い道を知ってる必要があります。 ただ、このような情報は、なかなか手に入りません。 ブログの記事は、書いた人の好みのバイアスが掛かっているため、鵜呑みに出来ません。 道具を使いこなすには、自分自身で長時間、その道具に触れること。 そして、他の人がどのように使っているのか、知ることが必要です。 そうして、その道具の強みと弱みを見出していきます。 前者は、あなたがひたすらに、時間を費やすしかありません。 しかし、後者に関しては良い方法があります。 それが、Quoraです。 What is Quora? – Quora 今日は、QuoraからPython
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く