APLNEWS2007年12月号

 

10月、11月とAPLNEWSを休刊いたしましたが、今後は重要なテーマが発生するときにのみ記事を書かせていただきます。(We did not publish APL News for October and November. From this time on, we will only write articles when very important events occur.)

 

― 去る10月後半にカナダ、モントリオールでACMSIGAPLAPLコンファレンスが2年ぶりで開催されました。1983年のAdin Falkoffから始まり、毎回APLの世界に多大な貢献をした個人にIverson Awardが与えられることが慣例でした。今回は意外にも個人ではなく団体すなわちIBMにその賞が与えられました。(This October, the 2007 international APL conference was held in Montreal, Canada. Begininng with Mr. Adin Falkoff in 1983, it has been a set event to give Iverson award to individuals who contributed to APL most significantly. This year, the award was given not to an individual but to IBM corporation.)

 

APLの創始者としてのDr. K.E.Iversonは2004年10月に他界され、昨年はAPLの生誕40周年の記念行事が行われました。しかしAPLの現状について、関係者みな大きな危機感を持っていて、今年9月にはAPLコンファレンスに先立ってその問題点と対策を協議する会議が米国で催されました。(Dr. K. E. Iverson as the inventor of APL passed away in October, 2004 and last year we celebrated the 40th anniversary of the birth of APL. However, all of us shared the sense of crisis as to the future of APL and a meeting was held amongst the key persons of APL in September in the.United States to discuss the problems.)

 

APLの開発とその普及は、過去40年余り常にIBMを中心として動いてきました。IBMが動かなければAPLの将来がないことは明白です。今回のIBMの受賞はここ20年ばかり低調であった、世間の関心に対して新しいAPLの動きにハイライトを当てるものでした。(Research and development of APL has been carried on with IBM as the center in the past 40 years. It is very clear that APL will have no future If IBM doesn’t move. The award to IBM highlighted the new development of APL by the hand of IBM, at the time when the world had shown a little too low attention to APL in recent years.)

 

IBMはこの間、Nancy WheelerおよびDavid Lievetag等、少人数ですが超優秀な技術者がAPL2を着実に発展させてきています。この事実を世間に伝え、この恩恵を世間にもたらせることが私の生涯の役目であると考えています。(In the mean time, IBM kept developing APL with extremely few, but super excellent people like Nancy Wheeler and David Liebtag. I consider it my life-time mission to answer to heir devotion, so that some day APL with win the position it deserves.)

 

そもそもAPLの言語仕様は当初よりほとんど変わっていません。Dr. Jim Brownを中心としたジェネラル・アレーの導入による言語仕様の拡張(=APL2)が生まれてからもすでに20年以上たっています。では何がこの間に変わったのでしょうか。これが一番われわれ着目しなければならないことだと思います。(APL language specification has not changed much since its’ birth. Over 20 years has passed after the last language extension was implemented as APL2 by the hand of people like Dr. Jim Brown. Then what has happened in the last 20 years ?. This is exactly what we should pay attention to.)

 

IBMは営利事業です。世の中に求められるものに敏感に対応してきています。アカデミックな研究対象からはとっくの昔に隔絶しています。ではIBMが少人数ながら執拗にこの製品の開発の手を休めなかった理由は何でしょうか。それは現代のように情報処理技術がめまぐるしく変化、発展する中で常に実用性を維持する努力の現れであると思います。(IBM is an organization to pursue due profit for investment. They have acted very acutely to  the requirements of the users. They have long abandoned APL as an object of academic research. What is the reason why IBM has spared even a few people to sustain new development of APL ?  I think it is because IBM wanted to keep APL current to the changes and advancement of IT technology of today.)       

 

ではどのような要求があって、どのような対応をしてきたかを現行システムであるWorkstation APL2 V2 (=稼働環境Windows,Unix,Linux)の変遷によってたどってみたいと思います。( I would like to describe how IBM has answered the requirements of the users, by the major features already implemented in the product after Workstation APL2 V2 was introduced.)

 

1.Runtime APL2:企業内APLユーザーの大半は与えられた開発済みAPLのワークスペースで業務を遂行しています。すなわち開発環境を必要としないユーザーに対しては、他言語と同じようにコンパイル済みの実行プログラムに相当するDLL化されたワークスペースで間に合います。したがってIBMはこれらのプログラムを実行するための環境を無償で配布できるようにしました。これはAdobe社がアクロバット・リーダーを無償で配布することと同じ方式であると思います。(Runtime APL2: Majority of APL users use only APL written application workspaces and do not write programs themselves. Such users will need only workspaces converted to DLL forms like compiled packages of other languages. Therefore IBM decided to make it free to distribute run-time APL. This will be analogous to Adobe Acrobat Reader.)

 

2.ネームスペース:APLを集団で使用する場合汎用的なツール関数類はできれば一元的に管理することが業務処理の標準化、資源の効率化上望ましいです。従来はこれらの関数をあらかじめ、又は業務プログラム実行時にアクティブ・ワークスペースにコピーして初めて使用できました。ネームスペースの概念は、複数のユーザーが同時にアクセスできるネームスペースと呼ばれるワークスペース外の領域(=ファイル)に保存し、関数やそのサブルーチン、使用される変数やファイルをワークスペースに読み込まないで、利用する画期的でダイナミックな仕組みです。(Name space: When APL is used by a group of people in a company, it will be desirable if the common program tools are maintained at a single location in an orderly manner, from the stand point of economy of computing resources and the maintenance of the integrity of the contents. Formerly, these programs are copied to individual users’ workspaces and tended to cause consistency problems, too. The concept of the namespace is to keep them all in files outside workspaces, so that users can share these program files by simultaneous accesses. The real contents, including sub-routines and other computing resources are not explicitly copied to individual users workspaces, but only the names are usable under the APL interpreter, which distinguishes different name spaces and name scopes.) . 

 

 

3.APLスレーブ・セッション:APLプログラム実行時に完全に従属したAPLセッションを新たに立ち上げる(­APL Calling APL)仕組みです。このために新たにAP200が作られました。またこの仕組みはAPLから他言語(JAVA,VBA,Cなど)

   を、また他言語からAPLを呼び出す仕組みに含まれます。したがってAPLの可能性を無限大に拡張する非常に優れた仕組みです。(APL Slave session: This is a mechanism for an APL session to open its subordinate APL session (=APL Calling APL). A new auxiliary processor AP200 was added to handle it asynchronously. This is also the same type of implementation as APL calling other languages and other languages calling APL. It will vastly extend the potential of APL, too.)

 

4.外部関数の拡張:上記ネームスペースと同じ範疇の仕組みですが、ネームスペースの内容がAPLで書かれるのに対して、一般に用いられるコンパイラー言語で作られIBMがシステムの一部として管理するものが外部関数です。現在これに含まれるものは100を超え、逐次追加されていますが、WindowsCOM機能を利用する“COM”APLのシステム関数のように誰でも使用することができますが、たとえばEXCELWORDIEなどとの相互乗り入れを可能にします。(Extension of External functions: This is the same category of APL features as namespaces, but these are implemented in other languages such as C and maintained by IBM as integral part of the system.. Curretly there are over 100 external functions, in which there are function such as “COM” which uses Windows COM interface. Direct accesses to EXCEL, for example, are realized if thei feature is utilized.) 

 

5.TCP/IPソッケット:家庭の電気のソケットのようにAPLからTCP/IPの機能を利用することができます。私どものWEBサーバーはこの仕組みを利用して作りましたが、遠隔地間での問い合わせ、ファイル転送などにも利用していて、一般のソフトウエアーはまったく利用していません。したがって、セキュリティー確保上も大変メリットがあり、長年安定して稼動していますから信頼性も高く、なによりもプログラムが1ページぐらいで書けますから非常に柔軟で強力な仕組みであるともいえます。(TCP/IP sockets: Like we use power sockets in our household, TCP/IP programming will be realized at ease. We wrote our Web server, for example, entirely in this way. We also use it to for file transfer and response to inquiries between remote locations. We do not use software packages available in the market at all. They have ran for many years in the past had proved dependable and safe in the maintenance of security. Most of these program modules are so short to be contained with in a sheet of paper.)

 

