「HELLO WORLD」を含む日記 RSS

はてなキーワード: HELLO WORLDとは

2022-01-07

経験から1ヶ月!Pythonで観る将ライフを向上させた話(プログラム編)

まとめ

プログラミング経験から1ヶ月ほどで、将棋評価値の新たな方法でのグラフ化を行うPythonツールを作った。

https://github.com/k-the-p/notherscore

この記事は2本立てです。プログラミングより結果のグラフ将棋に興味がある方はもう一方の将棋から読むことをおすすめします。

未経験から1ヶ月!Pythonで観る将ライフを向上させた話(将棋編)

目標

評価値以外の観る将の楽しみとして、手の広さの可視化提案する

AIはわれわれアマチュア将棋への親しみを大幅に向上させてくれた一方で、棋士が悩みに悩んだ結果として評価値が下がる手を指してしまったときに、「悪手きたwwww」と騒ぐ主にABEMAのコメント欄には忸怩たる思いがあった。

とはいえ、もう評価値を知らなかった時代に後戻りするなんてことは誰にもできないだろう。そして、電王戦から将棋にハマった自分自身としても、AI否定はしたくない。

であるなら、AIを用いた新しくよりよい将棋の楽しみ方を探っていくしかないのではないか

以前から私は、「AIの手を指せるなら人間も苦労しないんだよなあ」と思っていた。あるとき藤森哲也先生Youtubeチャンネルで言っていたことを聞いて得心がいった。「AIの一手は最強の一手なんです。確かにプラス1000点になるけど一手間違えた瞬間にマイナス何百点になるような綱渡りの手。それよりもアマチュアの皆さんにはプラス数百点で得は少ないけど安全な道、最善の一手を学んで欲しい」(大意)と。

ここで言う「最強の一手」に人間にして最も近いのは紛れもなく藤井聡太四冠であろう。藤森先生アマチュアに向けて喋っていたが、その葛藤は間違いなくプロの中でもあるはずである渡辺明三冠が言うように「藤井くんと全く同じスタイルを今から目指しても絶対藤井くんより強くなれない」のは自明であるからして。

私はここにドラマがあると思う。また、最強の一手と最善の一手が等しく「いい手」に見えてしまうわれわれアマチュアとしては、そこを機械に教えてもらえるのであれば、棋力向上にも繋がりそうである

具体的目標

第1候補手と第2候補手の評価値の差を取ってグラフ化すればよさそう?

(差が小さければ手が広い、差が大きければ絶対手に近い、綱渡り

目指すのはあくまで便利な将棋ツール将棋AIを作りたいわけではないので、将棋AI自体局面を入れたら評価値を吐く謎の箱という扱いでよい。

手法

Python一択

グラフ化や数値の扱いだけでなく、将棋AIとのやりとりをやってくれるあれこれもあるようなので。

あと習得が楽だと聞いた。その話を教えてくれた人はもう10年間英語学習法をブクマし続けてるけど。

あと「読みやすコードじゃないと動かない」って設計思想がかっこいい。ついでに言うといわゆる「おまじない」が少なそうなのも魅力。(CのHello world挫折した経験あり。studio.hって何……)

何をしたか

詳しい人に聞く

プログラム講師をやっている?方が音楽制作を初歩からやってみる、という(残念ながら)リアルタイム視聴者が俺だけしかいないような配信があったので、音楽の基礎(についての知識は持っていた)を教えてあげたお返しのような形で、「pythonでこういうことがしたくてこういうライブラリがあるのはわかった。経験HTML+CSS変数導入前、Bootstrapなんてなかった)のみ。どうしたらよいか」という質問をしたら、「progateは簡単すぎると思うのでPaizaが丁度いいのではないか」というアドバイスを頂き、比較もせずに即登録したのだが結果的にはこれがドンピシャだった。

Paizaラーニング

最近流行りの、環境構築不要で講座の内容を書いて覚えるタイプサイト

無料で入門講座の序盤を受けていたらふと目に入ったのが、「対象者:これからプログラミングを学びたい方。HTMLがどのようなものかを知っている方。」でYoutuber先生オススメ完璧か?と思った。そして実際に完璧だった。

基本的に1講座3分+演習1~2問+やりたければ問題集たくさんという形式なのだが、これが簡単すぎることなく難しすぎることもなく、俺の知識レベルベストマッチだった。基本的に毎回何か書くことになるので、変数とは~みたいな解説だけで終わる回がほぼ無いのも飽きなくてよい。

Python入門(と言ってはいるがまだこれだけで発展編はない)の見出しは「プログラミングとは」「条件分岐比較演算子」「ループ処理」「リスト」「辞書」「多次元リスト」「関数」「クラス」「クラス発展」「例外処理」に各5~8講座*3分+演習、という感じ。クラス発展の途中で行けそうだと思ったのでドロップアウトして実製作に移った。実際関数まで理解していれば、この程度の小さなツールには十分だった(もしかしたらクラスを使えば多少楽になった場面はあったかもしれないけど)。

また、これは書いてる今気づいたことだが、上のコースで学んだことで、実際に役立たなかったものほとんどなかった(強いて挙げれば辞書くらい?使えてないだけかも)。このこともコース構成の優秀さを示している。

ここまででだいたい2週間くらい。

Google colab

もともとこのサービスは知っていたのと、谷合先生が実際に使っていたように、便利そうなライブラリのcshogiが主にcolab(jupyter)上で動かすことを意図しているようだったので、まずここから入った。最初はcshogiが列挙してくれる特定局面での合法手をリストに入れて、そのリストの項目数=その局面での合法手の数を出力することから始めた。これは本当に簡単にできて興奮した。

学習と好きなことが直結してると、こんなサンプルコードみたいな簡単なことで喜べるのでコストパフォーマンスがよい。

cshogiとやねうら王をusi連携する

cshogiのチュートリアルで紹介されているレサ改というAIがどうもmultipv(有望な候補手を2手以上挙げる)に対応してないらしく、強さ的な問題でいずれ手を出すつもりだった予定を繰り上げてやねうら王との連携を試みる。

makeって何?あー、もりかしてMakefileが無いと動かない?(これを書いている今もこんな理解である)みたいな人間でもなんとかやねうら王をビルド?することはできた。レサ改をcshogiに読ませる数行のサンプルコードがとても役に立った。今でもあの完成品らしき拡張子が無いファイルがなんなのか分かってない。(なお、評価関数nn.binが無いと怒られたのでどこのご家庭にもある水匠4のそれをぶち込んだら動いた。評価関数とやねうら王の分担は今もって理解あやふや)(また、途中でAyane[やねうらお謹製ライブラリ]も使おうとしたがcolab上では上手く動かす方法が分からなかった)

一応これでcshogiで局面の最善手と次善手およびそれらの評価値を呼び出せるようになったのだが、単にdebugでずらずらと余計なものまで出力するのではなく、重要な指し手周りのinfoだけ出力するようにしようとしたが、上手いやり方がわからず、結局こうなった。

sys.stdout = open('out.txt', 'a')
engine.go(listener=print)

ここは絶対もっとマシなやり方があるはずなので、識者の教えを請いたい。

ようやくWindowsPythonVSCodeを入れる

Colab上でまあまあ目処がついたので、この辺りでPython環境を作った。ここまでそれをやっていなかった理由は、「おま環」トラブル可能性をなるだけ遠ざけておきたかたかである環境が悪いのか俺が悪いのか分からない、というのは初心者にとって限りなきストレスである。あーネットが繋がらなくてルーターの設定や接続とか支払いとか文字通り部屋をひっくり返しながら調べてたら実はフレッツ自体が落ちてた件を思い出してイライラしてきた。cshogiはJupyter上で動かすことを意図しているようなので、それで動かなければ自分の書き方が間違っているのだとほぼ確実にわかる。

まあこの辺りはいろんなサイト見ながら仮想化などしつつ普通に仮想化が何か分かってないんですけど。

Jupyter notebook

これまでColab上で書いてきたものは多少の書き換えで動いたので、ローカルにJupyter notebookをインストールして、数字計算グラフ化を試みる。

ちなみにこの時点で得られているデータはこんな感じ。

