So-net無料ブログ作成
μ itron ブログトップ
前の10件 | -

コードの読み方 教わった。 [μ itron]

1.めんどくさがること。
 虱潰しに調べるのが一番 コストがかかる。

2.要点をまとめて、人に尋ねる。
 自分はどこまで調べて、どこがわからず、これからの見通しをどうすればよいか尋ねる。

3.printf()に限る
 これだけで8割がた、何とかなる。いや、真実。
 基本に帰ろう。初心忘るべからず。 昔の人の言うことは聞きなさい。い~や、たまに
 思い出しなさい。
  そして、そのログを見ろ。そして推理しろ。

4.調べる、手を動かす前に、少し考えろ。または、これでいいのか、できる奴に確認しろ。
 それから、実行。
 書いてる通り。

5.落ち着け
 ゆっくりと、確実にやるほうが、時間がかからない。
 急がば、回れ。 この意味は、やばい状況でも「クール」を心がけること。
 
 何とかなる時はなるし、ならない時は何をしても無駄。

6.推理小説でも嫁。
  ある事実(キーワード)から、犯人(バグ、問題)を確定する。
  とどのつまり、私の仕事はこれだ。

以上

もっと もっとコードを嫁 [μ itron]

自分が

 ある一定の規模以上のソフトウェア
 多人数で書かれた、スパゲティ・コード
 C言語
 たくさんのファイル

を解析する能力が著しく 貧相であることがわかった。

達人に聞くと、
 どのソースか、いま理解する必要があるのか?の切り分け
 名前の付け方
 追いかけ方 沢山使われている、作戦の変え方

などが必要なのがわかった。けど、今の場所では僕のキャリアは通用せんかった。
実力不足だ。

負けた。

テキスト処理、正規表現。パターンマッチとアクション [μ itron]

最近、ひっさびさの、テキスト処理の仕事がきた。

僕はこれは結構得意にしている。
使用する言語はawk, sed, shell, tcl, そしてpythonかな。

perlは嫌いだ。どの言語もやることは、そんなに変わらない、ファイルを読み込み、
パタンを見つけ、処理、そして、それをファイルに書き込む。以上。

awk はファイルを標準で受け取り、行単位で検査。
sedもそれに近いか、置換は一番楽かもね。

tcl とpythonはほとんど同じ。fopen -> fread -> 何かしらの処理 -> fwrite -> fclose
Cよりは楽かな。

以上

コードを読む者2 [μ itron]

最近、ずっと、同僚と既存のコードを読み、手直しして、コミットという
作業を繰り返している。

他人がどうやって、コードを解析しているのかは、参考になるが、
基本は同じだと感じた。

grepだ。そして、良いエディタ。頭のひらめきと、勘所、いままでの経験。
そしてロジックだ。これらを散りばめて、シャーロック・ホームズに推理して
ほしい記述をヒットさせる。

うん、匠の技だ。いや、ソフトウェア技師の必須技能か。

勉強になっている。もっと教えを乞おう。明日も。

コード 読む 者 [μ itron]

他人のコードを読むのを好きな人はあまり居ないと思う。

でも、オープンソースに関わる人なんかは、まず、人の他人を読み、
記述する場所を見極め、そしてソースを編集する。

つまり、他人のソースを解読しないといけないのだ。
この能力がないとオープンソースコミュニティに貢献できない。

現在ソフトウェアエンジニアで一旗上げたいのであれば、オープンソースに
絡まなければいけないと思う。それには、まず、オープンソースのコードを
読まなくてはいけない。

プログラムは、エレガントに書こうが、スパゲティにしようが、その機能が実装される
ことが第一プライオリティなのだ。そしてそれが堅牢であれば何も問題はない。
という事が多いと思う。

それをリファクタリングしたい御仁は、まずその酷いソースを読まないといけない。

最後に
 これは考古学、古文、に近いよね。 先人の残した有り難い文書を     読む

仕事の近況 [μ itron]

現在、lispを使った仕事をしている。

対象は、地デジTVの番組表を作っている。お絵かきやね。
そのプログラムがLISPで書かれている。めんどくさい。

