ライン数とステップ数の違いは何でしょうか。

エディタで見たときの行数?
それともコメント行を除いた行数?

このQ&Aに関連する最新のQ&A

A 回答 (3件)

ライン数/ステップ数によるソフトウェアの見積もり/性能評価はアセンブラが主流であった時代の悪習です。



一般にラインは人間が認識する行、ステップはコンパイラ(アセンブラ)が認識するパラグラフ(ステートメントと呼び変えても良い)を意味します。

アセンブラでは1命令/1行を基本としますのでステップとラインは同義となります。
COBOL,FORTANのような「行の概念を持つ言語」は全て同様です。

C,PASCALのように「行の概念が無い言語」においてライン数は意味をもちません。

以下、老婆心ですが…。
現在ではライン数,ステップ数による見積もり/性能評価は時代遅れです。
スキルの低いプログラマほど少ない機能に多くのステップを費やすため見積もりとしての意味がありませんし性能評価基準ともなり得ません。
    • good
    • 0
この回答へのお礼

ありがとうございました。
なにせ発注金額に応じて、納入する仕様書のページ数が求められる依頼元ですので、プログラムも行数が大きければ大きいほど良いということなのでしょう。

お礼日時:2001/03/14 14:56

こんにちは。


私はアセンブラであるLSIのDSPソフトを開発しています。

うちの会社では、
ライン数:命令コードの行数=ROM容量
ステップ数:最悪なデータを入力したときの、時間
としています。
ステップ数はループなどを通った回数×コード数(行数)
を考えるので、必ずしもライン数=ステップ数とはなりません。

ROM容量は少なければ少ないほど、チップの大きさが小さくなり
コスト低下につながります。
ステップ数が少なければ少ないほど、クロックが低周波でもいいので、
消費電力が抑えられます。

gomuさんとはおそらく事情が違うと思いますが、参考にしてください。
    • good
    • 0

このへんの定義は極めて曖昧です。


が、基本的な解釈としては、

ライン数 →エディタで見たときの行数
ステップ数→コメント行を除いた行数、もしくは、
      命令数(Cだったらセミコロンまで)
ですね。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2001/03/14 09:42

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qライン数とステップ数の違いについて

よく”このソフトウェアは○○ラインだ”とか”○○ステップだ”とかいいますが両者に違いはあるのでしょうか?あるとすればどういった違いがあるのでしょうか?よろしくお願いします。

Aベストアンサー

プログラムの規模(大きさ)の事でしょうか?
だとするとラインは単純にソースコードの行数、
ステップはコメントや空行を除き、改行の数ではなく実行命令の数を数えたものになると思います。

プログラムの例
/* てきとうプログラム(言語不詳) */
a = b + c ;print a;

exit 0;
↑ラインで数えれば4ライン、ステップ数でいえば3ステップのプログラムとなります。

Qプログラムの規模を表す単位「k」とはどういう意味ですか?

よくプログラムの規模をあらわす数値の単位として「k(ケイ)」が使われるみたいですが、どういう意味なのでしょうか。

k=1000なので、例えば100kだとするとソースが10万行あるシステムということでしょうか??

よろしくお願いいたします。

Aベストアンサー

KSならば、キロステップ
KLならば、キロライン
KBならば、キロバイト
Kだけでは判断が付かないですね。

キロステップとキロラインは、1行1命令であれば同じになります。
a=b;c=d;e=f;
などと書かれているソースがあれば、1ラインですが3ステップになるので、差が生まれます。

Qステップ数について

私の知人が会社面接にて「ソフトウェア関係の仕事がしたいです」と
言ったところ,会社側の人に「ステップ数はどれぐらいのプログラムを
書いたことがあるのか」とたずねられ,回答に困ってしまったそうです.
彼はC言語しかやったことがないそうで,ステップ数と聞けば繰り返し
何回ループさせたか,ということがステップ数だと思っていたそうなん
ですが(っというか私もそうなんですが...),会社の人の言ってる
ステップ数とはどうやら違う感じがしたらしく,「ステップ数とはなん
ですか」と聞いたところ,それで話しは終わってしまったそうです.
後から調べてみたところ,fortran ではステップ数という言葉が出て来る
ようなのですが,C言語ではあまりステップ数ということばを使わない
ので,会社の人の発言の意味が良く分かりません.
誰かご存知の方がいましたら,教えて頂けないでしょうか.

Aベストアンサー

こんちゃっsohですっ。

ソフトウェア関係の会社面接で「ステップ数」を聞かれた場合
「ソースコードの行数」
の意味になるんですが、これ、コメントは含まないんですよね。
実コード部のみのステップを測るソフトとかどっかにあるんですけどいまどきこんなん計測するやついねーよって
わしもい~っつも思いますわ。

