首頁  >  文章  >  後端開發  >  據說每個人都應該學習編程,那麼學什麼語言好呢?

據說每個人都應該學習編程,那麼學什麼語言好呢?

WBOY
WBOY原創
2016-10-09 08:33:141268瀏覽

年近三十,目前工作是事業單位會計,平常用不到程式設計。
但對程式設計有興趣,高中時遊戲玩煩了,自學做網站,會一點html、php,高中畢業幾年後,靠做網站帶來過收入,十幾萬吧,純興趣變成了半職業,然而好景不長,因為一度工作太忙、不夠用心,給耽誤了,這四五年逐漸就沒再動,以前做網站主要靠的是cms和seo,php屬於沒入門水平,就能弄個記事本。
現在社會發展太快,自己也還有點興趣,想利用工作閒暇把一門語言學好,一方面滿足興趣,更重要的是以備不時之需要,或許將來能派上用場,不知應該學習什麼語言?

回覆內容:

事業單位會計…
你知道以前(大約2000年)事業單位會計都學什麼嗎?
Visual FoxPro
以前沒有那麼多、那麼強的相關軟體,很多時候還得針對需求寫一些自動處理的腳本,Visual FoxPro挺好的,用SQL語句,直觀,反饋及時,在當時也算能大幅提高工作效率了(當時的xls可以輕鬆導入進去)。

以下個人觀點:
面向潛在的工作需求:Excel中的VBA(大幅減少重複性勞動的工具)、Visual FoxPro(低優先級,畢竟太老了,雖然很難說有沒有什麼老數據需要用這個來處理)
面向自己的興趣愛好:這個什麼都有可能的,學Python寫爬蟲,折騰一下樹莓派做個聰明的控制器,搞個手機上的小程式方便自己,折騰一個博客來記錄,等等等等,重點是,自己有興趣+有個願意學習的心。 據說每個人都應該學習編程,那麼學什麼語言好呢? 會計,我怎麼感覺excel的vba用順溜了能大大加速你們的日常工作呢
重複三次以上的操作寫代碼去做,看看你的工作中有多少內容是可以寫代碼做的 學習Python 或golang。 做網站前端還是老三樣吧,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, 不能說很低了,但估計也沒多高。未知還是那麼多。不過,人生的樂趣,或許正在於此。 我建議python

不建議學習php、java、python、javasript這樣的語言, 不是說這些語言不好, 你如果要去找專門的軟體工程師職位的工作, 那學習這些語言都是不二的選擇,用這些語言的公司多啊,工作好找。


然而, 題主是個會計,學程式設計主要是因為興趣和實際對工作的幫助 ,所以我建議是去學習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,還是繼續PHP比較適合啊。 喜歡底層就學C啦,彙編啦。買塊單晶片開發版,買幾本電路設計的書,買些元件,電烙鐵,示波器,就可以做些小玩意兒了。 (注意安全)

高級一點的學函數式程式設計啦,例如scheme啦,haskell啦。學好了之後就可以混進函數式愛好者的高階圈子啦。

實用一點學js啦,py啦。做網站,寫爬蟲夠啦。

實在想不通的去學C++吧
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn