• ベストアンサー

センスってありますか?

こんばんはtomojyuuです。 現在悩み中なので、また質問させてもらいますが、 質問タイトルのままですが、センスってあるのでしょうか? 私、学校も文系ですし、半年かかって1冊の基礎の本 を理解できた所で、昔3年間ほどプログラマーしていた のですがC++は難しすぎます。Cも知らないので、オブジェクト志向の考え方以外Cを勉強しているようなものです。 プログラマーの時は、感じなかったのですが、言語の 勉強は、非常に特殊な事のように思えてきたのです。 (私が煮詰まっているからなのですが) 文法とメモリの動きがわかればなんとかなると思った のですが、どうにもなりません。 やはり素質がないと職業プログラマとして やっていけないのでしょうか? ちなみに私が転職した理由は、拘束時間の長さと月給の 安さでプログラマーとして挫折したわけではありません

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

  • ベストアンサー
  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.8

補足質問に対して及ばずながら回答させて頂きます。 >時間かかってもcから始めたほうがいいのでしょうか?。 Cの基本的な事で覚える事ってかなり少ないです。 基本的には、文法、ポインタ、関数定義、標準関数、プリプロセッサぐらい。 ですので遠回りとは思いませんし、それらはC++でもベースにもなる共通の知識です。 (C++の場合、C標準関数についていえばなくても出来ますが知らないのは変かも・・・) できればC++を学習する前にqsortと同じ関数を自分で作れるになっていれば心強いです。 ちなみにC++でできるけどCでは出来ないってものはありません。 (最終的にはマシン語になるだけなので) C++になると範囲が広がります。 C++はCに加えてクラス、テンプレート、STL、etc・・・ そういう意味で私は範囲をしぼったプレーンCを勧めるのです。 STLだけでも分厚い本があったりします。 >メモリの動きがわかればなんとかなると思った >のですが、どうにもなりません。 これは重要です。C++のクラスがどういう形でメモリ内に収まっているか をイメージできる事はバグの軽減に繋がります。 しかしCの構造体がどういうメモリ配置なのかを知らない人がC++の クラスの配置をイメージできないでしょう。 >CからC++に移行するのは難しいという意見があったのですが 構造化プログラミングに慣れたらオブジェクト指向が出来なくなると その人は考えたのでしょうか。 オブジェクト指向はマクロ的な考え方で、 局所的(C++であれエントリポイントは一つ)にみれば構造化プログラミングです。 (最終的にマシン語に置き換わる以上そうなります。) またもしも新しくオブジェクト指向の考え方に変わる新しい手法のプログラミングスタイルが 考案されたとき、それに対応できないのは問題です。 プログラマのセンスというのは柔軟で合理的な思考ができる事だと思います。 あと楽しむ事。

tomojyuu
質問者

お礼

補足質問回答ありがとうございます。 >Cの基本的な事で覚える事ってかなり少ないです。 基本的には、文法、ポインタ、関数定義、標準関数、プリプロセッサぐらい。 ほんと、クラスの定義以外これを勉強していました。 >できればC++を学習する前にqsortと同じ関数を自分で作れるになっていれば心強いです qsort...なんでしょうか?勉強します。 >C++になると範囲が広がります。 私には範囲が広すぎて、なにかプログラムを作ろうと 思ってもそれがC++で作るのに比較的簡単なのか難しい のかさえわかりません。 >Cの構造体がどういうメモリ配置なのかを知らない人がC++のクラスの配置をイメージできないでしょう。 わかりません。勉強します。 >プログラマのセンスというのは柔軟で合理的な思考ができる事だと思います。 あと楽しむ事。 ある程度はC++をわかっていないと出来ない、逆に わかればセンスは後から身につくということでしょうか。 最後の楽しむ事は大事ですよね。忘れていたような気がします。

その他の回答 (8)

  • togino
  • ベストアンサー率75% (97/129)
回答No.9

