【訃報】C言語およびUNIXの父、デニス・リッチーさんが死去 -享年70★5

このエントリーをはてなブックマークに追加
1出世ウホφ ★

UNIXの父であり周囲の尊敬を集めたコンピュータサイエンティストのデニス・リッチーが、
しばらくの闘病を経て先週亡くなっていたことがわかった。享年70歳だった。

リッチー(dmrと呼ばれることもある)は、プログラミング言語のひとつであるC言語を生み出したこと、
そしてケン・トンプソンとともにUNIXを創りだしたことで世界中にその名を知られている。
リッチーはキャリアのほとんどをベル研究所で過ごした。彼が加わった1967年当時はアメリカで最も巨大な
電話回線提供社であり、かつ最も有名な研究所のひとつを運営する大企業であった。

60年代後半にトンプソン(彼はCの前進であるB言語を生み出した)とベルで働いているとき、
訪れようとしていたミニコンピュータ時代をにらみ、
より効率的なオペレーティングシステムを開発しようと思い立った。二人を中心としたこの作業は、
1971年のUNIXへと繋がっていった(DEC PDP-11の上で動作した)

TechCrunch Japan 10月14日(金)2時37分配信
http://headlines.yahoo.co.jp/hl?a=20111014-00001491-techcr-sci
画像 デニス・リッチーさん
http://e-bergi.com/2008/Agustos/resim/dennis_ritchie.jpg
前スレ ★1 2011/10/14(金) 11:19:08.25
http://raicho.2ch.net/test/read.cgi/newsplus/1318703183/l50
>>2以降に続く
2出世ウホφ ★:2011/10/17(月) 23:56:55.72 ID:???0
UNIXは安価で、かつさまざまなマシンを動作対象として想定してはいた。いったん動作させることができれば、
その上にさまざまなソフトウェアシステムを載せることができるようになっていた。
しかしOSがマシン語(アセンブリ言語)で記述されていたため、移植性も低く、またメモリの取り扱いにも苦労することとなった。

そこでリッチーとトンプソンは、C言語のシンタックスを発展させつつ機能を増やし、
ついにはOSを記述できるところまでに性能をあげていった。
そして1973年までにはついに、UNIXをCで書き換えてしまったのだ。カーネル部分は同年中に公開された。

今日、C言語は依然として2番目にポピュラーな言語として世界中で使われている(ないし、
これまでに記述されたコード量としては第2位につけている)。
そしてC++やJavaにさまざまな考え方が引き継がれていった。またUNIXについての二人の仕事は、
たとえばLinux TorvaldsのLinuxなどにも引き継がれていった。このUNIXの仕事だけでも、
リッチーは現代でもっとも重要なエンジニアのひとりとして位置づけられるべきだろう。

実際、UNIX関連の仕事により1983年にはケン・トンプソンとともに、チューリング賞を受賞している。
また1998年には当時の大統領であるビル・クリントンからアメリカ国家技術賞を受け取っている。(おわり)
3名無しさん@12周年:2011/10/17(月) 23:57:52.94 ID:/h4p7dCc0
まさかの5スレ目w
以下、ポインタとOOPの話は禁止で
4名無しさん@12周年:2011/10/17(月) 23:58:25.05 ID:9EMLifjR0
void main()
{
5名無しさん@12周年:2011/10/18(火) 00:00:16.73 ID:tQNd6Rbc0
printf("RIP");
}
6名無しさん@12周年:2011/10/18(火) 00:01:28.46 ID:ja90s0jB0
Kはどうなんだ
7名無しさん@12周年:2011/10/18(火) 00:01:36.02 ID:D/t72Glv0
10 print "Hello Unix World!"
20 goto 10
8名無しさん@12周年:2011/10/18(火) 00:01:53.09 ID:AuBGjq7X0
9割は記事と関係ない話で埋まるのに
なんで5スレ目も立てるのさ
9名無しさん@12周年:2011/10/18(火) 00:01:54.41 ID:UXYbToJE0
10名無しさん@12周年:2011/10/18(火) 00:01:59.02 ID:7i9pw7HI0
ポインタ話禁止、ユダヤ話OK
11名無しさん@12周年:2011/10/18(火) 00:02:59.03 ID:Ai30oWIn0
main()
学生の頃やっていたが・・・懐かしい何もかも
12名無しさん@12周年:2011/10/18(火) 00:05:55.92 ID:aSzbC7Cx0
5スレ目かよw
13名無しさん@12周年:2011/10/18(火) 00:06:07.31 ID:wB7bv7nU0
まだやっていたのか…おまいらときたらw
…でも、お世話になり過ぎだし、今でもその系譜を使い続けている俺にとっては
…こっちを映画に…というか、スペシャルドキュメント番組作ってくれよ
3時間くらいで

UNIXの偉大さを…
14名無しさん@12周年:2011/10/18(火) 00:07:02.22 ID:wB93jqx80
俺も若いころはこんな歴史に名前を残すような計算機科学者を夢見ていたな・・
とりあえず立派なITドカには成れたが。
15名無しさん@12周年:2011/10/18(火) 00:08:43.26 ID:t+9Gufjy0
ライオネル・リッチーもさぞかし悲しんでいることだろう
16名無しさん@12周年:2011/10/18(火) 00:09:23.16 ID:RbQpv0yU0
この人知ってる。
オーナイロ〜ングとか歌ってた人だわ
17名無しさん@12周年:2011/10/18(火) 00:10:21.66 ID:pK8QKnyB0
A言語とB言語はないの?
18名無しさん@12周年:2011/10/18(火) 00:12:08.40 ID:aRHysR8T0
MacってUNIXだったんだな
19名無しさん@12周年:2011/10/18(火) 00:12:36.01 ID:mxsGt85g0
UNIXにあこがれて活気的なOS作るぞーとか力んでた時代があったなw
日本のIT業界(笑)は労働力の切り売りとマージンで成り立ってて即効見切ったけどw
何年たっても「日本発世界に」とはならない理由がそれだよねww
目先の利益にしがみつくしかないw


20名無しさん@12周年:2011/10/18(火) 00:14:16.66 ID:ja90s0jB0
>>17
A−アセンブラ
B−BASIC
と一般的に言われてる単なる語呂合わせだと思うけど
21名無しさん@12周年:2011/10/18(火) 00:15:15.76 ID:suNnHX+A0
スレ5ってまた微妙な
22名無しさん@12周年:2011/10/18(火) 00:15:53.38 ID:XQTh1X5D0
そっかあ、あの人も死んだか。

ヒゲはやしたイイ感じのおっさんだったが、
来日コンサートにも行ったよな。
デュエットのエンドレスラブも良かったなあ。


23名無しさん@12周年:2011/10/18(火) 00:16:42.49 ID:aKzNU2/t0
5ってwwwおまいらwww
どうせIT関連なら2chも長いのが多いんだろw
24名無しさん@12周年:2011/10/18(火) 00:18:57.15 ID:GxEhOOpC0
:::::::::::/           ヽ::::::::::::
:::::::::::|  キ  じ  き  i::::::::::::
:::::::::::.ゝ モ   つ   み  ノ:::::::::::
:::::::::::/  イ  に  は イ:::::::::::::
:::::  |  な。       ゙i  ::::::
   \_         ,,-'
