• 締切済み

新入社員プログラマーですが周りについていけません

文系出身新入社員プログラマーの22歳の女です。 今月入社致しました。プログラミング経験はないです。 今は研修期間で、C言語を学んでいるのですが、周りに全くついていけていない状態です。 同期も文系卒のプログラミング初心者が何人かいますが、その同期は自分でプログラムを組めるのに私だけが組めません。何をすればいいのか、どういう風に書けばいいのか考えればいいのかわからないのです。 研修中に質問したりもしますが、何度聞いても何を言っているのか、どうしてそのコードを書くのか理解できません。 もちろん帰宅後や休日も参考書などを使って遅くまで勉強はしていますが、それでもどうすればいいのかわからないのです。勉強の仕方が間違っているのかもしれません。参考書を読んで載っているコードを書いて、あとは章末の問題を解いて…(わからないときはページを読み直したり)を繰り返しているのですが、それでもできません。まず専門用語なども中々理解できなくて辛いです。 C言語を学び始めてから食事も中々喉を通りませんし、精神的にとても苦しく、情けないのですが行き帰りの電車の中で泣いてしまっています。 1ヶ月しか経っておらず、まだ仕事の内容もわかっていないのにこの状況です。 向いていないのではと思い、転職も考えましたが、転職するにもこの早さで辞めても流石に先があるとは思えないので出来ればしたくないです。頑張りたいです。 同じような悩みをお持ちだった方や業界の方、いらっしゃいましたら勉強方法、仕事の仕方のアドバイスなど宜しくお願いいたします。

みんなの回答

  • sheltem2
  • ベストアンサー率0% (0/0)
回答No.39

このハム本を読めば、1日で大体のことは理解できるよ。↓ http://p.booklog.jp/book/74354 本質的なところを踏まえて理解しやすい。覚えやすい。 入門書に書いてない重要なつまづきポイントがほとんど書いてあり、 確実にステップアップできる。 ヘネパタまで読む必要はないという人には丁度よい。

参考URL:
http://p.booklog.jp/book/74354
全文を見る
すると、全ての回答が全文表示されます。
回答No.38

私も文系からプログラマーになりました。 ただ辞めてしまえ、と言うのは簡単ですが、嫌な思いをしてせっかく入った会社です。 お金を貰いながら勉強をさせてもらえるのだから甘んじて、ゆっくりやりましょう。 まず肩の力を抜いて下さい。 一発で上手く行く事なんてまずありません。 とにかくtry and error です。 失敗するのは大切です。失敗したら何が原因か考えたり調べる事も忘れずに。 理解出来ない事があるとしても、何が分からないか分析してください。 ポインターが難しいと感じるのでしたら、デバッグをしてください。 可視化できると理解が速いです。 学校の勉強とは違い正解がないので、他人にとやかく言われません。 (実際には定石はありますが……) せっかく踏み入れた世界です。 のんびりやってみましょう。

全文を見る
すると、全ての回答が全文表示されます。
回答No.37

はじめまして。 技術的なアドバイスや知識については、いろんな方からアドバイスされているので、 私からはプロブラムを学ぶにあたっての心がけを。 全く未経験の事項を学ぶことは相当なストレスがかかります。 ましてや、それで成果を求められたり、評価される環境にあるなら不安でしかたないでしょう。 私にも経験があります。 それこそ、人に何を聞けばいいのかすら、わからないような状況だったりしませんか? 仕事としてプログラムを書くようになって、かなりの年月が経ちました。 その中で学ぶ上で良かったかな?と感じるのは、「十分な睡眠を取る」ことです。 今、いろんな情報を頭に詰め込んでいる最中だと思います。その情報は睡眠中に整理される そうなので、ゲロ吐きそうなくらい勉強したり、仕事したりした際には、じっくり休みましょう。 経験上、昨日まで理解できなかったことが、次の日になったらスルリと入ってくることはあります。 遅くまで勉強されているそうですが、疲れが残っている状態での学びは害になるので、無理せず、 適度な時間に休んでください。 そして、これが一番大事。 「できなくてもめげない」です。まあ、そのうちわかるようになるだろ?くらいなメンタルで行きましょう。 何にも予備知識がない状態から、学び、「スキル」としてすぐに身に付けるられるものではないです。 ご飯食べれないくらい、悩むなら寝ましょう。 人には特性や適性があり、同じカリキュラムをこなしたとしても、横並びで出来るようになるとは限りません。 きっかけさえつかめれば、後はなんとでもなります。 また習熟が早い子であっても、その後、優秀なエンジニアとして仕事できるとも限りません。 10個あることを、1ヶ月だろうと1年かかろうと理解すれば良いのです。 C言語を勉強中とのことでしたが、どんな勉強をされていますか? また、学生時代、どんな方法で知識を得てきましたか? どうやったら、C言語を理解できるか?どうやったら仕事を理解できるようになるか?を考えましょう。 私が今までやってきた方法は、「とりあえず何か作ってみる」でした。 たとえば「住所録を作る」としましょうか? 住所録の機能を簡単に列挙します。  ・インプットとして、氏名、年齢、郵便番号、住所、電話番号を入力できる機能を作成  ・アウトプットとして、入力した氏名、年齢、郵便番号、住所、電話番号を一覧で表示できる機能を作成  ・アウトプットとして、入力した氏名、年齢、郵便番号、住所、電話番号を名前順に並べて表示する機能を作成  ・検索機能として、入力した氏名を表示する機能を作成  ・入力した氏名、年齢、郵便番号、住所、電話番号を更新する機能を作成  ・入力した氏名、年齢、郵便番号、住所、電話番号を削除する機能を作成 この中の1つの機能を作ってみるでも良いと思います。 C言語の仕様とか考えないで、どうやったらできるかを考察しながら、最終的にプログラムにしてみてはいかがでしょうか? とはいえ、これだけやるにしても、かなりの時間を要すると思います。 頭皮がめくれ上がるくらい悩むかもしれません。 そんなときは、眠ったり、他のことして気分転換してください。 ちなみに参考書ですが、分厚い洋書(500ページ~1000ページ)のものがよいかもです。ビギナーが1からプログラムを学べるように構成られています。 また、Youtubeとかにも英語になってしまいますが、ビギナー用の演習動画があったりします。 こちらを参考にされても良いかと思います。 わかんないことがあれば、とりあえずわからないことを人に伝えることを勧めます。 話をしていくうちに、いろいろ頭のなかを整理できてきたりします。 また、優秀な人が書いたプログラムを読むことを勧めます。 プログラムは、必ず書かなければならない理由があって記述されるものです。 コピー&ペーストにまみれたグッチャグッチャなコードを見ても、脳内に発生する「ノイズ」にしかなりません。 GitHubというオープンソースのサイトがあるので、そこに投稿されているコードが大変、参考になります。 プログラマの仕事は、ざっくりいうと 「インプット(学んだもの)」したものを「アウトプット」していく作業です。 インプットはできるけれどもアウトプットが駄目すぎて話にならない人も多く、クソみたいなコードを書いてプロジェクト を炎上させる輩は多いです。 日本では1つプロジェクトで7割~8割のエンジニアがそんなクソみたいなコードを生成します。 願わくば、しっかりとしたアウトプットを出せる、エンジニアに成長してもらえると嬉しいです。

