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

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

新規登録して質問してみよう
ただいま回答率
85.48%
データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

Python

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

Q&A

3回答

786閲覧

Pythonを勉強しています。受験英語の「ビジュアル英文解釈」や「実況中継」のように、プログラミングの文法・構造をわかりやすく解説している本やサイトを教えてください!

yasutakyy

総合スコア1

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

Python

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

0グッド

0クリップ

投稿2022/05/02 09:17

編集2022/05/03 00:04

Pythonを勉強しています。
プログラミングの文法・構造をわかりやすく解説している本やサイトを教えてください!

といっても、「そんなのたくさんあるじゃないか」と皆さん思われると思うのですが、例えば英語でいうと、
全く英語の構造がわからなかった私なのですが、

ビジュアル英文解釈
英語の実況中継

といった、参考書(良書といわれてると思います)を読むことで(ご存じの方いるように)

・英語の動詞は、2種類しかない
・第1文型は、=である
・名刺は前置詞を合わさって副詞になる(他もある)

といった、基礎をしることができ、飛躍的に英語の理解が進みました。

ただ、プログラムにおいては、まだこうした本やサイトにであっておりません。

上のような英語学習経験をされてる方がいましたら、ここで言ってる意味が伝わればと思っております。
その上で、どうかお願いです。

プログラミングの文法・構造をわかりやすく解説している本やサイトを教えてください!

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2022/05/02 09:34

・言語は何ですか。プログラミング全般の話?タグにpythonついてるからpython? ・「まだこうした本やサイトにであっておりません。」・・・ふむふむ。この言葉から、ある程度目的意識を持ったうえで、この質問をされたのではないかな~と推察します。 それでは、貴方がこの質問をするまでに、どんな本やサイトを見てきて、その本やサイトは貴方にとってどの点が不十分であったか、他の人にもわかるように比較して説明していただけませんでしょうか。
Zuishin

2022/05/02 09:54

「Python 名著」で検索して複数のレビューを読んでみればいいと思います。
mike2mike4

2022/05/02 10:23

なぜ2進数かに小難しい数学理論があるように、理由があってもこれはこういうものだで済ませている方は意外に多いのではないかと。
BeatStar

2022/05/02 11:02

なんていうか、見当違いな質問になってますね。 プログラミングは英語みたいなものではありませんよ。 文法構造を理解するってよりも、概念と書き方を学べばいいだけです。
hoshi-takanori

2022/05/02 18:55

大抵の入門書やサイトには、例えば python の if 文なら、 if 条件式:   条件式が true の時の処理 else:   条件式が false の時の処理 みたいに書いてあると思いますが、そういうことじゃなくて?
yasutakyy

2022/05/03 00:02

アドバイスありがとうございます。 知りたいのは、Pythonなので、追記します。 また、if条件文のようなものも知ってはいるのですが、それは仮定法現在、みたいなイメージで、 もっと、主語と動詞があって、主語になれるのは名刺と・・・といった基礎的なことがしりたいのです。
BeatStar

2022/05/03 02:15

@ hoshi-takanoriさん そういうことではないと思います。 > 主語と動詞があって、主語になれるのは名刺と・・・といった基礎的なことがしりたいのです。 とあるので、質問者さんは「入門者が読んでわかりやすい本がほしい」ということでは。多分、プログラミング言語を英語とかのような感じに取っている可能性があります。つまり、「be動詞と一般動詞の違い」とかが知りたいみたいな感じかと。 Pythonとかだと「いつforを使って、いつwhileを使うべきか」や「if文の条件式として使えるのはどこからどこまでか」とかみたいなものでは。ifの条件式については「整数同士の比較はできるのは知っているが、文字列は?文字列に特定の文字列を含んでいるときは?小数のときは?」みたいな。 やり取り見ているとそういう感じに取れますね。
yasutakyy

2022/05/03 10:30

@BeatStarさん その方向なのですが、もっと根本的なことがしりたいのです。 ()を使うのはどういう意味なのか? 、や:はどういう時に使うののか? インデントするのはどういう時なのか? とかです。そこがわかったら、スッキリしそうなのですが、そうした説明が発見できずにおります。
Zuishin

