2020年5月4日月曜日

現代的スクリプト開発事情(pythonで)

pythonをいきなり再開した
昨日あたりに書いていたpythonでexcelをやったりしようかなって思って

でちょっと目についたのでpythonでmandelbrotをしようとしたが足りないライブラリーがあることに気づいた。って言うかvostro 270sの方ではエラーが出た。
しかしながらさすがに現代的な環境(pythonのライブラリー管理の力だが)、コマンドプロンプトで実行しようとしてライブラリーが無いってエラーがでたらpipでそのライブラリーをその場でinstallするだけで実行できてしまう。
なんと便利な事なのだろう。まあcp/mとかmsdosの頃には常にネットにつながったPCというイメージすらないのだけど・・・
※上記のmandelbrot描画でvostro 370sで意外な弱点を発見した。 このPCのCPUはcore i3-3240(2core HTにより4スレッド)なのだが描画中にタスクマネージャで負荷観察すると異常に時間が掛かるというもの。もしかしたらWindowsの更新が飛んできているのかもしれないのでもう少し条件を変えて様子を見ることにする。

で、スクリプトの開発でも同じく便利な環境が当たり前のように揃う。
下はVusualStudio Codeでpythonの開発をしているところ
(qiitaのhttps://qiita.com/dario_okazaki/items/4ba70e8a7ee1a6b024e8 に従って画面の様子を見ているだけです。)
もうね、pysimplegui 便利すぎて怖いです。
エクスプローラでフォルダを右クリックしてCODEで開いて新しいファイルを作成して(この場合だとWebからコピペして)ctrl+shift+@でターミナルを開いて今入れたコードをpythonで実行している
まだターミナルのshがpowershell一択なので設定が必要なのだけどpython実行できるから良いかと・・・
ノスタルジーに駆られてcp/mやらmsdosやら触ってるのもいいけど最新の環境で実開発に役立てるのも大事だと最認識した次第です

ネットでググりながらなら書けるというレベルでは実に心もとないのでpythonやc#なら呼吸をするように書けるレベルを目指したいです
(おこがましいがVBAやTurboPascalやcならそこそこ)
でリハビリとしてBASICで数行のコードがpythonでどうなるのか見ます
BASIC習い始めてしばしば最初の頃に出てくる直線で書くモアレ画像
このソースは
 1000 'モアレな直線  save "moare.b99",a
 1010 width 80,30:console ,,0:cls 3
 1020 for x=0 to 639
 1030   line(x,0)-(639-x,479),x mod 7+1
 1040 next
 1050 a$=input$(1)
さてこれをpythonで書いてみましょう。
標準?の描画ライブラリーtkinterを使って
さて同じ結果が得られたがソースは
# coding: utf-8
from tkinter import *

root=Tk()
root.title("直線でモアレを表現する")
root.geometry("640x480")
canvas=Canvas(root,width=640,height=480)
canvas.create_rectangle(0,0,640,480,fill='black')
canvas.place(x=0,y=0)
colors=['black','blue','red','magenta','green1','cyan','yellow','white']
for x in range(640):
    canvas.create_line(x,0,639-x,479,fill=colors[x % 7 + 1])

mainloop()
良い感じなのではないかしら・・ オブジェクト指向がからまずに数行なら迷わずに書ける
BASICの実質5行がpythonで12行は多いと思うかもしれないけどほぼ命令の対応は取れていると思うので細かい説明はしない
このあたりは流石に入門言語BASICの領域なのでそちらに分があるなあ

次の課題はこれだ(俗にバーンズリーのシダ[wikipedia])
あれ?!python+excelからどんどん離れてるぞ!

0 件のコメント:

dosvaxj3が更新されていた。

 最近、エミュレータ系をあまり触っていなかったのだけど久しぶりに見てみたらタイトルのようにdosvaxj3が更新されていた。 on emulatorでセルフにcなどのソースを書いて実行するのに母艦側の特定のフォルダをドライブとしてマウント出来たり普通に母艦のimeで漢字が入力でき...