• ベストアンサー

プログラム初心者に質問

 カテ違いはわざとです。ご容赦ください。  プロのプログラマーをやっております。  IT業界の社会人1年生、あるいは独学でプログラムを始めたばかりの人に質問です。  10月頃から一緒に仕事をしている、新人君ついてなのですが、当初彼は、プログラマーの募集に対して応募してきた人でした。  現在手がけている仕事がそう難しいものではないため、まぁよかろうと思って採用ということになったのですが……。  蓋を開けてみると……(笑) ・「変数」という言葉の意味が分からない。 ・「イフで分岐して」と言っても意味が直感的に理解できない。 ・ループ構造が書けない。 ・あげく出てくる質問は「デフォルトってなんですか?」(笑)  彼がなぜ「プログラマー募集」に応募しようと思ったのかはともかく(将来的にそうなりたいという希望だったのかもしれません)、プロとして仕事ができる状況ではなかったのです。  その中で彼がもっとも手こずったのが、「カウンター処理」です。  ループ処理の中でカウンター変数を+1していき、配列の中の値を1つずつ使っていく、という処理手法ですね。  彼は、これが2ヶ月たった今でも理解できないみたいなのです。  昔の自分がどうだったかを考えてみても、そう手こずった覚えもありません。  奥さん(プロではないが、腐女子向けゲーム作りのスクリプターをやっている)に教えたときも、言葉で言ってすぐ理解してくれました。  そう難しい問題ではないと思うのですが、一部の初心者にとって、これは難しいことなのでしょうか? という質問です。  イエスかノーで答えていただければけっこうです。  何か思うところがおありの方は、お話をお聞かせいただければと思います。

noname#25358
noname#25358

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

  • ベストアンサー
  • miu_chan
  • ベストアンサー率51% (438/853)
回答No.1

独学で、会社でExcel VBAのプログラミングしてます。 1~2年やってますが、他の仕事で忙しいので、 正味1~2ヶ月くらい?です。 ・「変数」という言葉の意味が分からない。 →本を読みながら何とか理解できるけど、 プログラムを動かして不具合が出てから「あ!変数宣言してねぇや!」って感じ。 ・「イフで分岐して」と言っても意味が直感的に理解できない。 →If文を自分で書いたら、わかりました。 分岐、って表現ではなくて「if でそれぞれの条件を設定して」 とか言った方が、慣れてない人にはわかると思う。 ・ループ構造が書けない。 →まだやったことないけど本で見た事がある。 ・あげく出てくる質問は「デフォルトってなんですか?」(笑) →さすがに。。。デフォルトはプログラミング以外でも使ってます私。 「○○さんはデフォルトでテンションが高い人だから」とか(笑)。 プログラマ募集に「未経験者可」となっていたら、 その新人さんレベルの人が集まってきてしまうのは仕方ないと思います。 (そうじゃないなら採用した会社側の問題なので、 ここでぐだぐだ言われてもどうしようもない所です。。。) プログラマはイメージ的に「なんかかっこいい」と思ってる人も多いから。 最近はPCが身近になっているので、 自分でネット検索やメーラーの設定が出来る程度の人でも 「自分はコンピュータは得意だから!」って思いこんでるのでは? プログラミングの用語は、日頃目にしない言葉だし、 自分で書いて体感しないとわからない感覚もあるので、 超初心者向けの本をまずは1冊渡してみてはいかがでしょう?

noname#25358
質問者

お礼

 ありがとうございます。  ちなみに、その新人君はプロの人材営業マンを通して入ってきたプロパーさんで、うちの会社に新卒で入ったとか、そういうことではないのです。  おっしゃるような状況だったら、育てるのもこちらの仕事のうちってことになるんですが、あらかじめ「この人はプロです」と言われて入ってきた人だけに、「初心者の標準値」としてはどんなもんなのかなと思った次第です。

その他の回答 (4)

回答No.5

初心者プログラマでは無いですが >・「変数」という言葉の意味が分からない。 入れる箱と考えて覚えましたね。 (ポインタ変数はちょっと癖がありますが) >・「イフで分岐して」と言っても意味が直感的に理解できない。 英語のそのままの意味で「もしも~だったら」という意味で そのまま理解できるはずですし自分も理解しました。 中学生レベルの英語力さえあればわかるはずです。 >・ループ構造が書けない。 >その中で彼がもっとも手こずったのが、「カウンター処理」です。 個人的には 1+2+3+・・・・+nまでの和をループで作らせて感覚を培ったりさせれば いいと思いますよ。 (応用としてa~bまでの数値の合計とか) >・あげく出てくる質問は「デフォルトってなんですか?」(笑) 英語を勉強させましょう。笑いというか涙もののひどさだと思いますよ。 プログラムを勉強する以前のことから始めないときついかも そもそも未経験として雇ったならしょうがないといえばしょうがないですが その新人君の努力不足に思えますね。

noname#25358
質問者

お礼

 ありがとうございます。  ちなみにデフォルトの件は、ばっちりブログのネタにさせていただきました(笑)  雇用形態としてはいわゆる「未経験者OK」ではなかったはずなのですが、どこをどう間違ったか紛れ込んでしまった、というのが実状のようです。  でも、他の方々の回答も総合して、基礎がないから時間をかけても理解できないものはできないと分かりました(^_^;

回答No.4

一般的には、難しいと思いますよ。Excel等でIF関数等を使っていれば別ですが。 私は元工場勤務でNC旋盤というプログラムで動かす機械を使っていました。通常は簡単な命令を使ってプログラムするのですが、複雑なことはマクロを使います。 このときに、変数やIFを使いました。 しかし、私は趣味でプログラムを少しだけ勉強していましたから簡単でしたが、他の方は説明しても、「へー、難しいことやってるな」って感じでした。 ちなみに、分厚い説明書を全部読めといった上司がその発言だったので、「貴方が読めといったところに書いてあった」と言っておきました。 話はそれましたが、それぐらい一般の人には難しいのだと思いますよ。 やはり。採用時にもっとちゃんと判断すべきだったと思います。

noname#25358
質問者

お礼

 ありがとうございます。 >採用時にもっとちゃんと判断すべきだったと思います。  つまり俺の隣の隣にいるK氏のせいということですね?(笑)  K氏は、彼を採用したとき、#1#2の方々のお礼欄に書いたような理由で、この新人君はプロとしての経験がそこそこあるものだと思い込んでいたようです。  そうでなければ、採用はされなかったと思います。

  • bari_saku
  • ベストアンサー率17% (1827/10269)
回答No.3

元プログラマです。 ・「イフで分岐して」と言っても意味が直感的に理解できない。 最近は、専門学校でフローチャートを書かせない所もあるそうです。 フローチャートをちょっとでも見たことがあれば、一発なのですがね。

noname#25358
質問者

お礼

 ありがとうございます。  たしかに、これについてはそうかもしれませんね。  昔のスパゲッティソースならともかく、「分岐」という言い方は適切ではなかったかもしれません。

回答No.2

プログラマー募集に応募してきたなら、何かのプログラムに関わっている事が前提というのは先入観だと思います。 さらに、プログラムに関しての基本的な知識があると言うのも先入観です。 学校によりますが、構文の詳しい説明をやるとこは少なく、こうやればこうなるということしか教えないので、質問者さんが考えている内容は難しい事かもしれません。 憧れでプログラマー募集に応募したけど、プログラムを作るのは初めてという人もいます。 【学校で習ったプログラム意識=会社で使用するプログラム意識】 ではないので、各企業でそれぞれの教育が必要だと思います。 一昨年、新人としてIT企業に入った自分が思った事は、「学校で習った事が全く役に立っていない。」ってことでした。 最初は丁寧に教えてしっかり吸収させた方が、今後伸びる可能性が高いです。

noname#25358
質問者

お礼

 ありがとうございます。  はい。おっしゃるとおり、単に憧れだけでプログラマー名乗ってるのかな、という感じはしています。  ただ、今回に限っていえば、専門の営業マンを通してプロとして紹介された人なので、そういうレベルの人ではないはずだったのです。

関連するQ&A

  • Javaの質問です

    Javaの質問です。 この問題で繰り返し処理を3回やるときに 、 カウンタ変数が0、1、3とあがっていきますが3がどうやったらでてくるのかわかりません。

    • ベストアンサー
    • Java
  • perl:ループのカウンタ変数の値を保持したい。

    While文のループのなかにfor文でループをまわしているスクリプトなのですが、 forの中でカウンタ変数をつくり、ループ回数を計測しております。 またforの中である条件を満たした際に、lastでforを抜け、引き続きWhileのループを継続するという処理をしております。 $i=0; While(○○){ 処理1    for(××){ 処理2 $i++;      if($i >=100){  処理3       last; } } } ここで、一度for文のif文で一度forループを抜け、Whileでループをし、またforループに突入した際に、前回forループでカウントした$iの値を保持したまま、そのつづきから$iのカウンタを動作させたいのですが、$iの値はforループを抜けるとリセットしてしまいます。 このような場合、どうすれば$iの値を保持できますでしょうか。 お詳しい方、宜しくお願い致します。 ※ネストがうまく表現できず、みずらくてスミマセン。

    • ベストアンサー
    • Perl
  • エクセルマクロ 異なる変数でのループ

    エクセルマクロのループ処理に関して、 異なった変数を使いループをさせたいです。 例えばA~Dまでの変数があり、変数Zに順々に変数を代入して処理をさせたいです。 ループ開始 Z = [A-D] (変数Zを使う処理) ループ終了(繰り返し) 1回目にA 2回目にB ・ ・ といったイメージです。 初歩的な質問で恐れ入ります。 よろしくお願いします。

  • 変数名のつけ方が苦手みたいです><

    変数名のつけ方が苦手みたいで困っています。 「変数名のつけ方」などのサイトも読んでいるのですが、 ここでも質問させてください。 ・変数を作るとき(その言語での規則とは別に)、 みなさんなりに工夫されていることとかあれば教えてください。 ・それから、ループ処理のカウンタには、 伝統的に i~n がよく使われているみたいですけど、 どうしてこの6文字なんでしょうか? ・あと、これはプログラムについての質問ではないのですが、 ディレクトリ名やファイル名の上手なつけ方についても、 教えてほしいです。昔は8文字と拡張子のようでしたが、 今もこれを守っていますか? たくさん聞いてすみません。どれかひとつでも結構です。 よろしくお願いします。

  • Windowsのバッチ処理のループカウンタについて

    Windowsのバッチ処理(パワーシェルだからシェルスクリプト風?) についてお尋ねします。 以下はループ処理です。%%iというところがループカウンタで%%iが整数です。この例では1から10です。 for /L %%i in (1,1,10) do ( ここでいろいろ処理 ) ここで質問ですが、整数とは1,2,3,...10ですが、01,02,03,....10のように2カラムを使うものとして利用することは可能でしょうか。 3桁だったら、001,002,,,100 のように変化していくようなものですが。文字列のような整数のような位置づけはよくわからないのですが。 バッチ内部は変数に型がないようです。フォーマット指定のような印象なのですが。 よろしくお願いします。

  • fortran:関数副プログラムへ関数の引数 以外の変数を渡すには?

    初心者で解説書のどこを見たらよいのかも分からない状態です。キーワードだけでもお願いいたします。 Fortranでプログラムを作っていますが、次のような状況です do i=・・・ do j=・・・ call【既成のライブラリ関数名】(f,・・・) ・・・・・・・ (ほかの処理) ・・・・・・・ end do end do 既成のライブラリ(今は数値積分)の要求する引数の中で1変数の関数名が要求されるのですが、実は今の自分の処理している問題ではfがdoループのカウンタの"i、j"に依存するのです。 実は、fはある行列Hにxで表される量を足したり引いたりした後の逆行列の(i,j)成分です。 だからfの依存性はf(x,i,j)というところです。 この状況でライブラリにfをあたかも積分変数の1変数関数であるかのようにわたすにはどうしたらよいのでしょうか? ご存知の方はよろしくお願いいたします。

  • ゲームプログラマを目指しています。

    カテゴリー違いだったら申し訳ありません・・・・・ ゲームメーカー就職(ゲームプログラマ)を目指し、現在「C言語」を必死こいて勉強している学生です。 そこで幾つか質問があります。 1.そもそも「ゲームプログラマ」として会社に応募するには「C/C++」を完璧にマスターしていないといけないのでしょうか? 2.ゲーム開発には「OpenGL」や「DirectX」といったAPIの知識が必要不可欠だと聞きます。 それなのに有名メーカーの「プログラマ」の募集要項を眺めても、それらの言葉が出てきません。 「OpenGL」や「DirectX」といった知識が求められていないのは何故なのでしょうか? 3.「プログラマ」の募集要項に「応募の際に自作ゲームを提出する」とありますが、どの程度の物を作ればよろしいのでしょうか? バリバリの3Dゲームとかそうゆうレベルのゲームでないと採用というのは難しいのでしょうか? 幾つも本当に申し訳ありません。 よろしくお願いします。

  • 職業Windowsプログラマの方へ質問です。

    職業Windowsプログラマの方へ質問です。 Windowsプログラムの勉強を始めて早2ヶ月ちょっとたちますが 連日悩むことばかりです。 関数多いし引数多いし変数の型多いしメッセージ&パラメータもめっちゃ多いし。 お仕事でプログラム作られてる方ってまさか全部覚えてるんですか? この処理どうやったらいいんだろうって悩んだりしないんですか? 僕はしょっちゅうです。 是非そのへんが聞きたいです。 合わせて一つ教えてください。 switch文の中でbreak;とreturn 0;の使い分けがわかりません。 どちらを使っても今のところ何の問題も起きていません。 break;はその処理を抜けさせて次へ移る。 たとえばforやifで特定条件に合致したら抜ける。みたいな使い方しています。 return 0;は関数等で戻り値が必要ないときとかにvoidと合わせて使っています。 switch文ではどのように考えればいいんでしょうか?

  • 配列と他の変数のメモリ領域重複の問題について質問

    dsPICで配列を使用する際、他の変数もその配列の存在するメモリ領域に配置されてしまいます。 プログラムにはC言語を用いています。環境は「MPLAB C30 v3.31」、「MPLAB LINK30 v3.31」「MPLAB v8.85」です。 状況としてはunsigned char型で要素数320の配列をグローバル宣言します。そしてmain関数やその他の関数内でローカル変数を宣言するとその変数が配列の中に存在することになってしまうというものです。色々試したところ、そのローカル変数をstaticで宣言するとそのような症状は出なくなりました。 この現象には、初期化をする関数内でカウンタとしてローカル変数を宣言し、for文で配列を0でクリアさせようとしたところ、MPLABSIMでデバッグすると永久ループしたことから気づきました。Watchを用いて確認したところ配列の中にそのカウンタ変数が配置されていたため最終的に自分自身を0でクリアしてしまうことで永久ループしてしまうことがわかりました。 なぜこうなるのかよくわかりません。この配列以外にはおおきな領域を必要とする変数は宣言していませんのでData memoryの容量的な問題ではないと思っています。staticで宣言すれば何とかなりますが、これでは無駄なメモリを消費してしまいます。また、絶対アドレス指定をする方法もありますが、「ignoring address attribute applied to automatic 変数名」というwarningがでて結局出来ませんでした。 。 このような現象を起こさせない様にするため,、確実にメモリを確保するためにはどうすればよいのでしょうか。 この問題のために先に進めず、大変困っております。どうかご教授ください。 もう一つ、変数の生存期間について質問なのですが、ある関数内で宣言したローカル変数をカウンタとして使い、指定の回数だけ他の関数を繰り返し実行する場合、他の関数に飛んだ時もそのローカル変数は確実に生存しているのでしょうか。重ねてお願いします。 不足がございましたら補足しますのでお教え下さい。

  • 未初期化変数の扱い方についての質問

    Microsoft Visual C++ 2008を使用しています。 #include <stdio.h> int main() {     float a;         … for(;;) {          …          scanf("%f",&a);          …          printf("%f",a); }       } このようなプログラムを書いて、実行しました。 aという変数に数字を入力すれば問題ないのですが、誤って文字を入力してしまうと、-107374176という値が連続で出力されます。(for文のループが無限に繰り返される。)  for文ではあるキーワードを入力するとループから出るというプログラムになっています。  間違って文字を入力する時にどの文字を入れても必ず、-107374176の値になるので調べたら、「-107374176は0xccccccccでvcのデバッグビルド時の未初期化変数の値と一致する。」という内容をネットで見つけました。  変数として定義されていて、初期化されていない変数を未初期化変数ということなので、aが未初期化変数になるのはわかるのですが、なぜループが無限につづくのかが理解できません。    質問の回答をよろしくお願いします。

専門家に質問してみよう