Python
RaspberryPi
機械学習
docker
言語処理100本ノック

歳をとってからプログラミングするのは難しいという人がいる。

若い人でも、歳をとっても興味があるかどうかだけだと思う。


世代別おすすめ(案)

10代ならアセンブラから初めて欲しい。

アセンブラ短歌

http://kozos.jp/asm-tanka/

若い人だと、ゲームか、音楽に興味がある人は教えがいがある。

ゲームに興味のある人に、ゲームのプログラムを書き始める時に気をつけてほしいことを書いた記事はこちら。

プログラマが知っているとよい色使い(安全色)

https://qiita.com/kaizen_nagoya/items/cb7eb3199b0b98904a35

20代ならすぐ金になる言語をやってください。

30代は自動化を実現する言語に集中してね。

40代は自分の管理業務を自動化してみて。

50代は組織の経営分析ができるように。

60代は趣味でつかえりゃいいじゃないか。

60歳、65歳で退職してから短歌とか、俳句とか、漢詩とか、詩吟とか、大正琴とか、ギターとか、ピアノとかを始めるのと同じような乗りで、プログラムをはじめようという人への資料。

趣味で使うなら、機械学習できなきゃ。組織の経営分析をするのにRかPythonがいいかも。

この記事は、現在64歳のプログラマが、同世代のプログラムを組んだことがない方に、相談に応じた記録でもあります。

1昨年から開催している「ゼロから始めるDeep Learning読書会」

https://qiita.com/kaizen_nagoya/items/537b1810265bbbc70e73

に65歳以上の方が数人参加されており、pythonの導入、習得にいろいろ苦労されている状態を手助けした記録も兼ねています。


4原則


お金はかけない、


時間をかけない(1日1時間)、


ネットに頼る(生身の人に頼らない)


コピペプログラミング


機材

中古でみつけてくるか、いらなくなった機材を只でゆずりうけるのも手。

子供や孫に、新しい機材を買って、古い機材を下取りするというのも手。

Raspberry PIなら古いものも新しいものも1万円以下だったり。

ブラウザだけで済ます場合、家庭内でWeb見ている機材を1時間だけ借りる。

PCの中古でも、ブラウザで操作するだけなら、1万円以下で始めることを検討するとよいかも。

play with dockerというブラウザだけで動作する状態で始められるように資料を作成している。

ソフトウェアを導入しないため、家族のパソコン、pad, Raspberry PIを借りて利用してもよい。


Raspberry PI

家庭用テレビが、HDMIケーブルがつながる型なら大丈夫。Raspberry PIの無線がついたものと、キーボードと、マウスと、電源ケーブルと、HDMIケーブルとがあればすぐに始められる。

https://jp.rs-online.com/web/generalDisplay.html?id=raspberrypi

HDMIケーブルの刺せるテレビがあれば、上記 BASIC setに、キーボード、マウスがそれぞれ1000円くらいで、1万円でおつりがくるかも。

Raspberry PIは、10歳くらいの子供向けにいろいろ考えられている。65歳の人が始めるにもちょうどぴったり。

Raspbianの入ったSDカードを使えば、最初からPython2, Python3が入っている。


タブレット・Pad

AndroidのPadなら1万円代からあるらしい。

http://kakaku.com/item/K0001091239/?lid=20190108pricemenu_ranking_1

iPadだと購入方法にもよる。

iPad 9.7インチ(2018年版)をとにかく安く買う方法【2019年最新】

https://takulog.info/how-to-buy-ipad-2018-cheaply/

最小限の持ち物で勉強できるのか?iPadで開発 《第1弾》

https://qiita.com/RyoGT/items/6a0c28c0c87ac8e21bd8


パソコン

Raspberry PIに抵抗のある人は、パソコンでもいい。

場所を取らないノート型がお勧め。

MacintoshでもwindowsでもDockerさえ導入すればよい。

Windowsのノートなら3万円台でもある。

Mac Bookは新品だと安いのはないのが難点。

Dockerが導入できなければWebからでもいい。

Docker 入門にはインストールなしで使える「Play with Docker」がいいと思う

https://qiita.com/tag1216/items/ec7228440f6eaf849cd6


スマフォ

たぶんpadと同じものが動くはず。まだ試していない。文字の切りはり方法に詳しくない。調べます。ごめんなさい。


言語

絵で描くようなものもよいものはいろいろある。

今回は、キーボードでtypeする言語にしてみよう。


Python

pythonやるなら言語処理100本ノック

言語処理100本ノック(東北大学)

http://www.cl.ecei.tohoku.ac.jp/nlp100/

言語処理100本ノックをdockerで。

https://qiita.com/kaizen_nagoya/items/7e7eb7c543e0c18438c4

Dockerでpython言語処理100本ノック

https://qiita.com/taguchi_tomo/items/24483ceaea7638e83310

素人の言語処理100本ノック:まとめ @segavvy

https://qiita.com/segavvy/items/fb50ba8097d59475f760


第1日目1時間:Webでpython 編


当面の7方針


プログラムってなんだという疑問は放置


考える前に動かす。講釈は後。


見る前に飛べ。動かすのが一番近道。


切り貼りだけで3週間。キーボード操作は4週目から。


文法書は読まない。システムがエラーを出してくれる。


わからないことはネットで検索して、記録する。


エラーが出たら、ネットに記録する。

例:

今日の作業記録 python error(言語処理100本ノック:18)未解決

https://qiita.com/kaizen_nagoya/items/d184d9aec28ca8428f3d

今日の作業記録 python error(言語処理100本ノック:20)解決

https://qiita.com/kaizen_nagoya/items/c82ebccfef5522de53b9

今日の作業記録 python error(言語処理100本ノック:30)未解決

https://qiita.com/kaizen_nagoya/items/2b8b542a93fc8d8949dc

今日の作業記録 python error(言語処理100本ノック:37)未解決

https://qiita.com/kaizen_nagoya/items/d68cc9f494c8a15f9de1

今日の作業記録 python error(言語処理100本ノック:42)未解決

https://qiita.com/kaizen_nagoya/items/d77b6474aa5f5cd84457

今日の作業記録 python error(言語処理100本ノック:52)解決

https://qiita.com/kaizen_nagoya/items/c203a0e3b45ef7365776

今日の作業記録 python error(言語処理100本ノック:56)未解決

https://qiita.com/kaizen_nagoya/items/d769c8ec1522e2d05f5e

今日の作業記録 python error(言語処理100本ノック:64)未解決

https://qiita.com/kaizen_nagoya/items/70a96bb7673ec347ece7

今日の作業記録 python error(言語処理100本ノック:79)未解決

https://qiita.com/kaizen_nagoya/items/bfd6037483739563ee6a

今日の作業記録 python error(言語処理100本ノック:81)解決

https://qiita.com/kaizen_nagoya/items/529ed6e4427c7617f8e4

今日の作業記録 python error(言語処理100本ノック:84)解決

https://qiita.com/kaizen_nagoya/items/0dc1304d54bfcc77480a

今日の作業記録 python error(言語処理100本ノック:97)未解決

https://qiita.com/kaizen_nagoya/items/2a9d201f4ec0181948fe


play with docker

www.play-with-docker.com

docker0.png

Docker hubのIDとパスワードを入れる。

docker1.png

「ADD new instance」をクリックする。

文字列をコピペする

docker run -it  ubuntu /bin/bash

apt-get update
apt-get -y install python3-dev
python3

最初のpython1行プログラムをインタプリタで入力する。文字列のコピペ


LangPro100-2015-00

>>> print("stressed"[::-1])

desserts

みごとに逆順になった。

「>>>」 の行が入力、その次の行が出力。

文字を逆順にするのがこんなに簡単。

ここまで1時間で来れれば大丈夫。

自分では、下記のように、ありとあらゆるエラーにみまわれ、ここまで来るのに2時間、

この資料をまとめるのに1時間かかっている。泣)


Play with Docker でエラー

https://qiita.com/kaizen_nagoya/items/fbf054705bff725dbc25

言語処理100本ノックを全部実行できる環境はおおきすぎたのか、エラーでうまくいっていない。

ちょっと、おまちください。エラーを取る原因を調査中です。


第1日目1時間:Raspberry piでPython 編

上記の記事のpython3はRaspberry PIでも利用できる。

dockerとRaspberry PIは同じDebian系なのでコマンド類はほとんど同じはず。

しかも、Raspberry PIでSDカードでRaspbianが入って入れば、Python3はすでに入っている。

いろいろなソフトの導入はしなくても、いきなりpython3が利用できる。

python3

>>> print("stressed"[::-1])
desserts

100本ノックの記事のgitは、Raspberry PIからでも利用できる。


第1日目1時間:dockerでanaconda編

Windows, Macintoshにdocker導入したら、

docker run -it  continuumio/anaconda3 /bin/bash

anaconda3でpython3だけ導入している。

pythonだけで、python3が起動する。

python

>>> print("stressed"[::-1])
desserts


WindowsでAnacondaを利用したい方

Windows(MS)にPython(Anaconda)を導入する(6つの罠)

https://qiita.com/kaizen_nagoya/items/7bfd7ecdc4e8edcbd679


機械学習

pythonやったら機械学習へ進むのもよい。

