はてなキーワード: Lispとは
「BluAge(以下青年)が内々定を取り消した件が話題だがスタートアップなんてそんなもん。」ということをおぢさんはおゔぁさんがTwitterでよくつぶやいているが、学生目線でスタートアップについて語っている意見があまりなかったので書く。
先に結論。もちろん例外もある。身につくのはやばい組織への嗅覚で、属人性の高さからマネジメントが崩壊していて、学歴・社歴でイキったやつが跋扈しているのがスタートアップだ。
Twitterでスタートアップがほぼ全面的に批判されているが、スタートアップで働いて身につく力はあると思う。一番身につくのはやばいと思ったらすぐに逃げる力だ。これはスタートアップから逃げるごとに身につく力だ。もうやばいスタートアップはたくさんある。雇用契約書を出さない、距離感が雇用主と従業員じゃない、放置プレイ、やりがい搾取。働かないとわからないし、働いても自分が当事者だったと気付くのはやめたときからさ。でもね、そんなのもうどうでもいいんだ。全部やめちまったからね。
スタートアップは基本的にマネジメントが崩壊している。バイト(インターンとでも呼んだ方が良い?)の学生に適当に見繕った課題(タスク)を渡してコードレビューもせず放置。できたらレビューもガバガバでマージしといて、とそんなもん。青年もガバガバだったんじゃないのかな?いや、エンジニアリングはまともだったかもしれないな。なにせ内定を取り消されたのは営業担当の学生だったらしいからね。
でも概してマネジメントは終わっているはずで、今回は人事がそんな感じだったから(おそらく)経営の判断で内々定を取り消したんだと思う。属人性が高いことの良さは一般常識を欠如していたという言い訳で内々定を取り消せること。スタートアップを始めるときは肝に銘じるように。
次にスタートアップは頼れるものが学歴と社歴くらいしかない。東大とかは山程いるし、青年と同様に外銀のIBD出身とか外コン出身の人もたくさんいる。一番キモいのはそれを全面に出すこと。青年がどんなビジネスをしているかわかっている人が何人いる?みんな代表の出身しか知らないだろ?
そして、すぐにやめている人ばかりだ。青年の代表もメリルとBCG出身だけどそれぞれ1年くらいでやめているのかな?「やべえ」スタートアップをとっととやめる俺が言えたことではないけど、そんな「良い」会社をすぐにやめるやつがまともかねえ?会社に合う合わないがあるってのはもちろんだが、普通それくらいの会社に入れる人なら新卒で入る会社がどんな雰囲気かくらい調べてから入るだろう。上司のパワハラ、時間外労働、そもそも起業するつもりだった、どれだろうね。
最近だと元GAFAを名乗るエンジニアも増えてきている。おいそこ!w弊社の佐藤はエンジニアじゃないからなwまだ勘違いしているのか。数年働いた程度だとコーディングテストはできるかもしれないが、会社経営はうまくできないらしいね。そもそもGAFAで会社経営は教えてもらえないと思いますけどね!
学生エンジニア(N=1)(主語がでかい)(エンジニアはソフトウェアエンジニアという意味(はてなの人すぐエンジニアって単語で騒ぐからね(優しい)))からの意見でした。S式が好きなのでかっこが多いかもしれないですが、学生の皆さんはスタートアップに入る前にLispを書いて慣れておきましょう。Paul Grahamが投資してくれるかもしれないので。
LISP(というかS式)で書いてる時と同じくらい、触っていて心地の良い言語
宣言的に処理を記述して、関数が順次評価されていく文というのは、集中して書いてると脳汁出るわけで、どのような原理が働いているのかわかりませんがSQLとかLISPとかは熱中して書いていられます
翻ると、酒を飲みながら書いたような宣言の離れている変数の中身とかオブジェクトの状態とかのご機嫌を伺いながら、国語の授業よろしくアルコールでラリってる作者の心を読心術で丁寧に読み解いていくタイプのプログラム言語というかコードには接触していると筆者の飲んだアルコールが私の脳みそにまで時空を超えて染み込んでくるようで、腐った靴下を噛み締めてチンピラのサンドバッグになってる気分
どうせなら気分良くプログラミングしたいですよ
Scala や Elm と Lisp やら Haskell と OCaml に SML と関数型のプログラミング言語を勉強したけど、これらが命令型言語に劣る理由を解説しよう。
これは、SQL も同じ問題を持っているが、関数型言語は「こういうふうに動いてね」という解釈をインタープリターやコンパイラが「推測する」必要があるのだ。つまり、書いているときにパフォーマンスをプログラマーが想像できない。
それが、現実的に厳しいのだよ。マジでコンパイラ関連は金にならない領域になってきたので、関数型言語のための独自コンパイラを作る持続可能な組織が無い。確かに、LLVM を使えば x64 や arm といった最新のアーキテクチャに対応できるかもしれないけど、フロントエンドのレベルすら応対が辛い。よって、関数型言語は C言語にてチューリング完全な同等なコードだと「いくら最速に書いても」遅いのである。
例えば if と書いたら、関数型言語は else が必須ですが、命令型言語は else 無しでも動いちゃうのですね。文系の連中が数学的な背景を加味して要件定義できると思うか?違うだろ。毎回、上に else のことについて聞いたら、プログラマーの生産性は下がるだろ。関数型言語は、上が文系だとますますだが、分岐もきっちりとおさえる必要があるから、生産性は命令型言語に劣るよ。
ここまではよくわかる。それで物理学と数学的なカオス理論を押す連中が間違っていると思うのが、
二度目の入力の際に手間を惜しみ、初期値の僅かな違いは最終的な計算結果に与える影響もまた小さいだろうと考えて、小数のある桁以降の入力を省いたところ、
ここ。ここが諸悪の根源だ。まず計算機科学の連中が大学に入って最初に引っかかるミスに大御所がひっかっている。たとえば、0.4 - 0.3 は計算機科学では 0.1 じゃない。それは十進法から二進法に変換するという計算機の特性を理解してない人がやるミスだ。嘘だと思ったら、0.4 - 0.3 == 0.1 と C なり Ruby なり Python なり Java なり Haskell なりでやってくれ。ちなみに JavaScript なら 0.4 - 0.3 === 0.1、Lisp族の Clojure は (== (- 0.4 0.3) 0.1)、PHP はちょっと自信がないので省かせてもらう...。浮動演算ユニットがついているプロセッサで IEEE 754 の類をサポートしているなら「偽」となるはずだ。ここでは「桁あふれ」「丸め誤差」なんかは説明しないが、計算機で小数を扱うのは注意が必要ってことだ。閑話休題、つまり計算機で数学や物理学が実数のように小数点を扱うなら 3.0 と 3.1と 3.14 は別物として扱う必要があって、カオス理論の創始者であるローレンツは「有史に残る」ミスを犯した。
結果が大きく異なった。
これは金融界隈のエンジニアたちにとっては、コンピュータが現れてからは悪夢のような形で襲っていて、ゴースト・イン・ザ・シェルの題材にすらなっている「既知の未知」という類のエラーだ。はっきりいうと、大御所にこんなことを言うことは憚れるが、エンジニアだと3年目以降だとしないミスを MIT のエリートがやっているという、なんというか「そりゃ、そうなるだろ」的なミスをしでかした結果なんだよ。例えば、古典物理学だと有効数字のひとつ下の数値は切り上げて四捨五入するというのは教科書的には正しい。だがね、計算機科学だと小数点の扱いは事故の元なんだよ。具体例を出すと「Ruby で円周率を100回掛け合わせる、Ππ(パイパイ、n=100)みたいなことをする。
puts [3.0, 3.1, 3.14].map{|i| 100.times.reduce(i) {|j, k| j *= k + 1}} # 2.7997864633183236e+158 # 2.893112678762268e+158 # 2.930443164939848e+158
もう一度、特に高校の物理をやった人は考えてほしい。数値を切り捨てしないだけで、これだけの差が生じるのだ。そりゃ、ローレンツ大先生も驚くわな。現実世界では起きないような気がするのはなぜか?、と思うじゃん。そこで、わたしはこう思うわけですよ、
とね。だからこそ、
というものを科学する学問があって良いのじゃないかと。つまり、
なのではないかと。
凡人以下ながら新しいネタとか技術とか数学やアルゴリズムは引き出しを増やすように心がけてるんだけどね
食い扶持になる可能性もあるし
しかし、未だにRustがうまく使えないというか、学習コストが高すぎる気がするんだがどうしたもんかな…
国が公開してるとあるExcelファイルを読み込んで、それを望まれるCSVやJSONに加工する、
という仕様は同じにして色々な言語で書いて比較しようと思っているのだけど、
PHPやNode.js、Python、Goは自分には問題なく書けてる
多分、C++やCも、流石に何か便利なものにvcpkgやconanとか使って依存するだろうけど書けると思う
しかし、Rustは難しいなあ
Excelファイルをパースするサンプルコードも難しいというか、長くね?と思ってしまうんだけど
これに慣れる日は来るんだろうか…
Goは学習コストが低いと思うから、とりあえず動作するコードを書くのは問題ないんだよなあ
C#とかDとかNimとかErlangとかKotlinとかDartとかもやろうかなあ
でも、少なくとも後ろ2つはほとんどJavaみたいなもんだろうか
LISPとかじゃん。すげーめんどくさいやつが多いと思うけど。
人工知能で詐欺まがいなことしてる香具師に引っかかった、という話をこれからしていく。この記事は「人工知能ば詐欺だ」ということでなく、「詐欺師は人工知能を使いたい」ということを語る。
もう10年ぐらい前になるのだけど、人工知能には色々あるのに「深層学習だけが人工知能」だという無勉強な馬鹿に引っかかったんだよ。本当は人工知能なんて LISP から始まって、色々あって今の AI につながるているのに、その歴史は全く無視してね。Python のライブラリでどうにかできないものは不要とのことなので、「ふーん、そうなんですか」ぐらいで対応してた。なぜなら、自分は人工知能にAPIを叩いてブラウザに表示する部位を担当したからだ。
その会社にはエンジニアがいないので、人工知能とデザインを除いた全てをほぼ自分だけでフロントエンド(当時はFlash)からバックエンド(Django)とデータベース、クラウド部分を設計・開発・運営をやることになった。それは慣れてたから良いのだけど、ひとりでぼちぼちやるのは変な感じだった。ホームページには10名近い社員がいます、とのことなのに。
この理由はなぜなのか理解できたのは、インターンがやってきてからだ。そいつは結果を出せないから有能な人がやってこないのた。それで社員数を水増しするためにインターンを社員としてカウントしていたのである。なんとインターンの無給の学生ばっかり声かけて、ただ働きさせて「成果は自分のもの、ミスは能力のない学生のせい」みたいな畜生の極み、のようなことをして糊口をしのいでいる自称『天才』に俺は捕まってしまったのにここではじめて気がついたのだった。信じられないことに。
それで、ついに API をつないで一つのシステムにしましょうという日が来た。なんとか力量で解決したのだけど、はじめて彼のソースを見せてもらったときの衝撃度ときたらね。驚いたよ、スカスカのコード過ぎてね。おかげで深層学習がライブラリを使えば簡単にできるのも学んだけのだど。
閑話休題。
まぁ、コードを書くのが本業でない人だから良いか、と思ったらなんと、Python 教室を開くというじゃないですか。それで、成果をサイトに掲載するのですよ。自分のコードは絶対に載せないのに、他人のコードを添削して「弊社は実力があります」みたいな事例にしていたのですよ。驚いたことにね。
なぜ、そのような香具師が存在できたのかというと、「人工知能は効果判定をしにくいけど、将来的にはメリットになる可能性が高い」という計算機科学の領域では珍しい特性を持っているのよね。ほら、業界人にとってブラウザやデータベースといったものは、ちょっと触ったら特性が感覚的にわかるじゃないですか。そこが人工知能はちょっと違う。
もちろん人工知能は世の中に必要不可欠なものになるのは間違いないのだけど、というよりも現状でもスパムメール判定やゲームでは活躍していますけど、おそらく個人がどうにかできるものではないのよね。理由はこれ以上はアルゴリズムの向上が困難で、高コストな専用ハードウエアを扱える資本家に対抗する術を個人が持てないという限界と、教師あり学習のような判断基準の元になる資料をどう収集するのかという問題点を解決した人や組織が皆無という状態にあるからなんですよ。特に最後の部分は未だに twitter レベルの組織ですらやらかしているので、まだまだ難しいと思われます。
学習の根拠になったもの自体をどうやってキレイなものにするかということすら、データサイエンスという学問が出てきて苦労しているのですから、ユーザーエンドからしたらこの領域は未だにキャズムを超えていないと判定されるのは仕方がないことなのでしょう。それは、そういうもんだから良いのですよ。将来的には解決される可能性が高いでしょうし。
それでですね、やっと本題に入れるのですけど、問題点は「人工知能は効果判定をしにくいけど、将来的にはメリットになる可能性が高い」という非対称性をこの領域は抱えているのですよ。これはですね、バイオ(健康食品・代替療法)や金融商品(暗号通貨・バイナリーオプション)なんかに出てくる胡散臭い「何しているのかわからない」香具師が介入しやすい環境なのですね。それっぽいことを言って、専門家なら絶対に言えないコミットメント(金融だと「100%絶対に儲かる」とか)を宣言し、私はアメリカの有名大の(別領域の) Ph.D. を持っています(嘘)、日本はゴミです、さあ皆さん『人工知能で夢』を叶えましょう、なんていうクサい台詞を(非技術者向けの)講演会で語るやつがいるのです。残念なことに。
でも、皆さん、ちょっと考えてみてください。なんで(トーシロ限定で)講演会なんてする必要があるのかと。人工知能の世界で講演会をして資金集めをする、っておかしくありませんか?OSS で有名なコミッタだったり、インパクトファクターのつく雑誌に名前がのるような人材がですよ、この御時世にわざわざ資金集めする必要がありますか?世界中から「金を出させてくれ」といって金がわんさか集まってくるに決まっているじゃないですか。逆に、プロを避けるような人物に金を出したいと思いますか? よって、(トーシロ限定で)資金集めのための講演会なんかをひらくような残念な人工知能開発者が金を稼ぐことはありません。同様なケースに遭遇したら、出資したら泣き寝入りすることになりますよ。
※ この記事はアキネーターの下りがクソです。もう少ししたら自分の言葉で書き直します。ただ、この記事を消すことはしないです。これ技術的な話をしているようにみせてますが、わかる人にはしっくりくる符牒のつもりで書いています。
うん、でも、わたし講演会でその人のつくった人工知能が動いているのみたよ、まるでアキネーターみたいな、というのでありましたら「良いものを見ましたね」とこたえますよ。あれは良いものです。実はアキネーターのクローンは今だと学生レベルのスキルで作れます。具体的にのべますと、なにかテーマを固定して、そのテーマに関係する情報を片っ端から集めて、Python のライブラリを使ってデータ処理を行い、機械学習のライブラリを介して5段階の入力に対して適宜返せるような状態に持っていき、Rails/Laravel/Django で HTML を吐き出すようにして、ウェブ・ブラウザで Vue/ReactjQuery に呼応するようにすると計算機科学ができる人だと作れちゃいますし、見た目を重視したければ美大生にでも声かければ、似たようなキャラを描いてくれることでしょう。
この程度だと、二人の学生を無休(給)のインターンにやらせて、詐欺の商売道具をただで作れます。これは、アキネーターは駄目だとは言ってません。説明すると長くなるので省きますが、あなたを騙す道具を作るのにプロは要らないと言っているのです。
それで話を続けさせてもらいますが、哀れな学生は酷使されたうえに、会社のサイトに「インターンの思ひ出(検閲済み)」を実名で掲載されるという、デジタルタトゥーを刻まれるのです。かわいそうに。
※ ここを疑え、というポイントを追加。
これだけでは済みません。詐欺の道具はこれだけでは不足しますからね。本は良い権威の道具になりますよね?そうなんですよ、出版社の知識のない馬鹿共が「学生だけが書いた技術書」(前書きと終わりにだけを本人が書き、しかも自著として講演会で提示するという狂気の書)を出しやがった。これ、マジで有名出版社がやらかしたので驚いたよ。
で、こいつもう一冊も本(これまた共著なのに、自著として講演会で使うイカれた書)を出してるのよね。まぁ、読んでみたらあまりの頭の弱さに感動したのだけど、驚いたことにこの本を出典として Wikipedia に何度も記載しようとチャレンジするキチガイ(本人かは不明)がいたのよ。もちろんリジェクトくらっていたのだけど、ビビるよねー。繰り返すが、人工知能が悪いのじゃないのですよ。人工知能を使って、投資家を騙そうとするのが許せないのであって。
ちなみに、わたくしはそいつにコードの添削されたのですけど、おそらくそいつは FizzBuzz テスト、クリアできませんよ。なぜなら、If/Else がかけないのではなく、四則計算のミスが酷いので。チューリングテストは通るとおもうけど。どうして、大切な投資家向けの資料なのに単純な数値が一致しないのかわからないのですけど、何故か数値の足し算がおかしいことが多すぎるのよ。数値が一致しない、ってヤバすぎるだろ。それ、多分病気だから、哀れに思った(元)奴隷ちゃんたちは、病院へ行くように諭してあげてください。きっと、逆上するでしょうけど(笑)。
えっ、なんでお前はやんないのか?って、そりゃ「めちゃくちゃそいつのこと恨んでいるから」に決まっているじゃない。オレは、そいつを救えるほど、冪等な人間じゃないんだよ。だって、オレは天然知能だからな。
p.s. 多分、この記事で言及している人物の被害にあった方はは多いので、「アイツだろうな」とわかるように書いてあります。「アイツってどんな人?」と聞かれたら、説明するのが辛いでしょうからこのページをさっとみせられるようにこの記事を書きました。私も辛いのです。10年フラッシュバックに悩まされてきました。ただ、これ以上の犠牲者が出ることが耐えられなくなり、今回この記事を書かせていただきました。この記事で言及している人物は専門ではないのに人工知能・情報工学という餌を使って、相変わらずボニーアンドクライド気取りで若者を搾取しています。ソーシャルエンジニアリングを使われると、若者はかんたんに騙されてしまうものです。かつての自分がそうだったように。世の中にしなくて良い苦労はあるのです。
今さらここで何かを書いても,あまり助けにならないかもしれないけれど,もしまだ入門する気があったら気に留めておいてほしい.
package, use-package, leafどれでも構わない.ただ混在させるとエラーやwarningを出したりするので,統一をしたほうがいいとは思う.新しいとか古いとかはこの際気にしなくていい.最近はEmacs標準でpackage.elがついているので,めんどくさければ全部packageを使えば問題ない.
こういうのは,Emacsを使っているうちに「自分は.emacsをいじるのを結構楽しんでいるな」と思ったときに,新しいのやスマートな方法を調べれば十分だ.
これは入門時は仕方ない.ただ後述するhydraを使ってくれ.そうすれば一度調べたものをもう一度調べることがなくなると思う.
hydraを使おう.
https://github.com/abo-abo/hydra
hydraってのは,複雑なキーバインドを覚えられない,覚えたくない場合に入れるパッケージだ.Emacsだと,導入したパッケージにデフォルトで設定されているキーバインドと,自分でカスタマイズしたキーバインド,両方を覚えておく必要がある.けど,そんなの覚えてられるのは一部だけなので,よく使うコマンド一覧を自分で設定できて,それを表示してくれるのがhydraだ.
表示するコマンド一覧を自分で設定するので,↑で調べたときに調べたコマンドを全部hydraの設定に書いておくといい.また,そのときにキーバインドも判明したのであれば,hydraのコマンド説明部分にキーバインドも書いておくといい.
これはすまん.使ってる人は実はそこまで少数ではないんじゃないかなと思っているけど,確かに日本語発信している情報は少ない.あと,たいていのパッケージがgithub等に公開されていて,玄人達は,英語が読める or そもそもソースがlispで書いてあるんだから読めばいいじゃん,という人たちが多い気はする.確かに私も日本語の情報は特に少ないと感じている.
Emacs-jpのbeginners-helpはあんまりbeginnerじゃない質問がされているけれど,気にせず初心者質問をしても大丈夫な場所なので,遠慮なく聞いてくれ.回答がわからなければ,「何言ってるのか全然わからん」と言ってくれ.
そういえば私もWindowsでEmacsを使ったことがないので何もわからない…….でも,そこまで困っているならきっとWindows Emacsユーザ全員が困っているはずなので,Emacs-jpで聞いてみたらいいかもしれない.もしくはWindowsユーザチャンネルを作ってみたらいいかもしれない.すまん,これについては助けになれない.
キーバインドが覚えられないのは,実はあなただけじゃなくてみんな同じだったからhydraなんてものが出てきたし,日本語情報が少ないのは事実だ.だからあまり卑下しないでくれ.偉そうに書いたけど,私も日本語情報が少なくて結構わからないことは多かったりする.READMEに書いてあるとおりにセットアップしてもエラーが出たりすることは結構多い.だから,こういう意見に耳を傾けて,Emacsコミュニティが人類に優しくなってほしいと願っている.