Pythonに挑戦(1)

Pythonに挑戦(1)

筆者は、Pythonについては全く素人です。何冊か本を読んで概略の知識はありますが、実際にコーディングしたことはありません。
情報の教科書を見ると、多少
Javascriptについても触れられていますが、Pythonについて詳述されているので、文科省はPythonを基本にすることを考えている(私個人は、文法が簡単なので、C言語にするべきだと思います。当ウェブサイトではC言語をベースにしていこうと思っています。文科省の言う通りにすると、動かす環境がないのに、センター試験で出題されていたBASICのようなことになると危惧します。Pythonの流行は、私は一時的なものだと思っています)ようです。そこで、私もPythonに挑戦してみようというわけで実教出版の「情報II」という教科書を参考にしながら、その状況をレポートして行こうと思います。

まず、教科書に、


データ分析のための言語にはさまざまなものがあるが、Pythonはその代表的なものである。

と書かれているのにはカチンと来ます。この記述はウソです。読みやすくシンプルで代表的な言語はCです。有名なMATLABは元々C言語で記述されていました。今の若い技術者にPythonが流行している(上司がC言語を使うのが不愉快だからという理由で)、というだけで、stand aloneで動かせないPythonはいずれすたれると私は考えています。こういうウソを強要する教科書検定制度(歴史教科書ばかりが問題になりますが、他の科目も問題山積です)に私は反対です。

まず、教科書に、
Pythonは、文字型、整数型の指定が不要なので、煩雑な宣言は不要で、単に変数名を書くだけで変数にアクセスできる、書かれていますが、これがPythonの致命的な欠点です。文字列の‘12345’と、数値の12345 (12345)とは決定的に違います、この2つを区別して処理するから分かり易く、コーディングしやすくなるのです。

シンプルで読み易いコードとして、ソートのコードが書かれていますが、これを高校生がいきなり読んで、分かりますかね?横にフローチャートも書かれていますが、ループがループのように描かれていないので、これまた分かりづらい。
range()という関数が使われているので、PythonMicrosoft EXCELなどに搭載されているVBAをお手本にしていることがわかります。VBAには強力なサポートシステムが付属していますが、Pythonにはあるんでしょうか?でも、range()関数を使うよりも、私は、C言語の、

for (i=0; i<=max; i++) {
・・・・・
}

というループの方が遥かに分かり易いですけどね。予約語が少なくても、関数を使う必要があるなら学びやすいとは言えません。Pythonがオブジェクト指向で、全てのデータがオブジェクトであり自分自身を処理するためのメソッドを持っている、という点からもPythonVBAをベースにしていることが分かります。C言語にも、Windowsのダイアログやフォームを扱うためのC++というオブジェクト指向の処理系があります。

先に、
Pythonが型指定しないのは致命的欠陥だと書きましたが、数・文字列の比較には別の演算子を使う、と言うのでは、比較だけでも混乱するでしょうね。処理系が、型が違いますよ、と教えてくれるから便利なのに、型指定もなく、処理系が数の比較なのか文字列の比較なのか使われている関数で区別する、というのでは不便でしかありません。

ラムダ式の記述もありますが、私は必要性を感じません。コードが分かりにくくなるだけのことでデバグ時に苦労するでしょうね。こんなものは利点でも何でもありません。システム設計時に、どういう関数を用意しておくべきか、しっかり検討することの方が重要で、コーディング時に思い付きで処理の流れを変えると、後々ロクなことになりません。ラムダ式は、むしろ、使うべきでない、と言うべきでしょうね。

マルチ・スレッドのプログラミングが可能、とも、書かれていますが、これは、メッセージが来るまで処理を待たせるようにプログラミングすることで、
C言語でも可能です。私は、コーディング時にスレッドなど意識することはありません。コンパイル時に、自動的にやってもらえるからです。

Pythonが高校教育に導入される理由は、かつてのBAISCと同様インタプリタとして動作するからだろうと思います。Pythonがあらかじめインストールされているパソコンもあるそうなので、高校で導入する際の手間が省けます。教育上、プログラミング言語がインタプリタである必要があるとは思えませんが、生徒が、なぜこのプログラムが動かないのかわからない、と言い出したときに、コンパイル作業が割り込むと生徒対応が困難になることは、教師にとっては問題になると思います。

Pythonが企業などで多用されているのは、在宅勤務の開発者が増えている咋今、Pythonには、クラウド上で開発が行える環境が揃っていて、複数の開発者で共同作業するのに向いているからだろうと思います。一人の開発者が、家にこもってしこしこと開発するのであれば、C言語の方が遥かに効率的だと思います。

