湘南鎌倉総合病院心臓センター 循環器内科 齋藤 滋です
今年(2024年)におけるこのサイトについて
今年はライブの大枠を根本的に変更しました。それに伴い、データベースの移行は何とか問題無く終わったのですが、問題はデータをどのフレームに結びつけるのか? という大きな概念設計でした。これにはバグとりに多くの労力と時間を費やしました。そもそも、この概念設計における構造化が不十分だったのです。そんなこと前から分かっていたのに、ついつい目先の安易な道に走り、根本的な部分にはこれまで手を入れなかったからです。これについては大きく反省し、良い方向への改変を行ってきました。
私と Computer Programming - Z80機械語の世界
僕が最初に programmingというものに興味を持つに至ったのは、1973年 大阪大学医学部進学過程2年生の時でした。当時 3ヶ月間の基礎講座配属、という制度があり、僕は当時 生化学の研究者を夢見ていたため、生化学実験を駆使しておられた「栄養学教室」を希望し配属されました。骨格筋からクレアチニン・キナーゼ(CK)のMM型アイソザイム結晶を精製することでした。これはとても辛く、かつまた楽しい作業でしたが、その研究室には SEIKOのプムグラム関数電卓がありました。その関数電卓を用いて初めて自分で簡単なプログラムを打ち込み、それにより少し複雑な演算を行なうことができました。そして、関数電卓上に簡単なゲームを作成し、それが思った通りに動作することを確認し知的興味が掻き立てられたのです。その後、関西労災病院に医師として勤務しだしてからは、さらに本格的に computer programmingに興味を持つようになり 8-bits CPU (8080, Z-80, 6502, 6809など)が、基盤の上に載っている Training Boardといううのを購入し、定常電圧電源を接続し、Assembler (機械語)を用いて非常に簡単なプログラムを作成し、4 x 4の Keyboardと 4桁のLED表示を利用して機械語でプログラムを書き、そして試して遊んでいました。これは 1976年の頃です。その後すぐに、Sharpより MZ-80シリーズという Personal Computerを誰でも購入することができるようになり、僕も Audio Cassette Tapeが唯一の外部記憶媒体、CPUが Z-80、RAM 16KBという Sharp MZ-80Kというマシンで本格的に やがて機械語(0x86などの16進表示のCPU命令)から、それを少しは人間にとって理解しやすくしたZ-80 Assembler言語(たとえば、LD 0xFF というアセンプラの意味するところは、 accumulator Aに 0xFF = 256という値を読み込むことです)を勉強しました。この頃Z-80 Assemblerで書いたプログラムには、「ブロック崩し」があります。
構造化言語に世界に飛び込む
その後は、FORTRAN, BASIC, PASCALという当時最先端の"高級"言語を勉強するようになりました。その後さらにコンピューター・サイエンスを独学で勉強し、ついて当時の情報処理資格としては実力的に最高峰である第一種情報処理技術者資格を取得しました。もちろんこれは当時の通商産業省管轄の国家資格です。
さて、その頃はプログラムと言えば、命令の列を羅列するものでしたが、Niklaus Wirthというコンピューター・サイエンスの天才が書いた有名な書籍: 「アルゴリズムとデータ構造」という本を読み、目が醒めたのです。彼はこの本の中で、『アルゴリズム + データ構造 = プログラム』ということを提唱し、データ構造をきっちりと定め、それを処理するアルゴリズムを編み出せば、自然にプログラムは正しく動作する、とということを言いました。そして、この考えに基づき、彼は「構造化言語」の雄である、PASCALという言語を発明し、それを全世界に公開しました。PASCALを見た時、それまでのBASIC/FORTRANにばかり慣れていた自分にとっては新しいワクワクする世界が始まったのです。
その後 PASCALに始まった構造化言語という概念は世界のインフラ・プログラミング言語である Cあるいは C++さらには C#という言語に発展していきました。その一方で、全く別の概念である「オブジェクト指向 (Object-oriented)」という概念が、SmallTalkという言語により導入され、その概念が C++, C#にも急速に取り入れられたのです。C言語から発展した JavaScriptや PHPあるいは Rubyそして Pythonという現代の Web programmingに使用されている各種スクリプト言語にも Object-orientedの概念は取り込まれ、現代の Web programminに広く用いられています。
さて、この Home Pageに用いられている言語等としては、HTML5, CSS3, PHP7.4, MySQL5.x, jQuery3.x, Javascriptがあります。これらの言語等は国際規格として標準化され、また Web上に無償で公開されていますので、誰でも勉強すれば大規模なブログラムを Web上に構築することが可能です。興味のあられる方は是非とも一緒にこの素晴らしい世界に入りましょう。
今現在勉強をしているのは、Javascriptです。しかも、非同期処理についてです。Web Server/Clientは常に多数の相手と通信をしながら情報を交換、あるいはデータベースに蓄積しています。そのようにして得られた膨大なデータは CHAT-GPTのような巨大な知識データベースに蓄えられ、そして人工頭脳の基礎的データとなるのです。この過程で、通信は多数の相手と行われ、またお互いの都合の時間でなく、それぞれの相手と予測できない時刻にお個々な割れます。この結果、通信は互いに衝突し、正確にデータを送れなくなる可能性もあります。
しかし、通信が非同期で行われるのであれば、それぞれ相手の都合を考えずに通信を行うことが可能となります。このような処理を「非同期通信」と呼びます。
そもそも Javascriptは
インターネットの場面で使用されることが多い言語でありますので、言語の仕様から非同期処理が得意な言語ということになります。現在私は、このJavascriptの非同期処理について勉強しています。とても難しい概念なのでなかなか理解するのは大変です。でも頑張ります!!