僭越ながら少し意見を述べさせていただきます。 僕は大学の学部生時代、ACM というコンピュータの 国際学会が主催する大学対抗プログラミングコンテストにて 日本代表として勝ち抜き、世界のプログラマーと 勝負したことがあります。 そこで感じたのは、優秀なプログラマーというのは 「自分のやりたいことを如何に分析し、どうすれば解決できるのか」を 論理的にすばやく組み立てることができるという事です。 あとは自分がどれだけコンピュータになりきれるのか、 コンピュータの気持ちになれるのか、ってことですね(^^;) プログラムっていうのは、コンピュータに指示している 訳ではありません。自分がすることをメモしているにしか 過ぎないのです。 あれしてこれ保存して、それとりだして・・・ さて、ここまでの話に「コンピュータ言語」という単語は 出てきていません。優秀なプログラマーっていうのは 解決するのに一番適切な言語を選択できる人なんですね。 それぞれの言語には特徴があり、得意不得意っていうのが あります。どんな言語でもがんばれば何でも出来るもの ですが、やっぱり既存のライブラリーであるものを利用 した方が、早く確実に作ることができるものです。 そして、その言語の特徴をつかむためには、その言語が もっている命令(関数・機能)を手当たり次第実行させて みることです。僕が最初に BASIC を勉強した時、辞書 のようなリファレンスを買って、ABS(絶対値を計算) 命令から順番に実行させていったものです(笑) 最近では、どんな言語でも Web にサンプルプログラムが ころがっています。手当たり次第実行させてみて、その 中でなにやっているのか調べると、とても実力がつきます。 概念なんかは後からついてきます。まずは実践あるのみ。 1,1,2 という数字の列を見て法則がわかりますか? 分からないですよね。では 1,1,2,3 では?、まだ分からなければ 1,1,2,3,5 分からなければ 1,1,2,3,5,8 それでもダメなら 1,1,2,3,5,8,13 分かるまで、増やすしかないのです。いつの日か 「ある数字は、前2つの数字を足したもの」って事に 気がつくはずです。 プログラム言語も同じで、カプセル化や継承やオーバーライドや って概念を理解する為には、あれこれ試さないとダメです。 本を読んでいるだけでは身につきません。 --- 長くなりましたが、tomojyuu さんはまず下記のことを 試してみてください。 ■ C++ のサンプルプログラムをいっぱい実行させてみる ■ C++ 以外の言語もやってみる ■ プログラムは自分がコンピュータになって読む でこれらをやってみて楽しく思えないのであれば、 たぶんプログラムって世界に向いてないんでしょうね。 理系文系なんて関係ないです。ようは楽しめるかどうかでしょう。 長々と失礼しました。なにかお役に立てれば嬉しいです。

tomojyuu
質問者

お礼

回答ありがとうございます。 >長くなりましたが、tomojyuu さんはまず下記のことを 試してみてください。 ■1 C++ のサンプルプログラムをいっぱい実行させてみる ■2 C++ 以外の言語もやってみる ■3 プログラムは自分がコンピュータになって読む でこれらをやってみて楽しく思えないのであれば、 たぶんプログラムって世界に向いてないんでしょうね。 理系文系なんて関係ないです。ようは楽しめるかどうかでしょう。 ■1...忘れてしまった事もあるので復習してみます。 ■2...C++で手一杯なのですが、興味のあるWEB系の言語を勉強してみます。 ■3...コンピュータが好きでないと出来ないですね、 私に出来るでしょうか?がんばります。

  • n-before
  • ベストアンサー率50% (3/6)
回答No.7

今プログラマとして足りないものが何か、 ということを理解されているので、素質はあると思います。 今自分が何ができるかを正確に把握していない人には、お仕事をお願いできませんね。 あとは、読みやすいプログラムを書ける人でしょうね。 これは経験がモノをいいます。 色んな人のプログラムを見ますけど、C++とかいってCと全然変わらないものが多いですね。(画面のプログラムは、VisualBasicになってしまいますし。) 煮詰まったときは、自分に何ができるかを考えます。 大抵そういうときって、1つ2つしかできることないんですよね。それを全力でやってみればいいと思います。 ちょっと精神論みたいになってしまいましたね。

