• ベストアンサー

Win32APIは覚えて損する?

Win32APIは現在一般的に出回ってる32Bit版Windowsの ApplicationProgramingInterfaceですよね? これがそのうち一般的に出回るのが64Bit版Windowsに なったときもWin32APIを勉強したときの知識は役に たつのでしょうか? またWin16→Win32に変わったときはどのような感じだ ったんでしょうか? あと少々質問とずれてしまいますが○○Bit版Windowsの [○○Bit版]はどのような意味を持つのでしょうか? 暇なときにでも回答できたらお願いします ※ ○○=16 or 32 or 64 など

質問者が選んだベストアンサー

  • ベストアンサー
  • aris-wiz
  • ベストアンサー率38% (96/252)
回答No.6

>64Bit版WindowsになったときもWin32APIを >勉強したときの知識は役にたつのでしょうか? ネイティブでモジュールを作れば、Win32Apiの環境でも 64bitで動作するソフトウェアを開発することは可能です。 内部的にどうなっていようと、公開される関数の 使用方法が変わっていなければ、十分に役に立つと思います。 (#1さんが言っているようにそこはMSしだいです) >Win16→Win32 昔はDOSプログラミングが殆どだったようです。 最近のXPなどのWindowsOSにはMS-DOSに似たような、 「コマンド・プロンプト」がありますが、一応別物です。 「エスケープシーケンス」などが使えません。 WinApiは16Bitと32Bitで関数名自体が違う場合があったようです。 Win32Apiからはこれらはマクロ制御で切り替えを行っているところ もあるようですが、レジストリ操作などはx64用と32bit用を併用する 場合などが存在する物には別々に用意されているようです。 (x64とx86のレジストリ位置が違う為) >○○Bit版Windowsの[○○Bit版]はどのような意味を持つのでしょうか? CPUの表現域が変わり、それに伴って ソフトウェアが使用できる表現域も変わってきます。 例えば、分かりやすい(見やすい)所では32BitOSでは メモリを4GB搭載したHW上でも32bitOS上で認識される メモリの最大容量は3.25GBちょっとです。 しかし、64BitOSでは4GB以上でも認識されます。 これは、4GBの数値が符号なしの整数で、 32bitでは表しきれないためです。 2つの最大Bitを2進数で表すと以下のようになります。 32Bit 1111 1111 1111 1111 1111 1111 1111 1111 64bit 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111

JIF0131
質問者

お礼

32bitと64bitの違いってそういう意味だったんですか・・・ 了解しましたありがとうございます。

その他の回答 (5)

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.5

★アドバイス >Win32APIは覚えて損する?  損はしないと思います。 ・理由は Windows OS の内部は API で動いていると見れば、API を知ることは OS の  仕組みを理解する近道になります。また、例え今後 API 関数が利用できなくなっても  ソフトウェアを作成するために必要になる処理は提供されます。この提供される処理も  API と同じような機能だと思いますので Win32 API の知識は無駄にはなりませんよ。 ・C → C++ → MFC という感じで Windows プログラミングをするときも API の知識が  あるか、無いかでは随分と理解力が変化しますので。API を知っている方が新しい  処理が提供されたときにより早くに理解して習得できるはずです。 ・これは言語も同じです。  どれか1つの言語を主要言語として知っていれば、他の言語も1ヵ月もあればかなり  理解してプログラミングできるようになりますよね。例えば C → C++ → Java → C#  という感じで習得できます。 ・要するにプログラミングの概念があれば早くに他の言語も習得できるので、Win32 APIも  知っていれば 64 ビット版の API が登場しても API が廃止になって新しい処理が提供  されてもどの道すぐに理解できるはずです。 ・よって『Win32APIは覚えて損する?』の質問は損はしないとアドバイスします。 ●アドバイス2 >[○○Bit版]はどのような意味を持つのでしょうか?  回答者 No.3 さんのアドバイスにあるように C 言語でいうポインタのサイズが違うのです。  また、64Bit版の Windows Vista は 32 Bit版のプログラムと 64 Bit版のプログラムが  共存できるようです。タスクマネージャにその情報が表示されるようです。  私は使ったことが無いため確認は出来ませんが、今年パソコン雑誌を読んで知りました。 ・Windows Vista は去年にすでにバグが 7 つほど発見されていたようです。  修正することなく販売したようです。よって、SP1 が出るまで私は買わないかな。 余談: ・私は MS-DOS 時代からパソコンを始めました。  このため Windows 時代になってもコマンド・プロンプトをときどき使っています。  でも、最近始めたパソコン・ユーザさんは『コマンド・プロンプト』を知らなかったり、  難しいと考えてしまいます。MS-DOS 時代では基本知識であったコマンド・レベルの知識を  知っていると難しいとは思いません。むしろ、機能が拡張されて便利になったね。と思います。 ・このことから昔の知識が『今』でも役に立っているのです。API の知識も同じですよ。 ・以上。

JIF0131
質問者

お礼

>最近始めたパソコン・ユーザさんは『コマンド・プロンプト』を知らなかったり 確かに僕も名前くらいしか知らないですね(2000年にPC始めた) 覚えておいて損でないことがよくわかりましたありがとうございます。

回答No.4

覚えなくても、 必要な時、レファレンスマニュアルを 引っ張り出して、調べればすむことでは、 どの関数もCの関数の標準的な使い方に、 のっとっておりますし。 ちなみに、Win32の前はWin32sで、 このときには、Windowsプログラミングをする者は少なかったようです 16ビット版では、Windowsプログラミングは、ほとんど知られていなかったとか。 DOSプログラミング全盛だったんですな。

  • furyfox
  • ベストアンサー率56% (58/103)
回答No.3

>○○Bit版Windowsの >[○○Bit版]はどのような意味を持つのでしょうか? 最大の違いはメモリ空間だと思います。 具体的にはWindowsXp(32bit)の場合、 物理メモリを4GB(ギガバイト)までしか認識できません。※4GB = 32bit また1プロセス(1つのアプリケーション)が確保できるメモリは2GBです。 しかしVista Ultimate 64bit版では128GBまでのメモリを認識できます。 またVisual C++ 2005ならコンパイル時のオプションで 64bitを選べばポインタのサイズが64bitになります。 32bit版 sizeof(int*) → 4 64bit版 sizeof(int*) → 8 アプリケーションによっては1プロセスで2GBでメモリでは 十分でないものもでてきています。(例えばAdobeのPhoto shop等ですが64bit版もでるようです。) そういうソフトは64bit化する事による恩恵があります。 で肝心の質問のWin32API が使われなくなる可能性はあるけど、それはどの技術を学んだところで同じ事です。 現時点ではVistaも結局ネイティブはWin32APIになりましたしまったく使わなくなるのは当分先です。 仮に時期Windows(3年後?)に廃止になったとしても その知識がまったくの無駄にはなるとは思えません。 >またWin16→Win32に変わったときはどのような感じだったんでしょうか? Win16は現在のWindows Vistaでも基本的には動きます。 Win16→Win32では単純にAPIの種類が増えて、そのWin32は新しいOS(Windows95以上)でしか 使えなかったという事です。

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.2

Win32 APIに限らず、覚えて損をすることというのは、そう多くはありません。 確かに、そのものズバリが役に立たなくなる可能性はありますが、将来登場するであろう様々な技術も、過去や現在のものを基礎として作られるわけですから、それらの習得が容易になることはほぼ間違いありません。 また、過去~現在の技術に関する知識・経験は、今後自分がそれらに変わる技術を生み出す立場になったときには、必要不可欠なものとなることでしょう。

noname#39970
noname#39970
回答No.1

64bitになると、CPUの命令コードが増える 32bitではそれに対応できない(命令コード無いんだから対応しようがない) API知識は、役にはたつだろうがソースがそのまま使い回せるかはMicrosoftの作り方にかかっている。

関連するQ&A

  • MFCなのかWin32APIなのか

    みなさんはじめまして。グフです。 これからWindows上でC/C++(VisualStudio.NET2003) にて、Windowsアプリケーション開発の勉強を始め ようとしています。 いろんなサイトや書籍を見ている中で、Windowsアプリ の開発方法としてMFCをつかうやり方と、Win32APIで 開発する方法の2つがあることがわかりました。 これからWindowsの勉強を行うにはどちらの方法で開発 するのが望ましいのでしょうか? ケース by ケースだとは思いますが、何かアドバイス いただければと思いまして、投稿させていただきました。 やはり基礎からおさえるのであれば、Win32APIの方が よろしいのでしょうか? 今後のWinFX環境を考えると、Win32APIでの知識が無駄 になってしまうということはないのでしょうか?

  • VC++でwin32APIを作っているのですが・・・

    こんにちは。私はwin32APIを勉強しているc言語初心者です。 私はMicrosoft Visual C++ 2008を使ってc言語のwin32APIをプログラミングしているのですが、独学でやっているので物凄く邪道なwin32APIプログラミングをしているような気がするのです。 ・c言語のプログラムを書いて、C++のwin32APIプロジェクトとしてビルドする。 ・ヘッダーファイルにwin32API関数がなかったので、自分のwindowOSからwin32API関数を探し出してVC++2008のなかのincludeフォルダ内にコピー&ペーストして使えるようにした。 これって邪道ですか?一応何の問題もなくwin32APIプログラムが作れるのですが、もっと正規なやり方があるでしょうか。回答よろしくお願いします。

  • RubyでWin32APIのCreateWindow

    RubyでWin32APIのCreateWindow 初めまして。RubyでWin32APIを使ってプログラミングをしようとしています。 RubyもWin32APIも勉強を始めて間もないのですが、RubyリファレンスマニュアルのWin32APIのページやグーグル検索などを利用し一通り調べて (test.rb) require 'Win32API' createwindow = Win32API.new('user32', 'CreateWindow', %w(l p l i i i i l l l p), 'l') createwindow.call(0, "HELLO", 0xc00000, 100, 100, 100, 100, 0, 0, 0, nil) としてみました。しかしエラーで、 test.rb:2:in `initialize': GetProcAddress: CreateWindow or CreateWindo wA (RuntimeError) となりました。 rubyのバージョンは ruby 1.8.6 です。 コードのどこが間違っているのか、エラーの意味、参考になるwebサイト(rubyでWin32APIのCGIを扱っているサイト)を教えていただきたいです。 よろしくお願いします。

    • ベストアンサー
    • Ruby
  • MFCとWIN32API

    はじめまして、コンピューターを勉強し始めた学生です。最近OSについての基本的な勉強を始めたのですが、ちょっとAPIのところで分らなくなりました。MicrosoftのWIN32とMFCは全くの別物なんですか?どちらもWindowsのSoftware開発に関わりが在りそうだとは思っているのですが... 何かとんでもない間違った質問をしている様な気もするのですが、誰か知っている人教えてください。

  • C++とWIN32APIとゲームプログラミング

    WINDOWSで動くゲームを作りたくて3日ほど前からC++の勉強を始めました。 (最終的にはグラディウスのような横スクロールシューティングが作りたいです。) そこで質問なんですが 1、Win32APIについて調べるとC言語を使っての入門サイトばかりがヒットします。 Win32APIはC言語で書くものなんでしょうか? そうなってくると今WindowsのGUIアプリを作るのにC++を勉強していますが無駄ってことでしょうか? 例: 猫でもわかるプログラミング http://www.kumei.ne.jp/c_lang/index.html Win32API入門 http://wisdom.sakura.ne.jp/system/winapi/win32/index.html ちなみに今学習に利用しているサイトは以下のサイトです。 C++入門 http://www.asahi-net.or.jp/~yf8k-kbys/newcpp0.html 2、ポインタの概念について ポインタのイメージですが値を格納している場所みたいな感じで大方あってますでしょうか? 僕は組み込み系をやっているのでアセンブラにどっぷり漬かっています。 なんていうかレジスタの番地がポインタに該当するのかなって思っています。 ↓みたいなイメージで考えています。 ポインタ=データの場所=レジスタ番地 これであってますか? 3、まだGUIには進んでませんがウインドウのメニュー(ファイル、編集等)を作るのにリソースファイルも作るって説明が上記ページ(猫でもわかる)に書いてましたがリソーススクリプトとかヘッダーもプログラム言語とは別に勉強する必要があるんでしょうか? 4、C++のクラス概念について クラスとは複数の関数をひとまとめにしてグループ管理(おおざっぱに言うとサブルーチンの集まり的な)するようなものってイメージであってますか? 5、WindowのGUIアプリのプログラムの概要ですが各オブジェクト(ウインドウやボタン、マウスポインタ等)に対して「クリックされた」とかのアクションに対して動作するプログラムを書くって事でいいんでしょうか? 6、お勧めの参考書籍について 今までアセンブラをはじめPerlやJavaScript、C言語のお勧め入門書をいろんなサイトのレビューを見て買いましたが本よりネットの入門サイトのほうがかなり役にたってきました。それでも入門書を買うのは気持ち的に安心するからなんですが・・・ それを踏まえた上で僕の最終的な目的にあうような本があったら是非教えてください。 7、勉強の進め方や「合わせてこれも勉強しろ」っていう項目があれば教えてください。 現状としては 「C++の基礎(必要ですか?)」→「Win32API」→「DirectX」で行こうと思っています。

  • XPの頃のWin32APIの本などはまだ役に立つ?

    1999年頃学生でC言語を勉強し平行してC言語だとWindowプログラムが 作るのが大変だったことからVBも少しやりました。 頭が悪かったもので、その後、VC++6.0を使いWindowsプログラミングを 作る以前の段階で挫折し勉強の難しさに悶絶し病んで廃人となりニートをやっていました。 その後、なんとなくプログラミングに未練があり、Windows APIの本を買ったり JAVAの本を読んだりHTMLやVBS、CSSなどを勉強してみたりしましたが 途中でいつも投げ出して中途半端でした。 そして再び、最近、プログラミングの本を読む機会があり、 知り合いの友人に感化されたこともあり、 Rubyを勉強し始めたのですが、 Win32 API? RubyでWindowsプログラミングを作ることに特化した本が200円で売っていたので 2007年の本でしたが購入してみました。 Win32OLEについて解説してありました。 Rubyに関する知識がまだあやふやな部分があり、またCOMやAPIに関する知識も ???なのであまり理解できませんでしたが、 なんとなく雰囲気のさわりのさわりぐらい分かりました。 とりあえず、昔は頭が悪く非常に精神的にも混乱していて よくわからずなんでも取り組もうとしてしまいました。 WEBページなどの処理をするにはHTMLのほかにDOM、CSSなどの知識 Java scriptなどの知識であっているでしょうか? ruby php phython perl などいろいろあるがこれは特性をみて自分がやりたい言葉のようなものなので 母国語を一つマスターすべきということは理解しました。 また、Windowsプログラミングを作るのであれば、 APIやCOMなどの知識があればいいのでしょうか? FLASHやActiveXのように現在お目にかからない仕様もあるのですが、 これらも内包していまでも学ぶ価値はあるのでしょうか? 出来ればでいいのですが、 安く仕入れられるプログラミング書籍でも活用が可能な技術を 教えてください。 教えてくださいと言ってもC言語を覚えればOSだって作れるよとか アセンブラ覚えれば完璧ですとかそういうのは無しで 一般的なバカなおじさんがなんとなプログラミングを作るうえで知っていた方がいい 知識や導入方法、パーツなどを教えてくださいよろしくお願いします。 一応、今、RubyとVBS、CSS,HTMLを勉強しています。 DOMの知識はあまりないです?説明してみろといわれてもあやふやな答えしかできません よろしくお願いします。

  • C++ API 全般 APIの概要は

    独学にてプログラミングを勉強しているのですが、いきづまってしまったので質問お願いします。 ※Visual Studio 2008 Express Editionsを使用しています。 まだプログラミングに関しての勉強を始めて1ヶ月程度で、最初はVB.NETから始めて、最近C++に乗り換えました。 趣味の範囲でのゲームを作ろうと思っていて、C++とDirectXでの開発を予定しています。(しかし、最終的にはゲームに限らずプログラミングの技術と知識を習得することを目標にしています。)(DirectXに関してはまだ手をつけていません。) まったく1からのスタートで、現在win32コンソールアプリケーションにてコードの勉強をしているところです。 勉強に使っている参考文献は ・VisualC++.NET逆引き大全500の極意 ・ゲームプログラマになる前に覚えて起きたい技術(これを買うには早すぎたようです…。第一章も半分くらいしか理解できません…。) サイトは ・主に「0からのゲームプログラミング」というサイトです。 http://www.plustarnet.com/aspil/Programming/ 本題の質問ですが、APIというものがいまいち理解できません。 (1)上記のような目的で使用するAPIは、標準 Windows APIというものでいいのでしょうか? (2)win32コンソールアプリケーションでは実行できるのに、win32プロジェクトでは実行できないのはなぜでしょうか? #include<windows.h> int WINAPI WinMain( HINSTANCE hInstance , HINSTANCE hPrevInstance , PSTR lpCmdLine , int nCmdShow ) { MessageBox(NULL , TEXT("Hello Wold!") , TEXT("メッセージボックス") , MB_OK); return 0; } (3)http://www.plustarnet.com/aspil/Programming/CConsole.htm このURLのコンソールAPIというのは、一般的に使われているものでしょうか?それともこのサイトのオリジナルのものでしょうか?win32コンソールアプリケーションでAPIを使うには、このURLのCConsoleクラスとうものをインクルードしないといけないのでしょうか?#include<windows.h>と宣言することによって気軽に使いたいものを使うことはできないのでしょうか? (4)#include<windows.h> とした場合、作るものが「win32コンソールアプリケーション」だったり「win32プロジェクト」だったり「windowsフォームアプリケーション」だったりで、使用方法などがまったく別になってしまうのでしょうか? (5)そもそも、上記の目的の場合APIを勉強する必要はあるでしょうか? (6)勉強をしたほうが後々に役立つ場合、どのAPIを勉強するのがいいのでしょうか?(APIといっても様々なものがあるんだなと思い質問しました。もし勘違いでAPIというものは一つしかないとしたらすみません。) なぜAPIに関してかというと、単純に上記のサイトで言語編の一番上から順に見ていったからです。 初心者すぎて質問が的外れかもしれませんがよろしくお願いします。

  • C言語でWin32API

    C言語を使ってWin32APIを呼び出すような、Windowsプログラミングを始めたいんですが、何かよい本やサイトはご存知ないでしょうか。 Visual C++6.0はあるんで、それを使えばいいと思うんです。 C言語はわかるんですが、Windowsプログラミングに関する知識はほとんどないので、ごく基本的なことから知りたいんです。 WinMain関数というのを書くようなんですが、その書き方すら知りません。  スケルトン(出来れば、それよりもっと基本的なこと)から書いてあるようなものです。

  • C++ Win32APIでツールバーの位置を下にしたい。

    C++ Win32APIでツールバーの位置を下にしたい。 C++ Win32APIを勉強中でして、ウインドウを作成し、ツールバーをCreateWindowsEXで作成したのですが、このツールバーをウインドウの下部に表示する事は出来ないのでしょうか? ネット上のサイトには作成までの手順は載ってはいたのですが、ツールバーの位置を変更する処理はどうしても見つかりませんでした。 どなたかご存知の方いらっしゃいましたらご指導のほどよろしくお願い致します。

  • Win7購入後にWin8のライセンスについて

    現在、XPとWin7のマシーンがあります。 1.XP→Win7(32bit)へ 2.Win7→Win8へ を考えた場合、 アマゾンさんでDSP版Windows7を購入し、 そのWin7のアップデート権(1200円)で8をDLしまして、 Win7にそのWin8をインストールすることは可能でしょうか? その場合、ライセンス違反になりますでしょうか? 1.XP→アマゾンで購入したDSP版Windows7(32bit)へ 2.Win7→アマゾンで購入したDSP版Windows7のアップデート権でWin8へ です。

専門家に質問してみよう