――--、..,ヽ__  _,,-''
:::::::,-‐、,‐、ヽ. )ノ
:::::_|/ 。|。ヽ|-i、  ..    / ̄ ̄ ̄ ̄
/. ` ' ● ' ニ 、    (____人
ニ __l___ノ    (-◎-◎一
/ ̄ _  | i     ( (_ _)
|( ̄`'  )/ / ,..    ( ε   (∴←張勲・郭光雄・黄進煥信者でマルハン・ロッテ・サンセイ御用達の在日
`ー---―' / '(__ )   ヽ____ 珍英米不細工白痴韓国エベンキ人記者出世ウホ 
====( i)==::::/      ,/ニ>>
:/     ヽ:::i       /;;;;;;;;;;;;;;;;
25名無しさん@12周年:2011/10/18(火) 00:19:31.47 ID:aKzNU2/t0
>>20
いい加減なこというなよw
http://www.lbm.go.jp/toda/comp/corigin.html

BCPL→B言語があったからC言語っていうんだよ。
26名無しさん@12周年:2011/10/18(火) 00:20:30.28 ID:4U3JZR4y0
じゃあCはなんの略さ
27名無しさん@12周年:2011/10/18(火) 00:20:45.39 ID:0QchtDfo0
pythonをほんんんっとに少しだけかじったことあるけど、
賢くなった気がした

言語そのものを作る人って神と同じ発想ができる人だよね
28名無しさん@12周年:2011/10/18(火) 00:22:50.63 ID:aKzNU2/t0
>>26
BCPLがB言語じゃなくて、BCPLの次にB言語ができたんだよ。

そういやD言語ってあったけど見事に消えたな。
29名無しさん@12周年:2011/10/18(火) 00:23:01.97 ID:mxsGt85g0
>>26
そういう発想で命名されてない
C言語はA、BがあったからCになっただけ。
30名無しさん@12周年:2011/10/18(火) 00:24:59.90 ID:4U3JZR4y0
>>28-29
なるほどトン
31名無しさん@12周年:2011/10/18(火) 00:25:22.83 ID:ja90s0jB0
>>25
マジレス乙です
32名無しさん@12周年:2011/10/18(火) 00:26:08.93 ID:zNe887P60
>>27
思考回路が違うんだろうね
体のどの部分からでも自在に人物を描き上げる人とか、即興で音楽を作っちゃう人とかさ
ある思考パターンに最適化されているんだとおもう

希に、何種類もの思考パターンを持つマルチタレントな人物とか出てくるけどな
レオナルド・ダ・ヴィンチとかだな
33名無しさん@12周年:2011/10/18(火) 00:26:21.07 ID:LXJxzraJ0
仮に江戸時代にコンピュータのテクノロジーだけひょこっと生まれたとしたら、
どんな言語作ったのかな?
34名無しさん@12周年:2011/10/18(火) 00:26:29.39 ID:Ko8Hmqur0
#include <stdio.h>

int main()
{
   int i ;

   for (i=1; i<=1000; i++)
   {
      printf("ぬるぽ\n");
   }
}
35名無しさん@12周年:2011/10/18(火) 00:27:01.29 ID:7i9pw7HI0
神はLisp
36名無しさん@12周年:2011/10/18(火) 00:30:54.51 ID:UwlHLsip0
>>35
はいはいかっこかっここっかこっか
37名無しさん@12周年:2011/10/18(火) 00:36:27.65 ID:+nB9Zd1t0
>>34
#include <stdio.h>
void main(){ int i; for(i=0; i < 1000;i++) printf("ガッ\n"); }
int mainなんだからreturn 1でも書いとかないとだな
38名無しさん@12周年:2011/10/18(火) 00:36:57.22 ID:bkuK/AAS0

プログラミング言語Cの日本語訳持ってるわ。
新たに概念を作り出すのは偉大だよね。合掌。
39名無しさん@12周年:2011/10/18(火) 00:38:32.62 ID:Kh+ZhKbe0
おまえらまだこんなニュースのスレでまでポインタ論争してたのか!
40名無しさん@12周年:2011/10/18(火) 00:40:20.22 ID:9FkywGXT0
>>37
いや、おまいも void main の段階で論外だろw
41名無しさん@12周年:2011/10/18(火) 00:40:25.28 ID:zNe887P60
>>33
和算アルゴリズムとかを組みこんだOSができていたりして
42名無しさん@12周年:2011/10/18(火) 00:40:43.38 ID:eqnOrkcR0
C言語で飯食ってる人間からすればジョブスよりこっちの方が残念だわ
43名無しさん@12周年:2011/10/18(火) 00:43:41.93 ID:TFGbxDw80
ポインタが解らんのじゃなくて、メモリが解らんのだろう。
だから何に例えても伝わらない
44名無しさん@12周年:2011/10/18(火) 00:44:51.14 ID:fX0ArGEv0
そういえばオイラのMS-QuickCコンパイラ何処行ったんだろ・・・
45名無しさん@12周年:2011/10/18(火) 00:50:05.43 ID:gAVUtUBK0
>>33
紋紙に穴開けて機械語を表現するんじゃないか
46名無しさん@12周年:2011/10/18(火) 00:52:22.25 ID:+nB9Zd1t0
>>40
プログラミング言語 Cの第1版ってvoid mainじゃなかったっけ?
あまり正確には覚えていないのだけれど
47名無しさん@12周年:2011/10/18(火) 01:00:21.56 ID:xo+5CXEG0
>>43
最低限、チューリングマシンの原理を教えてからなら理解できると思うんだけどねー
(箱と、無限の長さのテープがあり、箱はテープに書かれている内容にしたがって自分の状態を変えるとか)

PCの原理について何の予備知識もなかったら、ポインタの理解は確かにきついかもね
原理を知ってても理解できないならさすがに適正ないわ
48名無しさん@12周年:2011/10/18(火) 01:03:07.80 ID:c4CSkAQiO
眠れない夜 getchar()のせいだよ
さっきデバッグした ばかりなのに
肩腰が 凝っている
…直った、直ったよ!
wow〜oh〜
はじめてのC
プログラミング言語C
アイウォントエクセプション
配列出ちゃう メモリ確保してないのに
はじめてのC
プログラミングC
アイドンワナユーズポインタ
ポインタのポインタでいっぱいいっぱい
free()忘れずに
49名無しさん@12周年:2011/10/18(火) 01:11:09.11 ID:bkuK/AAS0
>>48
ワロタ
50名無しさん@12周年:2011/10/18(火) 01:17:50.93 ID:xhQVUSWu0
>>46
それがどうした?
現在において論外なのは間違いない。
51名無しさん@12周年:2011/10/18(火) 01:25:49.02 ID:Nt+bfNqZ0
アセンブラからプログラミング言語Cに行ったのはもう昔の話。

GUIライブラリとかいろいろ引き連れてたpythonとかのスクリプトをやった方が建設的ではある。
チマチマしたCをやりたいなら、1チップマイコンへGO! そっちの方が面白いよ。
52名無しさん@12周年:2011/10/18(火) 01:27:27.57 ID:zIIQKTiG0
ポインタのことは悪く言わないで。

あたしやっぱりポインタじゃないとだめなの。

だから、さよなら。
53名無しさん@12周年:2011/10/18(火) 01:30:25.11 ID:xhQVUSWu0
ポインタより配列の方が難しい気がする。
54名無しさん@12周年:2011/10/18(火) 01:33:53.61 ID:ea0ZMT0M0
テス
55名無しさん@12周年:2011/10/18(火) 01:34:10.15 ID:jfOaQCLR0
>>3
確かに
まさかの5スレ
56ラプラスの天使 ◆daemontaDA :2011/10/18(火) 01:42:18.56 ID:mcW13yi90
ポインタは三重までw

>>27
>>32

何人もの研究者が大学内で夜な夜な作ったんだw
そりゃ多少複雑であっても、当たり前っちゃ当たり前w
57名無しさん@12周年:2011/10/18(火) 01:46:20.38 ID:7KihuehbP
C言語とかまったく分からんが
5スレまで伸びてるということは凄い人なのかな?
58ラプラスの天使 ◆daemontaDA :2011/10/18(火) 01:52:32.70 ID:mcW13yi90
カーニハン&リッチーで勉強したよねw
59名無しさん@12周年:2011/10/18(火) 01:55:41.28 ID:jemYo5Lb0
C → C++ → Java で飽きたw
60名無しさん@12周年:2011/10/18(火) 01:58:23.05 ID:N1ZvQF3k0
>>58
みんなそうだよ。
61名無しさん@12周年:2011/10/18(火) 01:58:47.67 ID:R0o7ZahT0
人に優しくない言語だから死んでも世界からファンが集ったりすることはないし
精神を病んで殺してやりたいと思ってた奴は喜んでるだろう
62名無しさん@12周年:2011/10/18(火) 01:58:49.08 ID:T2YhH1M30
C... 思えば処理系にずいぶん投資したな。 PC98こんちくしょ〜
63名無しさん@12周年:2011/10/18(火) 01:59:18.33 ID:jemYo5Lb0
K&Rは難しいから他ので勉強したな。
64名無しさん@12周年:2011/10/18(火) 02:04:20.15 ID:jemYo5Lb0
ポインタわからない人は参考書を間違えたんだろ。
今時入門書読めば優しく書いてあるよ。
65名無しさん@12周年:2011/10/18(火) 02:04:44.38 ID:TFGbxDw80
>>57
神様みたいなもん
66ラプラスの天使 ◆daemontaDA :2011/10/18(火) 02:05:11.44 ID:mcW13yi90
Hu-BASIC → Z80アセンブラ → BDS-C(CP/M) → FORTH FORTRAN77 N88BASIC MASM XーBASIC 

VB3 VB4で飽きたw 日立アセンブラ、三菱アセンブラ、perl HTML Javascriptがちょっと分かるくらいw

perlが一番楽だったなw JavascriptはC言語並みにメンドクサイw
67 忍法帖【Lv=39,xxxPT】 :2011/10/18(火) 02:06:17.48 ID:YqQ3mKSV0
>1
Linux Torvalds?
68ラプラスの天使 ◆daemontaDA :2011/10/18(火) 02:07:24.21 ID:mcW13yi90
>>64
C言語の前にアセンブラからやっとけば容易いのにw
69名無しさん@12周年:2011/10/18(火) 02:10:28.93 ID:D/t72Glv0
>>68
インテル?モトローラ?
70名無しさん@12周年:2011/10/18(火) 02:10:41.40 ID:mfmFCe6Z0
71名無しさん@12周年:2011/10/18(火) 02:11:02.39 ID:UwlHLsip0
> Hu-BASIC
懐かしいなオイ!
オレはそこからだ
72名無しさん@12周年:2011/10/18(火) 02:11:52.94 ID:jemYo5Lb0
>>68
アセンブラやるまでもないと思うけどな。
変数はコンピュータのメモリ上にあってメモリには1バイトごとに
番号(アドレス)がついてるってことだけがわかってれば。
C言語覚えた後にMASMちょっとだけやったけど。
レジスタとか知らなくても全然いい。

73ラプラスの天使 ◆daemontaDA :2011/10/18(火) 02:20:30.59 ID:mcW13yi90
>>69
いいえザイログw
74名無しさん@12周年:2011/10/18(火) 02:23:29.86 ID:D/t72Glv0
>>73
Z80ナツカシス!
6809と共に齧ったけど、組み方が全然違った。
75名無しさん@12周年:2011/10/18(火) 02:26:55.47 ID:mfmFCe6Z0
ポインタを概念で理解できないなら
ポインタ変数とポインタ変数に格納されてるアドレスを
デバッガのメモリダンプで直接覗いて見ればわかるようになるよ
76名無しさん@12周年:2011/10/18(火) 02:28:33.09 ID:jemYo5Lb0
あと理解するのに重要なのが言葉の意味だな。
pointerは位置を指し示すものという意味がある。
point自体に位置とか先端という意味があるからな。
77名無しさん@12周年:2011/10/18(火) 02:36:04.79 ID:OKD5Vb4j0
ベーマガだかアスキーだかの編集後記に
ポインターシスターズネタが載ってたな
78名無しさん@12周年:2011/10/18(火) 02:51:07.86 ID:HB4bdWhK0
結局*pとpと&pの関係がよく分からんのだな。
79名無しさん@12周年:2011/10/18(火) 02:51:15.02 ID:jemYo5Lb0
つまりポインタは変数が物理的なメモリ上のどこにあるかを
番号(アドレス)で指し示しているわけだよ。
なんでそんな面倒くさいことをするかというと
そもそもコンピュータはアドレスを使ってメモリ上の
変数にアクセスしてるからな。変数名はあくまでプログラミング言語において
人間用に用意されたもの。その辺の事情がわかるのがアセンブラ。
80名無しさん@12周年:2011/10/18(火) 02:52:57.52 ID:P2jrd8gJ0
>>3
何も喋れんじゃないか…
81名無しさん@12周年:2011/10/18(火) 02:55:50.94 ID:R0o7ZahT0
C言語は動作を記述するもので、述語から始めて、常に俺
俺=プログラム実体がやる操作(誰を,どのように){…}

オブジェクト指向はデータを主体として、相対化された述語がくる
日本語の特徴が反映されてる
void mainがintになったように、常に観察者の存在がある
そしてそれは人間であり人間すなわち神ということである
82名無しさん@12周年:2011/10/18(火) 02:56:43.88 ID:jemYo5Lb0
>>78
変数=*ポインタ
ポインタ=&変数
というそれだけの話
83名無しさん@12周年:2011/10/18(火) 03:04:27.10 ID:jemYo5Lb0
ポインタの中身の数値はアドレスということ。
84名無しさん@12周年:2011/10/18(火) 03:08:33.46 ID:xhQVUSWu0
>>82
厳密に言うと、「変数」はアドレスを実行環境が完全に管理しているが
「*ポインタ」はアドレスが「ポインタ」の値(を実行環境が変換したもの)である
という違いがあるんじゃないの。

85名無しさん@12周年:2011/10/18(火) 03:11:36.50 ID:HB4bdWhK0
今調べてきたらおぼろげにわかってきた。
&(*p)ってやれば、これをまた別のポインタに入力できるのかな。
86名無しさん@12周年:2011/10/18(火) 03:11:51.35 ID:Xc2yTgF40
VBは本読みながら何となく覚えたが、
コードが長くなるとすげぇ重たくなった思い出がある。
87名無しさん@12周年:2011/10/18(火) 03:12:38.16 ID:jemYo5Lb0
ポインタ自体も変数でその中身はメモリ上の位置を表す整数(アドレス)ってこと
88名無しさん@12周年:2011/10/18(火) 03:14:47.97 ID:jemYo5Lb0
>>85
できる。結局pと同じ値になるけど。
89名無しさん@12周年:2011/10/18(火) 04:02:39.45 ID:xhQVUSWu0
>>88
ちょっと待て、
*(&x)はxと同じになるが、
&(*p)はダメじゃないか?「*p」って左辺値じゃなくね?
90名無しさん@12周年:2011/10/18(火) 04:04:53.26 ID:2w7IcP1G0
はじめてのC
91名無しさん@12周年:2011/10/18(火) 04:05:54.06 ID:mfmFCe6Z0
92名無しさん@12周年:2011/10/18(火) 04:10:11.66 ID:PQT1X0Yz0
デニスリッチーさんありがとう
あなたの発明したC言語のお蔭で、家が買えました。
93名無しさん@12周年:2011/10/18(火) 04:19:50.32 ID:P2jrd8gJ0
*pは「ボインタ変数pに入っているアドレスの先にあるデータの値」なので&演算子は使えない。

というか、使う必要無いじゃん。
pに入っているアドレス使えばいいんだから。
94名無しさん@12周年:2011/10/18(火) 04:34:35.65 ID:W+miLx510
&(*foo).bar
95名無しさん@12周年:2011/10/18(火) 04:44:50.53 ID:wNhhidI/0
>>89>>93
お前ら偉そうなこと書いて全然ダメだなw
特にこいつ ID:xhQVUSWu0
www
96名無しさん@12周年:2011/10/18(火) 04:47:11.55 ID:bMX2E0Uu0
ポインタ解説にバイト・ワード用いるのは素人
スキー上達者ビデオ見せてさあ同じに滑ろと言ってるもん、過程全省略
構造体から入るべき
97名無しさん@12周年:2011/10/18(火) 04:48:54.87 ID:wNhhidI/0
>>96
バイトくらい素人でも知ってるだろwww
98名無しさん@12周年:2011/10/18(火) 05:09:16.13 ID:bueQXriP0
この人とセットのカーニハンさんはどうしてるんだろか
99名無しさん@12周年:2011/10/18(火) 05:57:46.98 ID:9POhTZzH0
>>46
voidは標準化されてからだな。初版はint main()
100名無しさん@12周年:2011/10/18(火) 06:05:09.18 ID:9POhTZzH0
>>99
と思ったが、intすらなかったわ。

http://www.lysator.liu.se/c/bwk-tutor.html#introduction

main( ) {
printf("hello, world");
}

これは論文だから、初版本とはちと違うけど、voidはこのころはまだ発明されたなかった
101名無しさん@12周年:2011/10/18(火) 07:05:46.59 ID:rJhitzCu0
ポインタが理解できないってのは、抽象思考力が足りないんじゃないかな。
そりゃ一読しただけで完璧に理解するのは難しいけど、何回も色々読んでたら分かるでしょうに。
102名無しさん@12周年:2011/10/18(火) 07:06:38.30 ID:xhQVUSWu0
>>95

何言ってんだ?
103名無しさん@12周年:2011/10/18(火) 07:09:39.32 ID:sGp71z940
おれが入社したときはvoid無かった。
void導入されてもしばらく社内では禁止されてた。

voidは関数じゃない(サブルーチン)から良くないって言われた。
104名無しさん@12周年:2011/10/18(火) 07:12:48.57 ID:wNhhidI/0
>>102
お前こそ何言ってるんだwwwwww

&(*p)はpと同じになるし
*pは左辺値にもなる

>>91みろよwww
*pが左辺値にもなるのは試せwww
105名無しさん@12周年:2011/10/18(火) 07:18:59.79 ID:xhQVUSWu0
>>104
今実行環境なくてね…
でも>>91にはコンパイルエラーって書いてあるけど。
106名無しさん@12周年:2011/10/18(火) 07:23:50.15 ID:n6iVsSXd0
献花はどこにするの?
107名無しさん@12周年:2011/10/18(火) 07:27:58.66 ID:wNhhidI/0
>>105
まだ悪あがきするかめんどくせえww
だいたい*pが左辺値にならないとほざいた時点で
お前はポインタの基本もわかってないんだよwww
108名無しさん@12周年:2011/10/18(火) 07:29:38.82 ID:sGp71z940
&(*p)くらいCプログラマーなら実験したことあるだろ。
109名無しさん@12周年:2011/10/18(火) 07:31:38.60 ID:zIIQKTiG0
大昔のアセンブラはuseマクロで構造体アクセスに使用する
ベースレジスタを指定できた。
構造体をいくつも使うときはuseマクロの切り替えが面倒でバグの温床になった。
これがポインタからの->アクセスになっとるのがCだなというのが
最初の感想だった。
でもアーキテクチャ上バイトアドレスを持たないDataGeneralのマシンに
Cを移植するときはちと苦労した。
110名無しさん@12周年:2011/10/18(火) 07:40:15.11 ID:tLasyBTQ0
訃報(とほー)です。  <竹内由恵
111名無しさん@12周年:2011/10/18(火) 07:50:34.22 ID:YL+G/6eQ0
>>105
gccだと-std=c89でも-std=c99でもコンパイル通るね。

&(*a)を左辺に持ってくるのは無理だけど。

112名無しさん@12周年:2011/10/18(火) 07:54:07.46 ID:sGp71z940
そもそも、

&((int*)0x00151501)
これだってできるだろう?
113名無しさん@12周年:2011/10/18(火) 07:57:47.48 ID:wNhhidI/0
http://codepad.org/
これでも試せるから↑
ちょっと試すのに便利だな


#include <stdio.h>
int main(void)
{
int i=123;
int *p1,*p2;

p1=&i;
p2=&(*p1); /*できる*/

printf("%d %d %d\n",i,*p1,*p2);

*p1=456; /*できる*/

printf("%d %d %d\n",i,*p1,*p2);

return 0;
}


結果
123 123 123
456 456 456

114名無しさん@12周年:2011/10/18(火) 07:58:35.77 ID:cfnhebz8O
>>89
おいおい…
*pが左辺値になりうるのはポインタの常識だろ…
文字列のコピー処理をポインタを使って書いてみそ?
115槍騎兵 ◆YARI3Eg7m6 :2011/10/18(火) 08:08:09.72 ID:SEtQ08R30
Cのポインタがややこしいと思うのはポインタで型宣言した場合とそうでない場合に
実体(中身の値)とアドレス渡しの時に*と&の使い方が逆に見えるのが原因で混乱する事が多いな。
int a, *b;
a ポインタ型でない実体渡し
&a ポインタ型でないアドレス渡し
*b ポインタ型の実体渡し
b ポインタ型のアドレス渡し
間違えてwarningになることも多いけどw
116 忍法帖【Lv=39,xxxPT】 :2011/10/18(火) 08:29:12.13 ID:YqQ3mKSV0
peekとpokeが分かれば大丈夫。
117名無しさん@12周年:2011/10/18(火) 08:31:45.81 ID:c4CSkAQiO
int hoge(char fuga[]);
int hoge(char *fuga);

の使い分けがわかんにゃい
118名無しさん@12周年:2011/10/18(火) 08:56:44.30 ID:lKytA8SJ0
ぬるぽ
119名無しさん@12周年:2011/10/18(火) 08:57:51.54 ID:Y1OFdw9E0
>>117
同じだろ。好きな方使えばいいんじゃないの。
120名無しさん@12周年:2011/10/18(火) 09:00:48.87 ID:a+F64zDR0
デニスが父なら母は誰だ!
あ、無性生殖
でもそれなら父という言い方が変
121名無しさん@12周年:2011/10/18(火) 09:05:02.32 ID:cM5x0/R+0
Line入力からラジオを録音をしたいんだけど
簡単なプログラムおせーて

ubuntuなんだけど
122名無しさん@12周年:2011/10/18(火) 09:06:54.59 ID:Nt+bfNqZ0
#include <stdio.h>
#include <ctype.h>
int main ()
{
int a = 0;
int b = 0;
int c = 0;
int d = 0;
int* p;
int* q[3];

p = &a;
*p = 1;
q[0] = p;

p = &b;
*(q+1) = *(&p);
*q[1] = 2;

*(q+2) = &c;
**(q+2) = 3;

*(&d) = **q + *q[1] + **(q+2);

printf ( "a:%x b:%x c:%x d:%x \n" , a, b, c, d );
printf ( "a:%x b:%x c:%x d:%x \n" , &a, &b, &c, &d );
printf ( "q[0]:%x q[1]:%x q[2]:%x \n" , q[0],q[1],q[2]);
while (isspace(getchar()));
return (0);
}
123名無しさん@12周年:2011/10/18(火) 09:09:39.59 ID:Y1OFdw9E0
>>121
Cで?簡単じゃないな多分
124名無しさん@12周年:2011/10/18(火) 09:16:45.24 ID:Nt+bfNqZ0
>>122
これ動く?
a 1
b 2
c 3
d 6
になるはず。
125名無しさん@12周年:2011/10/18(火) 09:26:24.39 ID:QvJO4cfv0
ポインタの概念がようやく分かってきたところで
ポインタのポインタが現れて悶絶
126名無しさん@12周年:2011/10/18(火) 09:49:01.99 ID:OU7QhQvOP
>>27
発想そのものはそうかもしれんが、全知の能力がありませんからね。
注意深くダメな部分を取り除くしかないわけですけど…
後生の人にそれを託すのはやめて欲しいわけです。Javaとかね。
127名無しさん@12周年:2011/10/18(火) 09:49:13.67 ID:1j94WUwqO
>>120
母は知らんが祖父は韓国だろう

つまりC言語も余裕で韓国発祥ニダ
128名無しさん@12周年:2011/10/18(火) 09:52:53.37 ID:OU7QhQvOP
>>121
/dev/audioから読み出すだけでいいのでは?
129名無しさん@12周年:2011/10/18(火) 10:07:46.09 ID:8b4P8kKO0
>>72 アセンブラやるまでもないと思うけどな。
割り込みとかCだけで書けたっけ?
デバイスの初期化と割り込みはアセンブラで
全体はCというのが一般的じゃない
130槍騎兵 ◆YARI3Eg7m6 :2011/10/18(火) 10:24:05.61 ID:SEtQ08R30
>>129
部分的に繰り返す処理で速度を求めるなら
_asmとかインラインアセンブラも必要だけど
割り込みとかioctl()でできるし、不都合はあまりないと思う
131名無しさん@12周年:2011/10/18(火) 10:44:33.90 ID:SBGEp5zZ0
>>120
同人誌でやれ。
132名無しさん@12周年:2011/10/18(火) 11:29:07.63 ID:enk9o48R0
>>27
実用になってる言語は、すでに確立した発想の組み合わせ。
新しい発想は、実験的な言語で試され、一部でしか使われないことが多い。

言語デザインは、新しい発想だけに価値があるんじゃなくて、組み合わせの妙とか、
美的センスみたいなものがあるけどね。
133名無しさん@12周年:2011/10/18(火) 11:35:44.98 ID:enk9o48R0
>>100
int は、省略可能だから、意味は同じだな。

main() の戻り値は、exit(2) の値だから、void じゃないんだよね。

よく考えれば、C プログラムは、関数、ストラクチャ、変数宣言でできてるのに、
defun とかのキーワードが不要なんだよね。
昔の言語の LET とかが、ほとんど無くなったのと同じかな。
134名無しさん@12周年:2011/10/18(火) 12:06:42.62 ID:Y1OFdw9E0
>>129
いやポインタを理解するのにアセンブラをやる必要があるかって
話の流れだから。そりゃやっても損はないだろうけど。
135名無しさん@12周年:2011/10/18(火) 12:20:57.45 ID:Y1OFdw9E0
93 名前:名無しさん@12周年[sage] 投稿日:2011/10/18(火) 04:19:50.32 ID:P2jrd8gJ0 [2/2]
*pは「ボインタ変数pに入っているアドレスの先にあるデータの値」なので&演算子は使えない。

93 名前:名無しさん@12周年[sage] 投稿日:2011/10/18(火) 04:19:50.32 ID:P2jrd8gJ0 [2/2]
*pは「ボインタ変数pに入っているアドレスの先にあるデータの値」なので&演算子は使えない。

93 名前:名無しさん@12周年[sage] 投稿日:2011/10/18(火) 04:19:50.32 ID:P2jrd8gJ0 [2/2]
*pは「ボインタ変数pに入っているアドレスの先にあるデータの値」なので&演算子は使えない。

wwwwwww
136名無しさん@12周年:2011/10/18(火) 12:22:21.00 ID:3pIiRIEY0
お前ら、ほとんど悼んでないな…
生きてるうちから神様だったからか
137名無しさん@12周年:2011/10/18(火) 12:26:43.26 ID:4vweOEFV0
C/C++はややこしいよな
しばらく触ってないと細かいことは忘れるよ
コンパイラ通ればいいんじゃないの
138名無しさん@12周年:2011/10/18(火) 12:29:53.53 ID:rWMfTp9x0
★5までのびたか。
故人の人類に対する貢献を思えば当然だな。
139名無しさん@12周年:2011/10/18(火) 12:32:21.69 ID:dTD49RzY0
>>134
デバッグにはアセンブラの知識が必要
もちろんバリバリにアセンブラでプログラム必要は全くない
Cコンパイラの吐き出すマシン語が何をやっているか
アセンブラレベルで理解していないと、きちんとしたデバッグが出来ない

特にシステム系
140名無しさん@12周年:2011/10/18(火) 12:40:36.77 ID:OI+5oTht0
そこまで才能があり努力もしているのに
どうして評価が低いのだろう、給料が普通にExcel使うだけの人と同じなんだろう
141名無しさん@12周年:2011/10/18(火) 12:44:34.41 ID:4vweOEFV0
>>115
Cだけだと一貫性があるんだがC++で拡張したときにややこしくなったんだよな。
C++参照型の宣言をどうするかって
142名無しさん@12周年:2011/10/18(火) 12:44:42.80 ID:7i9pw7HI0
ベル研も大変だーね ポインタ秋田
143名無しさん@12周年:2011/10/18(火) 12:49:31.04 ID:4vweOEFV0
>>141(つづき)
なったときポインタがint *a;だから参照はint &b;にしとくかみたいな。
でもよく考えてみたら後者は論理的に少しおかしい。
で"int&"でひとかたまりで参照型と考えてint& a;と書いとくかみたいな。
でもa,bを参照型にしたいときint& a,b;とやっちゃう落とし穴w
じゃあ間をとってint & a;って書いとけみたいなグダグダ感ww
144名無しさん@12周年:2011/10/18(火) 12:52:12.49 ID:6QadcB/+0
UNIXはリクシルになったのか?
145名無しさん@12周年:2011/10/18(火) 13:27:17.35 ID:d8liLimx0
Think C
マックでこれ使ってた
てか、マックでプログラム言語って
これしか無かった
ツールボックスって今でも引き継がれてるのかな?
146名無しさん@12周年:2011/10/18(火) 13:41:15.76 ID:MfAEO4Jn0
ポインタの説明に低レベルの実装例を持ち出すと理解が早い
というのはそのとおりだと思うんだけど、
しかし、K&R(第二版)の説明はもっと秀逸だと個人的には思う。
文字列、多次元配列、コマンド行引数、関数ポインタ…。
つまり、理屈より先によく使われるパターンを覚えてしまえ(習うより慣れろ)、と。
そして関数ポインタの説明の直後に宣言構文の解析がでてくる…それほど、
関数ポインタを「読む」には構文解析の正確な知識が必要だと
カーニハンとリッチーは言っているわけだ。

400ページにも満たないこの本でCがひと通り理解できてしまうのは
天才的な説明法にもあるに違いない。
147名無しさん@12周年:2011/10/18(火) 13:45:18.54 ID:hXXhtf9W0
>>121
お前が今までそうやって生きてこれたならお前の周りの人間はきっとハイスペックな奴ばっかなんだろうな。
148名無しさん@12周年:2011/10/18(火) 13:56:29.90 ID:kiYAlgsc0
unixのmac osとovjective-cがメインストリーム
C++はオワコン
仮想化してunix環境入れるにしてもマイナーなlinuxなんて今時誰も使ってない
149名無しさん@12周年:2011/10/18(火) 13:57:25.65 ID:5TxBV+iw0
>>143
引数の線源に & をつかえるのは、構文糖だと思ってる。
実際には、* つきで宣言してあるのと同じで、関数内で * を省略できるだけでは?
150名無しさん@12周年:2011/10/18(火) 14:03:59.84 ID:zCWqtTwf0
>>145
Think-Cは大昔に少しだけやってたな。まともな参考書がない時代だったんで苦労した。
やっと買った参考書の著者が馬鹿な奴で、北尾と長州がもめたのはどうたらこうたらとか、
どうでもいいことばかり書いてて、頭痛くなった。
151名無しさん@12周年:2011/10/18(火) 14:05:40.98 ID:trNXuFtX0
おまいら詳しいなw
152名無しさん@12周年:2011/10/18(火) 14:34:04.91 ID:PkIrRDvN0
父がこの人なら、母はだれなのー?ねえだれなのー?
153名無しさん@12周年:2011/10/18(火) 14:35:58.23 ID:HR049MZM0
何かすっかり昔の知識のお披露目会みたいなスレになってるな・・・・
154名無しさん@12周年:2011/10/18(火) 14:47:15.38 ID:Jg0Nj2mD0
ポインタは性能はさておき
文法書式がクイズになる時点で言語的にはダメだろう。

「俺はこんな書き方でもわかるぜ!」
なんて自慢するところじゃない。
そこはむしろ恥じて自重するべき。
155名無しさん@12周年:2011/10/18(火) 14:53:47.62 ID:EW2+Occ70
いわゆるマシン語(アセンブラ)でも裏ワザってあるからw
156名無しさん@12周年:2011/10/18(火) 15:03:57.50 ID:OI+5oTht0
>>154
はげ同

誰が書いても、同じコードになり、同じパフォーマンスが出る
という言語が最高だな
157名無しさん@12周年:2011/10/18(火) 15:04:55.62 ID:0sTZoHFj0
それじゃ逆に面白くない
158名無しさん@12周年:2011/10/18(火) 15:08:05.46 ID:OI+5oTht0
名人に頼っていると、名人が死んだときに終わる。
また、名人が生産できる以上の数は決して作れないから、広まらない。

コンピュータだけでなく、どの分野でも同じ。
名人芸は害悪
159名無しさん@12周年:2011/10/18(火) 15:17:35.83 ID:HR049MZM0
>>154
そうなんだよね。
今となってはポインタなんて害悪でしかない。

でも、それが出来るから、アセンブラを触らなければならないような
小さい世界の中ではC言語は現役で居続けられる。
160名無しさん@12周年:2011/10/18(火) 15:41:12.79 ID:OU7QhQvOP
>>156
それはいまのところPythonしかないな。

>>159
ポインタわかってないでしょ?
害悪なんてとんでもない。C言語のシンタックスがいまいちなだけ。
161名無しさん@12周年:2011/10/18(火) 16:02:12.12 ID:gNwSth/y0
chop; chop; chop;
162名無しさん@12周年:2011/10/18(火) 16:05:56.21 ID:GkFQKFgt0
>>143
俺は別に気にせず普通に
int &a;
って書くけどな。
それが逆に一番誤解がないだろ。
実体もポインタも参照もまとめて書けるし
int a, *b, &c;
163名無しさん@12周年:2011/10/18(火) 16:33:23.27 ID:nO0YtMKz0
アセンブラをやったんだけどすぐに挫折してCに移った。
スタックあたりまでやっていたんでポインタで挫折しなくて
助かった。
164名無しさん@12周年:2011/10/18(火) 16:39:36.28 ID:GkFQKFgt0
ポインタそんな難しいかねえ。
配列へのポインタとか関数へのポインタになると
一瞬「なんじゃこれ?」とは思うけどすぐ慣れるしな。
ほとんど使わないけど。
165名無しさん@12周年:2011/10/18(火) 16:43:45.36 ID:OI+5oTht0
危険な技(ポインタを使ってデータとして書き込んで、関数として実行させる。とか
確保したバッファ以上の場所に書き込める。とか)

は、もう現代社会では不要だと思う
166名無しさん@12周年:2011/10/18(火) 16:51:49.27 ID:c4CSkAQiO
組み込み分野じゃ必須だから。
ピストバイクは危険だからなくそうって言ってるようなもの。
167名無しさん@12周年:2011/10/18(火) 16:52:54.85 ID:3aGMkuhb0
まだやってんのかよ。もうええわ
168名無しさん@12周年:2011/10/18(火) 16:53:59.83 ID:GkFQKFgt0
>>165
いやそういう話じゃなくて、関数もメモリー上にある以上
普通に関数へのポインタもあるわけよ。
169名無しさん@12周年:2011/10/18(火) 16:56:53.14 ID:OI+5oTht0
ファイル名をTXTからEXEに変えるだけで実行するOSとか
データの領域とプログラムの領域を分けない言語とか
たぶん、時代遅れ。
170名無しさん@12周年:2011/10/18(火) 16:59:35.31 ID:0sTZoHFj0
引数として関数ポインタを渡すなんてのは標準ライブラリ関数の中にでもあるだろ。
171名無しさん@12周年:2011/10/18(火) 17:00:33.39 ID:5TxBV+iw0
>>169
> データの領域とプログラムの領域を分けない言語とか

言語でどうやって対処するんだ?
言語が決めたとすると、リンカが領域決められないから、そもそもリンクできないぞ。
172名無しさん@12周年:2011/10/18(火) 17:36:00.30 ID:L7g7MrsXP
時代が移り変わっていくんだな・・・
173名無しさん@12周年:2011/10/18(火) 17:41:56.27 ID:cfnhebz8O
Cの言語仕様はコンパクトでシンプル。
Cで躓いてしまうような人が、C++やC#やJavaの複雑な言語仕様を理解して使えているとは思えないな。
174名無しさん@12周年:2011/10/18(火) 17:48:01.98 ID:u5HgsO1tO
蟹飯&立地ー
175名無しさん@12周年:2011/10/18(火) 17:49:51.30 ID:d+6HluO/0
>>140
同じわけないだろw もし同じなら その会社があほ
176名無しさん@12周年:2011/10/18(火) 18:31:49.86 ID:+nj+hZhC0
ポインタのあるべき姿は、オブジェクトを参照する情報であるべきであって、
そのオブジェクトやその内部がメモリの上に乗っている番地(アドレス)
であってはあまりにも原始的すぎるし、リロケーションが効かない。
構造体のメンバーや配列の要素をポインタで直接指せるのも有害。
構造体を指す、配列を指すことは当然出来てよいが、
その内側を直接指せては、安全なプログラムにはならない。
177名無しさん@12周年:2011/10/18(火) 18:42:28.19 ID:jyxSse8f0
Ritchieさんは、ANSI C風じゃないC言語を使っていたな。
元のK&RでもないPlan 9で新しく作った奴。
178名無しさん@12周年:2011/10/18(火) 18:44:12.19 ID:KjG4fIbP0
最低でもコードと、データとスタックその他を分けないとROMにも焼けないじゃないか。
179名無しさん@12周年:2011/10/18(火) 19:21:47.54 ID:cfnhebz8O
>>176
>ポインタのあるべき姿は、オブジェクトを参照する情報であるべきであって

それは例えばPascal流のポインタだね。
ポインタとはどう在るべきかという発想で行けば、
Pascalのような抽象化されたポインタの方が美しい。

けど、そのポインタじゃOSは書けない。CはOSを書くために開発された高級言語なんだから、
「ハードウェアを隠して抽象化されたポインタ」なんて
Cが作られた目的や用途からすれば本末転倒だよ。
180名無しさん@12周年:2011/10/18(火) 19:21:48.78 ID:Z0j0SV7i0
>>176
Cはともかくとして、C++ではポインタがメンバ関数を指せることで
汎用性が高くかつ安全なメッセージマップとかが記述できるようになってるよ?^^

メンバ関数ポインタバンザイ^^
181名無しさん@12周年:2011/10/18(火) 19:23:08.51 ID:ISs4N0Xn0
苦労してせっかく得たノウハウを、こんなところで惜しげもなく教えてしまうのが
Geekどものあさはかさ
人間関係が不得手で、承認欲求とやらが強いのと、処世が下手で警戒心が弱いのか
バカだなぁ
182名無しさん@12周年:2011/10/18(火) 19:55:37.14 ID:Nt+bfNqZ0
Cのノウハウの話なら、ココに出て来た程度の物は
昔の本に詳しかったけど、絶版が多いね。

今はC++がその後釜に入ったからCのノウハウなんて欲しがる奴居ないだろw
183名無しさん@12周年:2011/10/18(火) 20:02:56.78 ID:fn80rP3+0
>>146
書いたのはカーニハン。
リッチーが書いたのは付録Aだけ。

だが、その付録Aが本文に負けず劣らず良かった。
184名無しさん@12周年:2011/10/18(火) 20:23:45.57 ID:rJhitzCu0
Cもいいけど、オブジェクト指向、デザインパターン、ソフトウェアアーキテクチャなどの高次概念も
きちんと教育しろよ。ポインタで躓いているようでは先が長い。

ポインタより開発環境の使い方の方が、俺にはよっぽど難しいわ。
185名無しさん@12周年:2011/10/18(火) 20:26:02.03 ID:9POhTZzH0
>>173
C言語では、出力されるアセンブラコードを想定できるぐらいバリバリ使えても、
C++やC#やJavaへはついていけないのもいるけどな。



わしじゃ。クラス名とかが面倒で覚えられん。ポインタとprintfさえ使えればがんがんプログラムが書けたあの時代が懐かしいわ
186名無しさん@12周年:2011/10/18(火) 20:27:08.32 ID:/vDMsSlk0
ポインタをν速にあててカーソルをフェッチするんですね わかります
187名無しさん@12周年:2011/10/18(火) 20:33:12.05 ID:+nj+hZhC0
やはりポインタの機構はワンクッション置いて参照カウンタなども背後に持ち、リロケーションも自由に出来る裏側の仕組みを持つのが安全。C言語は所詮
アセンブラプログラミングと同じ仕組みを直接提供しているのに過ぎない。
システムプログラマ用の言語を汎用言語として一般アプリケーションプログラ
ミングにも使うという方向は、間違ったトレンドであってソフトウェアの安全
性を無視したもので感心できない。単なるスピード競争だけが頭にあって、
安全性を無視した自動車のようなもの。
188名無しさん@12周年:2011/10/18(火) 20:36:53.91 ID:OU7QhQvOP
>>184
IDEのめんどくささといったらない。
でもJavaとかはIDE使わないと生産性落ちるという。
つーかそれって欠陥言語なんじゃね?と思ってしまう。
189名無しさん@12周年:2011/10/18(火) 20:39:04.34 ID:Nt+bfNqZ0
実用面から言えば、pythonとかのスクリプトの方がいろいろ出来て楽しい。

Cプログラミングで遊びたいなら1チップマイコンやった方が楽しいよ。
arduino互換のマイコン基板ならCをより簡易化した言語で遊べるし。

190名無しさん@12周年:2011/10/18(火) 20:40:29.28 ID:UnII5S2K0
Core2Duoのintって、なんbit?
191名無しさん@12周年:2011/10/18(火) 20:52:15.64 ID:p0vZd4rs0
GUIのインターフェースは面倒なんだからさ、
CGIでやることにすりゃいいんだよ。
趣味でプログラムするならこれお勧め。
192名無しさん@12周年:2011/10/18(火) 20:55:05.11 ID:5TxBV+iw0
>>187
そう思うんなら、C 使わなきゃいいだけじゃん。
40年前にほぼ完成した言語に拘らずに、今なら、代替できる言語が腐るほどあるわけだし。

C を批判するってのは、C を使わなければいけない場面で、より良い選択肢を提示するってことだから。
193192:2011/10/18(火) 20:57:31.65 ID:5TxBV+iw0
>>187 は、C を批判してるわけじゃないね。スマン。
でも、似たような論理で、C を批判した気になってる奴がウザかったので、つい。
194名無しさん@12周年:2011/10/18(火) 21:19:11.87 ID:mtBimtB/0
正直CもUNIXも嫌いだった。
全編小文字ハァ?スカしよってからに
表示がcatとか頭膿んでるのか?

そうLinuxに出会うまでは…

そしてからぶん投げてたK&R読みなおしたよ
ゴメンネRさん。ぼっくんミーハーで(*´ω`*)
195名無しさん@12周年:2011/10/18(火) 21:27:07.67 ID:Nt+bfNqZ0
その昔、アセンブラからCへ移行する人ならK&Rを理解しやすかった、そんだけの話。
196名無しさん@12周年:2011/10/18(火) 21:32:08.23 ID:UnII5S2K0
>>194
逆でしょ。

当時の処理系では大文字固定とかが多かったと思う(Fortranとか)。
CもUNIXも混在出来た。
197名無しさん@12周年:2011/10/18(火) 21:56:20.72 ID:7i9pw7HI0
AVX2に期待AGE
198名無しさん@12周年:2011/10/18(火) 21:59:43.78 ID:cfnhebz8O
>>195
K&Rにはアセンブラの話なんか殆ど出てなかったよ。
UNIX環境を前提としたサンプルプログラマが多かったから、
UNIXを知らない/触れる環境がないとK&Rを読んで理解するのは辛かっただろう。
アセンブラプログラマが読んで理解しやすい本とは思えないなぁ。

当時K&Rがバイブルだったのは、ANSIでCが標準化されるまでは
あの本がCの事実上の言語仕様書だったからだよ。
199名無しさん@12周年:2011/10/18(火) 22:08:11.57 ID:hEqCp7rU0
>>195
ぶっちゃけ、Cコンパイラとは超高機能マクロアセンブラではないのか、と思う。
200名無しさん@12周年:2011/10/18(火) 22:10:15.98 ID:mfmFCe6Z0
>>187
>システムプログラマ用の言語を汎用言語として
>一般アプリケーションプログラ ミングにも使うという方向は、間違ったトレンドであって

やべ、アプリをCで書くのがトレンディだったのか
乗り遅れてたぜ
201名無しさん@12周年:2011/10/18(火) 22:17:19.56 ID:bq2WcroJ0
高度に組みあがったマクロアセンブラのコードって今はネットでも見る機会ないよね。
昔、PC雑誌で見て感動したものだ。
値段がすごくて試せなかったが。
202名無しさん@12周年:2011/10/18(火) 22:17:49.15 ID:Nt+bfNqZ0
>>198
試す環境がDOSでも組み込み用ターゲットでも、
信用出来るのはK&Rしかなかったし、それで必要十分だった時代の話だよ。
203名無しさん@12周年:2011/10/18(火) 22:19:28.07 ID:hWhePYWU0
俺の綽名はペニス・リッチなんだが、なぜか親近感を覚える。
ご冥福を祈る。
204名無しさん@12周年:2011/10/18(火) 22:24:36.97 ID:fn80rP3+0
アセンブリ使いでも向いてない人はいるよね?

そんなヤツがC使うと、ポインタ型と整数型を無頓着にキャストしたり、
構造体の存在自体をシカトして配列オンリーでデータ構造作ったり…

ソースコードが悲惨で怒り狂ってデバッグやったよ。
205婆 ◆HKZsYRUkck :2011/10/18(火) 22:30:35.05 ID:e6dQEKGW0
>>33
free関数などなくても配列は自らの散り際を心得て切腹する。
でもたまに失敗するから、介錯関数が実装される。
206名無しさん@12周年:2011/10/18(火) 22:46:16.41 ID:Tp3hJoJo0
>>204
Windows APIディスってんなよ
207名無しさん@12周年:2011/10/18(火) 22:54:58.93 ID:UAh6lC6O0
>>50
世の中には、Cで炊飯器の制御プログラムを書いてる
人間もいるのだよ。
208名無しさん@12周年:2011/10/18(火) 22:58:50.02 ID:5TxBV+iw0
>>205
リファレンスカウントとマーク&スイープの組み合わせ GC じゃん。
209名無しさん@12周年:2011/10/18(火) 23:08:04.81 ID:zCWqtTwf0
>>33
スターリング&ギブスンに、またディファレンス・エンジン並みのつまんない小説書いてもらうか
黒丸尚が死んじゃったから、誰も訳せないかもしれないけど
210名無しさん@12周年:2011/10/18(火) 23:16:41.62 ID:Uh7JfO2J0
>>190
32ビット
211名無しさん@12周年:2011/10/18(火) 23:50:37.58 ID:rWMfTp9x0
>>206
>>204
>Windows APIディスってんなよ

