據說每個人都應該學習編程,那麼學什麼語言好呢?
年近三十,目前工作是事業單位會計,平時用不到編程。
但對編程感興趣,高中時遊戲玩煩了,自學做網站,會一點html、php,高中畢業幾年後,靠做網站帶來過收入,十幾萬吧,純興趣變成了半職業,然而好景不長,因為一度工作太忙、不夠用心,給耽誤了,這四五年逐漸就沒再動,以前做網站主要靠的是cms和seo,php屬於沒入門水平,就能弄個記事本。
現在社會發展太快,自己也還有點興趣,想利用工作閑暇把一門語言學好,一方面滿足興趣,更重要的是以備不時之需要,或許將來能派上用場,不知應該學習什麼語言?
事業單位會計……
你知道以前(大約2000年)事業單位會計都學什麼嗎?
Visual FoxPro
以前沒有那麼多、那麼強的相關軟體,很多時候還得針對需求寫一些自動處理的腳本,Visual FoxPro挺好的,用SQL語句,直觀,反饋及時,在當時也算能大幅提高工作效率了(當時的xls可以輕鬆導入進去)。
面向潛在的工作需要:Excel中的VBA(大幅減少重複性勞動的工具)、Visual FoxPro(低優先順序,畢竟太老了,雖然很難說有沒有什麼老數據需要用這個來處理)
面向自己的興趣愛好:這個什麼都有可能的,學Python寫爬蟲,折騰一下樹莓派做個聰明的控制器,搞個手機上的小程序方便自己,折騰一個博客來記錄,等等等等,重點是,自己有興趣+有個願意學習的心。
我現在在寫Python代碼,其實真不該多推薦給你的,用什麼語言更多是自己的事。
如果你會PHP,還是繼續PHP比較合適啊。
會計,我怎麼感覺excel的vba用順溜了能大大加速你們的日常工作呢
重複三次以上的操作寫代碼去做,看看你的工作中有多少內容是可以寫代碼做的
我關注的一位國外程序員推薦了10個最該學習的語言,我就記住兩個python和js,而且是強烈推薦js,樓主有網頁基礎,那就js吧
做網站前端還是老三樣吧,html, css, javascript.
然後 python.
為什麼先學 python. 因為它的模塊成熟,「見效快」。
差不多了,如果還想往"底層"探索,就 C 了。不要被 C++ 拐走了,那個學一下當娛樂消遣沒什麼問題,但是坑大。
C 的「模塊」,「根基」也很成熟... 不過一般來說學 C 的話,「見效不快」。因為 C 的「根基」就是操作系統內核。C 的 "API" 基本上來說就是系統調用(就是說,《Unix 環境高級編程》)。到這裡了,多少也要能看懂 C 編譯器吐出來的彙編是怎麼回事兒。然後聯繫操作系統內核、編譯器、二進位工具等等,搞清楚這些「底層」玩意兒大概怎麼工作的(是指,《程序員的自我修養》,《深入理解計算機系統》,《Linux設備驅動程序》,《Linux內核設計與實現》,《深入理解Linux內核》,《深入Linux內核構架》......)。這樣 C 的坑其實是非常大的(不要讓 C++ 拐走就是這個意思,C 的哲學是 -- 東西基本都是乾貨,只要你還能啃... C++么,則未必如是了,與其把時間浪費在 C++ 那些奇淫機巧上,不如啃點兒乾貨算了)...,因為如果讀內核源碼的話,需要 Makefile, shell script, linker script, asm 都要懂,硬體構架之類的當然也要懂點兒,不過不緊要,反正寫內核的書上多少會提及,然後自己去查相關知識點就行了,就是個時間問題。
還有,數據結構和演算法的基礎當然也要在這個地方打下來,數據結構至少能寫(抄也一樣)查找二叉樹,紅黑樹,能構建圖,演算法的話基本排序歸併排序快速排序,排列組合生成,DFS BFS 這些基本搜索要會。
C 是見效不快。一般來說,一時半會兒肯定不會寫網路爬蟲什麼的。然而,... 或許這一切都是值得的。
把 C 的遞歸搞清楚。函數棧幀怎麼建立怎麼銷毀的,翻譯成彙編碼是怎樣的,怎樣把任意遞歸轉化為棧結構 + 循環不變式。然後要能夠推論出這樣一個結論:任意循環都可以用遞歸表達,但遞歸不能通過不帶棧結構的循環來表達 -- 也就是說,遞歸擁有比(不帶棧結構的)循環更強的計算能力,實際上遞歸函數的計算能力等價於圖靈機。到了這裡 -- 傳統上來說,已經登堂入室計算機科學/藝術之門了。
入門之後就隨便玩兒了。
可以先寫一個解釋器來玩。這個要備一點兒自動機的基礎理論知識(《自動機理論、語言和計算導論》),然後隨便找一本編譯書籍(《編譯原理》)來看,一本不夠的話加幾本(《編譯原理及其實踐》,《編譯器構造》),大概囫圇吞棗過一遍。再找一本教你寫解釋器的書來看,比如《自製編程語言》什麼的。然後抄。抄完了再看編譯原理,再抄。大概這樣。
這意味著,你可以自己發明一門計算機語言了,雖然可能品味不佳,或者實現不好,但是,你確實能夠寫一門足夠複雜的計算機語言了。
然後再隨便玩兒。
比如 Lisp 系的,建議先玩 scheme.
Prolog, Haskell, Ruby, io, Erlang,... 有空了都玩玩吧。
反正這個時候學任何語言,一般來說花不了多少時間。如果只是要上手用,其實這個時候任何語言都是不用學的,臨時學一下,模仿下風格,就基本能寫得像模像樣了。就是說這是真的玩兒。
反正你自己都能寫語言了。這個時候,是培養「品位」。
然後再隨便玩兒,比如內核來說,其實並不精通,但是反正要找的話也能找到代碼在哪;編譯理論裡面的某個東西某段代碼其實可以寫得更加通用或者更加精鍊;某個數據結構和演算法實現比較有意思,想想怎麼寫,對比一下別人怎麼寫的... 大約就是幹這種事情吧。
唉,其實還是怎麼玩兒都不夠的。到了這 level, 不能說很低了,但估計也沒多高。未知還是那麼多。不過,人生的樂趣,或許正在於此。我不是來抬杠的...我建議學英語...
不建議學習php、java、python、javascript這樣的語言, 不是說這些語言不好, 你如果要去找專門的軟體工程師職位的工作, 那學習這些語言都是不二的選擇,用這些語言的公司多啊,工作好找。
然而, 題主是個會計,學編程主要是因為興趣和實際對工作的幫助 ,所以我建議是去學習windows
系統下的.net技術體系,和.net平台下的首選語言c#
為什麼學習.net平台和c#
題主說了學編程的原因其中一點是因為興趣。 即然是興趣, 那可以不考慮就業, 應該學習最酷的和功能最強大的語言,顯然,c#是不二之選 。現在軟體開發行業內這麼多編程語言, 要說找出一種語法最炫酷、最便捷、功能最強大的語言, 那是非c#莫屬了。
當然, 現在的一些函數式編程語言, 語法方面可以碾壓c#, 但是我覺得那東西真的不適合非專業的玩家拿來把玩,學習函數式編程語言的難度要比學習普通編程語言來的大, 還不如用這些精力把簡單的東西玩精呢,畢竟非程序員的主要工作不是編程。不過,如果對函數式編程有興趣, .net平台下的 f#也是一個不錯的選擇。
第二點是要能派上用場。題主已經三十歲了, 在會計這個職業上已耕耘多年, 相信轉行再去當程序員已經是不可能的了。 那也就是說不必去學那些IT行業里流行最火熱的語言了。 而是要挑實用的學, 毫無疑問,c# 是還是首選 。用微軟的技術開發軟體有一個特點,就算在不同平台上, 編程的理念也是一致的, 換句話說就是, 假如你學會了用c#開發網站, 那麼你可以非常順利的過渡到用c#開發windows客戶端應用程序、windows10 uwp應用(包括windows
phone)、windows shell腳本,更不可思議的是,你還可以用c#開發android、ios應用,這簡直就是一朝鮮吃遍天啊, 一種語言覆蓋全平台, 問世間除微軟的.net和c#還有誰能做的到?只要學會.net和c#, 以後想開發什麼軟體就開發什麼軟體,裝逼工作兩不誤。
不可否認, 在庫數量方面python和java是可能比.net來的多一些, 然而, 絕對大部庫.net都是默認提供的,也足夠開發任何想的到的功能了, 至少我寫了很多年的.net 程序,從沒碰到庫不夠用的問題。 而且 python和java庫的最大的問題就是版本問題,我在使用python和java的過程中碰到的最多的問題的, 網上下載的庫的版本和本地裝的運行環境不一致, 導致各種莫名其秒讓人抓狂的錯誤, 這些問題在.net中是碰不到的。此外,.net的文檔也很齊全,不管是多麼犄角旮旯的東西,在msdn上都有記錄。
還有一個就是開發環境的問題, 如果用別的語言開發程序,必須要安裝一堆如運行環境、IDE、伺服器之類的東西,還需要各種配置,對專業程序員來說這沒什麼, 雖然題主不是小白, 但是搞這些東西還是花你不少精力。然而, .net的安裝環境卻是逆天的人性化,一個安裝包, 點點滑鼠,所有一切需要用到的東西都會幫你準備就緒, 只需要拿來用就可以了。 況且,學習別的語言, 往往還需要學點linux的使用方法, 這對非專業從業人員來說也是附加的壓力, 如果學習使用.net和c#的話就完全沒有這方面的顧慮了,windows server的使用和windows pc的使用無差。
最後,寫代碼也講究體驗啊,敲代碼也要敲的帶勁啊,因此,用什麼IDE是很重要的。如果給市面上的IDE搞個華山論劍,那天下第一非微軟家的 visual studio莫屬不可,使用vs編碼加調試的那個爽,是其它IDE難以望其項背的。
所以,不要糾結猶豫了,趕緊動手學習.net和c#
我建議python
php + F#.
編程不僅僅是一種語言,更是一項鍛煉思維模式的運動。
本人學習編程有好幾年的時間,從自己的感受來說下。
1.編程鍛煉你的數學計算能力,拓展你的思維:
如果你已經有了一些面向對象語言的基礎(比如Java,Python)等等,學習其他語言是為了拓寬眼界的,我非常推薦你學習Haskell,這是一個可以把插入排序演算法精簡到5行完成的語言。函數式編程尤其對一些核心計算機科學(Core Computer Science)的東西展現的非常完美,特別是遞歸,
下面是Haskell語言的遞歸寫法(比較兩個數的大小,如果兩個數相等,A+6,B*2,並代入回方程繼續計算)
compareTwo :: (Ord a, Num a) =&> a -&> a -&> a
compareTwo a b
| a &> b = a
| b &> a = b
| otherwise = compareTwo (a+6) (b*2)
是不是一目了然?
我們再來用Python來寫一遍:
def compareTwo(a,b):
if(a&>b):
return a
if(b&>a):
return b
if(b==a):
return compareTwo((a+6),(b*2))
看上去差不多,但是我個人覺得面向對象在接觸這些核心CS東西時的表現並不如這些語言。而且Python, Java目前太多人在學或者已經會了。
2.演算法是核心:
演算法是什麼?可以理解為,為了解決一個問題,你必須要做的步驟。很多演算法套用到現實生活中也是非常實用的,比如為了解決排序問題,使用了分治策略。還有一些棋牌遊戲的AI演算法,常用的有極大極小搜索樹,alphaBeta剪枝等等。
不要為了學習編程而學習語言,學會的語言多並不意味著你解決問題能力的強
3.編程是工具:
編程對於一個數學,金融業者來說,是一個很好的工具,去幫助計算數學,金融上的實際問題。對於工程門類的人來說,人工智慧大行其道,模擬3D,計算等等。根據你實際的需求選擇語言。我個人在研究數學,金融問題的時候非常喜歡用Python裡面的taylor級數庫計算,還有另外一個R語言,在金融統計計算方面R語言很強大,樓主可以了解一下。
js即將統一天下,快入聖教得太平(雖然我是搞java的
果斷學matlab啊(斜眼,然後再下載個wind
完全零基礎,C#,JAVA,Python,PHP都很好,另外再學學javascript和HTML5
大學學過C語言的,感覺走Python+C加加的路線也不錯
對題主來說VBA首選,VBA不夠用上C#
可以說,我也會PHP,以前看了些:
網站成果
http://www.fullyen.com
php吧。
會點簡單的語法,搞點博客什麼的,再弄點花騷的插件。
說起來也是會編程的人。
其實,並不是每個人都需要學習編程,題主題目有誤導性。
為什麼要學習編程,大部分人都是因為:
1 興趣
2 工作
鑒於題主的實際情況為 有興趣+學好編程為以後工作做準備(且具有html+php基礎)
建議先從前端出發,html/css js,以及相關js庫,頁面設計等,以上學好了工作問題不大,而且也很有趣味。
想繼續往上可以跟著php(世界上最好的語言 (~_~;) )深入後端
最後……
坑大,慎入人生苦短,入Python吧,會了之後還可以py交易
若類型語言 JavaScript Python 這些
JavaScript, Python.
推薦閱讀:
※基礎不好的人學習這些語言(PHP、Shell、Perl、Python、C、C++),哪個比較容易點?
※程序員真的只需要精通一門編程語言嗎?
※現在編程語言研究的前沿和熱門問題有什麼?
※現在哪種編程語言需求量大?
※各個階段的python學習路線?