トップ
むかし作ったもの
その他
設定(管理者用)
ログイン

今までに使用した主なプログラミング言語
 世の中には様々なコンピュータ言語がありまが、 コンピュータが直接実行できる機械語と人間に分かりやすい 高水準言語に大きく分けられ、 そして高水準言語は一般的なプログラミングの汎用言語と 特定のアプリを動作させるためのスクリプト言語に分けられ適材適所で使う必要があります。
 そして現在では複数の言語を同時に使ってシステムを開発しなければなりません。
プログラム例
 機械語は言語というよりCPUシーピーユーの構造そのものですので 下記欄は言語的でないエピソードになっています。 またアセンブリ言語は(誤用ですが) 当時みなアセンブラと呼んでいましたので以下はそう呼びます。
 機械語は数字の羅列ですので少しでも分かりやすくするために個々の数字に記号を当てはめたものです。 例えば機械語の「86h 13hはちろく いちさん16進数です)」は 「LDA A 0013h」ロード アキュムレータA 13h番地(メモリの13h番地の値を Aレジスタへ読み込め)のように書いて意味を分かりやすくします。
 この記号から数字への変換は通常コンピュータ自身でおこなうのですが、初期のころ使っていたコンピュータにはその能力がなく人手で行いました。 変換はほぼ一対一の単純作業ですがけっこう面倒で根気のいる作業でした。
 アセンブラはコンピュータへの命令そのものですので動作がかなり細かく人の感覚とはかけ離れているので習得するには結構な労力を要します。 さらにメーカーやコンピュータによって構造、命令や書き方が大きく異なっているので複数のアセンブラを取得するのは容易ではありませんでした。
 しかし無駄のない最適なプログラムを作ることができますので CPUパワーメインメモリの少ない8ビットCPU時代には大活躍しました。
CPU中央処理装置(MPU)マイクロプロセッサ エピソード
モトローラ
MC6800
MB8861N
富士通 LKIT-8
初めて使ったコンピュータはLKIT-8エルキットエイトという富士通製の マイクロコンピュータマイコン練習用の ワンボードマイコンでした。 CPUシーピーユーMC6800 上位互換の 富士通MB8861Nで このマイコンを使いテープ媒体の試験機を作りました。
 搭載メモリが128バイトしかなくプログラムが入りきらなかったため1024バイトに増設して使いました。 今のパソコンはその数百万倍のメモリがありますが値段はこのL-Kit8のほうが高かったですね。 それでもワンボードマイコンの登場はコンピュータが個人で持てるようになったと大きな出来事でした。
 基本的なコンピュータの構造は大企業とかで使われている大型コンピュータ と同じだからマイコンでもなんでもできるなんて言う人もいました。
