1read 100read
2011年11月2期データベース8: 【M言語】キャシエ・CACHE【MUMPS】 (252) TOP カテ一覧 スレ一覧 2ch元 削除依頼

【M言語】キャシエ・CACHE【MUMPS】


1 :05/02/21 〜 最終レス :11/11/21
医療、金融、物流、製造でいまだに活躍!
古参も新参者も、さー語ってくらっしゃい。

2 :
データベース新たな選択肢―リレーショナルがすべてじゃない
吉田 育代 (著), 梅田 正隆 (著)
価格: ¥2,310 (税込)
--------------------------------------------------------------------------------
レビュー
出版社 / 著者からの内容紹介
「速い」「軽い」「安い」
こんなデータベースがあったのか!
リレーショナル・データベース全盛時代に、
新しい選択肢を提供するスマート・データベース、
『キャシエ』の真実。
柔軟なデータ構造、高度な文字列の検索性能、
OSを選ばないマルチプラットフォーム。
医療、物流、金融など、
幅広い分野で活躍し続けるデータベース『キャシエ』。
歴史に埋もれてしまった優れたテクノロジーが、
新しい時代に蘇ってきた。
システム開発の効率化を促し、
ビジネスを自然な姿でITの世界に取り組む仕組み。
キャシエのすべてを解き明かす。
MUMPSから生まれた『キャシエ』の歴史から、
さまざまな産業界での輝かしい実績、
そして、これからの活躍の機会を、実例を交えて紹介する。
この人どっかで見たような、、、

3 :
お仕事ですか?
学生が興味持つような品じゃないと思うよ

4 :
リストアがうまくいかないのは何故?

5 :
宣伝?

6 :
評価用キット(シングルユーザライセンス無償版って奴)持ってるんだけど、いまいち
使い方がよくわかんないのよね。何かクライアントサイドはWindowsしか考慮されて
ないみたいだし。言語バインディング増やす予定があるようなことを去年のセミナーでは
言ってたけど、例のスタジオとかいう環境の外から普通に使うことってできんの?

7 :
優良解説サイトのURIキボンヌ

8 :
誰も使ってないのか、使っている人は2chを見てないのか・・・興味はあるんだけどな。
インターシステムズの中の人でもいいから何か情報書いてよ。

9 :
SQLより絶対使いやすい!!MUMPS・Cacheを使用していると、
なんで、世の中ではSQLがもてはやされるのかが理解できない。
周辺機器とも接続しやすいし、DBの中で、BASIC的なコマンドが使えるのが
いい。

10 :
あげるなバカ、知ってるやつはしってるんだから。。。

11 :
解説本が原本よりかなり安かったり
日経BPに広告打ったり
マーケティングはかなり頑張ってると思う
でも果実を取れるかどうかは。。。

12 :
>> 9〜11
詳細レポートきぼんぬ。

13 :
cacheってデフォルトではダーティーリードなんだよな。
分離レベルを上げたときの性能はどうなの?

14 :
この本はどうですか?
http://www.amazon.co.jp/exec/obidos/ASIN/4990207904/ref=pd_sims_dp__3/249-8007258-8653131

15 :
青色立方体研究所、ここに詳細あり。
http://zerogravity.hp.infoseek.co.jp/

16 :
RDBが出始めのころ、IMS使いのベテランが「RDBは理論は綺麗かもしれないけど、
肝心のパフォーマンスが駄目だから実用的じゃないよ」と嘯いていたのを思い起こさせるな。
ま、それもひとつの真実ではあるわけだけど。

17 :
せみなーあるってよ
http://www.intersystems.co.jp/healthcare/2005/

18 :
オブジェクトデータベースCach´e入門
シュプリンガーフェアラーク東京; ISBN:4431710620; (2004/05)
をお持ちの方にお聞きしたいですが、これは
Object-Oriented Application Development Using the Cache Postrelational Database
の第2版と同じ内容ですか? 初版の内容であれば洋書第2版を購入しようかと。

19 :
ご注意ってところに
「本書記載の情報は、第1刷制作時のものを掲載していますので、〜〜」
まえがきには
「この第2版は、〜〜」とある
第2版1刷ということで、いいんだよな。

20 :
>>19
サンクス。何かビミョ〜に不安の残る書き方してるんですねぇ。
調べるの面倒なんで洋書第2版を注文することにします。日本語版にしか載ってない
情報とかがあったらちと残念ですが、実は初版だったってオチが一番いやだし。

21 :
なんか便利なのか?これ。

22 :
本届いた。予想していたより薄いので気楽に読めそうです。

23 :
これライセンスって幾らくらいなの

24 :
とりあえずどんなモノをつっこめてどんなクエリを掛けられるんだ?
サンプル出せやコラ。

25 :
優れてるとか何に向くかという表現ばかりで、
何の部分が優れてて何の部分が犠牲になるのか、
全く書かれて無いね。

26 :
Cacheを意識したオブジェクト設計をしないといけないなら
意味がない気がする。

27 :
ヂャ、SQL使う人には必要ないんだ。

28 :
ObjectScript、ちらっと眺めてみたけどこれ設計した奴だな。
よくもまあこんなに気持ち悪いデザインにしたものだ。これ使ってるユーザもある意味
尊敬する。

29 :
そのObjectScriptってのがSQLみたいなもんなの?

30 :
「SQLみたいなもん」が何を意図して質問されてるか誤解してなければ
「全然違うモノです」と回答しておきます。オブジェクト指向のスクリプト言語で、
そこで扱うオブジェクトが永続化できるようになっているわけです。
但しシンタックスが謎・・・設計し直す予定ないのかしら。