下記、機械学習の題材の半分以上がPythonで記述している。

なぜdockerで機械学習するか 書籍・ソース一覧作成中 (目標100)

https://qiita.com/kaizen_nagoya/items/ddd12477544bf5ba85e2


おわび

<この記事は書きかけです。自分が65歳になる頃(今から半年後)に書き終わります。>


参考文献(reference)

Docker Hub を始める - Docker User Guide

https://qiita.com/zembutsu/items/dd3fd778b92aacaa884b

プログラミング言語教育のXYZ

https://qiita.com/kaizen_nagoya/items/1950c5810fb5c0b07be4

言語処理100本ノック 2015(python) 動作確認docker環境構築

https://qiita.com/kaizen_nagoya/items/abaf3fd0198f9f557243


予定 全20時間を想定中


最初の週の5日間 言語処理100本ノック

65歳からのプログラミング入門(2) 二日目

https://qiita.com/kaizen_nagoya/items/57f362fb801fd3132803

言語処理100本ノック 2015(python) 落ち穂拾い 第1章: 準備運動

https://qiita.com/kaizen_nagoya/items/ee1b625b0b65cd63d42a

言語処理100本ノック 2015 落ち穂拾い 第2章: UNIXコマンドの基礎

https://qiita.com/kaizen_nagoya/items/c8f030fc1f812b085c0a

言語処理100本ノック 2015 落ち穂拾い 第3章: 正規表現

https://qiita.com/kaizen_nagoya/items/1642b6a3ee4d31b7d56a

言語処理100本ノック 2015 落ち穂拾い 第4章形態素解析

https://qiita.com/kaizen_nagoya/items/348b3a1d169e5d11e9ab

言語処理100本ノック 2015 落ち穂拾い 第5章:係り受け解析

https://qiita.com/kaizen_nagoya/items/283731f9a1a35962d1fb

言語処理100本ノック 2015 落ち穂拾い 第6章: 英語テキストの処理

https://qiita.com/kaizen_nagoya/items/96e9ec4657176a70a0a7

言語処理100本ノック 2015 落ち穂拾い 第7章: データベース

https://qiita.com/kaizen_nagoya/items/23abc2b24865f68d46b0

言語処理100本ノック 2015 落ち穂拾い 第8章: 機械学習

https://qiita.com/kaizen_nagoya/items/529e1070de8157d49ab2

言語処理100本ノック 2015 落ち穂拾い 第9章: ベクトル空間法 (I)

https://qiita.com/kaizen_nagoya/items/1cf448fdcabd02eaa7da

言語処理100本ノック 2015 落ち穂拾い 第10章: ベクトル空間法 (II)

https://qiita.com/kaizen_nagoya/items/51008b5b5f9fac15fe57


次の週の5日間 ゼロから始めるDeep Learning(1)

dockerで機械学習 with anaconda(1)「ゼロから作るDeep Learning - Pythonで学ぶディープラーニングの理論と実装」斎藤 康毅 著

https://qiita.com/kaizen_nagoya/items/a7e94ef6dca128d035ab


3週目の5日間 ゼロから始めるDeep Learning(2)言語処理編

dockerで機械学習with anaconda(2)「ゼロから作るDeep Learning2自然言語処理編」斎藤 康毅 著

https://qiita.com/kaizen_nagoya/items/3b80dfc76933cea522c6


4週目の5日間 現在題材捜索中、量子計算機か自習

キーボード操作はここから

なぜdockerで機械学習するか 書籍・ソース一覧作成中 (目標100)

https://qiita.com/kaizen_nagoya/items/ddd12477544bf5ba85e2

量子コンピュータプログラムへの道

https://qiita.com/kaizen_nagoya/items/37c90488c87bbe9f2d71


背景


言語教育

C言語の教育をしていた頃には、

最初はCコンパイラのソースを入力してもらっていた。

その後、Cコンパイラに興味のない人には、

Lode-Runnerで学ぶ実践C言語-ビー・エヌ・エヌ企画部

51JaGIOM+4L._SL500_SX351_BO1,204,203,200_.jpg

https://www.amazon.co.jp//dp/4893690116

を入力してもらった。

Pythonの教育をしている現在は、

Pythonのゲームか、音楽ソフトを打ち込んだり、改良したりしてもらいながら

言語を覚えてもらっている。言語処理100本ノック(東北大学)を先にやるか、後にするかは、人次第。


言語の種類

50歳を過ぎてから、毎年新しい言語を一つ習っている。

VHDL

SPIN

SPIN(simple promela interpreter)入門

https://qiita.com/kaizen_nagoya/items/a18a4e1e5493591e76fa

SMV

Z

VDM

System C

coq

「coq入門」の入門

https://qiita.com/kaizen_nagoya/items/13566f0b2083ea8d4998

SML#

SML#入門

https://qiita.com/kaizen_nagoya/items/84a9a82c1aa135ac7a22

uppaal

alloy

alloy analyzer入門

https://qiita.com/kaizen_nagoya/items/b7928e2b8e80b9b00498

ruby

python

「Python 入門」の入門

https://qiita.com/kaizen_nagoya/items/22c99c5926984ede6573

R

verifarst

javascript

いまさらと言わないでください。

Reduce, LISP, Smalltalk, Squeak, C#, Objective C, PHP, Matlab, Mathematicaは教育、試験の一部を協力したのみ。主担当ではない。本格的なプログラミングには着手していない。

Haskell, prologは処理系を起動しただけで手が止まっている。

ちなみに、20歳前後から使ってきたプログラミング言語は、

Z80アセンブラ, BASIC, 8086アセンブラ, COBOL, Fortran, C, LaTeX, Pascal, H8アセンブラ, SHアセンブラ, C++, JAVA。Verilog HDL。20代も、ほぼ毎年1言語づつ着手。30代と40代はそれぞれ1言語程度。


ネット利用

PC-VANでAcosクラブ(NECの汎用機)のサブシス、N5200(ビジネスコンピュータ)ユーザネットのシスオペをしていました。

自作ソフトでは、メインフレームのパソコンシミュレータ、キーボード入力練習プログラム、VZ Editor N5200移植差分,などを配布していました。

他作ソフトでは、COBOLで書かれた、CAP-Xアセンブラシミュレータ、 MINIXのPC-9801の移植などを配布していました。

ネットを通じて、ソフトウェアを開発する場合には、仕事で面直でソフトウェアを作るのに比べて10分の1の時間から1000分の1くらいの時間でできることがわかりました。


65歳って

65歳って、AppleのJobsや、Microsoft のGatesとほぼ同世代です。

4bit CPU(マイクロプロセッサ)が出た1971年はまだ高校生の時代、z80が出た1976年は大学生の時代。

仕事で、CPUをどう使うかを考えてきた世代。

仕事の種類によっては、1976年頃から使っていた人もいれば、43年間、使わずに来た人もいる。

団塊の世代の後の、子供の出生数が激減した午年(丙午はその12年後)。

新人類と言われた最初の世代です。

1972年当時、部室では、「おたく」が、「御宅」言葉を話ていました。

65歳からでも、プログラミングができる時代背景があります。

同世代に、マイクロプロセッサのプログラマのはしりの人たちがいるから安心してはじめてください。

64bitCPUへの道 and/or 64歳の決意(0)

https://qiita.com/kaizen_nagoya/items/cfb5ffa24ded23ab3f60

64bitCPUへの道 (1)V850 gcc 64bit

https://qiita.com/kaizen_nagoya/items/9934c0f9911ad29779b5

64bitCPUへの道 and/or 64歳の決意(2)32bitと64bitの違い

https://qiita.com/kaizen_nagoya/items/1763b20c607260ea2c3e


文書履歴(document history)

ver. 0.01 初稿 20190116 午前

ver. 0.02 URL追記 20190116 午後

ver. 0.03 はてな 追記 20190117 夕

ver. 0.04 Play with Docker 追記 20190117 夜

ver. 0.05 当面の7方針追記 20190117 深夜

ver. 0.06 URL追記 20180118 早朝

ver. 0.07 背景追記 20190118 朝

ver. 0.08 機材追記 20190118 午前

ver. 0.09 50歳を過ぎてから、毎年新しい言語を一つ習っている。追記 20190118 昼

ver. 0.10 Squeak, C#, Objective C, PHP 追記 20190118 夜

ver. 0.11 ロードランナー追記 20190119 朝

ver. 0.12 予定追記 20190119 昼

ver. 0.13 二日目 書き始め 20190119 夕

ver. 0.14 100本ノック資料追記 20190120 朝

ver. 0.15 ゼロから始めるDeep Learning追記 20190120 午前

ver. 0.16 7方針変更 20190120 昼

ver. 0.17 資料追記 20190121

ver. 0.18 表記補正 20190122 

ver. 0.19 予定を少し前に 20190123 朝

ver. 0.20 素人の言語処理100本ノック:まとめ@segavvy 等追記 20190123 夕

ver. 0.21 言語処理100本ノック各章 20190124午前

ver. 0.22 作業記録 python error 20190124 午後

ver. 0.23 表現加筆 20190125

ver. 0.24 項目入替 20190126

ver. 0.25 世代別お勧め追記 20190129

このエントリーをはてなブックマークに追加

http://b.hatena.ne.jp/guide/bbutton