如何選擇正確的Web編程語言?
網(wǎng)友解答: 目前流行的Web編程語言有Java、PHP、Python、C#等,當(dāng)然做Web開發(fā)也離不開Html、CSS和JavaScript,選擇編程語言主要取決于開發(fā)場(chǎng)景、開發(fā)周期、團(tuán)
目前流行的Web編程語言有Java、PHP、Python、C#等,當(dāng)然做Web開發(fā)也離不開Html、CSS和JavaScript,選擇編程語言主要取決于開發(fā)場(chǎng)景、開發(fā)周期、團(tuán)隊(duì)技術(shù)組成、流行趨勢(shì)等因素。
曾經(jīng)有人做過一個(gè)形象的比喻,PHP就像小區(qū)附近的便利店,Java就像沃爾瑪,C#就像百貨商場(chǎng),而Python則是網(wǎng)上購(gòu)物,下面對(duì)這幾種Web編程語言做一個(gè)描述。
PHP是目前在Web開發(fā)領(lǐng)域應(yīng)用最為廣泛的編程語言之一,從目前占據(jù)的開發(fā)市場(chǎng)份額來看,PHP要領(lǐng)先于Java和Python。PHP的特點(diǎn)是語法簡(jiǎn)單靈活、天然熱部署、Web開發(fā)生態(tài)健全、有大量的成熟方案,采用PHP開發(fā)Web應(yīng)用在開發(fā)周期上也有一定的優(yōu)勢(shì)。目前PHP比較適合于中小型網(wǎng)站的開發(fā),方便快捷。
Java Web開發(fā)是Java語言主要的應(yīng)用場(chǎng)景之一,Java語言最大的優(yōu)勢(shì)在于穩(wěn)定的性能、豐富的組件和清晰的邏輯。Java語言在處理并發(fā)訪問上的優(yōu)勢(shì),使得大型商業(yè)互聯(lián)網(wǎng)平臺(tái)往往更傾向于采用Java語言開發(fā)。另外,在大數(shù)據(jù)領(lǐng)域的應(yīng)用也使得Java在未來的應(yīng)用前景還是不錯(cuò)的。雖然Java具有性能上的優(yōu)勢(shì),但是Java語言自身也偏重,在開發(fā)周期上與PHP和Python對(duì)比來說還是偏長(zhǎng)。
Python語言也是傳統(tǒng)的Web開發(fā)語言之一,Python的特點(diǎn)就是簡(jiǎn)單,Python語言可以使用很多現(xiàn)成的庫,采用Python開發(fā)Web應(yīng)用往往有較短的開發(fā)周期。但是Python開發(fā)Web應(yīng)用的性能還是存在一定的問題,這也是Python語言固有的問題,但是對(duì)于中小型應(yīng)用來說,Python是一個(gè)不錯(cuò)的選擇。
C#也是Web開發(fā)的重要方案之一,C#語言在開發(fā)Web方面最大的特點(diǎn)就是有成熟的方案可以套用,C#是廣大外包公司比較喜歡的語言,因?yàn)椴捎肅#開發(fā)會(huì)降低開發(fā)風(fēng)險(xiǎn)。
我從事Web開發(fā)工作多年,目前也在帶開發(fā)團(tuán)隊(duì),我在酷米上寫了關(guān)于Java和Python的系列文章,感興趣的朋友可以關(guān)注我,相信一定會(huì)有所收獲。
如果有Web開發(fā)方面的問題,也可以咨詢我,謝謝!
網(wǎng)友解答:正在用nodejs做我的第一個(gè)webapp,我來談一下學(xué)習(xí)中的體驗(yàn)。
其實(shí)在網(wǎng)上有很多教程,我就在b站上面看了許多的教程,看多了這些老師講的課以后,就會(huì)慢慢發(fā)現(xiàn),明明是同樣一個(gè)知識(shí)點(diǎn),有的老師可以在一句話之內(nèi)給你講清楚,講明白,講完就能上手寫,而有的老師講了好幾節(jié)課,舉了好多例子,你用起來還是模模糊糊,直到踩了很多坑以后才撥云見日。
所以基于這樣的事實(shí),如何選擇一個(gè)講得好的老師,或者說一本好的入門書籍顯得額外重要,很多人樂意去相信大部分人都在走的路,比如所謂的要想學(xué)好編程,必須有數(shù)據(jù)結(jié)構(gòu)和C語言還有操作系統(tǒng)基礎(chǔ),其實(shí)我用nodejs和react做應(yīng)用,一直到現(xiàn)在,也沒有用到多少那些知識(shí),倒是對(duì)數(shù)據(jù)庫這一塊有點(diǎn)感興趣,專門去學(xué)習(xí)了數(shù)據(jù)庫原理和練習(xí)一些復(fù)雜的SQL實(shí)現(xiàn),網(wǎng)上有很多耍算法題的,我覺得這個(gè)也顯得奇怪,對(duì)于一個(gè)復(fù)雜的系統(tǒng),最大的問題顯然不是查詢數(shù)據(jù)的性能和怎么搞多線程(事實(shí)上nodejs只有一個(gè)線程,但是它的高并發(fā)處理能力是業(yè)內(nèi)有目共睹的),而是在整體的從業(yè)務(wù)邏輯上去改善一個(gè)系統(tǒng)的可行性,特別是互聯(lián)網(wǎng)企業(yè),不同于傳統(tǒng)的企業(yè),互聯(lián)網(wǎng)企業(yè)競(jìng)爭(zhēng)激烈,創(chuàng)業(yè)者層出不窮,也許今天才買了幾個(gè)服務(wù)器,明天就倒閉了,那么快速的迭代,增加功能獲取用戶要比一昧地死守安全和穩(wěn)定要明智地多,我用過好多的軟件,里面循環(huán)著嵌套了無窮無盡的混亂無章的邏輯,這樣的問題并不是開發(fā)人員想看到的,也不是用戶希望的,那這是為什么呢?因?yàn)槊恳淮喂δ艿奶砑雍偷?,都是?duì)原有系統(tǒng)的強(qiáng)拆,自然而然混亂不堪,以至于最后根本無法再做任何更改,那如何合理地將代碼的耦合度和系統(tǒng)的可擴(kuò)展性結(jié)合起來,才是軟件工程最值得研究的問題,所以我專門去學(xué)習(xí)如何設(shè)計(jì)數(shù)據(jù)庫,而對(duì)于數(shù)據(jù)結(jié)構(gòu)和算法這種拼腦容量的東西沒有太大的興趣。
解決一個(gè)問題雖然是復(fù)雜的,有挑戰(zhàn)性的,但是可怕的是為了解決一個(gè)復(fù)雜的問題,引入更多的繁瑣的問題,這就不是能否解決的問題,因?yàn)槠鋷淼膹?fù)雜度是難以用數(shù)量級(jí)來描述的,做完一道算法題,十天以后,一百天以后,還可以看得懂,但是,做完一個(gè)項(xiàng)目,一個(gè)月以上基本上就是天書了,架構(gòu)能力顯然比算法要重要,這需要全局觀。