31 :
MUMPSをオブジェクト指向風に拡張したのがObjectScript。
設計しなおしなんていまさら。。。

32 :
>>25
何に使われているかは、大抵の場合病院関係で、少数派は運輸倉庫系かな。
うちでは、売上管理用に使用している。
特に何に使い易いかと言われると、大抵のシステムに対応できると思う。
ただ、プログラマー人口は少ない。Mumpsは、ANSI規格にも
登録されているので心配はないと思うけど。PG人口は少ない。

33 :
OLAPやチャート描画機能は標準装備?
それともこういうのを別途購入する必要あるの?
http://www.speedminer.com/architecture.htm

34 :
キャシェー入門届いた。
とりあえずこれで全文検索OKのBBSっぽいの作ってみる。
本当にはえーのかな?はえーといいな。

35 :
ライセンス料金、聞いてからにしなよ。
webアプリの場合だと、いい値段になるから。

36 :
ライセンス料金などなど
好奇心くらいしかないので
問い合わせメールとかして後から
メールだ電話だで連絡がバンバン来るようになると
いやーんなので(ほんとあの会社にゃ参った参った)
知ってる人、教えてー。

37 :
趣旨に反しててごめんなさい。「園田朋子さん」もしここ読んだら連絡ください!
真剣に探してます。

38 :
漏れもライセンス料金気になるんだけど営業が後で来るのは嫌だな。
Webアプリで使いたいんだが100万円前後くらいまでで収まるなら試したい。
そうでないならオプソのDBを頑張って使うしかない。
ライセンスどれくらいか知ってる人教えてください。

39 :
↑バカか、デブよ。

40 :
http://www.intersystems.co.jp/symposia/2005/index.html
開発者セミナー、行ってみようかと思ったけど大阪かよ

41 :
うーむ。
tp://d.hatena.ne.jp/higayasuo/20050418#1113807275

42 :
>1氏
吉田 育代さんは、以前○経ソフトウェアに執筆されてました。
Cache'の入門書(緑のヤツ)は、初めての人には分かりにくい気がしますね。

43 :
>>42
そですね。何かの雑誌でもみたことあるような、、、。和服着てました。
緑本は高価で手が出ません。とりあえず、お試し版はインスコ済みなのですが、、、。

44 :
技術な情報
http://www.intersystems.co.jp/cache/technologyguide/technologyguide.html
http://www.intersystems.co.jp/support/faq/index.html
セールスな情報
http://www.ssl.fujitsu.com/news/2005/press050510.html
http://www.intersystems.co.jp/press/press-releases/050510.html

45 :
なんかイメージ的なことばかり書かれててイヤ。
なぜ高性能か、なぜ大規模に使えるのか、が書かれてないような。

46 :
インターシステムズ(だっけ?)の人に会社に来てもらって説明聞いたけど、
それなりにいい値段したよ。ユーザー数によってはオラクルよりも高かったはず。
まぁ、勉強するとは言ってたけど。
分離レベルが Read Uncommited なのは、オラクル教の俺からするとちょっとな。

47 :
> 46
大事なことは、値段に対する能力がその製品が持っているか、と
いうことだと思うね。
俺も以前はOracleだったけど、Oracleを知れば知るほど、金を
ドブに捨てていることがわかるね。タコな仕様の尻ふきを
設計者、管理者がやらされていることに気づく。
ユーザには「初期導入コスト」よりも管理者に支払う
「人件費」を含む運用コストの節約に視点を向けるべき。
まあ人的スキルを除いても同じコストで実現できる
能力はCache'の方が上だと思うよ。
あと、READ UNCOMMITEDは「デフォルト」なだけな。
SET TRANSACTIONすればいいだけ。
本当のオラクル教信者は、名より実を取る。
競合製品は自分で試して評価することを実践する人が
多いのだけど、はてさて。
,

48 :
だったらRDBはオープンソースが良い。
MySQLやポスグレも良いかもしれないけど、
Firebirdが一番。

49 :
MUMPSって調べてみたけど、非構造化言語で
サブルー激xルのローカル変数すらないのね…
永続化データにはスキーマもないからデータ構造も
アドホックになりがちという話。
古すぎてちょっと触りたくないな。

50 :
> 48
Firebird となったとたんにBorland製品とのマッチが
悪くなったのと、これはOSSのDBのほとんどについて
言えるがスケーラビリティにおいてはまだ大規模には向かない。
そうじゃないというなら、これに対する反論は大歓迎。
たかだかWebサイトや小規模部門サーバのDBならともかく、
病院のような(ちょっとした問題でも起こしたら
「人し」とののしるような客があいて)ところに
OSSのDBを薦められる根拠があると俺も助かるから
教えてくんない?
医療業務や原子力関連など、生命にかかわるものに
関しては、O社も使用許諾書でこっそり「無保証」を言ってるからな。
それでも大丈夫な画期的方式がOSSにあるなら、しりてーなー
OSSは自己責任だから、客に任せて、、はNGね。
そんな寛大で技術的に優秀なお客さんが沢山いれば幸せだねー
> 49
マニュアルも試用版も、ベンダーサイトにある資料も
ほとんど見ないで憶測で書いてるよね。キミ。
確かにCacheはMUMPSの過去資産をほとんど利用できる互換性を
持っているけどね。
N88BASICとVS.NETぐらいの差があるっていったら理解できるかな?
この例は互換性に乏しいけどね。

51 :
>>50
今のところCache'には興味がないんで、
MUMPSについて調べた感想を書いただけなんだが
どこか間違いあった?

52 :
だったら「MUMPS」は触りたくない、って書けばいいのにねぇ。
厨房?

53 :
> MUMPSって調べてみたけど、(…中略…)古すぎてちょっと触りたくないな。
って書いたんだけど、何かおかしかった?

54 :
>>47
あんたのお勧めはなんだ?
たこな仕様ってなんだ?

55 :

古すぎるなら 古いから使わなくていいと思うものは使わなくていい
単なる食わず嫌いに過ぎない。
古いから悪いものばかりではない!!
Mumpsは古いがSQLよりも速く使いやすい。
SQLは単なる巨大なエクセルシートで検索ができるだけの
データベースにすぎない。
複雑なエクセルシートを検索するなら、スクリプトが複雑になる。
なので、マスターにおいておけば済むような情報でも、詳細情報に書き込み
れーコードを巨大化させている。新しく好い物なんだろうか??
また、vbからSQL情報を取得するには、VBのレコード定義
スクリプト作成、スクリプトのコール、取得されたレコードの読み込み
これだけの手順が最低でも必要。Cacheなら、VISM.OCXのプロパティ
で十分対応できる。複雑なDB検索が必要ならMUMPSロジックを書けば対応できる。
またサブルー激xルでの変数と書かれているが、実際はMUMPSでは出来るが
正解。
Newコマンドと言われるコマンドがある。
正直、MUMPSを使用していて、このコマンドは使う人は使うが、
NEWコマンド嫌いな人は使わない。
MUMPSは1960年代からある言語だから、今のWindows始まってからpc始めた
人々には難しいかもしれない。
Mumpsを使いこなすと、SQLなんて使えなくなる。
Mumpsは人間の脳の記憶に近いらしいから、人類であれば使いやすいのではと思う

56 :
>MUMPSは1960年代からある言語だから、今のWindows始まってからpc始めた
人々には難しいかもしれない。
そういう人にはぜひCacheObjectScriptを。
いわゆる構造化プログラミングにも対応した
拡張M言語ともいえます。
クラスメソッドならVBライクなCacheBASICもあるし。
>Mumpsを使いこなすと、SQLなんて使えなくなる。
>Mumpsは人間の脳の記憶に近いらしいから、人類であれば使いやすいのではと思う
これはMUMPSの肝である「グローバル」のことを言っているのだと
推測します。
いわゆる「永続化できる連想多次元配列」こそMUMPSをここまで
生き延びさせてきた要因かもしれない。
バリバリのプログラマなんだけど、RDB/SQLの考え方やその
デメリットに辟易してる人なら、直感的に気に入るはず。
そんなによいものなら、なんで日本市場ではニッチなんだろう、
という疑問がある人は、吉田さんの本を読むべし。

57 :
いまだに階層型DBをマンセーする香具師がいるとは驚きだな。
そういう議論は80年代で終わったかと思ったが。

58 :
Cacheは何故隠されていたか
■速すぎる.. HWメーカーが支持しない
 例えば、RDBなら1億円のマシンが売れるが、Cacheでは1000万円のマシンしか売れない
■日本企業がすべて開発販売に失敗
 1980年頃O、T、M、P、H、(N)、D
 MUMPSはダメだ.. ネガティブキャンペーン
■ユーザーは成功しすぎて話したがらない
 競合他社ではRDBで40億のシステムを、自社では8億で開発した…

59 :
> 57
よく調べもしないでRDB派のFUDのノリそのままでくるとは
驚きだな。ていうか笑えるな。
いわゆるCOBOL方面の階層化DBとデータの持ち方が
ちがうからな。
自分で試してから批判したほうがいいと思うぞ。

60 :

>■速すぎる.. HWメーカーが支持しない
ちょっと前だと当てはまる構図ですね。日本のソフトウェアが
欧米製に完敗し、プラットフォームビジネスに切り替え。
ハード・ソフト両方売っているSIerはシステム開発はおまけで
ハードで利益を出す。
オープンソースがはやり、Linuxがのさばり、利益率が高い
RISC系オープンサーバが売れなくなって、安いIA/Linuxに
路線変更。今の頼みの綱はサポートサービスによる収益。
Cache'はハードの性能をあますとこなく生かすので、
ユーザのコストメリットは高い。
>■日本企業がすべて開発販売に失敗
「F」も入れといて。でも、最近は運用実績からみなおされてきて
既存のRDBリプレースならずとも分析系などで人気がでてきている。
>■ユーザーは成功しすぎて話したがらない
おれも客の巨大データつかって、SQLアクセスのみ
だったけどOracleとの性能比較したらびっくりしたよ。
そのときはRDB/SQLしか知らなかったから、
MUMPSグローバルの特性をISJにレクチャーしてもらって
ダイレクトアクセスに処理を書き換えたら感動物だった。
いちおうDBA15年選手でOracleMasterも持っているので
Oracleのチューニングは死ぬほどしたけど、勝てなかった。

61 :
データのretrieve以外もはやいのかな?
セッションいっぱいで更新したらだめだめとかない?
データファイル壊れても完全リカバリとかできる?
安全装置がないから早いですってのは嫌だYo

