2014-03-18

システムプログラミングは未だに難しいのだろうか

サーバサイドの通信プログラムなど、OSシステムコール使いまくり系の、所謂システムプログラミングのうち、電話の交換器とか緊急地震速報のように、処理速度と信頼性が求められる仕様ソフトウェアは、未だにUNIX系(というか実質Linux)にC/C++になってしまうのだろうか。

速さの問題でJavaPerlダメとなると、未だにシステムプログラミングはアプリケーションプログラミングよりも高難易度というイメージがある。


かくいう自分場合C言語学生時代の授業でポインタ挫折して以来、仕事画像処理プログラム実装でちょっと使ったけど結局よく分からない状態で、急病でリタイヤした人の仕事(C言語で少しだけ作った通信プログラムの引き継ぎ・納品)をムチャ振りされ、泣く泣く取り組んだ経験が半ばトラウマ化している。

だってC言語やっててポインタが分からないとか本当にド素人レベル初心者が、socket()のノンブロッキングにpipe()にsignal()にselect()無限ループで複数のファイル記述子の監視を非同期通信でfork()もあるよという世界に放り込まれたのだ(当時のLinuxカーネルはpselect()がシステムコール実装されてなかったというオマケ付き)。

K&Rと「UNIXネットワークプログラミング」片手に涙も枯れた状態で帯状疱疹作りながら挑み、最後はどうにかこうにか元請けが引き取ってくれたけど、共有メモリマルチスレッドハイレベル過ぎて手が出なかったのが悔やまれる。

これがC++(当時未経験)なら、Javaで体得したオブジェクト指向で複雑な仕様もかなり楽に出来るかと思ったけど、いざ始まってみたらC言語Linuxシステムコールを使いこなすだけで精一杯で、C++は今でも未経験と。

あとmalloc()やfree()とかも全く活用できなかった。懸案だったポインタ構造体は嫌でも覚えたけど。

というか休日遊んでいて、突然それまで分からなかった部分が理解できたのはいいが、次の瞬間「やべ!あのまま本番動かしたら洒落にならん!」という展開になり、休日こっそり会社に忍び込んで必死ソース直したこともあったっけ。

あれからもう10年近く経つ。


・・・という経験をしているので、いつかまたシステムプログラミングの仕事が振られた時のことを考えて、一応PGで飯食ってる仕事人として、何か準備しておきたいと思っているのだが、できればもう少し楽になる技術フレームワークが生み出されていると嬉しいんだけどなーという感じ。

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん