第201章 心生后悔的郑明

關燈
    因為鄭明是一名優秀的程序員,秦奕先帶着他來到李勇軍這邊,讓他了解“乾坤”語言和“方寸”編輯器。

     鄭明看了一會兒乾坤的示例代碼,雖然關鍵字不一樣,但他還是通過程序結構,立刻意識到這門叫“乾坤”的語言是從C語言衍生出來的。

     它有着和C語言類似的基礎語法元素、控制結構、函數定義與調用等。

     不過,它沒有C語言裡強大卻相對複雜且容易出錯、讓人又愛又恨的指針運算符,也沒有C語言頭文件和實現文件分離的設計。

     變量的作用域管理也大不相同。

     在C語言中,一個文件内的全局變量默認是項目全局變量;而在“乾坤”裡,同樣的聲明方式得到的是一個單文件全局變量,也就是說項目的每一個文件都自帶命名空間。

     頭文件和作用域的這種改動是否合理,見仁見智。

     不過鄭明最疑惑的是這門語言關于指針的改動:“你們這語言沒有指針相關操作的話,怎麼讓函數的修改傳遞出來給調用方?” 李勇軍解釋道:“實際上,在‘乾坤’這門語言裡,函數對變量的所有修改都能傳遞出來。

    ” “在這門語言裡面,變量實際上是對象的引用,這和指針有相似之處,它們都指向内存中的某個位置。

    ” “當把一個對象賦值給一個變量時,變量存儲的是對象在内存中的引用,而不是對象本身的值。

    ” “函數參數傳遞也是基于引用的,當将對象作為參數傳遞給函數時,實際上傳遞的是對象的引用,函數内部對該對象的修改會影響到原始對象。

    ” 鄭明聽到這話,十分震驚:“你這意思是,其實你們這函數裡面是沒有值傳遞的!” 李勇軍點了點頭:“是的。

    ” 鄭明思考了一下:“那這樣子很可能會導緻一些不想傳遞的修改被傳遞出來。

    ” 李勇軍說道:“這是自然的,設計本身就是一種權衡。

    ” “我認為隻有引用傳遞帶來的好處遠大于它帶來的壞處,而且在較大規模的軟件工程當中,大部分變量都包含衆多成員變量,更經常出現的情況其實是不小心用了值傳遞帶來的一些問題。

    ” “了解。

    ”鄭明若有所思地點了點頭,然後總結道,“我理解現在‘乾坤’語言相對C語言改進的地方有這幾塊。

    ” “第一個是剛才讨論的指針能力的改動。

    第二個是内置了像是字典、可變數組、類這樣的高級數據結構,還有不少像是求和、最大值、最小值這種默認函數。

    第三個是用縮進來表示代碼塊,避免了大括号帶來的視覺幹擾。

    不知道還有沒有什麼疏漏呢?” 他把這幾塊内容稱之為相對于C語言的改動,是因為他十分相信這些改動能夠較大地提升程序員的開發效率。

     聽到鄭明看一個示例工程就能這麼快分析出“乾坤”和C語言相比幾處關鍵的改動,李勇軍意識到眼前這人是一個編程水平極佳的程序員,他給秦奕使了一個眼色,秦奕卻有些好笑地搖了搖頭