はてなキーワード: オブジェクト指向とは
でもガチのCSを勉強しようと思ったらアルゴリズムとデータ構造は必須で、それに適した言語となるとC以下あれやこれやでしょ。
あと、デザイン・レシピとかいう考え方なら OCaml とかの関数型言語が入門に適しているし、オブジェクト指向ならCじゃ無理だし。
時は金なりという意味か?
public class Person { BasicInfo info; float stock; float Value; public string Name(bool isSpy){ return isSpy ? info.Name : info.Name.ToSecondName(); } public string Sex(bool isNormal){ return isNormal == info.isMan ? "Man" : "Woman"; } public float Earn(bool isExtra = false){ float sexPad = info.isMan ? 1f : 0.5f; float racePad = info.isWhite ? 1f : 0.5f; var delta = DateTime.Now - info.Birth; int age = (int)(delta.TotalDays / 365); float result = Value * sexPad * racePad * age; if(isExtra){ Value += result; } return result; } enum Race{ White, Black, Yellow }; class BasicInfo{ public string Name; public int NationalId; public bool isWhite; public bool isMan; public DateTime Birth; public BasicInfo(string Name, int NationalId, Race race, bool isMan){ this.Name = Name; this.NationalId = NationalId; this.isWhite = race == Race.White; this.isMan = isMan; Birth = DateTime.Now; } }
一線級のプロになれるとは思わない方がいい
そんで巷に溢れてるドヤ顔するプログラマーも9割が草野球レベルなんよ
コードレビューしてみたらびっくりするレベルのコード書いてるのに
本人はやたら自信満々でコメントに対しても
「これでは何故ダメですか?」
とか言ってくるの勘弁してくれ
必ずしもオブジェクト指向で書く必要はないけれどオブジェクト指向が何を目指しているかは理解してくれ
パッと見た感じはちゃんとしてるように見えるけれどプロでは全然通用しないレベルなんよ
草野球でめっちゃ上手い人って素人が見るとプロでも通用しそうだけど
実際にはそんな訳ないし、プロはもっとレベルが高いところで競ってるんよ
20年ぐらいプログラミングやってるっていう40代の人とペアプロしてるんだけど
変数はほとんどがグローバル的な扱いで独自の命名規則で宣言しるし
その命名規則も全然守られてないしスペルミスも多くて読んでてイライラしてくる
根本的な作り方が無茶苦茶でちゃんと動いてるのかバグがあるのかも分からん状態
PR出てくる度に打ち合わせして、そもそものデータ構造とか機能分割について指摘してるんだけど
この前ふと
「そういやJavaで書いたことありますか?Javaだとこんな感じですよね」
って話したらJava知らんと言われた
で、聞いてみたらオブジェクト指向言語で書いたことないし勉強したことも無いとのこと
JavaなりC++なりオブジェクト指向言語で書ける必要は無いけれど
オブジェクト指向まるっきりわかってなさそうで草
ソフトウエア・ウェア開発者で、こんなことを言うとアンタッチャブルにされるような発言を教えてください。個人的には、以下の感じかな?
こんな感じかな。
結晶の構造みたいなもの。リスト構造とか種類があるが、元素のように新規に人類が新規に発見するのは困難になりつつある。
【アルゴリズム】
たとえば黒鉛は炭素の同位体であるダイヤモンドに変換できる可能性があるが、その変更プロセスは多種多様である。コストやエネルギー効率のためにベストな方法をチョイスされるように、計算量という律速段階のようなもので比較される。
1mol が 6.0e23 個の原子と同じように、1バイトは8ビットである。バイトにするメリットは、英語圏だと 1バイトも有れば日常で使う文字はコンプリートできるのだ。
計算機で使われる浮動小数点数は実は実数ではない。たとえば、0.4f - 0.3f は 0.1f でない。ただし、0.5f - 0.25f は 0.25f である。
【オブジェクト指向】
フッ素分子(F2)を作ろうとした努力をプログラミングでもやろうとしたもの。
【アスペクト指向】
ポインターをインターセプトするための道具。電気泳動するためのツール。
【オライリー】
【インフルエンサー】
錬金術師(対価はカモの財布)
【JAVA】
【Ruby】
Al2O3。
【Perl】
Pearl でない。
でもさ、未だに Python2 しか書けない残念なアラフィフもいるのさ。EOL 来ていても中途半端に需要もあるせいか、引退時期を間違えるやつも多いのがこの業界の悪いところなんだよ。そいつさ、未だに Private な関数の書き方がわかんないみたいだし、is とか使うのだぜ?オブジェクト指向とかいうレベルでないし、引数の型を指定する意味とかも「めんどくさいよね」とか言って勉強しないんだよ。はっきり言って、消えてほしい。だから、ほんとうは勉強しないと消えざるを得ない世界のがまともなんだよ。おそらく彼は3年以内には仕事がなくなるだろうけど、年金をもらえるまで20年ぐらい無職かもしれない。リカレント教育とかも、年齢制限あるからな。コンバートは早めにだな。
Pythonの本を何冊か眺めてみて、中級以降の学習方針を考え直してみた。
プログラミング初心者が、プログラミングの基本を理解することが目標
Pythonの文法を理解して、初心者を脱した人が次に取り組むべき課題は、実用的なアプリを作れることが目標
ここを2段階に分けて、
というステップを踏むことにした。
テストのやり方を学ぶには、それなりに時間がかかるので、テストに関する学習を先にやるか、後回しにするかの違いがある。
テストのやり方を学ばなくても、つまり品質を保つ方法を知らなくても、練習の段階ではバグだらけでもOKと判断した。
自分だけが使うアプリの場合、テストなしでサクッと作って良い。
自分だけでなく、他人も使うアプリの場合、バグがあっては困るので、やはりきちんとテストを実施して、品質を保つ必要がある。
先にアプリの作り方を学び、その次に品質を保つためにテストの必要性を理解して、テストのやり方を学ぶという順番が自然であるような気がした。
アプリが作れず、テストの必要性も理解できない段階でテストのやり方を学んでみても、いまいち学習のモチベーションが高まらず、知識を吸収しづらいのではないか?という仮説に基づいた判断である。
中級の前半も2段階に分ける。
ということで、
という2段階に分けてみたい。
しかし、いずれにせよ、最初はテストなしでどんどん作ってしまう。
この段階で初めて、Pythonのテスト技法、テストスイーツの使い方を習得する。
客に納品できる品質でアプリを作れるようになったら、プログラマーの仕事をやってもいい。
とりあえず、そんなところかな?
54ページに参考文献が掲載されていた。
京都大学のPython入門講座の補助教材として推奨されているようだ。
Python に関する書籍は近年,数多く出版されていて,どれを買っていいのか迷うかと思います.
以下,いくつか挙げておきます.
[asin:4873119324] 2021/3/22
データサイエンスやウェブ開発、セキュリティなど、さまざまな分野で人気を獲得してきているPython。
本書は、ベストセラー『入門 Python 3』の6年ぶりの改訂版で、プログラミング初級者を対象としたPythonの入門書です。
プログラミングおよびPythonの基礎から、ウェブ、データベース、ネットワーク、並行処理といった応用まで、実践を見据えたPythonプログラミングをわかりやすく丁寧に説明します。
この本は、薄い入門書じゃなくて、わりと厚めの詳細な説明が書かれている本。
リファレンス的に使うような本でもあるので、まったくプログラミングをやったことがない本当の初心者だと、この本を読んで理解するのは大変なんじゃないかと思う。
すでに他のプログラミング言語を習得しているプログラマーで、Pythonの言語仕様を1冊の本で把握した人には、本書は向いていると思う。
1冊目にこれを持ってくるあたり、受験勉強で知識の丸暗記に長けたガリ勉ならOKかもしれないが、勉強が得意じゃない人にはちょっといじわるなチョイスではないか?と穿ってしまった。
一応持っておいて普段は本棚の飾りにしつつも、必要なときに辞典的に使えばいいのではないか?と思う。
自分なら、この本は2冊目以降に推奨するだろう。(1冊目には勧めない)
[asin:479738946X] 2016/12/22
Python入門書のデファクトスタンダードが4年ぶりに大改訂。
近年、Pythonの利用が、機械学習、AIなどの科学技術分野へ大きく広がっている現状を踏まえて、すべてのパートに手を入れいくつかの新章を追加しました。
次の10年を担うPythonプログラマを養成するための一冊。
Chapter02 Pythonでプログラミングをはじめよう
Chapter05 Pythonと関数型プログラミング
Chapter07 クラスの継承と高度なオブジェクト指向機能
Chapter08 モジュール
Chapter13 Pythan2
・AnacondaやJupyter Notebookなど、Pythonの最新開発環境に対応
イラストや図解を多用しているので、一見すると初心者向けのように見えるけど、1冊目としてはどうだろうか?
やはり、この本も2冊目以降に読んだ方が良い本になってしまうだろうか?
買いたい人は、本屋で内容を確認してから買った方が良いと思う。
[asin:484438015X] 2016/3/4
本書で解説するPythonは現在もっとも注目を集めているプログラミング言語のひとつです。
プログラミング言語の人気度の目安となるPYPLでは、2016年1月の時点でJavaに続いて2位に位置していることからも、その人気のほどが伺えるでしょう。
その大きな理由として、Pythonがパワフルなオブジェクト指向のスクリプト言語でありながら、わかりやすく、すっきりしたプログラムを作成可能であることがあげられます。
文法もシンプルで、これからプログラミングを始める方にとっても最適な言語です。
現在、Pythonは、Python 2.x系からPython3.x系への移行時期にあります。
Python 3.xでは、さまざま機能強化が行われ、さらに標準の文字コードがユニコードベースに変更され、日本語も容易に扱えるようになったことから、日本においてもさらなる普及が期待されるでしょう。
本書は、プログラミングの初心者を対象にしたPython 3の入門書です。
変数の取り扱いから、リスト、タプルといったPython固有のデータの操作、制御構造や関数などについて具体的でかつ短いサンプルを多数提示しながら、初心者でも基礎から学んでいけるように拝領したつもりです。
また、インデントでブロックを表現する点などなど、他のメジャーな言語と比べてユニークな部分も丁寧に説明しています。
前半部分で基本を説明した後は、ファーストクラスオブジェクトとしての関数の活用方法、オリジナルのクラスの作成などといった多少高度な項目を丁寧に説明していきます。
Chap1 Pythonプログラミングをはじめるための予備知識
Chap2 Pythonの基礎について学ぼう
Chap3 プログラムの流れを変えたり処理を繰り返したりする
Amazonでサンプルページを見たら、お勧めのエディターとして「Atom」が紹介されていた。
今から7年前ならAtomでも良かったのかもしれないけど、今ならVisual Studio Codeの方が使い勝手が良いのではないだろうか?
Pythonの文法の説明に関しては悪くないと思うけど、自分なら読まないかもしれない。
[asin:4798058327] 2019/5/25
■きちんと学びたい人のための最短教科書。■
■Python開発者に求められる言語、ツール、ライブラリなどの知識を、1冊で素早く学べます。■
(2) 豊富な例題で頭と手を刺激しながら学べる。
可もなく不可もなくというかんじで、ありがちな入門書であるように見えた。
同じ著者の本なら、[asin:4815607648] Python[完全]入門 (2021/1/22) の方が良いのではないか?
発売年もこっちの方が新しいし、受験参考書っぽい作りで、各項目の要点が頭に入ってきやすい。
Amazonでサンプルページを見て、自分の好みの方を選んだら良いと思う。
この本なら1冊目でもお勧めできそうだ。
(ただし、自分の場合はすでにオンライン教材を入門を済ませてしまったので、今さら読む必要はないけど)
時間があったら、図書館で借りてレビューしてみたい。(買うとは言ってない)
[asin:4800711592] 2017/4/8
はじめは誰でも未経験者!
本書はプログラミング言語「Python」の「いちばんやさしい」入門書です。
○「興味はあるけど、難しそう」と尻込みしている人
○「スキルアップのためにPythonを学びたい」という経験者
そんなPythonビギナーに向けて、プログラムの根本概念、基礎知識、基本文法をきっちり端折らずに説明します!
さらには、「簡単な計算」「ゲームの作成」「GUIアプリ」「モジュールの活用」など、
実際に手を動かしながらの演習を通して、学んだことがしっかり身につくように構成しました。
本書を一通り終えれば、Pythonのみならず、プログラミングの基本がバッチリ学べます。
この著者の本は、他の本なら持っている。
簡単な内容しか説明してないけど、他の本なら挫折してしまうようなガチの初心者でも、この本なら理解できるだろう。多分、中学生ぐらいが読んでも理解できると思う。
自分には物足りないような気がするので敢えて読もうとは思わないが、1冊目にお勧めするチョイスとしては間違ってないと思う。
[asin:4822292274] 2018/2/24
本書は「Pythonだけ」を学ぶ本ではありません。
Pythonを使ってプログラミングを紹介していますが、伝えたい内容はPythonに限らない「プログラミング全般」の知識です。
Pythonプログラミングの基本を学べるだけでなく、プログラマとして必要なスキル(シェル、正規表現、パッケージ管理、バージョン管理、データ構造、アルゴリズム、仕事の始め方・やり方)もひと通り学べるのが特徴です。
「プログラミングを始めたい」「できればその道でプロを目指してみたい」――そんな読者にオススメです。
本書の著者、コーリー・アルソフ(Cory Althoff)は、「独学プログラマー」です。
本書は、彼が独学で、ゼロからプログラミングを学んだ体験に基づいて書かれました。
プログラミングを独学で身に付けるために、著者がPythonを通して学んだエッセンスが書かれています。
彼の独学プログラマーとしての学び方は、多くの人に支持されています。
目次については、日経BOOKプラスの本書のページをご覧ください。
そこでは目次ページだけをまとめたPDFファイルや、本書に登場するリンクをまとめたPDFファイル、補足もご連絡いただけます。
出た~~~!!!
:
別にひねくれている訳じゃなくて、もっと他に良い本が出てきたから。
ハズレではないので、この本を進めときゃいいでしょ的な安易さは拭えないが、あえてケチをつけるならば、各項目が「広く浅く」で物足りなさが残るから。
中途半端な本という印象が拭えない。
プログラミングを全くやったことがない初心者が、Pythonの文法を覚えた後、脱入門で中級へステップアップするときの足掛かりとしては、本書は良い指南書になるだろう。
鉄板の本なので、時間があれば後で図書館で借りて目を通してみたい。(買うとは言ってない)
[asin:4297105144] 2019/4/17
プログラミングをはじめる前に読む1冊!
プログラミングブームやエンジニア不足を背景にプログラミングの独習をする方が増えています。
いざ、Webで人気の講座を受講してみたり、店頭で平積みになっているベストセラープログラミング書籍を手にしたものの、どれも理解できずに挫折してしまった、という方も多いのではないでしょうか。
コンピュータやプログラミングの解説がわからないのは、次のような知識の不足が要因です。
これらは専門書やインターネットで検索上位にくるWeb記事では前提知識として省略されることが多く「読み進めるにはほかの資料が必要になった」なんてことがよくあります。
そこで、本書ではプログラミング独習者がつまずきやすい知識を厳選して取り上げ、初心者の分からなかったをサポートします。
図解を多用し、「サーバーとクライアント」、「コンパイラとインタプリタ」のように用語を比較しながら学習することで、いままで曖昧になっていた知識が整理され理解が進みます。
自分の記憶に間違いがなければ、この本は1回図書館で借りて読んだことがあるような気がする。(表紙を見ておぼろげに思い出した)
この本は、中学生とか高校生レベルの知識しかない人が、学校の「情報」の授業の補助教材として使うようなイメージがある。
プログラミング以前の疑問として、そもそもコンピューター(電子計算機)って何だろう?というような素朴な疑問を持つ人が、ハードウェアなどの仕組みを知りたいなら、情報処理技術者試験の教科書を読んだ方が手っ取り早いと思う。
大学受験を経験して、知識の丸暗記に慣れている人なら、これらの資格試験の教科書の方が、要点がコンパクトにまとまっていて、吸収しやすいのではないか?
とりあえず、Pythonとは直接関係なさそうなので、今の私なら読まない。
パソコンは自作できるし、ハードウェアの知識もある程度あるので、本書を読む時間があったら、他の本を読むだろう。
本書を読みたい人は、自己責任で読んで欲しい。
https://www.python.jp/train/list/index.html
以下、気になったところ。
Pythonでは、整数や実数、文字列などのデータのことを、オブジェクト(Object) という用語で呼びます。
Objectは英語で「物」とか「対象」とかいう意味の言葉ですが、Pythonでは、Pythonが操作するいろいろな種類のデータやプログラムなどのことを、まとめて オブジェクト と呼びます。
たとえば、数字の2は、整数型のオブジェクト、文字列の abc は、文字列型のオブジェクト という呼び方をします。
def foo():
print("hi!")
演算子やwhile文 ・ if文 などはPythonに対する実行命令で、実体のあるオブジェクトではありません。
数値などの値のように、変数に代入したり、関数のように関数名を指定したりと、プログラマが名前をつけられるものはオブジェクト、
と考えると良いと思います。
この説明だけでは、Pythonのオブジェクトについて曖昧さが残りスッキリしない。
Pythonの言語仕様で、オブジェクトはどうなっているのか?検索してみた。
cf. [Python入門]Pythonのオブジェクトとは - ITmedia
https://atmarkit.itmedia.co.jp/ait/articles/1907/12/news019.html
Python公式サイトにあるドキュメント「オブジェクト、値、および型」では、Pythonにおけるオブジェクトとは「データを抽象的に表したもの」と表現されている。
つまり、Pythonで書いたプログラムが操作したり、処理したりするデータのことを「オブジェクト」という。
型 説明 int 「整数」を表現する型 float 「浮動小数点数」を表現する型 bool TrueかFalseのいずれかの値を取り、真偽値(条件が成立しているかどうか)を表現する型 str Unicodeのコードポイント値を任意の数だけ並べた「文字列」を表現する型(変更不可能) list 任意の型の要素を任意の数だけ並べた「リスト」を表現する型(変更可能) tuple 任意の型の要素を任意の数だけ並べた「タプル」を表現する型(変更不可能) dict キーと値の組からなる要素を任意の数だけ並べた「辞書」を表現する型(変更可能) set/frozenset 任意の型の要素を任意の数だけ並べた順序のない「集合」を表現する型(setは変更可能。frozensetは変更不可能) function 「関数」を表現する型 module 「モジュール」や「パッケージ」を表現する型
cf. 3. データモデル — Python 3.11.4 ドキュメント
https://docs.python.org/ja/3/reference/datamodel.html#objects-values-and-types
Python における オブジェクト (object) とは、データを抽象的に表したものです。
Python プログラムにおけるデータは全て、オブジェクトまたはオブジェクト間の関係として表されます。
(ある意味では、プログラムコードもまたオブジェクトとして表されます。これはフォン・ノイマン: Von Neumann の "プログラム記憶方式コンピュータ: stored program computer" のモデルに適合します。)
要するにPythonのプログラムの中で処理(操作)できる対象すべてがデータであり、なおかつオブジェクトである」ということらしい。
上記の型の表を見ると、Pythonには「function」という関数オブジェクトもあるので、関数それ自体を1つのデータとして扱うことも可能。
第一級オブジェクト(ファーストクラスオブジェクト、first-class object)は、あるプログラミング言語において、たとえば生成、代入、演算、(引数・戻り値としての)受け渡しといったその言語における基本的な操作を制限なしに使用できる対象のことである。
ここで「オブジェクト」とは広く対象物・客体を意味し、必ずしもオブジェクト指向プログラミングにおけるオブジェクトを意味しない。
この言葉は1960年代にクリストファー・ストレイチーによって「functions as first-class citizens」という文脈で初めて使われた。
決まった順番に並んだ値で構成される情報は、Pythonでは リストオブジェクト で表現します。
リストオブジェクトは、他のオブジェクトを 要素 として登録できるオブジェクトで、他のプログラミング言語では配列などと呼ばれることもあります。
リストオブジェクトは、次のように 角カッコ [ と ] で作成します。
[要素1, 要素2, ...]
要素の参照
リストオブジェクトに登録した要素は、次のような式で参照できます。
インデックス(添字)
インデックス(添字)は、1から始まるのではなく、0から始まる点に注意が必要。
要素の挿入
要素の置き換え
登録済みの要素を別の要素に置き換えるときは、次のように記述します。
要素の削除
リストオブジェクトに登録されている要素を削除するときには、del 文を使います。
リストオブジェクトから、指定したインデックスの要素を削除します。
del 文で指定できる要素のインデックスは、要素の置き換え と同じように、リストオブジェクトの 最後のインデックス値 までです。
リストオブジェクトの要素数を教えてくれる、len() という関数があります
関数 len() は、引数にリストオブジェクトを指定すると、その要素数を返してくれる関数です。
4
リストの要素を順番に参照する処理は非常によく行われるため、もっと簡単に書けるように、for 文 という、専用の文法が用意されています。
for文の書き方
処理1
処理2
...
for 文は、リストオブジェクト から要素を一つずつ順番に取り出し、それぞれの要素ごとに、for 文に続けて記述した処理を、一度ずつ実行します。
https://www.python.jp/train/index.html
3. 文字列と入出力
https://www.python.jp/train/string/index.html
以下、気になったところ。
特になし。
特になし。
いや、Pythonだけじゃなくて、他のプログラミング言語でも、文字からなるデータは「文字列」って呼ぶだろ?
文章や人名など、文字からなるデータをソースコードに書く場合には、数値と違って、文字の前後を "(ダブルクォテーション) か '(シングルクォテーション) で囲んで記述します。
文字列の "ABC" と "DEF" を足すと、"ABCDEF" になります。
これはPythonに限った話ではなく、プログラミング言語全般に共通の話。
数値型同士のデータは四則演算ができるけど、違う型のデータでは四則演算ができない。
データ型を他のデータ型に変換することを「型変換」とか「キャスト」(cast)などと言ったりする。
数字だけからなる文字列は、次のように int() を使って整数に変換できます。
text = "123"
int(text)
123
数値の文字列化
int() を使って文字列を整数に変換するのとは逆に、str() を使って数値を文字列に変換できます。
num = 123 # 整数値
str(num)
'123'
処理するデータの型違いによるエラーは、基本的なうっかりミスの1つなので、常に型は意識してデータを扱いたい。
特にPythonのような動的型付け言語は、型を意識しなくてもプログラムが書けてしまうが、その分バグになりやすいので注意が必要だ。
いちいち型を気にするのは面倒くさいので、「型推論」というズボラな人向けの機能もある。
型推論(かたすいろん、英: type inference)とはプログラミング言語の機能の1つで、静的な型付けを持つ言語において、変数や関数シグネチャの型を明示的に宣言しなくても、変数宣言における初期化のための初期値や、関数呼び出しにおける実引数などといった、周辺情報および文脈などから自動的に(暗黙的に)各々の型を決定する機構のこと。
言語によってはtype deductionと呼ばれることもある。
推論に失敗するとその時点でエラーを報告できるため、少なくとも誤った型を用いることによるバグは回避できる。
また、アルゴリズムの記述に集中できるのでプログラムの抽象度が上がるというメリットもある。
ただし型推論と関数の多重定義(オーバーロード)は相性が悪く、オーバーロードをサポートする言語では型推論による恩恵が十分に受けられない(型推論ではシグネチャを一意に決めることができない)ケースがある。
Pythonには型推論の機能がないので、プログラマーが工夫して型によるバグをなくすしかない。
「Python 型推論」で検索すると、いろいろなTipsが紹介されている。
【Python】VSCodeが型推論結果を自動で表示してくれるようになった【TypeHinting】
https://zenn.dev/yosemat/articles/36638f17e9ded8
最初のうちは、型によるエラーはあまり気にしなくても良いと思う。
エラーが出たらその都度つぶしていけばいいし、あとでテスト方法を学んだら、型を検査する方法も分かってくるはずだ。
特になし。
特になし。
嘘の説明があるなー。
初心者向けに便宜的な説明をしておこう、という趣旨は仕方がないかもしれないけど、後で訂正するというか、詳しく説明するという注意書きは必要だろう。
何が嘘かって、用語の定義の問題なんだけど、「メソッド」という言葉は一般的に、オブジェクト指向プログラミングの用語で、クラスに定義されている関数のことをメソッドと呼んでいる。
しかし、教える順番として、クラスとかオブジェクトは後の方に出てくるなら、今の段階ではメソッドをどう説明すればいいのだろうか?
Pythonの文字列は、実はStringクラスのオブジェクトであり、Stringクラスには文字列を操作するための様々なメソッド(処理)が用意されている、ということをクラスの説明なしにするのは、ややこしいかもしれない。
なので、オブジェクトのことをここではざっくりと「データ」という言い方でごまかしている。
私のようなPython素人の場合、もっと良い説明方法が思い浮かばない。
とりあえず、ここではメソッドをデータに紐づけられている関数ということにしておこう。
メソッドは 関数 の一種です。これまで見てきたように、特定のデータに結びつき、
↓
https://www.python.jp/train/list/index.html
Pythonでは、これまで紹介してきたような、整数や実数、文字列などのデータのことを、オブジェクト(Object) という用語で呼びます。
Objectは英語で「物」とか「対象」とかいう意味の言葉ですが、Pythonでは、Pythonが操作するいろいろな種類のデータやプログラムなどのことを、まとめて オブジェクト と呼びます。
ここまで読んで、はじめてデータの種明かしがされて、Pythonのデータはオブジェクトであり、オブジェクトに用意されているメソッドが使えると。
せめて「詳しくは第8章のオブジェクトの説明を読んでね」ぐらいは書いておいた方が良いと思う。
なんでオブジェクトというデータ構造、仕組みを用意するのか?という根拠の説明がスッポリと抜け落ちている。
一般的にオブジェクト指向プログラミング(OOP)の説明方法、教え方は様々だが、単純にはC言語の構造体が出発点であり、「データに処理をくっつけたもの」という説明でいいだろう。
ちなみに、その反対に「処理にデータをくっつけたもの」をクロージャ―という。
オブジェクトもクロージャ―もPythonだけの仕組み、話ではないので、他にもっと分かりやすい説明方法があれば、そこから引用した方が良いだろう。
問題は説明の順番で、前提となる知識がない段階では、どのようにごまかした説明で切り抜け、後で詳しい種明かしをするか?という教え方の設計(インストラクショナル・デザイン)が問われている。
あまりうまくごまかせていないところを見ると、もしかしたらPythonを教えている教師たちは、あまり頭が良くないのかもしれない?
無学無才のポンコツが、1か月でプログラミングを習得できるか?実験してみます。
Kyoto University Research Information Repository: プログラミング演習 Python 2021
https://repository.kulib.kyoto-u.ac.jp/dspace/handle/2433/265459
です。
図目次
表目次
プログラム目次
演習目次
0.3 文科系がんばれ
0.4 本書の構成について
0.5 本書での表記
0.6 コピペに注意
0.7 2020 年度版からの変更
謝辞
1.1 この章の目的
1.3 コンピュータの仕組み
1.4 プログラミング言語
1.6 さまざまな応用
1.7 プログラミングの学び方
1.9 プログラムの「どこ」を作るか
参考文献
2.3 準備
2.4 IDLE の起動
2.7 Anaconda Prompt での作業フォルダの設定
2.9 拡張子の表示
参考文献
3.5 代入演算子
3.8 例題:平方根を求める
3.9 割り算に注意
参考文献
4.3 リストとは
4.4 リストの生成
4.5 メソッド
4.7 負の添え字とスライス
4.8 リストへの追加,結合
4.9 リストの代入と複製
4.14 タプルと辞書
5.2 for 文による繰り返し処理
5.3 while 文による繰り返し
5.4 if 文による分岐
5.10 力試し
7.5 返り値
7.6 前章の例題から
8.2 モジュール
8.3 Turtle ―由緒正しき亀さん
8.5 使ってみよう
8.7 複数のタートルを動かす
8.8 作品作りのためのヒント
8.9 Turtle Demo
参考文献
9.5 tkinter の例題(tkdemo-2term.py)
9.8 lambda (λ)表現を使った Call Back 関数の記述
参考文献
12.4 まずは動かしてみよう
12.6 例題1 波の近似
13.2 プログラムを開発するということ
13.6 力試し
14.2 import 時の別名
14.3 NumPy
14.4 Matplotlib
14.5 pandas
14.6 課題
参考文献
15.2 振り返り
15.3 守破離
15.5 モジュール等の追加
15.6 本書で紹介しなかった話題
15.7 感謝と恩返し―学んだことをどう活かすのか
16.2 ファイル名に注意
プログラミングのパラダイム(考え方)は、(分類方法にもよるけど)主に2種類ある。
命令型プログラミング(めいれいがたプログラミング、英: imperative programming)は、プログラムの状態を変化させるステートメントを基本文に用いる総称的なプログラミングパラダイムである。
宣言型プログラミングと対をなしてのプログラミング言語の分類用語としても扱われている。
命令型プログラミングは、例えるならば、買物のメモを作るのと似ている。
などの仕組みが含まれている。
命令型プログラミングは、直観的に分かりやすいので、プログラミング学習の初手は命令型で良いだろう。
実際、プログラミング教育が必修化された小中高の授業では、プログラミング学習の言語として命令型言語が選定されている。
本学習実験においても、命令型プログラミング言語を選び、学校の教材に合わせて「Python」を学んでみよう。
https://ja.wikipedia.org/wiki/Python
Python(パイソン)はインタープリタ型の高水準汎用プログラミング言語である。
Pythonは1991年にグイド・ヴァン・ロッサムにより開発されたプログラミング言語である。
最初にリリースされたPythonの設計哲学は、ホワイトスペース(オフサイドルール)の顕著な使用によってコードの可読性を重視している。
その言語構成とオブジェクト指向のアプローチは、プログラマが小規模なプロジェクトから大規模なプロジェクトまで、明確で論理的なコードを書くのを支援することを目的としている。
宣言型プログラミング(英: Declarative programming)は、数理論理学的な性質を表わしている総称的なプログラミングパラダイムである。
式の計算構造を、主に表示的意味論下のロジックで表現する構文にされることが多く、式枠外の副作用を伴なう制御フローや自由変数の多用などは排除されるようになる。
命令型プログラミングと対をなしてのプログラミング言語の分類用語としても扱われている。
宣言型言語は、what the program must accomplish(何をなすべきか)方針で、副作用を排除した式や純粋関数の実装に努める。
これは命令型言語の、how to accomplish it(どうなすべきか)方針で、副作用を前提にした操作的意味論下のアルゴリズム実装とよく対比される。
宣言的パラダイムは、関数型、論理型、データフローなどを包括し、データベース問い合わせ言語、マークアップ言語、ドメイン固有言語、構成管理、正規表現などにも言及されており、並行計算との親和性も特筆されている。
などの仕組みが含まれている。
宣言型プログラミング言語は、例えるなら秘書に仕事を任せるのと似ている。
秘書:「分かりました。あとはすべておまかせください!」
冷蔵庫に食品を補充する"やり方"は問わず、冷蔵庫を満杯にするという"結果"を示して要求するのが宣言型プログラミングの特徴だ。
実際に慣れると、宣言型プログラミングの方が命令型プログラミングよりも簡単に感じられるはずだが、宣言型プログラミングにはちょっと"癖"があるので、慣れるまで時間がかかるかもしれない。(具体的には、"副作用"の排除が人間の直観に反している面もある、ということ)
リレーショナルデータベースを使う場合、「SQL」というプログラミング言語の使用は避けて通れないので、宣言型プログラミング言語(SQLは問合せ型言語)も、順次学ぶことにしよう。