スレ立てるまでもない質問はここで 156匹目

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2021/02/20(土) 17:17:54.73ID:56yjs2OO
この板はプログラムを作る人のための板です。
あらゆる質問はまず
スレ立てるまでもない質問はここで
スレにしてください。

【前スレ】
スレ立てるまでもない質問はここで 155匹目
https://mevius.5ch.net/test/read.cgi/tech/1606439237/

次スレは>>980が立てること
2021/04/21(水) 22:29:22.41ID:U7I+mJcY
>>535
論理ステップ数で比較するのが一般的です。

https://e-words.jp/w/%E3%82%B9%E3%83%86%E3%83%83%E3%83%97%E6%95%B0.html

ソースコード中の改行文字を単純に数え上げたものを物理LOC(Lines Of Code:コード行数)というが、
多くの言語ではコード中にコメントや空行など何も行わない行や、
コードブロックの開始や終了(中括弧{}やbegin/endなど)など実質的な処理を行わない行を記述できるため、
一定の基準を定めてこうした行を数え上げから除外する。こうして数えた行数がステップ数で、論理LOCとも呼ばれる。
2021/04/21(水) 22:34:08.39ID:hZhPN+RC
>>536
すみません、論理ステップ前提です。
上の+50、-49は全て論理ステップと思って下さい。ちなみにcloc使ってます

前バージョン比較で累積すると新規50ステップ
1-3間で比較すると新規1ステップ

どちらでカウントするのが一般的かというのが知りたいのです
2021/04/21(水) 22:36:02.33ID:NCTKtzNH
>>534
仮想環境の勉強とか言ってるレベルの人に、CUIしかない(と思う)環境を勧めていいのか?と言ってる
コマンド叩いてサクサク操作ができる人なら、そんなこと聞かないだろと思うから

いや、俺の認識が古くて今では GUI が使えるようになったのなら問題はないんだが
2021/04/21(水) 22:37:54.75ID:U7I+mJcY
>>537
目的によります。

同じことを実現するのに
・ステップ数が多い(無駄が多い)方を評価したいなら、ステップ数が多い方を選びます。
・ステップ数が少ない(無駄が少ない)方を評価したいなら、ステップ数が少ない方を選びます。

ただし相手が評価されるのが嫌な場合は逆を選びます。
2021/04/21(水) 22:41:26.40ID:U7I+mJcY
ちなみに、クソコードを50行消して
改善したコードを50行追加した場合、
その人は100行の素晴らしいコードを書いたことになります
クソコードを消すのはプラス評価です。
2021/04/21(水) 22:42:31.42ID:hZhPN+RC
>>539
なるほど。
因みに目的はバグ密度やテスト密度、生産性などのメトリクス分析なんですが、
この場合あなたはどちらの比較が適してると思われますか?
2021/04/21(水) 22:45:13.36ID:U7I+mJcY
>>541
ステップ数は全く意味がない値なので何にも適しません。
2021/04/21(水) 22:46:40.01ID:hZhPN+RC
>>542
それは流石に嘘・・・
2021/04/21(水) 22:47:20.46ID:U7I+mJcY
クソコードを削除すると生産性は上がります。
この事実に結びつかないメトリクスは
意味がありません。
2021/04/21(水) 22:49:51.23ID:hZhPN+RC
>>544
普通に組んでたから気持ちはわかるが暴論よ・・・
レビューの結果糞コードに変身する場合もあるんですよ><
2021/04/21(水) 22:53:43.72ID:NCTKtzNH
近頃は面倒なんでカバレッジ率ぐらいしか見てないな
ステップ数は顧客に報告する時だけ…
2021/04/21(水) 22:55:34.22ID:U7I+mJcY
ステップ数はただの「量」です。
家の中にモノがたくさんある。これはいいことでしょうか悪いことでしょうか?
モノはゴミかもしれません。多いことが良いことかどうかなんてわかりません。

メトリクスは量を除いて計測します。
そして良いものがこれくらいある。
ゴミがこれくらいある。という言い方しかできません

