「高級言語」を含む日記 RSS

はてなキーワード: 高級言語とは

2016-09-19

なぜ手書きにこだわる?

自分不器用なせいかグラフ手書きが致命的に遅かったので、2年前期の実験危機感を感じた自分は2年の夏休み中にpythonを覚え、今まで苦労していたグラフプロットなどをパソコン上で全部自動化しようと考えた。日本語情報が少ないため(あっても多少古かったりすることが多かった)、情報をかき集めるのに相当苦労したが、夏休みが終わるころにはjupyter notebook(名前通りノートブックのような実行環境セルごとにコードを実行するという形をとっている)上で統計処理をしたりそのデータを基にグラフプロットするのはある程度できるようになっていた。

早速2年後期の実験pythonを試してみたが、その威力は凄まじく、今まで時間のかかっていた作業が劇的に効率化した。pythonモジュールであるpandas,numpyを使えばデータ列を文字式のように扱えるので(例えば実験データをdataとして、そのデータをすべてcos関数に代入したかったらnumpy.cos(data)と書けばよい、Excelと似たようなものだがこちらは変数として扱っているので使いまわしが容易である)、Excelでちまちま関数セル入力して列全体に引き伸ばすという操作もしなくていい。グラフコマンドで出力するので当然だが今まで苦労していた手書きプロット作業はなくなった。GUIありきのExcelと違ってコードひとつグラフの罫線の調整などもかなり簡単にできる。高級言語だけあってコードは組みやすく、実験中に即興プログラムを組むことも割りとできる。しかコードさえ組んでしまえばあとは実行するだけで計算グラフの描画を一気にやってくれるので、実験結果確認が極めて素早く行えるようになった。しかもjupyter notebookはmarkdown形式文章を埋め込めてメモ書きも残せるし、mathjaxに対応しているのでlatex形式の数式も途中に挟むことが出来る。最高の環境だと思った。しかし良いことばかりではなかった。

パソコンで全部やろうとする自分を見た一部のTAはなぜか自分グラフ手書きしろ要求してきた。自分反論した。「グラフならパソコンですでに出力できているのになぜわざわざ手書きにする必要があるのか?」これに対するTAの答えはだいたい「平等性を保つため」、「他のみんなは手書きでやっている」、「理解を深めるため」、「他学科手書き必須から」というような感じである自分にとっては、これらすべてが理解できなかった。そもそも手書きにすることによって実験に対する理解がどう深まるというのか?自分はむしろ手書きを徹底的に排除することによって、煩雑作業をする時間を考える時間に充てた。そのおかげで実験に対する理解は以前と比べ物にならないくらいに深まった。手書きじゃなければ理解が深まらない理由はない。そもそもパソコンのほうが厳密にコードを組まなければならない分だけ理解力要求されるはずである。「理解を深めるため」といっている本人だって結局その言葉意味もわからず言っているにすぎない。

平等性」に関しては全く別のTAから複数回言われた。「パソコンを使って効率化しようとするのはずるい」と言いたいのか、このTAは?pythonだって1ヶ月間死に物狂いで情報をかき集めて覚えたのに、それのどこがずるいというのだろう。平等性を掲げて効率化を否定し、全員に同じ作業強要させ、「成績」をちらつかせて脅すのはずるくないのか?みんな一緒に抑圧されましょうということか?これを言われたときに感じた何とも言えない吐き気のようなものは今でもうっすらとだが覚えている。正直なところ、プログラミングが出来るというだけでむしろ褒められると思ったのだ。パソコンが使いこなせるほうが印象はいいに決まってると思っていたのも、結局は自分勘違いだった。

pythonを使い始めてからの2年後期、3年前期を通して4,5回ぐらいTA(全員別の人)に「手書きしろ」と言われたが、言われるたびに反論するのもいい加減に疲れてきた。なぜ手書きにする必要があるのか、自分は聞かれるたびにこう聞き返した。まともな答えを返したTAは一人もいなかった。大学先生担当する実験PCは駄目なんて言われたことは一度もなかったし、どうもTA勝手に「手書きしろ」と言っているだけらしい。「他学科パソコン禁止から」とかいう非論理的ルール鵜呑みにしてそれを適用しようとする姿勢にも無性に腹が立った。

TAがいうには手書きコピペ防止の意味もあるらしい。本当に手書きにしたらコピペが減るのか?パソコンにしたらコピペが増えるというが、それは果たして本当に「増えた」のだろうか?確かにコピペするのは手書きと違って簡単だが、コピペするやつは手書きだろうがパソコンだろうがコピペする。そもそも自分の頭で文章を書く能力がないかコピペするのであって、パソコン制限たかコピペがなくなるという理屈おかしい。そんなにコピペが嫌だったらむしろ最初からコピペをチェックしやす電子データに限ってしまえばいいと思う。パソコン有りにしてコピペが増えたというのは、手書きレポートでは見逃していた分のコピペがばれて、それで数が増えたように見えたという可能性もある。むしろパソコンからこそコピペを見破れるのではないだろうか?

自分は、手書き不正の温床ぐらいに思っている。手書き場合見かけ上はコピペしたことがばれにくいし、グラフもそれっぽく適当に書いても適当プロットしたことはほぼばれないし、そもそもアナログデータ機械検閲にかけにくいためどの程度コピペなのかを判定する労力だって膨大過ぎる(別のTAに話を聞いたところ、採点する側から言わせるとコピペしたこと自体結構分かるものらしい)。手書き強制するということは、すなわち不正ごまかす余地を与えているに過ぎない。本気でコピペをなくそうとするならば、いっそのことすべて電子化してしまったほうがよいとすら思う。

pythonを使い始めてから1年経ち、「手書きにしてください」と言われるたびに反論していったが、元々自己主張の弱い引っ込み思案なタイプのために、自己主張してちゃんと言い返すというのは精神的な負担が大きかった。「パソコンではなぜ駄目なのか」を強く主張するたび、ものすごく疲れがたまってしまい、実験がない日でも「なぜこんな当たり前のことをわざわざ言わなければならないんだろう」と思い返してしまうせいでどんどんやる気を無くしていった。

なぜ大学の一部にはパソコンを使わせたがらない空気があるのだろう。この人たちは、手書きが苦手な自分にとっての最後の砦すら壊すつもりなのだろうか。なぜ手書きにこだわるのだろうか。

