はてなキーワード: 関数型言語とは
元増田です
Closureというのは初めて知りました
ていうか関数型言語はまだ手出し出来てません…今取ってるN予備校がScala教えてるのでそのうちやろうかなと思ってはいるんですが、なんか取っ付きにくいっすね
C言語。
当時はゲームを作りたかったら、まずはC言語に手を出す時代だった。
何の成果もなかった。
関数型言語を1個も使えないのが悔しくて、趣味でやっている。まだ本を1冊も終わっていないので、先は長い。
GetHoge(dbConnection, key), GetFuga(dbConnection, key, key2)
dbConnection引数を渡さずにその場でDB接続する版の関数 GetHoge(key), GetFuga(key, key2)
を作りたい
DataTable GetHoge(key) {
var c = CreateDbConnection);
return GetHoge(c, key);
}
DataTable GetFuga(key, key2) {
var c = CreateDbConnection);
}
これでは関数の数だけ同じものを作らねばならないので煩雑である。
ES2015であれば、
function OpenConnectionAndRun(runFunc, ...args) {
var c = CreateDbConnection);
return runFunc(c, ...args);
}
という関数を1つ用意すればそれで済む。
言語に関わらず
「メソッドAはメソッドBからしか呼ばれたくない」みたいなことってあると思うんだ
一人で開発してればそういうのは覚えてりゃ良いんだけど
複数人で開発してると、せっかくいい感じにリファクタしてA→B→C→D→Eってメソッドの流れ作ってるのに
途中だけ使われたり乱入されたり、グチャグチャにされることがある
だから、A〜Eをセットにしたり、入り口と出口をコントロールしたいんだよね
名前をつけるとしたらModal methodsって言う感じ
今は大体Modelessすぎる
もちろんクラスにして〜とかオブジェクト指向的に〜とか関数型言語で〜っていう話になりそうなのは分かるんだが
けどそういう思想未だ見たことがない、大体みな構造的な方法を取ってる
あ、inputが◯◯であることを保証するとか制限するみたいなの、何かあった気が
でもどう足掻いてもめんどいんだよな
面倒臭すぎてうわー!って1メソッドに詰めることもたまにある
サーバレスってのがもうかれこれ四年は「流行ってる」ような気がするんだが
どう向き合えばいいのかわからない
そもそも自分はアプリ側の人間だから、サーバサイドの悩みを起点にされたサーバレスの魅力を語られてもわからん
それなら旧来のやり方でいいのではないか?
サーバレスの情報が出てのないっていうのは、旧来の人たちですら手を出していないってことだよね?
そういう人たちに聞くと「やらなきゃなあ」みたいな億劫そうな声が聞ける
どう向き合えばいいのやら
こういうのは言語でもよく見る
持ち上げられまくってるものが、実運用であまり使用されていない
関数型言語とかね
多分、利点があればどこかの時点から爆発的に広がるんだろう
そのラインを見極めるのが中々難しい
技術ブログなんかを見ると、新しいもの好きばかりだからまるで当てにならない
というわけで、ずっとサーバレスがどの地点にいるか迷いながら生きている
個人的にはまだ早いと見てるが、自信はない
IT業界は日本社会の縮図となっているんだよ - こうして僕らは腐る
http://www.byosoku100.com/entry/2018/01/13/212749
ITを学んでIT企業に就職して、この国のIT企業はきっとCIAか何かによって弱体化を図られたとしか考えられないと思いました。
自分でロジック組んだり、アルゴリズムを考えたりする仕事をさせてくれている会社もありますが、会社の規模がでかくなればなるほどそういう仕事は下流に任せる感が強い。まずこの構造が弱体化の出発点。
多重下請構造は、製造業日本ならではの伝統、下流=低賃金が根強い。背広を着た人がその伝統文化を売り捌く。文化が短納期、安請け合いを生み、短納期、安請け合いにより、品質が下がり、雇用も安く済まされ、弱いSEしか集まらず、国際競争力はなくなる。この下請け構造文化を持ち込んだのは、他ならぬ製造業文化を固持してきたメーカー系ベンダーのように思えます。メーカー系ベンダーはCIAだからなんだかのスパイ行為に加担したのでしょうか?
実はそんなメーカー系ベンダーにもいたのですが、ぽっと出の強いSEもいます。ところが強さが仇となり、全容を把握している神扱いで一段上に据えられます。そして多忙を極め、ロジックやアルゴリズムをひねり出す知的生産力は、仕様書、指示書と呼ばれるエクセル方眼紙に図形や文書を書き殴る作業力へと変貌します。
指示は全て自社フォーマットの図面に書け!その図面、審査、承認を課長に貰え!え?予算の都合、本部長承認が必要?本部長いつ来るの?1週間後だって!?リスケだ!工数再見積もりだー…これは仕事ですか?それとも茶番ですか?こうして強いSEは弱体化します。強いSEほど自分の置かれた立場や環境に順応しようとする意識が強く、仕事ができる人間になるためにはお上に楯突かず、弱体化を受け入れようと考えます。
エクセルのvlookupを使うために、学生時代に関数型言語を学んだわけじゃないのに…と就職して思うようになったunix文化を学んだ強いSEが、思考停止している情シスによって管理しきれないものは全てセキュリティホールみたいな会社にいたら、「あいつはセキュリティを脅かす不良社員」のレッテルを貼られ、朝から晩までvlookup,vlookup...(いやそのエクセル脆弱性情報とパッチ出ているけど、いやお上のお達しを待て!的な茶番劇)せめてgrep,awk,sedくらい使わせてやれって、残業がなくなってボスも最近社長の思いつきで始めた健康経営者として表彰されるかもしれんよ?思いつきだから明日あるか分からんけど…。いつまでこんな寸劇をやればいいのやら。学んだことは活かせません。茶番寸劇の中心にはやはりこの国のIT業界を弱体化させ国際競争力を低下させるスパイが潜んでいるとしかおもえません。
ここで、IT業界に蔓延る日本の国際競争力をいちぢるしく低下させているスパイの特徴を述べておきます。
スパイの目的である国際競争力の低下にダイレクトにアプローチするスパイ中のスパイです。こいつがいたら即辞めないと国や社会のためにも良くないです。
・「よく分からないものはセキュリティの都合使えません」と思考停止している人
お前はそのツールのコミッターでそのツールの脆弱性を分かってそんな事を言っているのか?と、せめて同僚がツールの有用性を知りつつ使いたいっていうならそれなりのセキュリティ的可用性を示すのが情シスの仕事じゃねーのかと?まぁこの場合スパイなのでそんな調査は死んでもやりませんが…
スパイの常套プロパガンダです。明らかにおかしな言動なのでスパイの中では未熟者なのかもしれません。
そのままでは通用しないけど、出発点であるべき。でなければその空白を埋めるコストをどうしろと?そんな言葉をマジで吐く人間は出発点にすら立たせて貰えていない場合が多い。ただ言葉を吐くスパイは、スパイが故に企業内の立場は上のほうにいるかもしれません。出発点に立っていなかろうが
よく考えてみてください。遵法精神のあるスパイがいると思いますか?そもそもこのスパイが蔓延る構造は日本社会に根深く浸透しているので、法律を取り締まる側もうまく騙されていると考える方が自然です。労基法、下請法、派遣法…機能しないのも当然です。
関数型言語の出番と聞いてやってきました!
長く書きます。お金の話の経験とかも、少しでも参考にしてください。
10年前のVistaが搭載されていた頃の家電量販店で一番安かったCeleron 1コア メモリ1GB グラボなしノートだからプログラミングに向いてないのかもしれない
お金のない環境を整えられない学生はつらいよね。明らかに札束で殴れず時間を使って損してる。
twitterできないメインで使えないのもまず、重すぎるからっていうのもありそう。
スペックが足りてなさすぎる。まずは6,7万出してスペックを整えよう。
すごい人たちは幼少の頃からパソコンがあって、パソコンをいじるだけの時間があって、承認されてる。
しかも、コミュ症だとかなんだかんだ言いながらも、ネットではきちんと弾けてるし、人望もある。
彼らを理解するのはすっごく難しい。
経済格差が多すぎて、彼らが積んできた経験と持っている環境が違いすぎるから。
プログラム自体は数学を解くようですごく楽しいのだけれど、なぜ苦しい勉強をしながらプログラムをずっとやっていられるのかわからない。
環境はMac(高すぎて揃えるなんてとんでもない)じゃないから、先人たちの簡単に手順化された知恵を受けづらく、プログラムの環境をととえるまでが大変だし、
ライブラリ関係のエラーコードは自分の力で、ライブラリを見つけに行かないとダメで、ウェブで検索しても彼らよりもずっと時間がかかる。
そこをきちんと理解したうえで、自分がどこまでやりたいのか、どうしてやりたいのか
自分はプログラマに向いているのか、考えながら、勉強していったほうが良い。
ちなみに私はプログラムを解くの好きだったし、ある程度は得意だった。
ADHDと自閉症混じってるから、だから職人的なことをやりたかったし、テストをかけば不注意で大きな損失を出す可能性も低くなる。
だからプログラマを目指しているし、プログラマとして就職するつもりなんだよね。
私も無名で、プログラム力的にはpaizaのSランクは、後ちょっと足りない、運が良ければ成功するんじゃない?ってレベル。
ツイッタランドのすごい人たちは目指すと疲れるだけなのでほどほどにね。
彼らは多分余裕綽々でS取れる。
paizaの出題は競技プログラムの一種で、競技プログラムっていうのはある程度出題の仕方が似通ってる。
複数回解いていると昔に残ったコードとか再利用できたりするから有利になるっていうのもある。
ゲームで例えるとRPG好きな奴にFPSやらせても全く活躍できないけど、FPSが得意な奴に別のFPSゲーやらせてもできたりするでしょ。
開発のジャンルの違いがあることは覚えといて。
Mac買えなくて開発環境として選ぶなら,windowsよりlinuxのほうが良い。
windowsだと環境整える前にストレスがやばいし、パソコンが死んだ場合のストレスもやばい。
あと、古いパソコンだとUSBブートができなかったのも割とめんどくさかったし、回線がめちゃくちゃ低速だったから、ISOファイルのダウンロードに半日かかってたかな。
VirtualBoxはすごいスペック持っている人が使うものなので、買い換えないならクリーンインストールかデュアルブート推奨。
ubuntuにしとけば、ウイルス系もあんまり構う必要性がなくなるからね。
起動にVirtualBox起動に数分待って、端末以外を使おうとすると固まるみたいなことやってると辛さが溜まるから。
デビットカードでも行ける。
するが銀行に口座を作ってデビットカードを申しこめば、20歳以下でもなんとかなる。(年齢によっては親の同意は必要だけど)
2,3週間かかるけど、デビットカード作っておくことで色々なサービスを体験できるようになるのは選択肢を増やすにあたって重要なことだから是非。
一応著名なプログラマーをTwitterでフォローしてるけど、ご飯の画像を載せてたり、若者の僕には通じない寒いギャク連発してたり、ロリっぽい画像をRTしてたりと、twitterはメインの情報収集としては利用してない。
ネット上は怖い人もたくさんいるし、まさかりがちょくちょく飛んでくるけど、変にウケると拡散してくれて色々な人が声をかけてくれるのも確かだったりする。
ゆっくりと自分の使い方を覚えていけば少しずつ楽しめると思う。
実際、SNSは情報の精度としては当てにならないし、勉強のためってSNSを使うとストレスで辛くなった。
自分の好きな人だけをフォローすると精神安定するよ、あとフォロー返しはやる必要はない。やってるとTL荒れるからね。
(リストとか使いこなせるなら別なんだろうけどね)
おすすめ度は◎○△であらわす。
おすすめ度:◎ 条件:最低で6,7万円のお金が必要。 おすすめはlenovoのeシリーズ。 重いけど、コスパは良好比較的安めに上がってキーボードも打ちやすいのが良い。 いまはcorei5, メモリ8GBの使ってて、大体(重めのゲーム以外)したいことはなんとかなる。 SSDはあったら便利だけど、一番重要なのはメモリな。 開発したいなら8GBは必須。 (苦労話: 古すぎてノートなのにキーボードを常時接続必要だったり、画像が多いサイトはブラウザを選ぶ必要があったり、何よりもIDEが使えなくて辛かった。 windows vistaのupdateで数日固まったり、ゴミでしかなかった。 )
おすすめ度:◎ 条件:契約できる年齢か、親の同意(年4万円くらいの出費)が必要 何をするにもまず回線速度が遅いと話にならない。 IDE落としたり、クラウドにファイル上げたり、AWS使う時のアップロードとか、音声会話とか。 〇〇をしてみたいと思ったら,ダウンロードに時間がかからないことは、モチベーションのためにめちゃくちゃ大切。 (苦労話: ISOファイルをダウンロードするのに半日かかるのが普通だと思ってたけど、 まともな光回線+まともなルータを利用したら、ダウンロードに1時間ちょいになってびっくりした。 特に古いルータだったりするとボルトネックになったりする。 )
おすすめ度:○ 条件:linuxで生きていくという覚悟 windowsよりは快適。 他のlinuxISOファイルを焼いたりするときにちょっと苦労するかもしれないし、軽いの選ぶと良いかも。 実際普段使うものがネットとプログラムツールだけだったから、なんとかなったし、ゲームの選択肢が強制的に排除されるので、 少しはプログラムに触りやすくなるかもしれない。 (苦労話: エクセル、パワポ必要とか言われた時に、officeのレイアウトで死んだりする。 資料はPDFな。 買い換えない場合のクリーンインストールは↓ 昔のパソコンでもLinuxとか入れればそれなりに動くよっていう人はいるけど、やっぱり社会的な通信網と平均的なマシンスペックが上がっているせいで、ウェブ自体が要求するスペックも上がってて低スペックだとつらい。 ブラウザはw3mとか使って、端末タブを開いてvimで開発してた。 なんでかって言うと普通にブラウザ使うとレスポンスが重すぎたから。 でもその使いづらさの分だけ損してるんだよね。 )
おすすめ度:○ 条件:電車代などの交通費を用意可能 できること: 他人に触発されるタイプなら、すごい人たちの興味の方向を見て学ぶ方向が増えるかもしれない。 後は交通費と宿泊費の出る勉強会なんてものもあるので応募してみると良いかもしれない。 高校生なら、交通費出してくれるっていう太っ腹な勉強会もちらほらある。 一、二回は顔出し推奨。 欠点はあって、コミュ症は治らないので、友達ができるとは限らない。
おすすめ度:△ 条件:家庭環境による できること: 自分の向上心による。 大学生になって一人暮らしになったら、パソコンに触れる時間は多くなったとは思う。 (勉強しているとは言っていない)
おすすめ度:○ 条件:3,4万円の出費 できること: まず、パソコンを長時間触っていても疲れなくなる。 デスクの高さと椅子の高さはとても大切なもの。 疲れなくなるし、指が攣りそうになることもない。 机の高さはきちんと調べたほうが良い、あってることが重要 今使っているのは1万ちょいの新品デスク(ニッセンのフリーテーブル)と3万弱の中古のオフィスチェア 基本的に3000円位のデスクは耐久性と高さがゴミだったりするので注意。 机は http://blog.livedoor.jp/itsoku/archives/38727329.html の66のテンプレを見ておくと良いかな。 (苦労話: しかもノートパソコンでデスクと椅子がなくて狭いこたつの上か100均で買ってきた台の上で、パソコンを使っていたからパソコンの位置の高さが合わなくて姿勢がどうしても悪くなるせいで長時間パソコンをいじることもできなかった。 後は寝ながらパソコンをいじるみたいなみたいな堕落生活してたら、筋肉が硬直してまともに手を握れなくなって、医者にかかることになって1万円程度お金がかかったし、 2ヶ月位まともにパソコン触れなくなった。 ちょうどその時期は、筆記用具をほとんど使わない単位だけだったから良かったものの、他の単位とってたらもっと治療に時間がかかったかもね。 )
おすすめ度:○ 条件:それなりのスペックのパソコン、それなり大きさのディスプレイ できること: 設定しなくても、複数のファイルから補完が聞くし、フォルダ内の全てのファイルから検索、置換ができるのが良い。 ただし、ディスプレイが小さいと実際に開発できる範囲が小さくなるのは注意。 (苦労話: IDEは普通に使えるなら作業効率が全く違って、設定少なくても補完も他のファイルやライブラリから保管してくれるたりする。 でも、昔の環境だとeclipseはフリーソフトだけど環境整えるまでが辛いし、重いしで、開くとブラウザすらまともに操作できなくのが辛い。 だから、ブラウザでチュートリアルとか見ててもパソコンに待たされてストレスだった。 まともに使うには設定がめちゃくちゃ必要なのは実際疲れた。 (ac.jpのメールアドレスは必要だけど)学生無料なIDEでjetbrains製品があるけど、設定しなきゃダメなvimとかと違ってマウスで操作できるのがすごい良い。 端末ではコピペが簡単にできなくて、数は少ないけどよくあるミスが、間違えてcommandモードで貼り付けてやり直したり、vimのline numberの設定をいじらずにvimからコピペができる。 コレだけでイライラ具合が全然変わる。 )
おすすめ度:◎ 条件:図書館や図書室で本を注文できるか、本があるか できること: プログラムの能力が向上する。 おすすめされている本を探すと良い。 プログラム初学者なら、ネットだけで勉強するよりは効率がある。 とりあえず、やりたいことなくて、プログラム力をただ上げておきたい場合は、 競技プログラムやりたいとしても下の順番で進めると良いかもしれない。 あと、プログラムには自分が到達しているところまでで言うと、次の順で壁があって能力が足りないと行き詰まることがある。 >> 関数化 → クラス化 (→ ポインター) → 再帰 → 関数型言語 << 数年かけて勉強して次の段階に勧めないならプログラマは諦めたほうが良いかもしれない。 (能力が足りないのは上司も自分もつらくなるよ)
おすすめ度:○ 条件:1万円弱のお金 できること: ノートパソコンなら2個の画面を使えると作業効率が違う。 特に手打ち系のコーディング練習とかがめちゃくちゃ捗るようになる。 (苦労話: IDE系列は画面を割と占拠するので、ノートパソコンの狭い画面だと辛い。 でも大きすぎる画面だと持ち運べなくなるのでダメ。 画素数が上がればその分だけ小さく表現ができるので、画面サイズが同じでも画素数が違うとかなり大きさが違って見えたりする。 )
おすすめ度:○ 条件:学力があること努力すること、覚悟 できること: 奨学金を利用して環境を整えたり、時間が増えるから更に勉強できる。 プログラム関係もそれ以外も就職先が増える。 また、これからの転職したくなった時に逃げ道が増える。 欠点、国立は安いけど、入学にそれ相応の努力が必要。私立行けるなら、苦労してないと思う。 あと免除制度っていうのがあるから、そういうのも利用しつつ費用を安く上げよう
おすすめ度:○ 条件:年齢(か、親の同意) できること: ちょっとした電子払いができるようになる。 多重債務は起こらない。 欠点としては、定期払いはできないので携帯の契約とかはできないことに注意。
低スペックのパソコンしか無いのは、多分家庭環境のせいでもあって、
君がアルバイトもできるかどうかわからないし、アルバイトしてもそのお金が君のもとに入ってくるかはわからない。
お金も無限にあるわけじゃないし、時には経済格差を感じて辛くなることもあるだろう。
少ないお金の中でうまくやりくりして、それでも自分の力にしていってほしい。
(お金が潤沢にあるなら親を説き伏せることをがんばって)
応援してるよ。
高校時代からプログラミングに興味を持ち、ショボいCGIなんかを書いていた。
んで、大学時代はバイトと学業に勤しんでいた(情報科には行かなかった)。
就活は自己分析してやっぱり自分はITだね!とか思ってSIerになった。
Ajax、関数型言語、クラウド、モバイル、統計、機械学習色んなトレンドが来たが、自分で何かをやろうとしたことはほぼなかった。
やろうとしたが、マシンスペックがしょぼいと言って何もしなかったり、失敗したり、身につかなかった。
致命的だったのは何かを作ろうという意欲が自分には全くなかった。あんなツールがあったら便利だなとか、こんなサービスがあったら楽しそうだとかという気持ちがまったくなかった。
人見知りの性格と、何も作れていない自分が惨めでSNSにも勉強会にも参加できなかった。
この10年、仕事でやっていたプログラミングの技術は少しは向上したけど、ただそれだけだった。
何度も指摘されているが「岡部氏のFRP」は同じメンバ変数tに何度も値を上書きしてるだけの
FRP以前に関数型でもない普通の命令型プログラム。いくら論文を曲解したり哲学とか言い訳しても
客観的には単なるメンバ変数への破壊的代入。オブジェクトにconstをつけたところで
じゃあOCamlで純粋関数型や(本当の)FRPで複雑なGUIアプリが書けるかと言うと、
誰もそういうライブラリを整備してないから、ライブラリから作るのは
まあ面倒だろうし、わざわざ非純粋関数型言語で純粋関数型のGUIを作る動機も
現時点ではまずないだろう。これもすでに指摘されているとおり。
ああ。住井@東北大かな?
>(分析哲学ではなく関数型言語の意味で)参照不透明なので、関数型プログラミングのメリットは享受できない、命令型の破壊的代入と等価ですね。
君の役にもたたない机上の空論は皆そろそろ聞き飽きていると思うので、適当なハッタリではなく、timeengine(FRP)がいったいどのような局面で、参照不透明と名実ともになり「破壊的代入」のデメリットが顕在化し、関数型プログラミングのメリットが享受できなくなるのか、具体的に示せよ?100%無理だろうけどね。机上の空論じゃないなら、やれるもんならやってみな?w
ああ。住井@東北大かな?
>(分析哲学ではなく関数型言語の意味で)参照不透明なので、関数型プログラミングのメリットは享受できない、命令型の破壊的代入と等価ですね。
君の役にもたたない机上の空論は皆そろそろ聞き飽きていると思うので、適当なハッタリではなく、timeengine(FRP)がいったいどのような局面で、参照不透明と名実ともになり「破壊的代入」のデメリットが顕在化し、関数型プログラミングのメリットが享受できなくなるのか、具体的に示せよ?100%無理だろうけどね。机上の空論じゃないなら、やれるもんならやってみな?w