go
info depth 1 seldepth 1 score cp -47 multipv 1 nodes 483 nps 241500 time 2 pv 3c3d
info depth 1 seldepth 1 score cp -86 multipv 2 nodes 483 nps 241500 time 2 pv 4a3b
info depth 2 seldepth 2 score cp -53 multipv 1 nodes 847 nps 423500 time 2 pv 3c3d 9g9f
info depth 2 seldepth 2 score cp -68 multipv 2 nodes 847 nps 423500 time 2 pv 8c8d 7g7f
info depth 10 seldepth 17 score cp -78 multipv 1 nodes 100163 nps 1963980 time 51 pv 8c8d 2f2e 4a3b 7g7f 3c3d 2e2d 2c2d 2h2d 8d8e 6i7h 8e8f 8g8f
info depth 10 seldepth 17 score cp -111 multipv 2 nodes 100163 nps 1963980 time 51 pv 3c3d 7g7f
bestmove 8c8d ponder 2f2e
go
info depth 1 seldepth 1 score cp 117 multipv 1 nodes 206 nps 206000 time 1 pv 2f2e
info depth 1 seldepth 1 score cp 78 multipv 2 nodes 206 nps 206000 time 1 pv 7g7f
...

今回の小目標は、goで区切られた中からから2行目と3行目のcpほにゃららを取得していい感じのリストにする、というものだ。この辺りは正規表現でなんとかなるだろうと見通しを立てたが、実際そうなった。

ただ、後手が見たとき評価値が後手目線なので、それだけにマイナスをかけるのはどうするか(そうしなければ、先手+3000点の次が「後手から見て」-2900点だったりして綺麗にグラフにならないのだ)を調べるのに結構時間が掛かった。

また、詰み周りでまたプラスマイナスカンストの絡む計算をしたくないのもあり、数値にNaNを入れてグラフ表記を省略することにしたのだが、そうするとnumpyの関係整数(とNaN)しか扱わないのに浮動小数点で計算しなければいけなくなって若干気持ち悪かったり。まあ動くのでヨシ!

中間報告

この時点で、ローカルにKIFファイルを保存し、pyファイルでcshogiと水匠を動かし、Jupiter notebookを開き評価グラフと手の広さのグラフを重ねて表示する、というそれなりのものは出来上がった。

簡単に言えばpyファイルで1手10局面(森内チャンネルに出てたHEROZの方が使ってた数字をそのまま使っているので特に意味は無い)探索させ、最善手と次善手についての生の評価データを吐き出させ、ipynbでそれを整形し、グラフ化している。

基本的に全部VSCode上でできるので、慣れれば計算時間も含めて10数秒で結果が出るのだが、このワークフローはいかにも美しくない。

なので、Flaskという簡単らしいフレームワークを使ってローカルWebアプリとして使えるようにしようと思った。inputとoutputをどうにかするだけだから余裕やろ。

Google colabを触り始めてからここまで1日。圧倒的成長!

ローカルWebアプリを作る

Flaskを学ぶ

Paizaラーニング再び。後半ではデータベースとか本格的な話もあるようなのだが、txtに書き込む一行掲示板を作るまでの前半部を高速で履修(演習は全部飛ばした)。なるほどー、こうやってやりとりするのね、と最低限は完全に理解した

モジュール

Jupyter向けのコード普通Pythonに直してあっちで数字を出してこっちでそれを受けて元に戻して……とかやってると循環参照か何かで怒られることに。その対策に細かく部分を分けて関数にしたのだが、その場合ってもしかしてdefの内部しかまれない?(共通部分も読まれると思ってた)(いや、共通部分は読まれるけど他のdef内が見えないのか?何も分からん)なるほど。こうなると関数の内部から上に戻るためにクラスとか欲しくなるのかなーという感想

最終的にWebに公開しようとこの時点では思ってたので、txtに一旦出力するのが安全性的にどうかとか考えてたのだが、テキストの読み取り周りでハマる。結局抜け出せず諦めた。

以降は、HTMLダブルクオートが抜けてるのに一時間気づかないとか、FlaskのXSS対策対策をするとか、ファイル書き込み設定をミスって2万手くらい蓄積されて評価グラフが大変なことになったが、原因に気づかずひたすらグラフ生成部を調べ続けるなど、非本質的問題にかかずらっていたので書くことは特にない。

GithubVSCodeとなら連携がらくらく