2015-06-17

http://togetter.com/li/835942

セルフホスティング論争について俺がモヤモヤするのは2点

第一に、発端となった元ツイートには「非エンジニア新卒女子」とはっきり書いてあるのに

エンジニアとしては絶対に雇いたくない》

《旧式言語を学ばずに関数型言語一本槍でエキスパートを目指すような感じの方》

《「まず軽く触れてみよう」とか「趣味でやってみるか」といった程度ならいいのですが》

《実際には肝心なことを何も知らないのに、なんか知っていると思い込んでいる状態が、私いわく「脳味噌膿んでる」》

ひどい書きっぷりだよね。

もし自分当事者だったら「見ず知らずの人になんでここまで言われなきゃいけないの」と傷つくと思う。

第二に、下位層のレイヤーについて知っていなければ上位層のことをちゃんとやる資格がない

という態度が明らかに本人のダブルスタンダードっぷりを示している点

OCamlで書かれたコード関数型のパラダイム

コンパイルされたマシン語コード手続き型のパラダイム

と言いたいのだと思うけど、最近CPUマシン語に書かれていある命令をそのまま実行しない。

インテル場合CISC命令セットで記述されたコードRISC的なマイクロコードに分解・解釈して実行する。

さらに内部はパイプライン化されているため、単純に「1命令ずつ逐次実行」されてもいない。

外側から観察するとあたかマシン語命令列をひとつずつ逐次実行しているかのように振る舞っているだけだ。

マシン語コード記述されたプログラムが、命令通り入力と出力を繰り返すなら、内部でどのような先読み予測分岐を繰り返していても問題ない?マシン語の忠実な実行装置とみなしてよい?もちろん回路の設計ミスで誤動作するかも知れないけど、それがプログラマの「根本的な過ち」になる?

これは高級言語マシン語関係とまったく同じだ。

OCaml世界記述されているロジックが、OCaml仕様通りにちゃんと動作すれば、その下位層にあるマシン語がどういうパラダイム記述されていても関係ないと考えていいと俺は思う。

余談1

くだんの女子について、周辺のツイートを見てみると(完全に部外者憶測だけど)Railsを主力とするソフトウェア企業に非エンジニアとして新卒入社した新人プログラミングに興味を持ったのに対して上司OCamlの本を教科書として渡したのでそれを学んでプログラミング考え方を身につけた。その後Railsについても学んでみようとしたが、考え方のギャップに強い違和感を覚えた。…という経緯みたいだ。

余談2

https://twitter.com/camloeba/status/611051620877537281

https://twitter.com/sessoh/status/611052396161183744

このやりとり、拙僧さんが「肝心なこと」と思ってることを卯之助さんは「重要でない」と言ってるんじゃないですかね。

2015-06-16

文科省プログラミング教育に関する報告書は何が間違っているのか

概念

二種類のレイヤが混ざってる。あと、スクリプト言語レイヤは要らない。例は突っ込みどころが多すぎるので触れない。

アプリケーション

コンピュータ上で動作するもの全て、システム周りの低レベルプログラムを含めてアプリケーションとして括るのはちょっと乱暴。

何をアプリケーションと呼ぶかはコンテキストによる。

OSを書いてる人間から見ればユーザープロセスは全部アプリケーションだし、twitterから見たらAPIを叩くものは全てアプリケーションだろう。

基本的には外から持ってきたソフトウェア基盤の上に作るもの総称してアプリケーションと呼ぶのがより実態に近いと思う。

スクリプト言語

だいたい合ってる。ただ、高級言語より上にあるのは変。スクリプト言語高級言語に含まれる。

高級言語

だいたい合ってるが、自然言語云々は余計。例えばS式自然言語アナロジーではない。単に比較問題抽象度が高いかどうかだけの区別しかない。

ミドルウェアライブラリー

OS云々は関係ない。OSミドルウェアライブラリーは使う。一般には自分が書いてないソフトウェアコードライブラリと呼び、何かと比較してより低いレイヤにあるライブラリミドルウェアと呼ぶ。

機械語

問題ない

コンパイラインタプリタ

ここが一番まずい。まず、中間コードコンパイラが内部的に処理の段階を分ける仕組みであって、出力ではない。

また、インタプリタソース言語逐次実行するのではなく、正確には中間コード抽象構文木そのもを含む)を逐次実行するものだ。

他のプログラムで実行するコードを生成するものコンパイラ自分自身コードを実行するのがインタプリタ、という区分けがわかりやすいと思う。

ただ、現実的にはインタプリタは内部的にコンパイラを持つし、コンパイラ最適化過程では内部的にインタプリタを使う。

昨今はLLVMみたいに、コンパイラなのかインタプリタなのかコンテキストによって変わるものもあるので、正直区別しても意味がないと思うけど。

結論

この文書には問題がある。そうだな、直るのを待とうか。そんなことより自分コード心配をするんだ!

2015-06-10

http://anond.hatelabo.jp/20150610180510

なんだかんだ言って他の高級言語も似たようなものなので応用が利きやす

逆だとあまりにも自分でやらなきゃいけないことに絶望する

2015-01-16

http://anond.hatelabo.jp/20150116031439

viemacs新規言語作ったわけじゃない。

viqededexviと元々存在した別のエディタから派生している。

emacs採用したlisp世界で2番目に古い高級言語。(1番目はFortran。それ以前はマシン語アセンブリ言語だけ)

ちなみに昔はlisp計算機工学を学ぶ上での必須教養だった(つまり使い手が多かった)からマクロ言語として選ばれたのは必然

あとlisp以外の言語を使えるemacs亜流もあった(過去形)はず。

2014-01-23

高級プログラミング言語未来はない

一般人にはスマホで十分でPCが終わるとか言ってるけど

PCが終われば高級言語も終わる。

CPUの性能が進化すればとか言う奴がいるけど

CPU進化恩恵にあずかるのはデバイスの小型化であって

プログラミング言語なんかのためじゃない。

デバイスはこの先スマホなんか目じゃないほどもっともっと小型化を続ける。

高級言語なんぞのためにハード利便性を停滞させるわけがないし

未来永劫高級言語は不利で在り続ける。

2013-10-06

http://anond.hatelabo.jp/20131005112113

そりゃ

高級言語なんて他人の脳内妄想ルールの暗記だから

