2024
11
21
2011
11
09
脱初心者を目指す日曜プログラミング
皆さんこんばんは。御無沙汰しております、abe@ldf.bassです。
最近、仕事でソフトばっか書いてますが、自分のスキルの無さにげんなりすることばかり。
いわゆる「ベタC」から脱却できません。クラスって何それおいしいの状態です。
まぁ今やってるのは超小規模組み込みシステム∧今んとこ私一人でやってるのでベタCで何とかなってしまうんですが……このままでは確実に世間から取り残されてしまいます。
そこで……(右下の[つづき]をクリック)
そこで、勉強と趣味を兼ねて「日曜プログラマ」になろうという企画を始めます。
ベタCシーケンシャルコマンドラインプログラムから次のステップへ!ということで
・GUI
・オブジェクト指向
の2点に親しむことに重点をおきます。
さらに仕事で必要になってくる
・ネットワークプログラミング
・フィジカルコンピューティング(死語?)
にも取り組みと思います。いやしなければならない。
これらをカバーできるターゲットといえば、今流行りの「スマートフォン」しかない!
いや全然しかないことはないんですが、今流行りだしこれにします。これしかなかったんスよ。
しかもiPhoneじゃなくてAndroid端末を選定します。もっさんもINFOBAR A01に替えたし。
m井さん(*1)のサイトも参考になりそうだし(レベルが違いすぎるが)。
まずはローカルだけで完結する単純なアプリ(メトロノームとか?)から始めて、
徐々にTwitterクライアントだの画像処理だのARだの……と高度なものに挑戦していきたいな!
では早速Androidアプリケーション開発環境をPCにぶち込みましょう。
Javaの開発環境を入れて、そこにAndroid用のコンポーネントを追加するという形になるようです。
詳しくはここ↓見といてください。
世界を目指せ!Androidアプリ開発入門:第2回 Androidアプリ開発のための環境構築
インストール待ちの間、そもそもなぜ私は情報科学修士のくせにこんなにスキルが無いのか、
過去を振り返りながら考えてみます。
高3 : C言語独習に挑むもwhile文が理解できずに挫折。HTMLで満足。
B1 : 情報科学部に入学、ちゃんとプログラミングを教わる。この頃は結構得意な方。while文も理解できた。
B2 : 実験でアセンブリ言語に触れたりコンパイラを作ったり、講義でステートマシンやらデータ構造やらを学んだりと、着実に基礎ができていったはずである。この頃もまだ得意な部類。
しかしポインタなどの理解はおぼろげ。さらにオブジェクト指向などの概念については一切触れないままプログラミングの講義は完結したのであった。
趣味では、マンドリン部HPの所蔵楽譜リストページを作るため、テキストデータにHTMLタグを付けるプログラムを作ったりした。Excel→手動でメモ帳にコピペ→HTML変換という流れ。もちろんベタC。
さらに楽譜・音源管理システムを立案するも、力不足で実装まで行かず。改めて見返してみると、B2にしては結構しっかりした開発ドキュメントを作っている(そうでもないか)。んでやっぱりベタCベースw
B3 : 実験でシリアル通信やらPWM制御などといった組み込みプログラミングに触れる。なぜかアセンブリもいじらされたよな……f島さんに怒鳴られながら。
あと画像処理も少し。画素データはこういうふうにメモリに入ってて、それを1画素ずつスキャンしていって……というのを実際に自分の手でやってみたのは結構大事な経験。
まぁでも全部テンプレがあっておいしいとこだけいじってたのに過ぎないので、システム全体を開発する力は付かず。「Javaとアルゴリズム演習」なる本を買ったりもしてみたが、3日で積ん読に。そうやって時は過ぎていきます。
B4 : 先の見えないボトムアップ研究室に配属され、訳も分からずGDBをいじらされたりするもさっぱり身に付かず。遊びながらマンドリン弾いてたらあっという間に冬になり、卒研のためしかたなくNS-2というネットワークシミュレータを改造する作業に従事。初めてC++に触れるも、その極意まったく解せず。
結局、大規模ソフトウェアを理解はせずに勘だけでいじくり回すスキルと、あまり抵抗無く英語のドキュメントに目を通すスキルだけが身に付いた。その傍ら遊びで卒論ジェネレータ「monkey ∞」とか作ったがやっぱりベタC。しょうもねえ!
ちなみに周りの人はFPGAとかPSoCとかやってました。
M1 : 研究の方向性をどうしようか考えているうちに1年経過。研究関係のプログラミングは一切せず。自主プロデスマーチでH8マイコンのプログラムを書いたりしたが、やはりベタC∧とても初歩的なもの。スキルよりもプレッシャーに耐えながら泊り込みで作業をする根性だけが身に付いた。それと並行してJKにプログラミングを教えるという素敵なお仕事も経験。実に楽しかったし人生勉強になったが、これも当然ベタCである。
M2 : ゴミ研究から新テーマに乗り換え、制御工学(主に現代制御)をほぼゼロから勉強していたら1年経過。この間もほぼ一切プログラミングせず。ちょっとだけScilabのコード書いたりしたが……
趣味プログラミングしてみようかと思い立つも、結局何もしないまま卒業! この時点で既に同期とはかなり差をつけられている。いつの間にやら地の底に転落である。
今年度 : Verilog HDLによるFPGA開発補助(既存システムの変更)を経験。また、FPGA内のエンベデッドプロセッサ上で動く中規模ソフトウェアの変更も経験するが、これもベタCである。その後Visual C++でWindowsアプリの変更もしたが、ほんのちょっといじっただけ。で、現在はベタCマイコンプログラムw
というわけで何が悪いのか分かりました。
多くの情報系修士が最も本格的にプログラミングを経験するB4~M2の間に、ほぼ何もしてないのです。
そりゃB3時点のまま成長止まるわ! オブジェクト指向を知らずに大人になった情報科学修士……w
情けないですが、この3年間の空白を今から取り戻していきたというわけです。がんばります。
そうこうしているうちに開発環境が整いましたよ!
早速サンプルをビルドしてエミュレータ上で動かしてみましょう。
ジャン! いちおう立ち上がりますね。
ただ8年前のPC(*2)上で動かしているのでシッチャカメッチャカに重く、起動に5分ぐらいかかりました。
そもそもEclipseを立ち上げているだけで絶望的に重いです。これは開発環境としては致命的。
そしてAndroid端末の実機は持っていません……………………だめだこりゃ!
新たなPCとAndroid携帯を買おうと思います。まぁボーナスまで待つしかないよね……
そんなこんなでやたら長い上に早速出鼻をくじかれましたが、一歩ずつ進んで行きたいと思います。
しかしやたら「ベタC」「オブジェクト指向」という語が目立つ……コンプレックスの強さが窺えますね。
まぁプログラミング一本槍になり過ぎず視野の広いエンジニア(笑)を目指しましょう!
*1……m井さん:2007年度市大吹奏楽部首席サキソフォニスト。現在超大手通信事業者K社勤務。
*2……OS:WinXP Home SP2,CPU:Celeron 2.00GHz & 1.99GHz,RAM:1.00GBと、そこそこスペックと思うのだが、HDDが古いせいか相当アクセスが遅くボトルネックになっている。
2011/11/09 (Wed.) Trackback() Comment(2) プログラミング
Comments
Trackback
Trackback for this entry:
新しいコーナー始まりましたね!頑張って続けてくださいよw
buro 2011/11/12 (Sat.) 11:57 edit