最近任された仕事が上司が書いたソースコードを修正することでした。
ただ、私には上司が書いたソースコードが全く読めませんでした。
時間がかかりすぎて仕方がないので、別の先輩社員がやってくれることになったのですが
任された先輩社員も書かれているソースが何をしているのか全くわからず読めない。結局、先輩社員や別の同僚も協力して修正を行うことになりました。
仕様書と作成者である上司の説明を聞きながら、ソースコード上で行われている操作を、一行ずつ確認しているのですが今まで見たこと表現?が多く苦戦しています。この一行で、こんな操作ができるのかと。(わかりにくい説明ですみません)
システムエンジニアーやプログラマーの方にお聞きしたのですが、ソースコード上全く見たことがない表現?が出てきた場合、その行で行われている操作や意味をどうやって探しますか?
googleでわからない行のソースコードを入れて検索しているのですが、出てこないのも多々あり困ってます。教えて頂けたら非常に助かります。
下記の前提で。
自分であれば、まずは、実際に動かして雰囲気をつかむところから始めます。
JavaScript, VBA等間口が広く、デバッグ環境が充実しているようであれば1行ずつのStep実行で。
汎用機のCOBOL、アセンブラ等、古い環境であれば、一時的にソースコードを改変して、時点時点での変数の値を出力させる文を挿入したりします。
全体の雰囲気→利用されている変数の役割の推測→…と、だんだん具体化詳細化していきます。
上記の方法が通用しないプログラム(プログラム自体を書き換えて実行経路を曲げるとか、命令文自体には意味が無く、副作用にだけ期待するとか)もあります。その場合は、上司を拘禁し、拷問にかけるべきでしょう。
具体例が示されていないので、なんともいませんが
上司の方のプログラムは、草創期のプログラムなのでは。
昔は、マシン速度や、プログラム行数の制約があったりして、
ロジックを工夫して処理速度や行数優先にしたプログラムを
組むことがしばしばありましたからね。
基本C言語で書いているのに、
部分的にアセンブリに処理を渡したりとか、
プロセッサのアドレスに直接入力したりとか。
条件分岐や論理演算を行うのに、
ベン図を描いて最適な場合分けを求めて、
条件判定数を減らしたりとかして。
懐かしいものです。しみじみ。
そういうのになると、ほんとに何やってるかわからない。
で、そういう前時代のテクニックは、ほとんどインターネット普及前のものなので
ネット検索しても出てきません。
上司の方に、後々のメンテナンスのことを考えて
現代風の記述に直したいんですけど、
なんて相談するのもアリかと。
文法が分かったうえでソースを読んでも、何をやってるかさっぱり分からないというプログラムはたくさんあります。
2016/01/31 22:30:40逆行列や固有値を求めたりするようなのは、数学の知識がないと何をやってるか分かりません。
アルゴリズムは単純でも、クイックソートやモンテカルロ法などもソースを見ただけで分かる人は、極稀でしょう。