しっかりとした物理法則と違って理に適ってないから忘れて当然

2012-09-04

"Hello world!"

このお話はたぶんフィクションです。実在の個人や企業とはあんまり関係ありません。そういうことにしろください。


10年前、20代になったばかりの頃の僕は、今思えば本当に最低な生活を送っていた。高校を中退し、実家とは疎遠で、友達もなく、金もなく、夢も希望もなく、ただバイト先と自宅を行き来するだけの毎日。いつも視界には霞がかかったようで、底の見えない空虚さだけが僕の心を支配していた。

それでも趣味らしいものはあった。オンボロマシンRedHatを入れ、ダイヤルアップの細い回線自宅サーバを立て、Perlでガラクタのようなプログラムを動かす。そんな子供じみた遊びだけど、プログラムを組んでいるときだけは空虚さを忘れ、画面の中に没頭できた。

ただ、そのときの僕はもうすでにいろんなものに打ちのめされていて、若者にありがちな全能感などというもの霧散していた。自分プログラミングで何かを成すだとか、それを仕事にしようなんてことは一切頭になかった。このまま夢も希望もなく人生を終えるのだと、そう思っていた。

それでも転機は訪れる。

勤めていた工場で派遣切りにあった僕は、「働きたくないでござる! 絶対に働きたくないでござる!」とか言いながらニート生活をしていた。そろそろ翌月の家賃も払えなくなってきたころ、派遣会社から電話がかかってきた。「プログラム開発の仕事があるんですがやりませんか?」と。そういや履歴書だかスキルシートだかに、Perlがどうたらとか書いたっけ。実務経験もない中卒に仕事まわすとかwww ……とは思ったものの、このままでは本気でホームレス一直線だったので引き受けた。

はじまりはそんなもの。たいした覚悟があったわけでもない。

派遣された先は従業員数10人くらい、パートさん含めても50人くらいの小さな会社だった。現在手書きの伝票でやっている処理をWeb化したいのだという。システム担当者はおらず、事務員さんがExcelAccessを使える程度。すべて僕一人でやらなければならない。マジか。

ともあれ、まずはサーバである。後々の運用を考えるとLinux系は使えない。事務所の片隅に放置されていたWindows 2000マシンApacheを入れてそれでよしとした。

次はデータベース。でもこの頃の僕は「正規化ってなんれすか?」というレベルだったので基礎から勉強した。なんかMySQLってのがいいらしい→社長に申請→「今Access使ってるからそれでいけ」→「はい」→パフォーマンスの面で問題出るだろうなとは思ったがしょうがない。

次は言語最初はPerlで書こうと思ってたけど、PHPってのが流行ってるらしいのでこっちにした。ウホッ! いい言語……。

そして業務内容を把握するため、現場あっちこっち駆けずり回りながらヒアリングする。ときには部長から愚痴を聞かされ、ときにはパートのおばちゃんから誘惑され、そんなこんなを繰り返し、仕様をつめていく。

そして数ヶ月かけて開発したシステムの稼働である。そのときのことは今でも忘れない。

現場の人がラインからデータ入力する。サーバデータが送られてくる。別の事業所からも送信されてきてる。問題ない。事務員さんが伝票処理を行う。問題ない。すげえ、ちゃんと動いてる。お遊びで作ったプログラムではなく、本当に本気の業務用プログラムである。それを僕が1人で作ったのだ。このプログラムで業務がまわり、利益を生み出すのだ。社会に対して、何らかの作用を及ぼすのだ。僕みたいなクズにでも、そんなことが可能だったのだ。

そのことに気付いたときの感動を、僕は今でも忘れない。


それからちょっといろいろあって、ホームレスになった。うん、急展開なのはわかってる。でもこの間のことは語ってもあまり面白くないし、公序良俗に反する話もあるのでざっくりはしょる。どうせフィションなんだから細かいことを気にしてはいけない。

話を戻そう。

ホームレスになってからの数日はひどい精神状態だった。足元から世界が崩れていく感覚。視界がぐにゃりと歪む。帰りたい。でも帰る家がない。だからホームレスというのか……というトートロジーを何度繰り返しただろうか。

もうあまり覚えていないけど、このときの僕は本当にもう何もかもどうでもよくなってたと思う。ただ、自分の全財産がバッグ1つしかないということに対する心地よさ、開放感があったのはよく覚えてる。そんな状況で地べたに座り込んで見る風景。きっと、今はもう見えない。あの頃の僕にしか見えない風景が、そこにはあった。

いろんな人と出会い、流れ流れて、最終的に西成のあいりん地区にたどり着いた。関西圏の人には説明不要かもしれないけど、よく言えば日雇い労働者の街、ぶっちゃけて言えばホームレスメッカである。今はもう綺麗になってしまったし、治安もそこそこよくなったけど、僕がいた頃はまさに「カオス」としか表現のしようがない状況だった。

どこから持ってきたんだといいたくなるようなガラクタばかりを並べた泥棒市。簡素な骨組みにビニールシートをかぶせただけの飲み屋。「ないかーないかー」と声が聞こえてきたので見てみると、警察署の近くなのに道端で堂々と丁半博打をやっている。コンビニトイレ張り紙には「トイレが詰まる原因になるので注射器を捨てないでください」とある。いやトイレが詰まるとかの前に気にすることがあるだろ。ケンカなんて日常茶飯事。頭から血を流したおっさん普通に歩いてる。数百人規模で並ぶ三角公園炊き出しは圧巻。四角公園の炊き出しでは誰もいない場所にワンカップの瓶とかがたくさん並んでる。何かと思って聞いてみたら「あれで並んどることになってん」と返ってくる。学食の席取りルールみたいだ。ああもう全然書ききれない。

でも一番印象に残っているのは、南海線の高架下、うず高く積まれたゴミ山の前でガラクタ解体していたおっちゃんのこと。奇声を発しながらハンマーを振り下ろしていたおっちゃん。その両目は、これ以上ないほどにキラキラと輝いていた。その鉄屑を売った金でビールが何本買えるか皮算用でもしているのか、あるいは幸せになる魔法の薬でもキメているのか、そのときの僕にはわからなかったけど。

そして、人生を投げ出していた僕に付き合ってくれたおっちゃん、あなたのことも忘れません。モーニングをおごってくれて、いろんな話をしてくれて、聞いてくれて、役所の福祉課まで連れて行ってくれたおっちゃん。あなたがいなければ、僕は今でも西成でぬるま湯の日々を送っていたかもしれない。

いろんな人に助けられて、ホームレスの施設に入ることになった。舞洲という人工島にあるのだけど、これがまた周囲に何もないのだ。スポーツ関連施設、ゴミ処理場、物流センターが点在するくらい。コンビニ1件ありゃしない。だけど施設での生活は意外にも楽しかった。2段ベッドが6つ並んだ12人部屋。むさくるしいけど、みんなバラエティに富んでいた。刑務所上がりのいかついおっちゃん、虚言癖のひどいおっちゃん、ほとんど一日中寝てるじいちゃん、薬のフラッシュバックがひどい兄ちゃん。そんな人達の中で過ごせば、自分がどれほどクズであっても気にならない。やはり僕はこちら側の人間だと再認識した。

市街地にある施設へ移ってからはいろんな仕事をした。生駒の山奥にドブさらいに行ったり、事務所移転バイトで腰をやってしまいそうになったり、なんやかんやあったけど、長くなるのではしょろう。結局のところ、またプログラマをすることになるのである

そろそろ身バレしそうな領域に入ってきたのでここでもう一度強調する。このお話はたぶんフィクションです! たぶんフィクションです! 大事なことなので2回言いました。


そう、またプログラマとして働くことになった。今度は従業員数300人くらいの大きな会社である日本人なら誰でも知ってるであろう大企業の子会社ということもあり、本社からの出向社員東大京大卒当たり前みたいな状況。そんな人達の前で中卒の僕が前に座ってプレゼンやら仕様検討会やらをするのだ。何の罰ゲームだよ……。

最初に思ったのは、「ここにいる人達は育ちがいい」ということだった。みんな礼儀正しい。喋り方や立ち居振る舞いまで、今まで僕がいた世界とは何もかもが違っていた。まるでドラマに出てくるような「ちゃんとした人生を送っている人達」だ。そんな人達に囲まれていると、「生きていてごめんなさい」と言いたくなる。本当に。

他に驚いたこと。社内で連絡を取り合うのにメール使ってる。やばい。社内メーリングリストとかもある。やばい。定期的にミーティングとか勉強会とかもする。なにそれ怖い。自分がいっぱしの社会人になったかのような錯覚に陥る。ちょっと前まで西成でゴミ拾いのバイトしてたのに。「勘違いするんじゃない! 西成の日々を思い出せ!」と何度も自分に言い聞かせ、自我を保った。

とはいえ、萎縮してばかりもいられない。気付いたことはどんどん提案した。あちこちに散らばっている共通の処理をライブラリ化したり、サーバで負荷がかかっている部分を改善したり。却下されたものも多かったけど、採用されたものもそれなりにあった。業務の改善案を考えるのは楽しい。誰かがプログラマの三大美徳に「無精」を上げていたっけ。極度のめんどくさがりで、楽をするための苦労は惜しまない僕には、こういう仕事天職なのかもしれない。

システム開発の方も順調に進んでいた。この頃はMicrosoftですらWeb版のOfficeを出すような状況で、デスクトップアプリに比べても遜色ないレベルのWebアプリがどんどん出てきていた。この会社で開発しているのも、そんなAjax技術を多用したWebアプリだ。JavaScriptを用いた本格的な開発に最初はとまどったけど、書けば書くほど言語自分の手に馴染んだ。クロージャprototypeといった基礎をちゃんと学ぶと、書けるコードレベルが段違いに上がっていくのが楽しかった。

仕様にもこだわった。実際に使う人がどんなふうに操作するのか、何度も何度も脳内でシミュレートし、どんなUIが最適なのか、データ構造はどうするべきか考え、実行速度とメンテナンス性の板挟みに苦しみ、何度も何度もリファクタリングを繰り返す。

そのとき開発していたシステムは、メイン画面でほとんどの処理を行うタイプのものだったのだけど、そのメイン画面のJavaScriptコードは最終的に1万行を超えた。もうこの頃にはJavaScriptでのオブジェクト指向的な開発手法というもの自分なりに構築されつつあった。そしてこのカチャカチャとした手触りの、安物のオモチャのような言語は、僕の一番好きな言語になったのだった。

そんなある日、僕が作ったシステムのメインユーザーである他部署の偉い人が来て、開口一番こう言った。

「あのシステムいいね!

この機能が素晴らしい、とか、あの発想はなかったわ、とか、とにかくべた褒めして、そして去っていった。機能追加要望の前口上だと思って身構えていた僕は拍子抜けした。「あの人が他人を褒めることなんてめったにないよ、すごいね」と近くの席の人が言う。

そのとき僕は「カチリ」という音を聞いた。

どこにもはまることのない歪な歯車。その僕が、社会という大きな機械の中に組み込まれる音だったのだと思う。まあすぐに外れてしまうのだけど。その一瞬だけは、僕は確かに社会の一部になれたのだ。


そして契約期間満了となり、再び僕は人生の岐路に立たされる。

これからどうするか? 今の技術力ならそれなりのところに就職できるかもしれない。でも僕にはやってみたいことがあった。半年かけて海外を旅するのだ。

今、僕の手元にはまとまったお金がある。こんなのは人生で初めてのことだ。そして僕は今、どこにも所属していない。どんなところに行ったっていいし、何をしたっていい。この先、そんな状況がどれだけあるだろうか? 人生長いのだ、そりゃあ何度だってあるかもしれない。でも今回やりたいことをやらなかったのなら、僕はきっと何度だってやらずにいるままだろう。

もちろん怖くなかったわけじゃない。なにせ海外なんて行ったことがなかったのだ。ずっと極貧の生活をしてきた僕は、国内旅行だって満足にしたことがない。

いろいろと考えた。ない頭を使って考えた。自分の英語は通じる? 病気になったときは? 荷物をなくしたら? あれこれ考えると心配事ばかりが頭をめぐって、わけがわからなくなる。

最終的に決定打になったのは、自分が何も持っていないという、この状況だった。

そう、僕は何も持っていない。家族友達も、夢も希望も。だけど、そんな人間だからこそできることがあるんじゃないかと思ったのだ。何も持たないからこそ、どこにだって行けるし、何にだってなれる。それはタロットカードの「愚者」みたいなものだ。愚かな者は恐れも何も知らぬからこそ、無限の可能性を秘めている。