2022/05/03 10:40

その辺りはどの入門書にも書いてあるんじゃないかと思います。
BeatStar

2022/05/03 11:21

> その方向なのですが、もっと根本的なことがしりたい… それが間違いです。
guest

回答3

0

あくまで私見ですが、言語学の観点からプログラム言語を見た場合、以下のような特徴があります。
・時制が存在せず、全て現在
・命令しか存在しない
・主語が二人称(コンピュータ)に固定
・数式のみの文が大勢を占める
・揺らぎを許さない
このように特殊すぎる為、言語学的なアプローチには無理があります。

そもそもプログラムは、性格診断などで見かける「質問の答えで分岐して結果を導く」チャートに似た、フローチャートを実現する為に創られています。
そして、このフローチャートは、手続き型プログラミング言語では、共通に利用できます。

原理からの理解を行いたいのなら、Pythonの文法などではなく、フローチャートなどの設計方法からのアプローチをされるほうが良いかと思われます。
こちらの場合、言語学の知識は、日常言語を「一切の誤解と解釈の余地のない表現」に変換するのに役立つかと思います。
例「お湯を沸かす」=>「鍋に水道水を200c±30cc入れ、点火したガスコンロの上に置き、鍋の中の水が摂氏90度以上になるまで待つ」

投稿2022/05/04 04:04

編集2022/05/04 04:05
YT0014

総合スコア1708

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

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

yasutakyy

2022/05/04 05:17

すごい参考になります!!なるほど!! 英語でいう動詞って、プログラムだと、何に当たるのでしょうか? print(" ") とするルールって、どういうルールなんだろうか?とかが知りたいのです!!
YT0014

2022/05/05 05:09

説明が拙くご理解いただけていないようなので、端的に申しますと。「自然言語と比較することが無意味」というのが、この回答の主旨です。 プログラミング言語の基本的な「文」は、A=B(AやBがプロパティや関数などの場合も含みます)ですが、この表記のどこに自然言語的な要素があるのでしょうか? なお、print(" ")の場合、文法としては、「呼出し」以上のものではありませんし、実際に何が行われるのかというのは、プログラミング言語としては、無意味です。
guest

0

高校時代透視図とポレポレをやっていたのでその気持ちよくわかります(笑)(透視図って今もあるんでしょうか?)
私自身スキルがゴミクズなので参考になればいいのですが...
プログラミングの構造を"理解"するのに一番手っ取り早いのは数学の勉強を始めることだと思います。実際理論から入ると進むのが速いそうですよ(理論から行くのはイバラの道に見えなくもありませんが...)
そう言うわけで、見当違いなことだとはわかっているのですが、私からは大学の情報系で行われている情報用の数学をプログラミングの前に学習されることを推奨します。
質問者さんの数学の力によるのですが、とりあえず大学基礎レベルの線形代数と微積と確率統計を身につけるのが速いと思います。マセマあたりでも買ってみてはいかがですか。
あとはプログラミングに関する法律を勉強してみることをおすすめします。プログラミング言語はへんに話すとウイルスになってパソコンをボコボコにしてしまうすごい言葉ですから、文"法"が文字通り存在するわけです。変な問題に巻き込まれないためにも勉強しておいて損はないと思います。
とまぁろくにプログラムも書けないくせにこう偉そうに語りました。参考になれば幸いです。

投稿2022/05/03 21:25

編集2022/05/07 14:12
akuryoku20

総合スコア28

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

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

yasutakyy

2022/05/04 00:35

コメントありがとうございます! ただ、私、完全に文系でして。。。数学からやる方が、大変そうですw
akuryoku20

2022/05/07 14:14

文系の方なら言葉から入る方がやりやすいかもしれませんね。指示語(プログラム言語においてその単語自体に意味があるような言葉。pythonでいうprint()みたいなの)を暗記するところから始めるのも高校英語ちっくでいいかもしれません(笑
guest

0

まず、この質問自体が見当違いです。

英語やスペイン語のような文法とPythonの文法は別物です。理屈とかありません。

その言語の開発者がそうと決めたからそうなのです。

そもそもプログラミングっていうのは「機械に命令すること」です。もっと言えば「”””私たち人間が手作業でやっている処理を機械に肩代わりしてもらうために命令すること””」です。

ただ、機械は機械語と呼ばれる0と1からなる言語しか認識できません。

110111111100000001101010101010010101… のようなものです。人間にとっては読みづらく書きづらい。
そのため、人間の言語(英語とか)に近い言語としてアセンブラが開発されました。ですが同じ処理を毎回書くのが面倒。そのため、C言語のような、for文やらif文やらの構造や関数のようなもmのを使って組みやすくしたのです。でもまだ問題があったのでC++のようなオブジェクト指向を取り入れた言語が開発されて…のように人間にとって指示しやすくしていったのです。

そして、なぜ a = f(a)のようにしたら関数になるのかとかは「開発者がそう決めたから」です。慣習的なものを理由としていることもありますが、基本的には開発者の気分次第。

ただ、関数呼び出しなのかリストにアクセスしているのかとかのようなものの区別がつけられないと厳しい時もあるので区別をつけるために「この記号はこういう意味とするぞ」と定義しているだけです。

つまり、基本的に「こういうものだ」と覚えて仕舞えばいいです。単にfor文はいつ使って…とか概念的なものを理解して書き方を学べばいいだけです。

for文とwhile文の使い分けは入門書や入門サイトに載っています。わかりづらいと言われているC言語の入門書にすら載っているのですからPythonなんて調べればわかるはずです。


[追記1]

他の方の回答を読んでちょっと思ったので追記します。

他の方が「関数名は動詞の現在形が多い, 命令形が多い」的な書き方をなさっていますが、慣習的なものだと思います。
私の上の回答で「プログラミングとは機械に命令する事」と書いています。その名残で、「このファイルに○○と書き込め」と命令形になっています。
ただし、C言語のstrstr関数( 文字列1 に 文字列2 が含まれているならその文字列データを返す…関数 ) のように名詞で構成されているような場合もありますが、大多数が命令形動詞です。

ただ、オブジェクトが持つメソッドとして「○○という状態か」とかだと Is~ になっていることが多いですが。

極論すれば 関数名を f とか a とかみたいなものでもいいです。ただしプログラミングって書いて終わり…ではなく保守も行います。
たとえば自分用のソフトを作る場合でも「やっぱりこの機能、いらねーわ」とか「あー、こういう機能を付けた方が使いやすいかも」と思って機能を追加したり削除したりとかを行います。ましてや仕事でやるならクライアントが「やっぱこの機能いらねーわ」と言ってきたりするようです。
その場合で関数名がfだのaだののような適当な名前だと可読性が悪すぎます。保守するときが大変。なので出来る限り読んでわかるような名前にします。

ファイルに書き込む処理なら Write(書き込め) File( ファイルに ) から WriteFile関数とするとか。

で、絶対的な決まりというわけではないですがコーディング規約と呼ばれるルールが存在します。言語やチームによって細かい事が変わってきますが、ここみたいな感じでやります。

ちなみにPythonに限らず、ほとんどの入門書(サイトも含めて)にあるのはあくまで「道具の使い方」だけです。
Pythonという道具の使い方だけです。C言語ならC言語という道具の使い方。

家を建てるとかDIYをするとかみたいな感じの時に建て方の理論を理解していても道具の使い方がわかっていないとできないはずです。
かといって道具の使い方が分かっていても理論が分かっていないとできませんよね。

それと一緒で、入門書に載っている内容プラス、データ構造とアルゴリズム、(オブジェクト指向を取り入れている言語なら)デザインパターン、プログラミングの基本的な考え方を理解していないと厳しいです。(入門書以外の)前半二つは知らなくても組むことはできますが知らないと使えない人が多いです。

投稿2022/05/03 11:34

編集2022/05/04 06:03
BeatStar

総合スコア4958

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

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

yasutakyy

2022/05/04 00:32

コメントありがとうございます! ずれた質問なのだろうな、と思いつつも、 あ、もしかして、プログラミングの文法があるとしたら、プログラミングは基本が、命令文と定義をするもの? と思ったら、少しすっきりしました。 ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問