アカウント名:
パスワード:
もっというとVisual C++上のC言語しか扱えないC++プログラマもいますよね。そういう人は往々にしてswprintf(libc)とwsprintf(Windows API)の違いを理解していないです。
それはまぁよくあることで,UNIX上でプログラムを書いてる人でもopen と fopen の違いが分かってなかったり・・・
#今はいるんですって,ホントに
単にC言語といっても環境や時代でかなり違いがありすぎるのでそれに比べるとC++との差なんて些細な話だと思う
某業務用でANSI非準拠、なんてのもあるしねぇ…はぁ…
ライブラリ関数がどこに入っているかという意味ではswprintfとsprintf、openとfopenのどっちでもいいです。それにwsprintfに対応するのは_stprintfですよ?openとfopenは引数が違うから論外…いまどきK&Rじゃあるまいしコンパイラが指摘します。
wsprintfをあげたのはlibcとWindows APIの違いがわかっていない、OSのバージョンによって差異があり得る、それを理解していないということはどのヘッダファイルに宣言されているのかわかっていない、そしてコメントされているように関数の機能を理解していない(%fをサポートしない)。なのでwsprintfをUNIXでも使おうとしたりするわけですよ。UNIXでは用意されておらず使えないことを経験し、その理由を理解していればいいのですが、そういう経験のないVisual C++専門の人が一定数いるだろう、というコメントです。
どうもまだC言語の環境が整わない状態のWindows開発部隊が、アセンブラで文字列整形のコードを毎回書くのがあまりに面倒だから、APIにしてしまった、という噂を聞いたんですがどうなんでしょうね。
結局UNIXと同じように安定してリンクできるlibc相当がOS側にも欲しい、ってことでしょう。ちなみにlibcのswprintf、user32.dllのwsprintfよりも下層にもう1つswprintfがあります(ntdll.dll)。どんだけ~
サブシステム無のNTネイティブで使うもので非公開ではない使っていけないのならオフラインデフラグを持つソフト、ブートタイムに動くパーティショニングソフトは違反している事になる
> C のスキルしか持っていないけれど、作業環境がたまたま C++ コンパイラ
その人が書いているプログラムはC/C++どちらなのでしょうか?通常想定される作業環境は「C/C++を切り替えて使えるコンパイラ」ですので、プログラマは必ず「どちらで書いているか」を意識していると思うのですが。
過去に一度だけ、C++の現場で、Cしか書けないプログラマが何人かいて、その方々にはメソッドの中身を埋める仕事だけやってもらったこともありますが、そういう人が「まとまった数」いるというのは考えたくない...# 普通ならC++からライブラリ切り出してCで書いてもらうとかやるとか、# テスターとかの支援作業側に回ってもらうとかするんだけどね...
> その人が書いているプログラムは
あー、malloc()/free() が new/delete になっているだけの C でした…。
「関数がstaticメソッド、構造体がインスタンスになっただけのC言語」というJavaプログラマだって、日本にはたくさんいるんだぞ。#さすがにACで。
まあJavaになれば少なくともポインタでランダムなメモリ領域の破壊はできませんから…。
そういう人は、C言語でもポインタもビット演算も使ってないと思う……。orz
「Javaプログラマだからダメ」とか「Cプログラマだったからダメ」とかじゃなくて、「Javaプログラマの皮を被ったダメCプログラマ」ということかな。
まあバカにつける薬はないということで。
私も // だけは良く使っています。
> 本質的に C のスキルしか持っていないけれど、作業環境がたまたま C++ コンパイラである、> という職業プログラマがまとまった数として存在するんじゃないだろうか。
今時は純粋なCコンパイラはほとんど無いので、C言語オンリーの現場でもC++コンパイラを使います。なので「まとまった数」ではなくて「ほとんど」になります。とはいえ、そういう環境にいる人たちはCを使っていると明確に認識しておりますが。
# もっとも普段はDOS時代の純粋なCコンパイラで作業してます。もちろん16ビット版。
組み込みの世界ではC++が使える方がまれです。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
人生の大半の問題はスルー力で解決する -- スルー力研究専門家
「私は C++ プログラマです」の中身に踏み込めない (スコア:2, 興味深い)
という職業プログラマがまとまった数として存在するんじゃないだろうか。そういう人は、
集計するときに C なのか C++ なのか不明確だから、区別しない方が面倒が少ない、とか。
Re:「私は C++ プログラマです」の中身に踏み込めない (スコア:3, すばらしい洞察)
もっというとVisual C++上のC言語しか扱えないC++プログラマもいますよね。
そういう人は往々にしてswprintf(libc)とwsprintf(Windows API)の違いを理解していないです。
open vs fopen (スコア:1)
それはまぁよくあることで,
UNIX上でプログラムを書いてる人でも
open と fopen の違いが分かってなかったり・・・
#今はいるんですって,ホントに
屍体メモ [windy.cx]
Re: (スコア:0)
単にC言語といっても環境や時代でかなり違いがありすぎるので
それに比べるとC++との差なんて些細な話だと思う
Re: (スコア:0)
某業務用でANSI非準拠、なんてのもあるしねぇ…
はぁ…
Re: (スコア:0)
違いを明白に意識してなくて、wsprintfで%fと書いてしくじるのは過去にやりました。
何でこんな関数があるんだろう、と思ったら、
どうもまだC言語の環境が整わない状態のWindows開発部隊が、
アセンブラで文字列整形のコードを毎回書くのがあまりに面倒だから、
APIにしてしまった、という噂を聞いたんですがどうなんでしょうね。
Re:「私は C++ プログラマです」の中身に踏み込めない (スコア:2)
ライブラリ関数がどこに入っているかという意味ではswprintfとsprintf、openとfopenのどっちでもいいです。それにwsprintfに対応するのは_stprintfですよ?
openとfopenは引数が違うから論外…いまどきK&Rじゃあるまいしコンパイラが指摘します。
wsprintfをあげたのはlibcとWindows APIの違いがわかっていない、OSのバージョンによって差異があり得る、それを理解していないということはどのヘッダファイルに宣言されているのかわかっていない、そしてコメントされているように関数の機能を理解していない(%fをサポートしない)。
なのでwsprintfをUNIXでも使おうとしたりするわけですよ。UNIXでは用意されておらず使えないことを経験し、その理由を理解していればいいのですが、そういう経験のないVisual C++専門の人が一定数いるだろう、というコメントです。
結局UNIXと同じように安定してリンクできるlibc相当がOS側にも欲しい、ってことでしょう。ちなみにlibcのswprintf、user32.dllのwsprintfよりも下層にもう1つswprintfがあります(ntdll.dll)。どんだけ~
Re: (スコア:0)
基本的にOSのモジュールが使うためのもので、一般プロセスから使うのは邪道です。
Windowsでは、C標準ライブラリのDLLは、OSの一部ではないのです。
Windowsにバンドルされプリインストールさているものは、VC++で書かれたアプリのためのランタイムライブラリ、でしかありません。
ですから、VC++のランタイムライブラリをアップデートしても、OSの挙動は変りません。
Re: (スコア:0)
サブシステム無のNTネイティブで使うもので非公開ではない
使っていけないのならオフラインデフラグを持つソフト、ブートタイムに動くパーティショニングソフトは違反している事になる
Re:「私は C++ プログラマです」の中身に踏み込めない (スコア:1)
むしろアセンブリ言語を一緒くたにされるほうが困ったりして。
Re:「私は C++ プログラマです」の中身に踏み込めない (スコア:1)
> C のスキルしか持っていないけれど、作業環境がたまたま C++ コンパイラ
その人が書いているプログラムはC/C++どちらなのでしょうか?
通常想定される作業環境は「C/C++を切り替えて使えるコンパイラ」ですので、
プログラマは必ず「どちらで書いているか」を意識していると思うのですが。
過去に一度だけ、C++の現場で、Cしか書けないプログラマが何人かいて、
その方々にはメソッドの中身を埋める仕事だけやってもらったことも
ありますが、そういう人が「まとまった数」いるというのは考えたくない...
# 普通ならC++からライブラリ切り出してCで書いてもらうとかやるとか、
# テスターとかの支援作業側に回ってもらうとかするんだけどね...
Re:「私は C++ プログラマです」の中身に踏み込めない (スコア:4, おもしろおかしい)
> その人が書いているプログラムは
あー、malloc()/free() が new/delete になっているだけの C でした…。
Re:「私は C++ プログラマです」の中身に踏み込めない (スコア:2, すばらしい洞察)
「関数がstaticメソッド、構造体がインスタンスになっただけのC言語」という
Javaプログラマだって、日本にはたくさんいるんだぞ。
#さすがにACで。
Re: (スコア:0)
まあJavaになれば少なくともポインタでランダムなメモリ領域の破壊はできませんから…。
Re:「私は C++ プログラマです」の中身に踏み込めない (スコア:1, すばらしい洞察)
そういう人は、C言語でもポインタもビット演算も使ってないと思う……。orz
「Javaプログラマだからダメ」とか「Cプログラマだったからダメ」とかじゃなくて、
「Javaプログラマの皮を被ったダメCプログラマ」ということかな。
まあバカにつける薬はないということで。
Re:「私は C++ プログラマです」の中身に踏み込めない (スコア:2, おもしろおかしい)
私も // だけは良く使っています。
Re:「私は C++ プログラマです」の中身に踏み込めない (スコア:1)
Re:「私は C++ プログラマです」の中身に踏み込めない (スコア:1)
> 本質的に C のスキルしか持っていないけれど、作業環境がたまたま C++ コンパイラである、
> という職業プログラマがまとまった数として存在するんじゃないだろうか。
今時は純粋なCコンパイラはほとんど無いので、C言語オンリーの現場でもC++コンパイラを使います。
なので「まとまった数」ではなくて「ほとんど」になります。
とはいえ、そういう環境にいる人たちはCを使っていると明確に認識しておりますが。
# もっとも普段はDOS時代の純粋なCコンパイラで作業してます。もちろん16ビット版。
Re: (スコア:0)
組み込みの世界ではC++が使える方がまれです。
Re:「私は C++ プログラマです」の中身に踏み込めない (スコア:1)
# 私がまさに「作業環境がたまたま C++ コンパイラ」な人だけどID
# yes, fly. no, fry.