何気ない記録

なんとなく自分の意見を書き記すときにつかいます。つまり不定期更新です。

たぶん40年前に転移しても、さほど詰むこともないというお話

きしだൠ(K1S) on Twitter: "現代プログラマが40年前くらいに転移してしまうと「え?メモリ8KB?え?画面幅40文字?え?コードは紙に。。。え?」とかになってなんも無双できなそう"

乗り越えられない人も一定数はいるだろうが、別に制約が明確なら、その制約の中で何とかするのが技術であり経験なわけで、別にそれほどでもと。今はその制約や活用の領域が広大なだけで、実態は制約との闘いで同じ事

言いたいことはわかるが、現実は何もかわらないかと。

 

つまり、現代でもできない人は、過去でもできないし、現代でできる人は、おそらく過去にいってもできるだけの事。

 

私は高校時代にCOBOLプログラムを触っており、汎用機の操作もする程度にはよい環境で学んでいました。

その為、40年という程昔ではありませんが、それから少し過ぎた程度の時代のプログラムを触っていましたが、結論から言えば、現代と何も変わりません。

 

結局のところ、システム開発やプログラミングというのは、究極のところまで情報をそぎ落とすと、ただ只管目的を与えられた制約の中で達成するという事にすぎません。

 

この基本的な考え方は過去も現代も変わらず、永遠に技術者が向き合うべき性というものでしょう。

 

現代は通信というものを中心に、エクスペリエンスがかなり重視されており、如何に利用者によい体験を与えるかという点に注力しつつ、その目的を達成する為、様々な環境下での最適化を技術者は行います。

 

当然、使える言語、リソース量、処理完了までの時間、クロスブラウザ対応、安定性、そしてコストと利益、そういった様々な条件を満たし、最大化するという事が求められます。

 

一方で、昔はというとあまりそういった方向の制約はなく、逆にリソースの利用制限という概念が優先されていました。

 

そもそも当時はコンピューターを操作する人は、それぞれの役割を持っており、極端なことを言えば、磁気テープの差し替えも誰でも触っていいものではありませんでした。

当然、コンソール前で操作する人も、今のような一般の利用者ではなく、GUIすらない時代は、当然CUIベースで画面を見つつ処理を行うということが当然でした。

 

当時もっとも重要だった事は、何よりもリソースの制限で、例の投稿では画面幅やメモリーの話が例示されていますが、私の経験上、画面幅やメモリーが制約としてつらくなったのは、どちらかというと近代で、Windowsへの移行直前あたりでは確かにCUIといいつつ、事実上のGUIへの足場ができている時代で、例えばX68000のような機種ではなんちゃってOSを作るのが流行ったりするなど、与えられた制限の中でどうするかが議論となり、特にUI回りが劇的に進化し始めた時代でした。

その後の携帯電話が出始めるころからメモリとの闘いや、特に画面サイズとの闘いは激化するわけですが、正直それ以前は、印刷の時の1行のライン幅は気にするものの、画面についてはぶっちゃけそこまでの厳しさはありません。

 

というのも、そもそも画面サイズに対して表示できるデータ量に制限がありました。

CPUもメモリも、というか、グラフィカルなUIが想定されていないので、VRAMのような仕組みもありませんから、画面入出力=メモリとの闘いであり、別に画面の横幅なんて大した問題ではなく、そんな戦いができる程の余裕事態がありませんでした。

 

私が感じた一番の制約は、単純にCPUです。

アルゴリズムでいえば正しい処理方式であっても、そもそもそれを処理できるだけのCPUがあったかというと、正直厳しく、パソコンの類はまだいいのですが、汎用機に至っては、CPUの利用できる時間の総量が部署や企業で定められており、処理完了まで放置、という方法はとれません。

私はたまたま学校で占有できる機器があり、銀行への引き落とし処理だったり、なんちゃってゲームを勝手に作る程度には自由にできましたが、それらは大抵が、制約を無視した環境だからこそやれる事で、現実の技術者がそんな処理を実装しようものなら当然ですが、処理時間が足りるわけもなく、技術者失格の烙印をおされるわけです。

 

アルゴリズム自体は数学の延長線上ですので、ぶっちゃけ特定の名前がつく前から、そういった方法で処理できることは暗黙の了解がありました。

が、ソートアルゴリズム一つとっても、それをその量のデータに対して行う事が、現実的にできるのか、という問題とぶちあたるわけです。

 

メモリの制約、記憶容量の制約は確かに厳しいのですが、こちらは処理を分割したり、そもそも入出力をそれに最適化する事で乗り切ることは可能です。

機種依存文字の活用はこのあたりの最適化にはとても役に立っており、この考えは、ワープロの時代にも生きていました。

 

私が思うに、無駄に日本で機種依存文字や記号っぽいそれが発達したのは、汎用機からワープロの時代に無茶した結果だと思っている程度には、最適化は進んでいたと感じています。

 

このように、何かしらの制約と戦う、それを乗り越えるというのは、時代によって「何と戦うか」が違うだけで、さほどのハードルにはなりません。

 

1行の制約があるならそれに最適化すればいいだけの事ですし、逆に今のように1行の制約はないか、それを閲覧する端末は無数にあり、それぞれの利用者の環境で同等の条件で実行される事、むしろこの条件を40年前の技術者に提示すれば、失神するのでは、と思う程度に、現代の制約も非常に厳しいものがあります。

 

まぁ、そこはフレームワークを中心とした周辺技術が補ってはくれますが、むしろそういった知識、経験、流れ、そういったものは昔は必要なく、ある意味一本道ですからね。

 

コメントの中にあるエディタや開発環境は確かに影響は大きいかなとは思いますが、40年前ですと、おそらくいきなりマシンの前に座るということはありません。

私の学生の時代ですら、いったんは紙の上でコーディングし、それをデバッグ・レビューした後、基本的には完全に動くという条件下でタイピング(コードをコンピューターに登録する。なお、実行はまた別の段階)するので、ぶっちゃけエディタ云々以前の話ですので、発狂するかといえば、発狂するのではないかなと。

 

まぁ、とはいえ、当時私が書いたものでも数千行程度が最大だった気もするので、手で書いて、デバッグやレビューしてもさほどつらくはないですね。

 

ようは慣れです。

 

という感じで、冒頭に書いたとおりですが、現代でちゃんとやれている人は、その時代でも大丈夫ですから、万が一異世界転生的な何かでそういった時代に転移する事を恐れている人も安心していただければと思います。

 

今の時代ですらやれていない人は…まぁ、なるようになるでしょう。

 

そんな感じです。