編程應(yīng)該是很多非計(jì)算機(jī)專(zhuān)業(yè)入門(mén)的必學(xué)科目,編程就像我們小時(shí)候的牙牙學(xué)語(yǔ),只有學(xué)會(huì)快樂(lè)說(shuō)話,才能去學(xué)習(xí)語(yǔ)文等科目。而語(yǔ)文就像計(jì)算機(jī)專(zhuān)業(yè)的人工智能,還沒(méi)有學(xué)會(huì)說(shuō)話,就想學(xué)語(yǔ)文是不可能的,同樣的還沒(méi)有掌握計(jì)算機(jī)語(yǔ)言,你還沒(méi)有弄懂電腦給你的對(duì)話,怎么能學(xué)會(huì)人工智能呢?
成都創(chuàng)新互聯(lián)公司是一家專(zhuān)注于網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)與策劃設(shè)計(jì),崆峒網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專(zhuān)注于網(wǎng)站建設(shè)10多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專(zhuān)業(yè)建站公司;建站業(yè)務(wù)涵蓋:崆峒等地區(qū)。崆峒做網(wǎng)站價(jià)格咨詢:18980820575
一、編程語(yǔ)言有很多,我們?cè)撊绾芜x擇一門(mén)先學(xué)習(xí)呢?
綜合出爐的編程語(yǔ)言排行榜,我們可以具體分析一下:
通過(guò)榜單我們可以看出,編程霸主依然是java、C語(yǔ)言、C++、python等。
1、為什么java依舊能持續(xù)占據(jù)榜單榜首?
一方面是因?yàn)镴ava非常強(qiáng)大的適用性,而且入門(mén)學(xué)習(xí)Java也能很快上手,而在代碼邏輯方面,Java也做到了無(wú)懈可擊,清晰不混亂,而且因?yàn)樽陨頇C(jī)制原因,Java還很適合在移動(dòng)端領(lǐng)域深造,安卓和ijos都是經(jīng)過(guò)Java制作的,在領(lǐng)域方面Java是涉及的非常廣泛。
2、C/C++語(yǔ)言應(yīng)該是出現(xiàn)最早,但為什么排在榜單第二呢?
C 是比較老的編程語(yǔ)言之一,由于它的代碼運(yùn)行速度快而且簡(jiǎn)單,它到現(xiàn)在仍然一直被使用。它的學(xué)習(xí)難度比較大,但是,一旦你掌握了它,你就可以做任何語(yǔ)言能做的事情。你可能不會(huì)用它去做高級(jí)的網(wǎng)站或者軟件,但是,C 是嵌入式設(shè)備的首選編程語(yǔ)言。隨著物聯(lián)網(wǎng)的普及,C 將被再次廣泛的使用,對(duì)于 C++,它被廣泛用于一些大型軟件。
3、python編程語(yǔ)言上升速度最快,為什么越來(lái)越受程序員的青睞?
原因有幾個(gè):1、主要?dú)w因于 python對(duì)大數(shù)據(jù)的處理能力,性能表現(xiàn)優(yōu)良,語(yǔ)法相對(duì)簡(jiǎn)單,學(xué)習(xí)成本較低。2、人工智能及云計(jì)算的發(fā)展,國(guó)家推廣人工智能教育, python被一些學(xué)校作為教學(xué)語(yǔ)言。3、借人工智能的聲勢(shì),宣傳 python的各種優(yōu)勢(shì),所以,迅速在大眾中傳插。就如區(qū)塊鏈技術(shù)。
二、針對(duì)以上的數(shù)據(jù)分析,對(duì)于非計(jì)算機(jī)專(zhuān)業(yè)入門(mén)計(jì)算機(jī)行業(yè)來(lái)說(shuō),選擇哪種編程語(yǔ)言,可以從以下幾個(gè)方面入手:
考慮一下自己的興趣點(diǎn)和以后的就業(yè)方向。比如說(shuō):以后想從事人工智能方向,可以選擇學(xué)習(xí)python;如果以后想進(jìn)入大數(shù)據(jù)領(lǐng)域,可以學(xué)習(xí)java或者python;如果想進(jìn)入物聯(lián)網(wǎng)領(lǐng)域,可以選擇學(xué)習(xí)C語(yǔ)言……
你在編譯器里面Build一下,然后去\bin\Debug目錄下找.exeexe就是可執(zhí)行文件了。運(yùn)行的時(shí)候可能需要用到Debug目錄下的其他文件(如配置文件、DLL等),所以需要把Debug下的所有文件都放到一起。
Linux 是不需要安裝的,直接用 chmod -x 文件名 將它的屬性修改為可運(yùn)行,然后就可以通過(guò)命令行執(zhí)行它了,后綴名你改為 .sh ,這是 shell 默認(rèn)支持的文件類(lèi)型
對(duì)比于其他語(yǔ)言的程序,Go語(yǔ)言的跨平臺(tái)能力是真的強(qiáng),拿.Net和JAVA來(lái)說(shuō)吧,.Net在.Net core出現(xiàn)之前是不能跨平臺(tái)的,只能在windows上編譯運(yùn)行,即使是.net core出現(xiàn)以后,跨平臺(tái)的程序也是相當(dāng)?shù)穆闊?。而java雖然一直都可以跨平臺(tái),但是運(yùn)行JAVA程序的機(jī)器上也必須要有JAVA程序運(yùn)行環(huán)境JRE。而相對(duì)于Go程序,跨平臺(tái)就簡(jiǎn)單的多了,只需要在編譯指定目標(biāo)程序運(yùn)行的架構(gòu)和環(huán)境即可編譯出指定操作系統(tǒng)和架構(gòu)的程序。
以上是指定了go的環(huán)境變量后執(zhí)行的go build命令進(jìn)行目標(biāo)程序的構(gòu)建,這種方式會(huì)一直生效的,如果不讓他一直生效,可以在構(gòu)建的時(shí)候臨時(shí)指定環(huán)境變量,下面以window的環(huán)境為例,來(lái)介紹臨時(shí)指定環(huán)境變量的方式構(gòu)建可以在Linux環(huán)境下運(yùn)行的可執(zhí)行程序:
可以根據(jù)不同的架構(gòu)和操作系統(tǒng)將其編寫(xiě)為不同的.bat的可執(zhí)行文件放置在程序的根目錄,Linux的和MAC的也一樣編寫(xiě)成腳本文件放置在程序的根目錄,這樣在構(gòu)建的時(shí)候就不用再敲命令了,直接運(yùn)行腳本就可以了。
Java程序編譯打包后為war包或者是java包,必須執(zhí)行java -jar 命令或者將其放置到tomcat的指定目錄下,運(yùn)行tomcat程序。而Go語(yǔ)言編寫(xiě)的程序最終為可執(zhí)行的文件(window下編譯出的是.exe的可執(zhí)行文件),只需要將其賦予可執(zhí)行的權(quán)限就可以直接運(yùn)行了。
構(gòu)建JAVA程序的鏡像需要指定java的基礎(chǔ)鏡像,否則就需要在鏡像中安裝java的運(yùn)行環(huán)境了,下面展示的是構(gòu)建的一個(gè)JAVA程序的鏡像,構(gòu)建出來(lái)鏡像的體積相對(duì)比較大
而Go程序制作出的鏡像就不需要安裝任何的依賴環(huán)境,因?yàn)樗诖虬臅r(shí)候就已經(jīng)將依賴的包一塊打包到一起了
拿著這個(gè)鏡像就可以到處運(yùn)行了。
通過(guò)對(duì)比我們可以發(fā)現(xiàn),如果沒(méi)有之前的技術(shù)和業(yè)務(wù)的積累,重新開(kāi)發(fā)一個(gè)新的項(xiàng)目,使用go去開(kāi)發(fā)無(wú)疑是最容易上手的,所以現(xiàn)在很多公司都使用go進(jìn)行開(kāi)發(fā),也逐漸將其他語(yǔ)言的項(xiàng)目逐步的用go語(yǔ)言進(jìn)行改造。其實(shí)用什么語(yǔ)言不重要,合適的才重要,開(kāi)發(fā)項(xiàng)目在選擇語(yǔ)言的時(shí)候也會(huì)綜合多方面來(lái)考慮選擇合適的語(yǔ)言和架構(gòu),畢竟很多公司都不是搞研究的,都需要項(xiàng)目來(lái)賺錢(qián),所以開(kāi)發(fā)的速度、客戶的滿意度、項(xiàng)目交付的時(shí)間才是驅(qū)動(dòng)公司技術(shù)的主要因素。
我們個(gè)人也應(yīng)該不斷完善自己的技術(shù)棧,不應(yīng)該太依靠某種語(yǔ)言,最重要的還是自己的架構(gòu)思想和底層架構(gòu)知識(shí),只有掌握了這些才能夠不被 社會(huì) 和公司“優(yōu)化”。
確切的說(shuō),沒(méi)有。
就連匯編語(yǔ)言都需要調(diào)用庫(kù)函數(shù)。
因?yàn)榫幾g好的程序要同操作系統(tǒng)打交道,必然要用到庫(kù)。
c語(yǔ)言有c語(yǔ)言的庫(kù),c++有c++的庫(kù)。
庫(kù)函數(shù)為你提供必要的編程接口,也就是API之類(lèi)。
你想表達(dá)的也許是靜態(tài)鏈接到庫(kù),那樣,表面看來(lái)是可以脫離許多庫(kù)的模塊來(lái)運(yùn)行的;
但本質(zhì)上是把某些庫(kù)整個(gè)編譯到你的程序中而已,程序也會(huì)因此膨大許多。
1、下載go的zip文件。并且一定要把文件解壓到c:\go目錄下。
2、配置windows的高級(jí)環(huán)境變量。包括:GOROOT、GOOS、GOBIN、GOARCH。并且在path變量里面把c:\go\bin加入。以便可以在命令行直接運(yùn)行g(shù)o命令。
舉例:我的機(jī)器:
GOPATH= c:\go;c:\go\src;F:\workspace\goSample01;
GOBIN=c:\go\bin;F:\workspace\goSample01\bin;
其中,c:\go是go的安裝路徑;
F:\workspace\goSample01是我寫(xiě)的go語(yǔ)言項(xiàng)目的工程目錄;
F:\workspace\goSample01\bin是go語(yǔ)言項(xiàng)目的工程目錄下的可執(zhí)行文件路徑;
3、在完成環(huán)境變量配置后,打開(kāi)一個(gè)命令行窗口,直接輸入go,然后回車(chē),看看是否出現(xiàn)go的幫助信息。如果出現(xiàn),那么go的基本環(huán)境就OK了。
注意:這個(gè)基本環(huán)境不包含開(kāi)發(fā)工具,也不能直接編譯帶C代碼的go程序。
4、(可選)為了支持Import遠(yuǎn)程包,最好裝個(gè)gomingw。下載地址:。如果下的是壓縮包,請(qǐng)把它解壓到C盤(pán)。例如,C:\gowin-env。里面有個(gè)Console.bat是以后使用go get的環(huán)境。舉例:有個(gè)文件a.go,里面import(
"fmt"
"github.com/astaxie/beedb"
_ "github.com/ziutek/mymysql/godrv"
為了編譯該a.go文件,需要啟動(dòng)Console.bat,然后在該命令行窗口,進(jìn)入c:\go\src目錄下,執(zhí)行g(shù)o getgithub.com/astaxie/beedb
Go get github.com/ziutek/mymysql/godrv .
Go會(huì)自動(dòng)下載該遠(yuǎn)程包并編譯和安裝這些包。
配置goclipse(可選)
(如果不喜歡eclipse開(kāi)發(fā)工具,請(qǐng)?zhí)^(guò)這個(gè)配置。)
1、下載并安裝goclipse插件。Goclipse是go語(yǔ)言for eclipse的插件,下載地址:
2、啟動(dòng)eclipse并創(chuàng)建go項(xiàng)目。然后寫(xiě)個(gè)最簡(jiǎn)單的helloworld.go文件,并運(yùn)行。代碼如下:
packagemainimport"fmt"func main(){ fmt.Printf("hello, world")}
配置gocode(可選)
如果不需要go語(yǔ)法輔助和eclipse里面的(按ALT+/)彈出go語(yǔ)言自動(dòng)輔助功能,請(qǐng)?zhí)^(guò)這個(gè)配置。
1、下載gocode的zip文件,解壓后放在go的bin目錄下。
2、下載并安裝Git軟件。并且在path里面配置git的執(zhí)行路徑。例如c:\git\bin
3、在命令行執(zhí)行:go build .\gocode。如果一切正常,那么將會(huì)編譯生成一個(gè)gocode.exe文件在go的bin目錄下。如果編譯失敗,那么就轉(zhuǎn)第4步。
4、如果第3步直接編譯gocode源文件成功,那就直接到第5步。否則,就需要通過(guò)git下載gocode源文件,然后再編譯。在命令行執(zhí)行:go get -u github.com/nsf/gocode 。就會(huì)生成gocode.exe文件。
5、在goclipse插件里面指定gocode的路徑。就可以在elcipse里面調(diào)用gocode來(lái)幫助寫(xiě)編碼了。
從開(kāi)發(fā)工具這塊看,go語(yǔ)言還不夠成熟,開(kāi)發(fā)工具都還不完善,有待改進(jìn)。
下載go-tour教程源代碼(可選)
Google有個(gè)在線運(yùn)行g(shù)o語(yǔ)言的教程(),很不錯(cuò)。支持在web上直接運(yùn)行大部分的go程序,想了解這個(gè)教程的源代碼的朋友可以通過(guò)以下方式獲取。如果沒(méi)興趣,可以跳過(guò)這個(gè)步驟。
1、下載安裝Mercurial軟件。
2、在命令行下輸入:
hg clone
這個(gè)URL是我從google的go-tour源代碼的一個(gè)clone。作為測(cè)試用的。如果把http改成https協(xié)議,下載就會(huì)失敗。搞不懂。
編譯帶調(diào)用C代碼的go文件(可選)
1、為了在windows下編譯帶C代碼的go程序,你首先需要下載并安裝MinGW或者Cygwin。
2、首選安裝MinGW。在安裝MinGW之后,記得要把MinGW安裝目錄\bin路徑設(shè)置在path環(huán)境變量里面,以便能在dos窗口下直接調(diào)用gcc。
3、下載一個(gè)gowin-env。下載地址:gowin-env。下載后解壓到某個(gè)目錄下,例如:C:\gowin-env. 然后,編輯go-env.bat。配置相關(guān)的go參數(shù)。例如,我的配置是:
set GOARCH=386
set GOOS=windows
set GOROOT=c:\go
set GOBIN=%GOROOT%\bin
set GOPATH=%GOROOT%;F:\workspace\goSample01;
設(shè)置好go-env.bat后,就可以點(diǎn)擊Console.bat來(lái)啟動(dòng)編譯和運(yùn)行窗口。
4、編寫(xiě)一個(gè)帶C代碼的go程序。例如,testc.go
5、編譯
例如:
go build -compiler gccgo test_c.go
運(yùn)行調(diào)用C代碼的go文件(可選)
1、testc.go.
創(chuàng)建rand目錄,然后在rand里面創(chuàng)建testc.go. 代碼如下:
package rand
/*
//
#include stdio.h
*/
import "C"
func PrintHello() {
C.puts(C.CString("Hello, world\n"))
}
2、a.go
在rand下創(chuàng)建a.go.代碼如下:
package rand
import "fmt"
func SayHello(name string){
fmt.Println(name)
}
3、test_import.go
在rand的上一級(jí)創(chuàng)建test_import.go。代碼如下:
package main
import "./rand"
func main(){
rand.SayHello("tom")
rand.PrintHello()
}
4、運(yùn)行test_import.go
go run test_import.go
在測(cè)試其它幾個(gè)C代碼的時(shí)候,發(fā)現(xiàn)windows版本的cgo還有些編譯問(wèn)題,同樣的代碼轉(zhuǎn)移到蘋(píng)果的XCODE下就沒(méi)有問(wèn)題。后來(lái)終于發(fā)現(xiàn)原因了,原來(lái)有些例子是unix平臺(tái)下的,而在windows平臺(tái)下,方法名和參數(shù)需要做調(diào)整。
例如:下面代碼在windows下編譯報(bào)一堆錯(cuò)誤。
package rand
/*
#include stdlib.h
*/
import "C"
func Random() int {
return int(C.random())
}
func Seed(i int) {
C.srandom(C.uint(i))
}
這里需要把return int(C.random()) 修改為“return int(C.rand())”
C.srandom(C.uint(i))修改為“C.srand(C.uint(i))”編譯就OK了。