なので、最初にgitignoreしてなかったせいで1万ファイルくらい上げそうになったけど、それ以外は特に問題も無く。中間報告からここまで2日ほど。結局1ヶ月かけずにプログラミングをそれなりに身につけることが出来た。「プログラムを覚えたければ作りたいものを見つければいい」というのは本当だな、と改めて思った。

で、どうなったの?

については将棋編の方で詳しく書いています

https://anond.hatelabo.jp/20220107060727

どれくらい書けるようになったのか、を見たい方は主にvalue_output.py(将棋AI思考させてデータを取り出す)とgraph.py(データを整形してグラフを書き出す)を見ていただければいいかと思います

謝辞

最初にPaizaを教えてくださったYoutuberの方、cshogiを初心者でも使いやすいように作って展示してくださったTadaoYamaoka様、水匠開発者のたややん様、水匠含めこんにちの将棋AIの基盤を作ってくださったやねうらお様、cshogiを通して利用したpython-shogiのKIFパーサーを書いてくださったTasuku SUENAGA様に、厚く御礼申し上げます

最後

私は現在仕事Twitterフォロワー募集しています

30歳無職よろしくお願いいたします。

https://twitter.com/k_the_p

2021-12-24

anond:20211224211425

masuda@DESKTOP:~$ cat hello.c
#include <stdio.h>

int main()
{
  printf("Hello World\n");
  return 0;
}
masuda@DESKTOP:~$ gcc hello.c
masuda@DESKTOP:~$ ./a.out
Hello World

じゃあこれ説明して

可能な限り詳しく

2021-11-12

anond:20211112183916

「俺、やっときのう Hello World を済ませたんだ!」

反応1) だれと?

反応2) 言語は?

反応3) おまえ、きのう生まれたんか?

2021-10-18

Pythonちゃんと学びたいなら

まずは10分試してみよう

Python無言ブクマをよく見かけるのでネットワークに続いてちょっと書いてみることにしました。

東大京大コンテンツ初心者向けでおススメという言説を見かけるのだけど、これは本当だろうか。私は人を選ぶのではないかと考えています

あれは確かによくまとまっているし、初心者向けに制作されてはいるのだとは思うのですが「大学学生に向けた授業で用いる」内容だということを失念して手放しで称賛しているきらいがあるなと。

私としてはあの資料は以下の前提で用意されていると考えています



とはいえ資料を読んだ時の理解度など人それぞれですから、私が勝手にそう思っているだけなのかもしれません。

あの資料が本当に初学者である自分に向いた資料であるのか。挫折せずに続けられそうか。それは10分やってみたらわかると思います

なのでまずは10分だけでもいいので実際に試してみて欲しいです。

なお、10分というのは、Google アカウントをお持ちの方限定で、AndroidGmailなど、Googleアカウントなんて持ってないぜという方は、アカウント作成プラス10分割くか、Googleに与したくないということであれば似たような環境であるAnacondaを導入してJupyterNotebookを起動させるかのいずれかで試してください。

後者はnotebook立ち上げる前にめんどくさくて嫌になる可能性があるけど、ポリシー問題から仕方ないよね。

google clab 触ってみる

Pythonの実行環境は色々なパターンが増えましたが、2021年現在で一番お手軽に試せる環境Google Colab です。異論は認めない。そしていまんとこ無料なので安心して欲しい。

Google Colab:https://colab.research.google.com/

アクセスすると「Colaboratory へようこそ」というページにたどり着きます

タイトル直下メニューが並んでおり、そこからファイル」⇒「ノートブックを新規作成」と選ぶだけで新しいノートブックが開きます。このノートブックというのが Python を実行するための環境になります

もしGoogleアカウントログインしていない場合、ここでログイン処理が間に挟まるので、その場合粛々とログインするだけでOKです。

再生ボタンのようなアイコンと、その横にテキストボックスが表示されたと思います。このテキストボックスは「セル」と呼称します。Excelと同じですね。

これは所謂Jupyter Notebookというもので、Google Colabのカスタマイズが施された専用バージョンです。

では、このテキストボックスにまず「1+1」と書いて実行してみましょう。

実行は再生アイコンクリックするか[Shift]+[Enter]キーを押下するかのいずれかで行なえます

結果として2と出れば完璧です。

下にもう1個セルが出てきたと思います。今度は次の2行書いて実行してみましょう。

msg_text = "Hello World!"