心を決めたら後は早かった。

パスポートを取得した。航空券を手配した。住民票を海外転出した。トランクルームを借りた。住んでいた部屋を引き払った。

空港へ向かう電車の中で、懐かしい感覚に襲われた。あの日、ホームレスになったばかりのころの感覚世界が足元から崩れていく感覚。でもあのときとは決定的に違うことがあった。それは、今回は自分が望んでこうなったのだということ。流されるまま生きてきた僕が、初めて自分人生に対して主導権を得た。それだけが決定的に違っていた。それだけで十分だった。足の震えは、これからの旅路への、期待に対する震えなのだった。


初めて踏みしめる異国の地。最初はいろんなものに圧倒された。

自分とは異なる人種、異なる言語。街の看板すらまともに読めない。レストランの注文すらおぼつかない。ちょっと電車に乗るのも大仕事だ。それでも時間をかけてひとつひとつなんとかしていった。

見知らぬ街の匂い、喧騒、バケツをひっくり返したようなスコール、旅の中で出会う怪しい人、優しい人。僕の前でたくさんの風景が流れていく。

川辺のレストランで昼ご飯を食べた後ボケーッとしていると、猫が膝の上に乗ってくる。動くのもめんどくさくてボケーッとしてたら日が暮れてた。そのまま猫と一緒に晩ご飯を食べた。そんな日もあった。

長距離列車に乗っていたとき、車内食にピーナッツバターのようなものが付いていたので、普通にパンに塗って食べた。でも梅干的なものだったらしく、めちゃくちゃ酸っぱかった。「すっぱ! すっぱ!」とかやってたら向かいの席の女の子爆笑していた。僕も笑った。そんな日もあった。

最初は少し移動するのにも大変な思いをした。でもいつの間にか、ローカルバスに乗って気ままに旅するようになっていた。

たどたどしかった英語も、日常会話程度なら普通に喋れるようになっていた。

いろんな国のバックパッカーにもたくさん出会った。お互いつたない英語でやりとりするのも楽しかった。今度は彼らの国にも行ってみよう。だからいつか世界一周に出ようと、僕は心に決めた。

こんな旅に出たところで自分は何一つ変わらないと思ってた。でも、何かが変わってきている。それが何なのかはわからない。たとえば図太さだったり、適当さだったり、そういうのもあるのだけど、何か違う。それよりもっとプリミティブなもの。感情になる前の感情、行動になる前の行動。マグマのような熱量を持ったドロドロとしたものが、自分の中に渦巻いているのを感じる。それがいつ形を成すのかはわからない、今はまだ。だけどいつかどこかで、忘れた頃にひょっこり出てくるんじゃないかと思う。そのときを楽しみにしていよう。

そして夢のような日々は終わる。


日本に帰ってきたとき、手持ちの金は10万以下だった。部屋は解約していたので住むところもなかった。普通にホームレスだった。僕は焦らず慌てず、西成へ向かった。

しばらくはドヤ(安宿)に泊まった。一番安いところなら500円から泊まれる。西成はいいところだ。

宿に住民票を移し、ハロワ失業保険を申請した。

前の会社から戻ってこないかと誘われたけど、「働きたくないでござる! 絶対に働きたくないでござる!」と言って断った。

いや働きたくなかったのは本当だけど、もう1つ理由があった。職業訓練組み込み系を学ぼうと思っていたのだ。

スマートフォン含むタブレット端末の市場がこれからも拡大していくのは間違いない。そうすると必要になってくるのは組み込み系の知識。いやアプリ作るだけなら必要いかもしれないが、そういった知識があれば、自分ができることの幅がぐんと広がると思う。

それに、今の僕には基礎的な力が圧倒的に足りない。すべてを独学で、我流でやってきたけど、やはり限界を感じる場面が多々あった。だから今回ちゃんと体系的に学んで、足元を固めようと思ったのだ。

結果的には正解だったと思う。本当に基礎の基礎から学べた。

ブレッドボードを用いて回路を組むところから始まって、アセンブラC言語組み込みLinuxでのデバイスドライバ開発、アプリ開発。これまで高級言語の十分に進化しきった部分にしか触れてこなかった僕にとっては、どれも難しかったけど、どれも面白かった。これからどういう道に進むかまだわからないけど、ここで学んだことは絶対に無駄にならないと思う。

そうして職訓で勉強するかたわら、悶々と考えていたことがある。世界一周についてだ。

今はまだ金もないし、そんな金を稼げるあてもないのだけど、いつか(たぶん10年後くらいには)行こうと本気で思っている。

ルートだけでも今から考えておこうと思って、いろいろと旅程検討アプリを試してみたのだけど、どれもいまいち使い勝手が悪い。海外のものも含めて探しまくったけど、自分が思うようなものは見つからなかった。

だったらもう自分で作るしかない。せっかくだから就活ときポートフォリオとして使えるよう、ちゃんとしたWebアプリを作ることにした。

最初の1ヶ月は地図APIの選定と、検証コードを書き捨てるだけで終わった。

2ヶ月目は基礎部分の構築だけで終わった。

3ヶ月目に本気を出し、ほぼできあがった。

4ヶ月目でサーバドメインを用意し、最後の仕上げをした。

そしてベータ版リリースした。 http://planetter.com/

それが先週の話。

そして今、こうして増田投稿する文章を書いている。

だからこのお話はここで終わりだ。正確に言うなら、ここから先の展開はまだわからない。


10年間を振り返ってみて思う。あの頃と比べて、何か変わっただろうか?

家族や親類とは縁が切れたままだし、いまだに人付き合いは苦手だし、金はないし、夢も希望もない。それは今でも変わらない。ただ、あの頃あれほど感じていた空虚さは、跡形もなく消えている。

西成の高架下で見た光景を思い出す。ガラクタ解体していたおっちゃん。あのキラキラした目。たぶんあの瞬間に僕は、自分にとって一番大切なものは何なのか、心の深い部分で理解したんだと思う。

世界一周だなんだというのも本当はどうでもいい。僕はただ、いつだってドキドキしていたいのだ。

初めて人を好きになったときの気持ち。知らない街で暮らし始めたときの気持ち。そして、プログラムが思い通りに動いたときの気持ち。

