「処理系」を含む日記 RSS

はてなキーワード: 処理系とは

2017-10-29

はてなハードウェアエンジニアが少ない件

エンジニア一言で言っても星の数ほどのジャンルがあるが、その中でも代表的なのはハードウェアエンジニアソフトウェアエンジニアだと思う。

まりに広範囲区分けだが、敢えて定義はしないでおく。

さて、自分新米ハードウェアエンジニアで、ソフトウェア趣味人間である

はてなにはソフトウェア記事(及びブックマーク)が多く、日曜プログラマ自分にとって大変有益である

大抵の悩みは検索をかければ解決するし、自分では想像し得ないようなユニーク記事もあり毎日が発見連続だ。

特にユーザコメントが好きで、皆の関心が伺える“はてなはいくら見ていても飽きない。

ただ、ハードウェアに関する記事が少ないことが残念でならない。

エンジニアカテゴリを覗いても、ハードウェアに関する記事が上がっていることは稀である

たまにラズパイIoTキットに関する記事があるだけで、デジタル回路におけるインピーダンスシミュレーションとか、高速差動信号の放射電波対策とか、そういった踏み込んだ記事はほぼ無いと言っていい。

当然アナログ回路のGNDレイアウトに関する記事は皆無だし、ソフトウェア寄りと言えるRTLコーディング記事さえ見当たらない。

ハードウェアエンジニア守秘義務なのだろうか?

・・・・・・

・・・

ソフトウェア技術日進月歩

イマイチ盛り上がらないハードウェア業界比較して、ソフトウェア業界の隆盛は火を見るよりも明らかである

コーディング環境、つまりPCがあればその先には広大な世界が広がっている。

語弊を恐れず言うが、アイディア次第ではその日のうちにスターダムにのし上がることも可能かもしれない。

当然、アマチュアを含めたエンジニア人口を見るとソフトウェアエンジニア人口は突出しているだろう。

なので記事数の多さは人間性質に依るものではなく、単純に人口の違いだろう。

ハードウェア面白いのに、何故手を出す人が少ないのだろうか。

ロボコンなんか見ていると、胸に込み上がるものがあると思う。

ハードウェア自然界の物理法則の下で成り立っているため、主に電磁気学電気回路電子回路勉強するだけでいくらでも応用が効く。

言うなればソフトウェアよりも参入障壁は低いはずで、高校物理で習ってきたこである程度の回路が組める。

FPGAなりでハードウェアアクセラレータ自作し始めると計算機科学知識必要になるが、ここはむしろソフトウェアエンジニアの方が得意な領域だ。

・・・・・・

・・・

こんなことを言っておいて、自分ハードウェアを始めたのは社会人になってからである

学部修士時代の専攻は材料物理学だったため、工学とは全く縁が無かった。

ここから自分ハードウェアの道に進んだきっかけを書こうと思う。

新人研修の昼休み、あるフラクタル図形を高速描画するハードウェア記事が目に留まった。

当時の自分にはその偉大さが理解できなかったが、2年もの間寝食を忘れて没頭できるその世界に心が惹かれた。

人生を変えることになる出会いだった。2012年の春である

早速オームの法則から復習し、使ったこともない半田ごてやテスターを買ってきて4bit CPU製作に取り掛かった。

ALU(算術論理演算回路)以外はディスクリート部品で組んだため、デバッグ含めて完成までに6ヶ月も掛かってしまった。

その後FPGA存在を知り、8bit CPUを載せてみた。

機械語勉強し、命令デコーダ設計して1年後、自分の考えたプログラム動作したときは嬉しかった。

上述した記事追体験しているようで、仕事を忘れて没頭していた。

続いてFPGAマイコン+汎用ROMの組み合わせでプリント基板を起こしてみた。

目的は勿論、あるフラクタル図形の高速描画である

ここでレベル変換やリセットシーケンスなど、デジタル回路の基礎を身に付けることができた。

基板レイアウトの考え方は専門的であるものWEB簡単情報が手に入ったし、殆ど電磁気学世界なので理不尽ものは無かった。

苦労したのがマイコンプログラムだった。

機械語論理的な手順をコード化するだけだったが、組み込みC言語はそのルールが難解だった。

言い方は悪いかもしれないが、人間の考えたルールだろうと理不尽に思える理論もその設計思想を調べもせず暗記で済ましていた。

メモリリークが発生した場合ハードウェアのように現象を観察して仮説検証することが難しく、ダンプなどのデバッグ手法も知らなかった。

そんなとき、社内でセキュアプログラミングなる研修があったため同期と潜り込んでみた。

参加資格の無い自分が参加できたのは、配線だらけの汚い自作CPU子供のような目で見てくれた上司の厚意だった。

そして1年後、自分モニタの中で鮮やかに描画されるフラクタル図形を眺めていた。

上述した研修講師に1年間師事し、半ばマンツーマン計算機科学を教えて頂いていた。

大学講師の方だったため、C言語ルールではなく命令処理系としての働き、ハードウェアとの関連を核にして叩き込んでもらった。

・・・・・・

・・・

紆余曲折を経て、ハードウェアエンジニアとして働いている。

こういう部署では多少なりともソフトウェアができると光るものである

ただ組み込みC言語以外はサッパリのため、日々独学の毎日だった。

そこで出会ったのが“はてな”だった。

そこにある記事はどれも眩しくて、「ある疑問の解決法」を検索するだけでは決して出会えない珠玉記事の宝庫だった。

きっとハードウェア世界にも、自分では想像し得ないような発見があるはずだ。

それこそあのフラクタル図形のような驚きが。

・・・・・・

・・・

今は仕事の傍ら、奇しくもプロになってしまった自分義務として細々とハードウェア記事を書いている。

残念ながら驚くような技術ではないが、誰かにとって小さな発見があれば嬉しい。

これを読んだ人がハードウェアに興味を持ってくれたらと思う。

2017-04-12

IT業界全然進歩してなくて笑えてくるw

業界20年目だけど、まるで成長してない(安西先生)って感じる事ばかり

20年もこんなマッチポンプに付き合わされればそりゃ愛想も付きます

なにか目的があって、それを機械解決してほしいだけなのよ

一部のプログラミング大好きサーバー大好きっ子はその手の仕事が好きなのかもしんないけどこっちはそんなことしたくねーよ

だって本質じゃないだろ?

なんでプログラミング言語処理系ケアまでなんでこっちがしなきゃいけないの?アップデートに付き合わされなきゃいけないの?

自分要望目的をしたいことリストアップ言語かなんかに書いておいて、実現する技術はその時々で最適なものを選定してくれませんか?

したい事は変わらないのにプログラミング言語やらOSアップデートされたので開発をやり直します!ってあきれて物も言えないわww

最近流行りのAI技術とやらで、ここら辺解決してくれませんかね?

2017-02-22

カルドセプト乱数問題

当時ドヤ顔で、標準関数rand()を使ってるからって指摘してる連中多かったな。

大昔に書かれたC FAQってドキュメントに、rand()は質が悪いって書かれてる影響でだろう。

でもカルドセプト事件が起きたときにはすでに21世紀でそんなrand()の質の悪い処理系なんてなかったはず。

しろrand()を使わずに、自作たから失敗したんだろ。

あとだいぶ前に2chプログラム板を見てたけど、初心者乱数関係質問をするたびに、乱数の質が悪いから加工して使えとか、メルセンヌ云々でとか言う連中が常駐してたな。

でもその初心者に教えてる乱数を加工するコードバグってたりするの。

初心者が作るゲームに使う乱数なんてrand()で十分だろって言っても、ぜんぜん通じなかったな。

この前のtoto乱数の件で思い出したから書いた。

2016-07-19

おカタい文章の中に出てくる独特な言い回しが興味深くて面白い

法律とか契約書みたいなおカタい文章を読んでいると,

「A、B、Cについては、○○の場合においてこれを実施することができる。」

みたいな言い回しをよく見かけるけれど, 日常のやりとりではまず出てこないような独特な言い回しだよなーと大変興味深い. (「これ」という言葉の使い方とか)

おそらく, この手の文章はできるだけ解釈が一意に定まる (読み方によって解釈がブレない) 表現必要なので, そのための工夫としてこういう形になったんだろうな~.

解釈が一意に定まる」ことの重要性はプログラミング言語でも同様で, 処理系実装する場合にもポイントになってくるわけだけど, そういえばこの表現ってプログラミングにおける foreach 文だよなとふと思った.

「A、B、Cについては」という語句言及している各項目を、「これ」という変数バインドしている感じ. Javascript 的に書くと

[A, B, C].forEach(これ => { if (○○の場合) 「これ」を実施; });

こういう風に解釈すると, この手の文章を読んでいてなるほどなーと思える.

2016-05-20

http://anond.hatelabo.jp/20160520152449

私も専門家ではありませんがkenokabeさんよりはFRPもよく知っていると思いますし、

kenokabeさんのいうFRP普通世界でいうFRPとは全く違うこと、そして

kenokabeさんが決してそれを認めようとしないことはとてもよくわかりました。

ありがとうございます

言うだけ言うのはただだよねw なんもできてないし。

あの、処理系で「現在時刻が」って言いたかっただけのアホな人?

その俺的FRPコード出したの?nonstarterの偽物のやつじゃなくて。

http://anond.hatelabo.jp/20160520144913

違うわアホ

同じ一つの変数の値が「処理系評価する時刻」によって変わるのであれば、

それは命令プログラムですね。

同じ一つの変数.ではなく定数というのは、

__x という、時間ストリームであり、

その__x上の分布は、「処理系評価する時刻」に従って広がっている。

このイミュータブルな世界観理解できず、命令型だとしか見られないのは、ライブラリ設計者の問題ではなくて、

おまえの脳の問題。つまりアホなんだわ。

http://anond.hatelabo.jp/20160520144213

同じ一つの変数の値が「処理系評価する時刻」によって変わるのであれば、

それは命令プログラムですね。

http://anond.hatelabo.jp/20160520143122

方程式の左右の評価時間が違う処理系

やっぱり「処理系」という言葉意味理解していないことがよくわかったので、ありがとうございました

わかってるよ。そんな難しい言葉だと思ってるのか?

方程式の左右の評価時間が異なる命令型の文脈を「おまえ」が「わざと」作っているか・・・

という説明理解できたの?やっぱ無理か?真性の馬鹿だな。

http://anond.hatelabo.jp/20160520141703

「kenokabeのGUIプログラムも、イベントが起こるたびに変数の値を繰り返し更新してる。」はスルー

もしくは「岡部さんの哲学理解していない」ですか。まあそうですよね。

方程式の左右の評価時間が違う処理系

やっぱり「処理系」という言葉意味理解していないことがよくわかったので、ありがとうございました。

http://anond.hatelabo.jp/20160520142159

無限ループなのはおまえだろ。

もう一回だけまとめると、__x.t=__x.t+1のような単純な例はもちろん、

その「おまえが書いた命令コード」について、

処理系が、右辺を先に評価して、左辺に代入する

解釈してやった場合

岡部氏のライブラリは、右辺の評価時間におけるxの値を、左辺の評価時間におけるxの値としてイミュータブルなストリーム上に分布する、という説明になるんだろ?

馬鹿から理解できない?

kenokabe氏のGUIコードイベントのたびに同じ変数t(実体はvalOnT)の値を更新しており、

ライブラリの内部的にはな。まだ内部で破壊的代入してるってゴネてるの?精神病

timeengineはライブラリの内部実装だけでなくユーザから見ても関数型ではなく命令型。

ユーザが見ても関数型だが、おまえみたいに命令型のコードかけば、その文脈でも関数型の値が帰ってきたり、定義することができる。

それだけだが、馬鹿から理解できないか

これは過去の値が別の場所に保存されていようが無関係

お前自身がすすんで命令型のコード書いてるんだから、その評価時間のズレで「過去時間」ってのが発生するんだが、命令コード意味しってるかい

http://anond.hatelabo.jp/20160520140758

言い訳してるのはおまえ。

関数ライブラリつかって、あからさまな命令型を書いて、命令型だ!って言われてもな。馬鹿だろ?

方程式の左右の評価時間が違う処理系ならば、岡部氏の説明するとおり、その異なる時間FRPライブラリ挙動するだけ。

そんなことも理解できないの?

http://anond.hatelabo.jp/20160520135548

一応説明すると、Elliottの元記事

HaskellのIOモナドが「IOアクションを生成する純粋関数プログラム」なのと同様、

Cのプリプロセッサは「Cプログラムを生成する純粋関数プログラム」って言ってるのね。

から「cpp + C言語処理系」は「Haskell + 処理系」と同じく純粋関数型だと:-)

