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

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

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

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

12回答

1919閲覧

プログラミングの勉強について

Java_Test2019

総合スコア27

プログラミング言語

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

1グッド

2クリップ

投稿2019/05/21 09:55

編集2019/05/22 02:40

Pythonを独学で勉強しています。
入門書や入門サイトを使って基礎から順序だって学んでいくつもりだったのですが、知人から違う形の勉強アドバイスを受けました。
たとえば入門書の序盤の所を読んでいたのですが、知人はPythonで何をやりたいかが重要だと、それによって作るコードも全然違うという事だと、だから入門サイトの終盤にある、実際に目的に沿った実践的な所をやったほうがいいとの事でした。順序だって学ぶのではなく、何か課題を決めてそのサンプル通りに実際にコードを、わけわからなくてもとりあえず書いて作る、結果を見たあと、そのコードでわからない所を調べて勉強するといいとの事でした。

例えば顔の検出などのサンプルコードが入門書の終盤に載っています。
入門書の最初から順序だって勉強するのではなく、まず何か課題を決める→顔の検出のコードを組むのを課題にする→書いてRunする、結果を見る、コードでわからない部分を調べる、こうした方が良いとの事です。根拠がわからないのですがこういう勉強方法のほうがいいのでしょうか?
この場合ほぼコード全部わからないので、ひとつひとつ調べるどころかひとつひとつの部分の勉強のための勉強、その勉強のための勉強という事になり、こういうやり方だと検索も引っかからなかったり、引っかかってもよくわからなかったりして非効率だと思うのですが。
こういうやり方より基礎から学んだ方が良い気がするのです。しかし基礎からというのも、素人では自分がPythonで目指す目的のものづくりとは関係ない部分の勉強部分があっても気づきませんし、知人のやり方も一理あると思います。基礎は大事なのはわかっているのですが事情によりもう本当に時間がないので効率を気にしています・・・。

質問の要点としてはどちらの勉強方法がプログラミングの勉強として適しているでしょうか?
ちなみに仕事ではありません。事情により時間は迫っているのですが。将来的には仕事のためですが。

プログラミング経験者からは、基礎ばかりやっていては時間が間に合わない(事情により)ものだし、成功した皆最初は序盤をひとつずつやっていくより、応用課題のサンプルコードをほぼアルファベットを羅列して書くだけの気分で書いて結果を見てを繰り返していくことで感覚をつかみながら学んでいくものと聞きました。
ではやはり、感覚をつかんでいく形でも良いということでしょうか?
python入門書はいろいろ読んできましたがプログラミングのプも知らないレベルの入門書ならともかくpython入門書はどれも、これこれこういうサンプルコードを書いて実行するとこういう結果になる、程度しか書かれておりません。実行して結果を見たあと、コードのひとつひとつを調べていく、たとえば最初のfrom importとは何か?ただモジュールというツール的なもの?を入れる程度の知識だけじゃなく調べてもっと深く知ってから次の行に書いた文法を調べる、という方法を取っていました。しかしこれでは一つのサンプルコードを読み解けるまでに数日かかります。基礎が大事とはいえこれでは時間がかかりすぎてしまい、仕事にいかせないまま終わってしまいます。
それよりはわけわからなくてもコードを書いて実行、結果を見る、次のサンプルコードもわけわからなくてもとにかく実行して結果を見る、これを繰り返せば文法なんて調べなくても同じようなコードを書くのでだんだん感覚が身についてくる、という事らしいです。
まるで英語がわからなくても英語のCDでリスニングしていれば英語を覚えていくみたいな感じの話でした。最適な勉強方法とまではいかずとも、間違ってはいない、こういうやり方も一つの正解と言えるでしょうか?

これまで沢山であって来たプログラマーが仕事にしている人も趣味でやっている人も、
最初の最初から基礎は少しかじった程度にしてあとはアルファベット書くだけのようなコード書きで感覚をつかんでいく学び方、教科書学習方法ではなくリスニングのような回数をこなして感覚でこういうものだと見につけていくやり方の人だらけだったので、そういうものなんだと思っていました。しかし最近アルファベット書くようなやり方では覚えないという派の人も出てきて混乱したので質問した次第です。

しかしそんな二つのどっちが正しいのかどころか、どちらがよさそうかもしれないか、ぐらいでもどうとも言えないほどのもので、どこの話でも割と結構意見が割れてしまうものなのですよね・・・。
しかし逆に言えばこれは、どっちかのやり方が間違っているとは言えないともとれるわけで。