座標と色をいじるくらいだから、そんなに難しくないような気はする。
そんなに難しい事はさせてもらえないしね。すこし気の利いた雑用だね。

まあ、お金を貯めようと思う。¥5Mくらい。爪に明かり生活します。

岐路 技術者 人のプログラムをハック [μ itron]

他人のコードを読んで、理解して、何か施す。

思ったより、難しい。コードがバグっている場合が多い。

何がおかしいのかわからないが、期待通りの動作をしない。

これを文字通り、何とかする(ハックする)必要がある。

僕は、この作業が、とても苦手だ。やりがいはあると思うが。

1年はがんばるが、ダメだったら、商売を変えます。

人のソースをハックする [μ itron]

僕の仕事は人の仕事を追跡して、適切な変更を施すことだ。

その人の仕事が丁寧で、系統だっていればわかりやすいが、
現場ではそうはいかない。

毎回ここで、僕は行き詰まる。本当に駄目だと思う。

なんとかするにはどうしたらよいのか。ひたすらにらめっこして、
いじり倒すしかないね。

今日のつれづれ 勉強メモ [μ itron]

1.静的APIという名のスクリプトもどきをcfgファイルというものに記述。
 マルチ・タスク記述もここで書いたりするみたい。優先順位や、スケジューリングなどか。

2.オブジェクトという処理単位が中心になっている。

3.オブジェクトは、タスク、メモリ・プール、セマフォ、イベントフラグなど。
  カーネルが処理する対象である。また、タスクは被対象でもある。

4.コンテキストとは、そのタスク中のレジスタの内容。ディスパッチャでその内容を入れ替えたり
  するのかな。

5.おもにRTOSはリソース(メモリ、時間か)の管理を行っている。時間の管理とはスケジューリング
  であり、メモリの管理とは、malloc()とかのことなのか。

6.Cの標準関数は使えるのか?これが使えないと、C言語はアセンブラみたいなものだ。
  でもCはOSを記述するための言語だからね。

僕は、あまり大きい組織で、でかいプロジェクトをこなした事はない。小さいプログラムを一人で管理して、
それを上司に渡すスタイルのみだった。その場合は、あまりOSの必要性などなかった。

ソースの再利用などもあまりしたことはなく、使い捨てのものを書き散らしていた。今のところ、
マルチ・タスクや、メモリ、スケジュール管理などは僕にはそれほど必要ないと思う。
件の理由で、オブジェクト指向や、プロトタイピングなどもあまり必要ない。がりがりと論理を書くだけだ。

この世界はオートメーションと、抽象化と新しい手法の取り入れの世界だ。みんな統合開発環境やシミュレータ
などの新規で珍奇なツールにまみれている。しかしそれらは僕の前を通り過ぎて行った。

今僕の使っているのは、Cでありsed/awkであり、viであり、grepであり、GDBであり、rcsだ。大学の初等科の
時に実習で初めて使ったものだ。いまだに使っているし、これからも使い続けるだろう。

mico8 と mico32 [μ itron]

ラティスのCPU IPコアにmico8とmico32というものがある。
概要は

1.フリーである。よく知らんがラティスのwebになんか登録
  すれば使えるはず。ドキュメントも充実してそう。

2.verilog HDLで提供される。ラティス製のPLDのみでなく
  ザイリンクスやアルテラなどのPLD(FPGA)にも載せられるし、
  もちろんASICにもOKなはず。

3.開発ツールは gcc / eclipseなどのGPL系のツールである。
  つまりフリーである。

4.RTOSのサポートもあるらしい。TOPPERSをサポートするらしい。
  なんせ、フリー系のツールで固められている。

5.ハーバード・アーキテチャ(RISC)である。僕はRISCのアセンブラ
  を書くのは嫌いである。可読性が低いから。
  でもCコンパイラがあるので問題ないか。

少し、注目してみよう。性能なんかは知らんけど、結構有名な会社だし、
信頼してもいいだろう。たとえ会社がなくなろうと、フリー環境付きの
8 / 32 bit CPUのソフトマクロとして持っておけば役に立つかもしれないしね。

前の10件 | - μ itron ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。