メトリクス分析するなら、量の概念は除いて計測します。
2021/04/21(水) 22:58:53.03ID:wGFkmeDC
量じゃないメトリクスってなんだ?
2021/04/21(水) 22:59:45.21ID:YcNEV+yo
>>535
もちろんコミット1と3の差分でカウントするよ
一度書いたけど採用しなかったコードなんて計測する意味はない
最終的に採用したコードのステップ数に応じてテストの件数を計画・評価するんだから当然じゃん?
遠回りしようが近道しようが、同じだけの改変には同じだけのテストが要る
2021/04/21(水) 23:07:36.61ID:hZhPN+RC
>>549
ありがとう。
確かに無駄コード分、必要テスト数が増えてしまうもんね。
その方向でまとめてみる。thx!
2021/04/21(水) 23:53:32.96ID:n9Psf8QY
フローで評価したいならコミット1から現在のコミット3の間に発生した+50と-49の変化を分母にする
ストックで評価したいなら評価時に残ってる2ステップを分母にする

新規50ステップや新規1ステップはどっちつかずで微妙だし
必要テスト数を出すためにステップ数やテスト密度使うのも微妙だなぁって感じる
552518
垢版 |
2021/04/21(水) 23:54:32.93ID:SVTBKWZf
>>519
出来ました!
ありがとうございました
2021/04/22(木) 04:38:17.22ID:gbeL+P6Z
ステップ数とテストの数に相関関係はないぞ
リファクタリングしてコードを減らしても
動作は変わらないんだからテストの数は変わらない
2021/04/22(木) 04:40:05.35ID:gbeL+P6Z
長いコードを関数に分けると関数呼び出しのためにステップ数は増えるが
長いコードに含まれるフローパターンの組み合わせが
関数にすることで減らすことが出来るのでテスト数は減る
2021/04/22(木) 07:53:53.72ID:7fx4Mbba
PLがステップ数とかメトリクスとかバク密度とか言い出したらもうダメだな
2021/04/22(木) 09:30:25.81ID:pnqsiiWe
ifとかforの数を数えてプログラムの複雑さを表現する方法を
なんて言ったっけ?
2021/04/22(木) 09:32:28.26ID:m2zuaeSV
循環的複雑度とか?
2021/04/22(木) 09:49:05.95ID:weUUVdM3
C0, C1 として使ってる奴だね
2021/04/22(木) 10:13:50.59ID:WMdOWH0O
メトリクスは以前と比べてどう変化したかを見るのに使う分にはいい
数字を単独で見てそれが良いだの悪いだの言い出したらもうダメだな
2021/04/22(木) 10:38:59.64ID:Usd5IZeQ
まあステップ数が尺度として非常に劣った存在であることは確かなんだけどさ、それでしか評価・理解できない組織もあるし、伝わらない相手もいる
ステップ数とFPの両面からバグ密度やテスト密度を出して、説得力を増強できる場合もある
同じような人海戦組織が作れば同じようなステップ数が出る傾向はあるし、乖離があっても個別に説明がつけばいい

いずれにしてもステップ数の功罪なんて今回は聞かれてなくて、ステップ数を図って評価に使うなら最初と最後の差分で取りますよって話だ
2021/04/22(木) 10:40:44.97ID:Usd5IZeQ
最初の質問に対してこうも脱線話ばかり盛り上がるところを見ると、あのブランコ開発の風刺イラストを思い出すわ
2021/04/22(木) 11:05:13.74ID:fYKo/KH7
>>560
>ステップ数を図って評価に使うなら最初と最後の差分で取りますよって話だ

1000ステップ追加して1000ステップ削除したら差分はゼロってことなの?
2021/04/22(木) 11:35:08.43ID:WMdOWH0O
それでいいんじゃね
実質的に大して意味のない尺度なんだから、どうしても必要なんだったら手間が少ない方がいい
2021/04/22(木) 12:47:09.81ID:Usd5IZeQ
>>562
いやいや、削除分をどう算入するかという話と、差分の道のりを測定すべきか距離を測定すべきかというのは別の話だよ

