X



「Cでプログラミングするには人生は短すぎる」か?
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん垢版2011/02/01(火) 00:02:54
Monoプロジェクトの公式発表ではないが、その主導者であるミゲル・デ・イカザ氏の言葉として、
「Cでプログラミングするには人生は短すぎる」という標語が掲げられている。
http://bit.ly/fJCXb0
0003デフォルトの名無しさん垢版2011/02/01(火) 00:49:33
CでGC機能のあるライブラリは作れないのか?
 → アセンブラで書いてリンクすればできる。

CでOOな設計は出来ないのか?
 → 構造体でいいだろ。

Cで名前の干渉のないようにできるか?
 → それなりの長い名前をつければ問題ない。

なぜCで超便利で現代的なライブラリを用意してくれない?
 → わからん。標準ライブラリにこだわる必要もないのにね。

Cでプログラミングするには人生は短すぎる。
 → むしろ、なぜそういう境遇に追い込まれてるんだろう?
0005デフォルトの名無しさん垢版2011/02/01(火) 02:37:45
全部Cでやろうとするから無駄な時間を浪費してしまう。
台部分は生産性のいいOOP言語で作り、時間がかかってしょうがないところだけCで書けばいい。
柔軟に考えれば解決策はいくらでもある。ミゲルさんは頭が固いだけ。
0007デフォルトの名無しさん垢版2011/02/01(火) 05:37:08
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                  京都大学霊長類研究所
0008デフォルトの名無しさん垢版2011/02/01(火) 07:07:43
と言いつつGTK+をCで書くミゲールさん
0009デフォルトの名無しさん垢版2011/02/01(火) 07:30:26
C + アセンブリ言語で十分高い生産性を維持できる。
0012デフォルトの名無しさん垢版2011/02/01(火) 19:04:22
phytonのGTKならええの?
0015デフォルトの名無しさん垢版2011/02/01(火) 20:49:46
>>14
いや、そういう意味じゃなくて

>>11 の発言を受けて >>12 の返しなんだよね

>>11 は GTK+ というライブラリそのものを C で書く話だから、
その返しとして >>12 だったら、もしかして >>12 は phyton の GTK は
phyton で作られていると勘違いしているのかなと思って
0016デフォルトの名無しさん垢版2011/02/01(火) 22:48:36
強烈すぎる
0018デフォルトの名無しさん垢版2011/02/02(水) 00:54:28
いやBoo言語の出番に違いない
0020デフォルトの名無しさん垢版2011/02/02(水) 01:33:17
>>19
phpの亜種
0021デフォルトの名無しさん垢版2011/02/02(水) 01:40:20
これはなかなかだね
0024デフォルトの名無しさん垢版2011/02/02(水) 10:47:28
C言語に固執している奴は馬鹿
エコじゃない
0025デフォルトの名無しさん垢版2011/02/02(水) 14:28:23
無駄なメモリを使わず、遅いCPUでも速く動いてくれる言語はエコだろう。
もし世の中のサーバで動くソフトが全部Cで書いてあったら何台のサーバが不要になるか。
0027デフォルトの名無しさん垢版2011/02/02(水) 16:17:54
開発者が消費する熱量
 v.s.
サーバーが消費する熱量

だれか糞真面目に分岐点を出せ
0028デフォルトの名無しさん垢版2011/02/02(水) 19:24:00
>>25
リアルタイムで搭載CPUを調べて、レジスタ数やサポートしている拡張命令などに
ガチガチに依存したネイティブコードを生成するJITコンパイラの方が未来はある。