・・・数学や英語のように基教科書方法で基礎からで良い、と単純に答えが出せるようなものではない。
難しいですね;

DrqYuto👍を押しています

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

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

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

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

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

mather

2019/05/21 10:32

内定が出たけどPythonについて現時点では全然わからないので入社までに一人前になりたい、とかでしょうか?
Java_Test2019

2019/05/21 22:14

いえ、しかし近いものです。すみません、事情はちょっと話せません。
Java_Test2019

2019/05/21 22:16 編集

最後の15行に要点をまとめ?ました。長くなって申し訳ありませんが、もしお時間よろしければ皆さん、ちょっとだけでもいいのでぜひ更なる意見を頂ければと思います。
guest

回答12

0

ベストアンサー

順序だって学ぶのではなく、何か課題を決めてそのサンプル通りに実際にコードを、わけわからなくてもとりあえず書いて作る、結果を見たあと、そのコードでわからない所を調べて勉強するといいとの事でした。

そういう言葉の通りやって、こういう質問サイトで、入門書の前半に載っているレベルの質問をしている人が多数というのが現状です。おそらくどう調べたら良いかすら分からないのでしょう。
英語の勉強をするのに、アルファベットを全部覚える前に、まず小説を読み出すような物かと。

言語で学ぶものは、基本文法の部分と、ライブラリの関数等がありますが、基本文法は全部覚えるとして、ライブラリは拾い読みで入門書を読み終えてもかまいません。

また、プログラミング未経験者だと、入門書を読んでいても理解できない概念が出てくると思います。
そういう所を完全に理解できるまで先に進まないと時間が掛かりすぎるので、何が理解できず飛ばしたのかを把握した上で、次に進みましょう。

投稿2019/05/21 14:02

otn

総合スコア84555

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

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

0

知人はPythonで何をやりたいかが重要だと、それによって作るコードも全然違うという事だと、だから入門サイトの終盤にある、実際に目的に沿った実践的な所をやったほうがいいとの事でした。

その知人は「Python」の経験はないけれど、他の言語でのプログラミング自体はしたことがある、ということはありませんか?パラダイムの大きく違わない言語での経験があれば、言語自体の未経験はある程度までならどうにかなってしまいます。

投稿2019/05/21 10:06

maisumakun

総合スコア145184

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

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

cateye

2019/05/21 10:30

>言語自体の未経験はある程度までならどうにかなってしまいます。 そうですね・・・わたしも交換器系やCなどの組込系の仕事が多かったですが、PHPのプロジェクトに放り込まれた経験があります。・・・結局なんとかなってしまいますw・・・今はダメです;;・・・頭が回らないw
guest

0

知人はPythonで何をやりたいかが重要だと、それによって作るコードも全然違うという事だ

maisumakunさんがすでに書かれていますが、言語自体の未経験はなんとかなる事が多いと私も思います。
昨今、機械学習とかがブーム(既に古い?)ですが、ある程度の数学的知識が必要かと思います。その一方で、経理システムでは、経理に関する知識が無いと厳しいし、通信システム組込み辺りだと、通信に関する知識は必須みたいな感じだと思います。

そして、その辺の知識があれば、少々、言語が不勉強でもコードが追えたりします。両方、同時っての大変ですね。

投稿2019/05/21 13:02

pepperleaf

総合スコア6383

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

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

0

独習者が最初に超えるべきハードルは、「公式のドキュメントを自力で読めるようになる」ことです。
その意味で、初学者向けの教本は「体系的な知識と用語」を仕入れるためと割り切って利用すべきです。最初から丁寧に読み、公式が読めるようになるまでのつなぎの資料として活用し、可能であれば「開発環境の構築」と「デバッグ手順」までを教本で学んで下さい。
それ以降は、サンプルをいじってみるなり、OSS を解析してみるなり、フレームワークを分解してみるなり好きにすれば良いと思います。

投稿2019/05/21 10:32

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

ずぶの素人(失礼)がプログラミングを学ぶ場合、基礎がないと他人のコードを見ても“ワケワカメ++?”だと思います。最低限(コードが読める)の知識が必要だと思います。「時間がないから」と言って基礎を飛ばした結果、何時まで経っても「教えてくんw」になってしまいます。そうならない為にも基礎はしっかり覚えて下さい。Pythonなら本家日本語サイトを一読されるといいでしょう。

投稿2019/05/21 10:21

cateye

総合スコア6851

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

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

cateye

2019/05/21 10:43 編集

pythonについては、昔友人に「pythonってわかる?」と聞かれた事があります。「しらない」と言って、それはその時で終わってしまったのですが、最近になってみんながpython,Pythonとギャーギャー騒ぐのでw、ちょっとかじり始めました・・・まだまだひよっこです。
guest

0

一つのサンプルコードを読み解けるまでに数日かかります

数日かけてそのコード上で使われている書き方はあらかた会得できる、というのであれば、悪くないやり方だと思います。最初のうちは効率が悪くても、続けていればだいたいのことはわかるようになり、効率も上がってきます。

ただ、すべての言語仕様を把握していなくても動くコードは書けるので、最初のうちは「わかる範囲で書く」という経験を重ねていった方が、サンプルコードを写経するよりは経験値を積みやすいと思います。私が最初に書いたpythonのコードは、

  • importなんてわからないのでライブラリの読み込みにだけ使う。自作のものは一ファイルにぜんぶ書く
  • クラスはよくわからないので触らない。関数だけでロジックを組む
  • 内包表記もよくわかってなかったので、ぜんぶmapとlambdaで書いてた(なぜかそっちはわかった。でもイテレータがわからないので、「なんで二回目のループで空になるんだろう」と思いながら結果をぜんぶlistに変換していた)
  • PEP8も知らなかったのでTABでインデントしてて、変数名はキャメルケース
  • 当然コピペの嵐

みたいな感じでしたが、それでもがんばってデバッグしながら作ったら最終的には期待通りに動きました。ちなみに200行くらいのWebスクレイピングのコードで、研究で使うデータを取るために書きました。

だれでも最初はそんな感じです。必要とか興味に応じて勉強していけばいいだけです。

投稿2019/05/22 07:26

編集2019/05/22 07:33
hayataka2049

総合スコア30933

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

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

Java_Test2019

2019/05/22 07:37

回答ありがとうございます。 やはりそうなるとまともなプログラマーになるには膨大な基礎学習の時間が必要で、=そういった仕事につく人は学生のうちから学んできたひとなんですかね・・・。 ある事情によりわりと時間がないのですが基礎が大事という事でバランスよくかつ急いで学んで行きたいと思います。
guest

0

外国語を学ぶにどんな方法がありますか?

1. 日常会話のよな短いものをたくさん理屈なしに詰め込んでいく
2. 文法や単語を学んでいく
3. 文芸作品を読んで行く

などがあります。

実践的な例にいきなり取り込むのは、文法、単語の知識なしにシェクスピアの原書を読みすすめていくようなものと言えます。
シェクスピアを読むにはそれなりの基礎がなければ、時間を無題に費やすだけだし、楽しさを味わうこともできないでしょう。

100 時間から 200 時間ぐらいをかけて基礎的な事柄だけはを習得してから、実践的な課題に取り組むと良いと思います。

投稿2019/05/21 12:07

編集2019/05/22 15:13
katoy

総合スコア22324

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

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

0

「プログラムを作ること」と、「プログラミング言語でコードを書くこと」を混同されているようです。
「プログラム」とは、幼稚園の頃には「運動会のプログラム」や「音楽会のプログラム」、または「入学式の式次第」を見て、内容を理解してたはずです。プログラムとは、目的を達成するために必要な「するべきこと」を、順番に並べることです。これには言語は関係ありません。
しかし、これが難しい。
目的を達成するためには、まず、目的は何か、を知らなければなりません。「そんなこと当たり前でしょ」と思われるかもしれませんが、こういう場で行われている仕事がらみの質問の多くは、それを知っていないと思われるものです。
次に、目的を達成するために必要な情報を集めなければなりません。
また、情報を得る方法を考えなければなりません。
さらには、どのような順番で実行できるのかを考えなければなりません。
これらの情報が出そろってやっと、特定の「プログラミング言語」に変換していくという「コードライティング」ができます。
一般的に使われている「プログラムを書く」というのは、こういう工程を知って、慣れている人が、ネイティブな言語ではなく、最初からプログラミング言語で考えることができることをいいます。

よって、初心者がしなければならないのは、ネイティブな言語で、目的を達成する工程を書き出すことです。ネイティブな言語とは、ここを見ている多くの人にとっては日本語です。

しかし、ネイティブな言語で表現できることと、プログラミング言語で表現できることには大きな差があります。この差は、リファレンス(説明書)を見て覚えるしかありません。しかし、言語ごとに表現力には差があります。
ですから、リファレンスをざっと眺めます。そして、細かいことはいいので、何が書いてあるかを把握します。後で必要なときに、「こんなことがしたい。そのためにはこういう表現が必要だ。そういえばリファレンスにあったなぁ」と思い出せるようになっていればいいです。
あなたのお知り合いがおっしゃっているのは、この段階のように思います。

投稿2019/05/22 13:42

Q71

総合スコア995

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

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

Java_Test2019

2019/05/23 04:17

回答ありがとうございます。 なるほど、ちょっと必要以上に細かいところまで気にし過ぎたようです。
guest

0

入門書のサンプルコードを読み解くのに数日もかかるというのは、何も積み重ねていないからです。Python は学習用に作られたもので、その文法は明解で理解しやすく、ふつうはそこまで時間かかりません。

焦りすぎて努力せず結果だけ求めようとしているため、積み重ねるべき基礎を飛ばしてこんな質問で数日を無駄にしています。こんなことをしているのだったら、手持ちの入門書を読めるようになってください。

from import を調べるのに何分かかりますか? Google で検索して侍エンジニアやテックアカデミーや Qiita で調べようとしていませんか? それは時間の無駄です。こっちを使ってください。

Python 言語リファレンス
6. モジュール (module)

投稿2019/05/21 22:27

Zuishin

総合スコア28660

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

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

Zuishin

2019/05/21 22:32

入門書も、誰が書いたのかわからない、絵が多くて薄い物を選んでいるのではありませんか? 最近そういう選び方で時間を無駄にする人が増えています。
Java_Test2019

2019/05/22 03:27

いえ、分厚くてサンプルコードが沢山載ってるものばかり選んいます。 ただ、絵がのってて薄いのは割と解説があってわかりやすいのですが、これらは簡単なものしか載せてなくて、基礎中の基礎しか載せていないのが多かったです・・・。 分厚いのは400ページくらいあるものは結構あるのですがその沢山あるどれもがサンプルコードと結果とそのコードに書いてるものがちゃんと理解したうえでの解説しかないのでどの入門書もそのサンプルコードを理解する前に入門書のための勉強をネットでする形になっちゃう現状です・・・。 もちろん#~とコメントはサンプルコードにも書かれているのでコードのこの行に書かれているものは意味はわからないがこの行に書かれているものが何のために書かれているかなどはわかります。 なのでどうしても基礎を勉強できる本がないのが実態とも言えます・・・。(ネットでいくつかのサイトを読み比べて学んで行くしかないので皆そうしてきたと思いますが。 あと前述しましたが基礎中の基礎の本はありました。モジュールとは何か?や、while、ifの文法から、sklearnなどを使った学習ものまで(sklearnなどのほうはsklearnを入れたらどんな動作をさせられるかってレベルのものでsklearnじたいの仕組みは載っていません。)
hayataka2049

2019/05/22 06:19

@Zuishinさん >Python は学習用に作られたもので という話は初めて聞いたのですが、出典はありますか? 調べても、Guidoがクリスマス休暇に趣味で作ったという話しか出てきません。 https://www.python.org/doc/essays/foreword/
Zuishin

2019/05/22 06:26

失礼しました。記憶違いです。Pascal が教育用に作られたというのがいつの間にか頭の中で Python になっていたようです。
guest

0

回答としては、ご自身がしっくりくる方法が一番良いと思います。

プログラミングに限らず、学習方法と効率の関係は人それぞれなので、
学習結果に対して責任を取る人(上司とか)以外の指摘は聞き流せば良いでしょう。

基礎からコツコツやれば応用が効きますが、応用に辿り着くのには時間がかかります。
関係するところだけつまめば、うまくやれば目的は手っ取り早く終わることもあります(躓いて遠回りになることも多い)
というのはプログラミング学習でも変わらない事です。

投稿2019/05/21 10:00

編集2019/05/21 10:06
tanat

総合スコア18713

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

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

Java_Test2019

2019/05/21 10:23

どっちの方法を取った方が良いかは、私を含め誰もわからない、という事ですね・・・。
tanat

2019/05/21 10:43

そうですね。誰でもプログラミングを効率的に学習できる方法というのは確立されていないので、ご自身で都度都度分析と判断をして進めていく他無いかと思います。 プロを雇ってマンツーマンで教えて貰ったり、学校に通えば効率が良くなる可能性はそれなりに高いですが確実と言える訳では無いですから。
guest

