Search across a half million git repos. Search by regular expression.
本書は計算理論をRubyでわかりやすく紹介する書籍です。コンピュータサイエンスの主要なテーマである「計算とは何か」という問いに対して、難しい数学の知識を利用をせず、Rubyを使って実際にプログラムを作りながら解説します。さらに、なぜこれらのアイデアが大切なのか、そしてそのアイデアは我々の日常的なプログラミングにどう関係していくのかを解き明かしていきます。日本語版ではまつもとゆきひろさんによる「日本語版まえがき」を収録。プログラミングの根底にある理論を学ぶことで、より広く深くプログラミングを考えたいプログラマ必携の一冊です。 監訳者によるサポートページ 目次 日本語版まえがき はじめに 1章 Rubyひとめぐり 1.1 対話型 Rubyシェル 1.2 値 1.2.1 基本データ 1.2.2 データ構造 1.2.3 Proc 1.3 制御フロー 1.4 オブジェクトとメソッド 1.5 クラスと
前回の「知っといてムダにならない、Java SE 8の肝となるラムダ式の基本文法」では、Javaでのラムダ式の記述方法について見てきました。 今回はラムダ式の導入によってより効果を発揮するJava 8の新機能について見ていきます。今回のJavaのバージョンアップではラムダ式の導入と共に、多くの関数型インターフェースを扱うAPIが追加されています。 今までJavaをやっている人の中には「Java 8の新しい機能を試してみよう」と思っている人も多いことでしょう。しかし、「ラムダ式」という新しい書式に加えてAPIに数多くのクラスやインターフェースやメソッドが追加されていて、その多さに拒否感を持ってしまう人もいるかと思います。 しかし、多くの新機能は幾つかの基盤となるパターンがあり、多くの細かい機能はそれらを拡張したものになっています。今回は、その中で「汎用的に使える関数型インターフェース」「ラム
以前このサイトとブログに,何度かアラインメントに関する記事を書きました (サイト内関連ページ参照). そのせいか「アラインメント」で検索して来てくれる人が多いので, 過去の記事に加筆修正してこのページを新たに作成しました. 加筆した点は次のとおりです. アラインメントとメモリアクセス回数の関係をわかりやすくするため, (ほんの少し) 図を導入しました. 「データがアラインされていないとメモリアクセス回数が増える」 と言葉で説明しているサイトは多いのですが, 図で示しているところはまだ見たことありません. アラインされていないアドレスにデータを書き込む場合, 読み出しの場合以上にメモリアクセス回数がかかる可能性があることを追記しました. 以前は「複合データ型 (配列,構造体,共用体) のアラインメント」はほとんど自明のことだと思っていたので軽く流していましたが, 意外なことにこれを解説してい
DHHの"TDD is dead. Long live testing."を、訳してみました。 翻訳 やっとむ By David Heinemeier Hansson on April 23, 2014 著 David Heinemeier Hansson 2014年4月23日 Test-first fundamentalism is like abstinence-only sex ed: An unrealistic, ineffective morality campaign for self-loathing and shaming. テストファースト原理主義は禁欲のみを唱えた性教育のようなものだ。つまり、自己嫌悪に陥っている人に向けた、非現実的で効果のない、道徳教育のようなものだ。 It didn't start out like that. When I first disco
In software engineering, double-checked locking (also known as "double-checked locking optimization"[1]) is a software design pattern used to reduce the overhead of acquiring a lock by testing the locking criterion (the "lock hint") before acquiring the lock. Locking occurs only if the locking criterion check indicates that locking is required. The original form of the pattern, appearing in Patter
魔方陣の解の列挙は並列化しやすそうな問題ですが、ここでの方針では、探索効率を上げるためには条件分岐が不可欠なので、(「数」を求めるだけだとしても)GPGPUでうまくやる方法がわかりません。そこで、CPUに載っているコアのみで並列化します(Xeon Phiなら簡単なのでしょうか→追記参照)。 一番外側の、0から(1<<25)-1まで変化する変数iのループをOpenMPで並列化します(schedule(guided)では遅くなります。schedule(auto)はVisual C++でサポートされたら試します)。変数iは上の図の緑の部分(カンで5個にしました)を各数5ビットで表現し、つなげたものです。マスに入りうる数は1から25までなので、5ビットというのはちょっと冗長ですが、とりあえずはよしとしましょう。 出力はバイナリ形式で、1つの解に25バイト使います(1つのマスに入る数を1バイトで表現
Javaは決して悪い言語ではない。 C++からポインターの「*」やアロー演算子の「->」とかスコープ演算子の「::」とか気持ち悪いものを廃止・整理して、比較的読み易いシンタックスになったと思う。1995年当時から見れば、十分に出来の良い言語だったと思われる。 でも後発のC#でコーディングする機会が増えてきたら、如何にJavaが駄目(というか保守的な)言語かってのもまた同時に痛感してしまう。2005年リリースの2.0の時点で既にJavaをほぼ完全に上回っていると思うのに、その後ラムダ式・LINQ・拡張メソッドなど数多くの新機能が加わった現行C#とは最早比べるまでもないと思う。 以下は根拠。 ■注(2014年2月18日) このエントリーは殴り書きに等しい状態で放置してましたが、最近は思わぬところで読まれ始めたりしたので、ちょっと加筆修正しました。 ①そもそも純粋なオブジェクト指向言語ではない。
カンファレンスから見る SRE トレンド 2024 / SRE Trends from Conferences in 2024 #SRE_Findy
関数型言語入門 Scalaで関数型言語に触れてみよう! 2014/01/08 エンジニア勉強会 - 西岡寛兼 Scala Scalaとは オブジェクト指向・関数ハイブリッド型 コンパイルするとJVM中間言語ができる(.classファイル) つまりJarやWarを作れる JVM上で動く(Write once, Run anywhere) Javaとシームレスに連携 Mavenに蓄えられた資産をそのまま使える! Better Java ひとまず「関数型」の部分を無視して、とても楽に書けるJavaとしてScalaを使うことができます。 型推論 パターンマッチ traitを使った多重継承 case class, case object Better Java Better Javaでも、今すぐJavaを捨て去るだけの価値が あります。 JavaコードをScalaに置き換えると、コード行数がだいたい
こんばんは、今日もお仕事だったmzpです。 お仕事してたら、こんな感じのコードを見かけました。 String retValue = null; if(someCond()) { retValue = "x"; } else { retValue = "y"; } return retValue; その場でreturn "x"とかすればいいのに、わざわざretValueに代入しているのが気になりました。 たしかに、こういうコードやこれを強制するコーディング規約もたまにみますが、そもそもどういう意味があるのか気になったのでTwitterで聞いてみました。 まとめ returnは1個にしろ派 ├─ そういう言語もあるよ派 │ ├─ Pascalがそうだよ派 │ ├─ MATLABもそうだよ派 │ ├─ ホストの時代はだいたいそうだったよ派 │ └─ というかfinnalyがない言語だと必須だよ派
Microsoftの「Midori」OSプロジェクトに関して、この数週間で興味深い進展が2つあった。 第一に、Midori(Microsoftの非「Windows」ベースのOSプロジェクト)がエグゼクティブバイスプレジデントのTerry Myerson氏の下で、Unified Operating Systemグループに移管されたという話を筆者は2人の関係筋から聞いた(それまでMidoriはインキュベーションプロジェクトで、商品化を実現する可能性のある拠点を社内に持たなかった)。 第二に、Microsoftの上層部はMidoriチームの一部メンバーに対して、同プロジェクトのより詳細な情報を公表する許可を与えたようだ。具体的には、Midoriチームのメンバーの1人であるJoe Duffy氏が米国時間2013年12月27日のブログで、Midoriの開発に使用されている言語に言及した。この言語は、
愛知県でシステムエンジニアとして働く友人のMは、プロジェクトメンバの書くJavaのクソコードに苦しめられているそうです。Mはリードプログラマとして、プロジェクトメンバがあげてくる成果物(ドキュメントとコード)のレビューをする立場にあるらしく、提出されてくる数々のクソコードをTwitterでつぶやいていました。 Mを救うことはできるのでしょうか? もし、クソコードをすばやく見つけることができたら救えるのであれば、救える見込みはあるかもしれません。 コードの問題を見つける静的解析ツール クソコードとは、おおむね次のような問題のあるコードをさすようです。 潜在的バグ バグの可能性があるコード。 重複 機能追加やバグ修正を困難にしがちなコードの重複。 設計上の問題 クラスやパッケージ間の依存関係、多すぎるメソッド引数など。 慣習違反 プログラミング言語やライブラリの慣習、コーディング規約などに違反
前職 と 現職 で、ペアプログラミング文化からコードレビュー文化への移行を経験した。文化の差に適合するのは興味深い経験だった。ちょっと気づいたことを書いてみよう。 (ペアプログラミング|コードレビュー)の(メリット|危険性)みたいな題名の記事はもう山ほどある。著者はどっちかの信奉者なわけだ。私は明確トレードオフがちょっとあるにせよ、どっちの戦略も有効であると認識している。このトレードオフについて、もうちょっとバランスのとれた議論をしてみようと思う。 用語の定義 まず、舞台を整えよう。”ペアプログラミング” とか”コードレビュー”という言葉は、人によってとらえ方が大きく異なることがある。 ペアプログラミング文化 といったとき、作業のほぼ100%をペア作業で行っているチームを指す。一つのタスクに二人の開発者が割り当てられ、同じ画面を共有して作業をする。開発者は両方コード構築のプロセスに関わって
http://codic.jp/ プログラミングをする上で一番時間のかかる作業ってなんだと思いますか? アルゴリズムを考えること? タイピングしてプログラムを組むコーディング作業? いえいえ違いのです、変数・関数などの名前を考えるのが一番時間がかかる。 これ冗談じゃなくて結構おおむねほぼ本当の話です。難しいのですよ名前を付けるっていう行為は。ナウシカにおいて、巨神兵をオーマと名付ける事によって自我に目覚めたように、対象の存在意義を定める行為に等しい。だから対象がなんであるかをとことん考え抜く必要があるのです。この関数はどういった機能を持っているのか、この変数はどのような値を格納するためのものか、このクラスは何を表現しているのか、存在するとはなにか、生きるとは。往々にして思考が哲学的な方向に脱線したりしてとにかく時間がかかる。 それに加え一度決めてしまうと、なかなか別の名前に変えるというのも
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く