「OCaml」を含む日記 RSS

はてなキーワード: OCamlとは

2019-04-04

プログラミング関係記事をいくつか見て、徒然なるままに感想など

私はこうしてGoogleに入った (K) · GitHub http://b.hatena.ne.jp/entry/s/gist.github.com/keihayashi/56a861b8f10848ecd0ddcdf700c35ec9

東大医学部卒の女性アメリカGoogle就職したレポート

高学歴の特徴は「答えがある問題は得意」。

  1. 知識:覚えるのが早い。
  2. 知能:知識を組み合せる能力が高い。

情報整理整頓して、背後にある法則性パターン構造を見出せば、誰でも要領は良くなれる。

逆に言えば、答えがない問題(未解決問題)は、高学歴でも無理。

サヴァン症候群のように突出した才能を持ってる人は、得意不得意が極端なので東大には行けない。(高学歴には真の天才ほとんどいない。)

 

結論適材適所で使う

高学歴には、ルーティンワークをやらせる。

学歴がなくても)観察力に優れた天才には、未解決問題やらせる。

ちなみに自分が見た「天才」の一人は、知恵の輪を見た瞬間に解けた。=理屈を超えている。

 

こうすればプログラミング覚えられるよ【随時追記https://anond.hatelabo.jp/20190404034812

プログラミングの基本は簡単。とんでもなく難しいことじゃない。誰でもできる。

プログラミングは難しい」「プログラミングができないやつはアホ」と言ってるやつは、素人相手マウントを取ろうとしてるだけの雑魚コーダー

本当に難しいのは高度なアルゴリズム必要局面であり、その前段階のプログラム言語文法習得するだけなら誰でもできる。

自分バカからって、他のやつも同じようにバカとは限らないことを理解しろ

KKOでもBBAでもプログラミングやればいいじゃん。

どんなアホでも頑張ってる人は応援するよ。

 

プログラミング入門の言語

やりたいことがあるなら、それに合った言語を選べばいい。

最初勉強するプログラミング言語は、Javaだけはやめておけ。

追記 おばさんはRubyを勧めておきます

簡単に始められるインタープリタ言語なら、消去法でRubyも良いかもしれない。

  1. Ruby    Rails以外出番がない。OOPはこの中だと一番綺麗に書ける。
  2. PHP     Zend社がクソ。(詳細は書かないが)開発者が気に食わない。この中だと一番簡単
  3. Python   インデント(字下げ)を文法に組み込んでしまっている点が気に食わない。レシーバーが変。
  4. Perl    化石。汚いコードが書ける。グダグダになる。
  5. JavaScript プロトタイプチェーンがクソ。こいつが出てくると途端に挙動煩雑になる。

 

今どきのプログラミング言語なら、マルチパラダイムでいろんな書き方ができるはず。

個人的には、(1)構造プログラミングと(2)関数型プログラミング練習できる言語が良いと思う。

関数型言語の中で、副作用も使える非純粋言語が教材に向いていると思う。

オススメOCaml関数型言語を学び、BuckleScriptでゲームHTML5アプリ)でも作れば良いと思う。

 

おまえがプログラミング言語学習とき挫折する原因 https://anond.hatelabo.jp/20190402104530

ぶっちゃけ教師側のリソースは超不足している。

プログラミング言語やっとわかるようになりました!」「プログラミングあんまりよくわかってないけど超初心者よりはマシです!」というやつが教師という場合が多い。

一応、比較ちゃんとした人が教えてくれるものもある。

あるが、そういうのは費用が高い。

普通に働けば月100万もらえるのに、わざわざ月20万とかで人に教えようとするやつは奇人しかいない。

から基本高い。

侍なんとか塾のようなボッタクリ学校もある。授業料が高くてもクソはクソでしかない。

 

プログラミング教育学校先生

2020から小学校プログラミング教育が必修化される。

それをビジネスチャンスと見たアホが、HelloWorldレベル自称プログラマーに成りすまし、教育ビジネスに手を出す。

IT教育インストラクターやってるやつは、基本雑魚レベル

最低限IPA資格情報処理技術者)ぐらい持ってないやつは、プログラミング教育ビジネスから退場して欲しい。

 

プログラミング学習はもう古い。「令和」時代イノベーションを担う日本初のプロトタイピング専門スクールを開校|dotstudio株式会社プレスリリース https://prtimes.jp/main/html/rd/p/000000005.000020328.html

コンセプトは良いと思う。

今後日本では、プログラミング教育で「デザインスプリント」を実践した方が良いだろう。

 

プログラミング学習がつまらない理由

何でもそうだけど、楽しければ人は勝手に没頭して集中できる。

まらいから没頭できないだけ。

最初実用性を無視して、コンピュータープログラミングの仕組みが理解できれば良い。

プログラミング学習挫折する人は、題材や教材の選定が間違っているのだろう。

ゲームイラストDTMロボットとか、まずは「遊び」で始めた方が続くと思います

大人なら、株売買の自動化とか、自分欲求テーマを選んでもOK

 

(俺もスクールを作ってみるかw)

2019-03-15

anond:20190315213147

ネタマジレスするとBuckleScriptが最強だと思う。

OCamlJSが書ける。

FacebookもReasonMLで使っている。

2018-11-27

プログラミングの入門はPythonでOK?

これからプログラミング勉強しようと思う人は、その前にポール・グレアムの「ハッカー画家」という本を読んでみて欲しい。(一部はネットでも読める)

 

時間がなければ一部のエッセイだけでもいい。

エリックレイモンドはエッセイハッカーになろう」の中で、 他のいろいろなアドバイスに混じって、ハッカーになりたい人はどんな言語勉強すべきかを述べている。

まずPythonJavaから始めよ、学ぶのが容易だから

真剣ハッカーさらに、UnixをハックするためにCを学び、システム管理CGIスクリプトのためにPerlを学ぶべし。

