始めて投稿させて頂きました。よろしくお願いします。
C言語?を今から勉強しようとしているものです。
何をどうして学んだらいいか解らないので質問させて頂きました。
さきにお断りしますが、今はC言語、C++,C#,VC++、C++/CLIなどの区別は解りません。
目的はWindowsでも作動するが、少しの改変でLinaxでも動作するプログラムを作れるようになる勉強をしたいためです。
MSの呪縛から逃れられなくなる勉強はしたくありません。(仕事ではないため)
以前どこかのサイトでC言語?でサンプルを作成しLinuxでも作動させるサイトがありLinuxでも動いてとても感動しました。
自分に課した条件があります、
(1)インタープリターがないと動かない言語は除く。Java,Basicのような。
(2)コンソールアプリケーションは目標のソフトではない。
あくまでマウスでクリックしたり窓に文字を入力するソフトを作るのが目的です。
ツールとして無料版の「Visual C++ 2008 Express Edition」をインストールしました。
このツールで目標のアプリを作成できるでしょうか。
ところがこのツールのサンプルで 時計を作成するくだりがありますが
http://www.microsoft.com/japan/msdn/vstudio/2008/product/express/install_vc.aspx
プロジェクトの種類の選択で「CLR,Win32・・・」などの選択がありますが、
フォームアプリはCLRを選択となっていますが、CLRとはインタープリターであるような解説がありますがどうなんでしょうか。
だったらこのツールも使えないなあと思った次第です。
素人が独断と偏見で書きましたがご勘弁下さい。よろしくお願いします。
基本的にC言語の標準ライブラリのみを使ってプログラミングするなら
LinuxでもWindowsでもコンパイル可能だと思いますが、ひとたびOS依存の関数を
使ってしまうとその部分においては、OSごとに修正が必要になります。
(参考)http://oshiete1.goo.ne.jp/qa4648843.html
よってOSに依存せずにコンソールではないウィンドウを表示させるのは通常は無理で、
LinuxでもWindowsでも使える(移植されている)ウィンドウ用のライブラリを探して
使用する形になると思います。(あるのか分かりませんが・・・)
もし目的が3Dグラフィックの表示ならば、glutというOpenGL系ライブラリが
LinuxでもWindowsでもコンパイル出来、ウィンドウ表示やキー入力、マウス入力
タイマー処理等が可能で、Windows上ではVisual C++ 2008も使用出来、目的の
ライブラリに近いかと思いますが、文字入力などのフォームが使えず、出来ることが
限られていますので、今回の条件には合致しません。とりあえずここまでしか分かりません。
上記のOS依存を緩和することも目的の1つとしてJavaが考案されました。
Javaは正確にはインタプリタではなく、インタプリタ系言語とC言語などの
マシン語(バイナリ)にコンパイルする言語の中間に位置するようなイメージの言語です。
まず独自のマシン語のようなコードにコンパイルしておき、実行時にそのコードを
マシン語に変換して実行しますので、速度はインタプリタと比べてかなり速いはずです。
C#などのCLR関連言語も似たような存在ですが、現在はWindows上でしか動作しません。
もし鈴木さんがOSに依存しないコードを書くことが主な目的でしたら学習言語をJavaに、
ネイティブ動作にこだわるのでしたら、C言語用のライブラリを探してみると良いかもしれません。
答えになってませんが、ご参考まで。
きのこさん、丁寧な説明を有り難うございました。
知らぬとはいえ、大変むちゃくちゃなことを書いていたんですね。
Javaのようなインタプリタみたいな実行するときそれがないと動かない
言語しか今は考えられないということでいいでしょうか。
最初はテキストエディタや、ファイルアクセスソフト(ファイル検索やバックアップなど)や簡単なIEのようなブラウザを作りたいです。
将来はOSを完全にLinuxに乗り換えていきたいと思います。
そのためlinuxで動くプログラムを作りたいのです。
C言語用のライブラリがどれほどのものがあるか今知るよしも有りませんが
C言語はVisual C++2008でも出来るというので
「猫でも解るプログラミング・・・」をだいぶ打ち込んでやってみましたが、ことごとくエラーで原因を探すのが大変でした。勉強以前の問題でした。
そこでBorland C++がいいという人もいたりして、迷います。
現実的にはWindowsワールドの中で生活しているわけですが、
プログラミングまで、どっぷりWindowsワールドに浸りながらやりたくないというのが正直な気持ちです。(すみません、よく表現できませんが)
ということは、私の場合はjavaを勉強した方が適切だということでよろしいでしょうか。
> Javaのようなインタプリタみたいな実行するときそれがないと動かない
> 言語しか今は考えられないということでいいでしょうか。
そうとは限らないですね。
たとえば wxWidgets なら Windows/Linux の双方でソース互換なコードをC++で書けます。
wxwidgets : http://www.wxwidgets.org/
> 私の場合はjavaを勉強した方が適切だということでよろしいでしょうか。
実行環境を別枠でinstallするのを許容できるかどうか、じゃないかしら。
επιστημηさん、貴重な情報を有り難うございました。
C++ならVisual C++2008でも書けますね。
C++をやるならCからとあちこちで書いてありますから
Cから始めてみます。
大変お騒がせいたしました。
有り難うございました。m(_ _)m
「これから先、何年か安泰で
どんなプラットフォームに対応している言語を選ぶことで
何をするにも、どこでやろうにも、勉強しなおしをしないですむ」
は理想だけど、まだまだ現実的ではないなー
そういう「楽」を求めてる時点で、どっかで壁にぶつかると思うがな
最初は、本にしろ、ネット情報をつかうにしろ、
情報が多く学びやすいものを選んだほうがいいと思う。
自己レスです。
επιστημηさん、wxwidgetsについていろいろ調べましたら、
「wxWidgets でクロスプラットフォーム GUIアプリを作ろう」
http://0xcc.net/pub/uu-2004-08/
ここで述べられていることが、私が考えていることと全く同じでした。
本当にすっきりしました。
有り難うございました。
ryoさん、レスを有り難うございます。
おっしゃることはごもっともです。
私目の条件を書きませんでしたが、
もう65歳オーバーであること。勉強をし直す余裕がありません。
またカミさんが、参考書を買ってくれません。
棺桶に片足つっこんでいるのだから、今さら勉強しても無駄だといいます。
惚け防止になればいいと思っています。
では、頑張ります。
επιστημηさん、
その後いろいろ探していましたら
wxwidgetsをVisual C++ Express Editionでつかう例がありました。
http://freepg.fc2web.com/cpp/topic_wx_vc.html
大変助かりました。
有り難うございました。
ツイート | ![]() |