「Cでプログラミングするには人生は短すぎる」か?
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2011/02/01(火) 00:02:54「Cでプログラミングするには人生は短すぎる」という標語が掲げられている。
http://bit.ly/fJCXb0
0002デフォルトの名無しさん
2011/02/01(火) 00:09:310003デフォルトの名無しさん
2011/02/01(火) 00:49:33→ アセンブラで書いてリンクすればできる。
CでOOな設計は出来ないのか?
→ 構造体でいいだろ。
Cで名前の干渉のないようにできるか?
→ それなりの長い名前をつければ問題ない。
なぜCで超便利で現代的なライブラリを用意してくれない?
→ わからん。標準ライブラリにこだわる必要もないのにね。
Cでプログラミングするには人生は短すぎる。
→ むしろ、なぜそういう境遇に追い込まれてるんだろう?
0004デフォルトの名無しさん
2011/02/01(火) 01:21:04生命科学の発達が遅いから
0005デフォルトの名無しさん
2011/02/01(火) 02:37:45台部分は生産性のいいOOP言語で作り、時間がかかってしょうがないところだけCで書けばいい。
柔軟に考えれば解決策はいくらでもある。ミゲルさんは頭が固いだけ。
0006デフォルトの名無しさん
2011/02/01(火) 03:24:190007デフォルトの名無しさん
2011/02/01(火) 05:37:08言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
京都大学霊長類研究所
0008デフォルトの名無しさん
2011/02/01(火) 07:07:430009デフォルトの名無しさん
2011/02/01(火) 07:30:260010デフォルトの名無しさん
2011/02/01(火) 08:12:120011デフォルトの名無しさん
2011/02/01(火) 12:15:35むしろGTK+をCで書くようなことをやってるからこその言葉なんじゃねえの
0012デフォルトの名無しさん
2011/02/01(火) 19:04:220013デフォルトの名無しさん
2011/02/01(火) 19:25:060014デフォルトの名無しさん
2011/02/01(火) 20:41:460015デフォルトの名無しさん
2011/02/01(火) 20:49:46いや、そういう意味じゃなくて
>>11 の発言を受けて >>12 の返しなんだよね
>>11 は GTK+ というライブラリそのものを C で書く話だから、
その返しとして >>12 だったら、もしかして >>12 は phyton の GTK は
phyton で作られていると勘違いしているのかなと思って
0016デフォルトの名無しさん
2011/02/01(火) 22:48:360017デフォルトの名無しさん
2011/02/01(火) 23:08:120018デフォルトの名無しさん
2011/02/02(水) 00:54:280019デフォルトの名無しさん
2011/02/02(水) 01:12:20phytonってなんだ?
0020デフォルトの名無しさん
2011/02/02(水) 01:33:17phpの亜種
0021デフォルトの名無しさん
2011/02/02(水) 01:40:200022デフォルトの名無しさん
2011/02/02(水) 02:24:560023デフォルトの名無しさん
2011/02/02(水) 09:25:010024デフォルトの名無しさん
2011/02/02(水) 10:47:28エコじゃない
0025デフォルトの名無しさん
2011/02/02(水) 14:28:23もし世の中のサーバで動くソフトが全部Cで書いてあったら何台のサーバが不要になるか。
0026デフォルトの名無しさん
2011/02/02(水) 14:54:340027デフォルトの名無しさん
2011/02/02(水) 16:17:54v.s.
サーバーが消費する熱量
だれか糞真面目に分岐点を出せ
0028デフォルトの名無しさん
2011/02/02(水) 19:24:00リアルタイムで搭載CPUを調べて、レジスタ数やサポートしている拡張命令などに
ガチガチに依存したネイティブコードを生成するJITコンパイラの方が未来はある。
.NETもVC++比で、その差4%程度まで来ているし抜くのも時間の問題。
C言語自体もclangで中間コード/JITコンパイルの方向に進んでいるし。
0029デフォルトの名無しさん
2011/02/02(水) 20:32:50構造体がOOだと思っちゃう奴って…
0030デフォルトの名無しさん
2011/02/02(水) 20:42:180031デフォルトの名無しさん
2011/02/02(水) 20:43:230032デフォルトの名無しさん
2011/02/02(水) 21:39:110034デフォルトの名無しさん
2011/02/02(水) 23:36:10俺にはほど遠い世界。
0035デフォルトの名無しさん
2011/02/03(木) 01:04:33JAVAやC#は女子供のお遊びみたいなもん。アセンブリは知らん。
0036デフォルトの名無しさん
2011/02/03(木) 01:06:160037デフォルトの名無しさん
2011/02/03(木) 01:41:03PythonやRubyはどうなるんだよ
0038デフォルトの名無しさん
2011/02/03(木) 03:39:15Cはオモチャの範疇を超えちゃってるのがいけない
0039デフォルトの名無しさん
2011/02/03(木) 03:42:41clangは俺も期待してるが、まだCとObjective-Cくらいしか動かないからこれからだね。
多くの人はAjax環境とかPHP、Rubyなんかの遅いものばかり使ってるからね。
Ruby->clangだったら楽できそうなんだが。
0040デフォルトの名無しさん
2011/02/03(木) 04:37:32その処理に向いた言語を使うだけ
0041デフォルトの名無しさん
2011/02/03(木) 09:30:16それこそシェルスクリプトで十分な超簡単なものをC言語で
書いてれば時間が無くなるのは当然。
0042デフォルトの名無しさん
2011/02/03(木) 13:12:14strcpyとか今更勘弁してほしいっす。
0043デフォルトの名無しさん
2011/02/03(木) 15:06:33で、部分的には(擬似的な)OOPの考え方をCでの開発に導入している。
GNOMEのGObjectと同じ発想だけど、それほど洗練されていないし、
一貫したOO的な設計にはなっていない。
以前は、もしC++/JavaのようなOOPに置き換えられたなら、
幸せになれるのではないかと考えていた時期もあった。
ただ、Smalltalk/Rubyのような動的で純粋なOOP言語を知ってしまった今、
それらと比較するとC++/Javaは「いびつなOOP言語」にしか見えない。
CからC++/Javaへ移行することで多くの利点はあるかもしれないけれど、
その代償として新たな問題(STL/総称型/動的型)の問題を抱えるのがリスクになる。
趣味のプロジェクトであれば試しにC++でやってみるか?も可能だけど、
失敗した場合を考えると、それは許されない世界。
(理想は試作(C++)と本番(C)を別部隊に分離することだと思うが、自分にそんな権限は無い)
だから、最終的な納品物はonly Cで、その開発支援ツール類は、部品がRubyでそれらを
sh/awk/makeで統合する、というスタイルになっているのが現在の姿。
今は、makeをrakeへ全面移行すべきか?、あるいはこの先もrubyを選択し続けることが
はたして正しいのか?(他の言語はどうよ?)、が検討課題だったりする。
0044デフォルトの名無しさん
2011/02/03(木) 18:03:360045デフォルトの名無しさん
2011/02/03(木) 21:01:30衰退しつつあるRuby
言語が崩壊してしまっているC++
中途半端な仕様になってしまったJava
0046デフォルトの名無しさん
2011/02/03(木) 21:03:510047デフォルトの名無しさん
2011/02/03(木) 21:10:320048デフォルトの名無しさん
2011/02/03(木) 22:37:490049デフォルトの名無しさん
2011/02/03(木) 22:38:30今はPerlでもPythonでもRubyでも軽々動くからな。本当にいい時代。
0050デフォルトの名無しさん
2011/02/03(木) 22:44:23流行の言語()とか乗っちゃってるバカ。
0051デフォルトの名無しさん
2011/02/04(金) 00:03:540052デフォルトの名無しさん
2011/02/04(金) 00:26:38http://smalltalk.cincom.jp/
http://squeak.org/
これらはXEROX謹製Smalltalkの直系子孫だけど、他にも企業やファンの独自実装も多数。
商用でも使われているし、プロダクトはTwitterや米海軍関連に買われたり地味に頑張っている。
http://dabbledb.com/
http://www.teleplace.com/
0053デフォルトの名無しさん
2011/02/04(金) 01:13:44Smalltalkって処理速度どうなの?Javaと比べてどんなメリットがあるんだ
Javaですらも、NaClがまともに動き出したら、消えてしまいそうな気がするけど
0054デフォルトの名無しさん
2011/02/04(金) 01:42:22相対的に低下してしまったと思うな。それでいて、イメージベースの扱い辛さとか、
GUI と結びつきが強すぎるとか、最適化がし辛いとか、負の面は変わってないから
ちょっと使い辛い。
Lisp みたいに Hacker 気質を持ったプログラマを惹き付ける様な事もないし。
>>53
超対話的環境だから、プロトタイプが作り易い。
0055デフォルトの名無しさん
2011/02/04(金) 11:48:470056デフォルトの名無しさん
2011/02/04(金) 14:00:43> 何故に、Smalltalkなんかで製品を実装したのか小一時間
SeasideやCroquet(先のDabble DBやTeleplaceが使っている変態FW)を
Smalltalk以外のまともな言語で組んでみたらどんなことになるのか
逆に、興味がわくな。
0057デフォルトの名無しさん
2011/02/04(金) 18:03:18まともなFWはないの?
0058デフォルトの名無しさん
2011/02/04(金) 18:07:440059デフォルトの名無しさん
2011/02/04(金) 19:01:47まともなFWでは物理的に不可能ってわけじゃなければ、
普通は変態FWの仕組みをまともFWに取り込むことを考えるでしょ
0060デフォルトの名無しさん
2011/02/04(金) 19:51:57一度あれに慣れると他のDBMSがカスに見える。
0061デフォルトの名無しさん
2011/02/05(土) 02:16:110062デフォルトの名無しさん
2011/02/09(水) 22:11:56Cはどこがつぶれようとコンピューターがあるかぎり永遠に続くよ。
0063デフォルトの名無しさん
2011/02/09(水) 22:16:03Android
0064デフォルトの名無しさん
2011/02/09(水) 22:28:130065デフォルトの名無しさん
2011/02/09(水) 22:45:44は?JREって、色んなとこが出しているんじゃないの?
ってか、せっかくデファクトになったのに、
無料配布しないと競合する.NETが広まるだろうし
オラクルだって金を取りたくても取れないでしょ
0066デフォルトの名無しさん
2011/02/09(水) 23:17:070067デフォルトの名無しさん
2011/02/09(水) 23:18:25そうですね。
0068デフォルトの名無しさん
2011/02/09(水) 23:40:30思い込みで書き込む前に事実関係を多少とも調べようとしなかったの?
そんなに人生は短すぎるの?
0069デフォルトの名無しさん
2011/02/10(木) 00:08:220070デフォルトの名無しさん
2011/02/10(木) 00:29:42Apache Foundation が何をやっているかとか、IBM が何をやっているかとか、
GCC や LLVM がどうなっているかとか、Dalvik って何だろうとか、
Open JDK とは何なのかとか、Bluray プレーヤーに何が乗っているのかとか、
少しでも調べる気はないの?
0071デフォルトの名無しさん
2011/02/10(木) 00:56:110072デフォルトの名無しさん
2011/02/10(木) 01:01:03知らない事があったら調べようと思う人間は、何が分かれ道だったんだろうなあ
0073デフォルトの名無しさん
2011/02/10(木) 02:14:440074デフォルトの名無しさん
2011/02/10(木) 02:16:49みんな分かってる事だから
0075デフォルトの名無しさん
2011/02/10(木) 03:08:53からかってるだけだって。
そんなムキになんなよ。
0076デフォルトの名無しさん
2011/02/10(木) 03:10:460077デフォルトの名無しさん
2011/02/10(木) 04:04:150078デフォルトの名無しさん
2011/02/10(木) 04:41:39そしたらMSがおいしくいただきます。
0079デフォルトの名無しさん
2011/02/10(木) 08:52:17理想が高すぎたのだろうな
0080デフォルトの名無しさん
2011/02/10(木) 19:57:05勿論、現実と言うのはネットに住まう有象無象じゃなく産業界の話だがな。
0081デフォルトの名無しさん
2011/02/10(木) 20:29:360082デフォルトの名無しさん
2011/02/10(木) 20:33:580083デフォルトの名無しさん
2011/02/10(木) 22:46:000084デフォルトの名無しさん
2011/02/11(金) 03:02:110085デフォルトの名無しさん
2011/02/11(金) 03:21:000086デフォルトの名無しさん
2011/02/11(金) 03:34:35相互の移植がしやすい言語を、と開発されたんだっけ?
0087デフォルトの名無しさん
2011/02/11(金) 04:13:03ライブラリがでかいだけでVM自体は小さくできる。
カードにも組み込まれたこともある。
0088デフォルトの名無しさん
2011/02/11(金) 10:51:26MS-BASICでさえROMに格納されてたくらいだし、今となってサイズなんて知れてるわな。
http://ja.wikipedia.org/wiki/Microsoft_BASIC
0089デフォルトの名無しさん
2011/02/11(金) 11:11:15Javaでの組み込みなんて全体の1割にも満たないだろ
0090デフォルトの名無しさん
2011/02/11(金) 11:22:49そもそもどこまでを組み込み系って言ってるのかわからんし、
ソースコードの量なのか組み込まれている実行コードベースの
話かも示さずに1割云々と語ってるやつのほうがバカに見える。
0091デフォルトの名無しさん
2011/02/11(金) 11:27:11組込ライセンスと意味なら、Java使ったサーバーサイドのシステムが1つ売れる間に数千数万のケータイが売れてると思うよ
0092デフォルトの名無しさん
2011/02/11(金) 11:53:22MS-BASICよりもっと古いp-codeのパクリ。
p-codeになったのは、Visual Basicになってから。
というか、スタックマシンをパクリって言うやつまでいるのか。
0093デフォルトの名無しさん
2011/02/11(金) 13:44:15なにを言ってるんだお前は?
無知にもほどがある
0094デフォルトの名無しさん
2011/02/11(金) 17:49:54何を言いたいのか分からない。
JavaのVMとMS BASICのインタプリタは似ていない。
0095デフォルトの名無しさん
2011/02/11(金) 21:23:59MS BASICはエミュレータ+インタプリタだからな。
JavaのVMに似てはいるが、Javaそのものと言うよりはJRubyなんかに近い。
0096デフォルトの名無しさん
2011/02/11(金) 23:06:30どう考えてもSmalltalk-80のVMのパクりw
0097デフォルトの名無しさん
2011/02/11(金) 23:30:21単語は同じでも「仮想マシン」の意味が違うだろ。
Javaが目指したJavaチップを順序は逆だが実現していたという
意味では先進的だが。
0098デフォルトの名無しさん
2011/02/12(土) 00:45:21俺もそう思うけど、世の中の若人は Smalltalk なんて知らないのかもね...
もし若人でないのに知らないなら目も当てられないけど...
0099デフォルトの名無しさん
2011/02/12(土) 00:54:26MS BASICのi8008エミュっていったい何のことを言いたいのか?
0100デフォルトの名無しさん
2011/02/12(土) 00:59:210101デフォルトの名無しさん
2011/02/12(土) 07:39:57Smalltalk-80のCollectionをJavaのヘッポコCollectionsやArraysと一緒にすんなやw
0102デフォルトの名無しさん
2011/02/12(土) 07:44:460103デフォルトの名無しさん
2011/02/12(土) 08:02:20技術センスゼロだから転職したほうがいいよ
さようなら
0104デフォルトの名無しさん
2011/02/12(土) 08:24:38技術センスゼロの人にもわかるように違いを説明できるの?
0105デフォルトの名無しさん
2011/02/12(土) 08:42:51ネイティブで実行するCPUもあるし。
0106デフォルトの名無しさん
2011/02/12(土) 09:07:01Java CPUはほとんど使われてないだろうし、一般的でもない。
0107デフォルトの名無しさん
2011/02/12(土) 09:13:070108デフォルトの名無しさん
2011/02/12(土) 09:26:40Java VMをインタプリタで実装するならわかる。
0109デフォルトの名無しさん
2011/02/12(土) 13:09:58インタプリタ高速化技法のひとつとして考えた方がいいと思うぞ。
とくにJavaのJITは起動時ではなくインタプリタで実行中に裏でコンパイルするというものだし。
0110デフォルトの名無しさん
2011/02/12(土) 13:33:25ok?
0111デフォルトの名無しさん
2011/02/12(土) 13:37:120112デフォルトの名無しさん
2011/02/12(土) 13:53:140113デフォルトの名無しさん
2011/02/12(土) 15:03:270114デフォルトの名無しさん
2011/02/12(土) 15:13:43中間言語をネイティブに変換してから実行するのが仮想マシン
インタプリタは、中間言語を使わず、ソースコードのまま
毎回命令を解釈してから実行するもの
0115デフォルトの名無しさん
2011/02/12(土) 15:16:590116デフォルトの名無しさん
2011/02/12(土) 15:19:26じゃあ、Java VM はどちらでもないの?
中間言語は使うが、実行中に必要な部分だけ
(ロードされた部分だけ)ネイティブに変換する
0117デフォルトの名無しさん
2011/02/12(土) 15:19:34ハズレw
仮想機械は仕様
インタプリタは実装
0118デフォルトの名無しさん
2011/02/12(土) 17:11:430119デフォルトの名無しさん
2011/02/12(土) 18:02:24その定義だと、やはりPHPはPHP仮想マシンだなw
0120デフォルトの名無しさん
2011/02/12(土) 18:03:490121デフォルトの名無しさん
2011/02/12(土) 19:19:270122デフォルトの名無しさん
2011/02/12(土) 19:46:06インタプリタ実装しようが
コンパイラ実装しようが
ハードウェア実装しようが
同じバイトコードが動く。
インタプリタ実装するにしても、
ベタなインタプリタでもいいし、
JITコンパイラ使ってもいいし、
複数の仮想機械で分散処理してもいい。
あくまで仮想機械の仕様さえ満たせば
コードを動かせる。
それが仮想機械じゃねえの?
0123デフォルトの名無しさん
2011/02/12(土) 21:47:35今みたいにインストールなんて概念がなく、
EXEファイルにJITコンパイラを埋め込む仕様で
ファイルサイズが絶望的なほどでかかった記憶がある。
0124デフォルトの名無しさん
2011/02/13(日) 02:36:09今使えば信じられないほど小さくて速いだろうなw
0125デフォルトの名無しさん
2011/02/13(日) 18:24:09その前に精神が壊れる
0126デフォルトの名無しさん
2011/02/13(日) 22:54:39人間なんだから少しは工夫しよう。今ならマクロ使えばCに近い書き方ができるし、
使いやすいライブラリを多く用意してそれらを活用すればだいぶ見やすく書ける。
0127デフォルトの名無しさん
2011/02/13(日) 23:02:27昔は実際そうだったな。
今なら、そんなことするぐらいならC使って、パフォーマンスいるところだけグリグリやるところだけ。
0128デフォルトの名無しさん
2011/02/14(月) 00:02:12http://twitter.com/migueldeicaza/status/9631116499615744
http://d.hatena.ne.jp/atsushieno/20101201/p1
0129デフォルトの名無しさん
2011/02/14(月) 00:08:48多くの人たちがCでプログラミングしないために
0130デフォルトの名無しさん
2011/02/14(月) 01:08:30プログラミングをソフトウェアを生み出す為のプロセスとして捉えたらその通りだけど、
プログラミング自体が楽しいなら言語は何でも良いし、どれだけ時間が掛かっても良い。
なぜならプログラムを書く事自体が目的だから。
0131デフォルトの名無しさん
2011/02/14(月) 05:29:49納期に追われ、デスマで死にそうな奴にそんなこと言ったら刺されるぞ。
0132デフォルトの名無しさん
2011/02/14(月) 08:23:51そうすれば自然と仕事を適切な規模のところに持っていってくれるし
死にそうな目には遭わずに済むのに。
0133デフォルトの名無しさん
2011/02/14(月) 08:51:06金がなくなればやってけなくなる。
0134デフォルトの名無しさん
2011/02/14(月) 08:57:27結局ならんかったよ・・・
一日中コーディング出来るってちょっと羨ましい
0135デフォルトの名無しさん
2011/02/14(月) 12:45:12コーディング前の、どうやって実現しようかとか、
コーディング後の、なんで動かないんだろ、
と考えてる時の方が圧倒的に楽しくないか?
まぁ、そういうのも含めてコーディングって言ってるのかも知れんが
0136デフォルトの名無しさん
2011/02/14(月) 16:34:30ステップ数が少なく機能的なコードを書くのが楽しい。
まぁ現状は理想論になりつつあるけど。。
0137デフォルトの名無しさん
2011/02/15(火) 08:47:570138デフォルトの名無しさん
2011/02/15(火) 14:32:060139デフォルトの名無しさん
2011/02/15(火) 16:15:40なので矛盾はしていない
0140デフォルトの名無しさん
2011/02/15(火) 20:03:130141デフォルトの名無しさん
2011/02/15(火) 20:58:220142デフォルトの名無しさん
2011/02/15(火) 22:03:19むしろ俺言語でいいからコードっぽいものに起こさないと
思考が遮られてはかどらないや
0143デフォルトの名無しさん
2011/02/15(火) 22:30:110144デフォルトの名無しさん
2011/02/16(水) 03:27:330145デフォルトの名無しさん
2011/02/16(水) 03:38:030146西野圭吾 ◆MBzg6vmZNmjx
2011/02/16(水) 05:10:490147デフォルトの名無しさん
2011/02/16(水) 10:11:180148デフォルトの名無しさん
2011/02/16(水) 10:12:190149デフォルトの名無しさん
2011/02/16(水) 11:05:040150デフォルトの名無しさん
2011/02/16(水) 11:18:10生産性(笑)
0151デフォルトの名無しさん
2011/02/16(水) 12:22:071.よし!作ろう
2.作るために、「使いやすく、開発効率のいい言語」を探す
3.「そんなものはない」事に気が付く
4.1へ
0152デフォルトの名無しさん
2011/02/16(水) 12:42:562.作るために、「使いやすく、開発効率のいい言語」を探す
3.何とか使えるのを探して作り始める
4.出来上がったら、不満があるところを改良していく
5.最初の目的が達成されたら公開する
だろ
0153デフォルトの名無しさん
2011/02/16(水) 12:55:120154デフォルトの名無しさん
2011/02/16(水) 13:11:010155デフォルトの名無しさん
2011/02/16(水) 13:16:54日本人は器用だから使いにくい道具をなんとか使いこなしてしまうが、西洋人は先に使いやすい道具を作る。
道具がいいと生産性が高くなるし誰でも使えるから生産コストがうんと下がる。
器用なことが必ずしもいい結果にならない。
0156デフォルトの名無しさん
2011/02/16(水) 14:27:560157デフォルトの名無しさん
2011/02/16(水) 15:41:340158デフォルトの名無しさん
2011/02/16(水) 16:43:100159デフォルトの名無しさん
2011/02/16(水) 16:47:230160デフォルトの名無しさん
2011/02/16(水) 17:23:190161デフォルトの名無しさん
2011/02/16(水) 17:31:020162デフォルトの名無しさん
2011/02/16(水) 17:43:590163デフォルトの名無しさん
2011/02/16(水) 17:51:510164デフォルトの名無しさん
2011/02/16(水) 18:06:38ヒープメモリがズタズタになってメモリリークしまくりとか。
0165デフォルトの名無しさん
2011/02/16(水) 18:20:18#include <stdio.h>
#include <stdlib.h>
#include <regex.h>
#define BUFSIZE 1024
#define NUMBER_OF_BRANKETS 10 /* 0の方が高速 */
/*
*dst : 置換後の文字列を書き込む領域確保済みのバッファ
*src : 置換前の文字列
*st_string : 置き換える文字列
re : コンパイル済み正規表現
*/
int replace(unsigned char *dst,
const unsigned char *src, unsigned char *st_string, regex_t re);
main()
{
regex_t re; /* 正規表現コンパイル結果を格納する構造体 */
unsigned char *re_string = "[0-9]+"; /* 正規表現 */
unsigned char *st_string = "[number]"; /* 置換後の文字列 */
unsigned char *dst, *src, *emsg;
unsigned int ecode; /* エラーコード */
/* 正規表現をコンパイルする */
if(0 < (ecode = regcomp(&re, re_string, REG_EXTENDED))){
// コンパイル失敗時はエラーメッセージを出して終了
emsg = malloc(BUFSIZE);
regerror(ecode, &re, emsg, BUFSIZE);
fprintf(stderr, "%s\n", emsg);
0166デフォルトの名無しさん
2011/02/16(水) 18:21:03free(emsg);
exit(-1);
}
/* メモリーを取得 */
src = malloc(BUFSIZE);
dst = malloc(BUFSIZE);
while(!feof(stdin)){
/* 標準入力から1行入力 */
if(NULL==fgets(src, BUFSIZE, stdin))
continue;
/* 置換を実行 */
replace(dst, src, st_string, re);
/* 置換した文字列を標準出力へ出力 */
printf("%s", dst);
}
/* メモリーを開放 */
free(src);
free(dst);
/* 構造体を開放 */
regfree(&re);
return 0;
}
0167デフォルトの名無しさん
2011/02/16(水) 18:21:46const unsigned char *src, unsigned char *st_string, regex_t re)
{
unsigned char *p, *q;
unsigned int i; /* 入力文字列のための添字 */
regmatch_t *pmatch = NULL; /* 一致データの格納先 */
unsigned int ecode; /* エラーコード */
pmatch = calloc(NUMBER_OF_BRANKETS + 1, sizeof(regmatch_t));
/* パターン・マッチング */
if(REG_NOMATCH == (ecode = regexec(&re, src, NUMBER_OF_BRANKETS + 1, pmatch, 0))){
pmatch[0].rm_so = -1;
}
/* 置換処理用のポインターをセット */
q = dst; i=0;
/* コピーと置換処理 */
while('\0' != src[i]){
/* 正規表現とマッチする位置に来たときの処理 */
/* pmatch[0]が一致文字列全体、pmatch[1]以降が括弧内の部分一致部分の情報 */
if(i == pmatch[0].rm_so){
/* q - dst < BUFSIZE - 2 はバッファー・オーバーフロー対策 */
for(p = st_string; '\0'!=*p && q - dst < BUFSIZE - 2; p++){
*q++ = *p;
}
/* 入力文字列の文字位置を表す添字に加算 */
i += pmatch[0].rm_eo - pmatch[0].rm_so;
/* 再帰でグローバル・マッチングにする */
q += replace(q, src + i, st_string, re);
/* 再帰先で処理が終了しているのでループを抜ける */
break;
0168デフォルトの名無しさん
2011/02/16(水) 18:22:30/* 1文字コピー */
*q++ = src[i++];
}
}
/* NULL文字をつけ足す */
*q = '\0';
free(pmatch);
/* 置換後の文字数を戻す */
return q - dst;
}
http://uncorrelated.no-ip.com/20101023.shtml からコピペ
0169デフォルトの名無しさん
2011/02/16(水) 18:23:270170デフォルトの名無しさん
2011/02/16(水) 19:03:47ちなみに、Perlで言うところのどんな操作なんだ?
0171デフォルトの名無しさん
2011/02/16(水) 19:29:21こんな処理
while(<>){
s/[0-9]+/[number]/g;
print;
}
0172デフォルトの名無しさん
2011/02/16(水) 20:13:31PerlやRubyでも-peとかやったら1行になりそうだ
sedならむしろ2行以上に伸ばすほうが面倒だな…w
0173デフォルトの名無しさん
2011/02/16(水) 20:23:320174デフォルトの名無しさん
2011/02/16(水) 20:24:510175デフォルトの名無しさん
2011/02/16(水) 20:27:14printfを使うと速度的に遅いため、高速な変換関数を用意する必要がある。
0176デフォルトの名無しさん
2011/02/16(水) 20:28:260177デフォルトの名無しさん
2011/02/16(水) 20:30:030178デフォルトの名無しさん
2011/02/16(水) 20:35:37ポインタが適切な位置を指しているかは、コンパイラはチェックしない。
0179デフォルトの名無しさん
2011/02/16(水) 20:37:030180デフォルトの名無しさん
2011/02/16(水) 20:39:350181デフォルトの名無しさん
2011/02/16(水) 20:41:390182デフォルトの名無しさん
2011/02/16(水) 21:01:25ある種開き直ったテンプレートエンジンとして使えるな。
0183デフォルトの名無しさん
2011/02/16(水) 21:45:020184デフォルトの名無しさん
2011/02/17(木) 00:27:070185デフォルトの名無しさん
2011/02/17(木) 15:51:25所詮他の言語が存在しないと役立たずの分際で、デカイ顔してるんじゃないよ。
0186デフォルトの名無しさん
2011/02/17(木) 16:48:56GUIのせいで単一の言語にこだわる人間が増えた。
Cでプログラミングするのは何の問題もない。
問題は単一の言語にこだわることだ。
Cをよく知っている人はむしろこだわらない人の方が多い。
0187デフォルトの名無しさん
2011/02/17(木) 18:38:450188デフォルトの名無しさん
2011/02/17(木) 21:41:350189デフォルトの名無しさん
2011/02/17(木) 22:42:28iPad のソフトウェアキーボードを触らせてもらった事あるけど、使い易かったよ
ガシガシ入力するなら Bluetooth のキーボードを使うんじゃないかな
文字を入力する必要があるのはプログラマだけじゃないし
0190デフォルトの名無しさん
2011/02/17(木) 23:02:15寝言は
0191デフォルトの名無しさん
2011/02/17(木) 23:08:560192デフォルトの名無しさん
2011/02/17(木) 23:11:520193デフォルトの名無しさん
2011/02/17(木) 23:27:12スマホよりは使いやすいわな。
0194デフォルトの名無しさん
2011/02/18(金) 12:35:150195デフォルトの名無しさん
2011/02/18(金) 16:35:530196デフォルトの名無しさん
2011/02/19(土) 17:24:39そもそもcはランタイム支援のない環境でインフラを
構築するために作られた言語。
基礎が整った環境でcを使うなとk&rやlinusも
言っている。
目的を達成できるならshellやら
出来るだけ抽象的なものを使うべき
0197デフォルトの名無しさん
2011/02/19(土) 17:26:57C は C で進化してるんだよね
次のスペックではマルチスレッドも採用されるみたいだし
0198デフォルトの名無しさん
2011/02/19(土) 17:36:10C++の肩持つ訳じゃないが4%ってどっから出てきた数字だ?
テンプレ関数+スタック変数 (C++)
vs
オーバーライド+new (C#)
だと10倍近く差が出たんだがな。
0199デフォルトの名無しさん
2011/02/19(土) 17:38:270200デフォルトの名無しさん
2011/02/19(土) 17:46:41vb6何て死んだも同然だけど
いまだに使われてるよな。
32bitのサポートが終わったら完全にしぬだろうけど。
0201デフォルトの名無しさん
2011/02/19(土) 17:47:220202デフォルトの名無しさん
2011/02/19(土) 17:53:15ベクトル(線形幾何)演算やってると悲惨だぞ。
使うであろう座標、ベクトル、行列をstaticにするなり、
配列に集めるなりしてあらかじめ確保しとかにゃならん。
0203デフォルトの名無しさん
2011/02/19(土) 18:50:360204デフォルトの名無しさん
2011/02/19(土) 19:06:35それでいいじゃないか。
0205デフォルトの名無しさん
2011/02/19(土) 19:09:330206デフォルトの名無しさん
2011/02/19(土) 19:12:430207デフォルトの名無しさん
2011/02/19(土) 19:26:150208デフォルトの名無しさん
2011/02/19(土) 19:55:15.80スタックフレームを自作するとかな。
ベクトル用スタックフレーム
行列用スタックフレーム
四元数様用スタックフレームと。
それぞれあらかじめ30個位インスタンスぶちこんどくんだ。
あれ?これってC++の方が楽じゃね?
0209デフォルトの名無しさん
2011/02/19(土) 23:22:26.810210デフォルトの名無しさん
2011/02/20(日) 05:43:23.73というか、マルチスレッドを言語の機能にする方が間違ってると思うんだが。俺としては。
あくまで、OSが提供する機能だろう?ならばやっぱり、APIとして提供される形こそが理想だと思う。
なんでも言語の機能にすればいいというものではないと思うな。
0211デフォルトの名無しさん
2011/02/20(日) 06:03:02.75言語の機能と API という区分がよく分からないけど、
C1x のスレッドはライブラリなんじゃないの?
0212デフォルトの名無しさん
2011/02/20(日) 06:17:18.55言語仕様と言う意味では、その言語のコア機能だけで実装出来ない機能は
言語仕様に入れて良いと思う。C のコア機能だけではスレッドは実装する事が
出来ないので、スレッドを言語仕様に入れるのは問題無いでしょう。
それ以外にも、よく使用される機能が何度も繰り返し再実装されるのを避ける為に
言語仕様を定めるのも理に適っていると思う。昨今の CPU 実装の変化を考えると
スレッドはますます使用頻度が増えて行くのは確実で、言語仕様に入れるのは
正しいと思う。
標準仕様に含める事で、ポータビリティが上がるという利点もある。統一的な
仕様を決めておく事で、色々なプラットフォームで動作するプログラムを
効率よく実装する事が出来る。移植性の高いマルチスレッドのコードが書ける
様になるのは歓迎すべき事だと思う。
副次的な効果として、C の教科書でスレッドを教えるのが容易になるという点も
意外と重要じゃないかと思う。標準仕様で定まっていれば、初学者が学習する際に
迷う事が少なくなり、マルチスレッドプログラミングの普及がより進むと思う。
Programming languages should be designed not by piling feature on top of feature...
という一節が有名だけど、今の時代、スレッドは言語に含まれてしかるべき
機能だと思うよ。
0213デフォルトの名無しさん
2011/02/20(日) 06:18:44.59言語の機能として実装する場合、その言語を実装する環境すべてでその機能が無いといけない。
つまりOSが無い環境へのコンパイラでも、マルチスレッドを実装するコードを生成しなければならなくなる。
0214デフォルトの名無しさん
2011/02/20(日) 06:55:12.78実際は、freestanding の環境では複数のスレッドを起動しなくても良い事になってる。
C1x の 2010/12 のドラフトの 5.1.2.4 に書いてあるよ。
0215デフォルトの名無しさん
2011/02/20(日) 06:59:02.67ファイル読み書きできたっけ?
0216デフォルトの名無しさん
2011/02/20(日) 07:29:20.57それ、C言語とかんけいない。
0217デフォルトの名無しさん
2011/02/20(日) 07:57:10.990218デフォルトの名無しさん
2011/02/20(日) 10:05:25.33標準ライブラリはISOのC言語仕様の一部ですよ
勿論ファイル入出力はそれに含まれています
0219デフォルトの名無しさん
2011/02/20(日) 14:09:46.65言語の仕様には入っていない。
0220デフォルトの名無しさん
2011/02/20(日) 14:38:11.08昨今の変化を考えるというなら
簡単に変化できないような堅苦しい仕様書を作ってはいけない
0221デフォルトの名無しさん
2011/02/20(日) 14:41:53.090222デフォルトの名無しさん
2011/02/20(日) 15:30:16.47今度の仕様で策定される様な部分はスレッドの本当に基本的な部分で
長年の実績に基づいた機能だから簡単に変化する様な物ではないと思われ
むしろ基本の部分の仕様が固まる事で、その上に様々なライブラリを
構築する事が容易になって、言語の発展に大いに寄与する事と思われる
0223デフォルトの名無しさん
2011/02/20(日) 15:34:09.91Thread Classがあまり変わっていないだけで、それの使い方は大いに変わっている。
0224デフォルトの名無しさん
2011/02/20(日) 15:54:43.52どう転んでも新しい技術の脚を引っ張らないって事でしょ
0225デフォルトの名無しさん
2011/02/20(日) 15:59:04.92長年の実績で固まった機能が言語の発展に寄与した。
これは過去の話だ。
まともな人間なら「固まる事で、寄与する事と思われる」なんて言わない。
0226デフォルトの名無しさん
2011/02/20(日) 16:05:58.98まともな人間は本筋に関係無い所で無意味な難癖をつけたりはしない物だよ。
0227デフォルトの名無しさん
2011/02/20(日) 16:06:50.770228デフォルトの名無しさん
2011/02/20(日) 16:21:54.11んなこたーない。
例えばスレッドの止め方一つ取っても当時と今じゃ全く違うだろ。
0229デフォルトの名無しさん
2011/02/20(日) 16:40:02.04詳しく。
0230デフォルトの名無しさん
2011/02/20(日) 16:46:05.030231デフォルトの名無しさん
2011/02/20(日) 16:46:40.08難癖つけるやつがいないなら、厳密な仕様書も要らない
0232デフォルトの名無しさん
2011/02/20(日) 16:48:01.460233デフォルトの名無しさん
2011/02/20(日) 16:52:16.640234デフォルトの名無しさん
2011/02/22(火) 08:46:18.42I/Oの機械語コード並べた配列を関数ポインターにぶちこんで呼ぶか、
あればメモリマップドI/Oを使えばいい。
でも、これ物理デバイスを制御できるだけでファイルシステムは自前で
作らなきゃならん。
0235デフォルトの名無しさん
2011/04/12(火) 10:56:28.52http://hibari.2ch.net/test/read.cgi/tech/1296486174/
0236デフォルトの名無しさん
2011/04/28(木) 05:31:53.80プログラミング技術の果てしない探求に取り付かれて
プログラムは手段である事をすっかり忘れちゃうよね。
解決したい問題をさっさと解ける可能な限りの高級言語を使うのがいいと思った。
0237デフォルトの名無しさん
2011/05/12(木) 05:14:24.870238デフォルトの名無しさん
2011/05/13(金) 11:29:26.32目的が感嘆には達成されないからこそ人類の発展があったんだよ。
そうじゃなきゃメシ食ってSEXして寝るだけの存在になってただろう。
0239デフォルトの名無しさん
2011/06/21(火) 08:41:39.60http://twitter.com/#!/migueldeicaza/status/81755106231599104
0240uy ◆yyC0rYWEq2
2011/06/21(火) 15:14:06.84気持ち悪いんだよ 氏ねゴミ
マジレスすると、Cはもうそんなに使えなくても良い
JAVA以外をやれよksが
0241デフォルトの名無しさん
2011/06/21(火) 20:29:51.43つ Go
0242デフォルトの名無しさん
2011/06/22(水) 20:44:36.76Go(笑
0243デフォルトの名無しさん
2011/06/22(水) 20:59:49.67楽しそうだなw
0244デフォルトの名無しさん
2011/06/22(水) 21:06:13.190245デフォルトの名無しさん
2011/06/22(水) 21:08:41.670246デフォルトの名無しさん
2011/06/23(木) 08:57:39.37かわいい
0247デフォルトの名無しさん
2011/06/24(金) 05:17:33.180248デフォルトの名無しさん
2011/07/08(金) 21:31:07.14Javaはオワコン
0249デフォルトの名無しさん
2011/07/09(土) 01:33:21.100250デフォルトの名無しさん
2011/07/09(土) 21:14:05.84そんなこと言ってる研究室のハゲは、
ポインタを理解していないどころか、構造体の意味も理解していない、
随所にマジックナンバーを埋め込んで、
数値計算ライブラリの利用方法も知らずに
逆行列を求める自作のプログラムをよこしてきて、
極めつけにはループ用変数のi,j,kをグローバルにしている
そんなヤツにソースコードが汚いと言われる日々
地底の情報系研究室は地雷だらけだぜ
0251デフォルトの名無しさん
2011/07/14(木) 23:06:21.64a+++++b;
0252デフォルトの名無しさん
2011/07/14(木) 23:33:04.84a++ + ++b;
に変換されたんだけど。
0253デフォルトの名無しさん
2011/07/14(木) 23:36:04.760254デフォルトの名無しさん
2011/07/15(金) 14:21:22.950255デフォルトの名無しさん
2011/07/15(金) 15:02:45.420256デフォルトの名無しさん
2011/07/16(土) 17:46:18.120257デフォルトの名無しさん
2011/07/20(水) 23:03:57.00国際邪悪なCコードコンテスト)のコードは凄まじいな。仕事で似たような
コードをやられたらたまらん。
0258デフォルトの名無しさん
2011/07/21(木) 00:01:42.580259デフォルトの名無しさん
2011/07/21(木) 01:38:39.550260デフォルトの名無しさん
2011/07/24(日) 03:28:42.720261デフォルトの名無しさん
2011/07/30(土) 17:28:17.030262デフォルトの名無しさん
2011/08/03(水) 23:40:59.790263デフォルトの名無しさん
2011/09/18(日) 17:00:55.650264デフォルトの名無しさん
2011/10/18(火) 16:12:07.540265デフォルトの名無しさん
2011/10/31(月) 21:33:27.990266デフォルトの名無しさん
2011/11/29(火) 12:04:51.630267デフォルトの名無しさん
2011/11/30(水) 01:55:51.540268デフォルトの名無しさん
2011/11/30(水) 17:38:21.650269デフォルトの名無しさん
2011/11/30(水) 23:39:17.33脳の容量がたくさんないとやってられない
0270デフォルトの名無しさん
2011/11/30(水) 23:47:59.59目的になってしまうことがあるな
0271デフォルトの名無しさん
2011/11/30(水) 23:48:50.040272デフォルトの名無しさん
2011/12/01(木) 00:13:39.910273デフォルトの名無しさん
2011/12/01(木) 10:26:59.940274デフォルトの名無しさん
2011/12/05(月) 10:56:49.270275デフォルトの名無しさん
2011/12/05(月) 15:32:21.770276デフォルトの名無しさん
2011/12/06(火) 22:19:29.80めんどくさい
■ このスレッドは過去ログ倉庫に格納されています