62 :
> データのretrieve以外もはやいのかな?
> セッションいっぱいで更新したらだめだめとかない?
セッションいっぱいといっているのは、
サーバマシンリソースの限界のことを言ってる?
何の限界をさしてる?
あと、セッションいっぱいになったがために
問題になった実例ケースを想定して話しているなら、
その実例を起こした製品はなんだ?
それって、DB製品自体の問題だけじゃなくて、インフラや
消費リソースの見積もりが極度に悪いとかの場合もあるからな。
あ、あと、Oracleなんかだと負荷高騰による障害パッチが
サポートを[買えず|買わず]に運用している環境にあたって
なく、サポート情報も知りえないから障害なのか仕様なのか
すら判別できないという悲惨なケースもあったなあ。
> データファイル壊れても完全リカバリとかできる?
当然。オンラインバックアップも可能。
> 安全装置がないから早いですってのは嫌だYo
ああ、InnoDBがなかったころのMySQLみたいのね。
更新ログもってなかったらそりゃ早いだろ、と。
ちゃんと更新ログもってるし、もし速さだけを追求したい
(テンポラリ作業用とか)トランザクションに対して
Oracle の NOLOGGING のような機能もあるよ。
更新ログ転送してOracle DataGuardのようなリモートサーバ
へのDB複製(シャドウイング)もできるしね。

63 :
なんかキモイ

64 :
儲の立てたスレは大抵キモいな

65 :
>>63 >>64
 MUMPSはダメだ.. ネガティブキャンペーン???
SQLこそ、くそDBである。早くなくなっちまえ。
ユーザーからみれば、安くて安定したシステムを希望する。
SQLエンジニアは、プログラムがややこしいのです、
時間がかかります。なので、コストが高くなりますで、
エンジニアっぽい能書きたれるけど、実際はSQLしか
しらんから他のDBに手を出すのも今更、怖いで勉強もしない。
そこがいかん!!。
なんでも、キモイの言葉で済ます低脳な発言はやめろ。
言葉知らずども!!
MUMPS,CACHEを知り尽くして、反論してみろ。

66 :
MUMPSって、DECのミニコンとかで動いてたヤツ?

67 :
MUMPSの多次元連想配列って、どう使うのがセオリーなの?
「M(MUMPS)メモ帳」っていうページを見つけたんだけど、
1レコードをひとつの文字列としてまとめて変数に格納する
みたいなテクニックだった。
例えばこのスレの>>1を^DATというグローバルに入れる場合は
↓のような感じ。
^DAT("db",1108952588,1)="2005;02;21;21;11;08;医療、金融、物流、製造でいまだに活躍!\n古参も新参者も、さー語ってくらっしゃい。"
素人考えでは、
^DAT("db","Board Name")="データベース板"
^DAT("db",1108952588,"Thread Name")="【M言語】キャシエ・CACHE【MUMPS】"
^DAT("db",1108952588,1,"Year")=2005
^DAT("db",1108952588,1,"Month")=2
^DAT("db",1108952588,1,"Date")=21
^DAT("db",1108952588,1,"hour")=11
^DAT("db",1108952588,1,"minuit")=23
^DAT("db",1108952588,1,"second")=8
^DAT("db",1108952588,1,"content")="医療、金融、物流、製造でいまだに活躍!<br>古参も新参者も、さー語ってくらっしゃい。"
こんなツリーを作ってしまいそうなんだけど。
効率が悪くなるからダメ?

68 :
あ、名前とメアドとのフィールドを忘れてた。
^DAT("db",1108952588,1)="1;sage;2005;02;21;21;11;08;医療、金融、物流、製造でいまだに活躍!\n古参も新参者も、さー語ってくらっしゃい。"
こうですね。

69 :
YahooBB219023164105.bbtec.net
荒らし常習犯↑↑

