教えて!gooにおける不適切な投稿への対応について

VBAを学習しようと考えている者です。ただし、プログラミング言語に関しては全くの素人なのでご容赦下さい。
質問の核となるのは、
「vbaを学習する際に、C言語を学習して知識を得る事は、その後のvbaの学習・習得に役に立つかどうか?」です。
なぜ、そのような質問をするかと言いますと、とある大学でvbaの習得を学生にお教えされている方の論文を拝見した際に、
「VBAというプログラミング言語は、C言語を最低でも1年間学習した人間でなければ、文法や規則性を記憶したり、定着したりする事が難しい。」
との情報が文章として記載されていたため、突然私のように、言語の学習経験のないものが手を出すと挫折をしたり、理解のスピードが追いつかないのではないかと考えたからです。
様々な質問箱に、VBAと他のプログラミング言語との難易度等の比較は記載されていますが、情報が氾濫していて、どの言語から手をつけてよいか混乱しています。

将来は、VBAを習得できたら少なくとも損をすることは無いだろうと思っています。
どうかどなたか私に知恵や指針を与えて下されば嬉しく思います。

どうかよろしくお願いいたします。m(__)m

gooドクター

A 回答 (6件)

>>けれども、C言語を学習しなくても、VBAを学習するだけで現実には事足りる場合もある。



ええ、そうです。たとえば、上司に「○○するようなプログラムを書いてくれ」と言われたら、VBAで手軽に作れることも多いと思います。それで、目的は達成されます。
プログラムは単なる道具です。板に穴を開けるとき、錐より、電気ドリルがあるなら、それを使えばいいだけです。

しかし、できあがったプログラムを上司が使ってみて、処理速度の不満があったとき、VBAの内部でやっている処理が全く判らないでいたら、対応するのが難しいことがあると思います。
そういうとき、C言語の知識があれば、問題点の発見において有利になると思います。

ちなみに、C言語入門書は多くの書店で目にしますけど、私が学んだC言語の中級以上の書籍って、絶版になっていたり、置いている書店が少ないみたいです。あまり売れないのでしょうね。

P.S.
エクセルVBAの構文をMSで設計した方の書いた書籍を見ると、ビル・ゲーツは経営者であったけど、同時に現場のプログラマを相手にCやアセンブラのコードについて議論できる方であったということがわかります。
日本では、ソフトハウスの社長が、社内で最もPCに弱いってことがあったりします・・。
    • good
    • 0
この回答へのお礼

lv4uさん、再びご回答ありがとうございます。

>P.S.に関して
やはり経営者は、現場に任せきりで上から目線で指示を出していても、その企業は上手く経営を出来なくなってしまうのですね。
確かにそうですね。フルに現場と同等かそれ以上の知識や経験を持つのは、非常に難しい事だと私は考えていますが、基本的な知識や、命令を出すだけで、「あとは全て責任を持って仕事をしろ!」では、部下は経営者を信用しないし、モチベーションが下がる事はイメージがつきます。