全文を見る
すると、全ての回答が全文表示されます。
回答No.36

質問内容からすると、C 言語でつまずいている。というよりはプログラムを作ると言う行為そのものに難しさを感じている様に思えます。 「プログラムを作ると言う行為」とはどういう事なのか、具体的に何をしていくのか、的確に解説してくれる本はなかなか無いと思います。日本語で比較的優しく書かれた本として次の本を上げておきます。恐らくあなたの研修とは全く関係がないゲームを作ろうと言う本ですが、プログラムを作るという行為について、良く書かれた本です。 『プログラムはこうして作られるプログラマの頭の中をのぞいてみよう』 http://www.amazon.co.jp/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%81%AF%E3%81%93%E3%81%86%E3%81%97%E3%81%A6%E4%BD%9C%E3%82%89%E3%82%8C%E3%82%8B%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E%E3%81%AE%E9%A0%AD%E3%81%AE%E4%B8%AD%E3%82%92%E3%81%AE%E3%81%9E%E3%81%84%E3%81%A6%E3%81%BF%E3%82%88%E3%81%86-%E5%B9%B3%E5%B1%B1-%E5%B0%9A-%E6%A0%AA%E5%BC%8F%E4%BC%9A%E7%A4%BE%E3%82%BB%E3%82%AC/dp/479803925X 読んで「解った」になるか、それとも「この考え方について行けない」になるかで、そもそもプログラムを作れる様になるかと言うのが、自覚できるのではないかと思います。 もし、本を読む前に身近なことで、まずプログラマに向くか考えてみたいと言うのであれば、町中の食堂、レストラン、お弁当、あるいは総菜店で見つけた食べ物がどうやって料理されているか、想像できるでしょうか? 「材料・道具」、「煮る 焼く 蒸す 揚げる 炊く」などの調理行為、具体的な「調理手順」、「材料・調味料の分量と味の関係」を想像できるでしょうか? 付け加えて言うならば、作った後どれだけ日持ちするか、冷凍保存できるかを見込めるでしょうか? 料理が既に得意であれば衣服で置き換えて考えてみてください。 「レシピを見れば簡単」と、思っているようであれば、プログラムを作るというよりは目的のプログラムを見つける力を付けた方が良いでしょう。ただし、厳しい言い方ですが作れる様にはなれません。 理系(情報系)の教育課程では、誤解を恐れずに言うならば、「材料・道具」→「プログラミング言語などの処理系」、「コンピュータの動作原理」。「煮る 焼く 蒸す 揚げる 炊く」→「基本的なアルゴリズム」。「具体的な調理手順」→「設計論」、「構造化」、「オブジェクト指向」、「デザインパターン」。「材料・調味料の分量と味の関係」→「計算量」。の様な感じで 4 年間の専門課程が組まれます。加えて理解に必要な数学・物理も履修します。 それを 2, 3 ヶ月の研修で完了するなど無理な話です。そうです、これから 5, 6 年は理解に時間を掛ける必要が有るのです。長いですよ。 私も町中で見かける小さなガジェットに入っているプログラムを作ってきました。とある所を探せば自分が作ったソースコードも見つかります(名前を入れていないので証明はできないですけれど、解説くらいはできるかな)。しかし、辛いことも多かったです。今はリタイアしています。

全文を見る
すると、全ての回答が全文表示されます。
  • rifbon
  • ベストアンサー率0% (0/0)
回答No.35

最後の自己回帰を訂正いたします。 最後にC言語では関数のなかで、また自分自身を呼び出して実行させるような自己回帰的なこともできます。 例えば累乗計算などです y=10*9*8*・・・*1; int n=y=10; keisan(n){// 関数の引数はn if n>1 {y=y*(n-1); n=n-1; keisan(n);} else break;//強制的ブレーク、すなわちkeisanから抜ける }; などです。 ただし、スタック領域を爆食いするので気を付けなければなりません。 以上です

全文を見る
すると、全ての回答が全文表示されます。
  • rifbon
  • ベストアンサー率0% (0/0)
回答No.34

(前ぺージより4ページ) 例:  x=x+1; 説明: xというアドレスの内容(データー)に1を加算し、その結果をxというアドレスに再び書く(出力)することです。 従って、アドレスxにあった古いデーターはこのコマンドにより1を加算されて新しいデーターとしてxのメモリーに記憶されることになります。 例えばxのアドレスが0x200番地だとします。 この0x200番地のメモリー内容はノイマン型(ハードウエアー)のレジスター(一時記憶装置)に蓄えられた(読み込まれた)後、1を加算されて新しいデーターになります。 その新しいデーターはレジスターに残っていますので、そのレジスター内容(データー)を0x200というアドレスのメモリーにライトバック(書き換え)されます。 この加算式は先にメモリーのデーター入出力でハードウエアーの説明をしたプロセスを順次行いながら結果を0x200に残す、ということになります。 すなわち 0x200からデーターを読み込んで、 読み込んだデーターに1を加算し、 また0x200に計算結果データーを書く。 というプロセスを上記の一行の記述で実現しているのです。 さて、ここで疑問がわきますよね? 変数”x”ってなに?何者? これはメモリのアドレスを示しています。人間には16進表記の0x200なんて使いにくいですよね。人間には訳がわからないし、プログラムを記述しているうちに他のメモリーアドレスと混乱しますね。 ですから人間にわかりやすいように16進表記のアドレスの代わりに文字(列)を使うのです。 これはプログラムで使うときには#defineリストで定義するのです。 #define x  0x200; これは0x200という16進表記の数値を文字”x”とします、という定義(マクロ定義ともいう)です。 もちろん”x”でなくてもよいのです。 例えば #define watashi  0x200;  このように定義すると、上記のコードは  watashi=watashi+1; となります。 このwatashiという変数はコンパイル時は0x200という数値に置き換えられます。 例 #define suuchi  0x100;; #define watashi  0x200; #define anata   0x400; #define who    0x1000; #define handan  if suuchi > 0 who=watashi else who=anata; このように定義したとします。 C言語プログラムソースコードでは handan; と、プログラムファイルに一緒に記述します。 これはコンパイルされると  if suuchi > 0 who=watashi else who=anata; と置き換え、なおかつ if (0x100)>0 (0x1000)=0x200 else (0x1000)=0x400;   /*()内16進表記はメモリーアドレス、それ以外は数値データー*/ と置き換えられ、最終的には  s1)0x100アドレスの内容(データー)が0以上(すなわち正(プラス))なら    0x1000というアドレスに0x200という数値を記憶させる     (who=watashi は (0x1000)=0x200となっているので)  s2)そうでなければ(すなわちsuuchiが負(マイナス)なら)    0x1000というアドレスに0x400という数値を記憶させる     (who=anata は (0x1000)=0x400となっているので) と動作するようなプログラムコードがコンパイラにより生成されます。 このように#defineの定義はデーター数値や一行プログラムまで定義できます。 このように#defineは無味乾燥な16進表記数値を、血の通った文字列で定義することにより、より人間に直感的に見せますよね。 なお#defineはリストによることもできます。 仮のファイル名を define_list.defとします #define suuchi  0x100;; #define watashi  0x200; #define anata   0x400; #define who    0x1000; #define handan  if suuchi > 0 who=watashi else who=anata; と定義ファイルを作成し プログラムファイルで冒頭に #include define_list.def;//定義ファイルを取り込みする iroiro() {//しいて言えば”いろいろ”というサブルーチン handan; }; としても同様になります。 以上ノイマン型のコンピューターの基本はIOバスを通してデーターの入出力を行う、というのが実態です。 もっと具体的に記すと #define Lamp  0x1000; #define ON   1;//0x1としても良い #define OFF  0;//0x0としても良い define  watashi 0x200; if watashi> 0 Lamp = ON else Lamp = OFF; そしてハードウエアーとしてLamp (0x1000)のアドレスのIOの0ビットに ランプが配線されているとします。 上記のプログラムを実行すると  S1)もしwatashi(の内容データー)が正(プラス)ならLamp に数値1を入れる(記憶させる)      ランプが点灯する  S2)もしwatashiが負(マイナス)ならLamp に数値0を入れる(記憶させる      ランプが消灯する) となり、このような人間に見える形で動作させることができるのです。 最後にC言語の難しいポインターの説明です。 ポインターとは上記ノイマン型コンピューターのハードウエアー三大構成要素のなかで、プログラムカウンターのことです。 すなわちC言語では変数の前にアスタリスク(*)をつけることにより、直接プログラムカウンターを制御してしまうことです。 それゆえ、時としてC言語は低級な言語と言われることがあります。 具体例を示します。 int *watashi;//ポインター定義 この定義はwatashiという変数内容はアドレスを扱うことを意味します。 そしてwatashiという変数はアドレス0x200番地を指しているとします。 例 watashi=0x600;//watashiのメモリーには0x600という数値が入ります。         //しかしこれはIOのアドレス(0x600)です。         //単に数値としても扱えて、演算もできます。 *watashi=1;//IO アドレス0x600に1という数値を入れます(記憶させます) このようにx=1のように直接xのアドレスに1を入れるのではく、 watashiのメモリーにある数値をアドレスとみなして、そのアドレスにジャンプ(プログラムカウンターを0x600と書き換え)させて、そのジャンプ先(0x600)のIO (メモリーとしても良い)に1を記憶させるのです。 すなわち間接アドレッシングです。 またアンパーサンド”&”を使うことがあります。 int *p;//ポインターpを定義 p=&watashi; これはpというIOアドレスにつながっているメモリなどのアドレスへwatashiという変数のメモリー番地(ポインター)を記憶させます。 関数のポインターも定義できます。 void  *abc();//返り値のない関数。strでもintの関数でもよい  //abcという変数には実際に実行する関数の先頭アドレスが入る またポインターのポインターの・・・ポインターというのも定義できます。 int ****・・・*P; void ***・・・*abc(); 間接アドレッシングはどんな時に有効か、というと ・メニュー関数をリスト化する ・関数ライブラリーなどの中の関数で、引数がポインター指定となっている場合 文字列の先頭アドレスを指定する場合 などなど・・・ 最後にC言語では関数のなかで、また自分自身を呼び出して実行させるような自己回帰的なこともできます。 例えば累乗計算などです y=10*9*8*・・・*1; int n=10; int y; keisan(n){// 関数の引数はn if n>1 {y=n*(n-1); n=n-1; keisan(n);} else break;//強制的ブレーク、すなわちkeisanから抜ける }; などです。 ただし、スタック領域を爆食いするので気を付けなければなりません。 以上です

全文を見る
すると、全ての回答が全文表示されます。
  • rifbon
  • ベストアンサー率0% (0/0)
回答No.33

(前ページより:ぺーじ2) step16)メモリーでは与えられたメモリー・アドレスをラッチ(記憶)してから、該当するアドレスからデーター(実は何らかの値)をデーター・バスへ引き出す。 step17)メモリーではデーター・バスからIOバスへデーターを乗せる(出力する) このときノイマン型ではIOバスはすでに信号入力状態へ変化させている(変化させないとバスの衝突(入出力衝突)になるため) step18)ノイマン型では、読み込んだデーターをターゲット・アドレスへ書き込みます。一般にはターゲット・アドレスはノイマン型の一時的なレジスター(メモリー)です。 ですからレジスターに書き込むときはIOバスはハイ・インピーダンス(ハードウエアーとしては入出力禁止状態)となります。 このようにメモリー側も必要に応じてハイ・インピーダンスになったり、入力または出力有効になったりと自動的に動きます。 以上でプログラムのREAD命令は実行されます。 WRITE命令もデーターの入出力は逆ですがこのように自動的に実行されます。 アセンブラなどではあらかじめターゲット・メモリー(内部レジスター)などが明示的に決められたコマンド(命令)もあります。 コンピューターではコマンド(命令)、数値データーは区別がありません。 あくまでも、読み込んだ順序でコマンドか、データーかを区別します。 従ってプログラムのメモリーに配置されるデーター順序は重要です。 また、ターゲットが他の外部入出力でも同じ動作をするようになっています。 例えば外部記憶装置、プリンター、モニター、機械の入力である操作パネルや出力であるランプ、モーター、エアー(オイル)バルブ、その他も同様です。 以上でハードウエアーのプログラムカウンターとIOバスの説明はおしまいです。 さて、割り込み(INTERRUPT:インターラプト)の説明です。 説明として仕事をしている時を思い出してください。 あなたが今仕事をしている途中で、誰かが「ちょとすまないけれど、この仕事を至急やってください」と言われたとします。 これを割り込みTASK(タスク)、割り込みJOB(ジョブ)と言います。 文字通り、仕事中なのに割り込まれたのです。 しかし、この割り込みTASKをやらなければなりません。 あなたは、その仕事するためにどうしますか? この割り込みを実行するために、きっとあなたはやりかけの仕事の結果を、または計算結果をメモに書いて机の上に、または引き出しにメモを置くでしょう。 実はこのメモをコンテキスト(CONTEXT)と言います。 このコンテキストを置いた机の上、または引き出しなどをスタック(STACK)と言います さて、割り込みの仕事が終わりました。 そこであなたは、引き続き今までの仕事をするために、先ほどのコンテキスト(メモ)を取り出し、メモを見ながら仕事を続けることになります。 このようにコンピューターも優先度の高い仕事として割り込みを許しています。 そのために割り込まれるとコンテキストをスタックという特別に指定されたアドレスに自動的にハードウエアーが記憶させてから、割り込みのタスクを実行します。 割り込みタスクが完了すると、ハードウエアーは自動的にコンテキストをスタックから取り出して計算途中のタスクを続行するのです。 これが割り込みの概要です。 ですから割り込みに対してはプログラマーはプログラムを組むうえで考慮することはしないのです。 なぜならいつ割り込まれるかわからないからです。 もしあなたの作ったプログラムを実行中割り込まれたら、それはハードウエアー(ノイマン型)がすべて必要なことを実行してくれます。 この割り込みにも複雑なことが多々発生いたします。 すなわち割り込み仕事をしているのに、またまた割り込み、またまたまた割り込み・・・。 このような状態を「多重割り込み」と言います。 しかしプログラムを作成するうえで気にすることはありません。 多重割り込みもハードウエアー(ノイマン型)は機械的に、そして自動的にどんどんコンテキストをスタックに積み上げて行き、そして最後の割り込みタスクが完了すると、スタックに積み上げてあったコンテキストを上から取り出して、割り込まれた途中の計算をしていきます。 コンピューターは最後に割り込まれたタスクを順次完了させていき、 そして最初に割り込まれたタスクを完了すると、最後にスタックに積まれたコンテキストを取り出してあなたの本来の仕事を続行することになります。 このコンテキストを積み上げていくメモリー領域をスタック領域といい、スタックはLIFO(LAST IN FIRST OUT:後入れ、先出し)でスタックから自動的に取り出されます。 このスタック領域はソースプログラムをコンパイルするときに、最初にコンパイルファイルでスタック領域をメモリー上に割り振るように指定します。 LIFO(エル・アイ・エフ・オー)は最後にメモリーに積み上げられたものから順次取り出すことを言います。 一般にスタック領域のメモリーの先頭は一番アドレスの高いところ(メモリーの終わりのところ)にするのが一般的です。 そしてスタックカウンター(スタックアドレス発生カウンター)なるものがノイマン型のハードウエアーにはあります。 このスタックカウンターはスタック領域の最新のアドレスを指示しており、割り込みが発生するたびにコンテキスをスタックカウンターのアドレスよりメモリーにデーター積み下げて(アドレスは若い方向へ、すなわちカウントダウン)いきます。 割り込み処理が完了するとスタックカウンターのアドレスの一つ手前から順次データーを取り出して、最後にスタックカウンターの値を書き換えて割り込みは終了です。 こうして自動的にLIFOを実現しています。 先ほどプログラマーはプログラムを組むうえで割り込みを考慮しなくても良い、と書きましたが正確には割り込まれるプログラムには考慮しなくてもいいのです。 しかし、割り込み処理プログラム(このプログラムは割り込みによってのみ動作するプログラム)では、明示的にプッシュ(PUSH)によりコンテキストの退避(スタックに積み上げること)、割り込みタスク終了ではコンテキスト復元(ポップ:POP)を明示的にプログラムとして書かなければなりません。 なお、割り込み最後にretern interruptの記載により割り込み処理を抜けるときに、スタックカウンターに新しいスタックアドレスを自動的に書き換えられます。 最近のC言語をはじめとする高級ソフトウエアーではキーワードとしてINTERRUTなるものをプログラムの冒頭に記載し、このプログラムは割り込み処理用として明示的に記載すると、コンパイラーがレジスターのプッシュ、ポップのコード、retern interruptキーワードを発生してくれます。 これはコンパイラーのオプションなどを見るとあるかもしれません。 なお、スタック領域は無限にあるわけではなく、通常のタスクで使用するメモリーとは衝突しないようにしなければなりません。 従って、スタック領域は制限を設けることになり、多重割り込みにも制限が発生することになります。 反対にFIFO(FIRST IN FIRST OUT:先入れ、先出し)というものがあります。 これは、メモリーに最初に入ったものから順次データー処理すということです。 イメージでいうと、データーのところてんです。 ところてんを入れる箱をメモリーと思ってください。そして後ろからところてんを押し出すというイメージです。 これは例えば待ち行列理論におけるデータキューです。 キュー(QUEUE)とはまとまったデーターの入れ物(メモリー群)です。 このキューに入れられたデーターは次々とデーターを入れていき、キュー(のメモリ)がいっぱいになると、最初のデーターが押し出されます。 そして次々に押し出されたデーターを計算に使っていくのです。 リングバッファーメモリーなどがこれに相当します。 長々とノイマン型のコンピューターのハードウエアーについて記載してきましたが、C言語の説明に移ります。 おそらくC言語で一番悩むのがポインターということだと思いますが、その説明は最後にします。 C言語は自然な言語を基に作られています。 すなわち人間に対して直感的に理解できるような構成です。 例えば INPUT(・・・) 引数に従って入力せよ OUTPUT(・・・) 引数に従って出力せよ PRINT(・・・・)引数に従って印刷(出力)せよ PRINTF(・・・) 引数によるフォーマットで印刷(出力)せよ などです。なお(・・・・)は引数(ひきすう)と言って一つのフォーマット(規約)のようなものです。 制御文としてWHILEやIF~ELSEなどがあります。 これらの構文は専門書によるものとして、基本的な問題をハードウエアーと織り交ぜて以下に説明します。 (次ページ3へ)

全文を見る
すると、全ての回答が全文表示されます。
  • rifbon
  • ベストアンサー率0% (0/0)
回答No.32

コンピュータシステムのハードウエアー(回路設計)、ソフトウエアー(アセンブラ、C言語、HDLでのIC内部回路設計など)を業務としている男性です。 文系ということですが、もしかしたらプログラムを通して深読み(なぜこうするの?、なぜ?なぜ?)という疑問が出てきて、そこを理解しないと先に進めないタイプではないでしょうか? そこでノイマンのコンピューター原理をまず説明します。 ノイマン型は今でもコンピューターの基本であり、非ノイマン型を追い求めている現状です(原理的には完全な非ノイマン型はできていません) ノイマン型はどこかに計算手順、数値データ等を外部装置の決められたある処に初期状態として蓄積します。コンピューターはその計算結果として人間に目で見える形(例えばプリンターによる印刷、モニターによる表示、ランプの点灯消灯、モーターのオンオフ等々)として出力します。 したがって、人間に対して何らかの出力をしないシステムは、システムの自己満足でしかなく、それは人間にとってはただの箱となってしまいます。 さて、回答のなかで 参考URL:https://twitter.com/mugi1208?lang=ja とうのが紹介されており、私も読んでみましたがちょっと原理としては不満足なようが気がしますので、ここで簡単にコンピューターの基本原理を説明します。 まず、ノイマン型のハードウエアー基本はたった三つの基本構成で成り立っています。 1.プログラムカウンター(C言語ではポインターと呼ばれ、アセンブラではアドレスと呼ばれている) このカウンターはアップ・カウンターのみであり決してダウン・カウントはしない。 2.IO(アイ・オー:入出力INPUT_OUTPUT:メモリー、外部入出力としてのスイッチやランプ、プリンター装置、モニター等々を接続するためのアドレス・データー・バス・ライン) *バス(BUS)とは、この場合電気信号の通り道だと思えばよい。 一般に8ビットコンピュータでは8本の窓口(IOバス・ライン)、16ビットでは16本、32ビットでは32本・・・で構成される。 IOバス・ラインは入力(INPUT)か、出力(OUTPUT)かは、プログラムの命令形態によりハードウエアーで自動的に決定される。 例えばプログラム命令でINPUT、READなどは外部装置からIOへの信号入力であり、OUTPUT、WRITEなどはIOバス・ラインから外部装置への出力となる。 ただし、一般的にIOアドレスは8ビットでは0番地から2の8乗-1番地まで指定可能ですが、ハードウエアーで制限があります。 (すなわち指定してはいけないアドレスもあります) 3。割り込み(インターラプト) のたった三つの構成で原理として成り立っています。 CUP(セントラル・プロセス・ユニット:中央処理装置)は一般にプログラムカウンターや分枝(ぶんぎ)制御、割り込み、計算装置(加減乗除)、レジスターなどを含んでいるのが一般的です。 昔のCPUは計算装置として加算回路だけで補数による減算もさせました。 また乗除算は別のユニットとして付属装置みたいなものでした。 例えば乗算はビットシフト制御と加算、除算はビットシフトと加算回路を利用して補数による減算というのもありました。 ですから、ノイマン型では上記3要素以外はすべて外部装置として扱います。 すべての外部装置はIOバス・ラインでつながっています。 従って、コンピューター・システムとしてはIOバス・ラインにメモリー(記憶装置)、ランプ(出力装置)、スイッチ(入力装置)等々外部付属装置として配線、または電線で接続されます。 IOにはそれぞれアドレス(固有の住所としての認識番号)が割り振られ(与えられ)ています。IOの固有のアドレスはハードウエアー設計時に決められ、 ソフトウエアーでは勝手に決められません。 ここで話を簡単にするためにIOにメモリー(記憶装置)が接続されているとします。 メモリーはたくさんの記憶容量がありますが、それぞれの記憶領域はアドレス(住所)によりハード的に決められているため、メモリーの読み書き(READ,WRITE)はプログラムによりアドレスを指定し、データーの読み込みか書き込みかをしてします。書き込みの時は書き込むためのデーター数値も指定しなければなりません。 例:メモリーからデーターを読み込む場合 どこ(ソース・アドレス)から、どこ(ターゲット・アドレス)へデーターを移動させのかをプログラムでは明示的に指定しなければなりません。 READ(読み込み命令)、ソース・アドレス指定、ターゲット・アドレス これだけの指定をしないとコンピューターは動けません。 例:データー書き込みの場合 WRITE(書き込み命令)、イミデート・データー(数値そのもの)、ターゲット・アドレス この例のようにデーターの移動は明示的に指定しなければなりませんが、一般的には外部メモリーとのデーター入出力は、ある特定のレジスター(これもメモリーですがノイマン型の内部にあるメモリー)経由で実行するのが一般的です。 ただし、プログラムの明示によりハードウエアー的にダイレクトにメモリーからメモリーへデーター転送することもできます(直接メモリー転送)。 特定のレジスターをAレジスターとすると READ(0x200,A);16進表記の200番地からAレジスターへデーター移動 WITE(A,0x300);Aレジスターの内容(データー)を16進表記の300番地へ格納(書き込み) 以上は説明のためで、コマンド(命令語)や引数(いんすう)の順序等はそれぞれの言語の規約に従います。 また、言語によってはINPUT(=READ)、OUTPUT(=WRITE)などのコマンドもあります。   ここで、アドレスは、データーはどうやって発生するのか?疑問に思うでしょう。 それはノイマン型のプログラムカウンターからアドレスがIOを通してメモリーから発生します。 ソースまたはターゲット・アドレスをプログラムで指定するということは、読み書き命令によりこのプログラムカウンターのカウンター値をハードウエアーで自動的にアドレス値を書き換えることで実現されます。 実は、プログラムが実行されると、ハードウエアーはその命令、引数を読み込むために自動的に以下のstepを実行します。 step1)ノイマン型プログラムカウンターはIOバスを信号出力にし、アドレス(プログラム・カウンター値)を出力する。 step2)メモリーでは与えられたメモリー・アドレスをラッチ(記憶)してから、該当するアドレスからデーターをメモリー内部データー・バスへ引き出す。 step3)メモリーではメモリー内部データー・バスからIOバスへデーターを乗せる(出力する) (データー値を乗せる、単にデーターを乗せる、とも言います) このときノイマン型ではIOバスはすでに信号入力状態へ変化させている(変化させないとバスの衝突(入出力衝突)になるため) step4)ノイマン型はデーターを読み込みます。 最初のデーターは例えば「データー読み込み命令:READ」だとします。 step5)ノイマン型ではこのデーターをREADと解釈する step6)コマンド(命令)がREADなので次のプログラム引数を必要とするため、ノイマン型プログラムカウンターはカウントアップして次のアドレスをカウンターからカウンター値としてIOバスへ出力します。 このときIOバスは自動的に信号出力状態へ変化させています。 step7)メモリーでは与えられたメモリー・アドレスをラッチ(記憶)してから、該当するアドレスからデーター(実はソース。アドレス値)をデーター・バスへ引き出す。 step8)メモリーではデーター・バスからIOバスへデーターを乗せる(出力する) このときノイマン型ではIOバスはすでに信号入力状態へ変化させている(変化させないとバスの衝突(入出力衝突)になるため) step9)ノイマン型に読み込まれるデーターは、ソース・アドレス値で、内部にラッチ(記憶)されます。 step10)次にノイマン型は次のプログラム引数(ターゲット・アドレス)を必要としているので、プログラム・カウンターをカウントアップしてカウンター値をIOバスに出力する(アドレス値を乗せる、単にアドレスを乗せる、とも言います) step11)メモリーでは与えられたメモリー・アドレスをラッチ(記憶)してから、該当するアドレスからデーター(実はターゲット・アドレス値)をデーター・バスへ引き出す。 step12)メモリーでははデーター・バスからIOバスへデーターを出力する このときノイマン型ではIOバスはすでに入力状態へ変化させている(変化させないとバスの衝突(入出力衝突)になるため) step13)ノイマン型はターゲット・データーを読み込みます。 ターゲット・アドレス(データー)はノイマン型にラッチ(記憶)されます。 ここでノイマン型はREAD命令によりソース、ターゲット・アドレスを読み込んだので次のステップに入ります。 step14)ノイマン型はプログラム・カウンター値をソース・アドレス値に書き換えます。(事実上のジャンプ命令と同様です) step15)ノイマン型は書き換えられたプログラム・カウンター値をIOバスに乗せます。 (次ページへ)

全文を見る
すると、全ての回答が全文表示されます。
  • p2pk6544
  • ベストアンサー率0% (0/0)
回答No.31

コンピュータエンジニアとして25年生きているものです。 今まで多くの全く知識がない新人プログラマを教育し、最前線に送り込んだ経験があります。 その経験から話をします。 かなりの長文ですが、きっとあなたの助けになると思いますので、よく読んでください。 2つの面について話をします。 1つ目は心構えの話です。 全く新しい技術や知識、他人のコードを解析して理解する場合、最初の2週間~1ヶ月というのは、 程度の差はあれ、まあ大体そんな感じの地獄です。 ITの世界は日進月歩ですから、新しい言語や新しいGPU新しい処理系等が次々と出てきます。 これから先、数年後とに技術トレンドが変化する度に、その都度苦しみながら継続的に 新しい知識と技術を勉強していくことが必要です。 IT技術者として生きるということはそういうことです。 何年もこういうことをやっていると、一定の比率の人間はウンザリしてこの業界を去っていきます。 新しい知識を苦しんで手に入れることをそれなりに楽しいと感じられる、ある意味マゾな人間でないと 向いていない業界だといえます。 ただし、あなたの場合は、まだ1ヶ月のド素人なわけですから、向いている向いていない以前の問題です。 最初の1ヶ月で全くの初心者が音をあげて電車の中で泣きたくなるのは理解できますが、 そんな話はこの世界ではごまんとある話なので、酒でも飲んで忘れてください。 心配しないでもしつこくしつこく食らいついていれば、必ず理解できるようになります。 もう1~2ヶ月、地獄の苦しみを味わっていれば、それまでの苦しみが嘘のように知識が理解できるように なってきます。これは外国語会話が出来るようになる過程と酷似しており、大事なのはしつこく食らいつく ということなのです。 このしつこく食らいつくということを日本の学校教育では一切教えないので、この過程で脱落していく人間が 一定数存在します。IT業界には似つかわしくない言葉ですが、この時期に大事なのは根性という動かしがたい事実があります。 今は非常に強い苦痛を感じていると思いますが、耐えて頑張れば必ず出来るようになります。 周りの理解度が高く置いてけぼりを感じるのは、なかなかのプレッシャーでしょうが、 そんなことは気にする必要はありません。あなたの先輩や上司たちも、全くの初心者のあなたが いきなり即戦力になるとは期待していません。もし期待しているなら先輩も上司も会社もバカなのです。 とにかくしつこく先輩たちを質問攻めして、追いつく努力をする姿勢が重要です。 地獄の中で努力を続ければ、紅葉の頃には間違いなく理解できるようになっていますから大丈夫ですよ。 この業界がIT土方と呼ばれるゆえんです。 2つ目に知識面で何を理解すればいいかについて話をします。 C言語をある程度業務が可能な程度にわかるためには次の2つの面での理解が必要です。 ・作法の理解 ・メモリとポインターの理解 作法の理解とは、文法とか記述の仕方です。プリプロセッサの動作や構文の書き方、IF文やFOR文、配列、標準関数など純粋に知識を頭に詰め込み、それらを組み合わせてつかいこなす必要があります。 ポインターの理解とは、メモリに対するアクセスの理解です。 ハッキリいいますがポインターを理解していないということはC言語を理解していないのと同義です。 コンピュータの構成は大雑把にいって、CPUとメモリとIO(入出力)で成り立っています。 一時的にデータをメモリに保存したり演算したりするために、メモリアクセスを完全に把握し コントロールするために配列とポインタを理解することが必須です。 逆にポインタを理解しているということは、アセンブラだろうが他の言語だろうが、 問題なく理解できるということになります。 そのメモリはどこからもってきたメモリなのか? そのメモリにアクセスするためにポインタをどう管理しているか? こういったことに気が回るようになれば、もうあなたは立派なC言語プログラマです。 重要なのは、これらのプログラムを実際に書いてみて、PC上で動かして試すということです。 自宅にPCはありますか?実際にプログラムを書いて実行する環境がありますか? それらを繰り返し繰り返し試してデバッグすることで、自然と作法は身につきます。 ポインターも同様で、本を読んでコードを眺めているだけでは絶対に頭に入りません。 プログラムを書いて実行して、デバッグしてというのを繰り返さないと理解できません。 これは自転車や水泳の練習に似ています。 本や知識で泳ぎ方を知っていても、実際に泳ぐのは別ですよね? 自転車だって乗り方は誰でも知っていますが、乗れるようになるには実際に乗らないと駄目ですよね? それと同じです。安いノートパソコンなどでいいので、自宅でコードを試せる環境を作って 盛大にバグってもいいので、プログラムを書きなぐってみるといいと思います。 これらがわかると、業務でとりあえず戦力になるレベルになります。 そこから先はより高度なことが出来るように、さらにいろいろな知識を吸収する必要があります。 飛行機のパイロットの能力や経験を飛行時間でカウントするように プログラマの能力も業務や頭を使った時間で概ね推測できます。 頭を使って頑張った時間が500時間ぐらいになったとき、あなたは業務で戦力としてカウントされます。 700時間くらいで、周りの足を引っ張らない程度のプログラマと認識されるでしょう。 1日の努力が正味6時間なら、概ね半年といったところです。 この時間が10000時間を越えたあたりで、どんな要求がきても大体なんでもこなせて、周りに頼られて 会社で大事にされるプログラマになります。 いまどきだと、大体6年くらいかかります。このレベルになったら、大体、どこの会社に移籍しても 問題なく仕事をこなせます。そこから先、大金をつかめるかどうかはあなたの才覚次第でこれは プログラマの能力とは完全に別の戦いになります。 先は長いですしひたすら地獄が続きますが、この世界は知識や技術を駆使して商売を新しく作ることで 大金をつかむことが可能な夢のある世界です。その割に比較的安定した世界でもあります。 私としては、若い人がこの地獄を敬遠してなかなか残ってくれないので、 ぜひ、この世界に残ってくれるとうれしいです。 頑張ってください。