そして本当に真剣ハッカーLispを 学ぶことを熟慮すべきだ。というのも:

 

LISPは、それをものにしたときのすばらしい悟り体験のために勉強しましょう。

この体験は、その後の人生でよりよいプログラマーとなる手助けとなるはずです。

たとえ、実際にはLISPのものをあまり使わなくても。

 

この意見を参考にするなら

  1. Python
  2. Java
  3. C
  4. Perl
  5. Lisp

という5つが挙げられる。

大事なことはいずれにせよ、1度はLisp関数型プログラミング言語)を学ぶべきだということ。

 

Lisp教科書

今ならこの本が分かりやすいと思う。

時間があれば、関数型プログラミング言語Lispの他にOCamlもやってみよう。

 

Lisp以外ならPython

Lisp以外のプログラミング言語も含めるなら

  1. Python
    1. スラスラ読める Pythonふりがなプログラミング https://www.amazon.co.jp/dp/4295003867/
    2. 独学プログラマー Python言語の基本から仕事のやり方まで https://www.amazon.co.jp/dp/4822292274/
    3. レトロゲームエンジン Pyxel でプログラミングを始めよう! http://b.hatena.ne.jp/entry/tkitao.hatenablog.com/entry/2018/11/24/185346
  2. SQL
    1. スッキリわかるSQL入門 第2版 ドリル222問付き https://www.amazon.co.jp/dp/4295005096/
    2. おうちで学べるデータベースのきほん https://www.amazon.co.jp/dp/479813516X/
  3. Lisp
    1. Land of Lisp https://www.amazon.co.jp/dp/4873115876/
    2. On Lisp http://www.asahi-net.or.jp/~kc7k-nd/onlispjhtml/
  4. Prolog
    1. Prologへの入門 https://www.amazon.co.jp/dp/476490165X/

という順番にするとバランス良く学べるだろう。

 

時間がないなら消去法で

  1. Python
  2. Lisp

の2つでもいいだろう。

2018-11-19

学習用のプログラミング言語の選定基準

型について考えてみる

個人的には、

  1. 最初に、動的型付けの言語を使ってみる。
  2. 次に、静的型付けの言語を使ってみる。
  3. 最後に、型推論が強力な言語を使ってみる。

という順番がいいと思う。

 

  1. 最初、試作品を一気に作る場合、型は柔軟に変更できる方が楽。Rubyモックアップを作る、とか。
  2. 次に、試作品を完成品にするとき、型チェックでエラーを弾く。Javaガッチリ作り込む、とか。
  3. 最後に、型推論コンパイラに型チェックをさせる。人間様は型で消耗しなくていい。OCamlで書いて、他の言語トランスパイルする、とか。

…というかんじ。

 

双方の立場の一番の違いは、動的型付け言語システム非平衡状態を重視するのに対し、 静的型付け言語は平衡状態を重視していることなんじゃなかろうか。

型とは設計である

型とは設計だと思っている。しかコードから乖離することのない、生きた設計だ。

型を見れば問題の切り分けが出来ているかどうか分かる。

型を見れば開発者意図が分かる。

型を見れば静的な性質の多くが分かる。

型を見てそれらが分からないようなら、それは設計(型)が悪いのだろう、と僕は思っている。

さらに型チェックが通れば設計一貫性担保される。

設計の変更時にはコンパイラが何処を直せば良いか全て洗い出してくれる。

 

静的型付言語では型が煩わしくなるという旨の発言を聞くたびに、僕には「私は設計が出来ません/設計を考えた事がありません」と言っている様にしか聞こえない。

 

型って「データ構造」の設計必要情報だよね。

2018-11-01

関数型プログラミングの教材は何を使ってますか?

プログラマー増田は、新人初心者)に関数型プログラミングを教えるとき、教材(言語書籍ツールなど)には何を使ってますか?

  1. まずは「Lisp」か「Scheme」を使ってみる。SchemeならRacket(DrScheme)で練習してみる?
  2. OCaml」で型を意識して練習してみる。
  3. Haskell」でコテコテ関数型をやってみる。
  4. その後、必要に応じて他の言語関数型プログラミングをやってみる。

2018-10-27

anond:20181027155327

Java代替の条件=オープンソース、可用性、並列化

 

LL4兄弟

インタープリタ言語は第2候補以下で。

 

関数型勢

ぶっちゃけ使いづらい?

 

マイクロソフト

Oracleと同じ穴の狢

 

Apple

マイクロソフト以下

 

JS

エコシステムが拡大してるけど、JVMの代役には力不足

 

Javaの天下が長く続いたため、今すぐ代役を果たせる言語/実行環境が不在?

2018-10-24

増田プログラマー養成講座 コンテンツ一覧

コンテンツが増えてきたので、一覧ページを用意します。

 

第1章 準備

anond:20181016015826 増田プログラマー養成講座 その1 パソコンの用意

anond:20181016164341 増田プログラマー養成講座 その2 プログラムデータ+処理、プログラム言語の種類

 

第2章 手続言語

2-1 構造プログラミング

