Hello Worldをこえて

プログラマとして生き残るための備忘録

電卓の作成 (その3)

 前回は、構文木を作成せずに * 」「 / 」括弧を優先的に計算できる電卓を実装した。今回は、この処理に、構文木を作成し中間言語っぽいものを出力する処理を追加した。

 

github.com

 

 初回のあまり理解せずに作成した電卓の処理より、かなり簡素化した処理で実装できた。次回からは、コンパイラの作成にとりかかる。

 

 

 

 

電卓の作成 (その2)

 前回の電卓の作成では、「+」「ー」を処理する構文木を作成し、構文木から中間言語の出力、C言語の出力、インタプリタのように順次計算する処理を実装した。

 次に「 * 」「 / 」と括弧の優先度に対応した計算処理を実装した。
前回実装時に参考にしたサイトは理論は理解できるが、いきなりコードに落とし込むには少し分かりにくかった。そこで、下記サイトを参考に、まずは構文木を作成せずに順次計算する処理を実装した。

 

構文解析 Howto

構文解析 - アルゴリズム講習会

 

 それで作成したコードがこれ。

github.com

 

 作成中に気づいたが電卓の内部処理は「逆ポーランド記法」に変換される。そもそも、wiki に「プログラミング初心者の練習課題として、逆ポーランド記法の電卓を作ることがよく行われる。」と書かれていた。

 

 次は、今回作成した処理から、「 * 」「 / 」括弧の優先度に対応した、中間言語を作成する処理を実装する。

 

電卓の作成

 昔からCやC++でコードを書くときに、メモリ管理やクラスの読み込み方の動作が気になったので、コンパイラを自作してみることにした。 といっても、いきなりコンパイラを作ろうとしても、何から手をつけていいのかわからなかったので、ネット上のコンパイラインタプリタの記事を漁っていたら、優良なサイトや大学での資料が見つかった。

抽象構文木

筑波大学 情報学類 プログラミング 言語処理 講義資料

 

 とりあえず講義資料を参考に、自分なりの電卓を作成してみた。

github.com

 

 例外処理や確保したメモリの解放とかが気になったけど、「+」「ー」を計算する処理をまず実装した。 次は、括弧つきの計算などが入った場合に、優先度が変わる電卓を作成する。 

 

繰り返し発生する単純作業の労力を減らす方法

最近作業量が極端に多く、自分が行うべき本来の仕事が進まないことが多い。

単純なシステムの申請作業や開発環境の構築が極端に多いからだ。

それらの単純作業に、項目の検討や、前回行ったことを思い出す労力が強いられ、結果として本来の仕事時間を心理的・時間的に圧迫するようになっていた。

 

このようなことがあり、検討・調査に5分以上費やした内容については、全て簡易な手順書(スクショ)を作成することにした。

 

やり方は以下の通りである。

 

① 申請、調査、構築作業などのうち、5分以上かかった内容について、画面をスクショする。

② 作業の合間に、スクショに説明文を付け加え、フォルダに保存する。

③ 調べたURLや参照した資料も上記フォルダに保存する。

④ 次回以降、同様な作業や関連する作業を行う時に、その手順書(スクショ)を参考に作業を実施する。

 

これによって、繰り返し発生する、単純作業の作業時間が短縮された。また、一番効果を感じたのは、心理的な余裕が発生し、それらの単純作業の後回しがなくなったことである。

今後はこの手順書を後輩の指導用として用いる予定である。

 

 

 

【本】外資系コンサルに学ぶ聞き方の教科書

 以前からの自分の欠点として、相手の話や質問を理解することに時間がかかることが気になっていた。特にプレゼン時などの緊張している際はなおさら、理解する事に時間がかかるし、最悪質問の回答としてずれていることを答えていることがあった。

つまり相手の質問に正確に答えることが苦手である。

 

おそらく、自分の理解する過程が

「相手が話す」 →「 相手の言葉から自分の言葉に変換」 →「 理解する」となっていて、変換する作業が苦手なのだと思う。

 

対応策としては、聞くと同時に英語のシャドーイングの様に復唱するか、文字と書き出しているが根本的な解決になっていない。

 

この欠点を改善するために、本書を手に取ったが、内容は思っていた内容とは異なった。

 

 本書の内容は、自分が相手から聞きたい・知りたいことを聞き出すツールフレームワーク・姿勢や相づちの方法や準備について書かれている。そのため, 何らかの意図のもとで相手に質問する立場にいる場合や、話題の中心が相手の場合やには有効であると思われる。

 

*内容の詳細については後に加筆しようと思う。