>C言語の中級以上の書籍が入手しにくい
そうなんですね。(^^ゞ
今の私のレベルではまだ手にする必要は無い書籍かもしれませんが、その情報はかなり気になります。どれだけ探しても無いのであれば、国会図書館にお世話になって勉強をしようと思います。

分かりやすい丁寧な御回答で非常に助かりました。挫折しないように勉強を少しずつ積み重ねて参ります。
ありがとうございました。m(__)m

お礼日時:2014/01/20 17:15

>、実はそのアルゴリズムを習得するのが、プログラミング上最も時間や労力を裂かなければならない部分なのでしょうか?



本質はそうだと思います。
ただ、それぞれの言語ごとの決まり事を覚えるのにも労力がかかり、障害になるのは確かでしょうね。
    • good
    • 0
この回答へのお礼

ありがとうございます。

どこまで学習・習得できるか分かりませんが、とにかく手をつけるのが重要ですね。

頑張ってみます。アドバイスありがとうございました。

お礼日時:2014/01/21 14:40

補足:「C言語を学ぶ」の解釈。



 私の回答は、正確には「VBAを学ぶ前段としてC言語を学ぶと良い」というものではありません。実際問題として、そんな暇があればVBAを学ぶべきです。

 私が初めてパソコンを買ったのは1979年の秋。まず、MZ-80Kの設計書とその解説を読んでマシン語と格闘しながら入力・演算・出力の流れを追いました。次に、当初刊行が開始された「岩波情報科学」(全24巻)を手がかりに学習を進めました。しかし、一向に、ビジネス用途のソフト開発の目処がつきませんでした。そんな時、社内のコンピュータ学科卒の社員から「フォートラン演習」を譲り受けました。「おっ、これだ!」と言うことで、寝る間を惜しんで全例題をBASICで書くことに挑戦。

 当時のCADは億円単位の代物。そして、その端末は電子タイプライタ。人手による入力が一般的。私は、ほどなくして、それをパソコンに置き換えることに成功。入力とチェックをパソコンで行って最終データをCADに転送するという入力支援システム。なぜ、ズブの素人が、そういうプログラムを書けたのか?それは、「フォートラン演習」を教材に学んだからです。つまり、並び替え、検索、通信要領等をテーマにしたプログラムを書けるようになっていたからです。

 先の回答では、「プログラミング言語C」の全例題をJavascriptでと書いています。目的は、私の入門学習方法である「フォートラン演習」をBasicでと同じことです。「C言語を学ぶ」の正確な解釈は、「C言語の教科書の例題を解くことでプログラムの基礎を習得する」ということです。その場合、Javascriptが一番の候補というのが私の意見。そういう意味です。

 私は、その後、UNIXへと転身しWindows3.1を機にPCへと回帰しQuickC⇒QuickBasic⇒VBと学習を進めました。最後は、Javaで終わりました。つらつらろ、今のVBやVBAを眺めるにつれてある種の怒りがこみ上げてきます。

>オイオイ、昔のCより習得は難しいぜ。
>こんなの、もはやBASICじゃーねー。
>こんなの、素人が最初から取り組む言語じゃーねー。
>もっと、基本演習に特化したっていいじゃねーか。
>それが、BASICの存在意義じゃねーか。

 こういう私の思いが、基礎習得ステージのメインテーマを「フォートラン演習」や「プログラミング言語C」の全例題を解くことにありと回答させたので。少し、「C言語を学ぶべし」と受取られかねない書き方だったと思って補足した次第です。

この回答への補足

フォートラン→「fortran」が、最初の高水準言語であることを、本日とあるプログラミングの本に書いてあった事を知りました。勉強不足で失礼しました。
fortranを全て基礎から頭に入れる時間は無いはずですが、入門程度のサイトを少しずつ拝見している経過をお伝え申し上げます。m(__)m

補足日時:2014/01/21 20:22
    • good
    • 0
この回答へのお礼

ありがとうございます。

「フォートラン演習」ですか。一般に販売されている本なのでしょうか?

補足をしていただいたため、プログラミング言語学習の優先順位や頻度など、学習する方法の勉強になりました。感謝いたします。m(__)m

お礼日時:2014/01/21 14:45

私は、昔のBASIC→Z80アセンブラ(ハンドアセンブル含む)→8086アセンブラ→C→QuickBasic→VisualBasic→現在のVB.Net系の順にやってきました。

結構めちゃくちゃな順番ですね。

C言語やVBAは目的を達成するための手段であって、本来の目的を達成するためのアルゴリズム(語弊がありますが「解法」とでもしておきましょう)などの習得は言語の知識とは別にあります。

例えば、名人にも勝てる将棋対戦プログラムを作ろうとした場合、VBAでもCでもどちらでも構わないのです。(処理速度は置いといて)。

仮にVBAで、頑張ってそのプログラムを作り上げたとすれば、当然そのアルゴリズムはC言語で作り直す時にも役立ちます。これは言語が何だろうが共通です。
逆に、どのような言語を習得したとしても、アルゴリズムを習得しないと、何も作れないのです。
    • good
    • 0
この回答へのお礼

TXV12003さん、御回答ありがとうございます。

なるほど~。アルゴリズム(解法)を習得・理解さえ出来れば、使用する言語はどれでも構わないのですね。そして、アルゴリズムが習得できれば、他の言語にも応用・修正出来る。

…そして、実はそのアルゴリズムを習得するのが、プログラミング上最も時間や労力を裂かなければならない部分なのでしょうか?この仮説は私の推論ですが。

こちらの推論が的を射たものか、よろしければ再びアドバイスお願いいたします。

お礼日時:2014/01/21 08:49

Q、C言語の習得はvbaの学習・習得に役に立つのか?


A、問題は、役に立つように学べるかどうか?

私は、ズブの元素人プログラマです。決して、その道のプロではありません。ですから、この回答は、参考程度に読み流して下さい。

>C言語を学習の有用性の解釈は評論家に任せよ!
>もっと大事なことは、役立つ為にはいかに学ぶか!

これが、私の回答です。

さて、私は、「プログラミング入門CII」の解説と全例題のJavaScriptでの書き方を小冊子にまとめて配布した経験があります。

第1章 やさしい入門_____________JavaScript入門
第2章 データ型・演算子・式_______JavaScriptと変数・演算子
第3章 制御の流れ_______________JavaScriptとプログラムフロー制御
第4章 関数とプログラム構造________Javascriptと関数

のような目次です。この小冊子は、「VBAの基礎の基礎を学ぶ」というサブタイトルが示す通り、VBAの習得を促すためのものです。

<script type="text/javascript">
  <!--
  //
  // Javascript: f=0,20,・・・300に対して、摂氏-華氏対応表を出力する
  //
  var lower = 0; /* 温度表の下限 */
  var upper = 300; /* 上限 */
  var step = 20; /* きざみ */

  fahr = lower;
  document.writeln("<pre>");
  while ( fahr <= upper) {
    celsius = (fahr - 32) * 5/9;
    document.write(fahr + "\t" + celsius + "\n");
    fahr = fahr + step;
  }
  document.write("</pre>");
  //-->
</script>

さて、なぜに「VBAの基礎の基礎を学ぶ」という小冊子を書いたのか?それは、余りにも、つまみ食い的な学習が蔓延していたからです。「変数・演算子⇒プログラム制御フロー⇒関数」という順を追っての学習が完全に欠落していたからです。そういう学習に立ち返るって意味では、C言語を学ぶことは意義あることだと思いますよ。
    • good
    • 0
この回答へのお礼

f_a_007さん、ご回答ありがとうございます。

小冊子とはいえ、プログラミング言語について説明出来るほどの知識や経験をお持ちでいらっしゃる方なのですね。いまだに情報リテラシーに関してさえ、基礎的な知識を持ち合わせていない私にとってはアドバイスいただけて嬉しく思います。
…なので、中段の言語に関しては全く理解できないレベルです。英語に対して抵抗は無いため、「celsius」や「fahr」が「摂氏」「華氏」を表していることは何となく分かるのですが・・・。

>つまみ食い的な学習が蔓延
VBAのみを理解しても、いざプログラムを実行して、書きこんだプログラムが間違っていたら訂正する場所が全然分かりません。では、その後の訂正処理が大変な労力と時間をかけるハメになることを、私は想像しています。プログラムを実行してからでは遅いですよね。

アドバイス、本当にありがとうございました。m(__)m

お礼日時:2014/01/20 16:59

>>「VBAというプログラミング言語は、C言語を最低でも1年間学習した人間でなければ、文法や規則性を記憶したり、定着したりする事が難しい。



情報科学の先生からすれば、そういう意見があるのもわかります。
ほんとうにプログラムの動作を理解しようとすれば、高級アセンブラと呼ばれるC言語だけでなく、アセンブラの理解は必須です。
その考え方からすれば、VBAの理解には、C言語の理解が必須ということになるかもしれません。

私は、BASICインタプリタの動作を機械語レベルで教える本を読んでますので、その先生の意見は判ります。
そして、米国のあるソフトハウスの社長は、「初心者はJavaではなく、C言語を学ぶべきである」と書籍に書かれていましたけど、ほんとうにコンピュータ言語を理解したければ、C言語を学ぶ必要があると思います。

でも、普通の人たちは、TVの動作原理も知らずに、リモコンでTVを使いこなしています。
同じようにC言語を知らず、VBAの使い方を学べば、同様にプログラムを使いこなすことができますし、C言語では30行かかることが1行で可能になることもあったりしますから、学んでいて損することはないと思います。
    • good
    • 0
この回答へのお礼

lv4uさん、回答ありがとうございます。

「VBAだけを学習する事は便利なプログラミング言語の操作を学習するだけであり、根本的にプログラムの動作を理解するには、アセンブラから学習する必要がある。けれども、C言語を学習しなくても、VBAを学習するだけで現実には事足りる場合もある。」

という事でしょうか?
もし、私の理解に食い違いがありましたら、失礼しました。m(__)m

お礼日時:2014/01/20 12:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

人気Q&Aランキング