python - 從事php有一段時間了,感覺達到一定瓶頸,該學習哪種語言拓展下視野?

來源:互聯網
上載者:User

技能樹

php

  • 架構

    • yii/yii2
    • phalcon
    • yaf
    • thinkphp
    • 其他大大小小架構源碼都讀過很多
  • Composer
  • Redis/Memcached/Mongdb

Linux

  • lnmp環境搭建、最佳化
  • 負載平衡
  • mysql主從/redis主從
  • 伺服器營運

現在只是每天堅持看些linux方面的知識,感覺php學習達到了瓶頸,看一些優秀架構源碼大致的設計模式也都清楚,所以現在基本就是看了個大概就沒心思再跟代碼跟下去了,感覺能提升的東西已經很有限了,急需學習一門新語言來拓展下眼界。

眼下比較糾結是研究C or Java or Python

回複內容:

技能樹

php

  • 架構

    • yii/yii2
    • phalcon
    • yaf
    • thinkphp
    • 其他大大小小架構源碼都讀過很多
  • Composer
  • Redis/Memcached/Mongdb

Linux

  • lnmp環境搭建、最佳化
  • 負載平衡
  • mysql主從/redis主從
  • 伺服器營運

現在只是每天堅持看些linux方面的知識,感覺php學習達到了瓶頸,看一些優秀架構源碼大致的設計模式也都清楚,所以現在基本就是看了個大概就沒心思再跟代碼跟下去了,感覺能提升的東西已經很有限了,急需學習一門新語言來拓展下眼界。

眼下比較糾結是研究C or Java or Python

學習另外一門語言主要不是用來提升你的PHP能力的,選語言主要是為瞭解決不同情境與類型的問題,這也就是為什麼會有這麼多語言的原因,現在針對你的技能點,我談下我的想法:
第一:PHP架構源碼以及設計模式,你閱讀各個架構的源碼,那麼首先你要明確,你是否真正理解其設計思想,與設計理念,你從中吸取了多少作者的思想?如果讓你自己寫一套架構,你可以真正上手了嗎?不要認為,閱讀了源碼,看的懂代碼,就以為明白了,這隻是閱讀的第一步;
第二:nosql,暫且說你都用過這些技術,那麼你能很明確的清楚他們之間的最本質的區別嗎?技術選型的時候,你能很明確的說出為什麼要選這個,這個比起其他幾個nosql來說,優勢在哪裡?再換個方向,你學過了memcache,那麼分布式呢?分布式的情況下,memcache如果擴容呢?如何保證其伸縮性,和擴充性呢?
第三:環境搭建,最佳化,負載,mysql主從,那我且問你,你掌握了這些技能,都只是會用,根本談不上根據情境的變化,做出相應的配置,比如給你1000萬-1億的PV網站,你來架構,你難道還是就一個主從套上去就好了嗎?海量資料你又採用什麼方式解決呢?
最後總結:非常理解樓主認為自己到達瓶頸的想法,上述寫的只是想說,不管學習認識的技術,想想這個東西為什麼要出來,他的誕生是用來解決什麼問題的,最後再研究下他的原理,而不是很多技術,我學過用過就好了,這樣沒有深入的理解,是不會有多大效果的,最後建議樓主學習一下C語言,可以研究PHP源碼,這樣在寫代碼的時候也會考慮效能問題,同時通過C語言的學習,可以研究各種軟體的源碼和他們的原理,比如memcache,apache,nginx都可以去往源碼方面研究,你會看到更多東西,學習JAVA會對你的架構設計思想以及設計模式方面有所提升

最煩這種類型的問題了,達到瓶頸就該換個語言學學?換個語言就能解決所有問題?

吐槽暫且完畢,迴歸問題。你說你遇到了瓶頸,瓶頸在哪?或者說,你遇到了什麼業務什麼情境,php無法(很好)完成任務?我舉個我自己的例子,我遇到的是一個資料抓取的情境,php雖然能完成這個功能,但從運行效率考慮無法很好地完成(儘管有諸如pthreads之類的工具),我瞭解了一下其他語言對於這個情境的情況,選擇了node.js,很好地完成了任務。

看了你的描述,我覺得你對於php的應用還局限在web端,那有沒有嘗試過拿php寫一些別的東西?php-cli也還不錯哦。我見過一個案例是有人拿php實現了一套支援c語言(子集)和php混寫的語言的編譯器(轉為二進位代碼)和解譯器(←他是出於加密代碼的目的寫的),哦對了,那人當時高三升大一。突然覺得自己弱爆了。。。

囉嗦了這麼多,其實我想說的就兩點,如果你的瓶頸是有具體的需求,而php無法支援(儘管我非常希望php能是萬能的,但至少現在,這還只能是夢想),那麼去選擇能夠很好的解決你需求的語言;如果你是學習到了一定程度,覺得已經孤獨求敗了,我想問,你對於php真的有你想象地那麼熟悉嗎?php是一個弱類型的語言,它是如何?的?php的記憶體回收機制是怎樣的?不要覺得這些是底層的東西,我是寫上層代碼的就不用去關心。如果能夠瞭解的話,有時候能幫你解決一些非常非常非常隱形坑。

我從python 的tornado架構中瞭解到web的真諦,可以試試 ^_^

你瞭解了這麼多,我想下一步應該是不斷的解決各種味道的問題,從問題中吸取精華

搞搞python也是可以的,python是萬能語言,寫開發案頭軟體或是自動化方面都可以用。如果果想換行可以搞c語言,經典的語言還可以提高自己對底層硬體控制能力,對硬體有更深的理解。想做伺服器開發或是api可以考慮go語言,開發效率高運行效率高效。每個語言都有各自的特點,多瞭解瞭解也沒錯,但不能把精通全都放這上面,精通一兩種才是道

python or go

java,接觸下java的MVC架構

java吧,學的是思想

推薦 C、Python、Lisp、Erlang、Lua。都是很有特點的語言。看著哪個有感覺就學哪個好了。實在糾結就去學 C,然後看你用的那些軟體是怎麼寫的。

作業系統,電腦網路,資料結構,電腦群組成原理

這個技能樹和大家的回答對我有協助

連CS大門都還沒入的,都開始在討論瓶頸了。。。

看一下PHP5.5,5.6的新特性,和現在流行的趨勢,就知道,你應該學Java!

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.