go語言的設計的一點粗淺看法

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

    Go是Google開發的一種編譯型,並髮型,並具有記憶體回收功能的程式設計語言。羅伯特·格瑞史莫(Robert Griesemer),羅勃·派克(Rob Pike)及肯·湯普遜於2007年9月開始設計Go語言,[1],稍後Ian Lance Taylor, Russ Cox加入專案中。

    Go語言這個出自大公司Google的大牛的作品, 為什麼沒有象出自Microsoft的anders hejlsberg的C#這麼吸引人併流行起來呢?其實Go語言的設計者也是有名的大牛,但為什麼三個臭皮匠,竟然抵不過一個諸葛亮呢.本人以初學者第一次接觸Go語言來說說粗淺的看法.    

package main import "fmt" func main() {        fmt.Println("Hello, World")}

看上面這個Hello world.首先這就有問題.Go號稱是最接近C但目標是取代C的.但這個名家之手的東西,以本人初學者來看就有兩大問題.

1.沒有標點符號,文法很接近C,但沒有符號,這就象我們寫文章,讀慣了帶逗號句號的,突然有個東西號出來的都沒有,會很不習慣.這代碼乍一看還以為蹩腳C入門者寫Hello world.給寫錯了.

2.fmt是什麼庫?看名字是看不出來的,想不到大牛對於命名也和初學者一樣,初學者學一門語言,一般肯定先從Hello world.入手,從控制台輸出入手.這給初入門學習者開了個壞頭.

以Wiki例子

package main import (        "os"        "flag" // command line option parser) var omitNewline = flag.Bool("n", false, "don't print final newline") const (        Space   = " "        Newline = "\n") func main() {        flag.Parse() // Scans the arg list and sets up flags        var s string = ""        for i := 0; i < flag.NArg(); i++ {                if i > 0 {                        s += Space                }                s += flag.Arg(i)        }        if !*omitNewline {                s += Newline        }        os.Stdout.WriteString(s)}

    先以初學者的感覺來看,首先,所謂初學者,在當代其實大多數都知道點C, C++或別的什麼,因為學校裡就有這課程.然後再來年上面這堆代碼.直覺告訴我,這很象一個C或C++或什麼的初學者寫出的,不注重文法,錯誤百出的代碼.因為一般初學者喜歡兩件事,一是忘記文法的哪些地方要括弧哪些地方不加.還有就是標點符號.

    當然這也許就是設計者大牛們考慮到的因素,乾脆就不需要了.但問題來了,如果你寫慣C類代碼,再來寫它或看它會感覺不太適應,然後再切回C類也一樣.糾結於標點符號.這一點上,Python也是一樣的,但Python通過空格強制,起碼讓你不會認為在寫C類程式.

  var s string = "" 這樣的變數定義, 不太理解為什麼要這麼做,從初學者的角度就是不容易理解.當然對於直接沒接觸過任何程式設計語言的人除外.

for i := 0 同樣變數定義和指派陳述式,這個:=是怎麼回事?為什麼和上面的變數定義不一樣?從初學者的角度就是不容易理解.當然對於直接沒接觸過任何程式設計語言的人除外.

 從文法層面,未經仔細考慮使用者感受的設計,讓使用者產生淩亂的感覺.這讓人想到了windows8的Start鍵.或許這是一種更優秀的設計,但一開始的確不順手.

當然,Go提供了一些新的理念,比如以組合為範式,簡單的說,只要是方法簽名相同,就可以當成介面,這倒是一個不錯的想法,動態語言就是這麼乾的.C#的delegate和interface也是這麼乾的.但不同.GO做這些都是隱式的.(也許這裡表達的不準確,因為沒有仔細看過go語言)

以本人的初淺觀點來看,Go語言未能仔細設計語言的表達,一開始就犯下很多初學者的錯誤,功能再強,讓Hello world這樣的程式就阻擋了人的學習慾望.也許將來有那麼一天,Go大放異彩,讓人克服入門的小問題而去使用它.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.