2009-01-01から1年間の記事一覧

16進表記の3の倍数にマッチする正規表現

そのまま書くと分かりにくすぎるのでperlで。 $zero="[0369CFcf]"; $one="[147ADad]"; $two="[258BEbe]"; /^(?:$zero|$one(?:$zero|(?:$one$zero*$two))*(?:$two|$one$zero*$one)|$two(?:$zero|(?:$two$zero*$one))*(?:$one|$two$zero*$two))+$/要は16進表記…

まじめな話、新人研修とかプログラムの授業で C を取り扱うのなら、その前にBrainf*ckで色々教えたほうがいいと思うんだ

普通プログラムで最初に身に付けることは、コンピュータにいかにして仕事させるかっていうことだと思うけど、Cとか初めてプログラムに接触する人にとっては謎の呪文が多いし、そういう謎な部分は本題ではないのにやたらと気になって大変よろしくない。構造化…

「1+2=3 足し算に潜む迷宮」 読み終わった

1+2=3をネタにいろんなパラダイムを見てみる的な内容で、面白そうと思ってたあたりを小さく一巡りできて面白かった。 冒頭では予備知識なしでも読めるって書いてあったけど、割といったような…あと変換過程とかすごい省略しまくってる感じがする。こういう本…

あれ、

一個前のを書きながら思ったんだけど、実はかなり面白くないか? OOPが難しいのは、数多の実物より先に抽象概念を定義する必要があって、そこで目的に合わない定義の仕方をしてしまうと、ドカーン!ってなる (ambiguous representation) ので、慎重に定義し…

そうだ、

派生クラスの合併集合のような基底クラスを作るための構文を用意すればいいんじゃないか?たとえばJavaで: ambiguous class Animal {} // AnimalにはNotImplementExceptionを投げるだけのrun, fly, swimが暗黙に実装される class Dog extends Animal { publ…

abstractもしくはambiguous→どっちでもいいや

抽象的な言葉は、いろんなところで使えるから便利だけど意味多すぎるなぁとか思ってたけど、よく考えたら抽象的というのは、表わしたいことの本質以外をそぎ落としたということなんだから、そういう言葉っていうのはむしろ混じりけがない言葉で、混じりけが…

いいえ、パンツです

私は「パンツじゃないから恥ずかしくないもん」というのを「「パンツではない」ならば「恥ずかしくない」」という命題だと捉えて色々考えてみたのだが、これだと結局なにが言えるのか分からなかった。 そこでふと思い出したのが、modus ponensのことである。…

プリプロセッサで指数爆発させる

C++

関数fと引数vのタプルと、整数nを渡すとvにfを2^n回適用する関数マクロを作った #define PP_TUPLE_ELEM_0(a, b) a #define PP_TUPLE_ELEM_1(a, b) b #define PP_TUPLE_ELEM(n, tup) PP_TUPLE_ELEM_I(n, tup) #define PP_TUPLE_ELEM_I(n, tup) PP_TUPLE_ELEM_…

餃子の王将の文句で…

重複一日7000箇所、コピペ一日5万回、変数3000個、ソース一日100万行、コードは万里を越える… https://twitter.com/DecimalBloat/status/1793272918 あまりにもヒットしすぎて自分の発言引用してしまった…

超簡単scope_guard

struct scope_guard { std::function<void()> f_; bool dismiss_ = false; template<typename F> scope_guard(F && f) : f_(std::forward<F>(f)) {} scope_guard() = delete; scope_guard(scope_guard const &) = delete; ~scope_guard() { if (!dismiss_) { f_(); } } void dismiss</f></typename></void()>…

C++テンプレートテクニックの感想とか

C++TT読み終わった。 現代的なC++で使われている技巧が一通り入ってて、なんというかこうtemplateの面白い部分ばっかり集めた収まりのいい本だなぁと思った。 個人的にはET解説ついでにラムダ式とかbindとか欲しかったとか思うけど、それやるとおそらく分量…

C++0xの文字列にだいたいマッチする正規表現を書くなどしてみた

がんばった。 \u, \U, \o, \xのあたりはあまり気にしない。あと文字コードも知らない。 $esc = '\\\\.'; $cChar = "(?:[^'\\\\\\n]|$esc)"; $cPrefix = '[uUL]'; $ch = "(?:$cPrefix?'$cChar+')"; $sChar = qq{(?:[^"\\\\\\n]|$esc)}; $strPre = '(?:[uUL]|u…

今までどのくらいプログラミング言語を触ってきたか(3秒で飽きたものも含む)

http://d.hatena.ne.jp/oorexx/20090507/1241703786 http://d.hatena.ne.jp/faith_and_brave/20090508/1241747936まぁプログラミング言語とか言語以外もふくんでるけどね! 日本語 数式 英語 BASIC C Z80 asm CASL SQL C++(runtime) HTML CSS JavaScript Act…

5/1は小牧愛佳の誕生日だったということで

気付いたのが当日だた。塗るのはおいおい。

世間でのC++のテンプレートに対するバッシングと言い訳

C++

テンプレートを使うとコードが読みにくい 多分vector<int>を読みにくいと言う人はいないと思う。むしろ、テンプレートの存在を知っているならば、「int用のvectorだ」と素直に理解できるぐらい簡単。読みにくいのは、例えば(次のコードは例なので、意味は分から</int>…

ビルドできない→できた(←今ここ)

メモ。 何ヶ月か前に新しいgcc(4.2か4.3ぐらい)で突然ビルドできなくなったんだか、起動できない物体ができたんだか というわけでgcc3.4でやってた またビルドに失敗するようになった 今度は4.3だとできた おしまい。

世界一遅い「C++テンプレートテクニックが発売」のお知らせ

C++

私の知人へのハブとして、発売しました >C++テンプレートテクニック で、買ったはいいがフォトンブラスターとかミサイルランチャー使い込んでたのであまり読み進んでない。今3章読み始めた。もうこのへん読み飛ばしてもいいかな。

直前のエントリーのコードの解説 for 自分

C++

直前のエントリーのコードは、{f, a, b, ...}というtupleを受け取って、a, b, ...にfを適用して返すという関数で、fやaやbがtupleであれば、それらに対しても再帰的にapplyを適用した上でf(もしくはapply(f))を適用する。{{a, b, c}, d, {e, f, g} } なら …

とりあえずメモ

C++

http://twitter.com/Cryolite/status/1571598248 のやつ 一部抜けている定義とかあるけど気にしない。あと完全にコピーで作ってるけどこれも気にしない。 template<typename T> struct sizeof_; template<typename ...T, template<typename ...> class TT> struct sizeof_<TT<T...> > { constexpr size_t const value = s</tt<t...></typename></typename>…

ここ一ヶ月ぐらいの没入具合について

BALDRSKY。買ってからはそれぐらい経つけど、プレイ始めたのがいつだったのか忘れた。まぁいいや。とりあえず寝る間も惜しんでやってた。惜しんだ分は会社 で 休んでいるので健康上は問題ない。 で、既にTwitterにはpostしてるけど、菜ノ葉さんが編入試験の…

エラー付き戻り値クラステンプレート

C++

もうだいぶ前だが、http://www.kmonos.net/wlog/88.html とか http://d.hatena.ne.jp/gnarl/20071216/1197774166 とか見て、エラーの処理を呼び出し側で柔軟にできるようにならないかと思って書いた(んだと思う)。 error.hpp#if !defined ERROR_HPP_INCLDU…

あともう一冊宣伝

http://d.hatena.ne.jp/faith_and_brave/20090408/1239205628 かの有名な巨匠二人の手による一品ということなので、私の知り合いでC++使ってるのにtemplate禁止とかC++の意味がねこそぎ奪われているような環境に浸っている諸兄は、これを機会にtemplateとの…

かいものしようと町まで出かけたらシャーペン落として不快なDigitalGhostさん

あれ これ それ どれ 足元に詰まれた過去(積んである本)よりも、前だけ見つめて生きていこうと思います。

そういえば自分にとってのプログラムにおける師と呼ぶような人物がいないことに気付いた

と、Twitterでもらそうと思ったけど、一つの記事ぐらいにはなるんじゃないかと思ったので、ぽすとしないでこっちに書いてみる。そりゃ確かに学校には先生がいたけど、学生時代に授業でプログラミングを教えてもらった誰の「自分にとってのプログラム(もしく…

Yet Another "Google Chrome使ってみた"

ほかのメジャーなブラウザと比べて、 早い User StyleSheet使えなくて悲しい すごい変な位置に実行バイナリがある Feed見れなくてびっくりした 左上ダブルクリックして窓閉じられなくて不便 FeedはReaderで読めばいいとして、左上ダブルクリックできないなん…

今後のネタリスト

basic_static_string 的なものを作って、template constexpr basic_static_string operator""_ss() 的なuser-defined literalがあればいいんじゃないかとか Boost.Protoでnewtypeを書きなおしてみるとか、lambda作ってみるとか esolang処理系でっちあげるとか

constメンバオブジェクトとmove

C++

struct Foo { Foo() = default; Foo(Foo const & foo) = default; Foo(Foo && foo) {} }; struct Bar { Foo const foo; Bar() = default; Bar(Bar const & other) = default; Bar(Bar && other) : foo(std::move(other.foo)) {} // foo の初期化にはコピーコ…

昨日のやつの現状把握

C++

訳が分からなくなってきたのでまとめてみる。以下、登場する識別子は、特に明記されていない限りnewtype名前空間中に定義されている。 全体的にETで実装。 2項演算のとき、各項の要素の型は違っていてもよい。detail::binary_promoteメタ関数で適当に型計算…

三次元ジオメトリ計算用ETライブラリ

C++

そろそろ日記書くべきだということで、はるか一年ぐらい前に書いたジオメトリ計算用ライブラリをちょこっと手直しして載せてみる。 もともと行き当たりばったりに書いていたものなので、とってもカオス。特に同次座標辺りはすごい適当な扱い。ほとんど計算に…

なつかしい

http://www.eonet.ne.jp/~fuutapapa/boyscout/Rope/rope.htm えび結びが一番萌える。長い紐を見つけるとやりたくなる。垣根は忘れた。でもあれ結んでるっていうより適当に絡ませているようにしか思えない。張り綱は何種類かあったような気がする。どうしても…