質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Q&A

解決済

7回答

3069閲覧

何を学ぶべきか

退会済みユーザー

退会済みユーザー

総合スコア0

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

0グッド

1クリップ

投稿2017/05/10 01:40

編集2017/05/10 08:34

#何を学ぶべきか迷っています。

表題の通りプログラミングの勉強方法で迷っています。

##私の簡単な経歴を紹介します。
25歳
文系大学卒
大学四年の時にR言語に触れてそれを機に、プログラマーを目指す。
4年生の間数ヶ月間独学で C と JAVA を学ぶ。(基礎ですが)
コンピュータサイエンスの基礎の基礎の基礎も本を読んで勉強しました。
新卒でシステム開発会社に就職
COBOLの研修を3日間受けさせてもらう。(簡単でした。)
キャリアに不安を感じ転職のためにwebの勉強を始める。(新卒1年目)
HTML5とCSS3とJavascriptを独学で勉強。
webサイト制作会社に就職
HTML5とCSS3とJavascriptの基礎はできるようになった。
本格的にプログラムを組みたくなったため、システム開発会社に転職。
現在,JSを使用しています。(転職して2ヶ月め)

##以上を踏まえて
私としては、ラズパイを始めるのがいいのかな〜と思っています。
ハードウェアやC、Linuxを初めて、基礎を固めるのがいいかなと・・
ただ、JSも満足にできていないし、GOやScalaとかも人気だしな〜と。

今後どうなりたいかというのは特にありません。
ただただ、何でもできるプロフェッショナルになりたいという漠然とした考えしか無いです。

以上、よろしくお願いします。

#追記

質問が悪く申し訳ありません。

「この言語は求人が少ないし将来性も低いからしないほうがいい」ではなく、
「優れたプログラマはこういった経験をしているから、こういったことができる。だからこれを勉強したほうがいい。」または、
「私はこういう勉強をしたから、今役立ってる。今そのレベルなら次はこれを勉強するといい。」といった感じのことを教えていただきたい。といった意味の質問でした。

何かやっておいてよかったもの等あればぜひ教えてください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yohhoy

2017/05/10 05:16 編集

「とにかくプログラミングのスキルをあげ」て、あなたはどうなりたい/何をしたいのかを明記された方が良いのでは?有名になりたい/お金がほしいなどでも良いと思いますが、無目的の質問には有用な回答は付かないですよ。
退会済みユーザー

退会済みユーザー

2017/05/10 05:27

アドバイスありがとうございます。追記しました。
yohhoy

2017/05/10 06:45 編集

「ただ好きだから、自分の限界までスキルをあげたい」のに「何を学ぶべきか迷ってい」るとありますが、では一体あなたはいま"何が"好きなのですか?一度ご自身の中で整理された方が良いように思えます。
退会済みユーザー

退会済みユーザー

2017/05/10 07:05 編集

プログラミングでも色々な分野があるけど、どの分野を勉強したいのかわからない。だから質問に答えようがない。っていうことですよね?プログラミングができる人って分野を問わずいろいろなことができると思うんですけど、そういう人になるにはどういう勉強をすればいいですか。っていう質問であれば答えようがありますかね? 今プログラミングを勉強していて、いまいち成長を感じられなくなってきたので、何か突破口はないかと思い今回質問しました。よければアドバイスしていただけませんか?
yohhoy

2017/05/10 07:09 編集

申し訳ありませんが、私は「万能なスーパーマンになりたい」という質問にお答えできる知識を持ち合わせていません。ごめんなさい。(これ以上のコメントも差し控えます)
toutou

2017/05/10 07:09

「自分は今これだけのことができるんだけどほかにおすすめはないですか?やっててよかった実体験などがあれば教えて欲しいです」とかにしとけばよかったですねw
退会済みユーザー

退会済みユーザー

2017/05/10 07:38 編集

yohhoyさん 何度もありがとうございました。荒唐無稽な質問で呆れさせてしまったみたいですね。また何かありましたら回答お願いします。 toutouさん アドバイスありがとうございます。質問が悪かったですね。追記で伝わるかと思ったのですが、伝えるって難しい。
yohhoy

2017/05/10 14:18 編集

(はてなダイアリーにコメントいただきましたが、Teratailの回答なのでこちらに)Q:これは皮肉ですか?/A:少なくとも皮肉意図ではありません。文字通り、あなたの質問とコメント内容への返答にすぎません。私は純粋にあなたの考え方や質問意図を理解できませんでした。
guest

回答7

0

ベストアンサー

こんにちは。

ハードウェアやC、Linuxを初めて、基礎を固めるのがいいかなと・・

