デザインパターンの今

一時期プログラミングのデザインパターンというものが大流行しましたが、現在ではどのように評価されているのでしょうか?

 

昔の意味でのデザインパターンは、もう薄れてきたのだろう。

しかし、ビルド淫されていたり、より良い形で実装されていたりと、違う形で残っている。

 

今では、古典なのかもしれないが、昔の思想を歴史の流れにそって知り、今にどのようの形で残っているか学ぶことは楽しい。

 

プログラミングの勉強のこと

プログラミングの勉強。むずかしい。何かアプリを作るようにすればよいのだろうか。今は、C言語とアセンブリのことをやっている。なかなか楽しい。師匠がすごすぎるっていうのはあるが。

自分は独学だけじゃできないな。いつかは独学だけでやることや仲間を作るのが大事になってくるのだろうか。

実際に、他の人はどんなやり方をしているのだろうか。仕事でやったり、趣味で作ってみたり。・・・とりあえず今できることを少しずつ進めていくことが大事かな。

 

これからの方針

これからの方針など

適当にたくさん書く。テーマを絞ってとか思ったけど、雑にたくさん書いてもいい気がする。まとめていいものを書こうとすると自分のとってはハードルが上がる。現に放置していたわけだし。というかこんなブログでも毎日10人くらいは見てくれる。テキトーにたくさん書いてもいいか。

自己満足は大事だし。アフィリエイトとかも考えたが、めんどくさいし、閲覧者もほとんどいない。適当になんでも書けるのが個人ブログの良いところのはず。昔はブログが流行っていたが、一周回って、流行るかも。twitterじゃ短すぎるし、インスタは写真とコメントだけだ。

Python関係で書こうかな。一日一標準ライブラリを使うとか。行数はその都度可変で。100記事書いたら、まとめてずらっと標準してみたい。

毎日が目標だけど、できなかった一日くらい飛ばす。

JavaScript 関数型プログラミング ストリーム

ストリームの値の移り変わり

 

/**
 * 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

 

 

 

 

JavaScript 関数型プログラミング 不変なデータ使いかた

不変なデータの定義と使い方

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を返す。

 

 

 

関数型プログラミング JavaScript リファクタリング

ラムダ式で書いた関数をリファクタリングしていっている。下にいくほど文章量が少なくなることが分かる。

/**
 * 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
)

一番下は単体テスト。