.NETもVC++比で、その差4%程度まで来ているし抜くのも時間の問題。
C言語自体もclangで中間コード/JITコンパイルの方向に進んでいるし。
0031デフォルトの名無しさん垢版2011/02/02(水) 20:43:23
当たらずとも遠からずってやつだろ。COMのインタフェースとか構造体で表現してるだろ、あれ。
0032デフォルトの名無しさん垢版2011/02/02(水) 21:39:11
GNOME完成しそうにない宣言
0033デフォルトの名無しさん垢版2011/02/02(水) 23:34:59
>>3の上3つを掲げ、4つ目のごとく標準ライブラリ(GTK)を作り続けた結果が、5つ目もとい>>1
0034デフォルトの名無しさん垢版2011/02/02(水) 23:36:10
ようするに>>3が全て。
俺にはほど遠い世界。
0035デフォルトの名無しさん垢版2011/02/03(木) 01:04:33
プログラムと呼べるのはCぐらいなもんだろ。
JAVAやC#は女子供のお遊びみたいなもん。アセンブリは知らん。
0036デフォルトの名無しさん垢版2011/02/03(木) 01:06:16
心ではみんなそう思ってるだろ。大声では言えないだけで。
0039デフォルトの名無しさん垢版2011/02/03(木) 03:42:41
>>28
clangは俺も期待してるが、まだCとObjective-Cくらいしか動かないからこれからだね。
多くの人はAjax環境とかPHP、Rubyなんかの遅いものばかり使ってるからね。
Ruby->clangだったら楽できそうなんだが。
0041デフォルトの名無しさん垢版2011/02/03(木) 09:30:16
適材適所
それこそシェルスクリプトで十分な超簡単なものをC言語で
書いてれば時間が無くなるのは当然。
0042デフォルトの名無しさん垢版2011/02/03(木) 13:12:14
この短い人生では、あんなめんどくさい言語やってる余裕はないっす。
strcpyとか今更勘弁してほしいっす。
0043デフォルトの名無しさん垢版2011/02/03(木) 15:06:33
仕事ではUNIX Cで開発している。
で、部分的には(擬似的な)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を選択し続けることが
はたして正しいのか?(他の言語はどうよ?)、が検討課題だったりする。
0045デフォルトの名無しさん垢版2011/02/03(木) 21:01:30
衰退してしまったSmalltalk
衰退しつつあるRuby
言語が崩壊してしまっているC++
中途半端な仕様になってしまったJava
0049デフォルトの名無しさん垢版2011/02/03(木) 22:38:30
昔、テキスト処理するツールをCでひーひー言いながら書いたことが何度かある。
今はPerlでもPythonでもRubyでも軽々動くからな。本当にいい時代。
0050デフォルトの名無しさん垢版2011/02/03(木) 22:44:23
適材適所を知らんバカと、ITメディアや@ITあたりの記事に踊らされて
流行の言語()とか乗っちゃってるバカ。
0053デフォルトの名無しさん垢版2011/02/04(金) 01:13:44
何故に、Smalltalkなんかで製品を実装したのか小一時間問い詰めたい
Smalltalkって処理速度どうなの?Javaと比べてどんなメリットがあるんだ
Javaですらも、NaClがまともに動き出したら、消えてしまいそうな気がするけど
0054デフォルトの名無しさん垢版2011/02/04(金) 01:42:22
30 年前ならいざ知らず、LL 全盛の現在では Smalltalk の開発効率の高さは
相対的に低下してしまったと思うな。それでいて、イメージベースの扱い辛さとか、
GUI と結びつきが強すぎるとか、最適化がし辛いとか、負の面は変わってないから
ちょっと使い辛い。

Lisp みたいに Hacker 気質を持ったプログラマを惹き付ける様な事もないし。

>>53
超対話的環境だから、プロトタイプが作り易い。
0055デフォルトの名無しさん垢版2011/02/04(金) 11:48:47
だからってC#は変態すぎると思うんだ
0056デフォルトの名無しさん垢版2011/02/04(金) 14:00:43
>>53
> 何故に、Smalltalkなんかで製品を実装したのか小一時間