たとえば機能Aを追加して、それとは別に同じ規模の機能Bを削除したとしたら、プログラム全体の規模を表すステップ数はプラマイゼロ
だけどその開発の品質評価に使うときは削除量は無視する
だってまるごと削除した機能のテストなんてほとんど要らないから、必要なテストはAの追加分に近似される

差分の取り方の話は、最初のコミットで100ステップ書いたあと、次のコミットでまさにその100ステップを消すことがある
この瞬間的な変動はカウント不要

ステップ数は糞ってことで思考停止してる人がいるけど、今書いた話はFPやほかのメトリクスでも換言できる
2021/04/22(木) 14:22:01.59ID:fYKo/KH7
>>564
それだと変更の意味解釈が必要になるから機械的には計算できないよね

意味解釈をやるのに一番簡単な方法は各コミットを変更内容で分類しておくことなので
結局差分の道のりを含めて集計することになる
2021/04/22(木) 15:01:23.09ID:FJ25hTkO
foo(); bar();
baz();

この2行のステップ数は3なんだが
gitの差分でそれがわかるわけがない
2021/04/22(木) 15:02:40.77ID:FJ25hTkO
>>564
ステップ数に意味がないのだから
適当な数でもいいではないかって話だろ?
2021/04/22(木) 15:03:27.79ID:FJ25hTkO
つまり>>566のステップ数は本当は3だが
2でもいいって話ね。ぶっちゃけ1でもいいw
2021/04/22(木) 17:56:41.20ID:JAiqm9b4
>>560
だから日本はIT後進国なんですね
2021/04/22(木) 19:23:41.51ID:lA0hV636
まあ見積もりは相手を見てどれぐらい出せそうか判断してから決めるんだけどな
赤字が見込まれるのなら受けないだけ
571コルム
垢版 |
2021/04/22(木) 19:47:43.53ID:JzuxwhsV
「import32.lib」から呼び出すのは「MessageBox()」という機能の実体ではなく「利用する為」の呼び出しです。 「MessageBox()」という機能を利用する際「MessageBox()」というプログラムから「import32.lib」内にある情報を参照する必要があります。 つまり参照先のプログラムからさらに別のファイルの情報を参照しているだけです。とはどういう事でしょうか?ご教授いただけないでしょうか?すみません。
以下のURLです。解説願います。ご教授いただけないでしょうか?
https://oshiete.goo.ne.jp/qa/12319888.html
2021/04/22(木) 20:28:48.34ID:weUUVdM3
>>571
実際に処理する実体はDLLというファイルに入っています
それを呼び出すためのサブルーチンがlibに入ってます
(DLLを呼び出さないサブルーチンもあります)

libはおおむね関数ごとのobjファイルを纏めたもので、ビルドの段階で自分のソースをコンパイルしたobjと、必要なobjをlibから取り出してリンクすることで実行ファイルを作ります

処理する実体をアプリに入れてしまうと実行ファイルは数MBに肥大したり、脆弱性が見つかる度にアプリをバージョンアップする必要があります
しかしDLLはWindowsUpdateでアップデートされるので、アプリ側では気にする必要がありません
同様の仕掛けはLinuxでも存在し、そちらはsoファイルと呼ばれます
2021/04/22(木) 20:45:39.32ID:114k4RtJ
ダイナミックリンクとスタティックリンクの話を
スタティックリンクの関数からダイナミックリンクの関数を呼び出す話で
説明してるからわかりにくい
2021/04/22(木) 23:41:16.34ID:j6FG0GAM
WindowsAPIを使う為の設定やらダイナミックリンクやら調べたら直ぐ分かりそうなのに
今時のプログラマはその辺理解出来ないのかw
VisualStudioで該当ヘッダ書いているのに未解決になるのは何故ですか?よりは
マシな質問なのかなw
2021/04/22(木) 23:55:19.52ID:vpBTX9F/
静的リンク←オンボのグラボ
動的リンク←ビデオカード
2021/04/24(土) 00:45:39.02ID:3AAdU7vF
マルチポストイクナイ・・・はともかくとして
プログラマを名乗っている人でもリンカやローダーに理解がある人ってほとんどいなくね?
DLLの使い方は判っていても動作を説明せよと言われたらギブアップしてしまう人が大半に見える
その辺に限らず低レイヤーの解説記事はググってもほとんど出てこないし
2021/04/24(土) 19:39:30.97ID:7lpOLCJL
フォルダを参照して
処理用の関数に渡すための色々なデータを取得してひとつの変数に配列として格納した
この変数の名前はなんてつけるのが普通?
temp? database? container?
2021/04/24(土) 20:09:22.96ID:AS27cm7/
一つならdataだろ
2021/04/24(土) 20:36:07.88ID:RPGHdVOi
>>577
クラス名・変数名に迷ったら書き込むスレ
https://mevius.5ch.net/test/read.cgi/tech/1494147712/
2021/04/24(土) 20:59:32.26ID:7lpOLCJL
>>579
おーセンキュー移動します
581デフォルトの名無しさん
垢版 |
2021/04/25(日) 20:39:42.54ID:VnIulT8w
100秒かかる処理を90秒減らして10秒で終わるようにしたら、10倍に高速化されたことになるわけだけど
その10秒かかる処理をあとたった9秒減らすだけで、100倍に高速化されたことになるのが納得できない

100秒の処理が
100倍高速化したら、うわっ!速ぇ!!!ってなるけど
1000倍高速化しても、お、さっきより速いね。ぐらいにしかならないだろ?
10000倍高速化しても、速いかなー?ってなって
100000倍高速化しても、さっきと違いがわからんってなると思う

10倍ずつ高速化してるのに、どんどん価値が下がっていくwww
582デフォルトの名無しさん
垢版 |
2021/04/25(日) 20:57:31.21ID:tX5v4AJc
>>581
対数定規。
ハイ論破。
583デフォルトの名無しさん
垢版 |
2021/04/25(日) 23:07:05.65ID:VnIulT8w
>>582
対数定規はいいけどさ
みんな○倍高速化!っていうやろ?
あれ実質詐欺やろ?たいして速くなってないやん
584デフォルトの名無しさん
垢版 |
2021/04/25(日) 23:11:13.74ID:VnIulT8w
思うにバージョンアップ毎に、前バージョンより10倍高速化!っていうより
初期バージョンを遅くして、初期バージョンより○倍高速化!って言ったほうが宣伝になるよね

v1より10倍高速化!、v2より10倍高速化!、v3より10倍高速化!、v4より10倍高速化!

v5はv1より10000倍高速化!1万倍高速化!
2021/04/26(月) 01:50:44.97ID:3hvqDDCn
そんな興奮するような話?
10000倍高速化すれば10000万倍のデータでも適度な処理時間で捌けるようになって価値がある
性能向上する必要のないところで頑張ってもメリットはない
それだけのことだよ
2021/04/26(月) 02:16:33.75ID:F4ZyRyR2
>>585
現実には1万倍高速化と100倍高速化が大差ないことが多いという話

嘘だと思うなら10秒かかる処理を1万倍と100倍高速化し比較してみよう
2021/04/26(月) 02:25:55.19ID:wMKnR+sa
嘘も何も当たり前の話だろ
100倍で十分に目標を達成できてるならそれ以上の性能向上は効用が一気に逓減するというだけの話
588デフォルトの名無しさん
垢版 |
2021/04/26(月) 06:11:07.39ID:F4ZyRyR2
効用が逓減してるのに同じ100倍なんだよなw
2021/04/26(月) 15:31:34.10ID:ofH/VCky
1000日かかる計算が100日で済む
10日で済む、1日で済む
2時間で済む、20分で済む
2分で済む、2秒で済む

書いてみればいかに高速化できたか
実感できると思うんだが
2021/04/26(月) 16:39:06.17ID:wMKnR+sa
倍率と絶対数の関係はリニアじゃないから面白いよねっていうのはドラえもんの「バイバイン」で学んだよ
小学校低学年には割とトラウマ物なSFショートショートだった
製品の不良率や純度を90%から99%に改善することはできても、さらに99.9%まで改善するには別次元のコストが掛かるっていう話にも通じるかもね
2021/04/26(月) 18:52:03.72ID:ukdj+zo5
>製品の不良率や純度を90%から99%に改善することはできても、さらに99.9%まで改善するには別次元のコストが掛かるっていう話にも通じるかもね
不良ゼロなどと吠えて利益を減らす情弱経営者が日本にはいっぱいいるように見えるが
2021/04/26(月) 20:47:59.12ID:lWm2yHzp
そこは日本の消費者が完璧なサービスと安心安全が当たり前だと信じて疑わないから仕方ないかもね
2021/04/26(月) 23:07:40.63ID:34+rcCw8
入力、前処理系をまとめたInputクラス
それを受けてGUIを生成するAppクラス
GUIの操作を出力する系のOutputクラス

これってどう繋いだらいいのでしょうか?
dat = Input()
app = App(dat)
app(GUI)上でOutput呼びだし?

??
2021/04/26(月) 23:17:26.84ID:zGgkgXPQ
フロントエンドとバックエンドのことなら
3つのクラスは違う
自分で作るアプリなら好きにつないだらいいんじゃ
>GUIの操作を出力する系のOutputクラス
難解すぎてわからない
2021/04/27(火) 06:12:06.33ID:dGvAJVA2
>>593
MVCとかMVPとかMVVMとか調べて自分が使う実行環境に合わせて使えばよろし。
2021/04/27(火) 08:48:39.36ID:QlcIXrvM
>>594
出力に関係する関数グループはGUI上で呼ぶってことだろう
2021/04/28(水) 18:20:00.95ID:c0w2coaF
2021/04/28(水) 18:37:00.49ID:a9uMhLuq
このスレにいる人なら5chのスレを荒らすスクリプトって何分ぐらいで書ける?
599デフォルトの名無しさん
垢版 |
2021/04/28(水) 20:22:08.25ID:l1/D6DLv
どなたかドットインストールをバレずにダウンロードできるスクリプトを作ってくれませんか?
個人使用のみの目的です。
2021/04/28(水) 21:03:24.55ID:KzNJGFbu
>>598
Selenium使って良けりゃ30分もあればできるんじゃね?やらんけど。
2021/04/29(木) 18:36:59.42ID:/fNSw2zM
SPAの反対というか昔ながらのMVCとかJSFとかASP.NETとかRailsみたいなレガシーなウェブアプリって何て呼べばいいんだ?
602デフォルトの名無しさん
垢版 |
2021/04/29(木) 18:47:35.78ID:aTZmoNVK
MPA
2021/04/29(木) 20:51:22.09ID:2aNgQ2En
なぜシングルページにこだわらないといけないんです?
2021/04/30(金) 00:53:51.71ID:NBApg7VD
二十年ほどの経験から、ページ遷移ってバッドノウハウじゃね?と、かなりの技術者が思うようになったから

三行じゃ説明できない
2021/04/30(金) 04:54:18.26ID:OOQWIiqB
ぶっちゃけ始めるのにいい言語て何 part4
https://mevius.5ch.net/test/read.cgi/tech/1615612545/557-558

今までは、Ruby on Rails, Bootstrap, Docker Compose, Heroku あたりのポートフォリオで良かったのが、
未経験者の実力が上がりすぎて、AWS, Docker, Capistrano, CircleCI も必須になってきた。
AWS Fargate, Terraform なども必要

さらに、SPA対策で、TypeScript, React, Vue.js も

今や、Udemy, YouTube のKENTA・くろかわこうへいのサロンなどによって、
教育革命が起きて、未経験者が10年以上のプロ以上になってしまった!

今の未経験者の戦いは、ものすごいハイレベル!
2021/04/30(金) 08:56:25.52ID:j+EX+6Vx
>>604
じゃあなんでページごとにURLがあるんです?
2021/04/30(金) 09:12:38.23ID:NBApg7VD
>>606
は?
「シングル」ページ、つまりSPAでは「ページごと」にはならんのだから、何を言いたいのか分からない
リソースを特定する識別子がURIなんだから、ページごとにURLがあるのは説明以前の話なので、別の意味で言ってるんだろうが
2021/04/30(金) 10:35:55.20ID:7VhEvZ/Q
android の EditText 要素って、長押しすると「貼り付け、切り取り」などの
メニューが出てくるけど、Undo(取り消し) (Windows の Ctrl+Z みたいなやつ)
はどうやってやればいいの?
もしかしてAndroidでOSが用意している入力要素には、標準ではUndoの機能
が存在しない?
2021/04/30(金) 10:36:51.24ID:7VhEvZ/Q
>>608
iOSでは、本体のシェイクや3本指で Undo のメニューが出てくるらしいけども、
Androidでは無理なの?
もしかして、それが Androidが売れない原因?
2021/04/30(金) 22:19:37.42ID:j+EX+6Vx
>>607
なんでSPAなのにマルチページであるかのように
見せかけるんです?
2021/04/30(金) 22:27:57.35ID:NBApg7VD
>>610
いや「シングル」なんだからマルチページに見せかけるなんてしない
そちら?が、ページごとになんでURLがあるんですか?とか間の抜けたことを言うから日本語通じないのかなと
2021/04/30(金) 22:35:15.15ID:9cqxfo3+
>>610
URLを指定するのがapiを叩くことになってる
2021/04/30(金) 22:40:38.44ID:GH8o4V6X
>>610
履歴を戻ったり進んだり
ある状態のページを人にシェアしたりするため

SPAはページ全体のローディングを最小限にしてUXを向上させるためにやるもの
別にこだわる必要はない
Amazonだって一部はSPA的に処理してるけど大半はMPA
2021/05/02(日) 17:34:34.68ID:xmIaeX3S
いま実行中のJSのプログラムのグローバル変数の値をそのまま維持したまま
GETパラメータ(?)の部分が異なるURLに対して処理を続行することって
できたっけ?
2021/05/02(日) 17:39:56.07ID:xmIaeX3S
>>614
あ、GETパラメータに状態変数を渡して、そこから状態変数を復帰
させればいいからグローバル変数は維持する必要は無いね。
「REST API」というのか、URLの中に状態を含めてしまって、プログラムの中に
状態を持たないような流儀があるけれど、その流儀において、
基本的にJS自らが、URLアドレスを変えたアドレスにブラウザをナビゲート(?)
した場合、新しいURLに対してHTMLが再読み込みされてJSは最初から実行し
始めるが、キャッシュがあるからネットから再ダウンロードはされないって
感じなのかな?
2021/05/02(日) 17:44:06.36ID:hSgvj4Ff
散らかりすぎて文章の中身が全く頭に入ってこない
2021/05/02(日) 17:45:46.21ID:hSgvj4Ff
キャッシュされるかどうかは簡単なJS書いてブラウザで試せばすぐわかるよ
2021/05/02(日) 17:49:50.42ID:xmIaeX3S
RESTful な流儀にする場合、サーバーでCGIを動かして、URLの中の
GET PARAMETERは、HTTPプロトコルでCGIで処理して、クライアント側
では、その辺の処理は余りクライアント側のJSでは行わないのが基本なのかな?
サーバーサイドのCGIで十分というか。
2021/05/02(日) 18:29:51.32ID:GmZFM6c4
>>615
History APIというものを少し調べてみてからもう一度質問するといいんでないかな。
2021/05/02(日) 18:37:55.34ID:D4zHZeZr
Web Storage API を使ってもいいかもね
621デフォルトの名無しさん
垢版 |
2021/05/02(日) 20:39:28.31ID:xUy+uSsS
angular8で自作のコンポーネントを外から.remove()で消してもngOnDestroyが実行されん
どうすりゃ良いの
622デフォルトの名無しさん
垢版 |
2021/05/02(日) 20:40:18.58ID:JUq9yodc
usageの書き方を教えて
あるコマンドcmdがあったとして
・一番目の引数は必須
・二番目の引数は省略可能で、省略しない場合はfooまたはbar
・三番目以降の引数も省略可能、省略しない場合は二番目の引数は必要
っていう場合どう書いたらいいの?
2021/05/02(日) 22:47:25.27ID:0BS/cOos
>>622
決まりは聞いたことがないけど、manのガイドラインとかあったりするのかな?
よく見るのは正規表現っぽい奴

参考以下にしかならないけど、
$ cmd first [(foo|bar) [third ...]]
じゃダメだろうか?
2021/05/02(日) 23:34:53.19ID:hSgvj4Ff
書き方はココを見るといいと思う
http://docopt.org/

>>623のような書き方になるんだけど
わかりにくいので二番目の引数はポジショナル引数じゃなくオプション引数にしたほうがよさそう
2021/05/03(月) 05:44:10.47ID:rJ+KtEzb
>>622
いわゆるBNFで書かれることが多いかな?
626デフォルトの名無しさん
垢版 |
2021/05/03(月) 11:41:33.14ID:6OKMVCkT
>>623
> $ cmd first [(foo|bar) [third ...]

(foo|bar)って書いてあるの見ます?
2021/05/03(月) 12:07:41.44ID:vnYCOkle
>>626
見るよ >>624 で紹介されてる先でも(set|remove)とか例があるじゃん
628デフォルトの名無しさん
垢版 |
2021/05/03(月) 12:10:08.45ID:6OKMVCkT
>>624はusageからパーサーを生成するというツールなので
usage自体が独自定義のDSLになってます。
これ以外で見かけますか?
2021/05/03(月) 12:31:58.51ID:h5k5+/JO
gitのhelpでも見てみれば?

例えばgit help branchの [(--merged | --no-merged) [<commit>]]とか
(-m | -M) [<oldbranch>] <newbranch>とか
2021/05/03(月) 13:22:24.55ID:aV7aDLTY
そもそもボタンなどを押して状態が変化するたびにURLが変化する
ものをSPAというのは定義上有り?
それとも、そのようなものにはMPAと言うべき?
631デフォルトの名無しさん
垢版 |
2021/05/03(月) 13:56:26.94ID:6OKMVCkT
>>629
へー、はじめてしったよ。ありがとう

[--contains [<commit]] [--no-contains [<commit>]]

>を省略する記法もあるんだな。
それともリダイレクトかな?
2021/05/03(月) 15:16:24.89ID:rJ+KtEzb
だからBNF(バッカスナウア記法)にしとけば間違いないよ。
2021/05/03(月) 15:22:12.36ID:o1Kfwn88
BNFというと終端記号/非終端記号を使うと思うが、そんなusageは見たことがないな。
634デフォルトの名無しさん
垢版 |
2021/05/03(月) 15:30:16.70ID:2YZ2w1Eu
>>632
お前、ばっかすなぁ
2021/05/03(月) 15:46:17.10ID:aV7aDLTY
バッカス記法は、アルファベットが斜体かどうかで term かどうかを区別する
流儀と、<term>のように書いて区別する流儀があるが、ASCII文字では
斜体をかけないので後者で書くことになり、そうすると、コマンドラインの
リダイレクトの記号と混乱し易くなることがある。
それと、ちょっと長くなって分かりにくくなったり、直感的でない場合が
あったりする。

任意個の項目を表す時、BNFだと
aaa_list = aaa <aaa_list>_opt
みたいに書く流儀が有る(というよりそれがBNFなのかも知れない)が、これは、
aaa_list = [aaa ...]
みたいに書いたり、正規表現みたいに
aaa_list = <aaa>+
みたいに書いたりとか、色々あると思う。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況