ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

アプリ開発、年収は15万円。貯金1000万円を切り崩して6年

2016-05-17 21:01:17 | Weblog
ですって。やっぱり、アプリってもうかんないですよね・・・


貯金1,000万円つかって、6年で20アプリつくったが、年収は15万円。どん底アプリ開発者、コンテストで賞金250万円を獲得し、人生初勝利をおさめる。
http://appmarketinglabo.net/iyodasan/


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

「機械学習」と、「対話型」で、AIでプログラム自動生成の可能性が高まった

2016-05-17 17:26:02 | Weblog

AIで自動プログラム生成する方法から思う、プログラミング教育必修化は意味ないのでは?
http://blog.goo.ne.jp/xmldtp/e/120082cf44317e07c66e6164358b55b0

でありがちな反論について、ちょっとかいてみる。




プログラムの自動生成という場合、プログラムの長さは分からない。
組み合わせは無限にある。だから計算不能で作れるわけがない。

これは、完成品を1つのプログラムと考えると確かにそうだ。

しかし、こう考えたら、どうなる・・・




求めなければいけないのは、たとえば、帳票の1つのマスの中の値です。

  例えば売上とか、単価とか・・・

そして、このマスがいっぱい集まって、プログラムになるのですが、
今回は、そのうちの1つのマスだけに注目します。

1つのマスが出来れば、複数のマスは同じようになればいいのだから




さて、1つのマス、つまり、売上とか小計とかっていうのは、
そんなに複雑なことをして求めていないということに気づく。

多くは、
・DBの値そのもの
・何かと何かの四則演算
・合計値
などなど・・

どういう場合、どういうものが使われやすいかというのは、機械学習とかさせれば、
パターンでてきそう。
そこで当てはまりそうな計算方法を確率的にリストアップしていく
 結果に「売上」とあった場合、50%の確率で数量と単価をかけるとか
    「小計」という言葉があった場合、70%の確率でなにかとなにかの合計値など

そして、データを使って、このリストを順に試していけば、もとまりそう。




将棋や囲碁も無限っぽいけど、一手、一手づつ対話式でやった場合できている。
プログラミングも1マスずつ、対話的?に埋めていけば、出来そうな気がする・・・


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

年収1位の言語はPythonなんですって!

2016-05-17 14:26:07 | ネットワーク

プログラマー年収ランキング2016!言語別、第1位はPythonの651万円
https://jp.stanby.com/media/programming_ranking/

念のために言っておくと、

  Pythonかけると651万円もらえる!

という意味じゃないと思うよ・・


Pythonを使うような会社は、
機械学習などを行うベンチャー企業で、そういう

   「機械学習をやるベンチャー企業は」年収が高い

という意味だと思うよ!



だからPythonだけ書けても、

    いや~、機械学習もディープラーニングも、分かりません??

とか言うのであれば、
多分そういう会社には採用されず、
年収は上がらないと思う。

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

AIで自動プログラム生成する方法から思う、プログラミング教育必修化は意味ないのでは?

2016-05-17 02:21:29 | ネットワーク

小学校でのプログラミング教育必修化を検討 文科省
http://www.asahi.com/articles/ASJ4M5D4GJ4MUTIL044.html

とか

プログラミング 必修化を創造力育てる一助に
http://www.yomiuri.co.jp/editorial/20160516-OYT1T50131.html

このプログラミング教育って、多分、手続型言語を教えるんだろう・・・
2020年なんて言ったら、人工知能でプログラミングが自動化できてるだろう。
あと4年もあるんだから。
そんなとき、手続型言語は意味がない。人工知能がやってくれるから。
そうではなく、目標を定義することが重要。それに近い宣言型言語のほうがいい。




■AIで自動プログラム生成する方法

人工知能でプログラミングさせるとすると、
ゴールを指定して、それを自動生成させるはず。

こんなかんじ。

【基本的考え方】
(1)今、あるゴールがあり、それを満たすプログラムを作りたいとする
  そして、入力データと、出力結果となるゴールのデータセット
(JUnitにおける入力データとアサーションするデータ)
  は簡単に作れて、作ってあるモノとする。

(2)ここで仮にゴールを満たすプログラムは存在するとする。

(3)そして、(2)で利用可能なクラス、メソッド、変数、定数とDB項目、演算子すべてに番号を振る。

(4)ここで、(3)のプログラムの「クラス、メソッド、変数、定数とDB項目、演算子」
    を(3)で振った番号で表現する

(5)すると、数字の列がちりばめられる
  (例 a=10*5;
       定数10000まではそのままの数字、
       変数aは10001
       演算子は+が20001,-が20002,*は20003とすると、
     100001 10 20003 5 と変形できる)
   そこで、上から順とか、何か決まりをつけて、上記で降った番号を一列に並べる
  →そうすると、遺伝的アルゴリズムでやった「遺伝子」に相当するものができる

(6)ゴールのデータセットを大量に用意し、それを満たしたら、得点を与えるようにする。
  →これが遺伝的アルゴリズムでやった評価関数になる。

(7)よって、大量のデータセットと正しい「遺伝子」があれば、人工知能(遺伝的アルゴリズム)で
 プログラムが自動生成できる。

【方法】
(あ)乱数で適当に数字を並べる→遺伝子
(い)大量の入力と出力結果を用意する
(う)遺伝子を(3)の番号→変数表に対応させてプログラム生成
(え)それを大量の入力と出力を使って評価
(お)評価の結果、有利になったものを残して、遺伝子を作る
   →遺伝的アルゴリズム

できそうでしょ!

ここまできたら、あとはやるだけ。
人工知能学会の雑誌の来月号に
人工知能(遺伝的アルゴリズム)でプログラムができた!
という論文が載ってたとしても、ひとつも不思議ではない。




つまり、必要なのはゴール時のデータ、イメージなのですよ
(これは要求工学などでも同じ)
それがあれば、あとは乱数で適当に遺伝子を組んで、
自動生成まで持っていける。

で、話を元に戻すと
小学校で、自動生成できるような手続き型プログラミングの技能を教えても意味がない。
ってことになる

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする