노해가 아니라고 생각했던 기술, 의외로 곧 노해가 되는 것 무서워

소개



이 기사는 주관 9할 9분입니다. 이론은 어떤 사람은 있다고 생각하기 때문에 꼭 코멘트를 (웃음)

우선 마이크로 컴퓨터 아저씨 호이 호이의 옛 이야기에서



최근 월간 I/O가 아직 살아있는 것을 알고 정기 구독을 시작해 보았습니다.

12月号書影

(゚Д゚)オォォ... 라는 느낌입니다. (정말 이런 얼굴이 되어 눈치채면 년 구독을 포치하고 있었습니다 w 읽고 있으면 황삭한 기사도 많지만 재미있네요・・・w)

자, 여러분. I/O라든지 Pio(프로그램 제어 방식이라든가, 대전구 산업 플라자가 아닌 쪽)라고 알고 있습니까? (웃음)

무려, 30년 정도 전에는, 책 사 와서 코드 치면(미스 타입 하고 있지 않으면)게임을 놀 수 있었을 무렵이 있었어요…

그런 무렵의 마이크로 컴퓨터 정보지의 생존입니다. 대단해.

(덧붙여서 소스 코드를 끈적끈적하게 지면 인쇄하고 있던 잡지로 말하면, 마지막 세대를 관측할 수 있었던 것은 포케콘 관계군요.함수 계산기에 프로그램 실행 기능까지 붙은 포케콘이라고 하는 것이 있어서… 그 전문지 그렇다면 90년대 후반 정도까지 간행하고 있던 기억은 있습니다.덧붙여 저도 고등학교의 동기의 프로그램 투고를 도왔습니다…

플로피 디스크 드라이브가 고급품이었던 시대 1980년대



요즘의 분위기는 “프로그래밍 기술의 변화로 얻은 지견·고생 이야기[PR]파소나텍 Advent Calendar 2020 3일째 개발 환경과 복잡성의 역사”에도 초절 자세하게 써 주시고 있으므로 함께 읽으면 256배 맛있네요! (이 재료가 통하는 사람은 몇 할당되는 것일까… w)

지금부터 30년 이상 전(1980년대) 무렵의 컴퓨터 사정은 그것은 빈약하고, (무어의 법칙을 역산하면 어쩐지 분위기는 알 수 있다고 생각합니다.)

무려, 8색 칼라가 팔리는 시대였습니다.

8색 컬러라고 하는 것은, RGB 각각 1비트로 8색 표시할 수 있어요라고 하는 녀석입니다. 아래 그림에 표시된 색상만 그릴 수 있습니다.

이해하기 쉽습니다!

上の画像はWikipediaのイメージから参照しています。そのものズバリだったので。

私の父親がなぜかそんなパソコンを2~3年落ちぐらいで買ってきたのが私のPC遍歴の最初になります。(というかパソコン買いに行くぞ!ってルンルンで家電量販店に連れて行かれた。今は無きマ○ヤデンキに…)

当時5歳ぐらいでした。たしか一年制の幼稚園入ってなかった筈なんで…。

余談ですが、私の家ではファミコンは「パソコンあるでしょ!」を理由に相当しばらく買ってもらえませんでした(´;ω;`)ブワッ

完全に父が私(たち)を技術方向にハメようとしていた事は間違いないですね。結果として兄弟3人ともエンジニアで飯食ってますし。

그 당시의 스토리지 환경

なおそんな当時だと、パソコンのフロッピーディスクドライブは1つで2万円ぐらいしてたようです。これまたいい値段しますね。

当時の個人向けストレージは専らカセットテープでした。最近は入ってきた新人にフロッピー知ってる?って聞いても反応が薄いので、
カセットテープとかも、今となってはオーパーツ一歩手前ですよね。

ちなみにカセットテープに0と1に相当する音を録音して記録し、それをパソコンに読み込ませる事でプログラムをリードするという代物を使っていました。
FAXの電話回線の音を聞いた事がある人はわかるかもしれません。あんな感じの音です。

なお、今も高密度化はされて現代的にはなっていますが、バックアップ用ストレージとしてはあるところにはあります。磁気テープ。

時代がちょっと進むとフロッピーディスクが一般的になってきますが、それは80年代後半~90年代に入ってからのような気がします。

これまた余談ですが、ファミコンのディスクシステム(ファミリーコンピュータ ディスクシステム)はフロッピーじゃないですよ。
もうちょっと簡単な機構で作られてるものです。

그런 무렵의 프로그래밍 환경은…

そんな頃の個人でやるレベルでのプログラミング環境は、あまりに選択肢が狭すぎて2行で書けてしまいます。そう。2択。

  • BASICインタプリタ環境
  • マシン語(だいたいBASICでメモリにバイナリコードを直接書いてメモリ転送して実行。いわゆるDATA文)

コンパイラなんて高級なものが庶民の手元に降りてくるまでにはもう少し時間がかかるわけです。

また、最初に80年代プログラミング雑誌の話をしましたが、なぜそういったものが流行っていたかというと、以下のような要因があります。

  • 個人持ちできるストレージデバイスなんてものはほぼなかった(カセットテープに録音するケースは例外としてあったけど)
  • マシンのメモリがとにかく少なかった(メインメモリ32kとか64kとかザラ)
  • 色々貧弱だったのが逆にいい面もあって、プログラムは基本的に雑誌の印刷で提供され、真面目なパソコン少年はそのコードを打ってプログラムを覚えた(という体でゲームを遊んでいた。普通にそのレベルでパソコンの限界に挑戦するようなゲームが遊べてしまった)

なお、コンパイラなんて高級言語みのあふれるものが降りてきた後も、プログラミング環境は次の3択だったような覚えがあります。

  • BASICインタプリタ環境
  • 高級言語でコンパイルしてバイナリ実行(ただしコンパイラは別売)
  • マシン語

やっぱりパソコン本体があったら無償ではじめられたのはBASIC→マシン語 なのでした。

(なお、私がCコンパイラに初めて触れたのは、大学入ってからです… オープンソースコンパイラみたいなものも、まだ一般的ではなかったので。)

그런 시대가 갑자기 바뀔 때는 단번에 바뀌는 것입니다.

また、コンパイラに任せると当時はコンパイラも性能が悪く、生成バイナリコードが最適な状態からは程遠い出力になることも多かったようで、当時の事を知ってる人と話したりした分には「基本的にはCで書いて、最悪困ったらそこだけアセンブリで書き直したらめちゃ早くなったわ!ガハハ!」みたいな人がプロの世界ではたまに観測されていました。

加えてそういったアセンブリ書き直しおじさん(仮称)は結構な頻度で「儂がフルアセンブリで書いたほうが5倍は早い… フォフォフォ…」みたいな事を言っていたのです。

ですが、このアセンブリ書き直しおじさん(仮称)は2000年ぐらいを境にばったり観測されなくなったのでした。(元アセンブリ書き直しおじさんが普通に開発するようになった という方が正しいかもしれない。)

2000년을 넘었을 때 무슨 일이 일어났는가?

いくつか要因はあります。情報処理産業全体で見るとやっぱりシステム開発関連のコストが高いような気がするので、そこに重心をおいて考えてみましょう。

・Javaがサーバサイド言語としての地位を得た関係でC関連の言語で業務システムを書くケースが激減した
・Microsoftも.netFrameworkを出してきて(Ver1.0が2002年ですね。)VisualStudioで業務システム書いてた人たちも基本的に.netFrameworkに移行していった(ので基本的にはCLR環境に向けたアプリを書くようになった)

なお、ゲームや組み込み系はまだその頃は仕様制約が厳しく、その後しばらくはC言語系の環境が残っていたそうなのですが、そちらも次第に減っていきましたね。

また、コンパイラも計算機リソースが以前とは比べ物にならないレベルで使えるようになった事もあってか、だいぶ賢くなりましたし、並列処理は人が設計して捌くにはだいぶん辛いのでそれを踏まえた言語、環境なども多く出てきていますね。

加えて、プログラムの保守性や技術的負債についての見地も飛躍的に変化したのはここ10年ぐらいでしょう。本筋とは外れますが、非機能要求グレードなどについてもそうですね。昔は言われなかった論点についても問われるようになってきたのは大きな変化だなと感じます。

色々と要因を雑多に書きましたが、めちゃくちゃ簡潔に絞ると以下の点に集約されると思います。

開発の時に特殊な事をやってコストをかけるより、維持管理などを見据えたトータルコストにバランスを置くほうがコスト配分として適切になった

そう。アセンブリ書き直しおじさん(仮称)は非常に属人的なハイパースキルなので、その人がいなくなると保守が一気に辛くなるんですよね…。

비슷한 이야기를 다른 각도로 (차)

ちょっと話は変わりますが、別の角度からも同種の課題について見てみましょう。

車の免許を取られている方は多いと思いますが、30代以上の方って免許を取られた時ってMTも含めた形での免許を取りませんでしたか?(最近の方はAT限定も多いと思います。)

MTを含めた免許を取るほうが良いと周囲にいわれ、そうされた方が多いと思いますが、理由は次の内容に集約されると思います。

「会社の社用車はMTの方が燃費が良い為、MTしか無い可能性があるのでMTで免許取っておきましょう。」

2000年ぐらいまでは確かにそうでした。今はどうでしょうか?

ハイブリッド車が出てきて、状況は一変してしまっていますね…。かくいう私もMTで車の免許を取りましたがそのあとMTを運転する羽目になったのは生涯1度きりです。そんなものですね。

그런데 현대의 개발 환경에 눈을 돌릴까요…

ここから先は人によっては闇を背負ってしまうかもしれません。すまぬな…

프레임 워크 세계

フレームワーク界隈はなんか大きく次の3流派に分かれる気がしています。

  • めちゃくちゃ変化しつつ生きていこうな!系のFW(RoRとか)
  • 従来の互換性を死守してパワープレイで押し通る系のFW(.netFrameworkとか)
  • そっと舞台袖に消えるFW

でも設計思想を伝達するコストとか考えたら、もう素組みでNoフレームワークで開発・・・はすべきじゃないように思いますね(勉強のために自分で組んでみるとかなら良いとは思うのですが、仕事ではやんないほうがベターかなと。)

자바 스크립트 세계

変化が激しすぎて栄枯盛衰が激しいですね。

私はフロントエンドの民ではないので、jQueryがもてはやされてその後今はちやほやされなくなっている印象は受けているのですが… 今は何がいいんでしょうか。

なお私も10年前ですら、フロントもバックも全部JavaScriptで書いちゃおうなんて時代が来るとは正直想像はしてませんでしたね…

(初めに触ることになったのは2010年ぐらいにやったクラシックASPの改修案件だったかなぁ… 確か。)

데이터베이스 경계

個人的にはDBへのアクセスはSQL直書き派とORマッパー派に二分されるような気がしています。

私個人としてはSQL直書き派閥なんですが、どこかで前述のような大地殻変動が起きて、「SQL直書きなんて老害!はよ引退しろ!」と言われる未来がすぐそこまで迫っている気はしなくもないです。

((((;゚Д゚))))ガクガクブルブル

여담

そういえば2005年頃に1本1億ぐらいしちゃうAlphaのサーバを仕事でぶん回してた事があるんですが、CPUが16パラ、メインメモリ128Gだったんですよね。

確か1ノードでCPU4パラ、メインメモリ32Gの4ノード構成でした。

今だとそれぐらいのスペックなら個人PCで買えちゃうんですよね。すごい時代になったものです。(実際、この記事を書いてる私のPCが3年前に買って2コアHT有りのメモリ32Gなので…)

そういえば、当時の1プロセスで10Gぐらいメモリ食ってましたね…。

10年ぐらい経つと例えばこれぐらい、計算機リソースの変遷にインパクトがあるんですよね。

「10年でだいたい1000倍」

ここテストにでますよ!覚えておきましょう。(笑)

하나 하나 여담

ある技術分野で起きたブレークスルーは、他の技術分野でも形を変えて起きるケースがあります。(前述の車の件とかアセンブリ書き直しおじさん(仮称)の件とか)

たまにはIT以外に目を向ける事で、新たなヒントがあるかもしれませんね。

昨今、M1チップを載せたMACが恐ろしいスピードを叩き出して話題になっていますが、ノイズ対策の観点やデータ通信の速度は光の速度を超えられない、などの観点から高周波電子回路のノイズ対策を生業にしていた父はよく「おそらく辛くなって最終的には全部ワンチップに載りだすと思うよ…」って言ってました。

(ちなみに興味があれば、80年代マイコンの基盤のイメージ、90年代のPCの基盤イメージ、00年代、10年代、最近のマザーボードのCPUとメモリ位置のレイアウトなどを見てみるといいでしょう。どんどんCPUとメモリの物理的な距離が近づいているはずですよ。)

今年は、普通のノイマン型コンピューターの最後の進化が始まった…といえる年なのかもしれませんね。(笑)

ただ、コンピューティングの長い歴史を紐解いた時によく出てくるブレークスルーパターンであるやつだと、シングルでの処理能力が辛くなるとパラレルに処理を捌いてなんとかしちゃう系ソリューションが幅を利かせてきた歴史(シリアル転送→パラレル転送、シングルコアCPU→パラレルコアCPU)が結構発生率が高いので、そういう事を考えるとワンチップコンピューターが今度は数珠つなぎになって強大な計算機リソースを実現しだす未来もあるのかもしれません。そうして歴史は繰り返すのです。たぶん。

そしてそんな時代になるとたぶんパソコンめっっっっちゃ熱くなると思います。(もしくは放熱がちゃんとできてないとすぐスピードでなくなるみたいな奴。個人的には熱対策の観点で、全部1チップになった上、1チップだと1点に熱が集中しちゃうので、チップが口の字型の構造になって、チップの真ん中を通るように熱伝導体が巡回する 要はオイルヒーターみたいな思想に収斂していくんじゃないかなと想像していますが… ならんかな。)

どうなるんでしょうね。楽しみですね。

さすがにそれまでに量子コンピューターが実用フェーズに来るとは思うのですが。

결론

見た人で何か思いついたらコメントとかで教えて頂けると…。

좋은 웹페이지 즐겨찾기