XMLとVisual Basic

今仕事で使うIDE統合開発環境)は何かというとoXygen XML Editorです.エディタですが、XSLTスタイルシートをコーディングして、IDE上からANTを起動してFormatterでPDFをつくるところまで一発でできてしまいます.で同業の女房は何を使うかと言えばC++なのでVisual Studioです.会社では入社するとVisual Studioのライセンスを買ってくれます.でも私は仕事がXMLにシフトするともうほとんどVisual Studioを使う機会は使わなくなりました.という訳でここ10年私にはVisual Studioのライセンスを買ってくれることはなくなりました.(最近になってお客様のソリューションで必要なことになってVisual Studio 2010は購入させてもらえました.)

でもその昔のことを考えると、仕事では一貫してMicrosoftの製品を使っていました.実は私はこの業界に入った頃はいわゆるホスト系の仕事がほとんどで言語はCOBOLが多かったです.でもバブルがはじけるころ自営になって、最初にやった仕事がQuick Basicの仕事でした.Quick Basic 4.5だったと思うのですが当時のPC-9800で業務アプリを作りました.たまたま取引先がBasic屋さんだったのですが、本当に業務に使うのではQuick Basicではダメでもっと高いMicrosoft Basic Professional Development Systemというのを買って使いました.まだDOSの時代ですね.PC-9800のVRAMの直書きをやって画面を作るようなプログラムでした.

Windows3.1が出て、Basicも進化してVisual Basicができたのは1991年のことです.当時Windowsのプログラムを簡単に作れるということで、日本にもVisual Basicの英語版が紹介されたのを覚えています.

ですからVisual Basicはもう20年以上の歴史を持っているのですね.MSのVisual Basic Teamのブログに書かれています.


ここには様々なコメントが寄せられていますが、私と同じようにMicrosoftのQuick Basicの時代からやっていた人も世界にはいっぱいいるようです.

ちなみに昔では考えられなかったのですがVisual Studioは様々な機能制限があるものの、無償のバージョンを使える時代になりました.製品版だとProfessional版で5万円以上しちゃうので時代は変わったと思います.会社ではVisual Studio 2010がデスクトップにいれてあるのですが、個人的にちゃんとしたVisual Studio 2012が欲しくて買ってしまいました.英語版なんですが、eBayのオークションで1万円以下で落としました.ちゃんと使えてます.

ところでいろいろな論評を読んだりしていると、Visual Studioで使える言語C++、C#VBと並べると、VBというのは非常にプロ的じゃないような位置である見方をされているようです.つまりあからさまには言わないけど、C++ > C# > VB ということです.下手をするとVBなんか使っている人はプログラマじゃないように見下されるという話も聞きます.

自分が使ってきた言語だから擁護するわけではないのですが、VBは決してC#に引けをとるような言語ではないと思います.OOP(オブジェクト オリエンテッド プログラミング)でも、バッチリです.ちょっと前に結構複雑なC#で書かれたオープンソースのプログラムをVBに書き直すことをやってみたことがありますが決してC#に引けをとりません.

あと最近読んだBeginning XMLという本で、XMLをどのようにプログラミング言語で処理できるかという紹介があります.

Beginning XML

その中でXMLリテラルというのがあって、これはVisual StudioではVBしかできない機能として紹介されています.

p.474

"VB.NET has two features that are not supported so far in either C# or any other .NET language. These are XML Literals and Axis Properties. XML Literals includes new ways of creating XML documents and easier ways of managing namespaces. Axis Properties means you can navigate through a document and retrieve elements, attributes, and their values with succinct syntax."

VBに出来てC#ではできないのですから痛快です.例えばこんな具合です.

Dim musicLibrary
<?xml version="1.0" encoding="utf-8"?>
<musicLibrary>
  <cd id="1">
    <title>Parallel Lines</title>
    <year>2001</year>
    <artist>Blondie</artist>
    <genre>New Wave</genre>
  </cd>
  <!-- rest of cd elements -->
</musicLibrary>

なんとXML宣言まで入っちゃっています.こうすると変数musicLibraryは、System.Xml.Linq.XDocument型になります.もしXML宣言をとれば、System.Xml.Linq.XElement型になります.

たぶんXMLリテラルが書けるのは、現在のプログラミング言語ではVBScalaくらいじゃないでしょうか?

プログラミング言語XMLをどう処理できるかというのは面白い課題だと思います.また勉強して書きたいと思います.