左耳朵耗子- 技術博客學習


1.通過在公司工作提高自己的技能,讓自己可以更為獨立和自由地生活。

2.對於沒什么技術含量的工作內容,提高交付效率。把時間用來研究高技術含量的知識。
3.要寫文章就寫別人沒有寫過的,或是別人寫過,但我能寫得更好的。
4.看清市場需求(各個公司正在做什么,難題是什么)和技術趨勢(首先要了解技術的歷史,把本質吃透:看經典書籍,向前沿學習)
5.在學習技術的過程一定要多問自己兩個問題:“一,這個技術解決什么問題?為什么別的同類技術做不到?二,為什么是這樣解決的?有沒有更好的方式?”另外,還有一個簡單的判斷方法,如果一個新的技術順應技術發展趨勢,那么在這個新的技術出現時,后面一定會有大型的商業公司支持(專門做此類技術的公司),這類公司支持得越多,就說明你越需要關注。
6.在一家高速發展的公司中,技術人員的價值可以達到最大化。比較好的成長路徑是,先進入大公司學習大公司的技術和成功的經驗,然后再找到高速成長的公司,這樣你就可以實現自己更多的價值。
7.動手能力很重要,持續在前線工作。
8.關注技術付費點:一個是,能幫別人“掙錢”的地方;另一個是,能幫別人“省錢”的地方。
9.提高自己的能力和經歷。
找到有價值的信息源(知識的源頭:西方世界) ,最好的技術在西方: google (xxx_技術 best practice/programming , Best programming resource);
10.輸出觀點和價值觀,只有輸出了更先進的價值觀,才會獲得真正的影響力(厚積薄發的過程)
11.優質的朋友圈。

 

12 . 編程范式:各種編程語言都有它們各自的編程范式,用於解決各種問題。比如面向對象編程(C++、Java)、泛型編程(C++、Go、C#)、函數式編程(JavaScript、 Python、Lisp、Haskell、Erlang)等。學好編程范式,有助於培養你的抽象思維,同時也可以提高編程效率,提高程序的結構合理性、可讀性和可維護性,降低代碼的冗余度,進而提高代碼的運行效率。要學習編程范式,你還可以多了解各種程序設計語言的功能特性。

13.學習至少6種(我不太清楚英語中的half dozen是什么意思,是虛指還是就是6種)編程語言。這6種語言中,包括一種支持抽象類的(例如Java或者C++),一種支持函數的(Lisp, ML或者Haskell),一種支持語義抽象的(Lisp),一種支持聲明規范的(Prolog或者C++模板),還有一種支持並發的(Clojure或Go)。

14. 編程的本質

 

function check_form_x() {
    var name = $('#name').val();
    if (null == name || name.length <= 3) {
        return { status : 1, message: 'Invalid name' };
    }
 
    var password = $('#password').val();
    if (null == password || password.length <= 8) {
        return { status : 2, message: 'Invalid password' };
    }
 
    var repeat_password = $('#repeat_password').val();
    if (repeat_password != password.length) {
        return { status : 3, message: 'Password and repeat password mismatch' };
    }
 
    var email = $('#email').val();
    if (check_email_format(email)) {
        return { status : 4, message: 'Invalid email' };
    }
 
    ...
 
    return { status : 0, message: 'OK' };
 
}

采用一個DSL + 一個DSL的解析器來進行優化:

var meta_create_user = {
    form_id : 'create_user',
    fields : [
        { id : 'name', type : 'text', min_length : 3 },
        { id : 'password', type : 'password', min_length : 8 },
        { id : 'repeat-password', type : 'password', min_length : 8 },
        { id : 'email', type : 'email' }
    ]
};
 
var r = check_form(meta_create_user);

DSL 的描述是“Logic”,而我們的 check_form 則成了“Control”,代碼就非常好看了。

如何分離 control 和 logic 呢?我們可以使用下面的這些技術來解耦。

State Machine:狀態定義,狀態變遷條件,狀態的 action

DSL – Domain Specific LanguageHTML,SQL,Unix Shell Script,AWK,正則表達式……

編程范式面向對象:委托、策略、橋接、修飾、IoC/DIP、MVC……

函數式編程:修飾、管道、拼裝

邏輯推導式編程:Prolog

這就是編程的本質:Logic 部分才是真正有意義的(What),Control 部分只是影響 Logic 部分的效率(How)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM