はてなキーワード: GCCとは
やれやれ、面倒くさい子だね。Cのpdfを眺めてみたよ。9899:1999の5.1.2.2.3に載ってるから確認してくださいな。
GCCについてはここを見てね。http://gcc.gnu.org/c99status.html
鼻息荒いからからかっただけだよ、ごめんな。
ソース出せという問いに、その反応で満足するやつはプログラマじゃないな。
で、俺は思うんだが元増田がC99あるいはC++であるという根拠は全く無いし、業界標準であるgccだってC99準拠じゃないしで、その2つが正義であると振りかざしてしまうお前は随分かわいそうなヤツなんだなぁと思う。正直、業務で一番問題を起こしやすいタイプ。
私は今某社でWebアプリ開発の補助をするアルバイトをしている。一応少しはコードを書く。でも、自分はプログラマじゃないな、と思う。素敵なアルゴリズムを考えたりもしない。アプリの設計は当然社員さんがやる。私がやることと言えば、機能追加のための簡単なコードを書いたり、簡単なWebアプリをフレームワークを勉強しつつ書いて、見た目をCSSで整えて、そんなことだ。
やりがいを感じないわけではない。やっぱり自分の書いたコードが上手く動けば嬉しい。でも、プログラマの壁を読むと、何となく自分はコーダーになれてもプログラマにはなれないような気がしてくる。一応FizzBuzzは解ける。以下、そのコード。※追記参照
#include <stdio.h> int main(void){ int i; for(i=1; i<=100; i++){ if((i % 3 == 0) || (i % 5 == 0)){ if(i % 3 == 0) printf("Fizz"); if(i % 5 == 0) printf("Buzz"); printf("\n"); } /* 以下二行と返り値追記 */ else printf("%d\n", i); } return 0; }
アルゴリズム自体は多分2分足らずでもやっと思いつき、書いてる途中で脳内もやっとを形にできた。でもCの文法を忘れていて、コンパイルを通すのに独習Cを調べつつ、5分くらいかかった。
その時に、(i mod 3 = 0)とか書いてて、なんか自分はやっぱりダメなんじゃという気にさせられた。代入と比較の区別がついてない。そういえば先日も、編集してるファイルが違ってたとかカンマをつけ忘れてたとかでエラーがでてるのに、それになかなか気がつかなかったり、if文の条件が成立する場合としない場合を逆に考えてしまったりと、そんなぼんくらミスばかりしている。
そんなときに、「ああ、自分ってプログラマ向いてないのかも」と感じさせられる。
そしてなにより自分がプログラマに向いていないと思うのは、知的探求心の問題だ。プログラマを志していたがその道を諦めた友人に、なぜプログラミングの勉強をやめたのか?と聞いたとき、彼から帰ってきた答えはこうだった。「この道に進んだら一生勉強しなきゃいけないから。自分にはそんなことはとても無理だと思った」この答えを聞いたとき、でもプログラミングの勉強だったら楽しくないのかな?と思った。しかし自分を省みたとき、私自身もそう熱心にプログラミングの勉強をしているわけではないことに気がついた。Macに入っている一通りの言語でとりあえずHello!World!を書いたりしたが、だからといってそれらの言語の得手不得手がはっきりわかるまで勉強したわけではない。文法だって忘れてしまった。アルゴリズムを熱心に勉強したことはないし、なにより自分は最も唾棄すべき「とりあえず動けばいい」と思っている人間だ。エラーがでてそれを直しプログラムが動いたとき、なぜそのエラーが出なくなったのか?なぜ動くようになったのか?そうしたことを納得がいくまで調べることは滅多にない。なんとなく、ああいう理由なのかな?と考えて、それだけですませてしまう。もう一度書くが、自分が書いたプログラムが思った通りに動いたときは楽しい。でも、そこで止まってしまうのだ。なぜ動いたのか?それを徹底して考え、理解してはいない。
今のバイト先の開発チーフには、いつもこの点を注意される。なぜそれでいいのか徹底的に考えろ、ドキュメントをちゃんと読め、関数の挙動がわからなかったらソースを読め、と。でも正直、動いてくれたらそれでいい。さすがにライブラリのドキュメントを読む癖は多少ついてきたが、けれどもそのソースを読むところまでは正直頭が、気持ちが回らない。
だから、自分はプログラマになれないと思う。いつまでたってもコーダーのままだろう。
プログラミングはとても特別な才能がいる仕事だと思う。それは、アルゴリズムやデータ構造、オブジェクト指向などといった抽象的なものごとを理解し、それを具体的なソースコードに落とす頭だけではなく、ものごとについてとことん考える知的探求心も必要だ。その二つを満たす人こそがプログラマなのだと、一コーダーなりに私は思う。
だから私は、プログラマになれません。
【追記】
さすがに仕様を満たしていないのは恥ずかしいので直しました。こういう間抜けなミスをするところがなぁ…orz。
mainについて熱くなっている方々の話にはいまいちついていけないのですが、私はこれをCで書いたつもりですし、戻り値がないことにも警告はありませんでした。コンパイラはgcc version 4.0.1 (Apple Inc. build 5465)です。
同じ金をだすなら1つ2つ上のスペックのデスクトップとかミドルタワーとか、もしくは2つ買ってしまうとか出来る。ディスプレイもいらないし。
別に高いスペックは要らないのでノートでも5万くらいのでいいのです。
サーバならGUIなんてお飾りだし、無駄に容量食うし、わざわざお金出してXP homeにする意味がわからない。ミドルタワーに2003の方がまだわかる。
2003serverでもいいんだけど、それがセットで売ってないんです。
バラで買うと高いし。
ミドルタワーとか寝てる横で稼動させたくないのです。たぶんうるさくて眠れない気がする。
gccでもいいような気もするけど、サーバ管理用にGUIとか書きたくなったときに困るかなと。
家にVC++があるってのもあるし、慣れてるから。
つか、取っ掛かりはLAMP的なレン鯖が安いし楽だと思う。
レンタルサーバーってexeとか動かせるもの?
しかし、将来的に茨の道になりそうな気がするんだよな。
それはそうかもとは思う。2年先とか3年先にはいろいろ問題発生するかもだけれども。
一つは、なんでノートなの?と思う。
あまってるノートを自分用サーバってのはわかる。静かだし消費電力少ないし。
しかし、新規に買うとなると、何を言っても高い。同じ金をだすなら1つ2つ上のスペックのデスクトップとかミドルタワーとか、もしくは2つ買ってしまうとか出来る。ディスプレイもいらないし。
サーバならGUIなんてお飾りだし、無駄に容量食うし、わざわざお金出してXP homeにする意味がわからない。ミドルタワーに2003の方がまだわかる。あと、VC++は外せないのかな?LAMP的にPHPのかわりにGCCじゃ駄目なのかな。つか、取っ掛かりはLAMP的なレン鯖が安いし楽だと思う。WinでVC++でやりたいなら仕方ないけど。
しかし、将来的に茨の道になりそうな気がするんだよな。
とかとか気になる。
逆に、ここ数年MS万歳な環境でやってます、とか、前はそんなんでした、なんていう個人の方とか、いたりしませんかね。LAMPの話は良く聞くけど、MSなのは商業しか聞かない。
gccの構文解析の結果(構文木)を、XMLとして出力してくれるツールです。C++の構文解析はやたらと面倒らしいので、こういうのがあるとうれしいみたいよ。
「Py++」というC++のPytyonバインディングで使われていたので、必要になりました。gcc-xml 0.6はバイナリで配布されてるんだけど、MSVC7.1までしか対応してないようで、Visual Studio 2005だと使えませんでした。うーん、困った。というわけで、最新版のソース一式を取得してビルドしてみます。
gcc-xmlのビルドには、CMakeというツールが必要になります。CMakeは、オープンソースでクロスプラットフォームのビルドシステムなんだとか。CMakeの公式サイトから、Windows版のインストーラーをダウンロードしてインストールしよう。
実は最初は、ここでcygwinのsetup.exe経由でのインストールをしてたんですけど、これだとgcc-xmlのビルドの段階でエラーが発生しちゃいました。この原因がどうしてもわかんなかったので、あきらめて公式サイトのインストーラーを使うことにした次第です。
ソース一式はCVSから取得できます。CVSクライアントはいろんなのがあるので、好きなクライアントを使って取得しよう。ここではcygwinのCVSを使って、シェルから以下の命令を実行して取得しました。40MBくらいあるみたい。
$ cvs -d :pserver:anoncvs@www.gccxml.org:/cvsroot/GCC_XML co gccxml
「Visual Studio 2005 コマンドプロンプト」を起動してください。起動したら、さきほど取得したソース一式が格納されているディレクトリに移動して、以下の命令を実行します。
$ cmake .
cmake.exeにはあらかじめパスを通しておくか、パスを直接指定するのを忘れずにね。
gcc-xmlのビルドはまだ終了してなかった! 一度ビルドが終了しても、第二第三のビルドが必要となって…。などと恐れおののきましたが、二段階でいいみたい。
さきほどの処理が終了すると、同じディレクトリに"gccxml.sln"というソリューションファイルが新しくできあがっているかと思います。これをVisual Studio 2005から開いて、Releaseビルドしよう。ビルドが終了したら、以下の5つの実行ファイルができあがっているはずです。
まずは環境変数の設定です。Visual Studio 2005を使っていることを、gcc-xmlに高らかに宣言しておこう。
$ set GCCXML_COMPILER=msvc8
つぎに、gccからVisual Studio 2005のインクルードファイルを使えるよう、パッチをあてます。ありがたいことに、"GCC_XML/VcInstall"ディレクトリ以下にVisual Studioのバージョンによってパッチが用意されています。そのディレクトリと、パッチを当てたファイルを出力するディレクトリ("gccxml.exe"が置いてあるディレクトリ)を指定して、"gccxml_vcconfig.exe"を実行してください。
$ bin/release/gccxml_vcconfig GCC_XML/VcInstall/ bin/release
あとはbin/releaseにパスを通せば、gcc-xmlが使えるようになったはずです。bin/release以下をどこか適当なディレクトリにコピーして、そこにパスを通してもオッケイです。やったね! というわけで、さっそく試してみましょう。
$ gccxml eample1.cpp -fxml=example1.xml
ここでは、解析するC++のソースファイルとしてeample1.cppを入力し、eample1.xmlを出力しています。ちゃんと出力できたかな? できたー! やったー!
以上で終わりです。
http://journal.mycom.co.jp/articles/2007/05/07/mix02/001.html
とのことなのでちょっと実験してみました。
まず、用意するのは以下の円周率を求めるルーチン。ベンチマーク用にループ回数を固定してあります。JavaScriptでは若干変更があります。
double pi() { double pi, ppi; int k = 0; float ek = 0.0; while (k < 1000000) { ppi = pi; ek = 8.0*k; pi += (4/(ek+1) - 2/(ek+4) - 1/(ek+5) - 1/(ek+6)) / pow(16.0, k); k++; } return pi; }
そんでもって次の環境で処理時間を計ります。
結果は以下の通り。
ブラウザとか | 平均処理時間 [秒] | Cと比べて何倍かかったか |
---|---|---|
C | 0.28 | (1.0) |
Safari | 8.39 | 30 |
Camino | 6.45 | 23 |
Firefox | 10.34 | 37 |
Opera | 3.31 | 11.8 |
WebKit | 3.18 | 11.4 |
あれぇー? てことはSilverlightってCより8倍以上速いじゃん!!
ktkr!!!!
wktkして待ちましょー
今日はなんかコードを書く気になれんので、開発環境でも整えよう。
自分の物理的な開発環境は、会社PCと自宅PC(デスクトップ)、自宅PC2(ノート)。
会社PCと自宅PCデスクトップはWindowsで自宅PC2(ノート)はUbuntu Linuxみたいな構成になっている。
基本的には、PHPのコードしかいまんとこ書いてないんだけど、まあいろいろ他のコードも書いたり。
いややっぱりPHPしか書いてないか。現在の構成は以下のようなかんじ。
会社開発環境:Eclipse + Aptana + PHPEclipse ほんで日本語入力がskk。あとは特になしデフォ。
自宅(デスクトップ)開発環境:萌ディタ + FFFTP。あんまこっちじゃ開発してない。
自宅(ノート)開発環境:gedit(なんか標準でついてるやつ)。これで書いて、ごにょごにょみたいな。(Apacheいれて)。こっちメイン。
ほんで、これを統括するリポジトリ、BTS。会社のリポジトリは、SourceSafeとSubversionがある。Subversionに移行中。
BTSはMantisとかいうのだったはず。導入したばっか。あと個人用にもSvnリポジトリがある。趣味の開発とかはこっちへ。
なんというか正直複雑するというか、結構面倒なんでいろいろ統一しようと思う。
まず自宅はノート遅すぎなので(このご時世にX20はねーわ)、デスクトップだけにしてノートはお蔵入り方向で。さようなら。
会社の開発環境もちょい変えよう。なんかEclipseはだめだ。僕みたいな初心者プログラマには便利すぎ。
なんかどんなコードを書いても動いてしまいそうな気がする。よくない(自分がだけど--)。
基本構成は、http://www.itmedia.co.jp/enterprise/articles/0703/07/news017.htmlを参考に。
会社と自宅のデスクトップにcoLinuxを入れて、上記3種の神器を入れる(ミーハーでごめん)。
次に全PCのIMEをSKKに。いい加減統一しないと指が変なかんじになってきている。
これでコードを書いたり、文書を書いたりできるようになった。次に開発動作環境。
Apacheとphpとrubyとgccとg++とnasmとjavaとhaskellとperlぶっこんどこう。jsはFirefoxで動くからすばらしいね。
次は、subversionとmakeとqemuいれとく。
社内環境はどうにも変えようもないけれど、BTSとかSVNに変更が発生したらIRCでメッセージ流すのはいいと思った。
http://www.itmedia.co.jp/bizid/articles/0703/01/news113.html
はやめにPG終わらせてやってみよう。
まあこんなかんじかなあ。だらだらと書いてしまった。まあよさげ。ちなみにこれ以外のごにょごにょは