
私は仕事で現在コボルを使用しています。
コボルどころかこういった専門的なものは初めての初心者です。
最初のうちは短い行のプログラムを読んで理解して修正して・・・と、苦しいながらも先輩方に聞きながら進んでいきました。
しかし段々と量が増え、さらにプログラムが複雑になり(色々なところに飛ぶ)ついていけなくなりました。
先輩方に部分部分聞いても自分自身が
「ここがこうなるからこっちはこうなる。そして次でこれが・・・」
という理解をできていないのですぐ分からなくなります。
そこで皆様に聞いてみたいのですが、長いプログラムを読むコツみたいなものはありますでしょうか?
「IF」などで分岐していくともう頭がこんがらがり余計に理解ができなくなってしまいます。
1をAに、さらにそれをBへ。そしてCに入れ最後にD・・・などもよくあるのですが「何故そんなに遠回りを?」と思い追いかける気力が無くなってしまいます。
どうかよろしくお願いします。
簡単ではないでしょうが頑張ってコツみたいなのをつかんで壁をこえたいです。
A 回答 (9件)
- 最新から表示
- 回答順に表示
No.9
- 回答日時:
自分は、もう15年以上COBOLにどっぷりつかっています。
造る側の視点で自分が心がけていることを挙げていきますね。
・解りやすいように造ること。
・GOTO文の乱立は行わないこと。
・セクション分割すること。
・階層を深くしすぎないこと。
・フラグコントロールを少なくすること。
・階層化の開始文字位置をあわせること。
・状態分岐は全パターンを想定すること。
・コメントを利用し読みやすいプログラムにすること。
・無限ループにならないように気をつけること。
・再帰的呼び出しはなるべく使用しないこと。
・処理のトリガーとなる条件を把握しておくこと。
ひょっとしたら、読んだプログラムが
このいずれかを守っていなくて
読みにくくなっているのかもしれませんね。
だから、「何故そんなに」と
お考えになるのは非常にいいことだと思います。
No.8
- 回答日時:
質問への回答は他の方がされているようなので、
経験上からひとこと。
(質問への回答ではないので、これは参考になりません^^;)
>私は仕事で現在コボルを使用しています。
>コボルどころかこういった専門的なものは初めての初心者です
COBOLは言語仕様上分りにくいと思います。
以前、COBOLを使用していましたが、
Windows主流の言語などを憶えてしまうと、使用したくないですね。
「PERFORM」は必要ですが、
「GO TO」をロジック上の基本適なところで使用しているのはかんべんしてほしいです。
また、変数のスコープが無いというか、
故意に全体的に使用するところがどうも・・・。
ツールの話になりますけど、
Windows主流の言語の開発環境にあるデバッガのようなものがあれば、
そこまで苦労しないんだろうな・・・。
>1をAに、さらにそれをBへ。そしてCに入れ最後にD・・・などもよくあるのですが
>「何故そんなに遠回りを?」と思い追いかける気力が無くなってしまいます。
(実際はどうなのかは分りません)
必要なことで処理を行っているのは当然ありますが、
無駄に処理を行っている場合も絶対無いといえません。
「意味無いだろ」とか「もっとスマートに出来るだろ」というようなソース^^;
しかし、仕様上、ロジックがどうしても複雑になる、
作りこんでいったら結果そうなったという経験も自分にはあります^^;
おおまかな仕様およびロジックを理解してからプログラムを細かく追ったほうがいいですね。
しかしながら、人のプログラムは分りにくいです。
個人の考え方が入っていますから。
すんません。個人的な話でした^^;
No.7
- 回答日時:
コンピューターってバカなんですよ(笑)。
なのでなにか動かそうと思ったら、赤ん坊に物を教えるようなつもりで取り組まないといけません。プログラムってそういう作業です。例えば中学生に箸を持たせようと思ったら「箸を右手で持て」って言えば通じますが、赤ん坊(まあ言葉は理解するとしましょう)には「はーい、これは『箸』って言いま~、わかりまちゅか~?は~い、いい子ですね~、じゃあこっちの手の人差し指と親指で・・・」とまあこの位の手間が掛かりますよね。コンピューターを相手にするっていう事は実はこういう事なんですよ。プログラムコードを読むって実はものすごい大変な作業です。特に人の書いたプログラムはベテランでも読むのが大変です。ただ、1行づつ命令を読みながら自分がコンピューターになったつもりで追って行くんです。今、ここが何なのか、なぜこういう事をしているのか、ああ、だからここでこっちに行くんだ・・・プログラムは1行1行意味があるもので、その意味を考えながら追っていけば、多少は理解が深まります。
ちなみに僕が最初に取り組んだのはファミコンのアセンブラという言語(っていうのかな?)でした。アセンブラって足し算と引き算しかないんですよ。掛け算も割り算も足し算引き算を組み合わせて自分で作るんです。それからすると、始めてC言語っつーものを見た時は感動しました。2*2って書くだけで4になってくれるんだもん(笑)。
確かに他人が書いたプログラムを理解するのは難しいですね。
質問の時にも書いたのですが「何故こんな?」ということも製作者には当然考えがあってのことで・・・。
落ち着いて一行ずつ読んでいったりしてるのですが段々焦りだしてやけになって「分からん!」となってしまっています。
とにかく一度理解できる段階までいければ何か見方が変わるかなとは思うのですが。
ありがとうございました。
No.6
- 回答日時:
プログラムって、何かをするために作る物ですよね!
ここでは、同意をいただいたとして、今はやりたい事がとても複雑になってきており一つのプログラムでは出来ませんので、複数のプログラムが集まって実現しています。
そうなると、一つのプロクラムの1行では本当に小さな事しかしてないのでそこだけを見ても
質問者が書かれているようになんでこんな事を考えてもしかたがないのでと思います。
もちろん個々の動きが分からなければ全体は分からないとも思いますが、全体からと言うかトップダウンで考えて、何々をするために、このプログラムで何々をしている、さらにこの部分ではXXをしているとしておっかけていけばよいので無いでしょうか ?
> 「IF」などで分岐していくとか、「何故そんなに遠回りを?」
と書かれていますが普通のプログラムでは一度に一つしか出来ませんので、やりたい事別にやりたい事を書いて(処理、対応)して行くしか方法が無いのでは無いでしょうか ?
そうなんですよね。
複数のプログラム・・・これが正直現状でとてもキツイんです。
メモをとっていても別のプログラムに飛んで戻ってきたらもう頭が混乱していて。
頭ではおっしゃっているように仕方が無いと分かっているのですが実際追いかけるとなるとまだまだ私にはデカイ壁です。
ありがとうございました。
No.5
- 回答日時:
フローチャートにしてみればなんとなくわかってきますよ。
1つ1つの処理を作っていくって感じですかね・・・いくつもこなしていくうちにわかるようになってきましたよ☆あたしもはっきり言ってキライです・・・見たとたんに「終わってる」ってやる気なくしてました・・・
「見たとたんに終わってる」・・・まさに私がそれですw
数をこなしていけば慣れるか、というのも考えていたのですが先に参ってしまいそうです。
確かに始めのうちはプログラムよりもフローを追いかけたほうがとっつきやすい感じはしますね。
ありがとうございました。
No.3
- 回答日時:
最初のうちは、1命令単位で何をやっているのか。
どんな命令で何をやっているのかを把握してくだ
さい。
その次のステップとして、条件分岐など、数ステップ
単位で何をやっているのかがわかるはずです。
それらを頭の中で組み立てようとすると、頭がパンク
してしまいますので、絵とか図に書いて、整理します。
これをフローとか、流れ図といいます。
また、ソースレベルで分からない命令などは、朱書き
など、チェックしておくのも、いいでしょう。
たしかに頭の中で考えていました。
「さっきこれをやったから今は値が変わってて・・・あれ?」
パンクしっぱなしでしたね。
メモはとっているのですがメモを見返すのもまた一苦労・・・という現状です。
慣れない間は本当に大変です。
ありがとうございました。
No.2
- 回答日時:
>何故そんなに遠回りを
必要だから・・・
会社の入金伝票処理を考えてください
顧客から入金されます
「入金されたら領収書」だけなら簡単ですが
通常は
元帳を引っ張り出して
顧客名から現在の売掛金の集計をして売り掛け合計から入金を差し引いて・・・
「なんで売り掛け金を集計するの」とは思わないですよね
必要だから・・・・
全体の処理の流れが解っていないから「飛ぶ」必要性がわからないのだと思います。
全体の流れを分かる前にこっちが先に参ってしまうんですよね・・・。
まぁ私が情けないだけなんですが。
今まではでたらめに追いかけるだけだったんですが流れを意識してみようと思います。
ありがとうございました。
No.1
- 回答日時:
まずは仕様書でしょうね。
そのプログラム全体が何をしようとしているのか、そして
全体の中で今見ている部分は何をしようとしているのかをつかんだ上で、このIF文の目的は、と見てみるとよいのではないでしょうか。
#元のソースの品質にもよるのですが・・・
私が解析的なことをする場合、長かったり分岐が多いものはプリントアウトしてまず流れを追うようにしてます。
紙ベースの作業は賛否両論ですが(^^;
私もプリントして追っているのですが、見るだけで「やる気」を奪われるのが一番大きいですね。
先輩曰く「非常にクセのあるプログラム」だそうですw
くじけそうですが、頑張ってみます。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 どっちと思いますか 4 2022/10/10 11:16
- 会社・職場 30歳男です。 仕事で無気力になりました。 機械据付の仕事に転職して4年経ちました。半人前なのに現場 4 2022/09/06 07:06
- 会社・職場 30歳男です。 仕事で無気力になりました。 機械据付の仕事に転職して4年経ちました。半人前なのに現場 2 2022/09/04 20:54
- 会社・職場 30歳男です。 仕事で無気力になりました。 機械据付の仕事に転職して4年経ちました。半人前なのに現場 3 2022/09/15 06:56
- その他(悩み相談・人生相談) 30歳男です。 仕事で無気力になりました。 機械据付の仕事に転職して4年経ちました。半人前なのに現場 1 2022/09/01 08:59
- 会社・職場 30歳男です。 仕事で無気力になりました。 機械据付の仕事に転職して4年経ちました。半人前なのに現場 7 2022/09/01 00:10
- 会社・職場 30歳男です。 仕事で無気力になりました。 機械据付の仕事に転職して4年経ちました。半人前なのに現場 2 2022/09/01 21:55
- その他(悩み相談・人生相談) 30歳男です。 仕事で無気力になりました。 機械据付の仕事に転職して4年経ちました。半人前なのに現場 1 2022/10/28 00:15
- 会社・職場 30歳男です。 仕事で無気力になりました。 機械据付の仕事に転職して4年経ちました。半人前なのに現場 3 2022/10/27 21:46
- 大学受験 大学受験 辛い 英語 読めない こんにちは。 現在大学受験をしてる者です。 色々あり浪人なんですけど 11 2022/09/06 12:03
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Ryzen 3700(無印)はWin11に対応...
-
API、OCX、DLLって何でしょう?
-
BiilderとD-Show フレームレー...
-
C/C++でチャットソフトを作りた...
-
FORTRAN でプログレスバーを作る
-
PICの逆アセンブル?について
-
Unityがすごく遅いです。ノート...
-
SNMPトラップ情報をC#.netで作...
-
バージョンのつけ方
-
ニンテンドーDS用、自作プロ...
-
VBプログラムをEXCEL VBAに移植...
-
MS-DOSで作ったBASICプログラム...
-
プログラマの実力の奥深さ
-
オフラインの掲示板
-
EXCEL-VBAのプログラムを移植し...
-
このプログラミング誰か教えて...
-
i,j,k
-
1年無職の彼氏 別れるべきですか?
-
Excelで用語辞典を作成するには?
-
6~7割の正解で、なぜ合格?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
API、OCX、DLLって何でしょう?
-
Ryzen 3700(無印)はWin11に対応...
-
VBプログラムをEXCEL VBAに移植...
-
コンソールアプリでファイル選...
-
SNMPトラップ情報をC#.netで作...
-
C言語のHP-UXからLinuxへのポ...
-
C#のプログラムを読むコツって...
-
オフラインの掲示板
-
大至急!!! ピクトグラミング...
-
VBS:コンピュータ名を取得し、...
-
printf系の書式「w」ってなに?
-
UNIX環境でのCプログラム上でC...
-
VB.net エラーメッセージを英文...
-
C言語プログラミング 逆行列を...
-
CoInitializeSecurityが失敗する
-
PICの逆アセンブル?について
-
変数の大きさを超える代入
-
自動で施設の空きを通知するプ...
-
ニンテンドーDS用、自作プロ...
-
C/C++でチャットソフトを作りた...
おすすめ情報