【読書感想】論理的思考とは何か ☆☆☆☆ 論理的思考とは何か (岩波新書 新赤版 2036)作者:渡邉 雅子岩波書店Amazon Kindle版もあります。論理的思考とは何か (岩波新書)作者:渡邉 雅子岩波書店Amazon 論理的思考法は世界共通ではない。思考する目的をまず明確にしてその目的に合った思考法を選ぶ技術が要る。…
普段はクローズドな C++WG(Working Group) 会議ですが 12 月に一般参加可能なアドホック会議を開催することになりました。 以下がその詳細です。 【日時】 12/5(金) 10:00〜17:00 【場所】 機械振興会館 6D-1号室 http://www.jspmi.or.jp/kaikan.htm 【会議内容】 10月6日前後に公開される C++0x の CD(Committee Draft) に対する日本として提出する正式なコメントを決めます 誤字、言い回しが曖昧、この設計には問題がある、 これまで採択されたドキュメントが正しく反映されているか、とか 「予約語追加しろ」「xxライブラリがほしい」などの 変更が大きいものに関しては、今からではもう難しいかもしれません 【参加方法】 このエントリへのコメント、トラックバック、メール、 Twitterのダイレクトメッセージ、
はじめに C++の新しい標準規格である「C++0x」の大きな新機能の1つが、マルチスレッド処理のサポートです。 従来のC++では、マルチスレッド機能は標準規格の拡張としてコンパイラごとに提供されていたため、細かな部分がコンパイラやプラットフォームによって異なっていました。しかしC++0xでは、すべてのコンパイラが同じメモリモデルに準拠し、同一のマルチスレッド機能を利用できることになります(ただし、従来同様の拡張をコンパイラが独自に提供することも可能です)。 開発者の立場からすると、マルチスレッドのコードを別のコンパイラやプラットフォームへ移植するときの手間を大きく省くことができます。複数のプラットフォーム向けの開発を行う場合でも、種々雑多なAPIや構文をいくつも頭に入れておく必要がありません。 新しいスレッドライブラリの中心を担うのは、実行スレッドを制御するstd::threadクラスです
C++0x では各コンテナに const_iterator を返す cbegin() と cend() というメンバ関数が追加されます。 イテレータが const である必要がある場合はこちらを使用することになります。 namespace std { template <class T, class Allocator = allocator<T>> class vector { public: ... // iterators: iterator begin(); const_iterator begin() const; iterator end(); const_iterator end() const; reverse_iterator rbegin(); const_reverse_iterator rbegin() const; reverse_iterator rend();
通常,C++のテンプレート関数(orクラス)をライブラリ化するとき,それを利用するソースから,そのテンプレート関数の実装(定義)も含めてインクルードしなければならない.そうしないと,特定の型に対してテンプレート関数のインスタンスを生成できないからだ.しかし,この仕様には ヘッダファイルの肥大化(コンパイル速度の低下) 望ましくない実装の公開 などの問題がある.これを回避するために,特定の型に対してテンプレートのインスタンスを明示的に生成する explicit instantiation という方法がある. explicit instantiation はテンプレートの特殊化 (explicit specialization) とは別物なので注意しなければならない.後者は,特定の型に対して特定の実装を与えるためのものだ. さて,引数の2乗を返すテンプレート関数 template <typen
はじめに 大規模なデータを扱うアプリケーションでは、速度とともに作業領域量も大きな問題となります。作業領域がメインメモリに収まらない場合、スワッピングが発生し、大幅な速度低下につながります。そのため近年、データ構造は高速なだけでなく、作業領域量が小さいことも求められています。今回紹介するのは2003年に提案されたデータ構造、wavelet tree(以下「WT」と表記)です。WTは圧縮索引やSuccinct Data Structureなど、データをコンパクトに表現する際に重要なデータ構造です。WTは文字列T[0...n-1]が与えられた時、次の2つの操作を定数時間でサポートします。 rank(p, c)――T[0...p]中のcの出現回数を返す select(i, c)――(i+1)番目のcの位置を返す WTの作業領域量は、文字列をそのまま保存した時の約2倍程度です。 対象読者 C++の
目指せプログラマー!にようこそ。 当サイトはこちらに引っ越しました。 お手数をおかけしますが、上記サイトへご移動くださいませ。
いつものようにLKMLで駄文を書き散らかしていると、Hugh Dickins 先生からプライベートで忠告メールが KOSAKI のメールにはしょっちゅう hoge->fuga member だどうした。とか出てくるけど、"member"ってEnglishでは"penis"の婉曲表現だぜ。分かって使ってる? な、なんですとーー!! ・・・たぶん、ほとんどの日本人は知らないと思います(;_; 追記: あとで気づいたが、このときは、メモリ回収処理を途中で打ち切る議論をしていたので、メールには sc->may_cut_off member と書いてあった。つまり「ちん○切り落とすぞ」機能を議論していたことになる。 うーん、それは震えが来るかもしれん。
なんかプチブームに. 末尾再帰最適化をC/C++上で検知してみたい (higepon さん) 末尾再帰最適化判定 (yaneurao さん) 再帰判定 (shinh さん) んで,ちょっと気になったのが. 再帰の最適化 (masa.edw さん) shinh さんの fact のコードは末尾再帰じゃないけど、こういうのもちゃんと解析して最適化するんだー GCC すげー。 いやいや,ちゃんと末尾再帰のコードですがな… 追記 : 全然末尾再帰じゃないです (寝ぼけすぎ…).末尾再帰 (= ループ) に (GCC が) 変換可能なコード,です. shinh さんのコード (本質部分だけ) int fact(int x) { return x == 1 ? 1 : fact(x-1) * x; } は, int fact(int x) { if(x == 1) return 1; else ret
C/C++のポインタの機能--配列との関係 Q. ポインタって危ないんじゃないの? A. なんで?危なくないよ. Q. だって合法なの? A. もちろん合法だよ. Q. こんな風にポインタを使うと違法ですよっていうものはある? A. それはちゃんと勉強すると分かるよ. Q. 配列ってポインタなんでしょ ? A. 違うよ.全然違うよ. Q. でも,ポインタなんでしょ? A. 全然違うよ.全く関係ないよ. Q. へー,じゃあ,配列とポインタの違いは何なの? A. じゃあ,簡単に説明してあげるよ.まず,配列はメモリの塊です. 直接レジスタに載せて操作できないから,ポインタ経由で扱う. C の構文上では,操作されるもの自体と操作するための機能の区別が曖昧だから,これらは気まぐれに同じような場所に現れたり,お互いを入れ替えても同じように動いちゃったりするんだ. なのでポインタと配列は同じもの,という
Write gcc in C++ (GCC Summit 2008 in otawa) PDF # GCC Summit に行ってきて興奮冷めやらぬ QLeap さんに twitter でこの PDF を教えてもらったのが,そもそもの関心を持ったきっかけ. あとの流れは, Converting GCC to C++ > tabesugi.net 2008年 6月 (2)。Jun 19 [Thu] (20:38) >>はじめてのにき (2008-06-20) みたいな感じ. Lisp ってのがあいまいですけど,通常単に Lisp と言ったら,Common Lisp のはず.そして Common Lisp はネイティブコンパイラの方が普通だと思います. ブートストラップを達成云々は CLISP (バイトコードコンパイラ) じゃなくて,SBCL (CMUCL) のことですかね.SBCL (CMU
Cfront の歴史資料として購入したのですが,ちょっと酷い本ですね.これが 1200 円だったら,まぁ,ギリギリ許容範囲かもしれませんが,2000 円の価値は無いでしょうね. C++言語のカラクリ 誕生の秘密と舞台裏 前半の方は,けっこう勉強になりますし,面白いところもあります.リンク後のパッチで静的グローバルなオブジェクトのコンストラクタ/デストラクタを実現していたとか,へーと思いました. しかし,文章がわかりくい.冗長すぎて,下手な翻訳本なのかと思うレベル. また,記述が曖昧で,正確性や資料的価値はありません.「確か~がそんなやり方」 「おそらく~ だったか~だったと思うんですけど」 とか,万事そんな感じの記述で,少なくとも技術文章や論文ではありません.エッセイというか,居酒屋でのヨタ話のレベル.本を書くんでしたら,最低限調べればわかることは調べるか,資料へのポインタを示して欲しいな
本当は私がやろうと思っていたけど、諸般の事情で人に任せることにしました。こういう条件です。 1レコード長不定のCSVファイル。 カンマ区切りでデータ中にカンマは出てこないものとする。 CSVの大きさは2GB超を考慮する 開発環境はVisual C++ 2003で使っていいのはCRTとWindows API、C++の言語機能のみ。 改行はCR+LFのみ 文字はSHIFT-JISのみ 当然先頭から一行ずつ読み込んで末尾行を判定するロジックは禁止。 こういう条件のCSVで、末尾にある行の先頭桁が数字になっています。この値を取得しなさい…という機能を作ってもらったら三日分の時間を使っても期待するものができませんでしたorz。(大サービスで)CSVファイルの末尾がCR+LFで終わっているとは限らない(末尾の改行がない)…ということまでは教えたのですが。 正確に言えば、それなりには動くのだけれど、「C
17項 AcceleratedC++でも何度も注意されていた「自己代入」のチェック。ほとんどの場合、this と &rhs の比較で判定すれば良い。 エイリアシングの可能性を考慮しなければいけない理由 効率:代入は非常にコストがかかる操作になる場合がある 安全:間違いを犯さないようにする。代入時に古いリソースを破棄するが、新しいリソース割り当て際に古いリソースが必要なことがある。 18項 完全でしかも最小限のクラスインタフェース クライアントが普通やりたいと思うようなことは、何でもできる 関数の数が可能な限り切り詰められていて、関数同士で機能がオーバーラップしていない 関数が一杯詰まったインタフェースの技術的な欠点 インタフェースに含まれる関数の数が多ければ多いほど、クライアントにとって理解し難いものになる 大きいインタフェースは保守が難しい 必要以上に長いクラス定義、プロジェクトの存続期
多分、これが混乱させてる大元。*1 class変数を宣言するとき、、、 hoge h;みたいに書くわけですが、これが、C#とC++で90度くらい意味が違う。 C#の場合 classの場合は、必ず自由領域*2にインスタンスが存在するわけで、じゃあ、"h"とは何か?と言えば、何のことはなく単なるManaged Heapへの参照を保持しているにすぎないことになる。*3従って、インスタンスを作成するためには、new演算子でManage Heapに領域を確保して、クラスコンストラクタを走らせて初期化させた上で、インスタンスを作成する必要がある。 このようなことから、C#においちゃ、必ず以下のようになるわけで hoge h=new hoge(<なんちゃらかんちゃら>); //以下"h."でメンバにアクセス可能 //hに、他のインスタンスを参照させ直すことも可能 //hのスコープが外れても他で参照されて
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く