みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

Windowsプログラミングで

当方、10年程前に、某ゲーム系専門学校に通ってまして
プログラミングの方を専攻しておりました。
当時の学校の開発環境はPC-9801やX68000で学校では
C言語や65816の授業がありました。
また当時は私はX68000が好きだったこともあり68000
のアセンブラ等も勉強してました。
当時挫折を味わい学校も辞め二年ほどプログラムという
よりはパソコンから完全に離れてしまいました。
でもパソコンとかを触ったりするのはやはり好きだったので
Windows95搭載パソコンを買ってしまいました。
CPUがPentium2とかMMX Pentiumとか言われてもちんぷんかんぷん
でしたしDirectXが出てきて、3Dアクセラレーターボード等が
普及してきてましたが二年間程離れていたせいで3Dゲームを
プレイするために必要なマシンとかも分からなかったくらい
です。
VC++5.0とかも買ってしまいましたが、学校で勉強したのは
概ねシングルタスク環境での開発ですので異様な違和感を
覚えました。イベントドリブン型プログラミングに馴染めない
というかMFCやWindowsAPIの関数の複雑さに圧倒されたというか
そんな感じです。
二年間離れていたから対応できなくなったとは思っていませんが
Windows95発売から10年以上経過した今、専門学校に入学するのが
数年遅かったら・・・もしくは数年生まれるのが遅かったら等とは
思ったりします。
結局、今では自分にプログラミングにセンスが無かったと思ってますが
「MS-DOS等では開発したことがあるがWindowsでは出来ません」
というような人がいるということをプログラム関係の本で
読んだり、あるいは専門学校の講師とかソフト開発会社の人
に聞いたことがあります。
長々と書きましたが、自分のように実務経験が無く、
あくまで趣味の域でやってる人ならともかく、職業として
プログラマーをしている人はどうなのでしょうか?
プログラマーとして飯食ってるひとがWindowsプログラム等の
イベントドリブン型プログラミングに対応出来なかったら
死活問題だと思うのですがどうなのでしょうか?
それとも実務経験のある人にはそもそもそういう人は
いないのでしょうか?
長年の疑問だったので何方か答えて頂ければうれしいです。

投稿日時 - 2008-05-08 03:28:45

QNo.4005886

暇なときに回答ください

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.5

Windows系プログラマではないですが、興味で噛り付いている人間からのアドバイスです。API群の必要知識の幅はかなりのものだと思いますし、もうそれだけではなく多岐に亘っています。一部をかじりかろうじて動作するものは作る事は出来ますが、当然良いものにはなりません。API動作等は当然知っておく前提知識であって、その上にどの様にデザインする事が望ましいかという問題が中心になります。その性質を広く深く理解できている人間がより良い設計を行う事が出来ます(microsoft最強)。この点は、幅広くの分野に対しても精通します。また、良いソフトがどの様なものであるかの価値観も多くあります。“あくまで趣味の域”、自分もそうなんですが、この状況で単独で十分に質を上げていくのは至難の業です・・・。極めようとするなら、まず、プロセス・スレッド系、フォーム系とか的を絞ってパラメータが何の時にどういう動作をするかという様な知識をプロトタイプを作りつつコツコツ貯めていくしかないと思います。勉強ですね。あと、どうせ趣味でやるなら.NET Frameworkが近道だと思います。

>イベントドリブン型プログラミング

そんなに大袈裟な物でもないと思います^^;)

投稿日時 - 2008-05-08 21:45:12

お礼

ご回答有難うございます。

APIは自分にはすごく難しく感じます。
.NET Frameworkで
なんかやってみようと思います。

>>イベントドリブン型プログラミング

>そんなに大袈裟な物でもないと思います^^;)

確かにEXCELでVBAとかやるとセルを押された
時にこれこれこういう風な処理をさせたい
とかいう風に全然違和感なく受け止めれるんですが
私はゲーム系専門学校に行ったように
WindowsプログラムでもJavaでもゲーム
を作りたいというふうに考えるんですよね。
だからキーボードやマウスの入力がなくても
画面が書き換わる必要があるので
これをどう処理したらいいのか
VC++触ったときに全然わかりませんでした。

投稿日時 - 2008-05-09 03:10:17

ANo.4

8ビット時代からプログラムを始めて、今はWindows用ソフトの開発をしています。一番苦労したのは、オブジェクト指向プログラミング(OOP)への移行でした。習い始めた頃はオブジェクト化の意味がまったく分からず、かなり苦戦しましたね。何度も何度も失敗を繰り返して、失敗した経験を通して初めて「ああ、だからこの方法じゃなきゃダメなんだ」と学んでいきました。OOPを理解するには本を読むだけでは無理だと思います。OOPに慣れてしまえば、Windowsのイベントドリブン型は決して難しくありません。むしろそれが自然に見えます。

WindowsAPIは関数が膨大にあり一見複雑ですが、「この関数はこうゆう風に使う」といった決まりがあるので、サンプルコードをそのまま利用することが多いです。多分一番重要であるCreateWindowEx関数なんかもものすごい数のパラメーターが必要ですが、使い方は決まってるので、サンプルからコピペしてちょこちょこ訂正だけしてくというスタイルで何とかなります。