tomojyuu
質問者

お礼

回答ありがとうございます。 >煮詰まったときは、自分に何ができるかを考えます。 大抵そういうときって、1つ2つしかできることないんですよね。それを全力でやってみればいいと思います。 先に進もう進もうとあせってはいけないという事ですね。 今できる事をやってみます。

noname#30727
noname#30727
回答No.6

職業にするなら向き不向きはあるでしょう。 ですが、C++は間違いなく難しいです。センスがあろうとなかろうと、ある程度使いこなせるようになるには、相応の時間が必要です。 C++に敷居の高さを感じたとしても、素質が無いように思うのは飛躍しすぎで、応用力を問われる以前に、基本パターンが身についていないだけの事です。 それなりのコードが書けるようになるまで、3年くらいかかると思って間違いないです。 それでも、ここを乗り切れれば、その他の言語は1ヶ月もあれば実用レベルまでいけるようになります。

tomojyuu
質問者

お礼

回答ありがとうございます。 >職業にするなら向き不向きはあるでしょう。 ですが、C++は間違いなく難しいです。センスがあろうとなかろうと、ある程度使いこなせるようになるには、相応の時間が必要です。 私のC++の選択は間違っていたのでしょうか。難しいと わかっていたのですが、初心者用の本を勉強している時 楽しいと感じたのですが...

  • matyrcry
  • ベストアンサー率47% (101/213)
回答No.5

>文法とメモリの動きがわかればなんとかなる これは真理だと思いますよ。 実際にCPUに与える命令パーツはどの言語でも同じ物を使うんですから。 言語移植をこなしてみれば実感できます。 実感が薄いなら、本当に底までは理解できていないという体の拒否反応じゃないかなぁ。 最近はCPUもOSもでかくなって中身がよく分からなくなってきたからなぁ。 >素質がないと 素質をどのようなものと捉えているのかがキーではないかと思います。 天賦の才は必要ないと思うのですが、日頃の訓練の蓄積は必要だと思います。 交差点を歩いていて、信号機を見ればすぐに点灯制御のロジックが浮かぶとか、 標準関数の仕様を眺めれば、内部の処理手順が浮かんで来るとか。 もっとも最近は標準関数の中の動きまで読み切る必要なんてないのかもしれないけど。 業界によるんで、自分のいる業界が自分の適正とあってないのかもしれませんね。

tomojyuu
質問者

お礼

回答ありがとうございます。 日頃の訓練の蓄積ですか。やはり努力ですかね。 様々な回答から、好きー>努力するー>スキルが身に付く。という事が頭に浮かんできました。

  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.4

センスが必要かという質問はこと仕事に関していえば無いです。 しかしプログラマーにセンスというものはあります。 一口にプログラマーといってもその実力は10倍以上の開きがありますし linuxやwinnyの開発者のような天才もいるわけです。 いきなりC++を学習するのはどうかと思います。 あくまで私の場合ですが最初は基本的なCを学習し Javaを学習して、その後C++を理解しました。 さらにWindows系の開発VisualC++を学習したのはその後です。 VBの知識しかないころ、ゲームを造りたくて DirectXとVisualC++の本を買ってきたのですが挫折した覚えがあります。 きちんと順序だって学習すれば効率があがるのではないでしょうか? まずは簡単な書籍を購入することを勧めます。 努力が必要なのは言わずもがなですが。 ちなみにC++ができてCができない人を私は知りません。 回答でオブジェクト指向を強調しCではなく C++のみを勧める人がいますが、それは不可能だと思います。 あと#1の方とかぶりますが楽しむ事も大切ですね。

tomojyuu
質問者

お礼

回答ありがとうございます。 >センスが必要かという質問はこと仕事に関していえば無いです。 しかしプログラマーにセンスというものはあります。 一口にプログラマーといってもその実力は10倍以上の開きがありますし linuxやwinnyの開発者のような天才もいるわけです。 よくわかります。凡人と天才って、ことプログラマーに おいてはいるんじゃないかと思います。 プログラマーしていた時感じました。

tomojyuu
質問者

補足

>いきなりC++を学習するのはどうかと思います。 あくまで私の場合ですが最初は基本的なCを学習し Javaを学習して、その後C++を理解しました。 さらにWindows系の開発VisualC++を学習したのはその後です C++の初級本はオブジェクトの考え方、文法以外 Cだと思うのですが、やはりC++を最初に学習する のは無理なんでしょうか?また胸をはってCができる と他人にいえるレベルまでどれ位かかるものなんでしょか? 私、社会人で仕事をもっているので、あまり時間が ないので、いきなりc++を始めたのですが、時間 かかってもcから始めたほうがいいのでしょうか?。 >ちなみにC++ができてCができない人を私は知りません。 回答でオブジェクト指向を強調しCではなく C++のみを勧める人がいますが、それは不可能だと思います どの言語にしようと思い悩んでいたのですが、CからC++ に移行するのは難しいという意見があったのですが、 なるほど、C++は知っていてCを知らない人はいない 真理ですね、 回答してくだされば幸いです。

  • tak2003
  • ベストアンサー率32% (174/540)
回答No.3

じつは私も煮詰まってます。 COBOLを教育受けているのですが、給与をもらいながらお勉強をさせてもらっているので、進み方がとても速いのです。 情報系の大学卒がたくさんいる職場で、皆さん基礎知識が豊富なので平気な顔でやられていますが、私は転職して1年生なのでかなり辛いです。 やっぱり基礎知識が必要なのでしょうね。 後は努力かなぁ。

tomojyuu
質問者

お礼

回答ありがとうございます。 >COBOLを教育受けているのですが、給与をもらいながらお勉強をさせてもらっているので、進み方がとても速いのです。 給与もらいながらお勉強できるなんて羨ましいですよ。 >やっぱり基礎知識が必要なのでしょうね。 後は努力かなぁ。 努力しかないんですかね。

回答No.2

センスってあります。 ちなみに、文系・理系は関係ありません。 論理的思考の持ち主が適正があると言われています。 論理的思考とは、文系と理系を足して2で割ったというような感じです。 だからといって、素質がないとダメということはありません。プログラマーとして長年やっていけば、同じような要件が出てきたり、勘のようなものが身についていくと思います。机上の勉強は、眠くなりますから、実践で身につけるほうが効果的で進歩も早いと思います。

tomojyuu
質問者

お礼

回答ありがとうございま >センスってあります。ちなみに、文系・理系は関係ありません。論理的思考の持ち主が適正があると言われています。 論理的思考...あまり熱くなってはいけないのですね。 常に冷静でないとなんとなくわかります。

  • YOSHIDAX
  • ベストアンサー率15% (5/32)
回答No.1

基本的にやる気の問題だと思います。確かに難しいジャンルなので覚悟は必要です。潜在的なセンスも確かにあると思いますが、むしろ経験の積み重ねによるセンスが重要だと思います。文系だの理系だのを気にする必要はないと思います。文系出身のプログラマの人も私の周りには結構います。そりゃWordやExcelに比べれば全然蒸すかしくて特殊ですよ。あとはプログラミングの仕事や勉強が苦痛に感じるか楽しく感じるかの問題でしょう。

tomojyuu
質問者

お礼

回答ありがとうございます。 >プログラミングの仕事や勉強が苦痛に感じるか楽しく感じるかの問題でしょう。 楽しいと感じて始めたC++ですが、挫折しそうです。 楽しく感じるようになりたいです。

関連するQ&A