6.Unicode化:APL2は強力な言語ですが、日本語のサポートが不十分で、これまでは私どもはそれを補う仕組みを様々開発しましたが、IBMは今年4月に出荷されたCSD10を目標に数年前から日本語や中国語などを正式にサポートするUnicode化の作業を進めてきました。この結果CSD10の問題点などの解消も含めで、今月(2007年11月)に出荷されたCSD11でその目標がほぼ達成されました。そこではセッション・マネジャーを除いたAPLのほぼ全般にわたって日本語が、Shift JIS及びUnicodeのどちらででも正式にサポートされています。AP207 GRAPHICにおけるUnicodeのサポートも実に巧妙な方式で、われわれの期待をはるかに上回る早期に実現しました。これによってAPL文字と日本語が自然の形で共存できるようになりました。(Unicode: APL2 is definitely a very powerful language, but it has an insufficient support of the Japanese language in the past. We were obliged to develop our own tools to substitute it. However IBM started implementing Unicode support with the target completion by CSD 10 released in April this year. It was eventually attained in CSD11, which was released this month. There the Japanese language support is realized both in Shift JIS and Unicode, and in the case of Unicode, Japanese language is natively supported with APL in APL functions.)     

 

7.オブジェクト・エディター:最初APLは超高級卓上計算機と擬されました。APLの関数はセッション・マネジャー上で、▽で始まる式で定義をしました。しかしこの方法は現在ほとんど用いられません。代わりにAPLオブジェクト・エディターとよぶ、関数および変数のエディターが用いられます。なぜならこの方式のほうがはるかにプログラム開発の生産性が高いからです。これの特徴としていくつかの例を挙げますと:(Object editor: At the beginning, APL was called a super desk calculator. It was customary that people started writing a new APL function with character followed by a function header. Today people seldom employ this method, and instead they write programs using the object editor, because it’s much productive in wring programs. I will describe some of the advantages of using object editor as follows.:)

 

 ― プログラム実行中にそのサブルーチンや、使用される変数などを複数個同時に書き換えることができる。(While executing APL programs, you can edit their subroutines and data variables as needed.)

 

 ― カット・アンド・ペーストがWindowsの環境で自由に行うことができる。(You can cut and paste any part of functions or variables across Windows objects.)

 

 ― APLプログラミング支援機能によって検索、置き換え、APL文字のマウスによる入力などが可能。(You can use scan and replace and even input APL characters by mouse manipulations.)

 

 ― APLでコメントやテキストなどの日本語の入力と表示が可能で、関数は印刷しなくても適切な日本語のコメントがあればその内容を一目で理解することができる。(You can write comments and texts in Japanese within APL functions to enhance the legibility of your APL functions.)

 

    − プログラム実行中にエラーが起きると自動的にエディターの画面が開き、エラーの箇所を明示し、修正後実行を継続できる指定が可能。(You can choose to have the editor automatically opened upon encountering errors, so that you can proceed with program execution after fixed the problems.)

 

    − エディター上で関数の場所を確認しながらストップ・コントロールやトレース・コントロールをプログラム実行時にダイナミックに設定したり解除したりすることが可能。(You can set stop and trace control at appropriate locations of the executing functions by looking at the program statements in contexts.)

 

    − プログラム開発中に式の一部をセッションマネジャー上にカット・アンド・ペーストして、式の有効性を確かめることができる。(You can test parts of the program in development by cutting any parts and executing them in the session manager.)

 

    − このほかにも非常に多くの便利な機能を利用することができますが、現在オブジェクト・エディターの特徴を判りやすく解説した日本語の資料を作成中で、完成しだいこのサイトで発表します。(There are many other convenient features with the object editor and we are now preparing its’ document in Japanese and will distribute it by this site when complete.)

 

   最後に申し上げたいことはAPLに関して世間の皆様に非常に大きな誤解を与えて

しまっていることです。APLは決して一部の特殊な才能のある人のみに許された道具ではありません。高度に数学的なものでもありません。現に私は文学部出身で、数学は不得意で数学的な手法はほとんど使用しません。(Lastly, I would like to say that we seem to have given a totally wrong image toward APL amongst people at large. APL is not definitely a tool which specially qualified people can use. It is not necessarily highly mathematical. I myself majored Chinese history in University and I am not good at mathematics nor I use any mathematical process in writing APL functions.)

 

APLは誰でもが必要とされる場所で自由な発想で使用できる非常に単純な道具です。一例を挙げますと、最近私のお客さん(零細企業に属します)が開発中のプログラムの一連の作業の出力帳票を目的に応じてA4, B5、 A3の用紙に印刷したいと言ってこられました。APLには印刷機のトレーを選ぶ機能がありません。したがって、従来私どもはCANONであればLIPSEPSONであればESCAPE-PBROTHERであればPOST-SCRIPTでプログラミングしました。(APL is a very simple tool that anyone can exercise his imagination in writing programs where needed. I will illustrate an example which I experienced recently. One of my customers (at a very small company having only four office girls) asked me if I can change their program so that a set of printer outputs are produced in different sizes of printer forms, say some in A4, some in B5 and others in A3. Since there is no capability of selecting trays in APL printer functions, we used LIPS with Canon, ESCAPE-P with EPSON and POSTSCRIPT with Brother printers.)

 

たまたまAP145によるテキスト方式ではUnicodeによる漢字を含むテキストの出力で罫線が不揃いになりやすい問題がありましたので、試みに線が自由に描けるAP207のグラフィック印刷出力を利用してみました。これは非常に自由度が高く高品質の印刷出力が可能であることを発見しました。AP207の印刷機能には用紙の方向(=ORIENTATION)とともに印刷装置を自由に選ぶことができます。複数の印刷装置があれば用紙の切り分けが可能であることがわかりました。(With the introduction of Unicode, we began to realize that we may face Grid line alignment problem in printing texts in Unicode in the form of tabulations under AP145. Therefore I attempted to use AP207 graphics to produce tabulations and I found this much superior in quality to the text method.AP207 has a feature to allow selection of printers in addition to print orientations. So I thought it can be realized by using multiple printers.)

 

しかしこの方法では不経済で、何とか一台の装置で同じ目的が達せられないか思案しているときに、ふと次のようなことを思い出しました。すなわち、新しくプリンターを購入し、慣れないので、ドライバーの導入がうまく行かず、結果としてひとつのプリンターに対して複数のドライバーが導入されてしまうことがあります。そこで意図的に3個のドライバーを導入し、それぞれに異なる給紙方法を設定し、A4B5A3と命名しプログラムでそれぞれのプリンター名を振り分けて区別しましたが、目的とする結果が得られ、メーカーやモデルに依存しない(=DEVICE INDEPENDENT)な印刷プログラムに成功しました。(But I realized that this method cannot be accepted, because of the limited office space. I began to think if it is not possible to use a sigle printer and achieve the objective. Then I realized that when I purchased a new printer once and struggled to install drivers, I erroneously installed two redundant drivers for a single printer. I decided to test if my problem can be solved if I install 3 redundant drivers, with each driver named A4, B5 and A3 respectively and defined with different tray selections. This method worked and I could write printer programs entirely in device independent manner.)

 

この方式が正しいものかどうかはわかりません。しかし現在これを使用していて不都合はありません。できればIBMにトレー選択の機能を開発するように要請したいですが、とりあえずこれで間に合います。APLはこのように町工場の経営者が学問に頼るのではなく様々な経験を駆使した工夫を凝らし問題を解決することと同じことなのだと思います。APLは自分の不得意なことは避けても、必要なことに関してはがむしゃらに食い下がるエネルギーが必要なだけだと思います。(I am not sure it this is a right solution or not, but it worked with no problems so far. In truth I wish I can ask IBM to support trays in their standard printer functions, someday, but it will not be an urgent matter. APL is somewhat similar to a small factory owner in town, who uses mainly his experiences and not much learning from school or books in solving day-to-day professional problems. In using APL, you can avoid the techniques you are not good at, but you need the energy to pursue the problems to the end to solve them in your own ways when you face serious ones.)