全文を見る
すると、全ての回答が全文表示されます。
  • dejimaya
  • ベストアンサー率0% (0/0)
回答No.30

こんばんは 本職はパソコンの販売屋ですが、たまにCやPerlなどの言語を使ってプログラムをします。 プログラミングの基本的な概念は 「アバウト」はまず許されないという事を知ることからはじまります。 C言語を最初に習得させる理由は、書式が一番厳しく、プログラムの完成度も一番高いのも特徴です。 本来であれば、BasicやPHPなどの様なインタプリタ系を最初に学習し、その後コンパイラ系のCやJAVAを行う方がずっと建設的です。 研修の講師がどのような考えを持っているか知るよしもありませんが、物事には適性というものがあります。 C言語に限らず、プログラミング言語の習熟度を測る目安は、 「サンプルコード」を入力して見本と結果になるかが大事です。 C言語で、一番頭を抱えるのが、変数定義とポインタです。 変数は、いわゆる「名前」で、「山田花子さん」と言うものであり、これが男性か女性かと言う事を定義します。Cの場合は、この定義を1つでも忘れると即エラーになる為、初心者には非常にハードルの高い言語とも言えます。その点、Basicなどは厳密な変数定義を行わずともプログラムを組めますが、一度バグがでると原因を見つける事に相当時間が掛かります。Cとの比較でよく言われるのはこの点です。 ポインタは、C言語を使うならば避けて通れない分野です。 ポインタとは、基準値からの相対的な表示をする方法で、コンピュータの動作に一番近い動きをするコンピュータに優しい記述方法です。 例えるなら、貴方の家の3軒隣の○○さんという事がポインタの考え方です。 馴染むまでしばらく時間が掛かる為、最初のうちはノートに動作結果をメモしながらすすめると良いかもしれません。 プログラミングに限らず、物事頑張って何とかなる事とならない事があります。 向き不向きをよく見極める事が大事です。 私から見て、目の前の課題は大事だけど、何をして良いかわからない状況と見受けます。 まずは、遠回りでもプログラミングに関する本を読むより工業高校のプログラミングの授業で使っている教科書を手に入れる事がオススメです。 それと同時に、漫画で読むプログラミング講座などの本を流し読みする程度が大事で、特にプログラミングアレルギーがでるとずっとその悩みから抜け出せずコンプレックスになる可能性もあります。 少し話しがそれましたが、プログラミングの基本は「設計図」を描けることです。 最初の段階ですから、フローチャートを書く練習が重要です。 あとは、パソコン用語辞典(だいたい1500円くらい)を手元に置き、C言語の逆引きリファレンス(いずれも、技術評論社がオススメです)をもって、サンプルコードを解析すると何をするプログラムか、その手法にはどういう方法があるか?わかってくると思います。 アドバイスになるか多少疑問が残りますが言わせて下さい。 1 プログラミングの習熟度は個体差がある 2 プログラムを組むのに文系・理系は関係無く、センスである事 3 プログラムを組むのが苦痛なら、できませんと言う事も大事 (企業は適性を見るために研修している事を考えるべきなのです) 4 自分が得意だと思う事をプログラムに生かせないか考えて見る 5 プログラミングのコツは、全て法則性のあるものに気づき、パズルを解く感覚 6 解説書よりもパソコン用語辞典とポケットリファレンスの2つは必須 7 会社の課題としてプログラムを作るより、自分がやってみたい課題を見つけて取り組む 8 ウェブ系ならばPHP、PC系ならVisual BASICを使い、プログラミングのコツをつかむ 9 仕事を忘れて趣味でプログラムを組んでみる 10 周りと競争しない、自分がどうであるか? 何事も競争すると本質が見えなくなってしまいます。 社会人になって大事な事は苦労する事以上に、自分は何ができるか?を知る事に掛かっています。 しがみついて頑張る事も大事ですが、適性がないので他の職務も検討する事ももっと大事です。 この事にこだわりすぎて、体調を崩せば身も蓋もありません。 プログラミングのサンプルができるからといって、貴方の評価が変わるわけでありません。 プログラミングが苦手であっても、概略がわかれば十分なのです。 その中で自分ができる最大限の努力を続ける事が何より大事だと思います。 人生とは、自分探しです。まだまだ始まったばかり、愚直に取り組み、泣いて、苦労して得る物は、一生忘れる事がない能力になります。 勉強の成果を計る為にも、半年後(10月の第3日曜)に実施される、基本情報技術者試験の合格を目指す事が早道です。この試験には、プログラミングの読解能力を測る内容があります。 試験勉強を通じて、もっとプログラミングの事がわかり、ITに関する造詣も深まると思います。 頑張って下さい。

参考URL:
http://hp.vector.co.jp/authors/VA015873/
全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • プログラマーに転職して2ヶ月目。かなり難しい課題を

    学生の頃2年間プログラミングの勉強をしてきました。 しかし、最初に就いた仕事はプログラミングが必要としない仕事で2年半働いてきました。 しかし、プログラミングをしたくて8月に転職し、研修期間もあります。 しかし、急に難しい課題を出されて困っています。 社内システムを作って欲しいと。 しかも研修中に勉強したての言語でかなり困っています…

  • 新入社員に最低限知っておいてほしいもの。

    どちらに質問をして良いのかわからなかったので、こちらで質問をさせていただきたいと思います。 私は、文系の大学に通う大学4年生で、プログラミングに興味があり、職種をSEに絞って就職活動を行い、希望通り、SEとして、内定をいただくことができました。 しかし、いくらプログラミングに興味があり、個人的に勉強をしていたとは言え、明らかに、専門学校の人やましてや理系の人と比べると能力が劣っています。就職まで時間はあり、大学の単位もほとんどとり終えているので、今年の1年間はプログラミングの勉強を中心にしていきたいと考えております。 今、システム関係の会社で働いており、新入社員の教育をしている方または教育をする方で、新入社員に最低限知ってておいてほしい知識と、これを知っていると「コイツ使えるな!」と思うような知識がありましたら、教えていただけないでしょうか。よろしくお願いします。 ちなみに、今、私が勉強している言語はc言語とJAVAです。

  • プログラマを目指してます

    現在中学2年生なんですが、SEやプログラマといったPCを使う職業を目指しています。 今までは「こういう仕事になりたい」と思っていただけなんですが、先週から何か夢にむかって実行しようと思い、JAVA言語を勉強し始めました。 そしてJAVAを勉強しながらわからないことを調べてるうちにC#(?)やC言語は必要。という記事を目にしました。 なにもわからないままJAVAを勉強しているんですが、これでいいのでしょうか? こういう仕事を目指すには、まずなにを勉強すればいいのでしょう? プログラミング用語以外にも、なんでもいいので学んだほうがいいことがあれば教えてください。お願いします。

  • 新米プログラマの相談:理解に時間がかかる。いい方法はありませんか?

    未経験からプログラマに採用され、C言語の研修を受けていますが、理解するのに時間がかかります。 例えば、他の研修生が3時間で終わる課題が、私は6時間かかる…といった具合です(もっとひどいかもしれません)。 まったく理解できないわけではないのです。 時間をかければわかるようになるんですが、 どうにも時間がかかりすぎて、いたたまれなくなりますし、こんなことで実務について大丈夫か?と心配です。 とはいっても、プログラミングが嫌いなわけでもないし、今のところは諦めるという選択は考えていません。何とか効率を上げて頑張って行きたいのですが、どうすればいいのやら。 お勧めの勉強方法、仕事の進め方、心構えなど、アドバイスをいただけないでしょうか。

  • プログラマー

    将来プログラマーを目指している15歳です。 そのために、高専に入学しました。 やはり初めのうちはプログラミングはやらずに情報系の勉強ばかりをしています。 自分的には開いた時間でプログラミングの勉強をしたいと思っています。 パソコンの知識はそこそこありますが、プログラミングに関しては全くの初心者です。 自分的にはC言語から始めてみようかなと思っています。 しかし、どんな勉強をすればいいのかが分かりません。 どのような勉強をすればいいか、またどんな本がオススメかを教えてください。 もう一度言いますが、全くの初心者です>< よろしくお願いします。

  • プログラマになるためのアドバイスをお願いします。

    プログラマの仕事に転職を考えているのですが、まずはC言語の知識が必要と聞いたので、本のやWebの情報を調べて方針を考えています。 しかし、コンピュータの世界は難しく、幅が広いため、どういう方針でいけばよいのか解らない状態でいます。 今の現状としては、C言語の勉強をしながら、Webの転職サイトで未経験でも研修でプログラマになれる会社を調べています。 ここでの未経験というのは、どの程度のものなのかよくわかりません。 やはり独学では難しいところがあるのでしょうか?コンピュータスクールに通わないと無理なのでしょうか。 独学でプログラマの道を実現させた方の苦難・成功の体験を知りたいです。 何かこれからの方針として、アドバイスしていただきたく思います。 よろしくお願いいたします。

  • 30歳、プログラマーへの転職。

    現在30歳です。 未経験(文系)からプログラマー職に転職したい考えているのですが、 まず何から勉強した方が良いでしょうか? 転職エージェントさんからは、まず市販のテキストで勉強するように、と言われました。 しかし、JavaとかC言語とかPHPとか色々あって、何を勉強して良いかわかりません。 ITパスポートを持っているので、基本情報技術者を目指すのも選択肢としてありかなとは 思うのですが、あまり資格にこだわらなくても良いなという気持ちがあります。 まずは、転職先で必要な言語を学習してキャリアアップしていくのが一番良い とは思うのですが、他にもIT業界経験者様の視点からアドバイスや見識があれば 教えて欲しいと思い質問をさせて頂きました。 ざっくりした質問で申し訳ありませんが、よろしくお願いします。

  • プログラマーへの転職について

    32歳女性です。プログラマーの仕事に転職したいのですが、スクールでC言語やJAVA言語を勉強してから就職活動したほうが有利なのでしょうか?

  • プログラマの仕事

    現在転職活動中でして、以前にC言語の習い基本的なことはわかります。そして、以前勤めていた会社でトヨタ系の設備メーカーの製造の仕事をしていたこともあり、シーケンスも少し勉強しました。 しかし、C言語もシーケンスも実際の業務経験はありません。 これらの両方を活かす仕事があれば、転職したいんですが、なかなか見つかりません。 シーケンスならば電気設計、C言語ならカーナビや組み込み系の仕事などしかありませんでしょうか? 年齢は28歳なのですが、なかなか未経験の私を雇ってくれるとは思いませんが、両方活かせるような仕事はあれば頑張りたいのですが。 それで質問なんですが、C言語、シーケンスを両方活かすような仕事はありますか?あった場合、28歳未経験が転職できますか? 最悪の場合、少しスクールに通い、JAVAや.NETを習い、業務系の仕事も探そうかとも思います。 ちなみに甘いかもしれないんですが、できたら土日休みを希望します。どなたか詳しい方教えてください。

  • プログラマへの道

    わたしはプログラミングの経験も知識も皆無なのですが 職業にできたらいいな、と考えています。 実際に仕事にするために (1)未経験者でも雇ってくれる会社へ「即」応募する (2)プログラミングの基礎的スキルをスクールなどで 最低限身につけてから未経験OKの会社へ応募する (1)、(2)どちらが望ましいと考えられるのでしょうか。 また学習する言語についてですが (3)C言語はプログラミングの基礎なので勉強するべき (4)C言語(を用いる業種?)は競争が激しいので初心者は避けるのがベター …などの意見をこれまでネット上で見てきました。 VBAやJavaScriptが取り組みやすいようにも聞くので こういったところからプログラミングに慣れるべきなんだろうか、 とも迷います。 わたし的には、アプリケーションソフトやインターネットの分野で プログラミングの職に就きたいと考えています。 20代半ばとあまり時間が残されている年齢ではないので 賢明な選択をしたく思い、先輩方のご意見をおうかがいします。

このQ&Aのポイント
  • 最近購入したマイクロソフトのサーフェイスで印刷すると両面印刷ができなくなりました。どのように解決できるでしょうか?
  • パソコンを新しくしたら、以前はできていた両面印刷ができなくなりました。無線LANで接続しています。どうすれば解決できますか?
  • ブラザー製品のDCP-J572Nを使用していますが、新しいパソコンで両面印刷ができません。光回線を利用しています。どのように対処すればいいですか?
回答を見る

専門家に質問してみよう