anond:20181016180059 増田プログラマー養成講座 その3 構造プログラミングの基本(順次、反復、分岐

anond:20181016193144 増田プログラマー養成講座 その4 子ども向け教材「Scratch」で構造プログラミング練習

2-2 オブジェクト指向プログラミング

anond:20181017161003 増田プログラマー養成講座 その5 オブジェクトとは何か?

anond:20181017191404 増田プログラマー養成講座 その6 OOPの種類、PHPの準備

anond:20181019181549 増田プログラマー養成講座 その7 OOPの仕組み(前半)

anond:20181020230044 増田プログラマー養成講座 その8 OOPの仕組み(後半)

anond:20181022232327 増田プログラマー養成講座 その9 MVCフレームワークを使ってみよう

anond:20181023184616 増田プログラマー養成講座 その10 OOP参考書

 

第3章 問合型言語

3-1 SQLの基礎

anond:20181024214133 増田プログラマー養成講座 その11 データベースを使ってみよう

anond:20181026145516 増田プログラマー養成講座 その12 データベースの参考書

anond:20181028152656 増田プログラマー養成講座 その13 SQL文法

3-2 SQLの応用

anond:20181031014212 増田プログラマー養成講座 その14 Webアプリの試作品作成

anond:20181101225335 増田プログラマー養成講座 その15 Webアプリの完成見本

anond:20181101230220 増田プログラマー養成講座 その16 Webアプリの完成見本(続き)

anond:20181104161900 増田プログラマー養成講座 その17 Webアプリの骨組み

anond:20181104233013 増田プログラマー養成講座 その18 SQLデータの追加と取得

anond:20181110120715 増田プログラマー養成講座 その19 SQLデータ更新

anond:20181110182445 増田プログラマー養成講座 その20 SQLデータの削除

3-3 データベース設計

anond:20181111205255 増田プログラマー養成講座 その21 データベース設計 (1)要件定義

anond:20181119224031 増田プログラマー養成講座 その22 データベース設計 (2)概念設計 → (3)論理設計 → (4)物理設計

3-4 その他

anond:20181204142213 増田プログラマー養成講座 その23 SQLを巡る物語

 

第4章 関数型言語(未定)

  1. Lisp
  2. OCaml

 

第5章 論理言語(未定)

  1. Prolog

 

Java講座(未定)

  1. Android

 


元ネタ

anond:20181015215004 未経験からプログラマーなんだが全然からない

 

追記 2018-10-26

増田プログラムコードが入った記事投稿すると、IPアドレスアクセス制限されるようです。(今は別のIPアドレスからアクセスちょっと対処方法検討してみます。m(__)m

2018-10-13

プログラミングの独学プラン

  1. 10日間:「構造プログラミング」の基本(順次、反復、分岐)を学習子ども向けの教材「Scratch」がお勧め https://scratch.mit.edu/
  2. 60日間:手続言語PythonPHP等)を学習Webサイトを作ってみる→スラスラわかるPHP https://www.amazon.co.jp/dp/4798125806/
  3. 30日間:問合型言語データベースSQL)を学習MySQLを使ってみる→おうちで学べるデータベースのきほん https://www.amazon.co.jp/dp/479813516X/
  4. 30日間:関数型言語(合成、再帰パターンマッチ)を学習ポイントは「参照透過性」の活用。教材は「OCaml」がお勧め http://pllab.is.ocha.ac.jp/~asai/book/Top.html

 

 

からないことがあればteratailで質問できますhttps://teratail.com/

 

追記

プログラミング言語の選定は、作りたいものに応じて選ぶのが基本。学習目的なら、とりあえず最初の1歩には以下の言語お勧めします。

  1. 手続言語Python
  2. 問合型言語SQL
  3. 関数型言語OCaml
  4. 論理言語Prolog

 

参考書

 

anond:20181013190413 プログラミングってやっぱり数学知識いるかな?

anond:20181014003945 プログラムを学びたい

anond:20181015215004 未経験からプログラマーなんだが全然からない

2018-03-10

anond:20180310222660

もしかして俺と勘違いしてない?

あー、俺のことな

ぐらいしか普段使ってないポンコツプログラマーだよ。

Hello Worldを含めたら、他にもいろいろやったけどもう覚えてないw)

どうせ、みんなもプログラミング言語はせいぜい100個ぐらいしか使ったことがないでしょ?自作プログラミング言語とか、DSLとかないでしょ?

お互いバカ同士、低レベルの争いをするのではなく、切磋琢磨してスーパープログラマーになろうぜ!w

2018-01-23

特技=コア・コンピタンスがないと、他に何をやってもダメ!?

器用貧乏に陥らないようにしたい。

まずは自分の特技を確立して、その周辺技術を固めると、鉄壁の城を築けるだろう。

自由プログラミングを学べる時間があるなら、関数型プログラミングをかじっておいて欲しい。

 

関数型プログラミング 学習カリキュラム

OCaml

関数型プログラミング言語はいろいろありますが、基本を学ぶために、良い教材がある「OCaml」がお勧めです。

この本は、独学で関数型プログラミングの基礎を学ぶのに最適だと思います

 

Elixir

関数型プログラミング言語で、実用的なアプリ作ってみたいですよね?

Webアプリを作るのに「Elixir」という関数型プログラミング言語を使ってみませんか?

 

Pleroma

Elixirの使い方を学んだら、Twitterのような「Pleroma」というSNSを設置して、カスタマイズしてみましょう。

 

Phoenix Framework

Elixir、Pleromaで遊んだら、PhoenixオリジナルWebサービスを作ってみましょう。

 

副業

プログラミングを学んだら、まずは副業を始めてみましょう。

英会話ができるなら、欧米企業リモートワークをやれば給料も良いです。

(参考)https://anond.hatelabo.jp/20180112130526

私も機械学習ではなくシリコンバレーで働くWebエンジニアだけど、年収は43万ドルくらいだ。日本円にすると4800万円くらいだろうか。

付記 

うーん、ここまで書いて、これは素人最初に着手するべき事柄じゃないなーと反省。消すのももったいないか投稿しておきます

 

最初にやるなら、やっぱPythonかな?(最近話題AIでも、バインディング言語としてPythonが人気だし)

 

本屋で分かりやす入門書を探して、「これなら自分でもできそう」と思える本があれば、それをやってみたら良いと思います

そこで得た知識を足掛かりとして、次のステップに進める?

 

ゲーム制作

最初テーマは、「ゲーム」を作ってみるのはどう?

遊びながら学べるからプログラミングが楽しめると思います

言語ゲームを作ってみよう!的な本はチラホラあるようだから、それでいける?

 

anond:20180117031306

anond:20180123190750

2017-10-26

プログラマーのススメ

日本人は全員プログラミング勉強した方が良い。

プログラミング簡単だし、IT企業なら開業資金も少額で済む。(最初パソコン回線プリンターがあれば十分)

 

自己資金で数カ月で軌道に載せれるようなネタしかできない。

 

IT起業の道のりを教えてあげるよ。

  1. 下請け他人が作って欲しいものを作って納品する=資金を増やす自転車操業の段階。
  2. 自社開発:自分で作りたいものを作って売る=自転車操業からストックビジネスに移行する。
  3. レベニューシェア下請けと自社開発の中間ビジネスモデル

 

増田投稿できるってことは、パソコンぐらい持ってるんだろ?

本屋図書館に行って、自分に合った分かりやすプログラミングの本を探してみよう。

 

仕事を取ってくる方法は、ソニックガーデンのやり方を参考にしたら良い。 https://www.sonicgarden.jp/

プログラミング入門

最初に1冊だけ推薦するなら「プログラミングの基礎」という本をお勧めする。 https://www.amazon.co.jp/dp/4781911609/

買う前に、著者のサポートページを見てみると良い。

 

プログラミングパラダイム(考え方)には4種類ある。(【】内は基礎となる計算モデル

計算可能理論で見ると、どれもノイマン型のCPU上で動作する点で同じと言えば同じと言える。(優劣はない)

ただ、筋の良いプログラミング作法を身に付けたいなら、最初関数型を理解しておくことをお勧めする。

関数型の中で一番簡潔かつ強力なのはOCaml」というプログラミング言語だ。(HaskellをやりたければOCamlの次に学ぶスムーズ理解できる。)

関数型言語を学んだ後なら、手続言語はすぐに習得できるだろう。

WEB開発

WebサービスWebアプリを作るのは簡単

  1. HTML
  2. CSS
  3. JavaScript
  4. PHP
  5. MySQL
  6. Linuxサーバー構築)
  7. TCP/IPネットワークセキュリティーの基礎知識

を学べば作れるようになる。3か月勉強すればものになるよ?

 

Webアプリの特徴は、システム構造ネットワークを介して「サーバー側とクライアント側」に分割されていること。(REST - Wikipedia

Webアプリを作るってことは、一言で言えば、データベースラッパーCRUD)を作るだけの話。

アプリ開発

スマホアプリは、GUIの仕組みが分かれば簡単に作れる。

iPhoneアプリ

iPhoneの仕組みは糞だから後回しにしてもOK

XcodeじゃなくてAppCodeで作れるような段階に成熟したら手を出しても良い。

まあ、iPhoneアプリは金のためなら避けられない道だと思うので、苦労覚悟で取り組んでほしいw

Androidアプリ

Androidの中身はLinuxJavaアプリを開発できる。今ならJetBrainsIDEKotlinで楽々開発できる。

日本じゃAndroid貧乏しか使ってないので、あまり金にならないかも。

資金集め

お前偉そうなこと言うのなら、誰か起業してやろうというやつにガッツリ寄り添って手伝ってやりな。

俺はハゲタカじゃないから、無知な奴から搾取することはしない。

というか、自分のことで精一杯だから他人のケツ拭いまでやる体力・気力・理由がないw

 

他人から金をもらうと相手支配下に置かれる。だから資金調達お勧めしない。

自己資金で行けるところまで行って、ダメならまた社畜生活に戻ればいいだけの話。(パソコンインターネットがなくならない限り、プログラマーならIT業界で食っていける)

 