SeasideやCroquet(先のDabble DBやTeleplaceが使っている変態FW)を
Smalltalk以外のまともな言語で組んでみたらどんなことになるのか
逆に、興味がわくな。
0059デフォルトの名無しさん垢版2011/02/04(金) 19:01:47
いや、だからまともなFWじゃできないことってなんなのよ
まともなFWでは物理的に不可能ってわけじゃなければ、
普通は変態FWの仕組みをまともFWに取り込むことを考えるでしょ
0062デフォルトの名無しさん垢版2011/02/09(水) 22:11:56
Javaてsunがjreを配布しなくなったら即おわってしまうね。
Cはどこがつぶれようとコンピューターがあるかぎり永遠に続くよ。
0064デフォルトの名無しさん垢版2011/02/09(水) 22:28:13
C++で使いやすい部分だけ使えばいいじゃない。
0065デフォルトの名無しさん垢版2011/02/09(水) 22:45:44
>>62
は?JREって、色んなとこが出しているんじゃないの?
ってか、せっかくデファクトになったのに、
無料配布しないと競合する.NETが広まるだろうし
オラクルだって金を取りたくても取れないでしょ
0066デフォルトの名無しさん垢版2011/02/09(水) 23:17:07
だからその色んなところがつぶれたら終わるでしょう。
0069デフォルトの名無しさん垢版2011/02/10(木) 00:08:22
おおもとのsunがjreやめたら、色んなとこもいずれ皆javaをやめるだろ?
0070デフォルトの名無しさん垢版2011/02/10(木) 00:29:42
>>69
Apache Foundation が何をやっているかとか、IBM が何をやっているかとか、
GCC や LLVM がどうなっているかとか、Dalvik って何だろうとか、
Open JDK とは何なのかとか、Bluray プレーヤーに何が乗っているのかとか、
少しでも調べる気はないの?
0071デフォルトの名無しさん垢版2011/02/10(木) 00:56:11
じぶんもそんなに知らないくせに偉そうに書きなさんな。
0072デフォルトの名無しさん垢版2011/02/10(木) 01:01:03
相手も知識が無いかもしれないから自分も知らないで良いと思い込む人間と、
知らない事があったら調べようと思う人間は、何が分かれ道だったんだろうなあ
0073デフォルトの名無しさん垢版2011/02/10(木) 02:14:44
と さらに知ったかぶりをしてみると。
0075デフォルトの名無しさん垢版2011/02/10(木) 03:08:53
Javaが無くなったら食いっぱぐれる連中を
からかってるだけだって。
そんなムキになんなよ。
0080デフォルトの名無しさん垢版2011/02/10(木) 19:57:05
実際は Java は現実を指向した言語で、現実に広く受け入れられている言語でもある。
勿論、現実と言うのはネットに住まう有象無象じゃなく産業界の話だがな。
0086デフォルトの名無しさん垢版2011/02/11(金) 03:34:35
てんでバラバラな仕様のため、互換性がまるで無い組み込み界で
相互の移植がしやすい言語を、と開発されたんだっけ?
0088デフォルトの名無しさん垢版2011/02/11(金) 10:51:26
VMって言っても元祖MS-BASICのパクリみたいなもんだからな。
MS-BASICでさえROMに格納されてたくらいだし、今となってサイズなんて知れてるわな。
http://ja.wikipedia.org/wiki/Microsoft_BASIC
0090デフォルトの名無しさん垢版2011/02/11(金) 11:22:49
>>89
そもそもどこまでを組み込み系って言ってるのかわからんし、
ソースコードの量なのか組み込まれている実行コードベースの
話かも示さずに1割云々と語ってるやつのほうがバカに見える。
0091デフォルトの名無しさん垢版2011/02/11(金) 11:27:11
>>89
組込ライセンスと意味なら、Java使ったサーバーサイドのシステムが1つ売れる間に数千数万のケータイが売れてると思うよ
0092デフォルトの名無しさん垢版2011/02/11(金) 11:53:22
>>88
MS-BASICよりもっと古いp-codeのパクリ。
p-codeになったのは、Visual Basicになってから。
というか、スタックマシンをパクリって言うやつまでいるのか。
0093デフォルトの名無しさん垢版2011/02/11(金) 13:44:15
>>92
なにを言ってるんだお前は?
無知にもほどがある
0095デフォルトの名無しさん垢版2011/02/11(金) 21:23:59
>>93>>94
MS BASICはエミュレータ+インタプリタだからな。
JavaのVMに似てはいるが、Javaそのものと言うよりはJRubyなんかに近い。
0097デフォルトの名無しさん垢版2011/02/11(金) 23:30:21
MS BASICのi8008エミュはVMはVMでもVMwareとかのノリだし、
単語は同じでも「仮想マシン」の意味が違うだろ。

Javaが目指したJavaチップを順序は逆だが実現していたという
意味では先進的だが。
0098デフォルトの名無しさん垢版2011/02/12(土) 00:45:21
>>96
俺もそう思うけど、世の中の若人は Smalltalk なんて知らないのかもね...

もし若人でないのに知らないなら目も当てられないけど...
0102デフォルトの名無しさん垢版2011/02/12(土) 07:44:46
ただの中間コード+インタプリタを'Java仮想マシン'と言い張ったJavaの営業戦略は大したもの
0104デフォルトの名無しさん垢版2011/02/12(土) 08:24:38
>>103
技術センスゼロの人にもわかるように違いを説明できるの?
0106デフォルトの名無しさん垢版2011/02/12(土) 09:07:01
VMはインタプリタだろ。少なくともネイティブコンパイラではないし、ネイティブコードを実行するものでもない。
Java CPUはほとんど使われてないだろうし、一般的でもない。
0107デフォルトの名無しさん垢版2011/02/12(土) 09:13:07
「ランタイム」と言えば角が立たない
0109デフォルトの名無しさん垢版2011/02/12(土) 13:09:58
JavaチップだのJITコンパイラだのは後付けのだからねぇ。
インタプリタ高速化技法のひとつとして考えた方がいいと思うぞ。
とくにJavaのJITは起動時ではなくインタプリタで実行中に裏でコンパイルするというものだし。
0110デフォルトの名無しさん垢版2011/02/12(土) 13:33:25
PHP3まではインタプリタ、PHP4からはPHP仮想マシン
ok?
0112デフォルトの名無しさん垢版2011/02/12(土) 13:53:14
BASICとの比較のコンテキストでインタプリタといったら、ソースコードと中間コードが同値という意味か、コンパイラの反対語か。
0113デフォルトの名無しさん垢版2011/02/12(土) 15:03:27
予め用意されたマシン語の命令セットを実行するのと、その場でソースをマシン語に翻訳して実行するのの違いじゃない?
0114デフォルトの名無しさん垢版2011/02/12(土) 15:13:43
>>111
中間言語をネイティブに変換してから実行するのが仮想マシン
インタプリタは、中間言語を使わず、ソースコードのまま
毎回命令を解釈してから実行するもの
0116デフォルトの名無しさん垢版2011/02/12(土) 15:19:26
>>114
じゃあ、Java VM はどちらでもないの?