それを持ち続けていたいのだ。いつだって新しい世界にワクワクしていたいのだ。

だから僕は、今日ガラクタのようなコードを書き続けている。

ふと目を閉じれば、まぶたの裏に映る、あの日のメッセージ

"Hello world!"


このお話はたぶんフィクションです。実在の個人や企業とはあんまり関係ありません。でも、ここに綴った僕の想いは、ノンフィクションです。

2011-08-27

http://anond.hatelabo.jp/20110827095849

とすると、グラフ理論は無条件で高級ってことになりそうじゃない?

低級言語高級言語みたいに明確な使い分けがされてるものと思ったけど、

今回は「お高いんでしょ?」の意味なのかな。程度問題というか。

2011-05-29

http://anond.hatelabo.jp/20110529133918

やさしく書かれた書物の欠点は、「自分が知らない事」の存在に気付けないことなんだよね。

ITに限らず、技術系では致命的で、そういうことを知らずに設計すると、取り返しがつかない(再設計の)場合もある。


前にちょっと増田で話題になった、高級言語なら失敗が減るって勘違いも似てる。

知ってる人間の助けになることは有っても、知らない人間を助けたりはしない。と言うよりも、そこを助けちゃいけない。

「難しいことが正しい」とは言わないし、ただ難解に書いただけの悪書も沢山ある。

だが、物事が簡単に見えるとしたら、どこかに誤魔化しがある。

その誤魔化しを「誤魔化し」だと説明していない本(判りやすいと賞賛される本)は基本、信用しないことにしてる。

2011-05-20

http://anond.hatelabo.jp/20110520101917

「理解していない人」

そんなレベルの話を始めちゃうんだ。

それこそ、クズみたいなプロジェクトに参加してから言ってほしいものだな。

「なんでも」「適当に」できるようになってる言語が、どんな惨状を生むのか。

「理解してない人」の話をするならね。

プロジェクトに対して完全な知識を持っている人間を想定するべきでない」くらいのつもりで言ったんだけどな。そんな底辺PG地獄の話をされても。

というか、そういうプロジェクトこそ、きちんと高級言語を使うべきだ。手の施しようのないゴミと、選り分ければ何とか食えるゴミなら、どちらもゴミから無駄と諦めるのではなく、後者を目指すべきじゃない?

http://anond.hatelabo.jp/20110520103411

こうした言語の話ってさ、いつもいつも狂信者みたいな人とか、単に引っ掻き回すだけの人が現れて

高級言語なら簡単なことが簡単にできる」とドヤ顔で言うんだよな。

「簡単なことを簡単に書くために、高度な言語サポートがある」といって「簡単な事では問題が起こりません」って言うんだ。

そして、メンテナンス性とかの話をしてたはずなのに、「言語カバーしてくれる」とか言い出す。

んなわけないじゃん・・・・ドキュメントの不備ひとつで、どんな言語だろうが難攻不落の砦になったりするんだよ。

逆言えば、アセンブラだろうがドキュメント(そして設計)さえちゃんとしてれば、全然普通にメンテできる。

コーディング時の他人の思想を伝えてくれる言語なんざ、いまだ見たことねぇよ。

それは君が、高級言語の機能を活かした質の良いコードを見たことがないだけだと思うよ。

そうしたコードは、たとえドキュメントが皆無でも実装者の意図を推測するのは難しくないし、メンテナンス性が高く、機能追加も容易だ。

アセンブラでも設計さえ確かなら問題ない。うん、そうだね。これは単純に比較の問題だ。アセンブラで堅牢さを実現できる設計なら、高級言語を使えばさらに堅牢に作れる。したがって、特に理由がない限り、アセンブラC言語を使う理由はない。

ましてや、常に完璧設計をすることは不可能だ。また、「完璧」な設計は要求変更に弱い。ならば、なおさら堅牢性の低い言語を使って実装する理由はない。

http://anond.hatelabo.jp/20110520001116

こうした言語の話ってさ、いつもいつも狂信者みたいな人とか、単に引っ掻き回すだけの人が現れて

高級言語なら簡単なことが簡単にできる」とドヤ顔で言うんだよな。

「簡単なことを簡単に書くために、高度な言語サポートがある」といって「簡単な事では問題が起こりません」って言うんだ。

そして、メンテナンス性とかの話をしてたはずなのに、「言語カバーしてくれる」とか言い出す。

んなわけないじゃん・・・・ドキュメントの不備ひとつで、どんな言語だろうが難攻不落の砦になったりするんだよ。

逆言えば、アセンブラだろうがドキュメント(そして設計)さえちゃんとしてれば、全然普通にメンテできる。

コーディング時の他人の思想を伝えてくれる言語なんざ、いまだ見たことねぇよ。

2010-08-05

http://anond.hatelabo.jp/20100805154559

トヨタのような規模の会社で、開発環境を統一・限定するのは、コストダウンとしても悪くないし、従業員はその環境で開発できればOKと言うのはあります。

また、学習としてモデルを使って行うのは、悪くないとも思う。

こうしたツールでは、シミュレーションテストも行えるわけで、設計上の問題点も見つけやすいですし、言語的な考え方でのアプローチとは異なる思考で作れますからね。

設計と実装を考えたときに、実装は違う工程だというのは、あながち間違いないではないですし、設計に焦点を当てるのも効果的だとは思います。


ただまぁ、大型機械などではなく、小型の機械だったりすると、リソースの関係で高級言語が使えなかったりします。

C++で書いたコードが実際に使うメモリ量とか、ぱっと計算できないですよね。

a = b ;

と言うコードの実態は、「=」演算子の実装次第ですし。

anond:20100804234314

C言語高級言語じゃないと思う。汎用低級言語だ。

特にMISRA-C規格準拠のコーディングをした場合C言語は汎用アセンブラと言っていい。

2009-07-25

http://anond.hatelabo.jp/20090725192328

プログラム高級言語(特に古典的なBASIC)は、命令が英単語そのままだったりする。

いくつかの基本的な英単語と少しの数式が分かれば、簡単なプログラムの読み書きができる(はず)。

で、僕は英語プログラミングも、どちらもイマイチだけれど、

なんでプログラミングできるのに英語できないの?

圧倒的に、知ってなきゃいけない単語数や文法の知識量が違うから。