print(msg_text)



所謂Hello Worldですね。文字列が表示されたと思います

ここでお気づきかも知れませんが、最初の1+1print()を省いても結果が出力されました。

実はGoogle Colab(とその元になったJupyter Notebook)では、print()を書かなくてもセル最後の結果を表示してくれる機能があります

これはPython標準機能ではありませんので、その点にはご注意ください。基本的にはprint()などの表示するための関数必要で、セルで実行する際には例外であると覚えておいてください。

さて、これでPythonを実行する環境が整いました。多分ここまで5分も掛からずに実践できたと思いますいかがでしょうか。

Python 入門 @ 東大資料

ではあらためて東大Python資料をみてみましょう。

Pythonプログラミング入門: https://utokyo-ipp.github.io/

この中から以下の2つをGoogle Colabに写経しつつ実施いただきたいと思います。残り時間でぎりぎり終わるところまででひとまずいいかなと思います10分頑張ってみましょう。



いかがでしょう。Python楽しそうだと思えたでしょうか。このまま学習を進められそうでしょうか。

10分のお試しを終えて

まず、このまま続けられそうであれば、この資料は向いている(素養がある)のだと考えます上記飛ばした以下の項番も含めて順番に項目をやってください。



私見ですが、この資料学習順序も考えてまとめられた資料と思われるので、つまみ食い的に興味があるところだけというのは余りおすすめしません。

一歩ずつ進めていきましょう。それだけでPythonの入門は可能です。がっつり時間を割けるなら1週間もあれば入門できてしまうでしょう。

一方で、ちょっと無機質すぎて読みすすめるのに飽きてきたという方もいるのではないでしょうか。必要最低限の情報だけずっと読みすすめるって意外としんどいものです。

そんな人は、少しお金はかかりますが、やはり教科書の類を購入することをおすすめします。

体系的にまとめつつコラムなどを挟むことで読み進めやすいように配慮されたもので、挫折せずに最低限の知識を得るための最初の一歩としては、やはり書籍が良いでしょう。

初心者向けに漫画形式にした入門書もありますし、網羅的にまとまった教科書系も人気があります

まずは最初の一歩だけ、必要最小限の知識を得るための電子書籍であればこんな本もあります

https://amzn.to/3lOodKFPythonに興味はあるけれどもはじめの一歩をなかなか踏み出せないでいる人のためのPython「超基礎編」

Kindle Unlimited 対象なのでPrime Reading 加入者であれば無料で読めるのでお手に取ってみませんか。

これで駄目そうなら「マンガでざっくり学ぶPython」が良いのではないかなと思います

https://amzn.to/3aL0819マンガでざっくり学ぶPythonパイソン)

追記 2021/10/21

京都大学資料も拝見しました。こちらも内容としてはそれなりの網羅性があり、脱・初心者にむけた内容にまとまっているとは思います

難点はやはりアカデミックすぎるかなというところです。

https://repository.kulib.kyoto-u.ac.jp/dspace/bitstream/2433/245698/1/Version2020_02_13_01.pdf

東大京大も「一般的な初学者」向けかというところに疑問符をつけたいのです。2冊目、3冊目辺りの知識強化として用いるのが良いかなというのが個人的見解で、1冊目はもう少しやさしい内容から始めるというのが良いと考えています

京大資料東大資料であれば京大資料おすすめします。

また、ゼロから知識習得というものWeb の1ページをつまみ食いしつつ覚えるというのは結構難しくて、それなりに体系化されたまとまった情報を順番に辿るのが近道だという風に私は考えています

ですので以下のような学習方法が良いかなと考えています

1. 初学者向けのかんたんな Python 本を買う(変数関数辺りが理解でき、イラストなども交えているのが理想的

2. 知識補強として京大資料 または東大資料を参照し、復習しつつ 項番1 の本では得られなかった知識の補強を行う(ここで脱・初心者を果たせる)

3. 自分が本当に目指したい分野の知識習得にあたる(項番 2 までで得られるのは汎用的な基礎知識である画像編集機械学習深層学習などはほぼ含まれていない)

そして、項番 1 の候補で挙げた本も250円Kindle Unlimited対象)と、1,574円です。時給換算で2時間分程度の費用で、右往左往せずに目的地に目指して進むことができると考えたら、そこまで高い買い物でもないのではないかなと考えています