「コンピュータの仕組みを把握すれば、様々なプログラミングをする際に応用が効き、より優れたプログラムを開発できるのではないか?」とのお考えでは?

「より優れたプログラム」は2つの方向性があると思います。

①よりユーザの作業を、省力化したり信頼性を上げたり簡単化したりするプログラム
②より省資源でより高速に動作するプログラム

日本では(残念ながら)①の方が需要は多く給料も多いようですが、②も重要でこれを置いてけぼりにすると悲惨なことになります。両者のバランスを取ることが大事です。

①についてはIT企業に属している限り逃れられないと思います。特に優秀な人にはそのような仕事の機会が嫌でも回ってきます。
②については自分から求めて学習しないと置いてけぼりです。ここはお金になりにくいせいと思いますが、この分野の教育に熱心な会社は多くはないように感じます。

そして、コンピュータの仕組みを把握していると②にたいへん有用です。特にマルチ・スレッドや排他制御の経験があると、性能と開発工数のバランスの取れたプログラムを設計できるようになります。(この辺を知らないと、コールバック地獄か、再現性のないバグに悩まされることが格段に増えます。)

ここを学習するには、非常に単純なコンピュータ(マイコンと呼ばれるようなもの)で、アセンブラ、もしくは、C言語で低レベルな割り込み駆動プログラムの開発経験があると強いです。特に割り込みが頻発するようなものならば、排他制御不具合が再現しやすいので効果的に学習できます。
更に、ごく簡単で十分ですのでスレッド切り替えの開発経験があると非常に力強いです。(これは割り込みの延長線にあり、仕組みは極簡単です。レジスタを退避して、スタックを切り替えてreturn。)

ラズパイも良いのですが、マルチ・コアですしlinuxが稼働してますし既に「複雑」なコンピュータに該当します。もし、アセンブラを多少なりとやってみようと言う気概があるのでしたら、AVRはお薦めです。個人負担できる価格帯ですし、自作派の方々が多数の情報を公開されています。C言語も無償のものがありました。たぶん今もあると思います。(私は業務で使ったことありますが、無償Cコンパイラでも十分でした。)

プログラミング言語の学習で手一杯で、コンピュータの仕組みを理解しようと言う気概を持っている人はあまり多くはないように感じます。ここは直接お金に結びつきにくいですが、縁の下の力持ちになるスキルですので是非頑張って下さい。

投稿2017/05/10 05:08

編集2017/05/10 06:50
Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/05/10 05:39

回答ありがとうございます。 ラズパイよりもさらにシンプルなコンピュータで勉強したほうがいいということですね。 そのほうがよりコンピュータサイエンスの勉強には最適だということですよね。 ありがとうございました。 だんだん何をすべきか見えてきた気がします。
guest

0

プログラムを書けるのであれば、まずは1つの言語を基本からしっかり習得するのがいいと思います。
1つ自分の中で芯となる言語があれば、他言語への入門はそんなに難しくありません。
ベストプラクティスに到達するまでは、どの言語もしんどいとは思いますが。

ラズパイを始めるのがいいと思う理由は何ですか?
ハードウェアやC、Linuxを始めたいのとラズパイとは関係がないと思います。
まぁハードではありますが、別にそこらの使っていないPCでもいいです。

R、C、Java、COBOL、HTML、CSS、JavaScriptを知ってはいるが全て触りだけ、
ハードも分からない、Linuxも分からない、ミドルウェアも分からない、ネットワークも分からない、
そんな状態でもGolangやScalaも気になる。

気持ちは分からなくはないです。
でもやっぱりまずは自分の中で、これだけは自信がある!ってものを身につけるべきだと思います。
ではそれを何にするか?ってところですが、今の仕事に関係あるものでいいんじゃないですかね。
JavaScriptを書いているようなので、まずはJavaScriptをしっかりやってみてはどうでしょう?
JavaScriptはものすごく奥が深い言語です。
プログラミング言語の中で言うと、僕的にはかなり難しい部類に入ります。

あれもこれも手を出すけど、どれも深くはやらないってのは決して悪いことではないです。
「なんとなく知っている」という分野が多いことはけっこう重要なことだからです。
しかし全てがそれではいけません。仕事になりません。
プロとして対価をもらうに値しません。
「何でもできるプロフェッショナルになる」ためには、結局1つ1つやっていくしかないじゃないですか。
しょせん人間はシングルスレッドです。しかも容赦なく忘れていってしまう程度の生き物です。

