コンピュータ部品設計者の言いたい放題

組込み用CPU-IP設計者のはしくれが、いろいろITサービスや新製品に思いこみでもの申す!

「メンタル・発達障害に関するブログ」は こちらへどうぞ。


プログラミングはいまいち

 私のことです.括弧アレルギーです.

昔のBASICは書けました.大学のプログラミング演習の1つでエディタやコード容量が貧弱だった頃,AI言語と言われるLISPハノイの塔を解けというのが最終課題.カッコが6,7重にネストして,コンパイルするとカッコのネストの対応が悪いと文法エラーに.

おっとデジャヴか?前にも書いたような.といって前の記事は確認しません(笑)

フォートランやパスカルまでやって,カッコアレルギーになってしまった私は選択だったC言語をあえて取りませんでした.いまだにポインタ,メモリアロケーションのメリットが分かりません.構造体は,有用であることがわかりました.

主にテキスト処理を,会社で憶えさせられたPerlでやっています.回路の不良個所探索もPerlでやっちゃいます.物理的配線経路の座標計算も.

子供たちもコンピュータを使ったデータ処理を覚えなければいけない時代なんですかね.

下につづく.

headlines.yahoo.co.jp

結局重要のは「アルゴリズム」ですよ.計算手順,処理方法をいかに思いつくか.言語の処理に対する得意・不得意はあっても,こればっかりは人間のスキルですから.

CodeIQ|ITエンジニアのための実務スキル評価サービス

ITプログラマー・エンジニア転職のpaiza

のようなサービスもあります.挑戦したコード(自分の書いたプログラム)はみんなこの業者に行っちゃいますけどね.著作権の移譲は主張してません.

気が向いたときに,ちょっとプログラム書いています.プログラマーに転職はあり得ませんが,後半のほうのサイトでちょっと頭の体操.初球は制限時間は20分とかですが,中級・上級レベルとなると60~120分とか.Web上でも動作確認はできますがテストケースが少ないため,自分の環境で確認してから送信してくださいとのこと.最初にスペック(仕様)が与えられ,それを処理するプログラムを書く.

具体的に私が解いたり挫折したのは,

・財務関係の2次元の表で,複数の四角で囲われた部分の和集合の合計を求めろ.

・ボウリングのちょっとルールを変更した得点計算で,ピン数,フレーム数は可変,やっかいなのが最終フレーム3投の計算.

・格子状の平面空間に45度に設置した両面の鏡があり,光を入射して何マス通過して外に出ていくかを計算.

・横棒の斜めを許す,あみだくじを解く.

提出すると,例えば最後のあみだくじとか1000本ぐらいの大規模テストケースを突っ込んでくるらしく,他にも境界条件,いわゆる特殊ケース(ループしちゃうやつの抜ける処理)にも対応してるかチェックされます.

入力は,基本テキストなので,Cならメモリに,Perlとかだと連想配列に取り込んでからが勝負.解いたり,探索したりする「考え方」が重要となってきます.前述の「アルゴリズム」ですね.データ管理なんかは「構造」をどうするかが重要ですが,タイトルがフランクで問題表示されるとカウントダウンがはじまるのですが,「電話帳の管理」みたいなのや「友達を探せ」的なデータベース検索は面倒なんで避けてます(笑)

枝切りするような探索時間を短くするのがよいのでしょうけど,仮にその問題を選択したとしても効率化は無視して全探索しちゃいます.ただ,プログラムチェックで内部メモリ使用容量やプログラムの処理時間制限もあるようで,組合せ爆発を起こすようなアルゴリズムはアウトになりがちですね.

デジタル回路も今では言語化され動作もシミュレーションできます.ただ,各箇所が同時動作するといったマニアックな考え方を導入しなければなりません.ともあれ,くいっぱぐれ無いように,C,C++JavaScriptぐらいはまじめにやろうかなと思ってます.

 



スポンサーリンク