中間言語は使うが、実行中に必要な部分だけ
(ロードされた部分だけ)ネイティブに変換する
0118デフォルトの名無しさん垢版2011/02/12(土) 17:11:43
プ
0119デフォルトの名無しさん垢版2011/02/12(土) 18:02:24
>>114
その定義だと、やはりPHPはPHP仮想マシンだなw
0120デフォルトの名無しさん垢版2011/02/12(土) 18:03:49
>>117が一番しっくりくるな
0121デフォルトの名無しさん垢版2011/02/12(土) 19:19:27
Pコードインタプリタって仕様をもらって、自分でコンパイルしたプログラムを手で実行したことがあったなぁ。
0122デフォルトの名無しさん垢版2011/02/12(土) 19:46:06
仮想機械の仕様さえ満たせば
インタプリタ実装しようが
コンパイラ実装しようが
ハードウェア実装しようが
同じバイトコードが動く。

インタプリタ実装するにしても、
ベタなインタプリタでもいいし、
JITコンパイラ使ってもいいし、
複数の仮想機械で分散処理してもいい。
あくまで仮想機械の仕様さえ満たせば
コードを動かせる。

それが仮想機械じゃねえの?
0123デフォルトの名無しさん垢版2011/02/12(土) 21:47:35
N88BASICのDOS版ってたしかPコードとJITコンパイラだったはず。
今みたいにインストールなんて概念がなく、
EXEファイルにJITコンパイラを埋め込む仕様で
ファイルサイズが絶望的なほどでかかった記憶がある。
0126デフォルトの名無しさん垢版2011/02/13(日) 22:54:39
>>125
人間なんだから少しは工夫しよう。今ならマクロ使えばCに近い書き方ができるし、
使いやすいライブラリを多く用意してそれらを活用すればだいぶ見やすく書ける。
0127デフォルトの名無しさん垢版2011/02/13(日) 23:02:27
>>126
昔は実際そうだったな。
今なら、そんなことするぐらいならC使って、パフォーマンスいるところだけグリグリやるところだけ。
0130デフォルトの名無しさん垢版2011/02/14(月) 01:08:30
>>1
プログラミングをソフトウェアを生み出す為のプロセスとして捉えたらその通りだけど、
プログラミング自体が楽しいなら言語は何でも良いし、どれだけ時間が掛かっても良い。
なぜならプログラムを書く事自体が目的だから。
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
俺は設計よりコーディングの方が好き、
ステップ数が少なく機能的なコードを書くのが楽しい。

まぁ現状は理想論になりつつあるけど。。
0142デフォルトの名無しさん垢版2011/02/15(火) 22:03:19
俺はコーディングしながら考えるタイプだから清書って感覚はないなあ
むしろ俺言語でいいからコードっぽいものに起こさないと
思考が遮られてはかどらないや
0146西野圭吾 ◆MBzg6vmZNmjx 垢版2011/02/16(水) 05:10:49
あと少しで人生の終点。
0151デフォルトの名無しさん垢版2011/02/16(水) 12:22:07
>>149
1.よし!作ろう
2.作るために、「使いやすく、開発効率のいい言語」を探す
3.「そんなものはない」事に気が付く
4.1へ
0152デフォルトの名無しさん垢版2011/02/16(水) 12:42:56
1.よし!作ろう
2.作るために、「使いやすく、開発効率のいい言語」を探す
3.何とか使えるのを探して作り始める
4.出来上がったら、不満があるところを改良していく
5.最初の目的が達成されたら公開する
だろ
0155デフォルトの名無しさん垢版2011/02/16(水) 13:16:54
不便で生産性が悪いから改良するんだろ。
日本人は器用だから使いにくい道具をなんとか使いこなしてしまうが、西洋人は先に使いやすい道具を作る。
道具がいいと生産性が高くなるし誰でも使えるから生産コストがうんと下がる。
器用なことが必ずしもいい結果にならない。
0164デフォルトの名無しさん垢版2011/02/16(水) 18:06:38
置換が必要なアプリだと、簡易的でもGCか賢いコンテナがないと
ヒープメモリがズタズタになってメモリリークしまくりとか。
0165デフォルトの名無しさん垢版2011/02/16(水) 18:20:18
>>163 クソコードだけど。
#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:03
fprintf(stderr, "%s\n", emsg);
free(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:46
int replace(unsigned char *dst,
const 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;
0172デフォルトの名無しさん垢版2011/02/16(水) 20:13:31
つまり数字が連続している文字列を [number] という文字列に変換するってことか?
PerlやRubyでも-peとかやったら1行になりそうだ
sedならむしろ2行以上に伸ばすほうが面倒だな…w
0173デフォルトの名無しさん垢版2011/02/16(水) 20:23:32
正規表現だけではなく、Cではリストやハッシュ等のコンテナがないので、せっせと実装することになる。
0174デフォルトの名無しさん垢版2011/02/16(水) 20:24:51
ハッシュ関数も自前で用意する事になるが、数学的に周期が短い関数になると、値が偏るので注意しないといけない。
0175デフォルトの名無しさん垢版2011/02/16(水) 20:27:14
ANSIには浮動小数点を文字列に変換する関数もない。
printfを使うと速度的に遅いため、高速な変換関数を用意する必要がある。
0176デフォルトの名無しさん垢版2011/02/16(水) 20:28:26
ANSIのソート関数は、比較関数のオーバーヘッドが大きいため、クイックソートやマージソートを必要に応じて実装する。
0177デフォルトの名無しさん垢版2011/02/16(水) 20:30:03
ANSI Cには標準的な機能が定義されていない。スレッドや排他処理、共有メモリ、GUIなどの現在のOSでは当然に使えるものの大半が、機種依存コードになる。
0178デフォルトの名無しさん垢版2011/02/16(水) 20:35:37
Cには、メモリ開放を忘れるリスクと同時に、解放後のポインタにアクセスしてしまうリスクがある。
ポインタが適切な位置を指しているかは、コンパイラはチェックしない。
0182デフォルトの名無しさん垢版2011/02/16(水) 21:01:25
最近はJavaからスクリプトを実行できるから面白い。
ある種開き直ったテンプレートエンジンとして使えるな。
0184デフォルトの名無しさん垢版2011/02/17(木) 00:27:07
>>1のGLib作者みたいな人と一般PGでは認識が違うのは当然
0185デフォルトの名無しさん垢版2011/02/17(木) 15:51:25
スクリプトやJava等は、結局環境に応じた実行環境をネイティブ言語で書いておかなければならない。
所詮他の言語が存在しないと役立たずの分際で、デカイ顔してるんじゃないよ。
0186デフォルトの名無しさん垢版2011/02/17(木) 16:48:56
UI自体が言語だった時代には、Cとshなど複数言語が存在するのが当然だった。
GUIのせいで単一の言語にこだわる人間が増えた。

Cでプログラミングするのは何の問題もない。
問題は単一の言語にこだわることだ。
Cをよく知っている人はむしろこだわらない人の方が多い。
0189デフォルトの名無しさん垢版2011/02/17(木) 22:42:28
>>187
iPad のソフトウェアキーボードを触らせてもらった事あるけど、使い易かったよ

ガシガシ入力するなら Bluetooth のキーボードを使うんじゃないかな
文字を入力する必要があるのはプログラマだけじゃないし
0194デフォルトの名無しさん垢版2011/02/18(金) 12:35:15
Macの超絶クソなアイソレートキーボードより、iPadのソフトキーボードの方が使いやすいくらいだしなw
0196デフォルトの名無しさん垢版2011/02/19(土) 17:24:39
>>3
そもそもcはランタイム支援のない環境でインフラを
構築するために作られた言語。
基礎が整った環境でcを使うなとk&rやlinusも
言っている。
目的を達成できるならshellやら
出来るだけ抽象的なものを使うべき
0197デフォルトの名無しさん垢版2011/02/19(土) 17:26:57
昔は crt って無かったのかな

C は C で進化してるんだよね
次のスペックではマルチスレッドも採用されるみたいだし
0198デフォルトの名無しさん垢版2011/02/19(土) 17:36:10
>>28
C++の肩持つ訳じゃないが4%ってどっから出てきた数字だ?
テンプレ関数+スタック変数 (C++)
vs
オーバーライド+new (C#)

だと10倍近く差が出たんだがな。
0200デフォルトの名無しさん垢版2011/02/19(土) 17:46:41
>>66
vb6何て死んだも同然だけど
いまだに使われてるよな。
32bitのサポートが終わったら完全にしぬだろうけど。
0202デフォルトの名無しさん垢版2011/02/19(土) 17:53:15
>>199
ベクトル(線形幾何)演算やってると悲惨だぞ。
使うであろう座標、ベクトル、行列をstaticにするなり、
配列に集めるなりしてあらかじめ確保しとかにゃならん。
0204デフォルトの名無しさん垢版2011/02/19(土) 19:06:35
軽佻浮薄に流行を追いかけるチャラ男よりも、一本芯が通った時代遅れ。
それでいいじゃないか。
0208デフォルトの名無しさん垢版2011/02/19(土) 19:55:15.80
>>202
スタックフレームを自作するとかな。
ベクトル用スタックフレーム
行列用スタックフレーム
四元数様用スタックフレームと。
それぞれあらかじめ30個位インスタンスぶちこんどくんだ。
あれ?これってC++の方が楽じゃね?
0210デフォルトの名無しさん垢版2011/02/20(日) 05:43:23.73
でもまあ、Cでのマルチスレッドとか、ずいぶん前から、APIとしてほぼすべての環境にあったし。
というか、マルチスレッドを言語の機能にする方が間違ってると思うんだが。俺としては。
あくまで、OSが提供する機能だろう?ならばやっぱり、APIとして提供される形こそが理想だと思う。

なんでも言語の機能にすればいいというものではないと思うな。
0212デフォルトの名無しさん垢版2011/02/20(日) 06:17:18.55
>>210
言語仕様と言う意味では、その言語のコア機能だけで実装出来ない機能は
言語仕様に入れて良いと思う。C のコア機能だけではスレッドは実装する事が
出来ないので、スレッドを言語仕様に入れるのは問題無いでしょう。

それ以外にも、よく使用される機能が何度も繰り返し再実装されるのを避ける為に
言語仕様を定めるのも理に適っていると思う。昨今の CPU 実装の変化を考えると
スレッドはますます使用頻度が増えて行くのは確実で、言語仕様に入れるのは
正しいと思う。

標準仕様に含める事で、ポータビリティが上がるという利点もある。統一的な
仕様を決めておく事で、色々なプラットフォームで動作するプログラムを
効率よく実装する事が出来る。移植性の高いマルチスレッドのコードが書ける
様になるのは歓迎すべき事だと思う。

副次的な効果として、C の教科書でスレッドを教えるのが容易になるという点も
意外と重要じゃないかと思う。標準仕様で定まっていれば、初学者が学習する際に
迷う事が少なくなり、マルチスレッドプログラミングの普及がより進むと思う。

Programming languages should be designed not by piling feature on top of feature...
という一節が有名だけど、今の時代、スレッドは言語に含まれてしかるべき
機能だと思うよ。
0213デフォルトの名無しさん垢版2011/02/20(日) 06:18:44.59
>>211
言語の機能として実装する場合、その言語を実装する環境すべてでその機能が無いといけない。
つまりOSが無い環境へのコンパイラでも、マルチスレッドを実装するコードを生成しなければならなくなる。
0214デフォルトの名無しさん垢版2011/02/20(日) 06:55:12.78
>>213
実際は、freestanding の環境では複数のスレッドを起動しなくても良い事になってる。
C1x の 2010/12 のドラフトの 5.1.2.4 に書いてあるよ。
0222デフォルトの名無しさん垢版2011/02/20(日) 15:30:16.47
>>220
今度の仕様で策定される様な部分はスレッドの本当に基本的な部分で
長年の実績に基づいた機能だから簡単に変化する様な物ではないと思われ

むしろ基本の部分の仕様が固まる事で、その上に様々なライブラリを
構築する事が容易になって、言語の発展に大いに寄与する事と思われる
0224デフォルトの名無しさん垢版2011/02/20(日) 15:54:43.52
Class を変えずに色んな使い方が出来るなら結構な事じゃない
どう転んでも新しい技術の脚を引っ張らないって事でしょ
0225デフォルトの名無しさん垢版2011/02/20(日) 15:59:04.92
>>222
長年の実績で固まった機能が言語の発展に寄与した。
これは過去の話だ。
まともな人間なら「固まる事で、寄与する事と思われる」なんて言わない。
0226デフォルトの名無しさん垢版2011/02/20(日) 16:05:58.98
普通に言うだろ。
まともな人間は本筋に関係無い所で無意味な難癖をつけたりはしない物だよ。
0229デフォルトの名無しさん垢版2011/02/20(日) 16:40:02.04
>>228
詳しく。
0233デフォルトの名無しさん垢版2011/02/20(日) 16:52:16.64
昔からスレッドはkillすると、システムが不安定になるもんです。API的には用意されているけどね。
0234デフォルトの名無しさん垢版2011/02/22(火) 08:46:18.42
>>215
I/Oの機械語コード並べた配列を関数ポインターにぶちこんで呼ぶか、
あればメモリマップドI/Oを使えばいい。
でも、これ物理デバイスを制御できるだけでファイルシステムは自前で
作らなきゃならん。
0236デフォルトの名無しさん垢版2011/04/28(木) 05:31:53.80
工学や理学の問題を解きたくてプログラム勉強し始めたのに、
プログラミング技術の果てしない探求に取り付かれて
プログラムは手段である事をすっかり忘れちゃうよね。
解決したい問題をさっさと解ける可能な限りの高級言語を使うのがいいと思った。
0238デフォルトの名無しさん垢版2011/05/13(金) 11:29:26.32
手段が目的になる。大いに結構。
目的が感嘆には達成されないからこそ人類の発展があったんだよ。
そうじゃなきゃメシ食ってSEXして寝るだけの存在になってただろう。
0240uy ◆yyC0rYWEq2 垢版2011/06/21(火) 15:14:06.84
>>238
気持ち悪いんだよ 氏ねゴミ


マジレスすると、Cはもうそんなに使えなくても良い
JAVA以外をやれよksが
0242デフォルトの名無しさん垢版2011/06/22(水) 20:44:36.76
>>241
Go(笑
0244デフォルトの名無しさん垢版2011/06/22(水) 21:06:13.19
www#
0246デフォルトの名無しさん垢版2011/06/23(木) 08:57:39.37
>>245
かわいい
0248デフォルトの名無しさん垢版2011/07/08(金) 21:31:07.14
>>240
Javaはオワコン
0250デフォルトの名無しさん垢版2011/07/09(土) 21:14:05.84
>>236
そんなこと言ってる研究室のハゲは、
ポインタを理解していないどころか、構造体の意味も理解していない、
随所にマジックナンバーを埋め込んで、
数値計算ライブラリの利用方法も知らずに
逆行列を求める自作のプログラムをよこしてきて、
極めつけにはループ用変数のi,j,kをグローバルにしている

そんなヤツにソースコードが汚いと言われる日々
地底の情報系研究室は地雷だらけだぜ
0251デフォルトの名無しさん垢版2011/07/14(木) 23:06:21.64
こんなのを見た日には、Cが嫌いになる。

a+++++b;
0257デフォルトの名無しさん垢版2011/07/20(水) 23:03:57.00
IOCCC(The International Obfuscated C Code Contest
国際邪悪なCコードコンテスト)のコードは凄まじいな。仕事で似たような
コードをやられたらたまらん。
0258デフォルトの名無しさん垢版2011/07/21(木) 00:01:42.58
トリッキーなコード書きたくてしょうがない人のガス抜きになっているという説もある>IOCCC
0264デフォルトの名無しさん垢版2011/10/18(火) 16:12:07.54
C++でプログラミングするには人生は短すぎる
0266デフォルトの名無しさん垢版2011/11/29(火) 12:04:51.63
わらたw
0268デフォルトの名無しさん垢版2011/11/30(水) 17:38:21.65
Cは、それ自体が目的と化してしまう。
0269デフォルトの名無しさん垢版2011/11/30(水) 23:39:17.33
Cでプログラミングしてると、プログラムをそもそもつくろうとした目的を忘れてしまう
脳の容量がたくさんないとやってられない
0273デフォルトの名無しさん垢版2011/12/01(木) 10:26:59.94
>>272
0277デフォルトの名無しさん垢版2011/12/13(火) 21:21:04.60
デバイス屋は、C(もしくは、C++)しか使わないという噂は本当か?
0281デフォルトの名無しさん垢版2011/12/14(水) 21:35:22.80
STLには、お世話になった。boostは使ってなかったから、auto_Ptr止まりだけど、メモリ管理からの解放になれると、Cには戻れない。

今はもう使ってないけど
0284デフォルトの名無しさん垢版2011/12/15(木) 00:42:50.68
>>282
その頃使ってたフレームワークが廃れてしまったのと、Javaやスクリプト言語に流れたから。

よりメモリ管理から解放されたのが大きい。
最高のパフォーマンスを求めるのであれば、C / C++になるのだろうけど、現状そこまで必要としてないから。
0287デフォルトの名無しさん垢版2011/12/19(月) 23:42:18.60
プログラミング言語にはレイヤーがあるからな。
どの言語も同じレイヤではない。
@OSやさらに上級のプログラミング言語、仮想環境をつくる言語:C,Go
A上記の言語でつくられた環境でプログラミングするための言語:Java、C#
B簡単にコンピュータに対し命令を指示する言語(スクリプト):Perl,Python,Ruby,PHP,Javascript

BをやるためにCで書くのは確かに時間がない
Aを目的としても同じ。
ただし、@をやるためには、Cくらいしか適した言語はないだろう。
0289デフォルトの名無しさん垢版2011/12/24(土) 04:56:08.18
弘法筆を選ばず
0290デフォルトの名無しさん垢版2011/12/24(土) 10:14:13.67
うすうすそうなんじゃないかなって思い始めてたよ
0291デフォルトの名無しさん垢版2011/12/25(日) 23:33:13.07
>>287
もちろんそうなんだけど、
CでAやBをやろうとしてた時代があったんじゃないの
0293デフォルトの名無しさん垢版2011/12/31(土) 18:04:36.70
寿命が延びたんじゃなくて納期が短くなった
リーナスがLinux作ったみたいに、納期気にしなければ作れるわけで
0299デフォルトの名無しさん垢版2012/01/01(日) 18:09:38.45
時間が無限にあれば作れるのは自分がつくったフリーソフトを今誰かが使ってありがとうって言ってくれてるレベルだろ

リーヌスは苦しょっぱい青春しながら+学生としての勉強しながら作ったんだろうから、時間が無限にあった訳じゃない。もっと上だな。

俺?無料に決まってんじゃん
0304デフォルトの名無しさん垢版2012/01/15(日) 17:47:42.43
Cだろうが何だろうが、完成させなきゃ何を使おうが変わらん。
生産性がどうのと語ろうが、現実完成した成果物を出せてないならなんの意味もない。
0305uy垢版2012/01/21(土) 00:40:19.14
>>287
名無しにしては随分マシなレスをかくなと思った
入門書の最初にレイヤーについては書くべきだね
そうしないと1個の言語で何もかもやろうとする奴が絶えない

本職でプログラマやる奴は、1,2,3のレイヤークリアして無いとカスだわ
趣味でやるにしてもレイヤー3だけはクリアしてないと正直見てて可愛そう

Rubyは必死にレイヤー2に干渉しようとしてるけど
もっと並列化が進んで速度上がらないと無茶かなぁ
0309デフォルトの名無しさん垢版2012/02/25(土) 17:36:41.40
>>307
この人、C++を拒絶しまくってたからな。
0311デフォルトの名無しさん垢版2012/04/27(金) 06:58:07.99
言語の基礎部分だけなら1週間もあれば充分かもな。
実際VC++の昔のチュートリアル本なんて、びっくりするくらい薄かったし。
0313uy垢版2012/09/10(月) 21:09:23.07
よく1週間とか日にちで習得日数いう奴いるけど、
てめーは1日何時間なんだよ

って思う
1日1時間しか集中できないごみ化すなら市ね
0318デフォルトの名無しさん垢版2013/04/27(土) 17:07:20.17
効率もとめて新しいものいちいち追ってる間に
Cで書いたほうがはるかに早いことを悟った
もう新しい言語はいらない
0323デフォルトの名無しさん垢版2013/04/30(火) 01:49:37.10
MONOで作るって人生を賭けて作るようなモノじゃないから。
2、3日後の明方には既に腐ってるようなモノだから。
0326デフォルトの名無しさん垢版2013/05/05(日) 12:12:32.40
彼らはBASICから得られた体験を ” タブー視 ” しなければいけないため、常に孤立を要求される。
0328デフォルトの名無しさん垢版2013/05/22(水) 20:18:47.64
隅から隅までって訳じゃあるまいし
キモのところでアセンブリ書いててもおかしくない
柔軟さが要求される部分ではLua とか使ったりもするらしいし
0329デフォルトの名無しさん垢版2013/11/12(火) 21:41:53.92
Cはいくらライブラリ作っても何も蓄積されない感がある。
オブジェクト指向を駆使してもC++じゃ今一歩だめだ。
javaくらいの簡易さでやっとライブラリに価値が生まれるレベル。
0331デフォルトの名無しさん垢版2014/10/29(水) 17:01:21.60ID:t9XzV+QQ
Cでプログラミングするには人生は長すぎるんじゃないか?

人生を記述し切っているCソースを見てみたい
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況