ロートル技術屋の日記

60歳過ぎの手習い VB.netでのプログラミング1

手習いのきっかけ
ネット上に公開されているデータの中にサイトのビュワーでは1枚の画像として表示されているのに実際には分割されたデータで保存されているものがあります。
CromeやFirefoxなどのブラウザを使えばアドオン(追加機能)で画像データを簡単にダウンロードすることができます。
しかし、分割された画像をつなぎ合わせるのは手間がかかります。
そこで分割されている画像をネットから読み込んで自動的に結合された画像を作るプログラムを作ってみようと考えました。

開発言語に何を使うか(年寄りの思い出話です)
私は理系の学校に行ったので学生時代にプログラミングの授業があり、就職してからもデータ収集、製品に付属させるソフトなどでプログラムを作った経験があります。

最初に習ったのはFORTRANという言語です。
これは科学計算用の言語として当時、広く普及していた言語です。
パソコンが無い時代で計算機センターに設置されていた富士通製のFACOM230-35という中型計算機で実行させていました。
仕様を調べようと検索していたところ、コンピュータ博物館というサイトを見つけました。

情報処理学会が運営しているサイトです。
FACOM230-35はこちらです。


磁気テープ装置の青色が印象的でした。
メインメモリは64kByteで磁気テープ装置、ディスクパック装置、コンソール、パンチカードリーダー、プリンタのセットでした。
これとは別にパンチカードに穴を開けるキーボードの付いたパンチカードライターがありました。
メインメモリの桁が今のパソコンやスマホと比べて6桁違うのが驚きです。
当時、1,000万円以上していたシステムと思われ、価格も3桁近く違うことになります。
CPUは16bit演算になっていました。
最近のWindowsで動いているPCのほとんどが64bitCPUで動いていますので4倍違います。
合わせると価格性能比で9桁近い違いがあり時代の変化を感じます。
50年足らずの短期間でこんなに性能が大きく変化したものは他には無いのではないでしょうか。
現在のコンピュータではディスプレイに表示するのが当たり前ですが、演算結果はすべてプリンターに印字して確認するスタイルでした。
(コンソールは制御用でした)

プログラムはパンチカードという紙のカードに穴を開けて文字を表現するものが使われていました。
「パンチカード プログラミング」で検索すると色々出てきます。
1枚のカードがプログラムの1行に相当し80文字まで記録できました。
80文字を超える場合は続きであることを識別する欄に続き記号を入れ、次のカードに続きを記述することで対処できました。
打ち間違えるとそのカードは使えなくなります。
パンチカードライターにコピー機能があったので間違えた手前までコピーして打ち直すのですが、うっかりしているとコピーしすぎて間違えたカードを複製してしまうということが何度もありました。
1枚1行ですのでプログラム通りにカードを並べてカードリーダーで読ませます。
読み取るときはATMでお札を読み取るようなバババババという音がしました。
カードの順番を間違えると当然まともに動きません。
短いプログラムの場合は輪ゴムなどでまとめて順番が変わらないようにしていました。
長いプログラムはカードの枚数が多くなるので箱に入れて持ち歩いていました。
うっかり落としてしまおうものならさあ大変。
プログラムリストが印刷してあればそれを見ながら並べ直せば良いのですが、印刷していないとなるとカードを眺めながら順番を思い出さなければいけなくなります。
大変な作業でした。

時代は変わって1970年代後半になるといわゆるパソコンが登場し、プログラミング言語はBASICが主流となりました。
BASICの記述はFORTRANとほぼ同じようになっていたためFORTRANを使っていた人はすぐに使えるようになりました。
ただ、この頃のBASICにはサブルーチンサブプログラムが使えないという欠点がありました。
サブルーチンサブプログラムは独立したプログラムとしてそのプログラム内のみで使う変数(ローカル変数)は他のプログラムの影響を受けずにプログラムできる仕組みです。
メインのプログラムで使っている変数と同じ名前の変数であってもサブプログラムの中だけで使う場合には別のものと扱われるのでプログラムしやすくなります。
FORTRANではサブルーチンサブプログラムが使えました。
この頃のBASICはサブルーチンは使えましたがローカル変数の概念がないため、変数にうっかり同じ名前を使ってしまって思わぬところで書き換わってしまい正常な結果が得られなくなることが多々ありました。