C言語だから使わないとじゃなく、いまどき使わないが一番正確ですかね(失笑
でもちょっと古めの会社とか営業の人はステップで計るくらいしか思いつかないみたいなんですよねぇ
むかぁしは1000ステップでいくらって歩合制も敷いてた事もあったんですよ
だから
while() {
}
ってかかずに
while()
{
}
ってかいてみたりとか。
関数も
int hoe(int a,int b,int c)
じゃなくて

int hoe(
int a,
int b,
int c)

とか
ばっかばかしいよね。

QEXCELファイルのカレントフォルダを取得するには?

EXCELファイルのカレントフォルダを取得するには?

C:\経理\予算.xls

D:\2005年度\予算.xls

EXCEL97ファイルがあります。

VBAで
  カレントフォルダ名
(C:\経理\,D:\2005年度\)
を取得する事は可能でしょうか?

CURDIRでは上手い方法が見つかりませんでした。

Aベストアンサー

こんばんは。
Excel97 でも、同じですね。以下で試してみてください。

Sub test()
'このブックのパス
a = ThisWorkbook.Path
'アクティブブックのパス
b = ActiveWorkbook.Path
'Excelで設定されたデフォルトパス
c = Application.DefaultFilePath
'カレントディレクトリ
d = CurDir
MsgBox "このブックのパス   : " & a & Chr(13) & _
   "アクティブブックのパス: " & b & Chr(13) & _
   "デフォルトパス    : " & c & Chr(13) & _
   "カレントディレクトリ : " & d & Chr(13)
End Sub

Qポートの80と443

こちらのサービス(https://secure.logmein.com/)を利用すると、インターネットを見られるサーバーのポートの80と443が空いていればルータやファイアウォールに特段の設定なく外部からサーバーを操作できるそうですが、逆にサーバーのポートの80や443を空けることには何か危険性があるのでしょうか。

Aベストアンサー

ポート80は一般的なHTTP、ポート443はHTTPSです。
この2つのポートがあいていなければインターネット接続(WEBブラウジング)は出来ません。
ですから、ほとんどのファイアウォールでこのポートは開いています。(インターネット接続を制限している社内LANでは当然閉じていますが)

ちなみに、よく使うポートとしてはFTPで20、21、SMTP(送信メール)で25、受信メールPOP3で110あたりです。セキュリティポリシー上、この辺は制限される事も多いですが、HTTP 80、HTTPS(暗号化用)443は通常閉じません。


危険性?
WEBプロトコルを使ってFTP的なファイル転送(WebDAV)やVPN等も出来るようになっています。当然そこにはある種の危険はつきものですが、WEBブラウジングに伴う危険と大きく変わりません。ウィルス等に感染していればこの2つのポートだけでも相当危険でしょうね。

参考まで。

QExcelで2つのファイルの違い(Diff)をとりたい

Excelでファイル名が同じで更新日付の異なる2つのファイルがあります。
この2つのファイルで内容が変わっている部分を知りたいのですが、良い方法はあるでしょうか?
(もしくは内容が変わっているかどうかだけでも知りたい)

比較が必要なファイルが大量にあるため、一つずつ見比べる時間が無く、困っています。

Aベストアンサー

使ってないのでお勧めはわかりませんが、こちらのフリーソフトを試してみては?
http://search.vector.co.jp/search?query=excel+%94%E4%8Ar

Q3つの表の外部結合

表A、B、Cの3つがあり、Aのすべての行を出力したいと考えています。
外部結合を用いるのだとは思うのですが、3つの表に対して行う場合の
書き方がわからず困っています。
ご教授いただけないでしょうか?
select * from a,b,c
where a.商品ID =b.商品ID (+) and b.商品ID (+) =c.商品ID (+)
としてみましたが、うまくいきませんでした。

Aベストアンサー

ansi構文の趣旨からいえば、結合条件と絞り込み条件は分けて書くので・・

select *
from a
left join b on (a.商品ID =b.商品ID)
left join c on (b.商品ID =c.商品ID)
where a.年月 = 任意の値

と書くのが一般的でしょうね。

Qシンボルが見つかりませんというエラーが理解できません。

以下のようなじゃんけんゲームのプログラムを書いたのですが、「シンボルが見つかりません。」というエラーが表示されるのですが、エラーの意味が理解できず、解決できません。どこが間違っているのか教えていただけませんか。

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.io.File;

public class janken extends Applet
implements Runnable, ActionListener {
private static final int EXTERNAL_BUFFER_SIZE = 128000;

Image image[] = new Image[3];
Thread t;
int index1 = 0;
int index2 = 0;
String msg = "";
String msg1 = "";

boolean state = false;
Button b1 = new Button("ぐー");
Button b2 = new Button("ちょき");
Button b3 = new Button("ぱー");

public void init(){
for(int i = 0; i<=2; i++){
img[i] = getImage(getDocumentBase(),"hanabi" + (i+1) + ".JPG");
}
add(b1);
add(b2);
add(b3);
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
msg1 = "結果は・・";

}

public void paint(Graphics g){
g.drawImage(img[index1],350,30,this);
g.drawImage(img[index2],695,30,this);
g.drawString("コンピューター",420,300);
g.drawString("あなた",800,300);
g.drawString(msg,630,320);
g.drawString(msg1,550,320);
}

public void start(){
state = true;
t = new Thread(this);
t.start();

}

public void run(){
while(state){
index1++;
if(index1 == 3){
index1 = 0;
}
index2++;
if(index2 == 3){
index2 = 0;
}
repaint();
try {
Thread.sleep(60);
}catch(InterruptedException e) { }
}
}

public void actionPerformed(ActionEvent e){
if(state == false) {
start();
return;

}
state = false;
if(e.getSource() == b1) {
msg = "ぐー";
index2 = 0;
}

else if(e.getSource() == b2){
msg = "ちょき";
index2 = 1;
}

else if(e.getSource() == b3){
msg = "ぱー";
index2 = 2;
}
check();
repaint();
}

public void check() {
if(index1 == index2) msg ="あいこ";


else if (index1 == 0) {
if(index2 == 2) msg="あなたの勝ち";
else msg ="あなたの負け";
}

else if(index1 == 1) {
if(index2 == 0) msg="あなたの勝ち";
else msg="あなたの負け";
}

else if(index1 == 2) {
if(index2 == 1) msg="あなたの勝ち";
else msg="あなたの負け";
}

}
}

以下のようなじゃんけんゲームのプログラムを書いたのですが、「シンボルが見つかりません。」というエラーが表示されるのですが、エラーの意味が理解できず、解決できません。どこが間違っているのか教えていただけませんか。

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.io.File;

public class janken extends Applet
implements Runnable, ActionListener {
private static final int EXTERNAL_BUFFER_SIZE = 128000;

Image image[] = new Imag...続きを読む

Aベストアンサー

「シンボルを見つけられません。」というエラーの下に何か表示がありませんでしたか?そこにヒントがあると考えられます。
シンボルを見つけられませんといエラーが表示される主な理由は4つあります。
(1)クラス、メソッド、変数などの綴りミスや定義していない変数を使用している可能性がある。
(2)コンストラクタを呼び出すときに、newを忘れている可能性がある。(3)公開されていないメンバーを呼び出している可能性がある。
(4)必要なimport文を記述し忘れている可能性がある。
ここでのあなたのエラーは(1)番ではないでしょうか?上記ではimageとなっている変数がimgになっていますね。
これはエラー表示をよく見ることで意外と簡単に解決できるのです。
ゆっくり丁寧にエラー表示を見るように心がけることが大事ですよ。

Q目標管理シートの書き方について

現在駆け出しのプログラマですが、このたび会社で半年毎に目標管理シートを記載し、下記についてどういう目標を立て実現をめざすかということを記述する事になりました。

1. 利益率の向上
2. 納期の厳守
3. 不良の再発防止
4. 品質の向上
5. 会社業務の生産性の向上
6. 個人の技術力の向上

そして私が思うに下記のような制約があるのですが、この状況下で適切な目標とはどういうものかというのが分からなかった為、アドバイスいただける方がいらっしゃいましたら、ご教示の程よろしくお願いします。

1. 半年毎に数値で評価する事が可能な目標にする必要があると思います(例え数年かかる目標でも、半年毎にその進捗状況が数値で評価できる目標にする必要があると思います)。
2. 一応業務のメインはプログラミングですが、設計などを行なう可能性もあり、半年の間にどのような業務を行なうかは目標設定時には分かりません
(大まかに絞れば、ソフトウェア開発ということになりますが、例えばプログラミング色の強い目標を設定した所、実は業務でプログラムをやることがほとんどなかったという可能性もあり、あまり狭い範囲に絞った目標の場合、自分でコントロールできない所で目標が達成できなくなる可能性があります)。
3. プログラミング言語はその時々で適切と思われる言語が決定された状態で指示される為、半年の間にどのような言語を使用するかは目標設定時には分かりません。

なお、アドバイスについては、具体的な目標、及びその目標の達成基準をご教示いただいてももちろん大丈夫ですし、こういうサイトがあるですとか、こういう考え方があるですとかというような情報でも大丈夫です。
アドバイス等によっては、特定の会社では使えるものの、特定の会社では使えないことなどもあると思いますが、できるだけ多くの意見をいただけると参考になり助かります。

また、情報不足等があり、補足が必要でしたら、その旨ご指摘いただければと思います。

以上、よろしくお願いします。

現在駆け出しのプログラマですが、このたび会社で半年毎に目標管理シートを記載し、下記についてどういう目標を立て実現をめざすかということを記述する事になりました。

1. 利益率の向上
2. 納期の厳守
3. 不良の再発防止
4. 品質の向上
5. 会社業務の生産性の向上
6. 個人の技術力の向上

そして私が思うに下記のような制約があるのですが、この状況下で適切な目標とはどういうものかというのが分からなかった為、アドバイスいただける方がいらっしゃいましたら、ご教示の程よろしくお願いします。

1. 半年毎...続きを読む

Aベストアンサー

コンピュータシステム開発会社に勤務しております。
うちの会社も、通年の目標管理が設定され、半期ごとに、個人評価、上司との面談を行っています。
質問者様の勤務する会社が自社開発ソフトか、業務委託型なのかにもよりますが、業務委託型として、私なりの
考えです。
1.利益率の向上
   顧客先との契約では、個人の単価が関係してきます。個人の単価を上げるためには、顧客先からの評価を
   高めること。つまり、業務知識に精通することです。
2. 納期の厳守
   当たり前なことですが、時として守れないことがあります。メンバーのスキル不足。納期厳守の意識不足。
   あとは、業務開始時に仕様が明確になっていないため、作業工程に戻りが発生すること。また、追加仕様を
   無計画で受け入れてしまうことです。
   開発当初の仕様を明確にする。レビューを繰り返し実施する。仕様変更・仕様追加が発生する場合は、納期を
   どうするか、あらかじめ決定しておくこと。
3. 不良の再発防止
   不良(不具合)の原因としては、仕様もれ、仕様の理解不足・テストケース不足が考えられます。そこで、各工程で
   レビュー(検討会議)を繰り返すこと。テストについても、テスト仕様書のレビュー、テスト結果報告書のレビューを実施
   します。
   万一、不良があった場合、それを記録として残すこと。
4. 品質の向上
   不良を出さないこともありますが、ユーザー側の立場に立った、仕様の検討・提案ができるか?
5. 会社業務の生産性の向上
   会社で、過去に開発したシステムで、再利用・2次利用できるものを活用し、作業工数を減らすことです。
   無駄な残業をしないことも、当然ですね。
6. 個人の技術力の向上
   コンピュータ関連の資格を取得すること。会社として、共通して使用しているツール・DBなどの知識を深めること。
   新規技術(クラウドなど)の情報収集に努めること

参考になれば幸いです。
もうすぐ50のSEでした。
  

コンピュータシステム開発会社に勤務しております。
うちの会社も、通年の目標管理が設定され、半期ごとに、個人評価、上司との面談を行っています。
質問者様の勤務する会社が自社開発ソフトか、業務委託型なのかにもよりますが、業務委託型として、私なりの
考えです。
1.利益率の向上
   顧客先との契約では、個人の単価が関係してきます。個人の単価を上げるためには、顧客先からの評価を
   高めること。つまり、業務知識に精通することです。
2. 納期の厳守
   当たり前なことですが、時として守...続きを読む

QSQLで特定の項目の重複のみを排除した全項目を取得する方法

私は仕事上でデータベースを扱っていて、タイトルのような処理を行う必要があるのですが、いかんせん方法がわからずネット上を検索しても同様だったためここで質問させていただきます。

質問点を簡単に説明いたしますと、
たとえばAというテーブルがあって、

項目名1 項目名2 項目名3 項目名4
 A    あ    ア    亜
 A    い    ア    以
 A    う    ア    宇
 B    え    イ    江
 B    お    イ    尾

上のような構造になっている場合に「項目名1」について重複している項目を排除し、結果として


項目名1 項目名2 項目名3 項目名4
 A    あ    ア    亜
 B    え    イ    江

上のようなデータを取得したいのです。
この時に、Aの重複を排除して取得するレコードは1~3行目のどれでもよいです。
また、データを取得する際には必ずそのレコードの「全項目」を取得したいのでDistinctはうまく使えませんでした。

どなたか詳しい方、方法を教えてくださると幸いです。回答お待ちしております。

私は仕事上でデータベースを扱っていて、タイトルのような処理を行う必要があるのですが、いかんせん方法がわからずネット上を検索しても同様だったためここで質問させていただきます。

質問点を簡単に説明いたしますと、
たとえばAというテーブルがあって、

項目名1 項目名2 項目名3 項目名4
 A    あ    ア    亜
 A    い    ア    以
 A    う    ア    宇
 B    え    イ    江
 B    お    イ    尾

上のよ...続きを読む

Aベストアンサー

比較可能で一意性のある値をもてる項目6をテーブルに追加して、

select T.* from T, (select Item1,min(Item6) as Item6 from T group by item1) W where T.item6=W.item6;

――ってやるのが、一番手っ取り早いと思います。
他のところに影響がでないのであればですが。
oracleならrowidを使うとか、レコードの更新時刻を突っ込むとか。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング