日記

「組込み開発=C言語」というイメージはどこまで正しいか?

組込み開発でのプログラミング言語というとC言語(時にアセンブラ)が真っ先に挙げられる気がするのだが、実務的にどこまで正しいのか書いておこうと思う。結論から言うと、組込みプログラマの立場としては「組込みプログラミング=C言語」は概ね正しいのだ…

ジュニアは採用できてもノービスは採用できない。ベテランになれないジュニアは淘汰される。

「ジュニアを採用しない連中はシニアに値しない - portal shit!」を受けて。そもそも「ジュニア」がどの程度の人を指し示すか、という話はあるが、アメリカの話っぽいので、おそらく最低でもCS(コンピュータ・サイエンス)の学士は持っているだろうし、修士…

umask(1)は引き算しない、多分。

umask(1)の仕様を調べようとしたのである。で、ググって見つかった「デフォルトのファイルアクセス権 (umask) (Solaris のシステム管理 (基本編))」を見てちょっと驚いた。 設定する umask の値は、与えたいアクセス権の値を 666 (ファイルの場合) または 77…

Raspberry Pi用にQtをクロスコンパイルする――ただしQtはX11上で動かしたい

Raspberry Pi用にQtをクロスコンパイルする方法を探していたのだが、どの情報も非X11のコンソール環境にてEGLFS経由で直接OpenGL ESで画面描画する構成のQtのバイナリを作るものばかりだった。しかし私は、諸事情よりX11のデスクトップ上でアプリを実行でき…

クライアントWindows上で仮想化ソフトウェアでゲストOSを飼うためのハードウェア構成

ここ4年ほどCore i5-3340Mを搭載したノートPC上でVirtualBoxを使ってきたので、その辺の知見を元に、VirtualBoxなどのx86仮想化ソフトウェアを使ってゲストOSを飼う際に必要な「ホスト環境のハードウェア構成」についてまとめておく。WindowsをホストOSとし…

コメントを書かないためには文化が肝要(Re: コメントのいらないプログラムの書き方)

そろそろ言及しておこうかな。これって「コメントのいらないプログラムの書き方」ではなくて「コメントを減らす技法 初級」だよね、それも割と暗黙の前提が多めの。 コメントのいらないプログラムの書き方|NZ MoyaSystem 以前 id:eel3:20160425:1461594142 …

エンジニアにとって「コミュニケーション能力」とは何を意味するのか?

世の企業も求むる「コミュニケーション能力を持つ社員」といふものを、エンヂニアリングの現場でも求めてみむとてするなり。「コミュニケーション能力」という言葉は実に曖昧で、10人いれば5〜6パターンぐらいは異なる解釈が出てきそうな代物だ。この文章で…

実はオブジェクト指向ってしっくりこないんです?

――いや、自己分析するに、「オブジェクト指向」ではなく「特定のオブジェクト指向プログラミング言語」がしっくりこないことがあるんだな、これが。具体的には、触ったことのある言語ではJavaとC#だ。この2つの「しっくりこなさ」具合からすれば、C++の方が…

仕様書・設計書の必要論と不要論の不毛な議論を避けるためのヒント

仕様書や設計書の「要る/要らない」で議論になることがあるが、往々にして不毛なのでここに記しておく。実のところ「仕様書や設計書は必要だ」という意見も「仕様書や設計書なんて不要だ」という意見も、根本的には同じ問題を出発点としている。それは「必…

そろそろ「美しいコード」って言うの止めようぜ

――と題名の通りの感想を抱いたのだが、「美しいコード」の代替となる上手い言い方が思い浮かばないのである。 コードが美しくないために起きる問題を考える(前編)―重複のあるコード/誤読問題 (1/2):EnterpriseZine(エンタープライズジン) いや、記事の…

低速で無駄のある小規模ツール開発を実現する方法

「低速で無駄のある」はツール本体なのか開発手法なのか、はたまた保守フェーズか。 例1:外部コマンドを何度も実行するシェルスクリプト/バッチファイルとして実装する シェルスクリプトもバッチファイルも個人的に愛憎相半ばする気持ちを抱いてしまう言語…

初めて生PCMを触る人には『WAVプログラミング C言語で学ぶ音響処理 増補版』を推薦します

久しぶりに生のPCMデータを弄る機会があった。生PCMまわりは独学で、割と知識が歯抜けだったので、基本的なところを学び直そうとしたところ、意外とまとまった情報が見つからなかった。色々と探し回って、ようやくたどり着いたのがこの本だった。WAVプログラ…

分野に関係なく『組込みソフトウェア開発のための構造化プログラミング』を読んでおかなきゃあかん

『組込みソフトウェア開発のための構造化プログラミング』を軽く読んだのだが、この本は組込み系以外の分野でコードを書いている人も読むべきだ。組込みソフトウェア開発のための構造化プログラミング (組込みエンジニア教科書)作者: SESSAME WG2出版社/メー…

優秀なエンジニアは勉強しない

もう1ヶ月経つから、そろそろ書いてもよいだろう。 エンジニアは業務時間外でも勉強するべきなのか 個人的な好悪より「エンジニア」ではなく「プログラマ」と記述するが、元来プログラマは勉強などしないものだ。プログラマの三大美徳を思い出すこと。プログ…

複数のプログラミング言語を学ぶ理由

プログラマが複数のプログラミング言語に手を出す理由を考えるには、まず、プログラマの視点ではプログラミング言語がその役割によって4種類に分類されることを理解する必要がある。 「システムの構成要素」系 作りたいものを実装するのに必要不可欠なプログ…

Swiftは静的型付け言語界のJavaScriptである

ここ最近AppleのSwiftを触っていて感じた個人的な感想だが、Swiftは今のところ「静的型付け言語界のJavaScript」に最も近い位置にいると思う。JavaScriptは、第一級関数やクロージャがお仕事でよく使われるメジャーな言語に既定で組み込まれたという点で、あ…

いかにしてJavaScriptを学んだか

まあ、気持ちは分からないでもないっすよ。いかにしてJavaScriptを教えるか - mizchi's blogロートルの無駄話程度に思ってほしいのだが、私は、自身の経験より「Node.jsから」という案は賛成だ。一方で、おそらく先の文章を書いた人はフロントエンド回りに詳…

即席プログラマー養成読本 α版

やあ、ようこそ職業プログラマの世界へ!この文書は、何の準備もなくコの業界に飛び込んでしまった文系プログラマ(候補)や、将来的にコの業界に就職するかもしれないし就職する気もあるけど基礎が足りてないと自覚している学生に、比較的短期間で商品知識…

Python高速学習 経験者編

最近少しだけPythonに触れているのだが、他言語でそれなりにプログラミング経験がある人がPythonを学ぶ場合、差し当たり次の3つのドキュメントがあれば割と短期間でなんとなくPythonっぽいコードを書けるようになるみたいだ。 Top - python.jpで公開されてい…

プログラミング初心者向けに「環境構築の容易さ」をアピールしてはいけない

一言述べておかなければ。「最初に学ぶべきプログラミング言語」 - mizchi's blogプログラミング言語の「売り」として、プログラミング初心者向けに「環境構築の容易さ」をアピールするのは止めた方がよい。だって、それをするなら、WindowsユーザにはPowerS…

量産型プログラマとそれ以外のプログラマの違いはどこにあるか?

ふむ。量産型プログラマを撲滅したい – Yoshihito Kuranuki – Medium最近、量産型プログラマに遭遇したのだが、彼らを観察しているうちに、量産型プログラマとそれ以外のプログラマとでは、次の点に違いが見られることに気づいた。 ソースコード・ドキュメン…

ppbinについての覚え書き

昨年末にppbinというツールを作ったので、メモを残しておく。GitHub - eel3/ppbin: Pretty-printer for binary file ppbinとは何か? ppbinは、指定した形式でバイナリファイルの16進数ダンプを吐き出すコマンドライン・アプリだ。 $ # test.binは44 byteの…

シェルスクリプトに向いている用途

シェルスクリプトに向いている用途は、大抵の場合、以下の要件を1つ以上満たしているものだ。 作りたいものが単機能で、あまり複雑ではない。 非対話的な処理である。 既存のコマンドの羅列/組み合わせで容易に解決できる内容である。 他の言語でいう「メソ…

PythonのwaveモジュールでのPCMデータ読み出しを高速化する

RIFF WAVEファイルからリニアPCMのデータを取り出して、フレーム毎に(正確には各フレーム内のサンプル毎に)加工して出力するツールを作った。諸事情によりPython 2.xの標準ライブラリのwaveモジュールを使ったのだが、Wave_readオブジェクトの扱い方によっ…

正規表現を使ったテキストフィルタとC/C++による自作ツールではどちらが高速か?

改行区切りのテキストレコードを舐めて、特定の形式に当てはまるものを除外するツールが欲しくなった。形式の判定には正規表現が使えそうだった。Unix環境で動かすなら、既存のテキストフィルタを使えばよい。だが残念なことに動作環境はWindowsで、しかもス…

あえてbc(1)した話

たぶんまだまだ初級な小ネタ。こんな感じに16進数(プレフィックスなし)のデータが並んでいるテキストファイルtest.datがあって: 00000000 00000001 0000000F 00000010 7FFFFFFF 80000000 FFFFFFFE FFFFFFFFこれを元データ(32bit符号なし整数)としてちょ…

cat(1)しない話

初級小ネタ。例えばgrep(1)する際に、こんな感じのサンプルコードが示されることがある。 cat file.txt | grep foo しかし個人的には次のほうが好みだ。 grep foo file.txt せっかく引数でファイルを指定できるのだから、そちらを使いたい気分になるのだ。tr…

grep(1)しない話

もう1つ、初級小ネタ。DebianやUbuntuで、あるパッケージがインストールされているか否か調べるのに、今までdpkg(1)とgrep(1)を組み合わせていた。 dpkg -l | grep acpi ところで先日、dpkg(1)のmanを見たところ: -l, --list package-name-pattern... 「pac…

ここ15年ぐらいの自作PCの変化

ここ最近、古いスリムタワー型PCの電源を交換したり、古いタワー型PCの中身を入れ替えてリストアしたりと、古い自作PCの中身を拝見する機会があった。そこで自作PCの変化のようなものにあらためて気づいたので、メモを残しておく。ちなみに私は、ライトな自…

プログラミング言語の剰余演算子に惑う

いくつかのプログラミング言語を見ていると、算術演算子のうち四則演算の記号は、大抵の言語で同じだ。 演算 記号 加算 + 減算 - 乗算 * 除算 / 上記の記号は、COBOLのCOMPUTE文でも通用する。その一方、剰余演算子あたりから若干怪しくなってくる。私の普段…