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 ...
随机推荐
- fail2ban 原理 安装 使用
cd fail2ban python setup.py install /etc/fail2ban/ 为配置文件目录; /usr/lib/pythonx.x/site-packages/fail2ba ...
- 如何进行正确的SQL性能优化
在SQL查询中,为了提高查询的效率,我们常常采取一些措施对查询语句进行SQL性能优化.本文我们总结了一些优化措施,接下来我们就一一介绍. 1.查询的模糊匹配 尽量避免在一个复杂查询里面使用 LIKE ...
- BZOJ 4247: 挂饰 题解
Description JOI君有N个装在手机上的挂饰,编号为1...N. JOI君可以将其中的一些装在手机上. JOI君的挂饰有一些与众不同--其中的一些挂饰附有可以挂其他挂件的挂钩.每个挂件要么直 ...
- PHP ftp使用
本文章来总结几个利用php中的ftp功能来实现通过FTP上传文件,有需要学习的朋友可参考参考.ftp_get() 函数从 FTP 服务器上下载一个文件.若成功则返回 true,失败则返回 false. ...
- MYSQL基础--学习笔记
最近一段时间,系统的学习了下mysql相关知识,当然都是比较基础的,现在贴出来,以供参考备忘--帅帅的小猪猪 创建用户:CREATE USER 'sampadm'@'localhost' IDENTI ...
- 【动态规划】bzoj1664 [Usaco2006 Open]County Fair Events 参加节日庆祝
将区间按左端点排序. f(i)=max{f(j)+1}(p[j].x+p[j].y<=p[i].x && j<i) #include<cstdio> #incl ...
- [SmartFoxServer入门]服务器安装
安装SFS2X: SFS2X平台安装操作和步骤都很简单.我们建议先查看对系统的要求,然后根据你选择的操作系统按照指定的安装向导进行安装. 系统要求: SFS2X是一款支持所有主流操作系统,运行在JVM ...
- 【DLL测试】为DLL项目建立测试
本文将创建一个简单的动态链接库,并编写一个控制台应用程序使用该动态链接库,该动态链接库为“JAVA调用动态链接库DLL之JNative学习”中使用的DLL, 只是项目及文件名称不同. 创建动态链接库项 ...
- VS20xx IDE开发应用时_拷贝VS环境的库文件DLL到目标设备上运行的操作步骤
问题场景: 当用VSIDE开发完一个项目,在部署到目标环境中时,配置文件OK,但是报错需要调试 <1>Deploying Visual C++ library DLLs as shared ...
- java基础-反射之Class.forName
Class.forName 查阅javaAPI public static Class<?> forName(String className) throws ClassNotFoundE ...