さて、ぐだぐだ不満を書いてきましたが、現行教科書には
Pythonが採用されているという現実は受け入れるしかないので、以下のサイトからインストール作業を行います。


に行って、Downloadのところにある、latestをクリックします。20231020日時点では最新版は、3.12.0です。最初に、

This is the stable release of Python 3.12.0

と書いてあり、続いて前のバージョンとの違い、注意点などが書かれています。さらに下に行くと、Filesと書かれていて、OSなどに応じてWindowsmacOSなどから選ぶようになっています。私の場合は、Windows Installer (64bit) を選びます。ダウンロードはすぐに終わります。次にダウンロードされたファイルをダブルクリックして実行します。表示されるダイアログで、“Install Now”を選ぶ(最初はこれが安全です。ユーザ・フォルダの中にインストールされます)とインストールはすぐに終わり、Setup was successfulと表示されインストールは完了です。ディスク内で占有するサイズは、150メガバイトほどです。インストールにより生成される\Pythonというフォルダには、\Launcherというフォルダと\Python312というフォルダができています。\Launcherの中には、py.exepyw.exepyshellext.amd64.dllというファイルがあります。\Python312の中には、DLLsDocincludeLibなどのフォルダができています。\Docの中には、HTML形式で文書が収められていて、index.htmlから色々な情報にアクセスできるようになっています。この中から、Tutotrialというところに飛ぶと、Pythonの使い方に関する記述があります。但し英語です。


でメニューのdocumentationを選択、サブメニューのDocsをクリック、黄色の[Python Docs]をクリックして出てくる画面の左上に言語を選ぶリストメニューがあるのでここでJapaneseを選択すると、日本語でドキュメントを読むことができます。ここで「チュートリアル」をクリックし、さらに、「2.Pythonインタプリタを使う」をクリックすると、初心者向けの記述があります。「Pythonのセットアップと利用」に行ってみます。「4.WindowsPythonを使う」とクリックすると、ある程度慣れてきたら、インストールをやり直して、インストーラの最初のダイアログで、“Customize Installation”を選択して、PythonProgram Files内に導入する方がよいことがわかります。

Pythonインタプリタを起動するには、コマンドラインプロンプト(Window11ではすっかり影が薄くなってしまいました。画面左下のWindowsアイコンをクリックしてスタートメニューを起動し、検索ボックスに「コマンドラインプロンプト」と記入して起動してください。Windows10ではWindowsシステムツールの中にあります)で、pyと入力すると、Pythonモードに入れます。“>>>”というプロンプトが出てきます。起動するコマンド名は、Pythonのバージョンによって異なるようなので、先の\Launcherフォルダに入っているファイル名に注意してください。

プロンプトの
“>>>”に続いて“2*1024”と入力すると、2048と表示されて次のプロンプトが出てきます。教科書に載っていますが、“2**1024”と入力すると、“179769・・・・・・137216″と教科書に書かれているのと同じ結果が表示されます。pythonモードから抜けるためには、Ctrlキーを押しながらZ(ファイル末尾を示すEOFというコードです)を入力します。

テキスト・エディタ
(Windowsのメモ帳でも良いそうです)を使って、

print (“Hello, Python”)

と書かれたファイルhello.pyを作成(文字コードはUTF-8)し、C:\に格納します。コマンドラインプロンプトから、

py C:\hello.py

と入力すると、

Hello, Python

と表示されます。教科書に載っているプログラムを試してみます。

def selection_sort(a):
for i in range(len(a) – 1):
for j in range(i+1, len(a)):
if a[i] > a[j]:
a[i], a[j] = a[j], a[i]
ls = [3, 8, 2, 9, 3, 9]
selection_sort(ls)
print(ls)

と書かれたファイルsort.pyを作成して、C:\に格納します。コマンドラインプロンプトから、

py C:\sort.py

と入力すると、

[2, 3, 3, 8, 9, 9]

と表示されます。

今日は疲れたので、これでやめにします。一応、
Pythonの導入はできたようです。次は、教科書に書かれているIDLEを使ってみます。


  ブログTOP  TOPページに戻る
各問題の著作権は
出題大学に属します。

©2005-2023
(有)りるらる
苦学楽学塾 随時入会受付中!
理系大学受験ネット塾苦学楽学塾
(ご案内はこちら)ご入会は、
まず、こちらまでメール
お送りください。

【広告】 ここから広告です。ご覧の皆さまのご支援ご理解を賜りたく、よろしくお願いいたします。
【広告】 広告はここまでです。
スポンサーリンク

シェアする

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

フォローする