最近は知ってなきゃいけない命令や概念が増えてきたけれど、それでもIDEの補完機能を使えばなんとかなる。それに、文法ミスがあってもコンパイルエラーで分かるし、その間違った場所のヒントもコンパイラIDEがくれる。

英語はそういうのも、全部自分で処理しないといけない。似ているけどニュアンスの違う単語だとか、適切な単語・文法選択だとか。そこが、そもそも知っていて、自分で即座に判断できる能力もないと使えないので苦しい。


なんで英語できるのにプログラミングできないの?

数学概念計算機科学的な概念を理解して、「アルゴリズムを立て、記述する」という行為ができるか否かが境目だと思う。

2009-05-16

http://anond.hatelabo.jp/20090516110528

逆に言うと日本語英語つまり人が、人間が理解できるように使う言語であっても的確に自分意味するところを表現するのは難しい。プログラム言語となればいわんや。

機械語は確かに単純で、高級になって人間がわかるようになるにつれ表現数が増えそのぶん確実に伝わらない可能性も増加するんだ。僕にとってCは高級すぎる。機械語ならわかるけど、っていわれて君はどう思う?

併用するのは大いにありというか積極的にやるべきだと思います。ひとつの言語だけで伝わるはずだという思い込みは危険。あと、英語日本語というのは同階層言語だけれども、機械に対して存在する言語として考えるときにC言語機械語よりは高級で、さらにその上に日常会話で用いられる言語というのがより高級言語として存在するのだから、そもそもの提案のレイヤーの切り分けが間違っていると思うよ。プログラム言語日常会話に使う言語を並列に語るのは横暴というよりは違和感がある。

プログラム言語をある程度読めてくれっつう気持ちはよーくわかるけれども。数式がそうであるように文書中にコード例を出すくらいならいいんじゃないのかねとは思ったりする。

http://anond.hatelabo.jp/20090516101824

書き方に一意性がないからなぁ。もっと様式が統一されてりゃいいんだろうけど。

あとITつってもC言語を使う人ばかりとは限らないよね。ある程度いくつか言語触ってればだいたい読めはするけれども、プログラム言語意図は含められない。プログラム言語高級言語ではあるけれども、英語日本語のような意思伝達を目的とした言語ではないのだから、やっぱりそれは横暴なのではないかね。

2009-01-27

http://anond.hatelabo.jp/20090127144322

ヒント: 高級言語と低級言語

元増田がどの世代のコンピュータから使ってる人かは知らないけれど、

MS-DOSアセンブラプログラム書いてた世代の自分でさえ、

現代のシステム仮想化抽象化を多重にやりまくって

ると思うよ。

じゃぁ、昔のアセンブラのノリで現代のプログラムを書くとしたら、

どんだけ手間でどんだけバラバラになるんよ?ってことを考えてみ?

ある意味で仕方のない流れだよ。


(追記)

極端な話、BIOSさえいらない。メモリ(スタートアップTOM)の0番地から

プログラムを、全く抽象化せずに(関数なんかも使わずに)書けと言われて、

書けないことはないだろうけど、・・・したくねーな。

2008-12-31

http://anond.hatelabo.jp/20081230225149

C/C++にいくつか思うこと (ちなみに、プログラマ始めたのはCができた頃でC++よりも私のプログラマ歴の方が長い)

Cはポインタ というか、ポインタを使いこなすことで、チューニングしていく言語だから ポインタ使いたくない=チューニングしたくない

って人は他の高級言語で良いと思う。ただ、動画などの処理をC/C++又はアセンブラ以外で書く人というのは、あまり聞かないので

速度が必要=C/C++って事かと思う。

昔、全くチューニングしていない、CとJavaを比べて同じ速度だからJavaでもOKというレポートを読んだことがあるのだが、あれは酷かった。

Cはチューニングしたときに、もっとも伸びしろが大きく、必要な場合アセンブラと並記できることで、ほぼアセンブラという領域まで

チューニングできるところが魅力。その際、ポインタは無くてはならない。知っておくべき技術

繰り返しになるけどチューニングしない人には意味がない言語と言われればその通り。

また、ポインタだけではなく、レジスタについても知っておくとCでの伸びシロが大きくなる。

そして、少なくともアセンブラレベルでのPUSH,POP,CALLは覚えておいた方がよい。

関数コールをすると、レジスタ類の待避アセンブラレベルでは走り、その上、スタック引数返値を積んでジャンプするという

ものすごく遠大な処理がアセンブラレベルでは走っているが、Cレベルでは1行の関数コールに見える。

という事を理解しておくと、C++でのインライン関数重要性や、再帰関数が実行時にはかなり重い理由が頭の中に浮かんでくる。

最近コンパイラ最適化してくれる場合も多いけどw

こういう言い方をすると、最近はCPUが早いから大丈夫とか言う人が多いが、じゃぁWindows Vistaは売れましたか?と聞きたい。

少なくともチューニングが必要な事もある。必要ないこともある。という事で選択すれば良いと思う。

たかだか、数行のスクリプトチューニング不要ならそりゃ、Perlつかうさ

参考までに書いておくと、個人的感覚ではC++はオブジェクト指向言語ではない。

アセンブラにまで行き着く C言語を大規模開発する時に最低限必要となる抽象化をするための言語

そのために、まともにOOPで設計するとC++では重くなる事が多い。いかに、崩せるかがキモ

またC++使いか?エセC++使いか?の見分け方は

constを正しく使えるか?参照を正しく使えるか? vtableの説明ができるか?

という質問に正しく答えられるか?で見分けると結構見分けがつくと思っている。

2008-12-30

http://anond.hatelabo.jp/20081230211311

http://anond.hatelabo.jp/20081230060518です。

自分の中で「プログラム言語を学ぶ」ということが「コンピューターの動作を理解する」と同義でした。実際にはポインタなんて暴走するプログラムを簡単に作成できる要素でしかなくって、後発の高級言語がとにかく隠蔽しようとしたのは理由があるわけでしょう。また「C言語言語仕様コンパクト」についても、そのコンパクトさゆえに実装では言語仕様を学ぶことよりもライブラリを学ぶことになるのは、問題ではないかと。

C++で呪文みたいに「newをオーバライドしろ」っていうアホウが消えてなくなるだけでもC#が好きです。

2008-12-17

アセンブラ

