前回:
自作メディアプレーヤー作成日記① ヤーマンにとってのプログラミングとは?
前回からの続きですが、私がプログラミングを苦手(ヘタクソ)となぜ感じているか?
単純に物覚えが悪いからです。
そんなの自分もだよ。コード書く時は毎回調べているよ。と言われるでしょう。
私も"if"、"eles"、"for"、"next"ぐらいは書けます。言語ごとの使い方に多少の差はあってもね。
でも"while"はもう書けません。他にも"switch"とか"case"とか。
型宣言は書けます。"int"、"const”、"ver"等は単語が単純ですから。
でもアクセス指定子の"public"、"private"、"protected"など書けません。長いから。
■馬鹿なのか特別なのか?
フローチャートなんて別に勉強しなくても、一目見れば何を表しているか理解できましたし、構造化プログラミングの理念の理解も、特に苦労はしなかったです。
OOPの原理なども分かります。でもOOP独特の用語が憶えられないです。毎回(用語を)調べてます。
ここで重大なポイントがあります。
私はプログラミングの意味は分かるんです。でも英単語が出てきません。
(当然私の学生時代の英語成績は…)
「ワイル」がループを意味することはすぐ憶えられました。「プライベート」がアクセス制限だということもすぐに理解できました。「while」「private」 というスペル(綴り)が出てこないのです。つまり、音と文字列の対応関係が覚えられないのです。
学術的には、これは「正書法記憶(Orthographic Memory)」の困難、つまりスペル(綴り)を視覚的に記憶することの障害らしいです。学習障害(LD)の一種である「書字表出障害」の部分的症状とも言えます。
そうです。極端に「恣意的な記号」が覚えられないのです。
簡単に言えば「無意味な関係性」や「必然性のない関係性」と言えば良いでしょうか。
ですので、
漢字テストで漢字の書きだけ全滅したり
英語の初学で単純な単語を埋めるテストでほぼ全滅したことも
数学の公式が憶えられないのも
会社の毎月変わる4桁の入室暗証番号を憶えられないのも
自分の住所の郵便番号を覚えられないのも
学習障害の結果だったんですね。最近気がつきましたが。
こうしたことを、私は個人的に「無意味記憶力がない」と言ってます。学術用語では「機械的記憶」や「対連合学習」の困難と言うようですが、一般の人に説明する時には、それじゃわかりにくいですから。
LD(学習障害)もグレーゾーンなんでしょうね。ADHDもグレーゾーンですし、面倒くさい人間です。
余談ですが昔ぴゅう太というホビーパソコンで日本語G-BASICをなる物がありまして、
モシ SL=2ナラバ 900ニイケ
なんて書き方をする物でした。不評だったらしいですが、私は羨ましかったです。
■常人には理解して貰えない私の苦しみがあるんですよ
このあたりの私の記憶力に関しての考察は別件で記事にしますが、この「普通なら覚えれるでしょ?」があるために、20年前のプログラミング環境ではすごーーーーく苦労しました。
なんせIDEはともかく、まともなエディタもない時代です。秀丸のようなテキストエディタベースで開発がデフォルト。言語ごとに強調表示機能があるくらい。
私はプロジェクト管理ができるPHPエディタを使ってましたが、VS Codeのように綴りを間違えるなどしたらすぐに問題として表示してくれることもないです。
アプリケーションの機能の全体像はすぐに頭に浮かびますし、実装のための詳細設計やロジックを考えるのも楽しいしやりがいがあります。
しかし、なんせコーディングが遅い。苦手というレベルではなく、"ヘタクソ"なのです。尋常じゃないレベルで。
それじゃどうするかって?
そりゃ時間で解決するしかないでしょう。それと工夫。
よく使う処理系はテンプレートにしてコピペできるようにしたり、なるべくモジュール構造にして、自分の持ち分のWeb開発ではコードの再利用ができるようにしたり。よく見る命令系には付箋を貼って常にPHP辞典を手元に、朝から晩まで開発してました。
大げさでなく月の(サービス)残業時間が200時間超えてました。
もうその時点で、心身がボロボロだったのですが、大事件が起こります。
Googleから「Ajax」が出たのです。
これ以降JavaScriptもWeb開発では必須の技術になっていきました。もう分かりますよね。
心が折れました。
■でもプログラミングは好き
この後のことは自己紹介ページと被るので割愛しますが、なぜ根本的にプログラミングが苦手(ヘタクソ)なのにフリーランスエンジニアとして復帰しようとしているのか?
もうそれは開発環境の劇的な変化にあります。
VS Codeを始め、コード作成のサポートツールは目を見張るほど充実しました。
デバッグ環境も雲泥の差。そもそもIDEでもないVS Codeだけでも十分に開発できます。
さらにAI技術の発展。
設計やロジックの立案は苦にならない。でもコーディングは壊滅的にできない。しかしAIはそこを補ってくれる。後はハルシネーションからくるセキュリティーや構造バグをチェックすればいいい。
AIが狭窄的見方をしてしまうなら、開発者が大局的に実装を促せば良い。
VS CodeのGitHubCopilotを使えば、コーディングのサポートをしてくれる。
コメントに「// JSONデータの取得」と書けば、それに合わせたコードを出してくれる。
AIが間違えていれば修正をしたら良いし、修正に合わせたコードを出してくれる。
なんならATOKに「ふぁんくしょん」と入力すれば「function」と変換してくれる。
情けないと思うかもしれないですが。これが私の戦い方なのです。
AIに頼るなんて情けない?
それじゃ一生、売上票の合計を電卓で計算してください。間違ってもExcelのSAM関数を使っちゃダメですよ。ソロバンでも良いです。
テクノロジーの発展によって人間が楽になることが悪と考えるのは、もはやエンジニア思考ではないですよね。単なる思想信条の問題です。
エネルギー革命とモータリゼーションで労働者が身体を動かさなくなったから、成人病が蔓延しているのなら、ジムで運動をすればいいじゃないですか。記憶力を鍛えなきゃいけないと言われる筋合いはないです。
人にはどうしようもない持って生まれた能力差があるんです。それをテクノロジーでフォローできることに何を躊躇するのでしょう。
■自作メディアプレーヤーは?
すっかり脱線しましたが、次回以降、ちゃんとした開発日記にします。フレームワークのTauriでアプリケーションの構築をしながら、Rustの勉強もしようとして、頭がスポンジになっていますが、この苦しみを共有しましょうw
姉妹ブログ紹介
noteの私のページです。今のところAI関連の話題が中心ですかね。
私のQiitaのページです。作ったアプリケーションの技術的な解説などを載せてます。