クソワラタwwwwwwwwww!
212名無しさん@12周年:2011/10/19(水) 00:44:38.44 ID:ZngfTy5R0
ジョブズなんて、いなくても何にも困らんが、この人は地味にスゲーな。
知らんかった、合掌。
213名無しさん@12周年:2011/10/19(水) 00:45:55.59 ID:hsALnbGM0
>>121
マジレスすると一番簡単なのはこれ。
cat /dev/audio > wave.bin

二番目がこれ。
dd if=/dev/audio of=wave.bin
214名無しさん@12周年:2011/10/19(水) 00:51:26.50 ID:nJA1qdTQ0
>>210
メガドライブなみか。
215名無しさん@12周年:2011/10/19(水) 00:54:08.67 ID:hsALnbGM0
>>201
大昔はロハだったよ。大惨事オンラインのころ。
マイクロソフトがプログラムにも著作権があるので金だせと言う前の話。
COBOLのコード効率、性能ではこなせないのでアセンブラが多用された。
つってもPACK形式の四則演算命令があるようなマシン語体系の時代。
216名無しさん@12周年:2011/10/19(水) 00:55:47.04 ID:zVU7BCTm0
>>145
Symantec C使った記憶が。
217名無しさん@12周年:2011/10/19(水) 01:02:28.31 ID:SvSHkmjd0
AIX7.1・・・・・・・・・・・
218名無しさん@12周年:2011/10/19(水) 01:02:30.35 ID:gwOOSK4T0
言語を考えたヤツは天才
プログラムなんて誰でもできるが
219名無しさん@12周年:2011/10/19(水) 01:03:24.91 ID:pPdVs62G0
「初めてのC」世話になったなww
220名無しさん@12周年:2011/10/19(水) 01:05:50.93 ID:WuJ37Yv/0
おぉ5スレ目かぁ
嬉しいねぇ
221名無しさん@12周年:2011/10/19(水) 01:07:53.56 ID:1r+c28hh0
ThinkCをsymantec社が買いとった。
その前はlightspeedCっていってた。
222名無しさん@12周年:2011/10/19(水) 01:39:25.79 ID:yzvzsJkD0
ベーマガ廃刊の時もずいぶんスレ延びたよな
223名無しさん@12周年:2011/10/19(水) 01:57:56.66 ID:wRcVd87B0
>>190
処理系依存
224名無しさん@12周年:2011/10/19(水) 01:58:41.61 ID:kW2msLWE0
C90で止まってる人が結構いそう
225名無しさん@12周年:2011/10/19(水) 02:13:55.84 ID:kLQKPdyn0
K&R CってANSI Cと引数の記述の仕方が違っていた記憶があるな。
思い出せないしもうどうでもいいけど、pとかqとかiとかjとか意味のわからない変数の命名法だけは
今も参考にさせてもらっているよ。
R.I.P.
226名無しさん@12周年:2011/10/19(水) 03:09:04.74 ID:x27JpeVN0
>>189
スクリプトには限界があるからなぁ。
227博多のカリスマ:2011/10/19(水) 04:08:40.40 ID:rHrbsSO8O
ざまあ
228名無しさん@12周年:2011/10/19(水) 04:38:35.85 ID:Ovae3JZW0

初期の信長の野望はよくぬるぽで落ちたのを思い出した。
ラティスで作ってたんだよなあ。

まあ当時はなんていうか処理系の存在そのものにすごく感動したなあ。
かっこよかったんだよなあBasicとか子供だましのように感じたし。
masmとかms-cとか馬鹿高いのをバイク我慢して買ってたよ。

リッチーさんやすらかにお眠りください。
カーニハンさんもご自愛ください。

229名無しさん@12周年:2011/10/19(水) 04:49:18.58 ID:sVQKgunr0
Segmentation fault(core dumped)
なつかしい・・・
230名無しさん@12周年:2011/10/19(水) 05:43:36.85 ID:qMB/s1kI0
Cは危険だ、ポインタは危険だなどと言うが
理想と現実を、安全性と処理速度の速さ等を
天秤にかけて絶妙のバランスを取ったのが
Cのコンセプトなのに全く的はずれな批判だろ。
231名無しさん@12周年:2011/10/19(水) 06:00:42.65 ID:3DwY5/JG0
>>225
こんな感じだったよな。うろおぼえ。

func
int a;
double b;
{
・・・
}
232名無しさん@12周年:2011/10/19(水) 08:19:01.54 ID:qzVbOrTQ0
>230
例えばヌルで終端された文字列という方式をとったことは、
非常に安全性を損ねているし、(事前に文字列の長さを知る術が
ないので)処理速度も稼げない。ヌル終端文字列という方式の
ために、ASCIIコード以外の文字列表現ではなかなか苦労
するし、また文字列を格納する場所が十分に用意されていなくても
それと分からずメモリに書き込んでいってデータやプログラムを
壊してプログラムを暴走させたり、結果が不正になったり、
プログラムの動作を改竄したりできたりもする。
ポインタがオブジェクトを指すのではなくてメモリの番地を指す
だけの機械語と同じ原始的で直接的な方法だけを提供した結果だ。
233名無しさん@12周年:2011/10/19(水) 08:22:31.78 ID:pKeEC5DH0
>>232
そんなこと誰でもわかってんだよ
承知の上で実用性とのバランスを取っただけ
234名無しさん@12周年:2011/10/19(水) 08:24:42.90 ID:pKeEC5DH0
>>232
>(事前に文字列の長さを知る術がないので)処理速度も稼げない。

いやこれはおかしいだろ
235名無しさん@12周年:2011/10/19(水) 08:33:38.04 ID:yFg50B4yO
>>228
一番最初の「信長の野望」はBASICだったよ。
ひでぇスパゲティ。
236名無しさん@12周年:2011/10/19(水) 08:37:32.70 ID:YsA1SyGd0
>>232
最後の2行が言いえている。

>ポインタがオブジェクトを指すのではなくてメモリの番地を指す
>だけの機械語と同じ原始的で直接的な方法だけを提供した結果だ。

その「だけ」のおかげで、アセンブラの代用として応用が利いた、
OSも書けた、と言えない?
237名無しさん@12周年:2011/10/19(水) 08:39:32.63 ID:6gTxsH3U0
我々庶民が、小手先で小さいプログラムを作るとき
(必要あれば、毎回、1から作るので)
「再利用」とか、「可読性」とかないから
BASICとかで十分

グローバル変数万歳
238名無しさん@12周年:2011/10/19(水) 08:43:16.41 ID:YsA1SyGd0
>>237
C言語でグローバル変数使えばいいじゃん。
239名無しさん@12周年:2011/10/19(水) 08:49:56.69 ID:6gTxsH3U0
Cの嫌なところ

「**.h」をはじめとして、本体以外のファイルを追っかけないと
大事なところが見えてこない

{{{}}}}}が多すぎて、っていうか、めんどくさいから
コンパイラにかけて } の足りないのを教えてもらう
240名無しさん@12周年:2011/10/19(水) 08:52:58.69 ID:Z90lqyauP
>>239
そんなのJavaにくらべりゃマシ。
事実、IDEのサポートがないとJavaは使い物にならない。
241名無しさん@12周年:2011/10/19(水) 09:08:32.84 ID:YsA1SyGd0
何かさ、このスレ、
軽トラ(C言語)とフル装備高級車(後発のオブジェクト指向プログラミング、OOP)を
同列に比べているような感じがするね。
昔アセンブラしかなかった頃、Cのおかげで他システムへの「移植」という、
夢のような(?)ことが可能となり、その後随分経ってOOPが出てきたわけで。
アセンブラ時代でもマクロを駆使してOOP(的コーディング)している人いたけどね。
242名無しさん@12周年:2011/10/19(水) 09:16:20.93 ID:T4WBkh/KO
あくまでC言語は、アセンブラなどでゴリゴリとプログラムを書いていたような方々
(つまり、パソコン自体の仕組みや構造を理解していた方々)が手間を省くために
開発された言語であって、パソコンの初心者でも易しくプログラムを書けるように
作られた言語では全く無いからね。
243名無しさん@12周年:2011/10/19(水) 09:27:50.28 ID:hsALnbGM0
組み込みのC言語使い始めたころはアセンブラ出力を毎回確認してたなぁ。
K&Rからの移行期で良く間違ってたし割り込み処理が何サイクルになるか気になって。
if(式)の式で二項演算以上のことすると大体間違ってた。
White simith C。。。。
244名無しさん@12周年:2011/10/19(水) 09:31:40.24 ID:yFg50B4yO
>>236
OSが書けるというより、もともとOSを書くために作った言語だからね。

OS自身を記述するためには、物理アドレスを名指しで指定して
Read/Writeできる機能は絶対に必要だし、
それができない「安全なC」なんて自己否定もいいところだわな。
245名無しさん@12周年:2011/10/19(水) 09:33:04.53 ID:6gTxsH3U0
OSを書くために作った言語
に徹すればいいのに
普通のアプリからウイルスまで手広く作られてしまうのが実態
246名無しさん@12周年:2011/10/19(水) 09:33:45.80 ID:dmlI26Er0
chomp; chomp; chomp;
247名無しさん@12周年:2011/10/19(水) 09:42:15.99 ID:RU3SojEm0
Cだと大きなアプリが作れないと思ってるバカがたまにいるんだよな
C++やJavaを使えばそれが可能になると
んなわけねーよwバカはどんな言語使おうがせいぜい1000行ぐらいのアプリが精いっぱい
248名無しさん@12周年:2011/10/19(水) 09:43:36.28 ID:hsALnbGM0
>>165
RISCプロセッサってみんな実行中スレッドのメモリ上の命令書き換え禁止なんだよね。パイプライン制御が保証できなくなるから。
PAーRISCも同じ。
ところが本家のhp-ux kernelの中ではやってたのでびっくりしたことがある。
249名無しさん@12周年:2011/10/19(水) 09:43:46.70 ID:/lxzgWC00
プログラムの大きさを「行」で表現しちゃうところが…
250名無しさん@12周年:2011/10/19(水) 09:44:21.28 ID:YsA1SyGd0
今では、if 文の動作を信じて(信じてあたりまえなんだけど)
恐っろしい長文を、ブロック {} も使わずに書くヤツいるね。
1行の中に沢山詰め込む。特にアカデミック系。
そりゃ言語的に、そう書いても正しいんだけどさ、みたいな。
251名無しさん@12周年:2011/10/19(水) 09:45:59.14 ID:Z90lqyauP
>>244 >>245
OSはカーネルのみから成り立ってる訳じゃあないし。
UNIXのユーザランドの数々のコマンドも、ある意味Cの思想。
252名無しさん@12周年:2011/10/19(水) 10:07:59.56 ID:6gTxsH3U0
UNIXが流行らない理由は、どこまでがOSで、どこまでが「ユーザーのもの」なのか
切り分けが無いから。