まずは目先の仕事で、分からないことをなくしてみてください。
分からないことがあるうちは、今の仕事はあなたにとって無駄ではありません。
やりたいことでなかったとしても、分からないのであればやる価値はあります。
必ずどこかで役に立ちます。
「こんなのやってても仕方がない」ってことは案外ないものですよ。

投稿2017/05/10 03:03

root_jp

総合スコア4666

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/05/10 03:23

回答ありがとうございます。 ラズパイを始めようかと思った理由は、 ・IOTで成果物を作りやすいのでは無いか(何か作ったほうがモチベーションが上がるから) ・コンピュータサイエンスも学べるのでは無いか といった理由からでした。 おっしゃる通り、CやLinuxを学ぶためなら必要ないですね。 ありがとうございます。 「一つの言語を極める」についてですが、 実はJSの勉強で行き詰まってます。 私も「一つの言語を極める」ことは重要だと思うのですが、どう極めればいいのだろう・・と迷ってます。 仕事もそんなに困るような場面はないし、かといって作りたいものがあるわけでもない。 JSの本を買って読むぐらいしかしてません。 仕事でやっていることが無駄ではないと思うのですが、仕事だけやっていれば成長できるのかなって疑問が湧いてきてしまってます。 他の言語をやれば何か見えてくるんじゃないか・・・みたいな感じです。 焦りすぎですかね・・・ まとまらない文になってしまいました。すみません。 参考になりました。 回答ありがとうございました。
root_jp

2017/05/10 03:52 編集

仕事でぶつかる壁を逃げずに1つ1つ超えていけば、それだけでかなり成長します。 結局、技術力ってのは色々を手を出して勉強するから身につくのではなくて、 どれだけ逃げずに挑んできたかってところが重要なんですよ。 でも、大体の人間が追い込まれると、体調不良だ、鬱だと言いながら戦線離脱していきます。 勉強だけしてても、悲しいぐらい忘れていくだけです。 まぁそれを分かっているから、何か作りながらって言っているのだと思いますが。 逃げずに挑むと、その時に超えたことが身につくのもありますが、 未知なものに挑むことへの耐性が身につくのですよ。これがかなり重要です。 それはおそらく仕事でしか身につきません。予算に追われ、期限に追われ、もう最悪ですw それが身につけば技術力は後からついてきます。 その時には勉強癖もついていますから。 分からないことや知らないことをやる時ってのは、仕事であれば恐怖でしかありませんし、 プライベートであれば億劫でしかありません。 しかし、1つ1つ壁を超えてきた人間は、そのどちらもあまり感じなくなります。 「次はこれか。いつものように本から買うか」程度のノリでできちゃうわけです。
退会済みユーザー

退会済みユーザー

2017/05/10 04:42

コメントありがとうございます。 すごく為になります。 すぐに身につく技術ではないから、 長い目で見て一つ一つ確実にこなしていくことが重要ということですね。 ありがとうございます。 私も体を壊さないように、頑張ります!
guest

0

何でもできる、は正直、非常に困難です。陸上選手でも短距離走と長距離走では両立しないように。
コンピュータ業界というのは非常にすそ野が広い分、全然違うノウハウを必要とするものが並立しています。
※Web関連技術と組み込み制御系では全くと言っていいほど異なる

それでもそれなりに何でもこなせる人はいますが、それは知識の吸収が早いがゆえに「何でも勉強して対応できる」といったほうが近かったりします。(知識の吸収が早いのも、培った経験という土台があればこそですが)

正直、今の貴方の経歴からすると、まだまだひよっこですし、若者特有の壮大な夢を言ってるなー、くらいにしか捉えられません。

また、プログラミングだけならまだいいのですが、システムエンジニアというか設計にもかかわるとなると、業務知識(会計だったり電気回路だったり幾何学だったりセキュリティ関連だったり法的知識だったり)も必要となってきますので、それらの勉強もまた必要になってきます。

まずは情報処理技術者試験の問題集(過去問や解説も公式サイトにあります)から、技術者が持っていてほしいと思われるものが何か見てみるのもよいかもしれません。

投稿2017/05/10 01:59

tacsheaven

総合スコア13703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/05/10 03:00

回答ありがとうございます。 質問が悪かったです。 今後どういった方向に進むか決めては無いけど、仰られた「それでもそれなりに何でもこなせる人」になるにはどういう勉強を重ねていけばいいかという質問でした。 「それでもそれなりに何でもこなせる人」になるためのある程度の決まった道筋があるのであれば、 今私はその道筋のこの辺だから今後のために「〜を勉強すればいいよ」 といったようなことを教えていただきたい。という質問でした。 回答ありがとうございました。
guest

0