8・16ビット時代にはアセンブラは必須でしたが、今はほとんど使わないですし、32ビットになってメモリの扱いがグンと楽になりましたから、「今の方がプログラミングは難しい」というわけでは無いと思います。ただ必要になる知識が違うだけということです。

でもOOPへの移行できずに挫折したプログラマーを何人か見てきました。多分、ここが一番の壁ではないでしょうか。

投稿日時 - 2008-05-08 08:21:16

お礼

ご回答有難うございます。

OOPですか。自分はMSXとかも若い頃やっていたの
OOPは苦手です。
たしかにCreateWindowsEXxとかはコピペですが
WindowsAPIの解説をしてる本とか見ると
ついつい内容に圧倒されちゃんですよね。
OOPに移行できずに挫折した方はその後どうされたのでしょうか?

投稿日時 - 2008-05-09 02:52:44

ANo.3

仕事の内容によりけりだと思いますよ

組み込み制御系主体の職場ならありえそうですよ
情報収集や開発環境がWindowsであって、開発対象がZ80,i8085やPICなどがほとんどといった職種もあると思います
こういった職場なら 別段Windowsアプリが組めなくてもかまわないと思います

# ちょっとしたツールなどが必要になった場合にVBやDelphiなどが使えると重宝しますが…

投稿日時 - 2008-05-08 04:45:52

お礼

ご回答有難うございます。

なるほど、開発環境がWindowsでも組み込み制御主体なら
Windowsアプリが組めなくても問題ないですよね。
でも皆さん、ご回答を見ているとWindowsになっても
そんなに苦労しなかったみたいですね。

投稿日時 - 2008-05-09 02:43:27

ANo.2

がると申します。それなりの年齢のおっちゃんで、昔からプログラムやってまして今もその辺で食っております。

さて。学ばなきゃいかん基礎というのは色々とあるのですが。逆に言うと基礎をしっかりと押さえておくと、そんなに奇異な方向に変わっている訳でもないですし、変化の度合いも「ついて行けない」ものではないと思ってます。
よく私は教育の時に話をするのですが。技術はそも「ソレがない事によって困ったなにか」があって、その困った何かを「解決するため」に技術がうまれて、それが紆余曲折を経て今に至るってのが普通です。
なので。あらゆる技術(例えば今回ならイベントドリブンとか)は「ソレがない事でどんな風に困っていて」「それをどう解決したかったのか」を知れば、自ずから基本が見えてきます。

なので逆にいうと。応用力がないっていうことは結局基礎が出来ていない事につながります。
いやまぁ「じゃぁみんな基礎が出来ているのか?」と問われると難しいところなのですが(苦笑

投稿日時 - 2008-05-08 04:15:05

お礼

ご回答有難うございます。
応用力が無いので困ってます。
基礎が出来てないことにつながる
とのことですが。
普通のJavaやC#のプログラミング
の入門書などではどうにもならない
基礎のように思えて仕方ありません。
どのような本で基礎を習得すれば
いいのでしょうか?

投稿日時 - 2008-05-09 02:37:54

ANo.1

#回答になっていないかもしれませんが(汗

30年前のプログラマです。今はIT以外の業界での「情報システム担当」なので基幹システムのお守りをしながら、社内向けのちょっとしたものをDelphi(+SQLServer)で作ったりphpでwebシステムを作ったりしてます。実業務に使うのは枯れたものが多いですね。ただし常に新しいものを試しています。

プログラマというかシステムに関わる立場としては「新規なものへの対応力」は必須といっていいでしょう。10年といわず5年も経てばガラリと変わってしまう世界だと思っています。

>「MS-DOS等では開発したことがあるがWindowsでは出来ません」

表層的にはイベントドリブンだの何だのと変化しているように見えても、CPU自体の動きは変わったわけではないので「どうやって実現しているのか」を考えれば、それほど大変ではなかったですけどねぇ・・。MS-DOSの内側まで(出来ればUnixあたりも)理解していた人なら、Win32APIくらいは理解できたと思うのですけど。

個人的には、さすがに50になったので追いかけていくのが厳しくはなってますね。というかそろそろ後進を育てないと(苦笑)。

投稿日時 - 2008-05-08 04:00:35

お礼

ご回答有難うございます。

>プログラマというかシステムに関わる立場としては「新規なものへの対応力」は必須といっていいでしょう。10年といわず5年も経てばガラリと変わってしまう世界だと思っています。

新規なものへの対応力は必須ですか。この辺は私は欠落
してますね。専門学校いって得たものは結局陳腐化した
知識だけになってしまいましたし。

>表層的にはイベントドリブンだの何だのと変化しているように見えても、CPU自体の動きは変わったわけではないので「どうやって実現しているのか」を考えれば、それほど大変ではなかったですけどねぇ・・。MS-DOSの内側まで(出来ればUnixあたりも)理解していた人なら、Win32APIくらいは理解できたと思うのですけど。

VC++でWin32APIで組む分にはメッセージループは自分で
組むので、MFCとかよりは分かりやすかったですが
Win32API習得まではいきませんでした。
MS-DOSの内側やUnixあたりを理解していた人なら
Win32APIくらいは理解できたのですか。

投稿日時 - 2008-05-09 02:31:53

あなたにオススメの質問