アセンブリ言語ってメモリレジスタ間でひたすら読み書きするだけなので全然難しいことないと思うんだけどな。自分で書くぶんには。確かに面倒臭いし可読性は低いかもしれないけど。C言語ウルトラスーパーデラックスマクロアセンブラなのでちょうどいい感じ。

むしろ高級言語でいろんな人が各人の美学に基づいて設計したオレオレ概念を理解するほうが骨が折れる。アセンブラ脳に染まってると、ローレベルで何をどうしたらいいかは想像できてても、その言語ルール上でどう記述したらいいかが分からなかったりする。

JavaはややっこしいけどJavaバイトコードは素直なスタックマシンでわかりやすいよね、とか思ったりもする。

2008-04-18

http://anond.hatelabo.jp/20080418010901

ほう、その辺の本には「神」なんて言葉が乱舞しとるがな。じゃあ日本古典がどう宗教価値に直結しとるんだ?

そりゃ「影響」はしてるだろうがな。別にキリスト教の神である必然性などない。/いや、親鸞の書いたものは当然古語で書かれてるでしょ?

「一般人レベル」でいうのなら、欧米先進国様の古典を学ぶ意義と同程度のものは間違いなくあるよ。

いや、自明とか間違いなくとか言われてもなあ。具体的に挙げてくれる? 君の議論の最大の弱点って多分具体性がないことだから。

グレコ・ローマン文化の話じゃなかったのかよ。近代以降ならそりゃ当然だろ。

いや君がニュートンを引き合いに出したんでしょうに。民主主義に関してはギリシャにまで遡って意義深い書籍を見つけることは出来るだろうなあ。

ほら、君は「??だとすれば」という仮定が読めないんだよね。

で、いつまで撤回した仮定を引きずるわけ?w

あとさあ、まやかしまやかしで構わないけど、そういう意味なら俺は英語の「役に立つ」もまやかしだと思うがねえ。

何かひとつ共通言語がないとITなんてやってられん、というのは厳然たる事実だろ。

一方で、文化資本による格差なんぞないほうがいいに決まってる。

東大卒は毎年数千人だ。それで、MIT卒は何人いるか知ってる?ハーバードは?プリンストンは?スタンフォードは?オックスフォードは?ケンブリッジは?

数千人か。なおさらたいしたことないな。で、MIT卒全員をエリートと呼んだ覚えはないが?(他の大学もね)。

仮にそうだとしても、「年に数人」レベル人間「教育」なんておこがましいと思わんか。

まあそうね。勝手にどこかで学んできそうな気はする。

教育ってのは、特に公教育ってのは、底上げのためにやるもんであって。

誰も「普通東大生数百人のレベルをギリギリにチューンする」なんて言ってないし、そもそも東大生の中で「教育制度がもっとよければ俺はもっと偉くなれた!」なんて言ってる奴は落ちこぼれだけだよ。だから「普通東大生数百人のレベルをギリギリにチューンする」という発想自体がそもそも無意味

いや、お前そういう話しかしてなかったじゃんw 俺が公教育は平均と底辺を上げるためのものだと主張したらやたら激しく反発してたよなあ?

いや、主流の座から滑り落ちたものを普通スタンダードとは呼ばないだろう。

主流と標準を辞書で引くことをお勧めする。そりゃ、主流が標準を塗り替えてしまうことは結構あるが、少なくとも数値計算世界ではまだだろう。過去の蓄積ってのがあるんだ。

Cを使ってアセンブラまがいのコードを書き、新しい言語なんて覚える暇があったらもっと他のことをするとかなんとか言ってる人だって一定の比率で存在する。おわかり?

それは、特にアセンブラが必要でもないケースでか? ちょっと勘弁して欲しいなw まあ仕事としてうまくやれてるならそれでもいいけどさ、特殊ケースだろ?

まだ、例えば専用プロセッサなり組み込みデバイスなりを制御するためにアセンブラ使うってほうがはるかに一般的なケースだと思うがな。数値計算パターン認識においてさえ。

どうも話が巧妙にずらされてる気がするんだが。

いや、君自身RubyとかPerlとかC++とかJavaとかに言及しちゃったからねえ。どっちが引っ掛けたかというのは不毛になりそうだからやめようや。なんなら俺がズルかったということにしてもいいが。

たとえばいきなりJavaを覚えさせられた人間がそれがわかるとは到底思えない。ライブラリソースを読めるレベルになってはじめてわかることだろう、それは。

いや、Javaライブラリソースを読むレベルになったらたしかにかなり専門的だが、そもそもJavaで書いたコードで高速計算させようというほうが間違いなわけで。

C++に関して言うなら、アセンブラ的な最適化に手を出すのはだいたい最後の最後だろう。俺(や多分君)のような古い世代はアセンブラからの積み上げで高級言語を見るけど、高級言語の側から必要なレベルまで掘り下げていく、という見方も可能なはずだし、最適化の上ではむしろそちらが本筋。

で、君が重いクラスライブラリとして想定してるのはなんなの? ちゃんと最近のものを使ってれば、そんじょそこらの奴がCでちゃっちゃと書くコードと同じかたいていは速いコードを生成するし、もちろん可読性も高くなるな。

C++の話も同様。敢えて「C++らしい」処理を書けば計算量はどんどん増えて、例えば行列カプセル化して演算子オーバーロードしてなんてことやってたら計算時間が倍ぐらいになってもおかしくはないだろう。一晩で終わる計算が翌日の昼までかかるということになったら作業効率には歴然たる差が出るぞ。

具体的にどこの出してるC++行列演算ライブラリがそこまで効率悪いって?

(補足追記)

最近C++用の数値演算ライブラリはかなり出来がよく、FORTRAN用のそれに性能で肉薄するところまで来ている。そう、ここでは、ライバルは君が主流からも標準からも蹴落とされたと主張したいらしきFORTRANなんだよ。

で、どの辺がネックかというと、君の言うように記述性と実行速度の関係だったりはする。でも、それは低水準処理がどうこうという問題ではないよな。

この件については、議論してる人がネットでも結構いるから読んでみるといい。君が思うほどにC,C++圧勝しているわけではないよ。随分C++が向上してはいるけど。で、FORTRANのほうが言語の構造上最適化が効き易い等の話題はあっても、手作業で機械語レベル最適化をするなんてのは、候補にさえ挙がらないな。

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