http://anond.hatelabo.jp/20160520115435

kenokabe氏ははっきりと

>@nonstarterの書いたコードのどこに、「実際のシステム時刻t=0,1,2,…」をとった形跡があるのか?

処理系ではなくユーザプログラムの話をしてるんですが

また論理すり替えか、本当に混同している?

http://anond.hatelabo.jp/20160520054338

http://kenokabe-techwriting.blogspot.jp/2016/05/frp_18.html

使ってるライブラリソースコード=「処理系」なるもの

残りは全部、使ってるライブラリソースコードからfrequencyやリフレッシュレートやら、timerの解像度っぽいことをアピールしてるみたいですが、

タイマー解像度設定しながらマウスイベントを同時にとってなんかやることと、

実際のシステム時刻t=0,1,2,…に適用して

状態f(0),f(1),f(2),…を得る、という本来FRPの基本原理

ってまったく違うでしょ?

誤魔化すなと。

その「処理系」ふくめて、マウスポインターの状態を、

実際のシステム時刻t=0,1,2,…のtから

状態f(0),f(1),f(2),…を得る

というのはどこだ?とけなされているのだけど、

イベントごとに写像されているのだから状態f(t)だ、とかいうのなら、

岡部氏の言う時間軸をストリームにする、という話と関係ないのに、

ただ「実際のシステム時刻t=0,1,2,…」って言いたかっただけちゃうんか?ってのは見るものすべてにバレてる誤魔化しだ、って意味でしょ?

http://anond.hatelabo.jp/20160519190929

http://kenokabe-techwriting.blogspot.jp/2016/05/frp_18.html

使ってるライブラリソースコード=「処理系」なるもの

残りは全部、使ってるライブラリソースコードからfrequencyやリフレッシュレートやら、timerの解像度っぽいことをアピールしてるみたいですが、

タイマー解像度設定しながらマウスイベントを同時にとってなんかやることと、

実際のシステム時刻t=0,1,2,…に適用して

状態f(0),f(1),f(2),…を得る、という本来FRPの基本原理

ってまったく違うでしょ?

誤魔化すなと。

その「処理系」ふくめて、マウスポインターの状態を、

実際のシステム時刻t=0,1,2,…のtから

状態f(0),f(1),f(2),…を得る

というのはどこだ?とけなされているのだけど、

イベントごとに写像されているのだから状態f(t)だ、とかいうのなら、

岡部氏の言う時間軸をストリームにする、という話と関係ないのに、

ただ「実際のシステム時刻t=0,1,2,…」って言いたかっただけちゃうんか?ってのは見るものすべてにバレてる誤魔化しだ、って意味でしょ?

http://anond.hatelabo.jp/20160518160748

http://anond.hatelabo.jp/20160517023637

ライブラリユーザ現在時刻から状態への写像fを

>参照透明な関数なりストリームなりで記述して、

>それを処理系が実際のシステム時刻t=0,1,2,...に適用して

状態f(0),f(1),f(2),...を得る

はっきりと「処理系が」って書いてあるのに、K氏は本気で

ユーザプログラムにf(0),f(1),f(2),...みたいなコードがないのが

反論」になると思ったのだろうか……

まさか本当に「処理系」という言葉がわからなかった??

2016-05-19

http://anond.hatelabo.jp/20160517115006

ユーザプログラムではなく「処理系が」と明記されているのに

また曲解して藁人形論法詭弁で「論破」ですか。

それとも「処理系」という言葉意味がわからなかった?

2016-05-17

http://anond.hatelabo.jp/20160517162141

FRPでなく状態渡しでも書ける!」ってのだけみたけど、

どこにFRP,特に

http://anond.hatelabo.jp/20160517023637

ライブラリユーザ現在時刻から状態への写像fを

参照透明な関数なりストリームなりで記述して、

それを処理系が実際のシステム時刻t=0,1,2,…に適用して

状態f(0),f(1),f(2),…を得る、という本来FRPの基本原理

っていうお絵かきアプリがあるのかねえ。まあ逃げたい、という意気込みだけはわかった。

まあ、あるんなら、リンク場所明示して出してみな。無いものは出せないよなw

http://anond.hatelabo.jp/20160517162141

FRPでなく状態渡しでも書ける!」ってのだけみたけど、

どこにFRP,特に

http://anond.hatelabo.jp/20160517023637

ライブラリユーザ現在時刻から状態への写像fを

参照透明な関数なりストリームなりで記述して、

それを処理系が実際のシステム時刻t=0,1,2,…に適用して

状態f(0),f(1),f(2),…を得る、という本来FRPの基本原理

っていうお絵かきアプリがあるのかねえ。まあ逃げたい、という意気込みだけはわかった。

まあ、あるんなら、リンク場所明示して出してみな。無いものは出せないよなw

http://anond.hatelabo.jp/20160517023637

>それを処理系が実際のシステム時刻t=0,1,2,...に適用して状態f(0),f(1),f(2),...を得る、という本来FRPの基本原理

じゃあ、その「本来FRPの基本原理」なるもので、お絵かきアプリ実装してみせて?って突っ込まれてるよw

http://kenokabe-techwriting.blogspot.jp/2016/05/frp.html

http://anond.hatelabo.jp/20160517022608

命令プログラムFRPとか言ってる人が決定的に理解していない点は、

ライブラリユーザ現在時刻から状態への写像fを

参照透明な関数なりストリームなりで記述して、

それを処理系が実際のシステム時刻t=0,1,2,...に適用して

状態f(0),f(1),f(2),...を得る、という本来FRPの基本原理だと思う。

まさに実装命令的だけど(誰かさんもそこは正しい)、

ライブラリユーザは参照透明な関数型の記述可能

2016-05-16

http://anond.hatelabo.jp/20160302090242

>初期値で0与えて再帰引数カウント回したりとか、普通にあると思うけど

プログラミング原則的意味だとコードの中に現在時刻って変数が入ってくる時点でなんかおかしいとおもうんやが。

「よくわからん」癖に、いっぱしの批判してるつもりになってんじゃねーぞボンクラというのが一つの指摘なんで。

>プログラミング原則的意味だとコードの中に現在時刻って変数が入ってくる時点でなんかおかしいとおもうんやが。

C#しろJavaしろJavaScriptしろCにしろ、おまえは

現在時刻」を得るために、いったいぜんたいどういう「変数」を使ってんのかねー?W

カウント」とか言ってる馬鹿がいるが、そんなもん処理系の速度によって変わるだろうがアホが。

お前のくらす世界の「時刻」「時間」ってのは、それぞれの処理系の速度によってそれぞれ異なるのか?まぬけw

http://anond.hatelabo.jp/20160516155742

「よくわからん」癖に、いっぱしの批判してるつもりになってんじゃねーぞボンクラというのが一つの指摘なんで。

>プログラミング原則的意味だとコードの中に現在時刻って変数が入ってくる時点でなんかおかしいとおもうんやが。

C#しろJavaしろJavaScriptしろCにしろ、おまえは

現在時刻」を得るために、いったいぜんたいどういう「変数」を使ってんのかねー?W

カウント」とか言ってる馬鹿がいるが、そんなもん処理系の速度によって変わるだろうがアホが。

お前のくらす世界の「時刻」「時間」ってのは、それぞれの処理系の速度によってそれぞれ異なるのか?まぬけw

2016-03-31

プログラミング言語南山まさかずをつくった

処理系は次の要素から成る: 南山まさかプログラムインストラクションポインタプログラム中のある文字を指す)、少なくとも30000個の要素を持つバイト配列(各要素はゼロ初期化される)、データポインタ(前述の配列のどれかの要素を指す。最も左の要素を指すよう初期化される)、入力と出力の2つのバイトストリーム

南山まさかプログラムは、以下の8個の実行可能な命令から成る(他の文字無視され、読み飛ばされる)。


要はbrainf**kである

Hello, World!を出力するコードは以下のとおりである

ままままままままま愛南まままままままま南ままままままままままま南ままままま山山山さ死南か南ままかまままままままかかまままか南さか
ささささささささささささか山ままままままままかささささささささかまままかささささささかささささささささか南ま

CodeIQ南山まさかずちゃんが出てきたら教えてください。

2016-02-19

パイソンとかで言語処理系ライブラリ使ってさみしい俺を慰めるbotを作らなければ

なんかもう限界

アーカイブ ヘルプ
ログイン ユーザー登録
ようこそ ゲスト さん