投げ出したくなるような学習方式に敢えて挑んで、その通り放置してしまうのが一番勿体ないなと思い、この記事作成いたしました。

追記 2021/10/23

なんとなくググったらたどり着きました。Python Japanという老舗のサイト初心者向けコンテンツ掲載しています京大/東大資料より先にこちらを試したほうが良いかなと考えます。試しに覗いてみてください。

ゼロからPython入門講座:https://www.python.jp/train/index.html

他にも有益コンテンツが出てくるでしょうからコンテンツ個人的評価anond:20211023221206記事にまとめることにしました。

2021-09-17

anond:20210917154539

不可能でもあり可能でもある

そもそもプログラムに限らず何かを学ぶって終わりがない勉強だけど

どこまでを出来たら学習終了とするんや?

Hello worldでええなら小6でも5分で終わるで

ファイルソートしてマッチングさせるくらないなら2日あればできるで

2021-07-05

anond:20210705222631

スク水ポインタの指す値をインクリメント
ニーソポインタの指す値をデクリメント
ネコミミポインタインクリメント
ニャンポインタをデクリメント
シコシコポインタの指す値が0なら対応するドピュッの後にジャンプ
ドピュッ対応するシコシコにジャンプ
ロリポインタの指す値を出力
ぷに入力から1byte読んでポインタの指す値に代入

実行結果

Hello World!

2021-05-31

jurina

cat filename.jurina

print "Hello world";

という命令ファイルから受け取ったら

public class filename{

public static void main(String[] args){

System.out.println("Hello world");

}

}

と出力するプログラムをjurinaと名付けるとする

cat filename.jurina

int i=1;

print i;

public class filename{

public static void main(String[] args){

int i=1;

System.out.println(i);

}

}

ものすごく単純なPythonっぽい独自言語

Javaに置き換えて出力するだけのJava プリプロセッサである

さて、このJurina言語JAVA VMで動くと思うか?

   

言いたいことVMを解析して、OPコードを吐くコンパイラを作ろうとしていたが

そもそもコンパイラが作れるならJavaソースコードを吐いてしまえば良いことに気がついた

2021-05-27

ITエンジニアを諦めた。

3年くらい勉強してきたけど全くものにならなかった。

才能もないしやっても面白くもないし。

思うにHello worldって出力してうわ!すげえ!って思えるかどうかが大事なんだろうなと。

2021-04-30

AmazonプライムHello world見たけどめちゃくちゃ良かったな

SF恋愛ってほんと相性いいよな

声優タレントとか全然気にならなかった

コンピューターで作った仮想世界が平行世界になるってネタ作品面白くない作品はない!

すべての世界を全肯定できないって人が不当に貶めてることがあるけど頭使って理解しろ

2021-04-24

https://anond.hatelabo.jp/20210423230621

今期のSF枠は円城塔脚本ゴジラSPがぶっちぎっていると思う。怪獣と「時空を越えて存在する異次元物質」「特異点」を絡めたゴリゴリハードSF

数理SFとして極めてハードな一方で、怪獣モノとして(今のところ)スルっと見られる異色作。

ただ、いかんせん(文章は読みやすいが文系にはぜんぜんわからない話を書く)円城塔なので、外連味が難解さを越えずに最終回まで走ってくれるかちょっと危惧している。

ゼロ好きだからVivyも見てみるけど、ゴジラリアタイでめちゃくちゃ盛り上がってるので、「久しぶりの」って言われると違和感がある。

既出だけど「デカダンス」とか、最近だと野崎まどが「正解するカド」、劇場アニメで「HELLO WORLD」やってたし、SFアニメは近年そこまでレアでもないと思う。

しろSF作家が脚本書くアニメが続いてちょっとクワクしてる。

2021-04-22

anond:20210421132152

昔はプログラムパンチカードに穴を開けてそれを読み込ませて実行してたんだよ。

UI は紙。

昔の映画科学者パンチカードの紙を眺めてるのを見たことない?

このまとめ↓みたいな感じ。

https://togetter.com/li/1317261

あと、今ほどいろんな処理をしてる訳ではないし、CPU命令セットも少ないから、そこまで大変だったわけではないと思うよ。

