首先自我介紹一下我自己,我是一個coder,目前主要從事B/S程序開發工作,懂點PHP;ASP;JSP;JS;VB;C;DELPHI;JAVA,另外知道幾個數據庫,除此之外別無所長,那麼我為何會選擇學習GO呢!接下來我對此詳細說明一下.

首先我來說明一下C/S程序和B/S程序的優缺點:

C/S程序主要是運行在客戶端的電腦上,通常採用安裝的形式,以windows操作系統為例,軟件會被編譯成二進制然後以exe或dll等方式存在於客戶端的電腦上,其執行效率是非常高的,當然了除非編程者把代碼寫的非常糟糕,除此之外C/S程序幾乎不需要考慮安全問題和負載問題,除此之外C/S程序開發出來的東西幾乎是不開源的,使用者只能被動接受卻不能更改軟件的功能(如果您會彙編的話那就另當別論了).能夠開發C/S程序的語言有很多,例如C;VB;DELPHI;C++;等等在此不一一列舉!

B/S程序主要是運行在服務器上,訪問者以瀏覽器為媒介輸入網址進行訪問,一個網站往往會在同一時間被成百上千人使用,另外開發B/S程序的語言往往都是腳本,這種腳本語言好處是開發速度快,後期維護簡單,但是相比較于C/S編譯成二進制再執行效率肯定是要降低幾個檔次的.再加上很多人同時使用,就造成了雪上加霜的狀況,但優點也是有的,那就是B/S程序幾乎都是開源的(除了極少數加密狀況外),使用者如果水平足夠的話是可以自己更改軟件功能的.那麼可以開發B/S的語言也有很多,例如:PHP;ASP;.NET;JSP等等

除了上邊我所說的幾種編程語言之外,其實還有幾種語言是蠻特殊的,就像VB,學會了他的子集就可以開發asp,類似的語言還有很多,例如c#;java;python;ruby;go等等,在此不再一一列舉,這些語言除了能用來開發C/S程序外還能用來開發B/S程序,那麼今天我們要討論的話題是GO語言,我為何不選擇java或c#之類的不在今天的討論範圍內.繼續接著剛才的話題,既然B/S負載量這麼大卻又使用腳本語言來開發,那麼效能肯定是要大打折扣的,那麼有沒有一種替代方法不但能把服務端的程序編譯成二進制,又能用來開發B/S程序呢?當然有,那就是GO語言.當然了有一些公司在這方面也做了很多的優化,例如facebook,他們用c重寫了PHP的核心,新的核心叫hiphop并對其開源了,有興趣的朋友可以看看,重寫之後的PHP效能確實有很大的提升,只可惜喪失了很多PHP的特性,另外上手有點複雜,給人曲高寡合的感覺,最終導致叫好不叫座,儘管facebook受益於此改寫之後網站打開速度確實是速度飛快!

我之所以選擇GO語言是因為以下狀況:

1.其效能非常高,號稱僅次於C語言的效能.

2.他與node.js類似,語言本身就是一個web server,不必再用apache;nginx;IIS之類的服務器軟件,這一點很好,可以減少效能損失.

3.學習GO語言非常簡單,對於一個新手來說可以在短時間內上手從事開發工作.

4.語言本身的結構非常簡潔,能省則省把一些不必要的東西都省略掉了

5.其強大的支持後盾,另外其先天對UTF-8的支援度讓我很喜歡.

6.他是開源的.至少不用像delphi似的中途就夭折了

7.很好的版本相容性,用低版本的go語言開發的程序能很好的在高版本的go環境中運行.

8.多線程,我一直期待PHP有這樣的功能,但是迄今為止只能藉助第三方來實現.

9.跨平臺,這個我就更不用說了,go語言不會讓你在windows下開發的軟件移植到linux就不能用了,這是一件超級扯淡的事情,但是目前市面上某些語言還存在這種超級扯淡的問題,用了他們的語言開發好了東西后要先購買服務器操作系統版權,然後購買數據庫版權,然後購買軟件版權,這不是折騰嗎!!

10.還有一些優點我就不再一一說明了

以上就是我選擇并學習go語言的原因.當然了go語言也有很多不足之處,這裡我就不再說明了,有興趣的朋友可以自己去搜一下,那麼從下一篇文章開始我們就從最基礎開始講解GO語言.

另外希望轉載文章的朋友能夠留一個文章出處,http://see7di.cnblogs.com 在此感激不盡!

剛成立了一個QQ群,有興趣討論GO語言的朋友可以加入:195112

GO語言基礎教程:序章的更多相关文章

  1. GO語言基礎教程:數組,切片,map

    這節課我們來講解數組,切片和map,或許您是從其他語言轉到GO語言這邊的,那麼在其他語言的影響下您可能會不太適應GO語言的數組,因為GO語言把數組給拆分成了array,slice和map,接下來的時間 ...

  2. GO語言基礎教程:流程控制

    在開始一個新的章節之前先來回顧上一篇文章的部份,首先我們來看這段代碼: package main import ( "fmt" ) func main(){ var x,y int ...

  3. GO語言基礎教程:數據類型,變量,常量

    GO類似PHP,每行的結尾要加分號來結束,不同點在於GO對此並不強制,這一點又像javascript,另外GO的語句塊是用一對大括號來包裹的,但是go要求左大括號必須要在語句的結尾處,不能在行首出現左 ...

  4. GO語言基礎教程:Hello world!

    首先簡單地說一下GO語言的環境安裝,從 http://golang.org/dl/ 針對自己的操作系統選擇合適的安裝包,然後下載安裝即可,下載的時候注意別選錯了的操作系統,例如go1.3.1.darw ...

  5. GO語言視頻教程下載

    需要的朋友可以加QQ群195112,在群共享內可以下載到.

  6. GO語言視頻教程

    第1课:https://github.com/Unknwon/go-fundamental-programming/blob/master/lectures/lecture1.md Go开发环境搭建h ...

  7. RxSwift學習教程之基礎篇

    前言 我們在 iOS 開發過程中,幾乎無時無刻都要面對異步事件的處理.例如,按鍵點擊.數據保存..音頻後臺播放.交互動畫展示.這些事件並不具備特定時序性,甚至它們可能同時發生. 雖然 Apple 提供 ...

  8. JavaScript基礎知識

    JavaScript基礎知識 1.標籤組使用 <script charset='utf-8' //設置字元集 defet //使腳本延遲到文檔解析完成,Browser已忽略 language=' ...

  9. CSS1-3基礎知識

    CSS1-3基礎知識 1.css排版 css在html內排版: <style type='text/css'> 標記名{} .類型名{} #ID名{} 標記名,.類型名,#ID名{} &l ...

随机推荐

  1. locutus(phpjs) 的使用

    今天来介绍一个js的框架,这个框架的主要功能呢,是通过加载该类库,来实现php函数的调用 当然了,这并不是说php中所有的函数都能在js中使用,但很大一部分是可以的. 环境:mac + node v5 ...

  2. Z - Fighting 和 Depth-bias

    Depth-bias操作在clipping之后进行实施,所以depth-bias对几何clipping没有影响. 另外需要注意的是:对一个给定体元(primitive),bias值是一个常量,在进行差 ...

  3. Ubuntu遇到Please ensure that adb is correctly located at '...adb.exe' and can be executed 问题解决方法

    上次我们在SDK更新的到最新的Android L版本之后,我发现我的ADT和android指定的版本不对应,我的ADT是22版本的,android L需要23版本以上的,版本不对应的话就无法加载这个S ...

  4. 一个自己用的代码备份工具,支持delphi,android,java,可以自己添加配置,灵活支持大部分编程语言

    下面就是这个软件的下载地址 http://files.cnblogs.com/files/stevenlaz/release.zip 绿色软件 MConfig.exe 进行安装,或者卸载 MBacku ...

  5. Linux如何学习

    一:如何提问 1. 尝试自己解决 帮助文档 示例 2. 提问的要求 问题要详细(能被别人看懂, 一个知识点) 报错信息(截图) 二:1.Linux区分大小写 2.所有内容以文件形式保存,包括硬件(一切 ...

  6. 由struts错误使用引发的漏洞,使用参数作为返回的文件路径或文件名,作为返回result 值

    该错误可以导致他人任意访问该路径下的任何文件. struts 文件 <?xml version="1.0" encoding="UTF-8" ?> ...

  7. Base64编码通过URL传值的问题

    base64 编码中使用了 +号,+号通过URL传递时会变成空格,因为编码的方式的问题前台使用:Ext.encode(title_text.getValue().replace(/\+/g, '%2B ...

  8. iframe空文档中写入内容

    往一个空的iframe中写入内容,再其document ready之前有可能遇到拿回 的body指针为空,因此以下面的函数往其document中写入html HRESULT WriteToHtmlDo ...

  9. css3之过渡

    transition属性 属性 描述 transition 设置4个过渡效果属性值 transition-property 设置过渡的属性名 transition-duration 设置过渡效果时间, ...

  10. hdu 1231

    最大连续子序列 Time Limit: 1000MS   Memory Limit: 32768KB   64bit IO Format: %I64d & %I64u Submit Statu ...