物件導向與函數語言程式設計的區別: 動詞-名詞與名詞-動詞的區別 - simblob
我的主要主題是研究如何將函式性程式語言和物件導向的程式語言結合在一起。我當時注意到的是,函式語言的語法傾向於動詞,然後是名詞,如f(x),而面嚮物件語言的語法傾向於是名詞,然後是動詞,如:x.f()。在某種程度上,這些可以被認為是等效的。您可以用一種表達等同於另一種表達。不過,兩者在可用性存在很大差異,這種可用性表現在:自動完成。
f(x)自動完成
首先,我們需要知道f在這種情況下有效的所有可能。由於程式設計師剛開始輸入表示式,因此任何函式都是有效的,這意味著有很長的列表可供選擇。需要多次擊鍵才能選擇一個。其次,我們需要知道x在這種情況下有效的所有可能。這些通常是本地名稱,因此沒有那麼多。知道f縮小型別會縮小列表的範圍,但是列表已經很小,因此收穫不多。
x.f()自動完成
首先,我們需要知道一切可能x。程式設計師剛剛開始輸入內容,因此任何本地名稱均有效,但數量不多。僅鍵入一個字元可以將列表縮小到一兩個元素。其次,我們需要知道f在這種情況下有效的所有可能。這些是根據的型別定義的方法x,因此與所有可能的函式相比,沒有那麼多的方法。知道x縮小型別會大大縮小列表的範圍,因此有很多收穫。
這兩種語法在理論上似乎是等效的,但實際上卻不是。我想知道使用常規文字編輯器的人是否最終會相信這兩種語法是等同的,而使用IDE的人更喜歡物件導向的語法,即使他們沒有利用物件導向的程式設計(繼承,子型別化等)。 )。
這種不對稱與您使用函數語言程式設計還是物件導向的程式設計正交。對於程式設計師來說,如果他們可以從兩個中等長度的列表中進行選擇,則比必須從一個非常長的列表中進行選擇更好。
您也可以在其他情況下看到這一點。DOS,VMS和Unix Shell等命令列介面通常先指定一個動詞,然後再指定一個或多個名詞。Mac和Windows之類的GUI通常首先透過單擊圖示來指定名詞,然後透過從右鍵單擊選單中進行選擇來指定動詞。
在文字編輯器中,vim的命令d0是動詞,然後是文字選擇(名詞),而在更傳統的文字編輯器(包括Emacs)中,您首先要選擇一些文字(名詞),然後呼叫動詞,例如delete。Kakoune是使用名詞動詞而不是動詞名詞的模態編輯器。
在遊戲中,玩家最好先從環境中選擇一個物件,然後從少量動作中進行選擇,而不是先從大量動作中進行選擇,然後再從一組物件中進行選擇。但是,我沒有調查足夠多的遊戲來了解更常見的遊戲。下次玩遊戲時,請檢視命令的結構,看它是動詞名詞還是名詞動詞。
相關文章
- JavaScript物件導向名詞詳解JavaScript物件
- 第1節:英語中的名詞,冠詞和數詞,代詞
- 區塊鏈名詞術語彙總區塊鏈
- 數學名詞
- JavaScript 裡 window, document, screen, body 這幾個名詞的區別JavaScript
- 遊戲名詞設計的平衡遊戲
- 分清英語名詞的可數和不可數
- 業務名詞
- 02-名詞
- 詞語詞頻統計
- 區塊鏈相關名詞解釋(一)區塊鏈
- 自然語言處理工具pyhanlp分詞與詞性標註自然語言處理HanLP分詞詞性標註
- 吃人的那些 Java 名詞:物件、引用、堆、棧Java物件
- 常見名詞的用法與比較【***】 02天
- 英語學習詳細筆記(十一)動名詞筆記
- 精通Python自然語言處理 4 :詞性標註--單詞識別Python自然語言處理詞性標註
- 區塊鏈專案程式碼基礎名詞解釋?區塊鏈
- Java中名詞的解釋Java
- 企業品牌詞與公司品牌詞推廣中的兩大誤區BJZ
- 區塊鏈交易系統中常見的專業名詞區塊鏈
- Atitit. . 軟體名稱空間與類名命名單詞的統計程式設計v2程式設計
- Pyhanlp自然語言處理中的新詞識別HanLP自然語言處理
- 計組常見名詞縮寫
- Oracle常用名詞解釋Oracle
- yocto-名詞介紹
- 機器學習名詞機器學習
- 技術名詞解釋
- 區塊鏈領域的48個名詞,你知道幾個?區塊鏈
- 前端音視訊的那些名詞前端
- 瞭解 JavaScript 函數語言程式設計-型別簽名JavaScript函數程式設計型別
- 動詞過去式過去分詞分詞
- 古詩詞 中文 分詞 自動化分詞
- 《GraphQL 名詞 101:解析 GraphQL 的查詢語法》【譯】
- 事件關鍵詞 bind 和 catch 的區別、事件物件 target 和 currentTarget 的差異事件物件
- 引言:分詞與語法解析分詞
- 區塊鏈數字貨幣挖礦專業名詞解釋,讓你告別礦圈小白!區塊鏈
- 日語動詞ない形
- C語言英文單詞C語言