「C/C++」を含む日記 RSS

はてなキーワード: C/C++とは

2009-08-09

http://anond.hatelabo.jp/20090809025641

C/C++ならば、ループカウンタローカル変数を使えば、最適化されることは分かってるから保守性重視で書く。

真面目なコンパイラなら1はどっちを書いても同じようなコードになるさ。

まー、こんな所をチマチマこだわっても、全体は良くならん。

こまけーこたぁいいんだよ!!(AA略

http://anond.hatelabo.jp/20090808190412

ところが今回はカウンタ変数引数に入れてメソッドを呼び出している。

そうなると、メソッド呼び出し先で、仮引数メモリを毎回確保することになるので、

カウンタ変数を共通にするのは意味がない。

メモリを毎回確保することは確かだけど、それとカウンタ共通化とのつながりがわからない。

ケース1はなんか言語特性の違いなのかという気がしてきた。

C言語からはじめてJava中途半端にかじった後、C++メインに以降しつつあるへっぽこプログラマです。

私の書くコードの可読性が低いのは確かだろうなと思う。

プログラムのあるべき論として、ヘンな箇所でアクセスされて不良を作らないように

変数寿命をなるべく短くなるようにする原則があることは知っている。

ただ、C/C++ポインタというものが存在してメモリ解放とか明示的に行う。

またC/C++プログラマは大きなメモリ解放/再確保がかなり性能コストがかかることをしっている。

それなので、C/C++だと一度確保した大規模領域を解放/再確保しないように

本来の変数寿命より、長めに扱えるように設計することがある。

そんな変な寿命変数は不良の温床であり、可読性が低いことは理解しつつも。

さらにいうとC言語では関数の先頭で変数宣言して、

メソッド抜けるときは関数ローカル変数はすべて領域を解放するようにコーディングするもんじゃないっけ

そんな怪しいことをやるプログラマなんで、

関数ローカル変数の、

しかもほぼ配列インデックスにしか使わないiなら使いまわせばいいじゃんと思うのです。

2009-07-16

一方、googleは台数を増やした

というせりふが浮かびますた

// 台数増やすにはC/C++が必要だろうけどね。

http://anond.hatelabo.jp/20090716183353

2009-06-18

http://anond.hatelabo.jp/20090617231810

適材適所

sed ちょっとした正規表現抜き出しに

perl そこそこの文書処理に

Java わりと何でもいけるが、わりと平均的にめんどくさい

JSP メモリ64K制限さえなければすばらしかったが、Java展開されたときのPrintfにサイズに制限があるので、小さいHTML向け

PHP Perl的に使う人大杉、あくまでも、HTML埋め込み言語として使うと最適print("HTMLほげほげ")とかみると悲しくなる

C/C++ 速度が必用なときに。まぁ、今では巨大トランザクションサーバーとか、CG世界とか

速度マニア正規表現マニアな人はlex/yacc/bison (BNFな人はANTLRらしい。最近知った)。

EXCEL セル計算的な物なら、わりとなんでもこなす。

VB ぼちぼちのGUIが欲しいときに

って感じか? 用途と違う道具を選んで、道具がどうのこうの言う前に、適切な道具を選べばいんじゃねーかと。

プログラマーは道具の善し悪しを語るんじゃない、道具を使いこなす自分の腕の善し悪しをかたらなくっちゃーだめなんだーーーーーーーー

とか、増田るあたり、俺もまだまだ、若いなぁって安心するけど・・・そろそろ、大人にならなくちゃと思う。

http://anond.hatelabo.jp/20090618121442

もともと

if("0x0a" == 10){

}

を成り立たせた方が都合がよい。というのの応用で

"0x0a" == 10 == "10" となるだけだからねぇ。

if ("0x0A" == 0x0A) {
    print '(´ε` )チュッ';
}else{
    print '\(^o^)/';
}

は'(´ε` )チュッ'だしねぇ。

"0x0a" == 10 == "10" == 0x0Aなんだよね・・・

この辺がPHP世界

数字に変換されると言うよりは

==演算子、 おおよそ意味が一緒

===演算子、 おおよその意味が一緒で、型も一緒

だからねぇ。

もともと、HTMLXMLの中の数字っぽい物を数字として処理する方が、多いからこうなってるだけで・・・

文字列キャストしたら0になるっていうのが、単なる他の言語の決めの問題だからねぇ。

少なくともC/C++言語では文字列キャストしたら、ポインタアドレスが返ってくるから0じゃねーし。

atoiの事を言っているなら、それキャストじゃなくて、関数つかってるし・・・関数使うなら=タイプした方が速いだろうという、マインド

言語毎の仕様差分は、黙って覚える物で文句を言う物じゃないと思う。

2009-06-17

http://anond.hatelabo.jp/20090617222616

めんどくせーめんどくせー言ってる増田だけど。

C/C++はまずガベージコレクタが無いのがめんどくさすぎる。いちいちライブラリ導入したりboostスマートポインタ使ったりしなきゃいけないのがめんどい

あと入出力とか文字列処理とかが発狂しそうなほどめんどくさい。俺としては。

あとなんかvectorを参照渡しだか参照返しだかしようとして発狂しそうになったことがある。

まぁ上級者的にはありえない話なんだろうけどさ。

http://anond.hatelabo.jp/20090617144121

C/C++CPU依存性を減らしたアセンブラで、面倒くささを耐える代わりに速度を稼ぐという特殊用途言語なんだから、「プログラミングは面倒だ」の例としては局所的すぎるなー。大量のバッドノウハウを楽しんで乗りこなすマニアどもが、ゲーム組み込み検索エンジンあたりの開発に使うプロ向けの道具で、間違っても「プログラミングの細かいところが嫌い」なんていうライトプログラマが使うようなものじゃない。

もっとチャラい言語使いなよ。RubyとかActionScriptとか。よりによってPHP/C/C++とか選択がマゾヒスティック過ぎ。仕事だか学生課題だかで無理矢理使わされてるの?

http://anond.hatelabo.jp/20090617140839

PHPに限らず、CとかC++もめんどくせーこと多くて嫌いなんだよ…。

あ、C/C++もまともな言語じゃないっすか。そうっすか…。

2009-05-05

http://anond.hatelabo.jp/20090505013325

自分Macメインプログラマじゃないので、ズレたこと言うかも知れませんが……。

何でも良いから動くアプリ作りたいならJavaが良いと思う。

参考書も参考サイトも無数にある。その中にはプログラミング経験者を対象にしたものも多い。しかもJavaなら将来WindowsでもLinuxでも通じるし、Webアプリなどにも利用出来る。C++信者の私としては悲しいけど、時代はJavaだ。

ネイティブアプリを真面目に作ろうと思ったら、Objective-Cが基本っぽい(C++ではCocoa使えず、Carbonになってしまう)。

ただ、Objective-C参考書サイトは、C/C++Javaなんかと比べて絶望的に少ない上、ざっと見た感じCocoaな部分やXCodeの機能とごっちゃに記述されているものが多く、初心者にはとっつきにくい(理解しづらく、書かれている通りに打って動かす以上のことを行いにくい)点が多々あると思うので、まずはCでプログラミング(コンソールアプリ製作)を知っておくのが良いかも知れないです。

何にせよ、プログラミング言語というものは何か一つやっておくのが重要なので、(もの凄ーく悔しいですが)Java無難なんじゃないかなーと思います。

2009-03-10

http://anond.hatelabo.jp/20090310095053

ここ1年弱でfortranとかのクソコードを書いた経験以外一切無くてブランクも数年あった状態から、C/C++を使ってオブジェクト指向でそれなりに書けるようになった俺だけど。

一番苦労したのはメモリ空間のイメージを掴むまでだったね。C++で言うと、newしたオブジェクトメモリ空間上にどう存在してどう振る舞うのか、っていうイメージが湧かなくて最初大変だった。

UMLのシーケンス図で表現される振る舞いを、頭の中に作った仮想的なメモリ空間上でシミュレートする感じか。この辺さえ理解できたらあとは細かいテクニックの話だけな気がする。

いや、このエントリは説明が無駄に難しくなってしまってると思う。ごめん。

2008-12-31

http://anond.hatelabo.jp/20081231054019

チューニングは最初と最後にやる物だと思う。

最初にチューニングの方向性を決めて設計

実装

必要な部分からチューニング

という方法でないと、いざ、チューニングと思っても、設計ダメチューニングできないことがある。

だから、C/C++チューニングって設計段階で計画しておいて、最後に実行する物。

だから、C/C++って設計が命。とくに100人越えるプロジェクトとかだと、最初に設計しておいて

外注するまえに手を打っておかないと、最悪 部品丸ごと交換とかをチューニングと呼ぶはめになる。

このチューニングを前提とした設計と、単なるあてずっぽうの設計は全然違うのに・・・

チューニングって結局 実際に行うのは1年後だったりするわけで・・・

お客さんが理解してくれないことも多いんだよね・・・

で安い方に仕事出して、1年後に作り直し費用とか支払ってる。

もう、ほんと、アレだと思う。この業界

http://anond.hatelabo.jp/20081230225149

C/C++にいくつか思うこと (ちなみに、プログラマ始めたのはCができた頃でC++よりも私のプログラマ歴の方が長い)

Cはポインタ というか、ポインタを使いこなすことで、チューニングしていく言語だから ポインタ使いたくない=チューニングしたくない

って人は他の高級言語で良いと思う。ただ、動画などの処理をC/C++又はアセンブラ以外で書く人というのは、あまり聞かないので

速度が必要=C/C++って事かと思う。

昔、全くチューニングしていない、CとJavaを比べて同じ速度だからJavaでもOKというレポートを読んだことがあるのだが、あれは酷かった。

Cはチューニングしたときに、もっとも伸びしろが大きく、必要な場合アセンブラと並記できることで、ほぼアセンブラという領域まで

チューニングできるところが魅力。その際、ポインタは無くてはならない。知っておくべき技術

繰り返しになるけどチューニングしない人には意味がない言語と言われればその通り。

また、ポインタだけではなく、レジスタについても知っておくとCでの伸びシロが大きくなる。

そして、少なくともアセンブラレベルでのPUSH,POP,CALLは覚えておいた方がよい。

関数コールをすると、レジスタ類の待避アセンブラレベルでは走り、その上、スタック引数返値を積んでジャンプするという

ものすごく遠大な処理がアセンブラレベルでは走っているが、Cレベルでは1行の関数コールに見える。

という事を理解しておくと、C++でのインライン関数重要性や、再帰関数が実行時にはかなり重い理由が頭の中に浮かんでくる。

最近コンパイラ最適化してくれる場合も多いけどw

こういう言い方をすると、最近はCPUが早いから大丈夫とか言う人が多いが、じゃぁWindows Vistaは売れましたか?と聞きたい。

少なくともチューニングが必要な事もある。必要ないこともある。という事で選択すれば良いと思う。

たかだか、数行のスクリプトチューニング不要ならそりゃ、Perlつかうさ

参考までに書いておくと、個人的感覚ではC++はオブジェクト指向言語ではない。

アセンブラにまで行き着く C言語を大規模開発する時に最低限必要となる抽象化をするための言語

そのために、まともにOOPで設計するとC++では重くなる事が多い。いかに、崩せるかがキモ

またC++使いか?エセC++使いか?の見分け方は

constを正しく使えるか?参照を正しく使えるか? vtableの説明ができるか?

という質問に正しく答えられるか?で見分けると結構見分けがつくと思っている。

2008-02-29

http://anond.hatelabo.jp/20080228161909

嘘っつーかなんか破綻してるよね。

C/C++/C#」とかって C# そこで一緒に!?

>臆面も無く低レベルプログラミング言語を挙げる人のほとんどが、

C#!?

2008-02-28

http://anond.hatelabo.jp/20080228152620

「私、プログラミング好きだよ」と言うプログラマに、好きな言語や開発ツールを聞いて「C/C++/C#」の名前があがってくるとげんなりする。心底がっかりする。C/C++/C#は俺も大好きだし、素晴らしい開発環境だと思うけども、臆面も無く低レベルプログラミング言語を挙げる人のほとんどが、それ以外の低レベルプログラミング言語を知らないんだもの。それどころか、IA-32仕様書があることすら知らないし、興味が無い。せめて4004の基本構造くらい理解してから言ってもらえませんかね。

要するに「プログラミングを理解する知識の深い私」を演出するために、いちばんてっとり早くて優等生な回答なんですよね。C/C++/C#は。あと、アセンブリ言語や、機械語もこのカテゴリに入る。

確かにUnixを記述したC言語として鉄板なことは間違いないけど、本当にプログラミングが好きならもっとたくさんの名前が挙がってもいいと思う。もっと書けよ!インテル系以外も!最近のも!「C」「アセンブラ」「MMX」「SSE」「3DNow!」のコンボはもう飽きました。

1度だけ悲しきAdaという回答が返ってきて、土下座せんばかりに感動したことがあります。あ…この方、本当にプログラミング趣味でやってるんだ…と思ったよ。


ごめんなさい、僕、嘘をつきました。

2008-02-02

http://anond.hatelabo.jp/20080202135408

でもね、今さらアセンブリ言語C/C++勉強するのは時代遅れだと思う。もちろん、携帯電話などの組み込み産業ではそういった言語はまだまだ健在だし、パソコンで何かを制御したりするようなニッチ産業でも生き続ける、「使える言語」であることに違いない。でも入門者にお薦めするような言語ではない。昔ならBasicじゃ遅いからCかアセンブリ言語で書くという動機があったが、今じゃPerl/PHPでも十分に動作は速い。ちょっとしたGUIを作りたいならTcl/tkか、Javaを使うべきだ。VBもいい。C++&DirectXはよっぽどプログラミングに熱中できる人が使えばいい。あくまでパソコンに限定した話だけどね。

携帯パソコン制御はニッチだから初心者お勧めできなくて、GUI作りやすいから初心者お勧めできるってのがよくわからん。

前者のほうがメジャー後者のほうがマイナーだと思うんだけど。

http://anond.hatelabo.jp/20080202132133

低級言語で頑張って"Hello World"作ってた自分から見ると、Java/PHP/Perl/Rubyのような超高級言語でさくさく高度なWEBアプリケーションを作ってる人がとても羨ましく見えると同時に、「大した苦労もしないで、俺はやったぞみたいな顔するんじゃねえよ。」とついつい思ってしまうことがある。アセンブリ言語ときたら比較命令を発行するたびに分岐先ラベルをいくつも定義しないといけないような面倒臭さがあった。それでも、それ以前のハンドアセンブル組や、機械後を生で見たり、パンチカード使ってたような人達から見れば甘いと思うだろう。

と、俺のひがみを書いてみるテスト

でもね、今さらアセンブリ言語C/C++勉強するのは時代遅れだと思う。もちろん、携帯電話などの組み込み産業ではそういった言語はまだまだ健在だし、パソコンで何かを制御したりするようなニッチ産業でも生き続ける、「使える言語」であることに違いない。でも入門者にお薦めするような言語ではない。昔ならBasicじゃ遅いからCかアセンブリ言語で書くという動機があったが、今じゃPerl/PHPでも十分に動作は速い。ちょっとしたGUIを作りたいならTcl/tkか、Javaを使うべきだ。VBもいい。C++&DirectXはよっぽどプログラミングに熱中できる人が使えばいい。あくまでパソコンに限定した話だけどね。

プログラミングするのは何もパソコンだけじゃないんで。マイコンとか一杯あるから。線と線をつないで、発行ダイオードとかをピコピコ光らせるの。完成すると楽しいよ。よく、はんだごてあてすぎて、部品こわしちゃうけど(汗)。

もし、私が「アイツ、○○なんて言語使ってらー」なんて言って来たらぜひ、「○○言語を使うと、○○が簡単に記述できて便利だよ。」と、そのとき使ってる言語の利点を教えてください。私も所詮、いま使ってる言語のことしか知らないんで、ついつい、違う言語には拒否反応を起こしてしまうんです。

2007-12-02

ここで勝手言語論争ごっこ

一番使い勝手の良いプログラミング言語Perlどぅわ!

C/C++/C#なんて気軽に文字列処理できないし、

Windowsでしか使えないVisualほにゃらら

メモリの確保、解放なんてしたくない

だいたい、セグメンテーションフォルトを起こすような言語は嫌い

DirectXOpenGLとお友達になりたくない

Haskelわけわかんないし

Java重苦しいし、いちいちclass Hogehoge { public static void main() { ... } }書くのがめんどくさいし、API多すぎ

オブジェクト指向したくなるような複雑なプログラムは最初から考えない(作れない)

GUI作りたくなるような言語はめんどくさい

言語が提供するGUIのツールはOSとは別に独自のレイヤー世界感を持っててとっつきにくい

マルチスレッド、排他処理を扱うようなプログラム脳味噌がついて行かないので書かない

CGIにしか使えないようなPHP

Ruby、、、そもそもLL言語で大規模でオブジェクト指向プログラム書きたくない。小規模ならオブジェクト指向要らない。

俺のマシンで実行できないAda/Basic/Fortran/Pascal その他いろいろ

VHDLVerilogFPGAやゲートアレイなんて持ってない、持ちたくない(苦手だもん)

データベースなんかいじってたまる

HTMLXML日本語タグが入り乱れるので、そのつど日本語入力の切替えが死ぬほど嫌になった。

だから、HTMLXMLは全部手入力なんて真似は絶対してやらねえ。

Flex(Action Script)はコンパイラJavaで実装されてて重すぎる。(シェルを使えばまし)

JavaScriptブラウザごとの挙動の違いを吸収しきれる自身が無いので使わない。

1プログラムにつき、(コメント含めて)250行以上書きたくない

複雑なプログラムを最後まで書ける連中が羨ましい。

排他制御にとちって、デスロックしてしまえ。

(本文には触ったこともない言語を思い込みで罵倒しているなど、嘘、おおげさ、紛らわしいが多数混入しています。それが全部わかった貴方プログラミング言語マスターです。)

ログイン ユーザー登録
ようこそ ゲスト さん