求めている答えとはたぶん違うものですし、しかもとっくに習得されていることかもしれないので恐縮ですが

「とにかく速いタイピング」

こそがソフトウェアエンジニアとして成長し続けるための汎用的技能であると確信しています。

どんな技術を吸収するにしろ、もしくは良いプログラムの書き方を身につけるにしろ、
そこには必ず成果物の数倍の試行錯誤が発生します。
このとき、書いたプログラムをあっさり消すことを惜しまずに試行錯誤できるか、というとここで速いタイピングが効いてくるのですね。あっという間に打ち込めるならあっさり消すのも惜しくありません。結果として、多くの試行錯誤をして多くのことを吸収することができるという寸法。

これは決して私一人の頭から出た考えではなく、30年ほど前のPC入門本で紹介されていた教えで、今もまったく陳腐化していないことです。
(西田雅昭/邦好「最新はじめてのMS-DOS」 1988)

投稿2017/05/10 04:51

yuba

総合スコア5568

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/05/10 05:03

回答ありがとうございます。 経験者の方の考えなので参考になります。 作業自体を億劫に感じない為に必要なスキルだと私も思います。 (タイピングの速度で世界を狙う!とかは違うと思いますが) 回答ありがとうございました。
guest

0

一例ですがHow to become a hackerという文書があります。

http://cruel.org/freeware/hacker.html#basic_skills

私は二十歳くらいの時に大学の図書館にあるパソコンでこれを読んで以来、これを指針にしています。以来十数年間、今のところ「ここに書いてある通りにして間違いだったなぁ」とか「もっと良い方法があったのになぁ」とか思った事はありませんでした。個人の望む方向性によりますが、読めば得るものはあると思います。

投稿2017/05/10 03:38

YouheiSakurai

総合スコア6142

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/05/10 03:45

回答ありがとうございます。 サイトを見てみます。 すごくためになりそうです。 ありがとうございました!!
guest

0

システムにしろ、プログラムにしろ
問題解決の為の手段です。
で、
1.何をしたいのか?
2.それが、どうあるべきなのか?
3.そして、どの様に解決すべきなのか?
が、プログラムって? に答える時の大雑把な回答です。
質問からは、
1.の部分が見えていないように伺えます。

取りあえず、やる事が見つからないと云う事出れば、
A.マイコン系での、アセンブラから、OSとは辺り
⇒アセンブラは忌避される傾向がありますが、
基礎として重要なんですけどねぇ。
BIOS一つ作るもの、仕様書だけで実装すると、
かなーり大変ですよぉ。
実装用の仕様書が無い状態では、、、
B.WEB系の環境構築やら、開発環境整備やら
例えば、Linuxの開発環境を整えるのは、
ディストリビューション毎の癖があったりして、
知らないと、間抜け落としに嵌ったりします。
C.古くからの基礎としては、
電卓、エディタ、ペイント&ドロー を作れるようになったら
初級編終了みたいな感覚がありますけど?
今だと何になるんでしょうねぇ。

投稿2017/05/10 02:27

編集2017/05/10 02:29
daive

総合スコア2028

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/05/10 02:46

回答ありがとうございます。 おっしゃる通り、何をしたいかが見えてません。 よく海外の人がフレームワークやps3のハッキングをするのをみて、こんなのできたら便利だろうな〜 こんぐらいの技術レベルに近づきたいな〜 って感じです。 casl2はやったことあるので、アセンブラの重要さはよくわかります。 頂いた回答から考えるに、ラズパイは結構いい選択肢な気がしてきました。 回答ありがとうございました。
guest

0

言語に満足していないとのことですが、言語に満足度を求めるのは良く分かりません。単に使いやすいかということでしょうか?それともその言語で出来る事の幅に満足していないという事でしょうか?
基本的にやりたい事があってそれに関する言語を学ぶのが一般的だと思います。

やりたいことがなくただ全てを出来るようになりたいのであれば以下の、

・フロントエンド
・バックエンド
・クラウド,サーバ
・組込み
・AI

などその分野で使われている言語、技術等を調べて勉強されてみてはどうでしょう?何でもできるプロフェッショナルというのは憧れはしますが大変難しいことだと思います。

投稿2017/05/10 02:05

_Victorique__

総合スコア1392

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/05/10 02:50

回答ありがとうございます。 言語に不満は無いです。 おそらくそのレベルにまで達して無いです。 言語に不満を覚えるのって、いくつもの言語を一定レベルまで習得しているからだと思うんですよね。 なので、私がそのレベルに行くには他の言語に挑戦するのがいいんじゃ無いかと思い、今回質問しました。 回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問