アプリが動かなければカーネルを直そう!
253名無しさん@12周年:2011/10/19(水) 10:10:08.94 ID:6gTxsH3U0
120秒前の訂正 UNIX → linux
254名無しさん@12周年:2011/10/19(水) 10:57:31.12 ID:T4WBkh/KO
>>250
if(a == 1){
if(a == 1){ /*念のため*/
……


ifを完全に信用していない人が、本当にこんなコードを書いたとかw
255名無しさん@12周年:2011/10/19(水) 11:07:20.97 ID:bMK2asGy0
>>248
あるとすれば、キャッシュ・コヒーレンシーの問題。
インストラクション領域が変更されないことが保障されていれば、iCache の制御が若干、楽になだけ。
キャッシュがサポートして無くても、一旦、iCache を無効にすれば、問題ないと思うが。
特権モードでも書き込み保護される物理アドレスって、普通はないはずだけど。
DMA でしか書き込めないのか?
そもそも、MMU をパスしてると、テキスト領域とデータ領域の区別はないはずだし。

>>252
実際にそんな例があるのか?
Python みたいな複雑なプログラムでも、そのために Linux のバージョンが変わったなんて
聞いたことがない。
256名無しさん@12周年:2011/10/19(水) 12:05:44.11 ID:Z90lqyauP
>>252
UNIX/Linuxわかってないということはわかった。
257名無しさん@12周年:2011/10/19(水) 12:21:00.00 ID:gfTrlmPA0
(UNIX, C言語の始祖)Dennis Ritchieから学ぶべきこと
http://jp.techcrunch.com/archives/20111015what-can-we-learn-from-dennis-ritchie/
258名無しさん@12周年:2011/10/19(水) 12:21:17.71 ID:yFg50B4yO
>>255
キャッシュを無効にしてまでやるものじゃないわなぁ…
259名無しさん@12周年:2011/10/19(水) 12:21:47.40 ID:pPdVs62G0
>>235
そうそう、よく勝手に改造して遊んだw
260名無しさん@12周年:2011/10/19(水) 12:44:36.99 ID:lB+0Bb7+0
5スレ目まで読んで思ったこと
Pythonがこんなにメジャーだなんて知らなかった
261名無しさん@12周年:2011/10/19(水) 12:49:19.56 ID:tpcjLcqI0
むかしいた会社で、俺が新卒で無知だったのを知って、知識をひけらかしにきた先輩がK&R覚えた?とか聞いてきやがって、3年後自分が知識を持ったのちに、その言葉を振り返ると、今はANSIがほとんどだろとソイツにツッコんでやりたい
262名無しさん@12周年:2011/10/19(水) 13:01:34.87 ID:rZduodiM0
>>96
後から構造体を使ったとき、今までの努力はなんだったんだと思ったよ
構造体を使えば一々操作を書く必要がまったくない
できれば構造体のみでプログラムを書きたいぐらい
そこでプログラムの勉強を放棄したんだけど、また始めようと思ってる
このスレは再入門に本当に最適だから終わるのが惜しいな
263名無しさん@12周年:2011/10/19(水) 13:16:30.76 ID:Z90lqyauP
>>260
え、PythonはGoogleの3大言語のひとつだよ?
確かに日本ではマイナーだけど普通に使ってるプロは多い。
264名無しさん@12周年:2011/10/19(水) 13:19:37.48 ID:lB+0Bb7+0
>>263
すまんね、IT業界から離れて長いもんでのう(´・ω・`)
265名無しさん@12周年:2011/10/19(水) 13:32:00.19 ID:a40XOeJa0
>>257
やっぱり最初の原動力は「ゲームがしたい」だよなあw
俺がアセンブラに手を付けた理由もそれだった。
266名無しさん@12周年:2011/10/19(水) 13:40:14.64 ID:T4WBkh/KO
>>262
オブジェクト指向はご存知?少々語弊があるかもしれないけど、構造体のみでプログラムを書くという
発想がそれに近いと感じたから。
267名無しさん@12周年:2011/10/19(水) 14:29:13.85 ID:bMK2asGy0
>>258
書き込んだ直後に無効にするだけでいいよ。
一次キャッシュなんて、仮想アドレスでキャッシュしてたら、タスクスイッチで破棄されるんだから。
268名無しさん@12周年:2011/10/19(水) 15:59:59.74 ID:UYF0N9Ie0
>>255
>>252は完全に知ったかぶりのど素人の可能性が99%くらい、
あとの1%くらいは、ドライバを作ってる作業員。
どっちにしろかなりの低能。
269名無しさん@12周年:2011/10/19(水) 16:08:48.87 ID:kt+9HIhc0
>>222
ベーマガ廃刊したのか!!!!!!

270名無しさん@12周年:2011/10/19(水) 17:56:52.59 ID:LCbelJJQ0
確か、ざべって名前に変わってから廃刊したんじゃなかったっけ?
その昔、I/OとかRAMとかマイコン雑誌がいっぱいあったが、
曲りなりに残ってるのはアスキーだけか。
271名無しさん@12周年:2011/10/19(水) 18:32:26.72 ID:DpWNKbkG0
いや、ざべとベーマガは別物だろw
確かざべの方が先に休刊した覚えが
272名無しさん@12周年:2011/10/19(水) 18:42:37.23 ID:yFg50B4yO
C MAGAZINEとかUNIX USERとかUNIX MAGAZINEとか
以前はCやUNIX関連の雑誌が色々あったね。
273名無しさん@12周年:2011/10/19(水) 18:52:15.17 ID:/lxzgWC00
ざべはThe BASICだろ。

昔はフロッピーのプロテクト破りばっかりやってた。

後に「電脳曼陀羅事件」が起きる。
274名無しさん@12周年:2011/10/19(水) 18:57:50.86 ID:x27JpeVN0
>>234
文字列の連結したいときに、いちいち終端文字列探さないといけない。
275名無しさん@12周年:2011/10/19(水) 19:00:35.42 ID:x27JpeVN0
>>255
組み込み用途とかだと、アプリじゃ対応面倒なのは
カーネル弄っちゃえってのはよくある。Linuxに限らずだと思うけど。
276名無しさん@12周年:2011/10/19(水) 20:24:40.24 ID:DmpywIOn0
>>243
出始めの頃は、
コンパイラが悪いのか、
ICEが悪いのか、
ソースが悪いのか、
ターゲットが悪いのか、
マジでカオスだったw

ソースとターゲットは悪いのは当たり前だけど、
ICEが悪いってのを目の当たりにし、
毎回ダンプリストとにらめっこしてた事がある。
277名無しさん@12周年:2011/10/19(水) 22:11:43.82 ID:2BPzzK+u0
>>274
終端に突き当たったら処理を終わればいいだけで
あらかじめ長さの情報はいらないだろ。

というか高級な文字列型って文字列生成時に
長さの情報を付加する処理をしてるんだろ。
つまり先にやるかあとでやるかの違い。
しかも長さの情報がいらない文字列に対しても
その処理をしてるわけで全体の処理は遅くなる。
長さの情報を付加する分メモリーも余分に食う。
278名無しさん@12周年:2011/10/19(水) 22:19:51.57 ID:/PEDyvIL0
>>268
低能な奴がドライバ作っているのか?w
どこのWind(ry
279名無しさん@12周年:2011/10/19(水) 22:22:50.75 ID:HJIXP98b0
>>232
パイプ処理される時に、
長さを最初に知る事なんて、不可能。
280名無しさん@12周年:2011/10/19(水) 22:23:46.12 ID:/PEDyvIL0
>>260
Pythonはなかなか良いよ
読み易いし、ライブラリが充実している
アプリを組むだけなら、是非お勧めだ

但し、実行速度は遅いのでそっちで
シビアなものを作るならC/C++で十分
281名無しさん@12周年:2011/10/19(水) 22:26:00.17 ID:/PEDyvIL0
>>237
pythonお勧め
日本語がちょっと面倒だけどな
282名無しさん@12周年:2011/10/19(水) 22:29:30.78 ID:GYOoc9F60
>>277
文字列上を全て探索する場合と、別に長さ情報を持っておいて参照するのとでは計算量は違うよ。
前者は1つずつ比較していかなきゃならない。後者は割り当て時にその数値を記憶しておくだけだから総比較は最初から不要。

もちろん、それだけでどっちが優れてるかってことにはならないけど。

Pascalなんかは最初の要素に文字列の長さを格納していた。このため文字数に制限ができてしまうんだけどね。
283名無しさん@12周年:2011/10/19(水) 22:29:36.60 ID:/PEDyvIL0
>>158
その発想だと工業の分野はまったく成り立たない
工業、特に機械加工に関しては名人芸によって成り立っている
逆に名人が無くなれば、機械文明は終わる

自動車のボンネットをきちっと開け閉め出来るように
ハンマーでポンポン叩いて調整するようなことは
残念ながら機械には出来ない
284名無しさん@12周年:2011/10/19(水) 22:30:33.67 ID:CQNpeNxJ0
リッチーのスレなのに、スクリプト言語への勧誘が多いな
285名無しさん@12周年:2011/10/19(水) 22:34:49.83 ID:x27JpeVN0
>>277
char buf[1024];
buf[0] = '\0';
strcat(buf, "Hello");
strcat(buf, "World");
strcat(buf, "!");
こんな単純なコードでも、strcatの実行ごとに
1,6,11バイトの走査が行われる。
→処理速度が稼げない。
286名無しさん@12周年:2011/10/19(水) 22:41:38.40 ID:2BPzzK+u0
>>285
いや自作の関数使えばいいだろ
287名無しさん@12周年:2011/10/19(水) 22:48:54.47 ID:GYOoc9F60
どんなアルゴリズムでも、O(N)下回ることはないだろ。
特化したアルゴリズムとかはまた別の話。
288名無しさん@12周年:2011/10/19(水) 23:05:26.74 ID:MpD8kqHR0
286が言いたいのは、そこまで処理速度を気にするなら
文字列長で管理する文字列を自分で実装すればいいだろ、ということじゃないの?

賛成だ
もともとC言語の文字列操作なんてあってないようなものなんだから

Cが採用した文字列の方式は速度よりメモリ効率重視で、そのほうがC言語開発当時の実情では合理的だったんだよね
289名無しさん@12周年:2011/10/19(水) 23:10:34.56 ID:2BPzzK+u0
だいたいC/C++の処理が遅いって言うなら
なんで処理速度重視の場面で使われるんだよ。
効率の悪い連結の仕方をして効率が悪いって言われてもな。
290名無しさん@12周年:2011/10/19(水) 23:11:04.66 ID:Ovae3JZW0
>>235
ああ、大戦略だったかもしれん、あやふやでスマソ

でもK&Rってソウルでファンキーだよね。
こういうBGM感覚なんだよなあ。
最近だと、仕事ごとに言語とか環境とか違うけど
昔読んだ本とか思い出すといまでも震える。

いまプログラム始めたやつってそういう空気感性ってあるんだろか。
291名無しさん@12周年:2011/10/19(水) 23:14:33.95 ID:GYOoc9F60
>>289
何を言ってるんだ?とんちんかんだな
292名無しさん@12周年:2011/10/19(水) 23:16:54.47 ID:2BPzzK+u0
>>291
いやだからそもそもの発端が>>230>>232なんだよ
293名無しさん@12周年:2011/10/19(水) 23:17:46.44 ID:8Sv/LW9V0
Cに文字列なんてないよ、単なるchar型の配列だよ
そして配列はちゃんと長さ情報を持ってるよ
実際、sizeof( char[5] )はsizeof( char )の5倍のサイズだよ
ただ、配列は(K&R的に言うと)定数なので、
参照にポインタを使い、その時に減衰するから長さ情報がなくなるだけだよ
関数が減衰を無視して長さ情報を取得しないから
長さを利用した最適化ができてないだけじゃないかな?
実際、構造体に封じ込めて置けば減衰しないから、
変数をコピーしても長さ情報を利用できるよ

…っていうような話じゃないんだろうね^^
文字列リテラルにも長さ情報はあるけど、文字数+1なところが
直感的じゃない気はする^^
294名無しさん@12周年:2011/10/19(水) 23:21:15.88 ID:2BPzzK+u0
俺には>>230に対する>>232のレスの方がトンチンカンに見える
295名無しさん@12周年:2011/10/19(水) 23:21:52.03 ID:/PEDyvIL0
まあ、Cは高級化したアセンブラみたいな言語だしなw

コンパイラによっては、文字を変数宣言時に初期化しておくと、
コンパイラが自動的に文字数を定数として使ってmemcpyしてくれるのも
あった気がするけどな

10年以上前のことではっきりと覚えていないから自信はないが
296名無しさん@12周年:2011/10/19(水) 23:22:00.38 ID:GYOoc9F60
>>292
理解した。そのやりとりなら>>232の方が訳わかめだ。
297名無しさん@12周年:2011/10/19(水) 23:22:13.53 ID:Ovae3JZW0

そんなに難しく考えなくても
増分が指定されたラベルと考えれば、

って釣られてる?
配列表記は裏メニュくらいに考えとけばいいのではと。
298名無しさん@12周年:2011/10/19(水) 23:26:53.15 ID:3wb67lHX0
またポインタで揉めてんのか。懲りないねぇ。
299名無しさん@12周年:2011/10/19(水) 23:35:24.91 ID:crQLy2AO0
CとかC++とかパズルみたいで面白い
300名無しさん@12周年:2011/10/20(木) 00:10:02.12 ID:35i77Cia0
フィトンってタブで整形しないと動かないとか、単なる色物レベルの言語だと思ってたけど、実際はそうでもないのか。
301名無しさん@12周年:2011/10/20(木) 00:10:33.61 ID:HDT7RG7W0
int main (void)
302名無しさん@12周年:2011/10/20(木) 00:18:48.25 ID:Mc0UexLI0
おまいらKコンパイラのことは忘れたのか?
303名無しさん@12周年:2011/10/20(木) 00:24:54.85 ID:6gcVb/YH0
このスレッドだけスラドっぽいなw
愛すべきAnonymous Cowordだらけだぜ。
304名無しさん@12周年:2011/10/20(木) 00:45:05.82 ID:xojBzSbi0
kコンパイラで、どうしても円運動させたくて
配列にSINの値を1バイトの整数の表して書き込んで
三角関数のサブルーチンを作った遠い日の想い出が・・・・

305名無しさん@12周年:2011/10/20(木) 00:51:54.15 ID:6iRVIbkA0
>>285
http://codepad.org/1lrJAtu4
こんな感じでどう?
306名無しさん@12周年:2011/10/20(木) 02:09:20.82 ID:EG/qpx390
なんか game コンパイラを思い出した
307名無しさん@12周年:2011/10/20(木) 03:17:42.36 ID:nixqYseX0
>>278
WindRiverがどうしたって?
308名無しさん@12周年:2011/10/20(木) 05:22:25.37 ID:6m5Yxcmc0
>>305
この際これでもいいんじゃ?
http://codepad.org/yBo2l0M1
309名無しさん@12周年:2011/10/20(木) 05:28:06.94 ID:6m5Yxcmc0
310名無しさん@12周年:2011/10/20(木) 05:40:04.30 ID:6m5Yxcmc0
これでもっと早くなるのかな
http://codepad.org/0neN34IK
311名無しさん@12周年:2011/10/20(木) 06:30:09.58 ID:ZpggQXq60
>>305
これは駄目だろ。buf[1024]の範囲内で上手く動作しているが
付け加える文字数がbuf[n]のnを超える使われ方をしたら、どうなることやら。
312名無しさん@12周年:2011/10/20(木) 06:55:12.65 ID:6m5Yxcmc0
>>311
要はその辺はプログラマが管理する代わりに
効率を重視してるのがC/C++の利点なわけだよ。
だからそこを批判するのは的外れなんじゃないかなと。
プログラムが多少重くてもいいならJavaなりC#なりを使えばいいんだろうし
そうは行かない場合にC/C++を使ってるわけだから。
シビアな状況でJavaとかC#しかなければ困るだろって話。
313槍騎兵 ◆YARI3Eg7m6 :2011/10/20(木) 09:30:32.31 ID:ospbAbZ80
>>312
余計な機能をつけると遅くなるもんな。昔のCコンパイラとか8文字超えると無視されるとか、
日本語が通らないのでコメントも全部似非英語を使うし、ネストが8つ以上になるとスタックの限界で落ちるとか。
ハードの制約と併せて効率が重視されたわけで、色々と限界を見せつけられる仕様だったなw

その頃からとりあえず仕様通りに動けば問題ない、というイケイケ開発が主流だw
314名無しさん@12周年:2011/10/20(木) 11:14:27.38 ID:TmMVq/0V0
>>310
あーあ…やっちゃってるよ…18行目バグあり
bufがたまたまオール'\0'で初期化されてるかなんかだろうな
直しといた
http://codepad.org/uA17POaq
315名無しさん@12周年:2011/10/20(木) 11:56:09.36 ID:X+OzwbXa0
>>310
バグもあれだがそれinline展開できないだろ。
まあコンパイラに無視されるだけだが。
316名無しさん@12周年:2011/10/20(木) 12:30:58.65 ID:5NKd/CwQO
>>314
終端文字'\0'はmain()ではなく、strcat2()の中で追加しなくちゃいけないと思う。
317名無しさん@12周年:2011/10/20(木) 13:14:12.67 ID:0Vj/+zmh0
ポインタっていうのは定数にできないIOストリームのバッファポインタのときに
やむをえず使うものであって
それ以外のところでポインタを使うから訳がわからなくなる
こんな定数の連結は速度重視なら定数として最適化されてしまうべきだし
こんなサブルーチン記法のためにすぐポインタを使うのがCの犯罪といっていいと思う
318名無しさん@12周年:2011/10/20(木) 13:59:30.61 ID:Gcq4xvCZ0
>>317
ポインタを使わないとコンパイラが吐き出すコードが複雑になる
ポインタ自身がスタックポインタのような役割をしているから、
生成されるコードが非常にシンプルで速度を稼げる

Cの言語仕様がチープであるということが、速度を速めるということに
貢献しているわけだ
これ以上を望むならアセンブラでガリガリプログラムを組むしかない
それ以外は選択肢にすらならない

逆にPythonのようなスクリプト言語、LLなどが注目されるのは、
速度を必要としない簡単なプログラムであればCを必要ではないからだ
つまりニッチな需要に答えられた
それ以外のプログラミング言語も、結局C/C++の隙間を埋めるために
存在しているという状態になっている
319名無しさん@12周年:2011/10/20(木) 15:40:11.95 ID:NQlJj4fw0
形式的意味論みたいなのやってる先生もCより速いプログラムを書く言語を作るのは無理っていってまつ
320名無しさん@12周年:2011/10/20(木) 15:55:13.94 ID:q7akQney0
>>318
知っての通り、メイヤーのEffective STLには最高670%という実測結果を伴って
CのqsortよりもC++のsortの方が早い理由が示されている。従って、
「Cの言語仕様がチープであるということが、速度を速めるということに貢献している」
という説明には「プログラマがアーキテクチャに最適なコードを書いた場合」
というエクスキューズをつけるのがフェアだろうと思う。
javaのガベージコレクションについても同種の結果が示されている。

とはいえ、Cが最適化困難でライブラリがプアであることは罪ではなく、
現実との妥協の産物にすぎない。大概の言語はそういうものだ。
321名無しさん@12周年:2011/10/20(木) 16:23:09.21 ID:ry/34uyd0
>>312
よほど確保・解放の時間やメモリ制限を気にする場面(HTTPサービスとか構文解析みたいなの)
でない限り、C++ならstringやwstring使うよ
322名無しさん@12周年:2011/10/20(木) 16:43:53.08 ID:Slzkt0nL0
トークンセパレートやレキシカルアナライズでポンターのポンターは普通に使うんでねぇの?
CのOOPだと、ポインターのポインターのポインターと重箱のようだぞ!
323名無しさん@12周年:2011/10/20(木) 17:44:46.78 ID:8KvdgAPQP
>>318
もう10年以上も前からCのほうがニッチだと思うけど。
324名無しさん@12周年:2011/10/20(木) 18:15:09.72 ID:0bpdX/dJ0
>>316
そうだよな。>>314は、やってることがみみっちすぎる。部品化できないんじゃ、関数にするメリットがない。
325名無しさん@12周年:2011/10/20(木) 19:23:39.01 ID:X+OzwbXa0
>>314
もっと行数減らしといた
http://codepad.org/WFuQLSp4
326名無しさん@12周年:2011/10/20(木) 19:26:42.99 ID:X+OzwbXa0
buf2はいらなかった。
http://codepad.org/3UM9Rbyt
327名無しさん@12周年:2011/10/20(木) 19:41:49.93 ID:X+OzwbXa0
関数名も短くしといた。
http://codepad.org/lBlTXi58
328名無しさん@12周年:2011/10/20(木) 19:46:30.30 ID:X+OzwbXa0
329名無しさん@12周年:2011/10/20(木) 19:59:04.58 ID:sPoCQ8Bi0
意味がわからないような関数名、仮引数名をつけるのは悪
330名無しさん@12周年:2011/10/20(木) 20:02:41.77 ID:C8pZuNn80
一人でちょこちょこやる分にはなんでもいいんだよ
331名無しさん@12周年:2011/10/20(木) 20:22:33.94 ID:gD2JFweA0
>>314 >>325
変な書き方をすれば良いのか?

ttp://codepad.org/BdLlvscF
332名無しさん@12周年:2011/10/20(木) 20:23:28.22 ID:ayMLAfnn0
意味のないコードをどや顔で語られても・・・
333名無しさん@12周年:2011/10/20(木) 20:29:45.25 ID:0bpdX/dJ0
>>328
これって、*bが'\0'かどうかを最初に必ずチェックしなくちゃいけないんだから
http://codepad.org/fbiTcZb7
ってやればいいんじゃないの?
そうすればmain()で'\0'の代入しなくて済むし
334名無しさん@12周年:2011/10/20(木) 20:39:48.37 ID:sUvA5Pkf0
C++ならまだしも、C言語だとISO準拠の標準スタイルでは
プログラムの開始をmain関数とし、引数がない場合は
int main(void) と記述されてる。
C++だと int main() と記述されている。
335名無しさん@12周年:2011/10/20(木) 20:46:16.44 ID:izxVjy8G0
>>334
「パソコンマニアは冬眠しよう」の議論を思い出した。
mainは冒頭でなければ許されないのか、という話。
336名無しさん@12周年:2011/10/20(木) 21:10:06.44 ID:69ZDeo7P0
>>328
>>333
なぜおまえらはK&Rにもある由緒正しいwhile(*a++=*b++);をかたくなに使わないんだよw
リッチーのスレなのに
337名無しさん@12周年:2011/10/20(木) 22:22:28.61 ID:0bpdX/dJ0
>>336
それだと、Hello までしかコピーされない

可変個の文字列を繋げるようにしてみた
http://codepad.org/PSNQ9Q5y
338名無しさん@12周年:2011/10/20(木) 22:36:11.88 ID:izxVjy8G0
おまいら、ここはニュー速板だぞ。w
339名無しさん@12周年:2011/10/20(木) 22:39:22.12 ID:69ZDeo7P0
>>337
そんなの return --a;にするだけだろ

それよりか速度重視なら関数呼び出すときのスタックのオーバヘッドがもったいない
while(*a++ = *b++); a--;を並べてポインタにはregister修飾子をかませとけ
340名無しさん@12周年:2011/10/20(木) 23:52:16.40 ID:ry/34uyd0
inlineやconstを知らないとか、K&Rさえ読んでりゃおkな意見が見られるあたり、
C99まで使ってないか、よほど不勉強か、どちらかの人が多いんだろうなw
341名無しさん@12周年:2011/10/20(木) 23:57:47.86 ID:xojBzSbi0
なんでCって文字列をつなげるだけで3日もかかるんだろ
342名無しさん@12周年:2011/10/21(金) 00:02:19.63 ID:QpropdT70
文字列を順々につないでいくだけの処理をチューンアップして何が楽しいんだ。
さあ、コーディングの作業に戻るんだ。
343名無しさん@12周年:2011/10/21(金) 00:02:33.88 ID:rJzAjnk40
>>3

じゃあボインダの話題で
344名無しさん@12周年:2011/10/21(金) 00:16:05.30 ID:62/zRv8U0
むしろこのスレでK&R範囲外でやる意味がわからん
345名無しさん@12周年:2011/10/21(金) 00:18:09.39 ID:p0SKOD600
>>340
constはC99より前だろ。
346名無しさん@12周年:2011/10/21(金) 00:28:59.56 ID:SVfbR4UxO
つなげると言えばUNIXのパイプ機能。

sort,grep,sedなどの複数のコマンドをパイプで繋げて
目的となる操作を実施する事にはGUIとは違った快適さがある。
347名無しさん@12周年:2011/10/21(金) 00:39:30.71 ID:7qwsvPgu0
combination of small programsで目的の処理を果たすことが
UNIXの基本コンセプトのひとつだからね。まさに醍醐味ですな。
348名無しさん@12周年:2011/10/21(金) 01:43:30.71 ID:c9uxbv1d0
while(*a++ = *a--);
349名無しさん@12周年:2011/10/21(金) 01:50:14.47 ID:kMmRujWu0
Cが普及した理由の一つが、言語仕様で扱う範囲を小さくしたってことだろうな。
I/Oや数値計算といった基本的な機能も、標準はあるけどあくまでライブラリとして扱うことで
標準が使えないような環境にも適応できるようになってる。
350名無しさん@12周年:2011/10/21(金) 02:29:20.03 ID:GGW/2oSU0
LispやCは規格が決まる前の方が楽しかった
351名無しさん@12周年:2011/10/21(金) 02:39:11.39 ID:d3nyFyFh0
ポインタは、インスタンスを作らずにただオブジェクトを代入するとオブジェクトのように
ふるまう変数として扱えてしまい、オブジェクトではなくてクラスのようなものなのに、
そこらへんの区別が文法的にあまり明確じゃないし実に粗末な仕様の言語だよ
352名無しさん@12周年:2011/10/21(金) 02:44:36.25 ID:0CKEYodI0
Cは元々オブジェクト指向言語じゃないし
353名無しさん@12周年:2011/10/21(金) 02:58:35.21 ID:fxAMh/ud0
>オブジェクトではなくてクラスのようなものなのに
どういうこと?多分Java使いなんだろうけど・・・
C++使いの俺からするとクラスは型、オブジェクトはそのインスタンスと捉えてるから、
あんたの言いたいことがよくわからない、もうちょっと詳しく説明もらえるかな
354名無しさん@12周年:2011/10/21(金) 03:35:07.77 ID:zajiyLct0
OOPを盲信するあまり、何でもOOPで解釈しようとする奴っているよね
355名無しさん@12周年:2011/10/21(金) 03:54:17.84 ID:fxAMh/ud0
ぶっちゃけC/C++でポインタの理解に挫折してからJavaに行った人じゃないかと思うけどね
多分C++/Javaにおいて、クラスのメソッド呼び出しや参照からのアクセスが内部でどういうコードになるか
全く想像が出来ないんだろうな、内部的にはアドレス呼び出しによる間接アクセス無くては計算機は動かないというのに

逆にC++に挫折したC使いがC++のOOを、知りもせずに嘘八百で否定するのも簡便願いたいんだが、
ここで言うことではないか
356名無しさん@12周年:2011/10/21(金) 05:21:24.85 ID:U2UMhcjN0
>>336
ああ、あったな。すっかり忘れてた。
でもそれだと結局単語をつなげるたびに毎回
a++;b++,a--;って3ステップも余分な処理が入るんじゃないの。
357名無しさん@12周年:2011/10/21(金) 05:50:14.41 ID:U2UMhcjN0
ああでもよく考えたら
while(*a++=*b++); a--; の方は最後に a++;b++;a--;が余分だけど
while(*b) *a++=*b++; 最初に *b != '\0' の判断が余分なのか。
差し引き2ステップ?
358名無しさん@12周年:2011/10/21(金) 05:53:44.63 ID:U2UMhcjN0
まあわかるような差はでないなww
359名無しさん@12周年:2011/10/21(金) 08:41:27.49 ID:ZS0Q93Sx0
歩行珍煙は逮捕でいいよ
360名無しさん@12周年:2011/10/21(金) 09:13:10.14 ID:x1/qO1YS0
よくわからんが、高速に文字列の連結とかしたいのであれば、それに、適したデータ構造つくればいいんでないの?
実体へのポインタと長さか、実体へのポインタと終端へのポインタとかw
あと連結操作時に実体を移動、コピーしなくていいようにリンクリストつけとくとかw
頻繁に追加削除があるのか、生成のみなのか目的によって最適解は変わってくるが、cなら自由自在、おまいら得意だろw
361名無しさん@12周年:2011/10/21(金) 09:15:13.69 ID:GFLbuqWQ0
今の世の中、「小手先の速い」は不要で
それよりも「安全・確実」が求められていると思う
(forとかwhileとかも全部展開して、1本糞のようなプログラムが一番速いのは当然)

どうせ周辺機器とかネットとか、大半待ち時間なわけだし、
速さの追求は「もっと高い次元のアルゴリズムの改良」で
362896:2011/10/21(金) 10:04:59.06 ID:3d2dFI6v0
>>361
今の世の中ってひとくくりにするのはすごいな。
適材適所でしよ。
同じプログラムのなかでさえ、安全可読性重視と速度重視を使い分けるやつもいるよ。
363名無しさん@12周年:2011/10/21(金) 10:51:07.05 ID:7rBgTt+e0
カアニはんはお元気どすか?
364名無しさん@12周年:2011/10/21(金) 11:09:52.09 ID:uiFoL+o80
蟹飯のコメント有った?
365名無しさん@12周年:2011/10/21(金) 14:47:54.44 ID:0CKEYodI0
>>362
その通り
未だにC/C++のプログラミング多く、他の言語に置き換わらないのは需要があるから
速度の速いプログラムが求められる分野が非常に多い
ゲーム、組み込み系、通信・マルチメディアなどはC/C++から他の言語に移ることはあり得ないと
言っていいくらい安定した需要がある

Web系のように速度をあまり必要としないものにはCを採用する理由はない
C/C++以外の言語(例えばJava,C#,rubyなど)が出てきても、未だにシェアがNo.1で
揺るぎないのは何故かを考えればいい

あるいはこう考えてもいい

速度の必要としている分野は広範囲に存在する
だが、アセンブラではメンテナンスが大変だ
したがって、アセンブラの代替品としてC/C++を利用する
366名無しさん@12周年:2011/10/21(金) 15:09:20.53 ID:Gy62NXZX0
カーニはんは元気なのか?
367896:2011/10/21(金) 15:09:34.56 ID:3d2dFI6v0
>>365
c/c++?
cのみだろ。
368896:2011/10/21(金) 15:13:39.77 ID:3d2dFI6v0
安易にc/c++と書くのってどうなの?
特にこのスレで。
リッチーはC言語の父であって
c++は関係ない。
むしろ、リッチーの盟友がやってる
goというシステムプログラミング言語があるんだから、
c/goならまだわかる。
369名無しさん@12周年:2011/10/21(金) 15:22:11.06 ID:19iYr9loP
>>368
cとgoはだいぶ違うでしょ…

しかしgoもいまだにフリーフォーマット言語なのが解せぬ。
370名無しさん@12周年:2011/10/21(金) 16:39:15.93 ID:VzCEtyFJ0
>>368
トンプソンの B 言語があって、リッチーの C だからね。
C(4) -> go(5) で、語呂も合ってるし。正統な後継者だな。

でも、B が普及しなかったように、普及するためには、go の次世代言語の登場が必要かな。
371名無しさん@12周年:2011/10/21(金) 17:12:42.15 ID:wq7Kwhk00
>C(4) -> go(5) で、語呂も合ってる
え?/(^o^)\

C++は他のオブジェクト指向言語の登場で、
利用者数が世界的に減少傾向にあるね。
コンパイル最適化が難しく、Cほど低レベルでなく、
JAVAやC#ほどRADでなく…マシンの進化とコンピュータのコモディティ化で
何でもできるマルチパラダイムがだんだんアダに。
372名無しさん@12周年:2011/10/21(金) 17:29:36.67 ID:08YGbfA30
古い原著から...

main()
{
 printf("hellow, ");
 printf("world");
 printf("\n");
}

で、
main()
{
 while(1)
 {
  xxxx();
 }
}

この文がビギナーをことごとく駄目にしてきた。
時間のスライス表現の無い教科書をバイブルとしてきたことに問題有り!
UNIX創生者なのに、ディスパッチャーを彷彿とさせる表現にしなかったのはペケ!
373896:2011/10/21(金) 18:30:26.51 ID:LcdzPuS/0
>>370
goで書いたOSが普及すればいいんだよ。

Linuxのつぎがそれだ。
そしてまだ誰もやってないが、
Googleあたりが作ってるかも。
374名無しさん@12周年:2011/10/21(金) 22:24:31.66 ID:TJgwNrct0

まあなんていうか昨今OOPだから
若い奴はそこで思考停止してる自分が認識できてないだけだろうね。
375名無しさん@12周年:2011/10/21(金) 22:56:52.79 ID:nZHDqweMO
>>361
アルゴリズムを詳しく扱っている本ってあまり書店では見かけないような…
「車輪を再発明するな」というのは仕事の効率や能率の上では正しいのかも知れないけど
巧妙なアルゴリズムは、先人の知恵と工夫の結晶なんだよね。
中身を知らずに成果だけ使っているのは何か寂しい。

K&RがCのバイブルなら、The Art Of Computer Programmingはアルゴリズムのバイブル。
いつかは買い揃えたいと思っているのだが…
376名無しさん@12周年:2011/10/21(金) 23:08:09.75 ID:ubv2kKui0
>>375
今はデザパタだったり、得たい機能が最初からあったりするから不要になったと思われ。
構造化プログラミング時代の本を漁るしかない。

377名無しさん@12周年:2011/10/21(金) 23:17:16.92 ID:TJgwNrct0

デザインパターン = かつおぶし

間違ってはいないけど、袋に入ったフレークの由来に
想いを馳せれなければ、そこで道の終わり。
378名無しさん@12周年:2011/10/21(金) 23:43:10.72 ID:ubv2kKui0
>>377
職人の道としてはそれが正しいと思うけど、
今はその「フレーク」より前を考えないのが流行り、主流だと思ってる。
単純な「フレーク」ならその辺に転がってるのを使うだけ。

379名無しさん@12周年:2011/10/22(土) 00:05:19.53 ID:p/N2RHhe0
>>376
プログラミングという枠組みじゃなくて、工学という枠組みで見れば今でもアルゴリズムは有用だよ。
専門的になりすぎて、一般的なプログラマが扱う範囲を超えてるとは思うけどね。
380名無しさん@12周年:2011/10/22(土) 00:07:10.18 ID:cWD+ps4l0
デザインパターンとアルゴリズムは別物だが。
381名無しさん@12周年:2011/10/22(土) 00:07:15.83 ID:tn3WNNIP0
アルゴリズム?
真っ当なプログラムを書くなら今でも必要だろ。

でも今はそんなアルゴリズムよりイベントドリブンで入ってきたパラメータを
処理する手合いのプログラムが多いことは確かだ。
382名無しさん@12周年:2011/10/22(土) 00:10:03.86 ID:IsumldUV0
誰も書き込まなくなったな
このスレもCんと静まり返っている
383婆 ◆HKZsYRUkck :2011/10/22(土) 00:25:50.75 ID:gYEsLtui0
誰にレスするでもないけど、
「うまいアルゴリズム」と
「ちょっと気の利いたコードの書き方」とが、
混同されてる感じはあるよね。
つか、もともとシームレスなもんかも知れんけど

そういう意味では、たとえば>>381後半の
パラメタの仕分けなんかも、アルゴリズムっちゃ
アルゴリズムかと。
384名無しさん@12周年:2011/10/22(土) 01:01:40.69 ID:cDUojsmI0
>>379
同意。

今時は、プログラミングその物が目的じゃなくなってるから
そういう意味ではパクれる物を素早くパクって目的を達成した方が良いと思われ。

プログラミングその物が目的なら、より効率的なアルゴリズムの追求や、
コードの短縮化や小容量化で楽しめば良い。

昔はソートのアルゴリズムとか定番だったけど、
今はSTLだったり、メソッドで提供されるから話題にもならない。
385名無しさん@12周年:2011/10/22(土) 01:15:57.83 ID:p/N2RHhe0
それでもたまに基本的なアルゴリズムを自前で組むような場面はあって。

まぁソート機能くらいならネットを参考にすればすぐ組めるんだけど、
なんでバブルソートなんか参考にするんだよってのはよくある。
しかも、この道10年のプロとかで。
386名無しさん@12周年:2011/10/22(土) 02:44:00.17 ID:cDUojsmI0
>>385
この道10年とドヤ顔する事と、クイックソートは関係無いと思われw
387名無しさん@12周年:2011/10/22(土) 03:15:52.55 ID:cmLSmnl20
>>384
個人的には、その「パクれる物を素早くパクって」って言い方、日本人プログラマの悪いとこだと思うんだよなぁ
誰か、あるいは先人がフリーでアイデアやコードを公開してくれたからこそ、知恵を借りられるわけで。

じゃあどういう言い方すべきかってーと、「ぐぐれ」「車輪の再発明をしない」とかかな
今は目的も多様化されてるし専門外のことをやることも多いから、
細かいテクニックにこだわるより「必要な情報を調べて見つけ出す能力」の方が大事だ
ただその一方で、こだわる場面ではこだわって、また可能な範囲で知識を独占せず公開していくことも
日本のIT業界の発展には必要だと思う
388名無しさん@12周年:2011/10/22(土) 09:36:00.05 ID:YBBcynlK0
全然分野の違うことなのに比較しても仕方がないだろ。
アルゴリズムに精通してる人が、長期的な保守性や可変性を考慮した
ソフトウェアアーキテクチャなどに精通してるとは限らない。

あと他人が既に作ったものは遠慮なく使わせてもらえばいい。
全部自分で作るやつなんていないだろう。CPUから全て自分で生産しないだろ。

アルゴリズムだって自分で編み出すよりも、普通はすでにあるものを使うはず。
それがコピペだろうと自分でコードを組むのだろうと、
クイックソートやバブルソートのアルゴリズム自体は既成の発明品だろ。
クイックソートやバブルソートを再発明しても仕方ないだろ。
389名無しさん@12周年:2011/10/22(土) 09:51:42.33 ID:RZvZqjB60
結局すべてパクリでいいんだよ

実績があるものを使う方が
「最新」より安心だから。
390名無しさん@12周年:2011/10/22(土) 10:21:25.88 ID:1vEETed40
25年前にc言語とアセンブラの組み合わせをマスターできたことが今の自分につながっている。

その後、何社か渡り歩いて、直接のソフト開発からは離れたけど、比較的楽な仕事で年収4桁万円をキープできて、子供も二人育てられた。

K&R本も含めて大量の技術書は実家の一部屋においてあるが、子供には迷惑をかけたくないので、いずれ処分するつもり。
でも、K&R本や初期のMacTutorなど捨てられない本は、いつか読み直すために、いずれ自炊する予定。

dmrさん、c言語をつくってくれてありがとう。
391名無しさん@12周年:2011/10/22(土) 11:48:54.57 ID:j9oU3mPw0
プログラミングも韓流だよね。
392名無しさん@12周年:2011/10/22(土) 12:26:42.49 ID:g3TaBKHH0
>>391
もちろんそのとおりです。K&RのKはKoreaのことです。
393名無しさん@12周年:2011/10/22(土) 12:54:18.72 ID:6r6r25B10
>>368
C++はCのスーパーセット
元々Cにオブジェクト指向の機能を持たせようという
目的で作られた言語だから、Cから派生したjavaなどとは
ちがって、Cとしても使える

言語としては異なるが、リッチーの作ったCを完全に
含んでいるし、「より良いC」という位置づけもある

C++プログラマにとってはこういういい方は面白くないのかもしれないが、
C++はCの部分が無くなれば価値のない言語になるのも事実
394名無しさん@12周年:2011/10/22(土) 13:01:16.25 ID:6r6r25B10
>>389
パクリは悪くない
だが、パクった内容を理解できなければ意味がない

例えていうなら、

「幾何学で証明する必要はない。だが証明する能力は必要である」

みたいな物だな
「三平方の定理を証明する必要はなくても、証明する能力は必要みたいな感じ

プログラミングで言えば、「人の作ったプログラムをコピペ」するのではなく、
「真似て自分で作れる」能力は必要
そういう意味でならパクリは大いにすべきだろう
395名無しさん@12周年:2011/10/22(土) 13:26:18.43 ID:98B+cbD40
三平方の定理ぐらいなら証明できていいかもしれんが、
もっと高度な数学になったら、利用するだけでもいい。

あらゆる分野をマスターするのは不可能だよ。

コンピューターを利用するのに、CPUの細かい挙動なんて知らなくていいのと同じ。
そんなものアセンブリや機械語でプログラムできるやつでも完全に理解してないだろ。
396名無しさん@12周年:2011/10/22(土) 13:39:57.71 ID:6r6r25B10
もちろん全てを理解する必要はない
本当にそれをやろうとしたら、チップの中の電子回路まで理解しなければならなくなる

だからと言って、イベントドリブンなプログラムをパーツで組み合わせるだけの能力だけで
プログラミングの全てを語ることも出来ないだろう

耳鼻科の医者がすい臓の知識を一切勉強しなくてもいいということがないように
ある程度の知識は必要になる

更に言えば、丸暗記した知識というのは応用が効かない
理解した知識は柔軟に対応するのに役立つ
397名無しさん@12周年:2011/10/22(土) 14:56:37.61 ID:RKISJNfn0
分野にもよるよね
ウチは計測機器の開発やってるから、ソフト部隊といえど
回路図みてオシロあてたり、ロジアナでタイミングみたりはできてほしい
ソフトを組む上でのハードの不具合は、あたりぐらいはつけられるのが望ましい
398名無しさん@12周年
アマゾンだFacebookだって世界で一番上のレイヤーばかり取り上げられるからハードとソフトが一緒に進む組み込みとか制御を知らない層がいるのもしょうがない
そういう人は下のレイヤーは完全なんだから知る必要が無いと思ってしまう