好きではないプログラミング言語の話

OSやドライバ、組込み領域など、半世紀以上C言語に代わる高級言語が出てきていない。
近年Rustの話題が急増している。すでに一部置き換わっているものもあるらしい、Linuxも6.xからのRustへの対応をリーナスさんも言及していた。

近いうちに言語焼き直し需要は爆発するかもしれないかもと考えていたが、
まだ、カーネルや最下層のドライバたちを書き換えに至るほど熟成されていないようにも感じる。

オブジェクト思考云々が流行り始めたころにC言語のスーパーセットとして登場したC++に皆が移行するのではないかと思えば、書かれたコードは言語自体の無軌道感をうまく制御出来ず混沌になりやすいなどデメリットが目立ち、結局メジャーになり切れなかった。
RustがどれぐらいC言語の領域に浸潤していくのか、果たして話題先行、竜頭蛇尾に終わるのか、今後が楽しみである

本題に入る。
(わたくしの完全な主観です。先に謝っておきます。ごめんなさい。)

pythonを筆頭に、コンピュータやメモリを意識しない軽量プログラミング言語が花盛りである。
実行環境が手に入りやすく、ちょっと勉強や動作を試してみたいという要望にうってつけである。
軽量プログラミング言語は少しばかり動作が重たいという欠点があるのだが、PCもクラウド環境も十分過ぎるスペックがあるので気にならない。
コードの抽象度が非常に高いので、ちゃんとしたプロが記述したものはとても分かりやすくスッキリしたものに仕上げられる。

伝統的にプログラミング学習でとっつきやすいものとして、VisualBasic(VB)という言語がある。
Basicはマイクロソフト社の起源となるソフトウェア・インタプリタでもあり、その後も"Basic"の名を持つプログラミング言語をリリースし続けている。
純粋なインタプリタから、コンパイルもできるようになり、オブジェクト指向も取り入れ、仕様を拡張しつつ今に至る。
VBAのように業務アプリケーション上のマクロとして使用できるものや、VBScriptのようにコマンド実行環境やWebアプリケーションの世界で使われる亜種もある。

スバリ、自分はVBが嫌いである。
ほぼ同じ機能を持っているC#はアレルギーなく接することができるのに、VBはどうもダメなのだ。
これは自分の技術、業務実績がC言語をベースに積み上げられたことに起因しているとは思う、

ちょっと違う理由もある。
VB6、VB.NETやASP.NET(Webフォーム)の古めのアプリの改造や焼き直しの案件が来たときは警戒するようにしている。
高い確率で、以下のような「やってはいけないこと」満載だったりするからだ。

  • フォームのイベント関数内にすべての処理が延々(数百行)と記載され、モジュール化や機能凝集、抽象化・構造化・オブジェクト指向設計などの概念がない。

  • グローバル変数が多く(というかそれしかない)、状態などの処理条件をまとめる概念がなく、条件判定には〇×フラグと数値判定条件が多数列挙されたものが多い。

  • ASP.NET Webフォームも、VBのフォームベースの概念を(まったく同じではないが)Webアプリ開発に持ち込んだもので、似たような問題がある。

  • コードがダメということは、ソフトウェアの仕様・設計もやはりダメダメ。焼き直ししてもやはりダメダメで仕様から見直しになってしまう。

  • などなど

どうも初心者が苦労しながら作ったと思わしき稚拙なものに出会うことが多い。それほど難しいことではないのに、やたらと難読コードになっている。設計思想も何もない。

以下のような経緯ではないかと推定している。

VBは、Windows 95/98/XP/NT/2000のGUIのアプリケーション開発に一番ハードルが低く取り組みやすい言語だった。
(実際マイクロソフト社も”ちょっとした”GUIアプリ作成目的にこの言語をリリースしたようだ。)
取り組みやすいが故にできることには制限があっても、見た目にこだわらないオフコン置き換えのような業務アプリのCRUD機能を作る程度であれば問題ない。
未経験者や初級レベルのプログラマでも、とりあえずVBを学習させアプリ開発業務に参加させれば工数計上できる。
結果、コードの構造や見た目に配慮できない状態のプログラマによる少し残念なコードのアプリが量産された。
レビューなどで矯正できそうなものだが、上位エンジニアもVBで書かれたコードの良いプラクティスなどもあまり持ち合わせていなかったことが推定される。

ちょっと恐ろしいのが、上記のようなVBプログラミングで”プログラマ”時代を過ごし、さっさと卒業して"SE"に昇格、その後さらに昇進。という方が結構いらっしゃるような気がすることである。

最近、軽量プログラミング言語どころかローコードだノーコードと沸いている。なんとなく、VBでの開発が盛んだった頃を思い出す。
ちょっと作ってみた的な軽量野良アプリがあふれる、ブラックボックス化したそれらのメンテナンスは一体だれがするのだろうか。

仕事が来てしまえば拒否はできない。
イヤイヤながらも、解読したり使ったりするのだが、嫌悪感があり、すぐに言語仕様もフレームワークの使い方も忘れてしまうのである。

この記事が気に入ったらサポートをしてみませんか?