俺は、NPO法人とか社会起業しようとしてる奴だけ無償で手助けすることにしている。(プロボノ

社会起業家は、社会変革の担い手として、社会課題を、事業により解決する人のことを言う。

社会問題認識し、社会変革を起こすために、ベンチャー企業創造組織化経営するために、起業という手法を採るものを指す。

プロボノ(Pro bono)は、各分野の専門家が、職業上持っている知識スキル経験を活かして社会貢献するボランティア活動全般。また、それに参加する専門家自身

 

おまえが将来、社会起業することがあったら増田で呼びかけてくれ。

増田で返答できる範囲アドバイスするよ。頑張れ!

 

(追記)プログラミングパラダイムの4分類は「日経ソフトウェア」という雑誌説明表記しました。

ちなみにSQLチューリング完全なので、問合型言語でもプログラミング可能です。 https://qiita.com/utgwkk/items/20e887645da18e460fee

かに俺は理系だが情報学出身じゃない。独学でプログラミングを学びました。技術的な誤りがあったらブコメで教えてw(夜露死苦

 

(追記2)マイクロソフト関数型言語F#」は、OCamlベースにして開発されました。

現在マイクロソフトで開発中の量子コンピューターではF#が動く予定だそうです。(将来OCaml知識が役に立つでしょう) http://ascii.jp/elem/000/001/569/1569477/

 

(追記3 10/28ブコメレス全部拝見しました。様々なご意見・ご指摘をいただきありがとうございます。大変参考になりました。

「何か既視感があるな」と思ったら、最近ホリエモンが「保育士は誰でも出来る仕事」と言って炎上してたのと似てますね?→「プログラミング簡単」(プログラマーは誰でも出来る仕事

プログラミング学習や実務で苦戦されている方が多いようですね? だとすれば、それを改善支援するサービスニーズがありそう。

具体的にはディアゴスティーニ雑誌みたいに「週刊 プログラミングゲームを作る」みたいな教材があればいい。

https://deagostini.jp/

拝承いたしました。(微力ながら、皆様のお役に立てるよう作ってみたいと思います。)

 

(追記4 10/28OCaml関数型言語メリットについて

ちょっと前に岡部健氏(通称:毛の壁、kenokabe)が、関数型言語を巡りQiita等で論争を巻き起こしていましたが、俺は是々非々岡部氏の意見に一部賛同していました。(全部じゃない)

関数型言語を難しいものとして敬遠するのではなく、まずは使ってみて便利だったら嫌う必要はないと考えています

構造プログラミング命令型、手続型)との対応で言えば、関数型プログラミングは再代入なしでも、

で同じことができます。(優劣はない)

最初関数型プログラミング習得しておけば、参照透過性に注意を払う癖が身につき、テストときに「組合せ爆発」を少なくできます

関数型言語はたくさんありますが、OCamlが良いと思ったのは(自分にとって)分かりやすい教材が揃っており、学習コストが低いと思ったからです。

プログラミングを学ぶとき、独学ではなく、周りに聞ける人がいるなら他の言語でもOKです。

 

(追記5 10/28)「iPhoneの仕組みは糞」=storyboardが使いづらいと思いました。あくま個人の感想なので、Apple関係者信者の方はスルーしていただければ幸甚です。(Swift開発者クリスラットナー氏は、Appleからテスラ転職してしまいましたが、今後もAppleObjective-CからSwiftへの移行を押すのでしょうか?)

幸いiOSアプリ開発は分かりやす教科書がたくさんあるので、初心者でも心配無用です。iOSアプリ開発は(最初簡単なので)気軽に始めてみてくださいw

2017-09-11

まずは自分がプログラマーになってみよう!

山本五十六名言「やってみせ」

やってみせ、言って聞かせて、させてみせ、ほめてやらねば、人は動かじ。

話し合い、耳を傾け、承認し、任せてやらねば、人は育たず。

やっている、姿を感謝で見守って、信頼せねば、人は実らず。

まずは、あなた自身プログラマーになって、見本を見せることが第1歩です。

プログラマーに向いている性格

その後受託系の会社就職できたのだけど、人間関係がうまくいかなかったようで数ヶ月で辞めた。

鬱病気味になったみたい...。

どうやら、プログラミングという仕事の特徴について、あなた理解していないようですね?

 

プログラミングの特徴は、「コンピューター相手なので、嘘やハッタリが一切通用しない」ということです。

人間相手なら、適当に指示を出したり、いい加減な対応でも何とかなるけど、コンピューター相手だと1mmも融通が利きません。

 

従って、プログラマーに向いている性格は、

  1. 嘘をつかない
  2. 几帳面
  3. パズルを解くのが好き

という3点が必要です。

 

警察職務質問されて有名になった江添亮さんのブログ等を読んで、この方のようにネチネチと論理をこねくり回すのが好きなら、プログラマーに向いています

(例)本の虫: 麻布十番職務質問を受けた話 https://cpplover.blogspot.jp/2017/08/blog-post.html

関数型プログラミング

プログラムというのは、小さな部品を組み合わせて、大きなシステムが作られています

さな部品パズルピースに相当して、大きなシステムパズルの完成品です。

まり、大きな問題を小さな問題に分解して、1つずつ順番に問題をつぶして行く姿勢必要です。

 

プログラミングパラダイム(考え方)には、

  1. 命令
    1. 手続き型(Java等)
  2. 宣言
    1. 問合せ型(SQL等)
    2. 関数型(Haskell等)
    3. 論理型(Prolog等)

があります

 

命令型のプログラミング言語しか使えない人がプログラマーになると、テスト地獄に陥って、結果的鬱病発症やすくなるだろうと危惧しています

上述のように、パズルピースを組み合わせてプログラムを作るには、「関数型」の作法を身に付けておくと良いでしょう。

Haskell

関数型プログラミング習得するために、今なら「Haskell」または「OCaml」というプログラミング言語お勧めします。

HaskellOCamlは、良い参考書がたくさんあるので、本屋に行って実物を確かめてください。

 

Haskellを学んでみて、パズルピースを組み合わせる感覚理解できたら、あなたテスト地獄に苦しめられないプログラマーになれるでしょう。

もしも、Haskell理解できないようだったら、残念ですがプログラマーには向いていないかもしれません。

例外的に、あなたマゾで、テスト地獄残業徹夜楽しいと思える性格なら、Haskell理解できなくても大丈夫かもしれません。)

 

Haskellの教材(英語)を紹介するので、参考までに読んでみてください。

http://learnyouahaskell.com/chapters

(このサイトの内容は、日本語書籍「すごいHaskellのしく学ぼう!」として出版されています。)

 

Haskellは、順番に学べば必ず理解できるようになっています

もしも、Haskell習得できなければ、大きな問題を小さな問題に分解して解決していく作業には不向きな性格かもしれないので、他の仕事検討してはいかがでしょうか?

人生は一度きり。時間無駄にならないようにお気を付けください。)

 

あなたと友人が、無事Haskell習得して、テスト地獄を乗り超えるスーパーハッカーになり、日本IT産業を牽引されることに期待いたします。

 

(追記)

まずは、自分が作りたいアプリサービスを作ってみよう。

自分が作りたいプログラムすら作れない人が、他人希望するプログラムを作るなんてできっこいからねw

プログラマーが楽で簡単仕事だと思ったら大間違いですよ?)

 

(追記 その2)

関数型プログラミングマスターしておけば、OOPでも役に立つよ。(現実には、関数型もOOP必要に応じて投入するし)

iOS→「プロトコル指向プログラミング」「RxSwift」、Android→「RxJava」辺りのキーワードでググってみて。

別に皮肉とか宗教戦争で煽ってるわけじゃなくて、自分も苦労して辿りついた口だから、今から始める人には遠回りして、余計な苦労を味わって欲しくない。

 

(追記 その3)

他の人が書いてたけど、1人でプログラミングするんじゃなくて、2人(ペアプログラミング)や3人以上(モブプログラミングから始めたら良いかも。

Googleの「プロジェクトアリストテレス」で、仕事生産性改善するには「心理的安全性」が重要と分かり、プログラミング仕事もやり方が変わって来ています

ソニックガーデン倉貫さんの働き方が参考になると思います

https://kuranuki.sonicgarden.jp/2017/01/psychological-safety.html

 

(追記 その4)

記事が消えていたのでバックアップしておきます。(この投稿だけ読むと意味が分からなくなるため)

https://anond.hatelabo.jp/20170910205249

2017-09-10

■知り合いをプログラマにさせたいんだけど知恵を貸してくれ

プログラマって育休からの復帰しやすいだろうし、アルバイトよりは待遇いいし、勤怠ゆるいし、労力の割に楽ちんだと思うんだよね。

接客バイトで消耗するくらいなら、プログラマになればいいと思っているのだが、その知り合いは自身のことをプログラミングを不向きと評価しているらしい。私は、プログラミングに限らず物事時間をかければ習熟していくものだと思っているので、不向きではないと思うんだ。不向きというのは物理的に制限のある時だと思う。

その知り合いについて。

Vimはぎこちないけど使える。日常的にmacOSを使っていてターミナル操作はできている。cd, ls あたりは理解している。

趣味を含めてアプリケーションを完成させた経験はないが、ifやfor文などの基本構文は理解している。数年前にプログラミングスクールのようなところに半年間通っていた。その後受託系の会社就職できたのだけど、人間関係がうまくいかなかったようで数ヶ月で辞めた。鬱病気味になったみたい...。

何か成功体験があれば自然とのめり込んでと思うんだけどなかなかスイッチが入っていないみたい。

こちら側からは、プログラマーになれば?と直接は伝えてはなくて、素人でもプログラミングできましたみたいなネット記事シェアーしているくらい。(心理的リアクタンス避け)

知恵を貸して欲しい。

2016-07-24

ヘルプミー。プログラマ

プログラム書くときって、「Aがしたい」っていう考えから始まると思ってるんですけど、

なんで「Aを行うHogeClientってクラスを作って、次に....」ってする人間がいるんですか?

シンプルに考えるとクラス作らなくてよかないですか?

モジュールで良くないですか?

Simulaとビャーネ、Smalltalkアランが居ない世界にいたかった。

追記

SchemeとCしてました。OCaml齧ります

2016-05-25

http://anond.hatelabo.jp/20160525213232

バグがあって、ストリームに変な値が入った時、どこがバグなのか、追跡するのが困難でしょ?

第一に、それは、ストリームFRPの値の定義)の問題であって、ユニットテストすれば良い。もしくは単にFRPログを取れば良い。

グローバル変数ではそういうことはできない。FRPでは、岡部氏のFRPライブラリ特にそうだけど、基本的ミュータブルな値同士が関数リアクティブ連携されて常に整合性を保っているのだからグローバル変数の、各所で更新されたそれぞれの値によって全体の整合性が損なわれないように気を配らなければいけないという(テスト自体困難な)問題は発生しない。それがFRPの唯一とも言えるメリットだとも言える。

使用する関数問題じゃないし、「印」として引数に加えても別に構わないと思うが、君のいうグローバル変数問題と一緒というのはまったく違う。

岡部氏との争いって「OCamlGUIアプリ純粋関数型(状態渡し)で簡潔に書けるか」ってところじゃないよね?

いや、それがそもそもの発端であるブログの経緯には書かれている。説明されている方式GUIアプリまで書けるのか?と疑念が呈されたことがきっかけ。

岡部氏はFRP状態関数の外部に持ってても純粋関数型だ、と言ってて、そこで争ってるんだよね?

この論点は聞いたことがない。岡部氏がこだわっているのは非手続き型の宣言型で、純粋がどうとか議論はされてないように思う。

あと、OCamlGUI状態渡しで書いたら簡潔で無いのを「書けない」、「不可能」って言ってるのはわざと印象操作しようとしてるよね?

原理的に可能かという議論ではなく、実用的な範疇か?という議論。反対派ブログで出てきたコードは、本人が認めるように普通のやり方ではなく、実用的なコードだとは思えない。あと、FRP状態渡しは同じ複雑さだという主張も崩されている。そこが重要

Haskellで書けて、OCaml冗長になっても、書けるなら「書ける」、「可能」だよね?

段階を踏んだ上で、非FRPHaskellのIOモナドコードを誰かが書いたらいんじゃない?当面、最初OCamlの話だったのに、いきなりHaskellやElmのコードで書いて、そういうのがごちゃまぜに、何がどの言語でできるのかできないのか、誤魔化しがあると見做されたか制限されたんでしょ。実際には、OCaml関数型では冗長しか書けないと実証されたけど、そういうのがバレないように、別の言語を利用していたと看破されて当然の状況だと俺は思うね。

俺の書き込み他人といきなり結び付けられたから、電波だな、と思ったの。

俺1人か、とか、らくだや住井が含まれてない根拠とか、関係無いよね。

関係ある。君ひとりは、そうじゃない、と君ひとりが言ってもそれが本当だとは確認のしようがないし、

書き込みをみれば、君以外の書き込みもすべて、その一派ではない、とでも言いたそうだ。

http://anond.hatelabo.jp/20160525202812

否。ストリームに限らず、定数は引数で与えなくても純粋関数である、という見解はごく普通

定数って、プログラム中で更新不可能で、いつ読みだしても同じ値が出てくるからグローバルでも問題無いんだよ。

ストリームは定数だ、って言ってみたところで、プログラム全体から更新可能なんじゃ、グローバル変数と同じでしょ?

バグがあって、ストリームに変な値が入った時、どこがバグなのか、追跡するのが困難でしょ?

なんで伝わらないんだろ。

複数人プログラム開発したり、他人プログラムデバッグしたり、したこと無いんだろうか。

まりGUIになればもはや関数型では書けない、というのが推奨スタイルだ、って言ってるようなもの

純粋関数型」とは何か、という話と、とOCamlでそれが推奨スタイルか、って別の話だよね?

岡部氏との争いって「OCamlGUIアプリ純粋関数型(状態渡し)で簡潔に書けるか」ってところじゃないよね?

純粋関数型とは何かといった時にHaskellのように、IOも含めて引数戻り値表現する、関数のふるまいが関数の外の状態依存しない、関数副作用が伴わないとかの性質をいうと思うんだけど、岡部氏はFRP状態関数の外部に持ってても純粋関数型だ、と言ってて、そこで争ってるんだよね?

あと、OCamlGUI状態渡しで書いたら簡潔で無いのを「書けない」、「不可能」って言ってるのはわざと印象操作しようとしてるよね?

Haskellで書けて、OCaml冗長になっても、書けるなら「書ける」、「可能」だよね?

その発言事実か確かめる術はないし、ここで岡部攻撃しているのは君ひとりなのか?他の人間まで一連の誹謗中傷集団ではない、す駱駝、住井が含まれていないみたいに断言する根拠は何か?

俺の書き込み他人といきなり結び付けられたから、電波だな、と思ったの。

俺1人か、とか、らくだや住井が含まれてない根拠とか、関係無いよね。

http://anond.hatelabo.jp/20160525104221

ストリーム関数の外部に持つFRP純粋関数型っていうのは少数派でしょ。

否。ストリームに限らず、定数は引数で与えなくても純粋関数である、という見解はごく普通

http://stackoverflow.com/questions/37405262/is-this-pure-functional-using-a-value-in-the-nested-closure-like-function/37405374

OCamlの元々の推奨スタイルならもっと短く書けるんでしょ?

まりGUIになればもはや関数型では書けない、というのが推奨スタイルだ、って言ってるようなもので、OCamlベースいくら関数型の講義やっても、最終的にはその関数型でまともなGUIアプリすら書けない、という批判でしょ。その批判岡部からされたら、あたか関数型で書ける、という強弁からまれたのが「状態渡し」理論。それが無理筋だ、ということが今回実証された。

だって駱駝でも住井でもない面識も無い俺の書き込みが住井扱いされるんだもの

その発言事実か確かめる術はないし、ここで岡部攻撃しているのは君ひとりなのか?他の人間まで一連の誹謗中傷集団ではない、す駱駝、住井が含まれていないみたいに断言する根拠は何か?

いやだからグローバル変数使ってるプログラム欠点をそのまま持ってるじゃん

あのね、グローバル変数欠点とは、それが「変数」だからなの。

何度も言うけど、「定数」ならグローバルだろうがなんであろうが、そんな欠点なんてないの。

http://anond.hatelabo.jp/20160524164501

関数型という枠組みの中にミュータブルな時間要素が純粋に収まるようにしているのがFRPだろ。

ストリーム関数の外部に持つFRP純粋関数型っていうのは少数派でしょ。

関数の結果が引数以外で決まるわけだからさ。

多分、純粋とかの定義もまた違うんだろうね。

関数型の拡張」で全部丸く収まると思うんだけど。

いやそもそも岡部氏が複雑なアプリになるとFRP必要

これはGUIアプリ(対話的なアプリ)ってことでいいのかな。

コンパイラだとかをFRPで書かないでしょ。

ユーザから入力リアルタイムに処理するプログラムにはFRP有効だよね。

事実、「駱駝」は「状態渡しはむしろ異常」って書いた上に、

OCamlでは」じゃないの?

全部純粋関数型(引数戻り値に収める、状態渡し)にするのを良しとするHaskellと違って、OCaml副作用部分的に使うのが普通で、IOモナドみたいな入出力までも純粋に書くための道具立てが揃ってない、それでちょっと冗長になる、ってことでしょ?

OCamlの元々の推奨スタイルならもっと短く書けるんでしょ?

俺はそう読んだけど。

それっぽい書き込みほどそうやって、事実誤認だ、と強調するから、なんで当事者でもないのに、そんなことが断言できて、電波だということになるんだ?

だって駱駝でも住井でもない面識も無い俺の書き込みが住井扱いされるんだもの

いやだから、どの関数で読み書きされようと、誰が書き換えようとも、時間にたいしてイミュータブルな定数なんだから、定数は定数なのよ。

いやだからグローバル変数使ってるプログラム欠点をそのまま持ってるじゃん

グローバル変数使ってるプログラム欠点説明する必要ある?

2016-05-24

http://anond.hatelabo.jp/20160523093706

なにこれ?本人?

10年前にOCaml関数型じゃない破壊的代入の命令コード書いたってこと?

http://anond.hatelabo.jp/20160523164755

一応、要求通りに新しい課題OCamlコード書く

http://okaml.blogspot.jp/2016/05/done2.html#more

 ↓

kenokabe氏に、

OCaml関数状態渡し : 74行

JavaScript+React+TimeEngineのFRP : 29行

kenokabe氏のFRPじゃ半分以下のコード実装できたと、トドメをさされて終了

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

結果、kenokabe氏の圧勝かな、おもしろかったです!

2016-05-21

http://anond.hatelabo.jp/20160302090242

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

nonstarterの言うことがハッタリじゃなければ、さっさとToDoListの課題Ocaml関数型の状態渡しをもって実装してみせればいいだけだが、言い訳始めてるからな。

もちろん、OCamlであれHaskellであれ破壊的代入の類の副作用使用せずに書くのもなんら困難ではありません。

nonstarterはこの発言の時点では、Ocaml関数型の状態渡しに限界があることはお首にもだしていない。読んだものはそうだったのか、何でもできると思って不思議ではないだろう。

しかしなぜか、Haskellが急に登場する。別の言語の助けを求め始めた最初がここ。

そのうち、OCaml実際的環境じゃスケールしないという指摘がはいる。

nonstarterは、複雑性への限界を認めるが、同時に、FRPの足をひっぱることも忘れ得なかった。つまり「負けてない!」ってことなんだろw

しばらく有耶無耶にされていたが、お絵かきアプリもまだ書けないといか書かれているのを目撃した岡部氏が、すでに実装していた自作FRPライブラリお絵かきアプリを示して、

ついでに、ハードルを引き上げた。

nonstarterの言うとおり、

もちろん、OCamlであれHaskellであれ破壊的代入の類の副作用使用せずに書くのもなんら困難ではありません。

かつ、FRPも同じ複雑さへの限界ならば、

岡部氏が示したFRPコードと同等のかんたんさで、OCamlでも出せるはずだ。

もちろん、他のHaskellFRPは使うな、という至極当然の縛りつき。

ちょっと本気出されたら、言い訳始めた、それが今。

http://anond.hatelabo.jp/20160520153948

OCamlでは」普通に副作用を使うライブラリしかいかスケールしない、って書いてあるのに

なんで勝手一般化して、Haskellとかでもスケールしないことにしたいの? 本当に牽強付会オンパレードですね。

そもそもの最初がesumiiやlambadaなどのOCamlユーザへむけての課題で、

nonstarterが、

もちろん、OCamlであれHaskellであれ破壊的代入の類の副作用使用せずに書くのもなんら困難ではありません。

と急に何故かいきなりHaskellを持ち出し、Haskellコードを引っ張り出した。

いろいろとっちらかしてんじゃねーよ、ってことだろ。

OCamlではライブラリも足りず机上の空論だったという、ひとつ区切りはついた。

もちろん、OCamlであれHaskellであれ破壊的代入の類の副作用使用せずに書くのもなんら困難ではありません。

とこの点について「一般化」を試みた、誤魔化そうとしたのは、nonstarterだ。

からごましてんじゃねーよ、ってそこをまず明確化されている。

2016-05-20

http://anond.hatelabo.jp/20160520061937

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

nonstarterの言うことがハッタリじゃなければ、さっさとToDoListの課題Ocaml関数型の状態渡しをもって実装してみせればいいだけだが、言い訳始めてるからな。

もちろん、OCamlであれHaskellであれ破壊的代入の類の副作用使用せずに書くのもなんら困難ではありません。

nonstarterはこの発言の時点では、Ocaml関数型の状態渡しに限界があることはお首にもだしていない。読んだものはそうだったのか、何でもできると思って不思議ではないだろう。

しかしなぜか、Haskellが急に登場する。別の言語の助けを求め始めた最初がここ。

そのうち、OCaml実際的環境じゃスケールしないという指摘がはいる。

nonstarterは、複雑性への限界を認めるが、同時に、FRPの足をひっぱることも忘れ得なかった。つまり「負けてない!」ってことなんだろw

しばらく有耶無耶にされていたが、お絵かきアプリもまだ書けないといか書かれているのを目撃した岡部氏が、すでに実装していた自作FRPライブラリお絵かきアプリを示して、

ついでに、ハードルを引き上げた。

nonstarterの言うとおり、

もちろん、OCamlであれHaskellであれ破壊的代入の類の副作用使用せずに書くのもなんら困難ではありません。

かつ、FRPも同じ複雑さへの限界ならば、

岡部氏が示したFRPコードと同等のかんたんさで、OCamlでも出せるはずだ。

もちろん、他のHaskellFRPは使うな、という至極当然の縛りつき。

ちょっと本気出されたら、言い訳始めた、それが今。

http://anond.hatelabo.jp/20160520153948

OCamlでは」普通に副作用を使うライブラリしかいかスケールしない、って書いてあるのに

なんで勝手一般化して、Haskellとかでもスケールしないことにしたいの? 本当に牽強付会オンパレードですね。

そもそもの最初がesumiiやlambadaなどのOCamlユーザへむけての課題で、

nonstarterが、

もちろん、OCamlであれHaskellであれ破壊的代入の類の副作用使用せずに書くのもなんら困難ではありません。

と急に何故かいきなりHaskellを持ち出し、Haskellコードを引っ張り出した。

いろいろとっちらかしてんじゃねーよ、ってことだろ。

OCamlではライブラリも足りず机上の空論だったという、ひとつ区切りはついた。

もちろん、OCamlであれHaskellであれ破壊的代入の類の副作用使用せずに書くのもなんら困難ではありません。

とこの点について「一般化」を試みた、誤魔化そうとしたのは、nonstarterだ。

からごましてんじゃねーよ、ってそこをまず明確化されている。

http://anond.hatelabo.jp/20160520153948

もちろん、OCamlであれHaskellであれ破壊的代入の類の副作用使用せずに書くのもなんら困難ではありません。

nonstarterはこの発言の時点では、Ocaml関数型の状態渡しに限界があることはお首にもだしていない。読んだものはそうだったのか、何でもできると思って不思議ではないだろう。

しかしなぜか、Haskellが急に登場する。別の言語の助けを求め始めた最初がここ。

そのうち、OCaml実際的環境じゃスケールしないという指摘がはいる。

nonstarterは、複雑性への限界を認めるが、同時に、FRPの足をひっぱることも忘れ得なかった。つまり「負けてない!」ってことなんだろw

しばらく有耶無耶にされていたが、お絵かきアプリもまだ書けないといか書かれているのを目撃した岡部氏が、すでに実装していた自作FRPライブラリお絵かきアプリを示して、

ついでに、ハードルを引き上げた。

nonstarterの言うとおり、

もちろん、OCamlであれHaskellであれ破壊的代入の類の副作用使用せずに書くのもなんら困難ではありません。

かつ、FRPも同じ複雑さへの限界ならば、

岡部氏が示したFRPコードと同等のかんたんさで、OCamlでも出せるはずだ。

もちろん、他のHaskellFRPは使うな、という至極当然の縛りつき。

ちょっと本気出されたら、言い訳始めた、それが今。

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