又LAG隨性筆記
  • 關於我
  • 作品集
  • 生活隨筆
  • 與我聯絡
  • 隨手扎

隨手扎

March 1, 2020

【閱讀筆記】Common Lisp相關好文閱讀筆記

我對Common Lisp的喜愛應該不用多說。我不知道他還可以帶給我多少驚喜。

節錄幾個Common Lisp文章的相關敘述。

超凡脫俗的極限 - Common Lisp 文/田春

在文中最後寫:

原文: 超凡脫俗的極限 文/田春 鏈接已失效。

我閱讀位置:https://open343.github.io/Writing/zh-cmn-Hant/Overworldly-Common-Lisp.html

這應該是我第二次看,第一次看應該是在原本連結處。

語法

中序表達式可以徹底避免運算符優先級,例如 C 語言的表達式 1+23 在 Lisp 中將寫成 (+ 1 ( 2 3)) ,其中的 + 和 * 都是普通函數的名稱,和其他用戶定義的函數沒有區別。 值得注意的是,小括號的使用並不是必須,只是 Lisp 讀取器的一種標識,完全可以定製。如果用戶喜歡用中括號甚至後序表達式來描述 Lisp 程序,也是有可能的,相關的方法請查詢 Common Lisp 的 get-macro-character 和 set-macro-character 函數。

高度賦予程式成員自由性

Common Lisp 是唯一的允許程序員控制從源代碼到目標程序的所有方面的編程語言 。典型的 Lisp 代碼的處理分為三個階段:讀取、編譯、加載以及執行,其中每個階段都允許程序員介入。

  • 在讀取階段,用戶可以設置特殊的讀取宏,用簡潔的形式讀取用戶自定義的對象;
  • 在編譯階段,通過定義宏可以執行任意代碼來生成被編譯器所讀取的代碼;
  • 在程序加載階段,附加的代碼有機會被執行,例如全局變量的初始化;
  • 而在最終的程序執行階段,Lisp 系統還仍然有機會繼續編譯和加載程序的其餘部分,例如補丁,因為包括 compile 和 load 在內的函數是語言規範的一部分。

在讀取階段有set-macro-character等讀取宏(read macro,我更喜歡使用原文。宏或巨集都不太能表達其強大)。
在編譯階段有defmacro、define-compiler-macro等可以使用。

March 1, 2020

[填坑筆記]kk音表解碼&國際拼音

kk音表解碼

課程影片:音標解碼:如何用26個英文字母來帶出所有的美式音標符號 (30分鐘必學課程)

筆記:https://postimg.cc/gallery/2rtdl5o5g/

想跟著寫一次,算是填上坑了
不過掃描後,黃色highlight變得好不明顯XD

國際拼音

February 29, 2020

【心得筆記】軟體品質相關文章閱讀心得

今天寫的筆記,都是公開文檔。我會推薦都去看看。有些原則不一定需要遵守,保留彈性。內容與我之前寫的筆記也有關,最好先完整閱讀一個,且最好是買本Bob大叔的clean code。

無瑕的程式碼 JavaScript

連結:https://hackmd.io/@trylovetom/SJnKIrajH

受到Bob大叔的clean code啟發,是clean code的js版本。除了提到一些原則外,另有提及一些JS生態使用的工具。筆記僅簡單紀錄紀個我感興趣的部份,推薦要寫JS的還是去完整閱讀。

注意!你不必嚴格遵守每一項原則,有些甚至不被大眾所認同。雖然這只是份指南,卻是來自《無暇的程式碼》作者的多年結晶。

軟體工程只發展了五十年,仍然有很多地方值得去探討。當軟體與建築一樣古老時,也許會有一些墨守成規的原則。但現在,先讓這份指南當試金石,作為你和團隊的 JS 程式碼標準。

還有一件事情:知道這些原則,並不會立刻讓你成為出色的開發者,長期奉行它們,不代表你能高枕無憂不再犯錯。但是,千里之行,始於足下,時常與志同道合們進行討論(Code Review),改善不完備之處。不要因為自己寫出來的程式碼很糟糕而害怕分享,而是要畏懼自己居然寫出了這樣的程式碼!

評估程式碼好壞的方法

透過計算閱讀程式碼時的咒罵次數,來評估軟體品質

