※この投稿は旧サイトからそのまま記事を移行したものであり、内容は作成当時のままです。ご容赦ください。
2000.10.18
目指せサンデープログラマー
たいそうなお題を掲げましたが、実際のところ役に立つプログラムなどほとんど作っていない状態ですので、中身のない理屈っぽい言い訳ばかり書いてみたいと思います。
コンピュータープログラミングとの出会い
コンピューター遍歴のなかでも述べましたが、学生時代に「情報処理」という科目でコンピューターに触れたのがそもそものきっかけだと思います。が、それまでにも一度だけ「パソコン」なるものを垣間見たことがありました。
学校に入る前、もう20年近く昔の話になりますが(多分中学生のころ)、地元某村での「産業祭」というイベント(いまでも行われています)で、村内の電気屋さんが展示していたSHARPのパソコン(おそらくMZの8ビットマシン。プログラムはカセットテープで動かしていた)で、「ハノイの塔」のゲームをしたような記憶があります。何せカセットテープだから巻き戻したり送ったりする操作に時間がかかったような気がします。その場所ではじめて触れたパソコンに魅せられ、「MSXこうてくれー」とせがんだけれど無視されてしまった悲しい(?)記憶が思い出されます。
話は元に戻って、いままでかじったことのあるプログラム言語について触れてみましょう。
FORTRAN
平成13年度春からの新情報処理技術者試験では、選択プログラム言語から消えてしまう運命にあるFORTRAN。かのIBMにより科学技術計算用に開発された言語です。学生当時はパソコンではFORTRANは扱えず、パンチカード(知ってる?)に「がしがし」とプログラムを打ち込み(穿孔といったほうが適当)、カードリーダーから一気に読み込ませ、大型コンピュータで実行させた記憶があります。なにせプログラム言語に触れたのが初めてなもので、わけもわからず「/*/&」とか「EXEC_FORTRAN」のコマンドとプログラム本体、データを打ち込んでいました。初心者の我々が作るプログラムは、教科書に載ってある「和、差、商、積」のような基本中の基本からはじめましたから、パンチカードの厚さ(枚数)も知れたものでしたが、上級生が卒業研究などで使っているカードの量は恐ろしいくらいのものがありました。またひどいことにパンチカード穿孔機ではカードの上にプログラムコードが同時にタイプされるものとそうでないものとがあり、たまたま表示されないものを使っているときなど、うっかりカードを落として順番がわからなくなったら大変でした。分厚いカードを輪ゴムで束ねていたような人は管理がさぞかし大変だったことと思います。
そんな時代もいつか過ぎ、電算機が新型のものに入れ替わりました。パンチカードは不要、それぞれの端末からプログラムコードを編集し、データを作り、実行できる環境が整いました。今となっては懐かしい、14インチ程度のディスプレイと映し出されるオレンジ色の文 字。ログオン、ログオフ。おそらく平成12年現在では使っていないだろうな。。そんなFORTRANとラインプリンタで「モナリザ」の絵を描くような人もいたから驚きです。どーやって描いたのだろう?そんなFORTRANもいまではすっかり忘れてしまいました。時代からも忘れ去られようとしてる?・・・。
作ったプログラム(教科書にあったもの)
- 加減乗除
- フィナボッチ数列
- 二分法
- ニュートン法
- 数値積分(シンプソン式)
など(なんだか情報処理技術者試験の問題みたい)
BASIC
学生時代に、パソコンといえばベーシック。MS-DOSもそんなに普及していなかったため、N88BASICなどをOSとしてパソコンを起動し、つたないプログラムを作っては喜んでいました。BASICでも画面設計や入出力処理を上手に作りこめばそれなりのプログラムができたようです(実際作っていた人もいるし、出回っていたゲームなんかは当然BASICだった)が、そこまで頭も手も回らないため、入力は「INPUT」もしくは「READ」、出力は「PRINT」か「SAVE」しか使いませんでした。文法も「FOR・・・NEXT」「IF THEN GOTO」のオンパレード。ようは欲しい計算結果が得られればいいんじゃ!先生には「まだまだ素人プログラムの域を脱していない」と温かい励ましのお言葉をいただきながら、手計算では面倒な計算(たとえば、限界状態設計法によるコンクリート部材の設計)を行っていました。
パソコンと共に忘れてはいけないのがポケコン。当時ポケコンが大流行。授業に必要だからと買わされましたのがSHARPのPC-1475です。当時としては先端を行く倍精度計算機能付き8KB(8MBではない!)メモリ内蔵、32桁2行表示可能画面。これでくだらないプログラムを作って喜んでいました(BEEPとループでだんだん音が高くなるもの。次第にバージョンアップして最後には「波動砲発射!!」でミサイルがとんでいき爆発する表示もするようになっていた。でも単純なプログラムだった・・)。いまポケコンなんて売っているのかな?もちろんまじめなプログラムを作っている人もいました。設計製図の課題で逆T型擁壁の安定計算を行うもの。でもランキン土圧。
さすがにMS-DOSが普及し、アプリケーションソフトが普及してくるとBASICでプログラムを作るのは実用的でなくなってきました。
作ったプログラム
- コンクリート断面設計
- 矩形断面水路の不等流計算
- マニング式による水路断面計算
- 合理式流出計算
- クーロン土圧計算
などです。ちなみに、学校でも電気工学科の人たちは「c」と「COBOL」が情報処理の学習項目にあったようです。
C言語
某村役場に就職してから、パソコンが普及しつつある現実(といっても、庁内で3台)から遅れるべからずと自費でパソコンを購入し、ついでにcコンパイラ(MS-QuickC)まで買ってしまいました。これからはcでプログラムの一つや二つこしらえて・・・と思って取り掛かったものの、難しい!!
エディタ・デバッガ・リンカ ? ソースコードをコンパイルすらまともにできない!!GOTO文は使わないほうがいい(なら用意するな)、main{}が親で、子供の関数を定義して呼び出して使う・・・。#include、マクロ、構造体、ポーランド表記、データ型宣言、構造体、ポインタ(ポインタは無理に使わなくてもいいらしい)。printfで画面に表示はできてもfprintfができない。。。。
結局、断念しました。というより、このころはプログラム言語をより汎用性のあるものに変えたから、おそらくそれはそれは夢のような仕組みがあり簡単にすごいプログラムが作れるのだろうと思い込んでいたのですが、逆にユーザーフレンドリーな設計をしようと思えば思うほど、より複雑な根気の要る作業を積み上げてくる必要があるという現実に打ちのめされ、あえなく挫折してしまいました(サンプルでついていたコードを見て、こりゃ駄目だ理解できんと思った)。でも、BASIC的スパゲッティプログラムよりcの簡潔な構造化モジュール化された表記が重要であることは今後明らかになってきます。
作ったプログラム
- Hello!!world(笑)
- ニュートン法
ほか2,3本「いずれも非常に初歩的!」のみ(^^;)
Lotus-123とマクロ
cで挫折したもう一つの理由が、わざわざプログラム言語を使わなくても必要な計算ができるソフトがそこにあったからです。それがLotus123です。初めて触ったのはMS-DOS版123-R23Jです。これはすごいと思いました。四則演算、関数、データベース、グラフ(今考えるといまいち)が用意され、セルに数値や式を入れるだけで計算してくれる。簡易プログラム言語と言われたわけもわかるような気がしました。おまけにマクロで自動化できる。一番重宝したのが、印刷処理です。あの煩雑な印刷設定を、キーボード記録で覚えてくれる。また、{}のマクロ命令で繰り返し処理や分岐もできる。すっかり気に入ってしまいました。OSがWindowsに変わり、表計算ソフトの標準がEXCELに取って代わられてもしばらくは123R5Jを使っていました。唯一の弱点は、マクロをシート内に記述するため、コード管理が面倒(さがす)なのと、間違えて消す恐れがあったことです。そしてEXCELのVBAにはかなわなかった。
作ったプログラム(ワークシート)
- 土量計算表
- 土量重心計算表
- 試行クサビ土圧計算
など
LotusScript
123もVer97になると、LotusScriptという、VisualBasicのような言語が標準となりましたが、次のような理由で123のLotusScriptでのマクロ開発はあまり行いませんでした。
- 今ひとつわかりにくかったこと
- cellオブジェクトの扱いがエクセルほど柔軟でない
- 開発環境が貧弱
- 解説本が非常に少ない
でも、今後Notesで使うことが考えられます(いっそJavaか?)。
作った(改造した)プログラム(ワークシート)
- 会計検査調書
- 災害報告
すぐにEXCELに移行したため少ないです。
Visual Basic for Applications
俗に言うVBAです。私は主に(というかほとんど)EXCELで使っています。というのも、123時代に作ったマクロを書き直すことが多かったこと、EXCELが汎用的に使えるアプリであること、EXCELのVBAがわかりやすかったことなどからです。VBAはほとんどのマイクロソフト製品で使えますが、WORDでマクロを使う意味が見えず、またACCESSもバリバリに使いこなせていないので、マクロ(VBA)の出番はまだありません。今のところ、EXCEL+VBAで間に合っています。
VBAのいいところ
- 開発環境が親切
- 解説書が多い
- わかりやすい
- アプリの機能を使える
といったところでしょうか。マクロウイルスは怖いけど・・・。あとフォームを作りすぎるとファイルサイズがどんどん肥大化するのが悩みです。
作ったプログラムとワークシート
- 土量計算表
- 工事検査命令から合格通知書
- 工事施工伺
- 用地買収物件補償設計書
など、多数。
Visual Basic
出たばかりのときは「オモチャ」といわれたVBですが、どっこいかなりの機能で業務に使えるアプリが開発できます。役場で使われているアプリの多くもVBで作られたものです。私もVB6のラーニングエディションを購入して挑戦していますが、まだものにできていません。
なぜならば、
- やっぱり一つ一つのステップを記述するのは結構ややこしい
- ラーニングエディションはhelpが不親切。マニュアルもない。
- 今のところEXCEL+VBAでまにあっている
でも、そのうちこんなプログラムが作れたらいいなと思っています。
- 変位法による2次元構造解析(できれば図化も)
- 不等流計算
- 円弧すべり計算
入力に表形式を多用するものは、EXCELとの連携を考えたほうが楽かも知れません。
じつは今年の4月ごろ、不静定構造物(ラーメン)を手計算で解いたのですが、ものすごく時間がかかりました。さすがに連立方程式を解くのはエクセルの行列計算機能を使いましたが、行列式を作るのに非常に時間がかかりました。また、間違いの元です。こんなの解けるプログラムがあれば便利なのにと痛切に感じました・・・が、のど元過ぎれば熱さを忘れてしまった(もう多分解くことはないだろう?)。そのうち何とかしたいものです。
作ったプログラム
- まだございません!!
コントロールの使い方(のみ)を2つ。そんなものプログラムとはいえない・・・。
JavaScript
インターネット(WEB)の世界で主に使われています。私のホームページでも多少使っています。あまり複雑な処理はできないらしいですが、いろんなホームページ(のソースコード)を見ていると、結構長いコードがかかれていたりします(でもブラウザの種類判断の部分が結構多かったりする)。いまどきのホームページ作成ソフト(たとえば、IBMホームページビルダーなど)は、Scriptを意識することなく、インタラクティブな効果を自動的にScriptを生成して作ってくれます。これは便利です。でもコマンドと演算子と簡単な文法くらいは理解しておきたいですね(と、ろくに知りもしないのにえらそうなことを言う私)。
参考書を見ながら作ったプログラム
- タイトルメッセージ
- 時刻表示
- 自動年齢計算
など
Lotus Notes/DominoR5 Designer
プログラム言語ではありませんが、これは便利です。ちょっと癖がありますが、プログラムコードを書くことなしにNotes/Dominoのデータベースが作れます。
- 簡易命令
- 式言語
- LotusScript
- JavaScript
- Java
私が主に使うのは式言語です。この前初めてDominoでLotusScriptを使いました。宣言部が面倒です。非常に短いコードでもなかなかまともに動いてくれなかった。マニュアルを読むのにも時間がかかるし、わかりやすい解説書はないし・・・・。まあ、複雑な処理をしなければ式言語でことは足りるみたいです。
作ったデータベース
- 災害報告
- 窓口当番
- 旅費の計算
- 発かん来かん簿
など。
今後やってみたい言語
- PerlでCGI--Webを活用するために
- も一度「C」--正統派プログラミングのために
- さらには「C++」--オブジェクト指向を極める?
- 本命は「Java」かな
お仕事に役立て、頭の体操をしながら、情報化の推進を行う。一石三鳥?無理せずにのんびりとやっていきたいと思います。とりあえずVBをもう少し勉強しましょう。せっかく買ったのに稼働率非常に悪いです(Win2000が「消していいか」と聞いてきます)。
- 2022年現在、プログラムを組む作業は全くやってませんね・・。
- 能力、意欲の問題か。
- 以前作ったエクセルVBAのメンテぐらいですか。
- 時代はPython、swiftとか、Ruby、Rustなど、どんどん新しいものが出て進んでいます。おじさんは眺めるだけで十分です(^_^;)。
コメント