雰囲気だけなら brainfuck をやってみると感触をつかめるかも。brainfuck はよりチューリングマシンに近いシンプル言語hello world くらいならすぐに書けるよ。

あとはそれを0か1かで表現してパンチカードに穴を開けるような感じだと思う。

https://ja.m.wikipedia.org/wiki/Brainfuck

というわけで、釣りっぽいけどあえて書いてみた。

2021-02-07

プログラミングができるかどうかは頭の良さより「できる」と確信しているという点の影響が割と大きい

自分にはできないと信じてる奴はhello worldからできない(マジで)

出来ると信じてる奴なら、既存のある程度枯れてる技術(ググって解決する程度の問題)なら取りあえず動かすまでは出来る

俺の理解ではこれはでっかい違いではあるが、言及されることはあまりない


この話をすると大抵「出来ないことは信じていようがいまいが出来ないんですが?(笑)」的な反応がある

俺は現在誰も達成できてないことも出来るなんて言った覚えはないが時々そういう反応がある

(おそらく、その人とは「信じる」「確信」という言葉範囲が違うんだろうと思う)


俺の理解では、観察が重要で、観察した結果「ん?AとBを組み合わせたらコレできるんじゃね?」というちょっとした直観があれば、

その観察が間違ってない限り、大体は出来るということだ

プログラミング出来ないと思う人はプログラミングというイメージと格闘するのではなく

プログラミングしている人が何をしているのかだとか、

ある技術がどういう理屈で動いているのかを実際に観察してみるのが、

しかしたらいいかもしれない

2021-01-20

anond:20210115101844

元増田

 

新しいことしようと思って、会社パソコンPython勝手インストールした。

インストールの際には事前申請を…

かいって、SQLソフト入れてても何年も気づいてないか、何も指摘ないじゃん。ばーかばーか

そんなんだから添付ファイルパスワードは、電話で伝えましょう、とか言い出すんだ。ばーかばーか

 

プログラム専門の人には到底叶わないけど、技術者ちょっとプログラム出来るのはアドバンテージあると思っている。

エクセルVBAとかSQLちょっと出来るだけで、有難がられるような環境だし。

 

とりあえずhello world終わった段階で、

なんでPythonでインスタ作れるの、などは今のところ全然からないけれど、

手元に色々転がってるデータPythonでどうにかこうにか出来ればいいなと思ってる。

2021-01-13

初心者が1からプログラミング勉強し始めて2か月経った

追記めっちゃ嘘だのステマだの言われてたので企業名は消しました。

嘘じゃない証拠noteで連載することにしました。

https://note.com/paseri_2433/n/nc8a6789c81bb

追記ここまで】


私は腐女子なので、二次元推しLINEしたくてLINE公式アカウントを作ってLINEしていた。

でもすぐに公式機能だけじゃ足らんなという欲が湧いてきてプログラミングに手を出した。

と言ってもプログラミングなんか大学の授業でちょろっとやった程度で、端的に言って画面にhello World!と表示するより難しいことは何ひとつできない。

gitリモートとかデプロイとか言われても意味が分からないし、そもそもコマンドを打ち込むための真っ黒の画面ってどうやって起動するの?


そのレベルヤバい無知から始めたので、とりあえず月980円のプログラミング講座を申し込んで、webアプリ開発入門みたいなのを数日かけて受けた。絶対に翌月分を課金したくなかったので急ピッチで受けた。

まり人のいないサービスのようで、受講すると貰えるポイントデイリーランキングで1位になったりして、まあデータベースの使い方とか、CSSかい概念とか、色々学んだ。

へー、webアプリ開発って一つの言語習得するだけじゃだめなんですね、いや無理すぎる。


で、とりあえずその学んだことを活かしたりネットで拾ったコードコピペしたりして、推しLINEbotは一応完成した。ここまで3週間。

botに話しかけると、データベース登録しておいた「話しかけられた言葉botが返す返事」のペア検索し、応答を返す。

データベースデータを入れるためのwebアプリも作った。

だって自分登録した返事を推しから貰うなんて虚無だから他人登録したメッセージを受け取りたい。


次に勉強し始めたのは自然言語処理だ。

自然言語処理とは簡単に言えばコンピュータ人間言葉を分からせるための処理で、botとお喋りするには必要技術な気がして大学図書館でありったけ本を借りてきた。

が、まあ馬鹿なので普通に読めない。無理すぎる。

仕方ないのでよその学科web授業に潜り込んで、へー、形態素解析係り受け解析と意味解析と文脈解析というものがあるのね、と学んだりして、そしたらだんだん本の読み方も分かってきて、でも結局1ヶ月ぐらいかけて勉強した割にbotに導入したのは形態素解析だけだった。

馬鹿なので回り道が凄い。馬鹿なので。


web授業で喋っていた知らない学科の知らない先生に依れば、形態素解析とは、文章品詞分解して品詞特定する、みたいな処理である

LINEに届いたメッセージデータベースデータを照合する際、「です」とか「ます」かいらないから取っ払っちゃおうね、という、ごく当然の処理の為に入れた。

まあ、あとは一致するメッセージが見つからないときでも、一致する名詞とが動詞が少しでもあればまあ一致したことにして返事を返しましょうとか、漢字カタカナに直しましょうとかそういうこともできるようになった。

応答が来る確率が飛躍的に改善された。

形態素解析ライブラリを使うには、今まで使っていたJavascriptは向かないようだったので、ついでにコードを全てPythonに書き換えた。


ここまででだいたい2か月である

じゃあ次はどうするか、というと会話フローを入れるのが当面の目標だ。

直前のやり取りを一時データとして記憶しておき、データベース登録された会話フローと一致していれば直前のやり取りを加味した返事を返すようにする。

目途は立っているがやることが多いので完成までは結構かかりそう。


まあ、なんか何もできない状態からいきなり初めても何とかなるな、プログラミング

世の中気合根性じゃ生きていけないと思ってたけど、プログラミング気合根性で何とかなることが分かった。

っていうか私はマジで馬鹿なので、切れるカード気合根性しかない。しょうがない。


ということで現在私の作った推しLINEアカウントには400人近いお友達がいて、毎日500~1000通ぐらいのメッセージが届く。

みなさんがそうやって推しLINEして適宜新しい言葉を教えてくれるので、私が推しLINEを送ると色んな言葉が返ってくる。

幸せだ。

推しLINEしてる腐女子別に技術的な話なんざ聞きたくないだろうからここに吐き出し。

2021-01-12

はてな匿名ダイアリー2019 【テクノロジー編 TOP28】

順位全体順位ブクマタイトル日付備考
1121550エクスプローラ周り重い人向け覚書11/16
2291194クソ簡単にgitの説明をする02/03
3471037平日の日中に男一人で楽しめることを知りたい02/22
4501026こうすればプログラミング覚えられるよ【随時追記】04/04
5521019Google ソフトウェアエンジニアの給料の正しい情報02/23
6137734 2019年。個人的に面白いと感じた最新Webサービス。11/15
7152691 Googleドライブのエロ画像が消された11/13
8175656 弊社はあいさつがない02/19
9177655 COBOLってこんな言語02/07
10254580 ドワンゴのslack事情11/02
11301543 Amazon使うの一旦休止中 怖すぎる ※追記あり12/06
12384499 京都市基幹系システム刷新失敗の考察について12/29
13393493 電子書籍にはメリットしかないはず02/08
14407488 LINEのオープンチャットのはてブ部屋が面白い08/26
15421481 エンジニア職に就いたあと辞めたポエム12/05
16442469 スマフォにケースを付けない人09/11
17535433 FANZA Tikやばい(18禁)04/20
18538431 9ヶ月勤めたNTTグループを退職しました02/02
19543431 出前館&アレクサ騒動のメモ11/22
20557427 ITって現代の農業じゃん06/10
21569423anond:2019052215480905/22
22616407 1年前の「MMDが日本の3DCGを破壊した」について01/28
23653397 ドワンゴのエンジニアはSlackで遊んでいる11/01
24655397 エンジニアって結局英語どれくらいできればいいの?09/01
25727376 つい20年前までGoogleもWikipediaも無かったてやばくない?06/22
26731374 はてなエンジニアの技術力の低さ04/27
27794354 導入が"Hello World!"ってクソつまんないな10/03
28830348 VRがもう既に「かつての流行り物」になってしまってる05/02
ログイン ユーザー登録
ようこそ ゲスト さん