ADPはしばらくバイナリ(実行ファイル)の提供を行います。
パッケージ(インストーラやRPM等)は、そこまで開発を行う余裕がないというのもありますが、何より実行ファイルをコピーしたら使えるようにするというコンセプトで作っています。
Linuxのユーザにはちょっとお粗末な配布形式だと思われるかと思いますが、
MS-DOSからのユーザは昔からなじみのある配布形式かと思います。
公開するにあたって一番の悩みどころが
ソースコードをオープンにするかどうか?
というジレンマがあります。
本来ならオープンにすべきだと思うのですが以下の点からしばらくはソースコードは非公開しようかと思ってます。
- ソースが汚いので書き直す可能性が高い
- 一度公開すると非公開にできない。(逆は出来る)
- 言語仕様を出来るだけ文書化して開発したい。のでソースを公開することでお茶を濁したくない。
とまぁこんなところです。
ソースを公開しない欠点ですが、Linuxの対応になります。バイナリ配布すると各ディストリビューションの数だけそろえることになり、それは現実問題不可能なので当面は2,3のディストリビューションのみのリリースになります。
2010/08/03 追記
と言いつつ、
GPLで公開しました。
先日プレ公開した開発版ですが、さっそくバグが見つかりましたので
アップデート版(Ver 0.4.0129)をプレ公開します。
ドキュメントを作成し、サンプルプログラムを動かしている訳ですが、each述語でバグが見つかりました。
ADPのドキュメントページをADP(正確にはADPのWEBページ拡張)で構築しているのですが、やはりというかなんというか細かいバグおよび仕様変更を行っており、まだまだ改修をしています。
ので、このあたりはお含みおき頂ければと思います。
私は今でも顧客の元で仕事をしたりするので、この手の話題は避けたい面もあるのですが、たまには、ADP以外の記事を書いてみます。
私はかれこれ20年近くITエンジニアとして働いていますが、今ちまたで問題になっている以下の話題ですが、IT業界では昔からありました。
・鬱
・派遣切り
・モンスターカスタマー(パワハラ)
鬱は、昔からテクノストレスという言葉があり、私も十数年前にストレスに悩まされたことがありました。
今では結構気軽に鬱という言葉が使われますが、昔はそういった認識もあまりなく、ただひたすらいらいらする毎日でした。。。そういえばストレスチェッカーなるサイトをよくみていました。
派遣切りも昔からありました。もともとIT業界自体がはやくから派遣が可能だったというのもありますし、ソフトウェア開発プロジェクトは労働集約型になる為、プロジェクトが佳境に入ると人を集め、プロジェクトが終了すると人も減らすということが行われていので小規模ながら派遣切り(というかお役御免)ということが行われてきました。
モンスターカスタマーというかパワハラも昔からありました。私が受けたもので一番印象に残っているものですが、もう15年程前の話になりますが、風邪で休んでいるところを、無理やり出社させられて、
出社すると顧客の担当者は満足そうに笑みを浮かべており、
私がそのまま、イスに座ってボーといたら(風邪をひいているのでとうぜんなのですが)
『ぼさっとしないで、ちゃんと仕事をしろ!』
とお客の担当者に怒られ、そのままありがたい講釈を聞いたことです。
別にトラブルがあった訳でも、カットオーバー等のイベントがあったわけでもなかったので、今でもなんでこのようなことをされたのか理解に苦しみますが、まぁご自身の力を誇示したかったようです。
それ以降、幸いにして今現在に至るまで皆様良いお客様で感謝しております。
あと、35歳定年説というのもありました。35歳を過ぎるとITエンジニアとして価値がなくなるという都市伝説ですが、今これを転職市場に置きかえますと確かに35歳を超えると転職も難しと聞きます。
ということは現在ITエンジニアがおかれている労働環境は、20年後の日本の労働環境を占うことになるかと思いますが、ITエンジニアの皆様の労働環境は明るいでしょうか?、暗いでしょうか?
最近では、C++にも導入が検討されているガベージコレクションですが、
なんとADPには実装していません。で、
『どうやってメモリ管理しているのか?』
という疑問が沸くかと思いますが、普通にスタックを使用しています。
細かいことを言いますと、正確には述語の評価を行うクラス内で作成(new)したオブジェクトを記録し、そのクラスのデストラクタで解放(delete)しています。評価結果を伝達する場合はオブジェクトをコピーします。深いコピーを行うので配列等は結構時間がかかります。
ガベージコレクションを実装しない理由ですが、ADP(Prolog)の実行環境(インタプリタ)はスタックで実装できるのでガベージコレクションをする必要がないということが1つ。
もうひとつの理由はパフォーマンスで、どのような実装方法を用いても、今日の大容量メモリで動作する場合、一度ガベージコレクタが動くとどうしても動作が遅くなるだろうと思います。
64ビット時代でさらに大容量のメモリが搭載される場合、ちまちまガベージコレクションするよりも贅沢にメモリを使ったとしても許されるかな?というもくろみもあります。