70 :
> 65
俺は製品の批判はするけど、RDB理論とSQL自体は批判しない。
普通のファイルアクセスだって、大量データの全なめ用途
だけなら最速の場合もある。
適用ゾーンと使い方を間違えずに、問題にフィットする
データ操作を行えばいいだけ。
中傷なんぞ勝手に言わせとけ。どうせプログラムしか
組んだことなくて、要件定義から運用保守までなぞ
したこともないし苦労したこともだろうから。
> 67、67
建設的な質問サンクス
上の例だと、";" を区切りにしたPIECE構造はあくまでデータで、
このデータを検索するキーとしては("db",1108952588,1)
=板、スレ、投稿番号の3つでよいという構成ならOKと
いうことになるね。
キミが書いた例なら、そのあとの要素が規則的に続き、本文は
データとして扱うなら
^DAT("db")="データベース板"
^DAT("db",1108952588")="【M言語】キャシエ・CACHE【MUMPS】"
^DAT("db",1108952588,1,2,21,11,23,8)="医療、金融、物流、製造でいまだに活躍!<br>古参も新参者も、さー語ってくらっしゃい。"
^DAT("db",1108952588,2,2,21,11,24,46)="データベース新たな選択肢 〜 略 〜 "
^DAT("db",1108952588,3,2,21,11,24,46)="お仕事ですか? 〜 略 〜 "
の方が効率的。
要素確保の分効率が悪くなると思いがちだけど、
同じ要素位置の値は、そのままストレージに格納されるのでは
なくて、その前の同じ要素構成の部分までは同じ、という
情報だけを持つので、このパターンだと、板とスレの要素値は
省略されてストレージに格納される。
この並びによって、実際の格納サイズも削減できるし、
RDBなら検索キーのカーディナリティ(多重度)が低い
場合でも、フルスキャンする量が減るので効果大
ソートは不要、ストアした時点で自動的に要素順に格納してくれる。
削除・更新したときのストレージの断片化も心配無用。
ストレージエンジンが自動デフラグしてくれる。
デフラグ負荷も実運用上ほとんど気にならない。
あくまでここまでは標準MUMPSのグローバルアクセス。
Cache’の拡張Mはまだいろいろある。スキーマも持たせたい
場合は、クラス定義をすることになる、ストレージには最終的に
クラスに対応するグローバルにストアされるが、その構成が
異なる。その辺はマニュアルを見るべし。
https://www.intersystems.co.jp/support/csp/main.html
https://www.intersystems.co.jp/support/csp/ggbl/ggbl.html
https://www.intersystems.co.jp/support/csp/ggbl/ggbl_sqlobj.html

71 :
UNIXでshell&Emacsべったりな生活を送っていた習性からかLinux版であっても
Windows機上の「スタジオ」という統合環境からのオペレーションを強要されるのが
なんとかならんもんかと思うのですが、その辺古くからのユーザさんはどうしている
のでしょうか?
当方OracleのクライアントはSQL*Plusが最強だと信じて疑わないコマンドライン派です。
Cache'に興味はあるんですがWindowsが(ry

72 :
>>62
ありがとうございます。
レコードの要素を文字列で持とうが添字で持とうが、
データを一直線に並べて(という表現が適切か分かりませんが)
保持するのがいいんですね。
あと、検索性についても知りたいのですが、2chの例で続けますと、
更なる要件として、スレのage/sageがあります。
板を表示するときには、各スレの最終投稿日時の降順が基本ですが、
スレごとの最終投稿日時を決める際に、メール覧に"sage"という文字列が
含まれている投稿は考慮しないというルールです。
この場合、投稿データの登録時に、メール覧に"sage"が含まれない場合に
スレ別最終投稿日時インデックスを更新する、という処理になると思い
ますが、そのインデックスをどう表現するのがいいのでしょうか。
あるいはもしかすると、>>70の例の場合インデックス自体いらないのでしょうか。
ご教示ください。

73 :
>>72
M言語のグローバルについて
グローバルに書き込んだ時点で、ノードごとにアスキーコード順に
書き込まれるようになっています。
>>70のグローバルを下記の順でSetコマンドを実行した場合
Set ^DAT("db",1108952588,3,2,21,11,24,46)="お仕事ですか? 〜 略 〜 "
Set ^DAT("db",1108952588,2,2,21,11,24,46)="データベース新たな選択肢 〜 略 〜 "
Set ^DAT("db",1108952588,1,2,21,11,23,8)="医療、金融、物流、製造でいまだに活躍!<br>古参も新参者も、さー語ってくらっしゃい。"
Set ^DAT("db",1108952588")="【M言語】キャシエ・CACHE【MUMPS】"
Set ^DAT("db")="データベース板"
逆にグローバルをセットしても
グローバルを参照した場合は、下記のように表示されます。
^DAT("db")="データベース板"
^DAT("db",1108952588")="【M言語】キャシエ・CACHE【MUMPS】"
^DAT("db",1108952588,1,2,21,11,23,8)="医療、金融、物流、製造でいまだに活躍!<br>古参も新参者も、さー語ってくらっしゃい。"
^DAT("db",1108952588,2,2,21,11,24,46)="データベース新たな選択肢 〜 略 〜 "
^DAT("db",1108952588,3,2,21,11,24,46)="お仕事ですか? 〜 略 〜 "
ノードで参照する場合であれば、インデックスは不要です。

74 :
キー値前ゼロの有無でダブルコーテーションの要不要が変わるのはやめてくれ〜
前ゼロキー値がソート順で後ろになるのはやめてくれ〜
コメント行入れるとネストがぶっちぎられるのはやめてくれ〜
ネスト内でNew付け忘れるとネスト抜けても変数が残るのはやめてくれ〜
ループのブレイクがフラグ変数使わないと書けないのはやめてくれ〜

75 :
ごめん。もうひとつ追加。
>ネスト内でNew付け忘れるとネスト抜けても変数が残るのはやめてくれ〜
でこのときネスト外に同名変数があると、
有無を言わさず上書きになるのはやめてくれ〜

76 :
>>74
>キー値前ゼロの有無でダブルコーテーションの要不要が変わるのはやめてくれ〜
"000005"
000005 の件ですね。
 これは、ごめんなさい。あなたが、コンピュータそのものを理解していないだけです。
 上記の"00005"は文字列として扱う、000005は数値として扱うなんです。
仕様としては理に適っています。
>前ゼロキー値がソート順で後ろになるのはやめてくれ〜
本件も、ソート順がAsciiコードである事を理解されていないからですね。
 仕様としては正しいです。
>コメント行入れるとネストがぶっちぎられるのはやめてくれ〜
何を言おうとしているのかわからん
>ネスト内でNew付け忘れるとネスト抜けても変数が残るのはやめてくれ〜
 Newコマンド使わなきゃいいんじゃないの?
>ループのブレイクがフラグ変数使わないと書けないのはやめてくれ〜
どこのMumpsを使用したの?
M経験者と言われても、数ヶ月でしょうか?SQL(2次元DB)経験者ではとっつきにくいかも
しれませんが。仕様を理解されて使うと
本当にいいDBですよ。

77 :
>>76 あーレスどうもです。
> >キー値前ゼロの有無でダブルコーテーションの要不要が変わるのはやめてくれ〜
> これは、ごめんなさい。あなたが、コンピュータそのものを理解していないだけです。
> 上記の"00005"は文字列として扱う、000005は数値として扱うなんです。
>仕様としては理に適っています。
理に適っていません。
「000005は数値として扱う」は厳密に言うと5として数値扱いになります。
そして555555は常に数値扱いとなります。"555555"と書いてもです。
つまりこの問題の本質は、固定桁数数値をキー値として扱う場合、
先頭がゼロかそうでないかで処理を分けなければいけないということです。
○○コードとか○○区分とか、世の中固定桁数数値で扱わなきゃ
いけないものが結構あるのですが。
# って書くと「常に前ゼロなしで扱えばいいのでは」という話になるのですが、
# それはそれで表示時の前ゼロ書式化/書式化解除が手間でしょう。
>>コメント行入れるとネストがぶっちぎられるのはやめてくれ〜
>何を言おうとしているのかわからん
↓こんな感じ。
D ;ネスト開始
.S n=1 ;ネストの中。こことか
.;こことかにコメントは書けるが
;ここに書くとネストも終わってしまう
.S n=n+1 ;この行は実行されない
いちいちコメントアウトするときも(.の有無に)気ぃ遣わなきゃならんとは…。
>>ネスト内でNew付け忘れるとネスト抜けても変数が残るのはやめてくれ〜
> Newコマンド使わなきゃいいんじゃないの?
言い換えると「ローカル変数は使用禁止。構造化は諦めろ」ということですか?
>>ループのブレイクがフラグ変数使わないと書けないのはやめてくれ〜
>どこのMumpsを使用したの?
これは失礼。説明不足でした。ループ継続条件だけではなく
breakもあるwhileループを想定しています。どう書くのがスマートですかね?
>M経験者と言われても、数ヶ月でしょうか?SQL(2次元DB)経験者ではとっつきにくいかも
>しれませんが。仕様を理解されて使うと
>本当にいいDBですよ。
Cache'4で1〜2年ほど。VT200環境で動かす業務アプリでした。
きっとそれでは経験不足なのでしょうが、その上での感想は
・確かにDB自体の処理スピードは悪くない
・しかしMの言語仕様がロートルなので、生産性はまったくよくない。
・変数スコープが的なので、特にデバッグでは確実にる
といったところ。構造化が中途半端にしか出来ないのは困りものですね。
Newの仕様に意義を見出すかどうかで、Cache'に対する印象が
分かれるかと思います。

78 :
やめてくれ〜シリーズにもうひとつ追加。
空白文字の数が一つか二つかに、文法的意味を持たせるのはやめてくれ〜

79 :
前ゼロの件ですが、0005も5もMumpsでは5です。
Mumpsで0005として扱いたければ、$E(10000+5,2,5)
と書けば0005と表示されます。
確かに世の中では、固定数値で扱う事は多々とありますね。
Mumpsでは無駄なデータ情報は持たないが原則で作成するので
他のPic x(20) とか 8桁固定とか使われるDBではそのように0詰め
とかしてDB登録しなければいけないですね。
Do<スペース><スペース>の件ですね。
コマンドの仕様はご存知ですか?
Mumpsの基本プログラムは昔のBasicと同様上から下の行へしか行かないGoto,Quitなど
特殊な場合を除き。
Do<スペース><スペース>は、このコマンドの次の行以降で"."で始まる行を飛び先
として扱い、"."で区切られた行がなくなればそのとび先は終了となっています。
なので、"."のない行があるからとび先は終了で正しいのです。
>>いちいちコメントアウトするときも(.の有無に)気ぃ遣わなきゃならんとは…。
それは、当然気を使わなければいけませんね。
Newコマンドの件ですが、同じ変数名を、あるサブルーチンで使用する場合
などは有効と思えますが、重要な変数名であれば、いたるところで変更される
事のないように変数を利用するのがいいと思います。
よく、構造化構造化と頻りに言葉に出されるエンジニアさんがいますが、
それが、絶対正しいのでしょうか?構造化して便利に利用できるのもいいですが
それにより、プログラム変更が難しくなり、仕様変更に耐えれないプログラム
になるなら、古典的なプログラムでもいいと思います。エンドユーザーから
見れば、プログラム内容ははっきりどうでもいい話なんです。それより、完璧な
仕様で動作してくれればいいのです。エンジニアが、頻りに構造化構造化と言われても
彼らの一人よがりでしかありません。
breakもあるwhileループ
どんなのを想定されていますが、VBなどで書いてみてもらえれば書きますが
M言語の仕様自体は確かに古いです。おっしゃる通りだと思いますが、でもそれで
十分機能は果たしています。最新の言語のようにコマンドが多い方がいいですか?
その文コマンドを覚えなければいけませんよ。
Mumpsは基本的にa-z,$a-$z,Za-Zzなどアルファベットまたは$付き,Z関数で構成
されていて、コマンドは少なく仕様は世界基準も整備されている、新興言語のように
バージョン違えば、コマンドも違うなんて事にはなりにくいのです。
生産性がよくない事は全くをもってありません。
コマンドを知らないプログラマが言う言い訳に過ぎません。
空白文字が1文字2文字で文法が変わると言うのは、それはそれに意味があるからです。
空白文字を1つであなたは、プログラムを書いたプログラマの意思を判断できますか?
仕様は仕様なんだから、それに対応できる理解力が必要です。なので、Mumpsに抵抗を
感じているんではないでしょうか?

80 :
>>79
話のすりかえもはなはだしいな
>エンドユーザーから
>見れば、プログラム内容ははっきりどうでもいい話なんです。それより、完璧な
>仕様で動作してくれればいいのです。エンジニアが、頻りに構造化構造化と言われても
>彼らの一人よがりでしかありません。
こんなこと書いといて、あとはひたすらMumpsの擁護かよ。

81 :
遅ればせながら>>77最後の一分の誤記を訂正致します。orz
誤:
Newの仕様に意義を見出すかどうかで、Cache'に対する印象が
分かれるかと思います。
正:
Newの使用に意義を見出すかどうかで、Mに対する印象が
分かれるかと思います。
>>79さんは「意義を見出さない」方のようですね。
>確かに世の中では、固定数値で扱う事は多々とありますね。
数列をあらわす項目は文字列型、数量をあらわす項目は数値型、
というように使い分けられるのがベストですが、Mでは言語仕様上
先頭がゼロなら常に文字列型(但し先頭に"+"をつければ前ゼロを除去し
数値型にキャストしたことになる)、そうでなければ常に数値型
という扱いになってしまうようです。
結局、「固定桁数数値という要件に対する解決は、Mにはない」
という解釈でよいのですかね。どのように解決しているのか
事例を出していただけるとむしろありがたいのですが。
>>いちいちコメントアウトするときも(.の有無に)気ぃ遣わなきゃならんとは…。
>それは、当然気を使わなければいけませんね。
"."を評価する以前に、コメント行の除去が行われるよう
文法解析仕様が組まれていれば、気を遣う必要すらないのですが。
「当然」なのではなく「理不尽な仕様」と考えます。
>Newコマンドの件ですが、同じ変数名を、あるサブルーチンで使用する場合
>などは有効と思えますが、重要な変数名であれば、いたるところで変更される
>事のないように変数を利用するのがいいと思います。
「重要な変数」が引き立つのは、「重要でない変数」があるからです。
この「重要でない変数」の寿命・名前の有効範囲をサブルーチン内に
閉じ込めることがNew(というよりローカル変数)の真骨頂なのです。
(MではNew宣言した変数でも同名での読み書きが下位ネストで可能なので、
他言語で言うところのローカル変数とはちょっと違う)
グローバル変数の読み書きは要注意というのは確かにその通りですが、
ローカル変数にも注意を要求されるのは組む側としては負担の増加です。
>よく、構造化構造化と頻りに言葉に出されるエンジニアさんがいますが、
>それが、絶対正しいのでしょうか?構造化して便利に利用できるのもいいですが
>それにより、プログラム変更が難しくなり、仕様変更に耐えれないプログラム
>になるなら、古典的なプログラムでもいいと思います。エンドユーザーから
これはとんだFUDですね。この文脈では
「構造化(プログラミング)するとプログラム変更が難しくなり、
仕様変更に耐えられないプログラムになる」
というように読み取れますが、その根拠は何ですか?
逆に古典的なプログラムだと、そんなことはありえないんですか?
構造化/非構造化それぞれについて、具体例を挙げていただけませんか?
私の経験では「構造化プログラミングによりプログラムの見通しはよくなり
製造時の気遣いが減る分生産性は上がる。プログラム構造にハマれば
プログラム変更時に当該部分を差し替えるだけですむので、
仕様変更に耐えるチャンスは増える」なのですが。
長くなったので次へ。

82 :
>breakもあるwhileループ
>どんなのを想定されていますが、VBなどで書いてみてもらえれば書きますが
VBだと、Exit Do/Exit Forにあたりますね。
Do While i < 10
  If i = j Then Exit Do
  i = i + 1
Loop
# 図らずもcontinueはあるんだな…。
>M言語の仕様自体は確かに古いです。おっしゃる通りだと思いますが、でもそれで
>十分機能は果たしています。最新の言語のようにコマンドが多い方がいいですか?
>その文コマンドを覚えなければいけませんよ。
これまたFUDですね。CもJavaもC#も予約語の数は決して多くはないですよ。
その分ライブラリが多いのですが、それは適而リファレンスを見ればよい話です。
予約語分を網羅すれば制御構造の文法は分かるのだから、
むしろ制御構造と機能を分けた、洗練されたやり方だと思います。
逆にライブラリを含めた上でコマンドの少なさを誇られても、
それは即ち実現できる機能の貧弱さを示すだけなのですが…。
>Mumpsは基本的にa-z,$a-$z,Za-Zzなどアルファベットまたは$付き,Z関数で構成
>されていて、コマンドは少なく仕様は世界基準も整備されている、新興言語のように
>バージョン違えば、コマンドも違うなんて事にはなりにくいのです。
>生産性がよくない事は全くをもってありません。
>コマンドを知らないプログラマが言う言い訳に過ぎません。
ここで言われている生産性とは、単に習得の容易さのことであり、
私が考えている生産性とは意味が違います。私が考える生産性とは
「文法は一通り習得したその上で、如何に気遣いなく製造・デバッグが出来るか」
です。前述の通り、前ゼロの有無を考慮したコーディングが必要だったり、
コメントアウトの際ネストに留意する必要があったり、
うっかりNewを付け忘れてもコンパイルエラーにならなかったり、と
どうも「他言語ではしなくてもいい苦労を強いられている」
ように思えてなりません。やはり生産性はよくないと考えますね。
>空白文字が1文字2文字で文法が変わると言うのは、それはそれに意味があるからです。
>空白文字を1つであなたは、プログラムを書いたプログラマの意思を判断できますか?
>仕様は仕様なんだから、それに対応できる理解力が必要です。なので、Mumpsに抵抗を
>感じているんではないでしょうか?
私もいろいろな言語をやってきましたが、空白文字を区切り文字としてのみではなく
その個数にまで意味を持たせる言語はMが初めてでした。
他言語では空白文字がいくつあっても同じ意味合いでしたから。
そんなMの的文法に抵抗を感じていることは、否定しません。
えーと…、ところでこれ(>>79)、釣りじゃないんですよね。

83 :
>固定桁数数値という要件に対する解決は、Mにはない
データの型としては、Mには文字列しかありませんので、
プログラムでどうにかするだけ。
Cacheは知らんが。

84 :
>データの型としては、Mには文字列しかありませんので、
微妙に不正確な気が。いや感覚的には分かるけど。
・変数に型はない
・文字列扱い/数値扱いどちらで評価されるかは、格納値に依存する
厳密には↑では?
>プログラムでどうにかするだけ。
ないものねだりなのは分かってますが、結局組む人が知恵使って
どうにかして正しく動作するようにしないといけないのね。
固定桁数数値使用時の「定石」みたいなのは
確立されていないんでしょうか。

85 :
>・変数に型はない
>・文字列扱い/数値扱いどちらで評価されるかは、格納値に依存する
同意。
でもその為にパタンマッOが存在する。
いちいちそうしなければならないのか、という気持ちもわかるけど
言語の仕様で対応されていないならMに限らず多かれ少なかれ
他の言語でも知恵使ってプログラムで対応してるでしょ?

86 :
>>85
> Mに限らず多かれ少なかれ
ダウト。
多いと少ないじゃ天と地の差だろう。

87 :
DSMから始まりVMS、SP−MUMPS,U−MUMPS、キャシエと
M言語を使い始めて約20年。その間、メジャーなDBとは一通りまし
たが。。。可変長の利便性は離れがたいものがあり、今後もM言語をメインに
使用続ける事になると思います。

88 :
キャシエも可変長データ扱うけど、
容量の大きなグローバルをキルしてもcache.datがHDD上に占める
サイズはキルする前のまま…グローバルが大きくなればそれだけ
cache.datも大きくなるのにグローバルをキルしても小さくならないんじゃぁ
可変長なんだか固定長なんだか…中途半端だとおもう。

89 :
>>73
スレッドフロート方式の掲示板の
・書き込みが新しい順にスレ表示
・スレ内容は最新X件を表示
・ただしメール欄が "sage" のものは考慮外
という表示についての indexing を質問したかったんですが…

90 :
>>71 Windows機上の「スタジオ」という統合環境からのオペレーションを強要されるのが
なんとかならんもんかと思うのですが、その辺古くからのユーザさんはどうしている
のでしょうか?
私の隣の彼は、Cache ObjectScriptのプログラムはMIFESで書いてますね。
私もデバッグはターミナル(つまりコマンドライン)でやってます (^^

91 :
>>84 ないものねだりなのは分かってますが、結局組む人が知恵使って
どうにかして正しく動作するようにしないといけないのね。
固定桁数数値使用時の「定石」みたいなのは確立されていないんでしょうか。
何しろ教科書も少ないからなあ。皆さん自分の工夫でこなしているんでしょうね。
ちなみに、Cacheなら固定桁数数値をDataTypeで定義してしまえばOKでしょう。

92 :
       , -'"´  ̄`丶、_
      ,.∩         `ヽ
    〃∪'´ ̄`二二人\  ヽ
    | ツ´ ̄ ̄ ̄ ̄´ ヾ ヽ. ',
    |ハ ,ニ、   ,. - 、 | | | l |
    | ハ ィハ     ,二ヽ. | | | | | 同じ板にコピペするとそのままだけど、
    | | | じ'   |トJ〉  /)} l | 違う板にコピペすると鬼のような怖い顔
    | ハ  、'_,   ̄,, 厶イ川| に変わる摩訶不思議な佳子様コピペ。
    l l /\    .. イV\川 |
    ,' l l ,イ `l ̄´ /   /ヽl l
    l | l ハ  `メ、    〃  ヽヽ、__ノ

93 :
「固定桁数値」という考え方は数を表示するフォーマットの問題に過ぎないので、
(想像だが)普通はMプログラマはソート等で数として扱いたい場合は
「001」と「01」と「1」が別の添え字(値)として同居したりするのを防ぐために、
先行ゼロをつけたままの形式ではグローバルにsetしないとは思う。
$tr($j(数値,桁)," ",0) で固定桁表示にできるし +固定桁数値 で元に戻るし
仮に先行ゼロをつけたままでも演算はできるし
何が不満なのか何をそんなにこだわっているのかがさっぱり見えてこない。

94 :
>>90
インターシステムズの人と話す機会があったので、Eclipseのプラグインとか
考えていないんですか? と聞いてみた。検討はしているが、計画はないとのこと。

95 :
「固定桁数値」は、ノードにセットするときはソート順を間上げて0を取るって感じでしょうか?
希に、"5"と"05"は別のデータとして管理してくれ、とかいわれて泣きを見る事がありますが。

96 :
10.50 をノードにセットすると、10.61 より後になるとか。

97 :
知り合いにCacheってどうなのって聞かれたので、
「別の言語を1本知ってるひとなら大丈夫だよ」と答えました。
1日だけ研修で習ったのですが、なかなか素直な言語だと思いました。

98 :
>>97
知っている別の言語が何かによって
印象はかなり変わってくるな。

99 :
最近知ったのですが、Cache'のライセンスの方がOracleとかよりも高いですね。
昔は安かったのかもしれませんが現在はOracleの約2倍くらいしてるみたいです。。。

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