物件導向與函數語言程式設計的區別: 動詞-名詞與名詞-動詞的區別 - 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物件
- 翻譯的誤區(一):不知道把名詞轉換為動詞
- joins型別名詞型別
- 區塊鏈名詞術語彙總區塊鏈
- 程式設計常用動詞細微差別程式設計
- 遊戲名詞設計的平衡遊戲
- JavaScript 裡 window, document, screen, body 這幾個名詞的區別JavaScript
- 英語語法(1) 名詞
- 廣告名詞解析
- 各種數學名詞的英語翻譯
- Oracle 名詞術語 派生表Oracle
- 區塊鏈相關名詞解釋(一)區塊鏈
- 自然語言處理工具pyhanlp分詞與詞性標註自然語言處理HanLP分詞詞性標註
- 吃人的那些 Java 名詞:物件、引用、堆、棧Java物件
- 英語學習詳細筆記(十一)動名詞筆記
- Java中名詞的解釋Java
- 區塊鏈專案程式碼基礎名詞解釋?區塊鏈
- 區塊鏈交易系統中常見的專業名詞區塊鏈
- 精通Python自然語言處理 4 :詞性標註--單詞識別Python自然語言處理詞性標註
- 一些與linux相關的名詞(轉)Linux
- Atitit. . 軟體名稱空間與類名命名單詞的統計程式設計v2程式設計
- Oracle常用名詞解釋Oracle
- 技術名詞解釋
- iOS開發API常用英語名詞iOSAPI
- Pyhanlp自然語言處理中的新詞識別HanLP自然語言處理
- 前端音視訊的那些名詞前端
- linux幾個名詞的意思Linux
- 區塊鏈領域的48個名詞,你知道幾個?區塊鏈
- 程式設計師眼中的英語單詞程式設計師
- Windows Azure 名詞定義(Glossary)Windows
- oracle中常用名詞解釋Oracle
- 專案管理名詞解釋專案管理
- 處理器Cortex的名詞解釋
- 統計知識:頻數表(百度名詞)
- 引言:分詞與語法解析分詞
- Linux驅動程式:統計單詞個數Linux
- 區塊鏈數字貨幣挖礦專業名詞解釋,讓你告別礦圈小白!區塊鏈
- 物件導向和麵向過程程式設計的區別?物件程式設計