0

プログラミングに限らず万人にお勧めできる勉強法があれば、それだけで「○○メソッド」とか名前つけて商売できそうですが(笑)

個人的な意見としては、モチベーションの維持のためならご友人の仰る事に一理あるかなと。
写経して動かしてみただけでも、結構「おぉ」と感動する事はありますし、そういう事でやる気が湧く人もいると思います。
また「百聞は一見に如かず」とも言いますし、とにかく動くものを見た方が理解が早い場合もあるでしょう。

ただ、基礎的な事はいずれどこかのタイミングで勉強する必要がありますし、そこをすっ飛ばすと「何がわからないかわからない」状態になってしまい、こういうサイトで質問すらロクにできない状態になります。

入門書の最初の方に書いてあることなんて、程度の差はあれ、その分野でそこそこ経験のあるプログラマなら誰でも理解している事なので、ご自身がやる気のあるうちにちゃんと目を通した方が良いんじゃないでしょうか。

投稿2019/05/21 13:38

gentaro

総合スコア8949

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

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

Java_Test2019

2019/05/21 22:12

ではやはり、感覚をつかんでいく形でも良いということでしょうか? python入門書はいろいろ読んできましたがプログラミングのプも知らないレベルの入門書ならともかくpython入門書はどれも、これこれこういうサンプルコードを書いて実行するとこういう結果になる、程度しか書かれておりません。実行して結果を見たあと、コードのひとつひとつを調べていく、たとえば最初のfrom importとは何か?ただモジュールというツール的なもの?を入れる程度の知識だけじゃなく調べてもっと深く知ってから次の行に書いた文法を調べる、という方法を取っていました。しかしこれでは一つのサンプルコードを読み解けるまでに数日かかります。基礎が大事とはいえこれでは時間がかかりすぎてしまい、仕事にいかせないまま終わってしまいます。 それよりはわけわからなくてもコードを書いて実行、結果を見る、次のサンプルコードもわけわからなくてもとにかく実行して結果を見る、これを繰り返せば文法なんて調べなくても同じようなコードを書くのでだんだん感覚が身についてくる、という事らしいです。 まるで英語がわからなくても英語のCDでリスニングしていれば英語を覚えていくみたいな感じの話でした。最適な勉強方法とまではいかずとも、間違ってはいない、こういうやり方も一つの正解と言えるでしょうか?
gentaro

2019/05/22 00:14 編集

何が正解かなんで誰にもわかりません。結果としてちゃんと身につくのであればそれが正解です。 とりあえず書いてみる、という方法をとるにしても、理解してなくてもどんどん次へいけ、などという事を勧めるのはちょっとどうかと思います。 実行した結果を見て、何がわかったか、何がわらないのかを確認し、わからない部分を調べていくという方法もある、という程度だと思っています。 あとは程度問題で、100%理解しないと次へ進んではいけない、みたいな強迫観念があると、だいたいの勉強は挫折すると思います。あなたがその方法を苦痛に感じていないなら問題ありませんが、80%理解できたら先へ進んでみて、そこで得られた知見を元に、最初に立ち返ってもう一度やってみたらすんなり理解できた、ということもあるでしょう。(何の勉強をするにしても)
Java_Test2019

2019/05/22 02:38

これまで沢山であって来たプログラマーが仕事にしている人も趣味でやっている人も、 最初の最初から基礎は少しかじった程度にしてあとはアルファベット書くだけのようなコード書きで感覚をつかんでいく学び方、教科書学習方法ではなくリスニングのような回数をこなして感覚でこういうものだと見につけていくやり方の人だらけだったので、そういうものなんだと思っていました。しかし最近アルファベット書くようなやり方では覚えないという派の人も出てきて混乱したので質問した次第です。 しかしそんな二つのどっちが正しいのかどころか、どちらがよさそうかもしれないか、ぐらいでもどうとも言えないほどのもので、意見が割れてしまうものなのですね・・・。 しかし逆に言えばこれは、どっちかのやり方が間違っているとは言えないともとれるわけで。 ・・・数学や英語のように基教科書方法で基礎からで良い、と単純に答えが出せるようなものではない。 難しいですね;
guest

0

Python を勉強したいのか、
Python を使ったプログラミングを勉強したいのか、

どっちかによっても効率のよい方法なんてのは変わってきます。

投稿2019/05/21 10:07

tacsheaven

総合スコア13703

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問