今ではパソコンメーカーになってしまいましたが昔は計測器がメインだったHP社の計測用パソコン(今ならワークステーションクラス)に搭載されていたHP-BASICはサブルーチンサブプログラムが使えたのでプログラミングしやすかったのを覚えています。

その後、MicrosoftのQuick BasicやMicrosoft Baisc 6.0でサブルーチンサブプログラムが使えるようになったのでこちらが主流となり、Microsoft Visual Basic 6(通称VB6)、Microsoft Visual Basic .Net(通称VB.net)に進化してきました。

開発言語にはCPUが実際に動く命令にすべて変換してから実行するコンパイラと呼ばれるものとプログラムを1行ずつ読み込んで変換しながら実行するインタープリタと呼ばれるものがあります。
コンパイラの方が実行速度が速くなります。インタープリタはメモリの使用量が少ない代わりに実行速度が遅くなります。
当時のBASICはインタープリタででしたので実行速度はかなり遅かったです。(現在はほとんどがコンパイラになっています)

FORTAN、BASIC以外の言語としてCOBOL(事務計算用)、PASCAL、Delphi、C、C++、ちょっと変わった言語として逆ポーランド記法を採用したFOURTHなどがありました。(アセンブラもありますがハード依存なので一緒には語れませんね。)
C言語はメモリに直接アクセス可能で動作速度が速いということで1990年代になるとパソコン用のプログラミング言語としても普及しました。
元々はIBM内の研究者向けに開発された言語だったそうです。
それが大型計算機で使われていたOSのUNIXを記述するのに使われるようになりUNIX+C言語のプログラムが普及し、パソコンにまで普及したそうです。
ただ、欠点としてはメモリに直接アクセス可能な分、間違ったプログラミングをした場合の影響が大きいこと(下手をするとハードまで壊しかねない)と記号を使って表現するので慣れるまで分かりにくいという点がありました。
現在は開発環境(IDE)側で監視してくれるので間違ったプログラミングをすることが少なくなっています。
C言語が普及するにつれ最初に習うプログラミング言語としてC言語が選ばれるようになりました。
FORTARNやBASICの時代ではなくなっています。

最近はC言語の派生であるMicrosoftのC#でプログラミングする人が多いようです。
個人であれば無償で使えることとネット上に情報が多いからというのが理由のようです。
(MicrosoftのVB.net、C++も無償で使えます)

最近流行の機械学習やArudino/Rasbery-Pi等の組み込みマイコンではPythonが使われることが多いようです。
BASIC系はあまり流行っていないようですが、Microsoftの表計算ソフトExcelのマクロはVisual Basicの派生であるVBAが使われています。
私の友人はシステムエンジニアをしており、VBAのプログラミングなどもやっています。
友人曰く、「ExcelはVBAで書かれており、VBAが使えればExcelの機能は何でもマクロで操作できる」そうです。
ですのでBASICも侮れないと思っています。

結局、VB.netを選択しました
私はFORTRAN、BASIC、HP-BASIC、Quick BASIC、VB6とC言語を少々経験しています。
(最近では全く違う系統のLab-Viewという計測用の言語でも少しプログラミングしています。)

過去の経験からするとBASIC系の方が理解できそうなのでVB.netを使うことにしました。
VB.netを使うことにしたもう一つの理由は「VB.netとC#で、できることがあまり変わらない」ということとExcelのVBAとほとんど同じ記述ができることです。
C#よあまり変わらないというのは、色々わからないプログラミング方法をネットで検索してみて、多くの方がVB.netとC#の両方のプログラム例を載せられていて、関数等の呼び出し方法がほとんど同じような表現になっていることが解ったからです。
VB.netからC#への移行は難しくなさそうですのでいずれC#も使ってみようと思っています。
(VB.netは開発終了という話があるようです)

ということでVB.netでのプログラミングでつまずいた話などを紹介してゆきたいと思います。

ランキングに参加中。クリックして応援お願いします!

名前:
コメント:

※文字化け等の原因になりますので顔文字の投稿はお控えください。

コメント利用規約に同意の上コメント投稿を行ってください。

 

※ブログ作成者から承認されるまでコメントは反映されません。

  • Xでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

最新の画像もっと見る

最近の「プログラミング」カテゴリーもっと見る

最近の記事
バックナンバー
人気記事