這方法與「可不可以不要寫糙 code」有異曲同工之妙。

協助維持軟體品質的工具

February 29, 2020

7天搞懂JS進階議題(day07-1)-系列目錄

寫了這麼久的JS,你還在物件之前的時代嗎?只有資料、函式可以用,破破的抽象化,不會難以維護?儘管JS起初並不以物件導向設計,但透過原形鏈設計,其仍然可以具有好維護的物件導向特色。本系列從最基礎的this,深入ES6之後的class。

系列目錄

  1. 第0天 - Oh…開始了……
  2. 第1天 - this & bind: 你不能不知道的
  3. 第2天 - new & factory: 如何建立一個新物件
  4. 第3天 - Function & Object: 關於Prototype Chain繼承
  5. 第4天 - Class & constructor: 吃語法糖別噎到
  6. 第5天 - getter & setter: 屬性描述器
  7. 第6天 - yield & yield*: 生成器
  8. 第7天 - Symbol & Proxy: 以前沒有的
  9. 第8天 - Closure & Private:番外短篇 隱私成員

各章節簡介

(第1天) this & bind: 你不能不知道的

物件導向必不可少的,就是如何引用參考自己。

要是自己的錢包都拿不出來,你要怎買個冰棒?

(第2天) new & factory: 如何建立一個新物件

既然是要來物件導向,當然要先來學怎麼建立物件。本節帶你看看如何建立一個新的物件。

(第3天) Function & Object: 關於Prototype Chain繼承

在class之前,必須了解的prototype chain。

JavaScript 是個沒有實做 class 關鍵字的動態語言,所以會對那些基於類別(class-based)語言(如 Java 或 C++)背景出身的開發者來說會有點困惑。(在 ES2015 有提供 class 關鍵字,但那只是個語法糖,JavaScript 仍然是基於原型(prototype-based)的語言)。

(第4天) Class & constructor: 吃語法糖別噎到

February 29, 2020

7天搞懂JS進階議題(day08) Closure & Private:番外短篇 隱私成員

本系列文章討論JS 物件導向設計相關的特性。 不含CSS,不含HTML!
建議先有些JS基礎再繼續閱讀。
你也可以看看從零開始遲來的Web開發筆記
雖然是「7天寫作松」挑戰,但同樣可以視為系列後續文章

No CSS! No HTML! No Browser!
Just need programming language


這篇是臨時起意補的一篇短篇,用於示例如何模擬私有屬性。儘管這可能不是JS主流設計思想方法,但知道相信對你沒壞事。

在第5天-getter & setter: 屬性描述器,曾經看過這樣的例子:

var 神崎家 = class {
  constructor(name){
      this.__name = `神崎・${name}`;
    }
  static born(name){
      return new 神崎家(name)
  }
  set name(new_name){
      this.__name = `神崎・${new_name}`;
  }
  get name(){
      let first_name = this.__name.substr(0,2),
          last_name = this.__name.substr(3, this.__name.length + 1);
      return `${first_name}・H・${last_name}`
  }  
  introduce(){
      console.log(`Hi~ My name is ${this.name}`)
  }
  rename(new_name){
      this.name = new_name;
      return this.name;
  }
}

可能會有人問…為什麼__name不直接這樣寫就好:

February 29, 2020

7天搞懂JS進階議題(day07)-Symbol & Proxy: 以前沒有的

本系列文章討論JS 物件導向設計相關的特性。 不含CSS,不含HTML!
建議先有些JS基礎再繼續閱讀。
你也可以看看從零開始遲來的Web開發筆記
雖然是「7天寫作松」挑戰,但同樣可以視為系列後續文章

No CSS! No HTML! No Browser!
Just need programming language


最後一天,來看兩個特別的類別–Symbol和Proxy。

以前的物件(object)

key只能是字串

在以前,物件的key一定要是基礎字串,不過因為JS語法糖的關係可以不用加引號:

var obj = {
    "name": "World",
}

// 等價於

var obj = {
    name: "World",
}

如果不是呢?

  • ««
  • «
  • 1
  • 2
  • 3
  •  … 
  • 20
  • 21
  • 22
  •  … 
  • 34
  • »
  • »»
© 又LAG隨性筆記 2025