GO語言基礎教程:序章
首先自我介紹一下我自己,我是一個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語言基礎教程:序章的更多相关文章
- GO語言基礎教程:數組,切片,map
這節課我們來講解數組,切片和map,或許您是從其他語言轉到GO語言這邊的,那麼在其他語言的影響下您可能會不太適應GO語言的數組,因為GO語言把數組給拆分成了array,slice和map,接下來的時間 ...
- GO語言基礎教程:流程控制
在開始一個新的章節之前先來回顧上一篇文章的部份,首先我們來看這段代碼: package main import ( "fmt" ) func main(){ var x,y int ...
- GO語言基礎教程:數據類型,變量,常量
GO類似PHP,每行的結尾要加分號來結束,不同點在於GO對此並不強制,這一點又像javascript,另外GO的語句塊是用一對大括號來包裹的,但是go要求左大括號必須要在語句的結尾處,不能在行首出現左 ...
- GO語言基礎教程:Hello world!
首先簡單地說一下GO語言的環境安裝,從 http://golang.org/dl/ 針對自己的操作系統選擇合適的安裝包,然後下載安裝即可,下載的時候注意別選錯了的操作系統,例如go1.3.1.darw ...
- GO語言視頻教程下載
需要的朋友可以加QQ群195112,在群共享內可以下載到.
- GO語言視頻教程
第1课:https://github.com/Unknwon/go-fundamental-programming/blob/master/lectures/lecture1.md Go开发环境搭建h ...
- RxSwift學習教程之基礎篇
前言 我們在 iOS 開發過程中,幾乎無時無刻都要面對異步事件的處理.例如,按鍵點擊.數據保存..音頻後臺播放.交互動畫展示.這些事件並不具備特定時序性,甚至它們可能同時發生. 雖然 Apple 提供 ...
- JavaScript基礎知識
JavaScript基礎知識 1.標籤組使用 <script charset='utf-8' //設置字元集 defet //使腳本延遲到文檔解析完成,Browser已忽略 language=' ...
- CSS1-3基礎知識
CSS1-3基礎知識 1.css排版 css在html內排版: <style type='text/css'> 標記名{} .類型名{} #ID名{} 標記名,.類型名,#ID名{} &l ...
随机推荐
- 【随笔】使用mOnOwall封禁某一个ip
有时候,查看服务器日志时会发现某些人的恶意登录记录: 这时候,我们就要把这个ip封掉. 首先ping一下这个ip: 然后打开monowall路由页面,点击Firewall-->Rules: 点击 ...
- 下载android 源码
http://source.android.com/source/downloading.html 1.下载repo 官网:curl http://commondatastorage.googleap ...
- js学习-自定义函数、对象的字面量、json对象学习小结
一.自定义对象的构造: var student=new Object(); //object是顶级对象,使用构造函数的方法创建一个对象,此处的意思是创建了一个学生的空对象 student.name=& ...
- linux里添加locate命令
在linux里使用和find一样的功能 例如 find -name xx 可以yum install mlocate 然后 updatedb 再使用locate xx 来查找xx文件
- GitLab的Gravatar头像服务不可用
由于www.gravatar.com在国内不可正常使用,导致我们搭建的GitLab在网页上会阻塞大量时间,并最终无法显示头像.我们可以将其替换成"多说"的头像服务.我使用的是CE ...
- 用SQL语句,删除掉重复项只保留一条
用SQL语句,删除掉重复项只保留一条 在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select ...
- 银行IT入门深似海
最初就是接触各种系统,了解各大系统的功能 像建行 从终端到后台就经历10多个系统 另外,就是各种标准规范 例如报文规范 搞终端我师父让我看8583规范 还有什么银联的规范 PBOC什么的 我现在还 ...
- ASP.NET Web API 2 中的特性路由
ASP.NET MVC 5.1 开始已经支持基于特性的路由(http://attributerouting.net),ASP.NET WEB API 2 同时也支持了这一特性. 启用特性路 由只需要在 ...
- Kali Linux Web 渗透测试视频教程— 第二课 google hack 实战
Kali Linux Web 渗透测试— 第二课 代理简介 文/玄魂 课程地址: http://edu.51cto.com/course/course_id-1887.html 目录 shellKal ...
- SpringMVC关于json、xml自动转换的原理研究[附带源码分析]
目录 前言 现象 源码分析 实例讲解 关于配置 总结 参考资料 前言 SpringMVC是目前主流的Web MVC框架之一. 如果有同学对它不熟悉,那么请参考它的入门blog:http://www.c ...