一時期プログラミングのデザインパターンというものが大流行しましたが、現在ではどのように評価されているのでしょうか?
昔の意味でのデザインパターンは、もう薄れてきたのだろう。
しかし、ビルド淫されていたり、より良い形で実装されていたりと、違う形で残っている。
今では、古典なのかもしれないが、昔の思想を歴史の流れにそって知り、今にどのようの形で残っているか学ぶことは楽しい。
一時期プログラミングのデザインパターンというものが大流行しましたが、現在ではどのように評価されているのでしょうか?
昔の意味でのデザインパターンは、もう薄れてきたのだろう。
しかし、ビルド淫されていたり、より良い形で実装されていたりと、違う形で残っている。
今では、古典なのかもしれないが、昔の思想を歴史の流れにそって知り、今にどのようの形で残っているか学ぶことは楽しい。
低レイヤを知りたい人のためのCコンパイラ作成入門
https://www.sigbus.info/compilerbook/
をいまやっている。
説明が丁寧で明快であるため、楽しんで進めることができる。説明の粒度が小さいのが素敵。
プログラミングの勉強。むずかしい。何かアプリを作るようにすればよいのだろうか。今は、C言語とアセンブリのことをやっている。なかなか楽しい。師匠がすごすぎるっていうのはあるが。
自分は独学だけじゃできないな。いつかは独学だけでやることや仲間を作るのが大事になってくるのだろうか。
実際に、他の人はどんなやり方をしているのだろうか。仕事でやったり、趣味で作ってみたり。・・・とりあえず今できることを少しずつ進めていくことが大事かな。
これからの方針など
適当にたくさん書く。テーマを絞ってとか思ったけど、雑にたくさん書いてもいい気がする。まとめていいものを書こうとすると自分のとってはハードルが上がる。現に放置していたわけだし。というかこんなブログでも毎日10人くらいは見てくれる。テキトーにたくさん書いてもいいか。
自己満足は大事だし。アフィリエイトとかも考えたが、めんどくさいし、閲覧者もほとんどいない。適当になんでも書けるのが個人ブログの良いところのはず。昔はブログが流行っていたが、一周回って、流行るかも。twitterじゃ短すぎるし、インスタは写真とコメントだけだ。
Python関係で書こうかな。一日一標準ライブラリを使うとか。行数はその都度可変で。100記事書いたら、まとめてずらっと標準してみたい。
毎日が目標だけど、できなかった一日くらい飛ばす。
#!/usr/bin/env python # -*- coding: utf-8 -*- # Created by devel on 2017/07/27. import math def main(): a = (2 + 2) / (2 * 10) b = (2 + 2) / 2 * 10 print(a) # 0.2 print(b) # 20.0 if __name__ == '__main__': main()
これですごく悩んだ・・・
初歩的なことを忘れないように!
Markdown(#5つ)
htmlで記述する必要がなくて楽になる。
ストリームの値の移り変わり
/** * Created by devel on 2017/04/01. */ var expect = require('expect.js'); var succ = (n)=>{ return n + 1 } var enumFrom =(n)=>{ return [n, (_)=>{ return enumFrom(succ(n)) }] } a = enumFrom(1) // nに1を代入 console.log(a) // [ 1, [Function] ] console.log(a[0]) // 1 console.log('') console.log(a[1]()) // [ 2, [Function] ] console.log(a[1]()[0]) // 2 console.log('') console.log(a[1]()[1]()) // [ 3, [Function] ] console.log(a[1]()[1]()[0]) // 3 console.log('') console.log(a[1]()[1]()[1]()) // [ 4, [Function] ] console.log(a[1]()[1]()[1]()[0]) // 4
不変なデータの定義と使い方
var empty = (_)=>{ return null } var get = (key, obj) =>{ return obj(key) } var set = (key, value, obj)=>{ return (key2) =>{ if(key===key2){ return value }else{ return get(key2,obj) //関数setに引数を渡している場合、セットされているobjの中身はempty } } } a = set('a','b',empty) //emptyにかっこはつけない 関数が返っている console.log(get('a', a)) // a console.log(get('hi', a)) // null
setで返すものは関数。
setすると、return (key2) =>{…}の”…”部分に関数を呼び出すときに渡した引数、key、value、objの値が設定される(設定?定義?される)。
getするときにkeyが違うときには、get(key2, empty)となり、empty(key2)、そしてnullを返す。
ラムダ式で書いた関数をリファクタリングしていっている。下にいくほど文章量が少なくなることが分かる。
/** * Created by devel on 2017/03/28. */ var expect = require('expect.js'); var anArray = [2, 3, 4, 5, 7] var sum1 = (array) =>{ var result = 0 for(var index=0; index<array.length; index++){ result = result + array[index] } return result } console.log(sum1(anArray)) var sum2 = (array) =>{ var result = 0 array.forEach((item)=>{ result = result + item }) return result } console.log(sum2(anArray)) var sum3 = (array) =>{ return array.reduce((x, y)=>{ return x + y }) } console.log(sum3(anArray)) expect( sum3(anArray) ).to.eql( 21 )
一番下は単体テスト。
関数型に手を出してみたので、Scalaをやってみた。
HelloWorldをやったくらいだけど、関数型独特なやり方もやってみたいなー。
まずは、入門書をちょくちょくやっていってみよう。