-
1 # 覺猿
-
2 # 性感寶兒線上埋
我是報的培訓班。報名尚學堂以後,日子就馬上變得忙碌而充實起來,這樣的日子過得也總是快的,四個半月的時間匆匆而過,如今收穫了非常多的知識還有程式設計技能,感覺心裡非常踏實。回想最初來到尚學堂的心裡沒有著落,到現在的安心、放心,我不得不感謝尚學堂讓零基礎的我順利步入了計算機程式設計世界,讓我領略了被IT界讚譽為最強大的java語言;還要感謝一路陪伴著我們走過來的老師們,是尚學堂的老師們倖幸苦苦的向我們傳授知識,對我們這些不懂java,對程式設計只有朦朧概念的學生,一點一點細心的輔導。每每回憶起老師們耐心幫助大家解決問題的情形,同學之間相互學習,相互討論的時光,我就會感覺那時候真是讓我充實到不能再充實,這都是免費java培訓帶不來的。
-
3 # C語言基礎
學生黨
如果是學生的話,有充裕的時間,建議除了語法學好,系統地多讀一點基礎的書籍,如作業系統原理、網路程式設計、資料結構與演算法相關的各方各面的經典書籍。儘量做到等您畢業走出校園以後,至少熟悉一門程式語言和其相應的開發環境的,是一個基礎紮實、理論清晰、編碼能力強的求職者。可惜的是,從現在的各種招聘反饋來看,大多數學生在求職時,對相關開發工具和語言的陌生程度實在讓人瞠目結舌,面試官在面試的時候會很納悶:這位學生大學四年(或者七年)到底是否除錯過程式?
工作狂社會人士由於已經走上工作崗位,家庭、工作的瑣事繁多,沒有太多的時間去系統地閱讀一些相關基礎書籍,如果您當前工作正好是從事 程式設計開發,那麼請結合您當前的專案來學習,搞清楚專案的體系結構、吸收專案中優秀的實現細節,針對性地補充相關知識,這是進步最快的方式。但是實際情形中,很多人覺得公司的專案程式碼又爛又雜,不願意去研究,這種思想千萬不能有的,在您沒有自己足夠好的能力給公司提供更好的解決方案,請先學習和模仿,我們此時要保持“空杯”心態,公司的程式碼再爛,它也是公司的商業價值所在;即使是純粹的業務程式碼,也有它的可取之處,擇其善者而從之,其不善者而改之。尤其是開發者處於一些初中級的開發崗位時,可能接觸不到公司核心框架的原始碼,此時千萬不要盲目地去排斥。學業務,補基礎,時刻意識清醒自己所需,明白自己想要學的東西。
就拿C++ 相關的開發,那麼可以擠出一些時間去學習一些開源的程式碼,在閱讀開原始碼的過程中,針對性地補缺補差。不建議系統地去看《C++ primer》《UNIX 環境高階程式設計》諸如此類的大部頭書籍,實際開發中不需要太多的這類書中的細枝末節,閱讀這類書往往只會事倍功半,甚至最後因書籍太厚、時間不夠,最後堅持不下去,最終放棄。
當然,對於社會人士,當您有一定的時間的時候一定要去補充一些基礎的、原理性的東西,千萬不要沉溺於“面向搜尋引擎程式設計”或者“面向工資程式設計”,有些問題雖然當時透過搜尋引擎解決了,但如果想在技術或職業上有長足的發展,一定要系統地去讀一些經典的、輕量級的書籍。長期在網上的文章中尋章摘句,只會讓您的知識結構碎片化、凌亂化,甚至混亂化。而且網際網路上的技術文章質量良莠不齊,有時候也容易對自己形成誤導和依賴。總而言之,作為技術開發人員,提高自己技術水平是改變現狀、改善生活最直接的途徑。
總結關於學程式設計,暫且就討論這麼多。最後再強調一遍,程式設計是一門講究深度的語言,其“深度”不是體現在會多少語法,而是能夠洞察您所寫的 程式碼背後的系統原理,這是需要長期不斷的積累的,沒有速成之法。反過來一旦學成,可以快速地學習其他語言和框架。個人覺得,如果自主創業或者想在二三線城市長期發展的讀者,C/C++ 應該是優選語言,有了它作為基礎,您可以跳出依賴各種環境和框架的窠臼,快速地學習和開發您想要的軟體,完成您想要的業務產品
-
4 # 變餅檔
作為初學者,我可能奇怪的歷程再合適不過回答這個問題了。17年剛剛畢業的時候,本人大學是文科專業,再外面找了若干份工作,大體都是賣房賣保險才肯收留。由於自己覺得性格不合適幹這行,就像做一份研究性的工作。恰逢朋友的介紹,和一群碼農成了同事。
我最初是從瞭解計算機結構來學起的,我認為一個想學程式設計的人,有必要讀一讀《鳥哥的LINUX私房菜》前幾章,學完之後大概就明白計算機的組成了。然後瞭解下編碼常識,比如什麼什麼是組合語言、C語言、邏輯控制、變數、函式命名規格等常用的基礎技能。
以我特別菜鳥的經歷,注意是一張白紙,告訴你。直接接拿起一門語言學習絕對是有害無益的。對於由計算機基礎的人說,可能根本意識不到有些東西居然是基礎知識,但是往往是最重要的。
個人認為學習比如:什麼是HTTP、什麼是TCP/IP、什麼是序列化、列表、集合等都需要初步認識。
網上有些教育機構影片,都是這麼的套路,會講很多特別基礎的東西。首先,要做的就是,多看看這些影片,到一定程度可以買書、看文件了。
-
5 # 編碼那些事
對於初學者來講,能夠堅持並且高效學習一門程式語言,並不是一件容易的事。下面拿C語言來說一下吧。
對於初學者,C語言相較於其它如Python等動態程式語言來講,是入門有一定難度的一種程式語言。
在學習態度上,學C語言必須要有耐心,有恆心,能夠堅持,不要三天打魚兩天曬網。在思維方法上,要循序漸進,先把基礎語法學好,然後再針對你感興趣的領域,慢慢擴充套件知識面。
在實際操作上,對於書本上的內容不能只看,一定要在計算機上自己敲程式碼,這樣才能慢慢的瞭解怎麼除錯,會出現哪些常見的bug等,多練多學就會了,這是一個必經的過程。
如果時間充足的話,可以看一下“C Primer Plus中文版”這本書,講的很全面,也比較好理解,對於入門還是比較好的。入門以後,再網路上找一些別人寫好的能實現某些特定功能的例子,多學習多借鑑別人的程式設計思路、編碼風格,慢慢的增加經驗。
基礎知識學紮實後,後面再延伸到底層作業系統、網路程式設計、資料庫等方面就簡單了。
-
6 # 周林ZhouLin
引言
回答這個問題前,先對問題作正確、完整的解讀。
問題的關鍵字:初學者、高效、一門程式語言
學習同一門程式語言,初學者和老手是不一樣的。這是由人類的學習機制決定的。
人類的學習過程其實是一個在已知知識結構下進行關聯、聯想,產生新的認知連線的過程。從這個角度看,初學者和老手的最大區別是:初學者能利用的已有知識結構要少於老手。所以對於老手的方法不一定適用於初學者。
這些知識結構的基本構成元素就是概念。老手的既有概念多於新手,所以新手首先要形成儘可能多的、正確的概念。
程式語言的相關概念有哪些?從靜態和動態兩個維度來看。
靜態維度
首先我們問自己一個問題:程式語言的目的到底是什麼?程式語言是一種表達解決具體問題的方法(專業術語叫做“演算法”)的表達工具。表達工具用於表達方式,那麼類比自然語言,就需要有如下的基本元素:
1. 語法:這個可以從對應程式語言的官方語言規範或者任何一本入門書籍習得。
2. 語義:程式語言最終是在機器上執行的,但是表達的是人類的方法(思想),所以實際上它起到了橋樑(對映)的作用。
大部分初學者都是在這一關堅持不下去的。因為語義的翻譯,需要人腦來做兩個領域的轉換。這種轉換除了工具(程式語言)之外,需要有媒介(素材),這種媒介(素材)就是資料結構和演算法。
《演算法素顏(第1篇):走下神壇吧!演算法》
《演算法素顏(第2篇):掃雷還可以這樣玩》
《演算法素顏(第3篇):KO!大O——時間複雜度》
動態維度
程式語言最終是以程式的形態執行在計算機上的(更精確的說法是作業系統)。
程式的執行過程如下:
從上面的過程描述可以看出:
1. 你需要熟悉和使用程式語言對應的IDE(整合開發環境)或者編譯器、直譯器
2. 你需要熟悉對應的作業系統(如Windows / Unix / Linux)及基本操作
程式是否可以一次性編寫正確?除非是高德納(《計算機程式設計藝術》的作者、知名計算機科學家)那樣的大神,普通人、特別是初學者是不可能一次性將程式(特別是大規模程式)寫正確的。那麼如何解決這個問題呢?答案就是除錯。
除錯就需要除錯工具(偵錯程式)。開發應用程式就需要掌握應用程式偵錯程式,開發核心、驅動程式就需要掌握核心偵錯程式。
如何不打退堂鼓、半途而廢?很多朋友看到這裡,估計都要打退堂鼓了:怎麼要掌握這麼多東西?自己能堅持下來嗎?
心理學上有一個發現:人只有在強烈的動機、並形成習慣的條件下,才能持之以恆地做某件事。要形成條件反射一樣的習慣,需要數月的時間在海馬體的區域形成印記。
關於學習動機誠然,現在IT/網際網路是相對高薪的行業,有一個短期功利性的目標牽引無可厚非。但是要堅持數月並形成習慣、甚至將來持續投入(知識和技術的更迭相當地快),就需要培養興趣,因為興趣是一切的老師。
如何培養興趣?給自己設定一些解決現實問題的小目標——透過程式設計練習來達成一個個小目標,是一個快速獲取反饋,逐步積累自信的過程。為什麼人們都喜歡打遊戲?因為打遊戲可以獲取快速反饋——升級、叫經驗、加技能、加屬性……我們設立一個個小的程式設計目標就是在模擬這個反饋過程。
程式設計是一門將藝術和工程結合的活,既要“看萬卷書”(理論學習)、也要“行萬里路”(動手實踐)。
最後關於程式語言的一點補充:
不同的程式語言型別,其實對程式設計師的思考方式是不一樣的要求。程式語言大致分為以下幾類:
面向機器:組合語言
面向過程:C……
面向說明:SQL……
面向物件:C++、Java、Ruby、Python……
面向函式:Lisp、Scheme、Haskell……
對於初學者,建議選擇一門面向物件的語言入手,原因是難度適宜,便於入門時增強信心。
-
7 # 傳智播客
初學者提問最多的問題就是,該如何學習一門程式語言?轉行IT學習什麼程式語言好?Java可以做什麼?Python可以做什麼?各種程式語言的前景如何?
下面正式回答這個問題:因為知道的少才會有迷茫的感覺。不管是任何一門程式語言,我們首先準備學習之前都要充分的瞭解這個語言的未來發展是什麼。由於不知道題主指的是哪一門程式語言。因為每一門語言都有適合的應用領域,學習的側重點也不同。這邊就用被人工智慧和大資料帶火的Python來舉例說一下,該如何高效的學習一門語言。
首先在準備學習之前:我們要做的是,知道Python應用領域和未來職業晉升的路徑(這點非常重要,只有找到發展路徑才能節省時間高效的找到學習重點!!):
我們以主要的就業方向做一個分類如下圖所示(注意圖片下方的對應路線):
以上就是Python的職業發展路徑,如果初學的小夥伴不是很清楚每一項是做什麼的具體工作內容是什麼,可以多在網上查一下。如果!這個語言全部發展路徑都沒有適合你或者你喜歡的,那麼可以考慮換一門語言了。或者直接找到自己想做的應用領域再去了解學習。
之後透過職業發展瞭解學習重點:以上圖爬蟲工程師作為以後想工作的方向來看,那麼需要我們掌握的是爬蟲的工作原理和設計思想,掌握反爬機制和分散式資料採集以及熟練理解Scrapy框架原理並且熟練使用。可以根據實際開發需求定製爬蟲採集熟練使用。(要先了解爬蟲需要掌握的技能才知道自己學習的成果)
那麼對應上圖當中的職業發展,我們可以看到黑馬學習路線動盪中一二三四五是對應著爬蟲知識點的重點。
打個總結瞭解語言--->找到未來職業發展方向--->根據方向選擇學習重點--->瞭解該板塊的技能--->找到影片學習--->專案檢驗
一門語言的高效學習方法應該按照上述的順序,但是很多同學迷茫在於找不到準確的發展路徑,以至於後面學習重點全部找不到。由於題主的問題不夠清晰,如果有知道自己想學哪個領域或者哪個應用程式的同學,不知道學習重點,隨時可以私信我,為大家實時解答。
-
8 # 秋風love明月
掌握語言的關鍵點,以及它的關鍵語句,多練,可以在網上找一下小專案,可以提升自己;總之,剛開始很枯燥,不過認真點會發現很有意思,我要自學網上有各種影片講解
-
9 # 紙飛機技術拆解局
首先謝邀。既然是為初學者所寫,那麼,我們首先需要進行的一個分辨是:TA是怎樣的初學者?沒有任何程式設計經驗?有其他語言方面的程式設計經驗,但沒有接觸過這門語言?針對不同型別的初學者,顯然其學習的途徑和側重點,還是會略有所不同的。這篇文章所針對的,主要是一些共性的方法和技巧。
亮獨觀其大略
《魏略》記載,諸葛亮在荊州,與石廣元、徐元直、孟公威俱遊學,“三人務於精熟,而亮獨觀其大略。”簡簡單單的一句話,其實正是在學習方法上,諸葛亮比其他人的高明所在。那回到程式語言,什麼又是程式語言的“大略”呢?我個人覺得,其核心就是:
瞭解清楚這個語言“當前”的應用生態
一門語言能不能用在很多不同的領域?除了極少數專有化語言外,很多語言都可堪此任。
但“能不能用在”,和“是不是已經用在”,卻是兩個截然不同的問題。比如說,能不能用C++來寫機器學習中所需要用的各種程式(指令碼)?答案當然是可以的,但業界是不是在大面積的用?情況並不樂觀,Python仍然是這個領域的“第一語言”。為什麼?這其實就是一個生態的問題。在Python下,機器學習所需要的各種類庫,成熟而完整,因此,無論是學習者,還是應用者,可以快速的進入到狀態,並完成手頭的工作。甚至於,因為Python2所構建的這個生態太成熟了,從而導致了整個業界,從Python2切換到Python3的過程,痛苦而又漫長。所以,作為一個初學者,在學習的一開始,就去“打聽”一下(事實上,我覺得老師的作用,也應該在這裡),你所要學習的這門語言,現在一般都拿來幹什麼,並且是不是和你想學習的方向(哪怕只有一個模糊的概念),在目標上高度契合,我覺得是最緊要和事半功倍的事情了,能為你的後期學習,節約太多的時間,從而少走很多的彎路。工欲善其事,必先利其器
人類似乎總是很欣賞那些在公眾中,表演用記事本,在沒有任何程式碼提示情況下,“手寫”程式碼的大神。
其實要實現這些並不難,萬事無他,唯手熟爾!哪怕你要用的那個函式,參變數再多,你這天天寫,總有熟到可以信手拈來的地步。但向觀眾,尤其是初學者表演,甚至是傳達這樣的理念,我覺得就是一種“罪惡”。恰恰相反,我覺得,作為一個經驗豐富的老手,我們最應該向初學者推薦的,應該是一款經過精心調教的“工具”。還是以Python和資料分析的學習為例,怎樣開始學習最好?上手就開始來學怎樣擼程式碼?如果你問我,那我一定會告訴你:> 先去裝個Anaconda再說為什麼?
省時省心啊
從此,近千個資料科學相關的開源包,你再也不用擔心你應該去哪裡找到他們,並且是不是和你現在用的版本會有衝突,等等等等這樣一些聽上去很瑣碎,但絕對會浪費你大量時間的事情了,而是能專注於學習。
因為一切都已經在那裡了!
實際上,在真正的軟體生產過程中,可以說絕大多數的開發,都是嚴重依賴於工具的,你想想,為什麼類似Docker這樣的工具會盛行?拋開在虛擬化等方面的具體技術不談,這東西對於開發和運維人員而言,一個巨大的好處,其實不就在於它的:幾乎零配置麼?
我要搭一個LAMP的Web的開發環境,我不需要自己勞心費力的去一個個的裝Apache + MySQL + PHP,還不能保證能不能裝上,一個image即可。程式設計學習也一樣,尤其是針對初學者而言,不要因為看到“大神”們,都是手寫程式碼,就覺得:把時間分配在掌握一個好的IDE工具上,是在浪費時間!
實際上,這反而是能夠讓你學的更快的利器!
這裡有一個小小的推薦,就是Visual Studio Code,微軟的這款產品,經過這幾年的大力發展,其擴充套件的豐富程度,真心足堪大任了,如果不是很特別的語言需求,基本上都可以在其應用商店中,找到對應的開發擴充套件。最後才是語言學習本身,但只40%
在充分了解了所需要學習的語言本身,現在主要拿來幹什麼,並且也用上了“高大上”的工具以後,整個學習的旅程,就算可以正式開始了。
這裡,有一個小小的建議,叫“只40%”。我覺得,這是所有高效學習的關鍵所在!
什麼意思?
舉一個例子,比如在很多語言中,提供了各種各樣的處理字串的方法(或函式),以Python為例,哪怕比如就是一個簡簡單單的,從“Hello World!”中,擷取相應的子字串,也有很多的技巧,比如:林林總總,好吧,作為初學者,面對這些東西怎麼辦?我就看到有很多的“大部頭”的號稱面向初學者的書,會洋洋灑灑的為此大書特書一番,好像,不把所有的可能性窮盡,初學者不算學完一樣。
但在我看來,這恰恰是最“糟糕”的一種寫法和學法了。兩個字:
沒用!因為有習慣和遺忘曲線的存在。
所以,即便是你當時花了大把的時間,去學習了這種種的技巧,今後,隨著你自己程式設計風格的形成,你還是會逐步趨向於用一種固定的方式,去處理問題,當然,我不是說這個例子,畢竟它太簡單了,簡單到這麼多風格,完全可以讓人接受 :),但我也不是沒有看到過,就是有人願意在他/她的程式碼的某個地方,先宣告一個類似這樣的函式:
為什麼他/她要這麼做?這不等於是為開發增加了一種“方言”麼?其實無他,就是因為這可能是他/她在另外的語言環境(比如JavaScript)下,已經用熟了的一種方式而已,這是人的天性使然。
這也就提醒初學者,當你在學習一門計算機語言的過程中,下面的兩個“經驗”,可能能幫助到你,更為高效的進行學習,那就是:
1. 剋制自己,不要試圖去了解這門語言的全部,只學自己當前需要和能明白的
比如說,你就是準備用Ren"Py做一個可視小說的遊戲出來,裡面只是需要一點點的Python知識,那你也捧一本大部頭,然後費勁吧啦的去看那些你根本用不上的函式的用法,並試圖去“深入”的理解OOP和函式式,這兩種不同的正規化,在Python下的實現(這可能是很多教程非常引以為傲的“高階”貨),何苦來哉?
等你這一切都完成,人家可能早就做出來了好幾個遊戲了,並且竟然發現:語法要求從來可能就沒超過大部分Python教程頂多第三章的要求(一般的教程,到第三章,從最基本的變數定義,到函式應用等等,一般都會寫完了)。
當然,我這樣講,不是在鼓吹說,深入系統的學習不重要,但我能保證,那絕不高效!
2. 在一開始,就要培養形成線上查閱文件的能力
我們已經處在了網路高度發達的時代,這是一個沒有辦法改變的事實!這個時代,最鮮明的特點之一是什麼?我覺得就是:
知識開始也一定會經常以索引的形式存在!
當然,你也可以說成是人類的整體記憶能力在退化,但我個人不這樣認為,實際上,索引式的好處,反而是人類可以記住更多東西了。
回到程式設計的學習,最高效的方式也應該是這樣,學習的目標,應該從“完全記住”,轉變為在腦子裡大概留個印象,然後可以在遇到問題時,能快速的根據這個印象,透過線上的文件查詢,迅速定位到問題的清晰的解決方案。
40%,足矣~
最後藉此風水寶地,插播一個小廣告,本人正在準備著進行程式設計教育自媒體方面的創業中,當前主要的想法,是針對K12年齡階段,並主要和初等數學和物理,以及主流的一些演算法等結合在一起,提供難易程度不同的,各種或好玩、或實用的程式設計教程和培訓,同時,也會逐步的開講一些整個計算機和軟體發展歷程中的故事,以及我自己的一些小小的思考,歡迎大家多多關注哈。 -
10 # IT卡卡西
方法:①要想學,就要動手,不要覺得自己看著會了,覺得也很簡單而沒有去練(大忌)
②不要怕難,不要知難而退。就好像今天擺地攤,遇到城管,明天就做服務員,結果更是吃不了苦。
④多做例題多做專案,反正你自己要清楚,你一天除了學習還是學習 就完了,不然我勸你放棄去學習。
-
11 # 我低端就改我名
1.英語不好,或者不敢接觸英文資料,你是不可能高效學習一門計算機語言的。
2.買這門語言入門的英文版教材,看過後一定要上機做練習,有的教材配影片,如果英文不好的,開啟字幕,一句一句搞懂。
3.有問題先去stack overflow查,當然是英文的。
4.錯誤提示copy到google,大部分第一個結果就是答案。
5.珍惜每一次練習,解每一個演算法題,解決每一個錯誤,解決每一個bug,都是重要的學習過程。
6.不要好高騖遠的去看作業系統,先搞個小開發版玩玩。
7.儘量在學習過程用不要用語法糖,絕對不要用框架,自己造輪子。那些東西在生產中用的,不是學習中。不要想走捷徑,彎道只能翻車,無法超車。
-
12 # Python進階學習交流
勤能補拙是良訓,一分辛苦一分才。
學習程式語言的話,影片+書籍,影片用來學習基礎,或者儘快入門,書籍用來鞏固,加深理解,進階用的。
然後剩下的就交給堅持,不說每天都堅持敲程式碼,比較也太難為人了,一個禮拜你起碼有5天或者4天練習一下程式碼,就已經非常不錯了,學習程式設計就指日可待啦。
總的來說,世上無難事只怕有心人,程式設計也是如此,其實真的沒有想象的那麼難,也沒有想象的那麼容易,加油~~
回覆列表
作為一個從理工轉行到IT的大叔級程式猿,經歷了一開始像幼兒一樣蹣跚學步的階段,也有之後在師傅指導下的快速成長階段,隨後進入職業生涯的瓶頸期,到現在準備再次起航。希望可以把自己的經驗教訓都傳承下去,也希望新人能少走一些彎路。
到底如何高效學習一門變成語言呢?
首先,找一本該語言的基礎類教程,學習基本的語法。如資料型別啊,條件判斷,迴圈,變數作用域,基礎類用法等等。不管你是否能完全理解,都要堅持全部看完。
然後呢,你要找一個師傅!找一個師傅!找一個師傅!找師傅可以有很多方式,可以上網上該語言聚集的社群,可以找一些網課的老師,也可以找一些社會上那種培訓班。當然,你有認識的熟人就更好了。這些老師教你基礎還是沒問題的。
有了師傅之後呢,你可以開始找一些網上該語言的小例子,一步一步的前進了。為什麼一定要在有了師傅之後呢?隨著你的不斷練習,不斷進步,你會發現你要學的不僅僅是一門語言,而是相關的一大堆東西。而這時候的你更像一本書《十萬個為什麼》,會有數不清的問題從你的腦袋裡蹦出來。如果全都靠你自己去摸索,一是可能會花費很多時間,而老師可能一句話就解決了;二是有些自己始終解決不了的問題,可能會徹底打消你的學習興趣,導致你的學習不了了之。
當你學習了很多例子之後呢,你會慢慢了解到這個語言到底涉及到哪些東西。這時,你需要理解這些東西,並在你的大腦裡形成 一個大的框圖,明瞭他們的相互關係。
這時,你就已經入門了。
然後你可以嘗試做一些大一點的專案,將會用到各種通用的中介軟體。先學會如何使用這些中介軟體,然後思考為什麼要用這些現成的中介軟體,它們解決了什麼問題。然後挑兩個簡單的,看一下原始碼,看看別人是如何解決這些問題的。
到這裡,你算是開始這門語言的探險之路了,但也真的只是開始探險之路。
你會開始想學習設計模式,計算機系統,資料結構,演算法,業務邏輯設計,架構……
堅持你學習的夢想,不斷擴充套件自己的只是,每天進步一丁點,你——終會成為你想成為的那個人。