作った試験機のハードウェア構成や回路設計、プログラム設計は会社の先輩がおこなったもので私のオリジナルではありませんでしたがなんとか出来ました。 まあ初めてですからものまねから入ったわけです。
言語は機械語のみでそれまで全くコンピュータを知らなかった私にとっては極めて難解な代物で、 当時マイクロコンピュータを扱える人は勤務先工場に先の先輩の一人しかいなく別部門だったため独学で四苦八苦しました。
その後MC6800は会社の生産設備の組み込みコンピュータとして使われることになりましたので長く付き合うCPUとなりました。
このCPUはミニコンピュータの名機 PDP-11 を参考に作られたということなので少ないトランジスタ数で単純でも整然とした命令体系の良い設計だったと思います。
この当時のCPUのトランジスタ数は5000個くらいで 大規模集積回路LSIと呼ばれ時代の最先端でした。 そして2018年現在のCPUのトランジスタ数は10億個を超えているようです。
インテル
Intel 8080 / 8085
i8080の命令表
MC6800ミニコンピュータから降りてきた構造なのに対してi8080は電卓用CPUを拡張した下から上がってきた構造でした。全く違う方向から来た両者がこの領域でライバルとして対峙することになりました。
購入した測定機にi8085が組み込まれていましたのでこれでプログラムを作ったのですが、MC6800と比べると命令体系がバラバラで非常に使い辛く感じました。 しかし慣れるにしたがってやっつけ仕事の後付けのような命令がプログラムで効率よく機能しているのが面白かったですね。 MC6800が理想を求めた設計なのに対してi8080は実用重視という感じです。 マイコン黎明期には(ベストセラー機のTK-80など) このCPUを使ったワンボードマイコンが多く発売されこれで入門した(入門しようとした?)人は多かったと思いますが機械語の敷居は高く大半の(アマチュアの)人は使いこなすまでには至らなかったようです。
モステクノロジー
MCS6502
MC6800モトローラをスピンアウトした人達が作ったモステクノロジーのCPUがMCS6502です。 アップル社 の礎を築いたコンピュータApple IIアップルツーのCPUでしたので遊び程度に使ってみました。 Apple IIはアップル創業者のひとりスティーブ・ウォズニャック の設計でウォズニャックは当時マイコンを扱っている人達の間では超有名人でした。 簡素な命令でオーバーラップ動作を可能にして高速で動作するといううたい文句でしたが、間接アドレス指定が8ビットしかないのが閉口しました。 まあ慣れればこれでも効率よくプログラミングできたのでしょうがそこまでやりませんでした。 またこのCPUを使用したApple IIアップルツーは暴走族が住んでいるのではないかと噂されるほど暴走してとても仕事に使えるようなものではありませんでした。 当時Apple IIの暴走癖は多くの人を悩ませたようです。そういえば任天堂ファミコンは この6502を使ったカスタムICを搭載していたようです。これは世界中で大活躍でした。
ザイログ
Z80
i8080インテルスピンアウトした人達が作った会社がザイログで そののCPUがZ80です。
所属していた会社の生産設備は組み込みコンピュータにMC6800を使っていましたが、 そのころ私が担当していた測定システム等にはそのシステムのバスラックは大きすぎたためコンパクトな (内部)バスのSTD-Z80という 組み込みコンピュータを採用しました。このバスのCPUがZ80でしたのでこれでたくさんのプログラムを作りました。 Z80は市場で大ブレークし様々なコンピュータに採用されましたのでこのCPUのプログラミングをやった人は多かったと思います。
命令はi8080の上位互換でi8080に慣れた人だったらプログラムの取得は容易でした。 ただインテルとザイログでは命令の書き方(ニーモニック)がかなり違っていたため 慣れたインテルの書き方でこのZ80のプログラムを書く人が多かったようです。私自身はもうインテルには戻らないと思いザイログ方式で書いていました。このCPUでの初仕事はPC-8001と STD-Z80でディスク媒体の試験機を作りましたが安価なPC-8001の性能に関心しました。 それまで使っていたヒューレット・パッカード計測制御用コンピュータシステム(16ビット機です)の1/10の値段できちんと仕事に使える働きをしてくれました。 ただメインメモリ不足には苦労しました。まあ高価なHPのコンピュータでもメモリ不足には苦労しましたのでこの当時はしかたのないことでしたが。
モトローラ
MC6809
究極の8ビットCPU」というふれこみで登場しました。
MC6809MC6800命令セットを大幅に強化したもので豊富な命令が整然とあり使いやすいとても良いCPUでした。 ただ出てくるのが遅く世の中はそろそろ16ビットCPUに時代に入ろうとしていましたので このCPUを採用したパソコンは富士通FM-8や 日立ベーシックマスターレベル3など少数しかありませんでした。 しかし会社の生産設備の組み込みコンピュータはこれに切り替わり私にとっては長く付き合うCPUになりました。
インテル
i8086 / i8088
Z80を搭載したベストセラーパソコンPC-8801の 16ビットCPU版PC-9801がi8086を搭載して登場しました。 Z80を開発したザイログからは Z8000という16ビットCPUが出ましたが全くといって人気がなく採用したパソコンは無かったと思います。 ということでi8086ですが日本では国民機と言われた PC-9801に搭載されベストセラーになり世界的には廉価版のi8088がIBM PCに採用されベストセラーになりました。 今のWindowsパソコンは全てIBM PCの後継です。 (ちょっと細かいことをいうと3世代目IBM PCPC/ATが元になっています)
命令セットはi8080の拡張版でi8080に慣れた人だったら取得は比較的楽だったと思いますが、一度にアクセス出来る範囲が64Kバイトと8ビットCPUと同じで セグメントという変な方式を使っての全アドレス空間でも1Mバイトしかないというしょぼい仕様でした。そしてこのセグメントを使ってのプログラムが面倒で相変わらずインテルのCPUは使い辛いものでした。 また1Mバイトという小さなメモリ空間はMS-DOS時代に多くのアプリケーションプログラムでメモリ不足に悩まされることになりました。
モトローラ
MC68000
組み込みコンピュータ 16ビットにすることにしましたので VMEブイエムイーバスでMC68000を使うことにしました。 ただ言語は「Cシー」を主体にしましたのでアセンブラはCで書けないわずかな部分のみになりました。 命令セットは32ビットCPUのような構成で当時のマイクロコンピュータの最先端をいっているように思いました。 私には理想的なCPUに思いましたが当初このCPUを採用したパソコンは有名なところでアップルの Macintoshマッキントッシュだけでした。 まだ珍しかったGUIジーユーアイを処理するために高性能CPUが必要だったのでしょう。 当時このCPUを用いたシステムは高価になったことからか パソコンの分野ではなくより高性能が要求される ワークステーションの分野で多く採用されました。
後々にシャープがこのCPUを搭載したX68000をパーソナル ワークステーションというふれこみで登場させ高性能をアピールしました。
この後さまざまなCPUが登場しましたが機械語は使う必要がなくなりました。一般的にも必要性はなくなっており現在機械語を使っているのは特殊なプログラムを作るごく少数の人でしょう。
番外編
COMP-Xコンプエックス
情報処理試験用に作られた仮想のCPUで実在しないものです。 そしてこのアセンブはCAP-Xキャップエックスと名付けられていました。
命令セットは単純で必要最小限なものしかありませんでした。試験そのものは簡易なCPUに合わせた(現役技術者にとっては)簡単なものでしたが、 もしこのCPUの様な仕様で本格的なプログラムを作るとなると大変だったでしょう。簡単なものは入りやすいけどそれで奥に進むのは難しいですからね。
機械語は操作が細かく人間の感覚とはかけ離れているため開発効率が悪くまた取得の難しいため人間の感覚に近いプログラミング言語が考え出されました。 その大部分は英語をもとにしたものですが例えば画面表示など機械語だったら(ハードウェアによっては)数千のステップは必要とするものも「print 'ABC'」のように簡単に書くことができます。 まあ、それをコンピュータが数千の機械語へ変換するのですがとにかく人間は楽になりました。
プログラミング言語エピソード
BASICベーシック 初期のパソコンには BASICベーシックROMロムで標準搭載されていて電源を入れれば自動的に起動しましたので 多くの一般の人にとってはBASICがとても身近で唯一のコンピュータ言語でした。 ちなみに主なパソコンにはMicrosoftマイクロソフト が開発した BASIC が搭載されておりMicrosoftマイクロソフトはこの Microsoft BASIC で大きくなった会社で 創業者のビル・ゲイツはBASICの開発者として有名でした。 しかし今振り返って驚きなのはまだまだ小さかったMicrosoftが開発したBASICを(NEC、富士通、シャープなど)保守的な日本の企業が採用したということですね。
BASIC はプログラムの初心者用に簡略化された言語ですのでとっつきやすく(一般的に)少ない時間で取得できました。 私の場合は雑誌のBASIC特集を1時間ほど読んで勉強して簡単なクイズゲームを作ったのが BASIC の始まりでした。 紙にプログラムを書いて(当時プログラムを作るときにはまず紙に書いていました)会社にあったもらい物の 日立ベーシックマスターにプログラムを打ち込み実行しました。 動いたときにはプログラムがこんなに簡単に作れるものかと大変感動しました。この体験が後の仕事を決定づけました。 初めての言語のMC6800の機械語では学習時間が十分ではなかったこともあってか、まだ実用的なプログラムは作っていませんでしたのでBASICに触れる前はプログラミングはとても難しいものと思っていました。
FORTRANフォートラン FORTRANフォートランはコンピュータ黎明期の高級言語でBASICの元になったといわれるものです。 当時一般的に普及していた高級言語はCOBOLコボルと FORTRANで、事務処理用がCOBOLでそれ以外がFORTRANという住み分けになっていたように思います。 CP/Mシーピーエム上で動くFORTRANを使いましたがどの仕様のものだったか忘れてしまいました。 BASICと比べて機能がしっかりしていて大きなプログラムを開発するにに向いた言語でした。 ただ、当時流行ろうとしていた構造化言語ではなかったため 時代遅れという意識が強くて深入りすることなくプログラムを一本作っただけでした。プログラムは測定したデータをペンプロッターでグラフにするというものでした。
Pascalパスカル Pascalが注目された時期がありました。 技術雑誌のインターフェースに 特集が組まれたりしていましたので私も大いに興味を持って計測システムをPascalで作ることにしました。 使ったのはUCSD p-Systemユーシーエスディ ピーシステムという オペレーティングシステム上で動作する UCSD Pascalユーシーエスディ パスカルでした。ハードディスクは無くて 8インチ フロッピーディスクベースの PC-8801を使ったのですがこれが失敗でした。 すでに16ビット機のPC-9801が発売されていたのですが、 当時はハードソフトを一人で開発していてハードウェアの自作を少なくするため(設計まではいいのですが不器用なため制作と デバッグで基板や配線などがボロボロになってしまいます) ADコンバータDAコンバータパラレルI/Oなどの 拡張ボードが豊富にあるPC-8801を選びました。 しかしこのp-Systemは8ビット機には重すぎて例えばコンパイルなどは フロッピーディスクの遅さも加わり最終的には40分以上もかかるはめになり開発に大変支障をきたすことになりました。 この重さの原因はこのOSオーエスpコードインタプリタという 仮想のCPUで動作させていたというのも大きかったと思います。
Pascalは初めて使った 構造化言語でした。 当時使っていた他の言語(機械語FORTRANフォートランBASICベーシックなど)では必須であったが悪の根源のように言われた GOTO文ゴートゥーぶんがいらなくなっていました。 また、変数が細かく規程されていたりとこれでこそ高級言語だろうと強く感じましたが、 前述の速度の問題で使うのをやめてしまいました。 後にCP/M版のPascal/MT+ というのを少し触ってみましたがすでにCP/Mシーピーエム の時代ではなくなっていたため仕事でのプログラムは作りませんでした。
Forthフォース 組み込みコンピュータの プログラム開発はインサーキット・エミュレータが付いた 組み込み用プログラム(ファームウェア) 開発機でおこなっていたのですが、言語はアセンブラ(機械語)で開発効率は良いとはいえないものでした。 もちろんアセンブラにはすっかり慣れてなんの支障もなかったのですがやはり低級言語での開発には手間がかかります。 そこで高級言語の導入を検討したのですが組み込み向き言語として候補は「シー」と 「Forthフォース」でした。 プログラム例を見た感じではCは普通に分かりやすいのに対してForthは逆ポーランド記法という特殊な書き方で難解に感じました。 当時の私にはこの難解さが魅力に思えて他人ができないことをやるという自己満足でForth(リギーコーポレーション制)を選びました。 ちなみに逆ポーランド記法は当時ちょっと流行っていてヒューレットパッカードのプログラム電卓にも採用されていました。
Forthはとても癖のある言語でしたが思いのほか取得は難しくありませんでした。基本的な構造そのものが単純なため高級言語として求めていた文法チェックや見通しの良さなどが期待出来ませんでした。 書き方を少し間違えてもコンパイルでの指摘もなくプログラムを走らせたら暴走というありさまで、これでは機械語とたいして違いはないじゃないかという感じでした。 結局この言語はプログラムを一本作っただけで使わなくなりました。また処理速度の問題もあったため8ビットCPUでの高級言語使用は諦めました。
PL/Mピーエルエム 生産シシテム開発の研修で PL/Mピーエルエムを使いました。 大型コンピュータ向けに PL/Iピーエルワンという言語があってPL/Mはその サブセットということでした。言語そのものは簡単で特に勉強することもなく仕様をみながら作り始めました。 ただ、さわったのがこのときだけで印象も薄くどんな特長があったのか思い出せません。まあこの言語は世間でも全く流行らずに消えてしまいました不遇な言語でした。
シー カーニハン&リッチー著の「プログラミング言語 C」は C のバイブルのような存在で最初はこの本で勉強しましたが、仕事で初めて C を使ったのがいつごろだったか何用にだったのか覚えていません。 使ったコンパイラはMS-DOSエムエスドス版の Microsoft Cマイクロソフトシーでしたが バージョンはわかりません。 当時はMSCエムエスシーと呼ばれていました。統合開発環境(IDE)ではな くコンパイラだけのものです。
C言語の存在はコンピュータを触りだした当初から本や雑誌などで知っていましたが、 名称がアルファベット一文字だけという変なことからなにかゲテモノ的な言語ではないかというイメージしかもっていませんでした。 しかし世間ではこのC言語はミニコンピュータオペレーティングシステムUNIXユニックスを書いた言語ということでは 小回りが利き汎用性が高い言語でとても有望視されていました。 ちなみにUNIXは、UNIXユニックスNextStepネクストステップ (OPENSTEPオープンステップ) → Mac OS XマックオーエステンiOSアイオーエスという流れや、 UNIX → LinuxリナックスAndroidアンドロイドという流れで 2大スマートフォン用OSの源流になっていますので UNIXの子孫は世界中で沢山の人達に使われています。 しかもミニコンピュータワークステーション用だったあのUNIXを持ち歩いているのですから当時を考えると今はすごい未来です。
Cは16ビットになった組み込みコンピュータのプログラミングでも使うようになりこちらは Lattice Cラティスシー というのを使いました。 またかなり後にWindowsの フィルタドライバデバイスドライバ) を開発しましたがMicrosoftから提供された開発ツールは進化版の C++ シープラスプラスではなくオリジナルの C でした。
C++  シープラスプラス 「C++」は「C」が進化した言語ですが、いつ代わったか記憶にありません。というのもMicrosoft C コンパイラがバージョンアップして C++ 仕様になっても C++ の主な特徴である オブジェクト指向クラス機能を使わず 単に C として使っていたからです。メインで使っていた組み込み用 C が C++ にならなかったのと、本格的にクラスを使いと基本的なプログラム構造から変わるため面倒だったから興味がわきませんでした。 しかし、後に行うWindowsプログラミングでは(しかたなく?)クラスを使うようになりました。
Visual C++ ヴィジュアル シープラスプラス 1990年代の初め頃からWindowsプログラミングをやりたいと思っていましたが機会がありませんでした。あるとき顧客支給部材の在庫管理システムを作らなければならなくなりました。 私が通常やっている計測や制御のプログラミングとは畑違いですが比較的簡単なプログラムです。
******制作中******
JAVAジャバ
JSP ジェイエスピー
Webでの情報配信システムを JAVAジャバサーバーサイドプログラミング)で作りました。
******制作中******
Visual Basic .NETヴィジュアル ベーシック ドットネット お客様からVisual BASIC .NETで作ってほしいとの依頼がありました。
******制作中******
特定の用途向けに最適化された言語です。
プログラミング言語エピソード
Perlパール 独立して
******制作中******
PHP ピーエイチピー
******制作中******
JavaScriptジャバスクリプト
******制作中******
ActionScriptアクションスクリプト
******制作中******
その他のコンピュータ関連言語
通常のプログラミング言語とはかなり違うのですが、webプログラミングとサーバーサイドプログラミングでは必要な言語です。