Q&A
テーマ、知りたいこと
いろんな言語の公式リファレンスを読んでみてもわからない単語や表現の仕方が多くて、調べても調べても沼にはまっていくことがほとんどです。最終的に個人ブログに行きつき、具体的な使用方法を見てやっとなんとなくわかる状態です。
これは調べ続けてればいつか公式の物を見ても意味が分かる日がが来るのでしょうか。みなさんはどうやって理解しているのか、またどういう勉強をして理解できるようになりましたか
背景、状況
動けばいいやというポリシーの元やってきたので、ウェブサイトのコピペや切り貼りばかりしてきました。ここで一度ちゃんと勉強したいと強く感じたので質問させていただきました。
よろしくお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
下記のような質問は推奨されていません。
- 質問になっていない投稿
- スパムや攻撃的な表現を用いた投稿
適切な質問に修正を依頼しましょう。
回答7件
#1
総合スコア28309
投稿2023/03/10 22:25
編集2023/03/11 01:54これは調べ続けてればいつか公式の物を見ても意味が分かる日がが来るのでしょうか。
ドキュメントを読むために必要な知識が有限である以上、わからないことをわかるようにしていけば読めるようになります。
が、ここで最近多く勘違いされていることがあります。
わからないことは検索すればいいと非効率な計画を立て、最初から系統立てた勉強をするのではなく、簡単な動画を見てすぐ何かができると思う人が多いことです。
そういう人はまずフィボナッチ数を 20 まで求めてみましょう。
そうすれば、必要な値を計算する値を計算する値という、最終的な値を計算するにあたって基礎となる値を求めるために同じ計算を繰り返すことがいかに非効率かわかるでしょう。
それは他人の数倍の時間がかかるという生易しい話ではありません。
系統立てた勉強をする人が 100 のことを覚えるのに 100 時間かかるとすると、その都度検索する人は 40 億時間かかることもあります。
これでは生きているうちに読めるようにはなりません。
たとえばここ teratail で 10 回同じ質問をする人がいます。
その人に同じ質問を繰り返さないでくれと言うと、その人は同じ質問ではないと返します。
つまり、一つの基礎が理解できていれば理解できる十の問題が、全部別の物に見えているのです。
a1 a2 a3 ... a10 という変数があり、いちいち数値をつけるのは面倒なので変数の名前を動的に変更する方法を尋ねます。
回答者はそれに対し、配列を使えと教えます。
質問者は今度は a_b b_c c_d という変数を作りたくて尋ねます。
回答者は配列を使えと教えます。
また、変数 a b c ... z の中から特定の値をみつけたいと尋ねます。
回答者は配列を使えと教えます。
この間のやりとりに数ヶ月かかり、結局その人は「聞かれたことに答えずマウント取るやつばかり!」と怒って去ります。
何という無駄な時間でしょうか。
#2
総合スコア10268
投稿2023/03/10 23:38
勉強の仕方なんて学生のうちに身につけてること。
理解できないのは順番に学習してないから。
小学生が中学以降の教科書読んでも理解できない。
公式でも読みやすい文章と読みにくい文章があるので理解できないものは向いてないのでさっさと諦めたほうがいい。
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
#3
総合スコア11367
投稿2023/03/11 03:34
人が作ったものであり、有限のものですから、理解しようとしている限りいつかは理解できると考えます。しかし「動けばいいや」は理解しようとしていたとは言い難いでしょう。
年寄りの昔話になりますが、私はプログラミングの「ちゃんとした勉強」はしたことがありません。全て独学です。
そもそも私がプログラミングを始めた頃はちゃんとした勉強など出来る所は無かったのです。
あの頃に比べれば今はあらゆるモノが増え、複雑化しました。その増え・複雑になる過程と共に(時間も共有して)勉強してきたのと、増え・複雑になってからまとめて勉強するのでは、全く違うでしょう。
生物は、受精からその生物の形になって生まれるまでに、単細胞生物からの進化の過程を体験するかのように形を変化させて育つと言います。何故なのか知りませんが『順番がある』ものと思います。
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
#4
総合スコア81853
投稿2023/03/11 03:49
プログラミング入門書は読んだことはあるのでしょうか?
レビューサイトなどで、良書とされている物を読むところから始めると良いかと思います。
古い本で、今使われないようなバージョンに準拠して書かれている本でも良いです。バージョンによる差異は本質的じゃないので、それこそリファレンスを見る話です。
また、各言語で書かれたプログラムが実際にCPUの上でどうやって動いているのか、DBMSは内部でどんなことをしているのか、想像が付かない場合は、「コンピューターの仕組み入門」的な書籍も良いかと思います。
知らないとプログラムが書けないと言うことはないですが、高級言語のような抽象化されたレイヤーだけで考えるよりは効率がよいプログラムを間違いが少なく書けると思います。
>Zuishinさん
「成長するつもりはなくて、答えだけ教えて欲しい。わからないことがあればその都度聞く。」という質問者と、
「今度から同じ事を聞かずに済むように教えてあげよう」という回答者は、相性悪いんですよね。
働く気が全くなくて魚が今すぐ食べたいだけの人に魚釣りの方法を教えるみたいな。
質問に、「成長したい」「答えだけ欲しい」という区分があれば良いのかな。
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
#5
総合スコア102
投稿2023/03/13 08:11
そもそも、プログラム言語の公式ドキュメントをどのように読もうとしているのでしょうか?
最初のページから読み進めるというケースもあることはあるのですが、それは極めて上級者の所作かと思います。
ブログやウェブサイトからコードを入手してきたら、そのまま動くか確かめるでよいと思います。
そこで動いた場合も、使ったことがない機能があれば公式ドキュメントで調べてみるといいでしょう。
類似した関数や、最新バージョンでの表記方法などが見つかるかと思います。
最良は、公式がリファレンスだけでなくExampleやtutorialを用意しているケースで、こちらに同様の手法で着手すると使用頻度が高めのものから学びやすいかと思います。
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
#6
総合スコア80619
投稿2023/03/15 04:44
多くのドキュメントは辞書だと思ったら良いと思います。
つまり、何かの参考書などを使って学習する際にセットで「機能の仕様」「類似機能」を確認するために利用するもの。
完全に記憶する必要はなく、使い方を知りたいときに確認するための必須資料です。
リファレンスやマニュアルはフォーマットがおおよそ決まっているものなので、
「知りたい機能への辿り着き方」と「該当ページ・画面の見方」を知っていれば、読めるようにはなります。
それと”使えるようになる”は別で、読んだだけで理解できることはないので、あとはひたすら書く。
機能の使い方を追求する。エラーや不具合を恐れず積極的に経験して身に着けていく。
そして、使い方を覚えたら「どういう場面でどのように使えそうか」を考える。その繰り返しです。
個人記事や動画での配信を観るなとは言いませんが、自身の環境に合致するかとか、やりたいことそのまま使えるとは限らない(というか皆無と思って良い)ので、公式ドキュメント・マニュアル・リファレンスで機能確認を行い、
「自分がやりたいことにどう当てはめられるか」を考えて、また試行錯誤と検証の繰り返しで要件満たせるように実装していきます。
「動けばいい」というのはある意味真理で、私も「要件を満たしていて不具合がない、他者が問題なく使える」のであれば、そこに至るまでの経緯やルートは如何様にもという考え方を持ってはいますが、
その一方で自分が説明できないコードをそのままにしておかない、使うべきではないという考え方も持っています。
何か問題があったとき、機能追加などメンテナンスは結局自身で行うことになるわけですから、説明できないコードのまま「なんか動いてる」状態というのは非常に怖いわけです。
例え個人記事の流用もしくはそのままコピペで動いたとしても、「なぜこれで動くか」を説明できるようになることを面倒くさからずセットにされてはどうでしょうか。
すると、自然と公式ドキュメントに手が伸びていくはずです。最も正しくその言語の仕様を説明している資料ですから。
結局は実践が一番ですから、この手の投稿へのアドバイスとして以前からよく添えているのですが、
teratailで回答してみては如何でしょう。
他人に分かるように説明できる=理解できている わけですから、自身の理解度も測れますし、
間違っている点は指摘してもらえますから知見も広がります。得るものは多いと思います。
回答する際の文章校正も良く考えなければならないですし、根拠となる資料にはやはり公式ドキュメントはほぼ必須です。
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
#7
総合スコア3
投稿2023/03/15 15:18
やっと公式リファレンスが少しは読めるようになった初心者からの助言です。
とにかく書いてみましょう!何でも良いので書きましょう!
自分はゲームが好きなのでポケモンやRPGを作ってみています。(まだコンソール上でのテキストのみですが...)
自分はまず「勇者とスライムで戦いたい!」
→どんな風に戦いたい?
ターン制で戦いたい。→できた!次は...
行動順を素早さ順にしたい。→できた!次は...
レベルアップさせたい。→できた!次は...
仲間(僧侶)を増やしたい。→できた!次は...
とこんな感じで、やりたいことができたら欲が出るもので、次々とやりたい事が増えていき、それを実現させるために色々調べて、勉強していきました。
すると不思議な事に公式リファレンスに書かれていることが理解できるようになっていました。
全部理解できるようにはまだなっていませんが、それでも大体のことは理解できるようになりました。
公式リファレンスは(自分的には)いわば公式集です。
どの公式をどういうときにどう使うのかは、実際に動くコードを見ないことにはわかりません。
数学の勉強と同じで、(一部の天才を除く)普通の人は教科書を読むだけではセンター試験を時間内に全てとくことは出来ません。
何故なら応用力がないからです。
応用力は実際に使ってみてはじめて身に付きます。
プログラミングも同様のことが言えます。
自分はまだまだ未熟なので具体的なアドバイスは出来ませんが、色々な個人サイトを巡ってある程度雰囲気をつかんでから、公式リファレンスを読むときちんと理解できるのではないでしょうか?
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
関連した質問
Q&A
解決済
Rustでグローバル変数に設定データを置きたい
回答4
クリップ4
更新
2021/01/27
Q&A
解決済
【Go】結局、$GOPATHと$GOROOTはどこに設定すればいいの?
回答2
クリップ5
更新
2016/07/20
Q&A
解決済
SQLの「KEY句」とは何でしょうか?
回答3
クリップ0
更新
2017/04/12
Q&A
解決済
【vue3】【composition api】子要素でdefineExposeで定義した関数が親要素で正常に参照できない
回答2
クリップ0
更新
2023/04/03
Q&A
解決済
string.Formatのカスタム数値形式文字列の書式の違い
回答1
クリップ1
更新
2023/03/12
Q&A
解決済
ローカル環境からGoogleドライブにアップロードする処理を実行した際、認証エラーが発生して動作しない。
回答2
クリップ0
更新
2023/02/03
Q&A
受付中
Cloud Formation Fn::Subの使い方
回答1
クリップ0
更新
2023/06/05
同じタグがついた質問を見る
MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。
Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。
Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。
Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。