如何掌握程序語言

2021-03-06 SegmentFault

  學習程序語言是每個程式設計師的必經之路。可是這個世界上有太多的程序語言,每一種都號稱具有最新的「特性」。所以程式設計師的苦惱就在於總是需要學習各種稀奇古怪的語言,而且必須緊跟「潮流」,否則就怕被時代所淘汰。

  作為一個程序語言的研究者,我深深的知道這種心理產生的根源。程序語言裡面其實有著非常簡單,永恆不變的原理。看到了它們,就可以在很短的時間之內就能學會並且開始使用任何新的語言,而不是花費很多功夫去學習一個又一個的語言。

對程序語言的各種誤解

  學習程序語言的人,經常會出現以下幾種心理,以至於他們會覺得有學不完的東西,或者走上錯誤的道路。以下我把這些心理簡要分析一下。

        1. 程序語言無用論。

        這是國內大學計算機系的教育常見的錯誤。教授們常常對學生灌輸:「用什麼程序語言不重要,重要的是算法。」而其實,程序語言卻是比算法更加精髓的東西。任何算法以及它的複雜度分析,都是相對於某種計算模型,而程序語言就是描述這種計算模型的符號系統。算法必須用某種語言表述出來,通常算法設計者使用偽碼,這其實是不嚴謹的,容易出現推理漏洞。算法設計再好,如果不懂得程序語言的原理,也不可能高效的實現。即使實現了,也可能會在模塊化和可擴展性上面有很大問題。某些算法專家或者數學家寫出來的程序極其幼稚,就是因為他們忽視了程序語言的重要性。

        2. 追求「新語言」。

        基本的哲學告訴我們,新出現的事物並不一定是「新事物」,它們有可能是歷史的倒退。事實證明,新出現的語言,可能還不如早就存在的。其實,現代語言的多少「新概念」不存在於最老的一些語言裡呢?程序語言就像商品,每一家都為了拉攏程式設計師作廣告,而它們絕大多數的設計都可能是膚淺而短命的。如果你看不透這些東西的設計,就會被它們蒙蔽住。很多語言設計者其實並不真的懂得程序語言設計的原理,所以常常在設計中重複前人的錯誤。但是為了推銷自己的語言和系統,他們必須誇誇其談,進行宗教式的宣傳。

  3. 「存在即是合理」。

         記得某人說過:「不能帶來新的思維方式的語言,是沒有必要存在的。」他說的是相當正確的。世界上有這麼多的語言,有哪些帶來了新的思維方式呢?其實非常少。絕大部分的語言給世界帶來的其實是混亂。有人可能反駁說:「你怎麼能說 A 語言沒必要存在?我要用的那個庫L,別的語言不支持,只能用A。」但是注意,他說的是存在的「必要性」。如果你把存在的「事實」作為存在的「必要性」,那就邏輯錯亂了。就像如果二戰時我們沒能打敗希特勒,現在都做了他的奴隸,然後你就說:「希特勒應該存在,因為他養活了我們。」你的邏輯顯然有問題,因為如果歷史走了另外一條路(即希特勒不存在),我們會過上自由幸福的生活,所以希特勒不應該存在。對比一個東西存在與不存在的兩種可能的後果,然後做出判斷,這才是正確的邏輯。按照這樣的推理,如果設計糟糕的A 語言不存在,那麼設計更好的 B 語言很有可能就會得到更多的支持,從而實現甚至超越 L 庫的功能。

  4. 追求「新特性」。

        程序語言的設計者總是喜歡「發明」新的名詞,喜歡炒作。普通程式設計師往往看不到,大部分這些「新概念」其實徒有高深而時髦的外表,卻沒有實質的內涵。常常是剛學會一個語言 A,又來了另一個語言 B,說它有一個叫 XYZ 的新特性。於是你又開始學習B,如此繼續。在內行人看來,這些所謂的「新特性」絕大部分都是新瓶裝老酒。很多人寫論文喜歡起這樣的標題:《XYZ:A Novel Method for ...》。這造成了概念的爆炸,卻沒有實質的進步。

  5. 追求「小竅門」。

        很多編程書喜歡賣弄一些小竅門,教你如何讓程序顯得「短小」。比如它們會跟你講 "(i++) - (++i)"應該得到什麼結果;或者追究運算符的優先級,說這樣可以少打括號;要不就是告訴你「if 後面如果只有一行代碼就可以不加花括號」,等等。殊不知這些小竅門,其實大部分都是程序語言設計的敗筆。它們帶來的不是清晰的思路,而是是邏輯的混亂和認知的負擔。比如 C 語言的 ++ 運算符,它的出現是因為 C 語言設計者們當初用的計算機內存小的可憐,而 "i++" 顯然比"i=i+1" 少 2 個字符,所以他們覺得可以節省一些空間。現在我們再也不缺那點內存,可是 ++ 運算符帶來的混亂和迷惑,卻流傳了下來。現在最新的一些語言,也喜歡耍這種語法上的小把戲。如果你追求這些小竅門,往往就抓不住精髓。

  6. 針對「專門領域」。

        很多語言沒有新的東西,為了佔據一方土地,就號稱自己適合某種特定的任務,比如文本處理,資料庫查詢,WEB 編程,遊戲設計,並行計算。但是我們真的需要不同的語言來幹這些事情嗎?其實絕大部分這些事情都能用同一種通用語言來解決,或者在已有語言的基礎上做很小的改動。只不過由於各種政治和商業原因,不同的語言被設計用來佔領市場。就學習而言,它們其實是無關緊要的,而它們帶來的「學習負擔」,其實差不多掩蓋了它們帶來的好處。其實從一些設計良好的通用語言,你可以學會所有這些「專用語言」的精髓,而不用專門去學它們。

  7. 宗教信仰。

        很多人對程序語言有宗教信仰。這跟人們對作業系統有宗教信仰很類似。其實如果你了解程序語言的本質,就會發現其實完全沒必要跟人爭論一些事情。某個語言有缺點,應該可以直接說出來,卻被很多人忌諱,因為指出缺點總是招來爭論和憎恨。這原因也許在於程序語言的設計不是科學,它類似於聖經,它沒法被「證偽」。沒有任何實驗可以一下子斷定那種語言是對的,那種是錯的。所以雖然你覺得自己有理,卻很難讓人信服。沒有人會去爭論哪家的漢堡更好,卻有很多人爭論那種語言更好。因為很多人把程序語言當成自己的神,如果你批評我的語言,你就是褻瀆我的神。解決的辦法也許是,不要把自己正在用的語言看得太重要。你現在認為是對的東西,也許不久就會被你認為是錯的,反之亦然。

如何掌握程序語言

  看到了一些常見的錯誤心理,那麼我們來談一下什麼樣的思維方式會更加容易的掌握程序語言。

        1. 專注於「精華」和「原理」。

        就像所有的科學一樣,程序語言最精華的原理其實只有很少數幾個,它們卻可以被用來構造出許許多多紛繁複雜的概念。但是人們往往忽視了簡單原理的重要性,匆匆看過之後就去追求最新的,複雜的概念。他們卻沒有注意到,絕大部分最新的概念其實都可以用最簡單的那些概念組合而成。而對基本概念的一知半解,導致了他們看不清那些複雜概念的實質。比如這些概念裡面很重要的一個就是遞歸。國內很多學生對遞歸的理解只停留於漢諾塔這樣的程序,而對遞歸的效率也有很大的誤解,認為遞歸沒有循環來得高效。而其實遞歸比循環表達能力強很多,而且效率幾乎一樣。有些程序比如解釋器,不用遞歸的話基本沒法完成。

  2. 實現一個程序語言。

        學習使用一個工具的最好的方式就是製造它,所以學習程序語言的最好方式就是實現一個程序語言。這並不需要一個完整的編譯器,而只需要寫一些簡單的解釋器,實現最基本的功能。之後你就會發現,所有語言的新特性你都大概知道可以如何實現,而不只停留在使用者的水平。實現程序語言最迅速的方式就是使用一種像 Scheme 這樣代碼可以被作為數據的語言。它能讓你很快的寫出新的語言的解釋器。我的 GitHub 裡面有一些我寫的解釋器的例子(比如這個短小的代碼實現了 Haskell 的 lazy 語義)。

幾種常見風格的語言

  下面我簡要的說一下幾種常見風格的語言以及它們的問題。

  1. 面向對象語言

  事實說明,「面向對象」這整個概念基本是錯誤的。它的風靡是因為當初的「軟體危機」(天知道是不是真的存在這危機)。設計的初衷是讓「界面」和「實現」分離,從而使得下層實現的改動不影響上層的功能。可是大部分面向對象語言的設計都遵循一個根本錯誤的原則:「所有的東西都是對象(Everything is anobject)。」以至於所有的函數都必須放在所謂的「對象」裡面,而不能直接被作為參數或者變量傳遞。這導致很多時候需要使用繁瑣的設計模式(design patterns) 來達到甚至對於 C 語言都直接了當的事情。而其實「界面」和「實現」的分離,並不需要把所有函數都放進對象裡。另外的一些概念,比如繼承,重載,其實帶來的問題比它們解決的還要多。

  「面向對象方法」的過度使用,已經開始引起對整個業界的負面作用。很多公司裡的程式設計師喜歡生搬硬套一些不必要的設計模式,其實什麼好事情也沒幹,只是使得程序冗長難懂。

  那麼如何看待具備高階函數的面向對象語言,比如 Python, JavaScript, Ruby, Scala?當然有了高階函數,你可以直截了當的表示很多東西,而不需要使用設計模式。但是由於設計模式思想的流毒,一些程式設計師居然在這些不需要設計模式的語言裡也採用繁瑣的設計模式,讓人哭笑不得。所以在學習的時候,最好不要用這些語言,以免受到不必要的幹擾。到時候必要的時候再回來使用它們,就可以取其精華,去其糟粕。

  2. 低級過程式語言

  那麼是否 C 這樣的「低級語言」就會好一些呢?其實也不是。很多人推崇C,因為它可以讓人接近「底層」,也就是接近機器的表示,這樣就意味著它速度快。這裡其實有三個問題:

   1】接近「底層」是否是好事?

   2】「速度快的語言」是什麼意思?

   3】接近底層的語言是否一定速度快?

  對於第一個問題,答案是否定的。其實編程最重要的思想是高層的語義(semantics)。語義構成了人關心的問題以及解決它們的算法。而具體的實現(implementation),比如一個整數用幾個字節表示,雖然還是重要,但卻不是至關重要的。如果把實現作為學習的主要目標,就本末倒置了。因為實現是可以改變的,而它們所表達的本質卻不會變。所以很多人發現自己學會的東西,過不了多久就「過時」了。那就是因為他們學習的不是本質,而只是具體的實現。

  其次,談語言的「速度」,其實是一句空話。語言只負責描述一個程序,而程序運行的速度,其實絕大部分不取決於語言。它主要取決於 1)算法和2)編譯器的質量。編譯器和語言基本是兩碼事。同一個語言可以有很多不同的編譯器實現,每個編譯器生成的代碼質量都可能不同,所以你沒法說「A語言比 B 語言快」。你只能說「A 語言的 X 編譯器生成的代碼,比 B 語言的 Y 編譯器生成的代碼高效」。這幾乎等於什麼也沒說,因為 B 語言可能會有別的編譯器,使得它生成更快的代碼。

  我舉個例子吧。在歷史上,Lisp 語言享有「龜速」的美名。有人說「Lisp 程式設計師知道每個東西的值,卻不知道任何事情的代價」,講的就是這個事情。但這已經是很久遠的事情了,現代的 Lisp 系統能編譯出非常高效的代碼。比如商業的 Chez Scheme 編譯器,能在 5 秒鐘之內編譯它自己,編譯生成的目標代碼非常高效。它可以直接把 Scheme 程序編譯到多種處理器的機器指令,而不通過任何第三方軟體。它內部的一些算法,其實比開源的 LLVM 之類的先進很多。

  另外一些函數式語言也能生成高效的代碼,比如 OCaml。在一次程序語言暑期班上,Cornell 的 Robert Constable 教授講了一個故事,說是他們用 OCaml 重新實現了一個系統,結果發現 OCaml 的實現比原來的 C 語言實現快了 50 倍。經過C 語言的那個小組對算法多次的優化,OCaml 的版本還是快好幾倍。這裡的原因其實在於兩方面。第一是因為函數式語言把程式設計師從底層細節中解脫出來,讓他們能夠迅速的實現和修改自己的想法,所以他們能夠迅速的找到更好的算法。第二是因為 OCaml 有高效的編譯器實現,使得它能生成很好的代碼。

  從上面的例子,你也許已經可以看出,其實接近底層的語言不一定速度就快。因為編譯器這種東西其實可以有很高級的「智能」,甚至可以超越任何人能做到的底層優化。但是編譯器還沒有發展到可以代替人來製造算法的地步。所以現在人需要做的,其實只是設計和優化自己的高層算法。

  3. 高級過程式語言

  很早的時候,國內計算機系學生的第一門編程課都是 Pascal。Pascal 是很不錯的語言,可是很多人當時都沒有意識到。上大學的時候,我的 Pascal 老師對我們說:「我們學校的教學太落後了。別的學校都開始教C 或者 C++ 了,我們還在教 Pascal。」現在真正理解了程序語言的設計原理以後我才真正的感覺到,原來 Pascal 是比 C 和 C++ 設計更好的語言。它不但把人從底層細節裡解脫出來,沒有面向對象的思維枷鎖,而且有一些很好的設計,比如強類型檢查,嵌套函數定義等等。可是計算機的世界真是謬論橫行,有些人批評 Pascal,把優點都說成是缺點。比如 Brain Kernighan 的這篇《Why Pascal is Not My Favorite Programming Language》,現在看來真是謬誤百出。Pascal 現在已經幾乎沒有人用了。這並不很可惜,因為它被錯怪的「缺點」其實已經被正名,並且出現在當今最流行的一些語言裡:Java,Python, C#, ……

  4. 函數式語言

  函數式語言相對來說是當今最好的設計,因為它們不但讓人專注於算法和對問題的解決,而且沒有面向對象語言那些思維的限制。但是需要注意的是並不是每個函數式語言的特性都是好東西。它們的支持者們經常把缺點也說成是優點,結果你其實還是被掛上一些不必要的枷鎖。比如 OCaml 和 SML,因為它們的類型系統裡面有很多不成熟的設計,導致你需要記住太多不必要的規則。

  5. 邏輯式語言

  邏輯式語言(比如 Prolog)是一種超越函數式語言的新的思想,所以需要一些特殊的訓練。邏輯式語言寫的程序,是能「反向運行」的。普通程序語言寫的程序,如果你給它一個輸入,它會給你一個輸出。但是邏輯式語言很特別,如果你給它一個輸出,它可以反過來給你所有可能的輸入。其實通過很簡單的方法,可以不費力氣的把程序從函數式轉換成邏輯式的。但是邏輯式語言一般要在「pure」的情況下(也就是沒有複雜的賦值操作)才能反向運行。所以學習邏輯式語言最好是從函數式語言開始,在理解了遞歸,模式匹配等基本的函數式編程技巧之後再來看 Prolog,就會發現邏輯式編程簡單了很多。

從何開始

  可是學習編程總要從某種語言開始。那麼哪種語言呢?就我的觀點,首先可以從 Scheme 入門,然後學習一些 Haskell (但不是全部),之後其它的也就觸類旁通了。你並不需要學習它們的所有細枝末節,而只需要學習最精華的部分。所有剩餘的細節,會在實際使用中很容易的被填補上。現在我推薦幾本比較好的書。

  《The Little Schemer》(TLS):我覺得 Dan Friedman 的 The Little Schemer 是目前最好,最精華的編程入門教材。這本書很薄,很精闢。它的前身叫《The Little Lisper》。很多資深的程序語言專家都是從這本書學會了 Lisp。雖然它叫「The Little Schemer」,但它並不使用 Scheme 所有的功能,而是忽略了 Scheme 的一些毛病,直接進入最關鍵的主題:遞歸和它的基本原則。

  《Structure and Interpretationof Computer Programs》(SICP):TheLittle Schemer 其實是比較難的讀物,所以我建議把它作為下一步精通的讀物。SICP 比較適合作為第一本教材。但是我需要提醒的是,你最多只需要看完前三章。因為從第四章開始,作者開始實現一個 Scheme 解釋器,但是作者的實現並不是最好的方式。你可以從別的地方更好的學到這些東西。不過也許你可以看完 SICP 第一章之後就可以開始看 TLS。

  《A Gentle Introduction to Haskell》:對於 Haskell,我最開頭看的是 A GentleIntroduction to Haskell,因為它特別短小。當時我已經會了 Scheme,所以不需要再學習基本的函數式語言的東西。我從這個文檔學到的只不過是 Haskell 對於類型和模式匹配的概念。

過度到面向對象語言

  那麼如果從函數式語言入門,如何過渡到面向對象語言呢?畢竟大部分的公司用的是面向對象語言。如果你真的學會了函數式語言,就會發現面向對象語言已經易如反掌。函數式語言的設計比面向對象語言簡單和強大很多,而且幾乎所有的函數式語言教材(比如 SICP)都會教你如何實現一個面向對象系統。你會深刻的看到面向對象的本質以及它存在的問題,所以你會很容易的搞清楚怎麼寫面向對象的程序,並且會發現一些竅門來避開它們的局限。你會發現,即使在實際的工作中必須使用面向對象語言,也可以避免面向對象的思維方式,因為面向對象的思想帶來的大部分是混亂和冗餘。

深入本質和底層

  那麼是不是完全不需要學習底層呢?當然不是。但是一開頭就學習底層硬體,就會被紛繁複雜的硬體設計蒙蔽頭腦,看不清楚本質上簡單的原理。在學會高層的語言之後,可以進行「語義學」和「編譯原理」的學習。

  簡言之,語義學(semantics)就是研究程序的符號表示如何對機器產生「意義」,通常語義學的學習包含 lambda calculus 和各種解釋器的實現。編譯原理(compilation)就是研究如何把高級語言翻譯成低級的機器指令。編譯原理其實包含了計算機的組成原理,比如二進位的構造和算術,處理器的結構,內存尋址等等。但是結合了語義學和編譯原理來學習這些東西,會事半功倍。因為你會直觀的看到為什麼現在的計算機系統會設計成這個樣子:為什麼處理器裡面有寄存器(register),為什麼需要堆棧(stack),為什麼需要堆(heap),它們的本質是什麼。這些甚至是很多硬體設計者都不明白的問題,所以它們的硬體裡經常含有一些沒必要的東西。因為他們不理解語義,所以經常不明白他們的硬體到底需要哪些部件和指令。但是從高層語義來解釋它們,就會揭示出它們的本質,從而可以讓你明白如何設計出更加優雅和高效的硬體。

  這就是為什麼一些程序語言專家後來也開始設計硬體。比如 Haskell 的創始人之一 Lennart Augustsson 後來設計了 BlueSpec,一種高級的硬體描述語言,可以 100% 的合成 (synthesis) 為硬體電路。Scheme 也被廣泛的使用在硬體設計中,比如 Motorola, Cisco 和曾經的 Transmeta,它們的晶片設計裡面含有很多 Scheme 程序。

  這基本上就是我對學習程序語言的初步建議。以後可能會就其中一些內容進行更加詳細的闡述。

文章轉自:https://news.cnblogs.com/n/153825/

文章作者:王垠

  

tips

長按二維碼添加管理員微信,添加時備註「華為」,由管理員邀請進入 SF「2017 華為開發者大賽交流群」了解更多詳情,和小夥伴們一起組隊參賽。

相關焦點

  • 如何掌握「所有」的程序語言?
    大家好,我是 zeroing ~分享一篇文章 《如何掌握所有的程序語言》,最近在在技術自媒體圈比較火,可能小夥伴們砍了標題,會覺得有些浮誇,但文章內容對學習語言確實很具有指導意義,可為我們提供另外一種學習角度
  • 如何掌握所有的程序語言
    對的,我這裡要講的不是如何掌握一種程序語言,而是所有的……很多編程初學者至今還在給我寫信請教,問我該學習什麼程序語言,怎麼學習。
  • 如何掌握所有的程序語言?
    文章有點長,耐心看下來,相信還是有收穫的,下面👇是正文:對的,我這裡要講的不是如何掌握一種程序語言,而是所有的……很多編程初學者至今還在給我寫信請教,問我該學習什麼程序語言,怎麼學習。由於我知道如何掌握「所有」的程序語言,總是感覺這種該學「一種」什麼語言的問題比較低級,所以一直沒來得及回復他們 。可是逐漸的,我發現原來不只是小白們有這個問題,就連美國大公司的很多資深工程師,其實也沒搞明白。
  • 如何掌握「所有」的程序語言?對,就是所有!
    對的,我這裡要講的不是如何掌握一種程序語言,而是所有的……
  • 如何掌握「所有」的程序語言?沒錯,就是所有!
    來源:王垠http://www.yinwang.org/blog-cn/2017/07/06/master-pl對的,我這裡要講的不是如何掌握一種程序語言
  • 如何學習一門程序語言
    題圖:from bessiesbluedress.tumblr.com避免看到最後說我誆你,這篇其實應該是《我是如何學習一門程序語言的
  • 程序設計入門——C語言
    【課程簡介】:程序設計是一門基礎課程。對於計算機相關專業而言,程序設計是專業基礎知識,是進一步學習其他專業知識的第一步階梯;對於非計算機專業而言,程序設計的學習有助於理解計算機的能力所在,理解哪些是計算機擅長解決的問題,怎樣的方式方法是計算機擅長的手段,從而能更好地利用計算機來解決本專業領域內的問題。
  • 如何熟練掌握多種程式語言
    好像我正在學習一種新語言(Python),這與我的母語(C#)完全不同。學習類似的程式語言(例如C#,Java和JavaScript)類似於學習類似的自然語言。例如,通過了解法語,我很容易掌握類似的語言,例如義大利語,葡萄牙語和西班牙語。但是,學習一種與我所知道的語義不同的程式語言(Python)類似於學習冰島語或普通話對我的法語背景沒有多大幫助。
  • plc常用程序語言
    功能表圖語言和語句描述語言是高級的程序設計語言,它可根據需要去執行更有效的操作,例如,模擬量的控制,數據的操縱,報表的報印和其他基本程序設計語言無法完成的功能。功能模塊圖語言採用功能模塊圖的形式,通過軟連接的方式完成所要求的控制功能,它不僅在可編程序控制器中得到了廣泛的應用,在集散控制系統的編程和組態時也常常被採用,由於它具有連接方便、操作簡單、易於掌握等特點,為廣大工程設計和應用人員所喜愛。
  • C語言程序設計入門學習六步曲
    例如,如果你不知道長方形的面積公式,即使C語言學得再好你也編不出求長方形的面積的程序來。三、C語言程序設計是一門實踐性很強的課程,「紙上談兵」式的光學不練是學不好C語言的。例如,大家都看過精彩自行車雜技表演,假如,你從來沒有騎過自行車,光聽教練講解相關的知識、規則、技巧,不要說上臺表演、就是上路你恐怕都不行。出現問題原因清楚了,那麼如何學習呢?
  • 用C語言程序比大小及C語言程序的結構
    今天讓我們學習用C語言編寫比較兩個數大小的程序例:求兩個整數中的較大者
  • C 語言程序設計---結構化程序設計
    >模塊與模塊之間的三種關係(必須非常熟練的掌握、理解):順序結構、分支結構(選擇結構)、循環結構,這三種結構基本上構成了模塊的框架1、順序結構:這個循環一般不使用C、for 循環for(初值; 條表; 步長){    循環體;}A、C循環用的比較多,三要素:初值、條件、步長,必須明確這三種結構,只要掌握了 C 的,對於其他語言都是類似的,一定要以技術的深度為主,熟練的掌握一門,編程思想到位了,其他都不是問題
  • Python—程序語言入門
    主要教法     講授演示法+上機操作   教學過程一、複習鞏固1、什麼是編程2、Python--我們和計算機溝通的語言所想要表達的意思——>編程軟體翻譯成二進位——>計算機接收並執行常用、最流行的幾種程序語言:C、C++、c#、Java 、VB、python
  • PIC單片機C語言程序實例
    編者按:為了幫助具有PIC單片機彙編語言知識的技術人員或工程師,快速掌握利用C語言編寫PIC單片機程序的方法,本刊特推出《PIC單片機C語言程序設計》系列連載文章。丈中給出的C語言程序實例,均是可執行的,讀者可以放心引用。      一、彙編語言與C語言      早期的單片機程序多採用彙編語言編寫。
  • 加速程序開發 Python整合C語言模塊
    而作為軟體開發的傳統程式語言——C語言,卻能在這些問題上很好地彌補Python語言的不足。因此,本文通過實例研究如何在Python程序中整合既有的C語言模塊,包括用C語言編寫的源程序和動態連結庫等,從而充分發揮Python語言和C語言各自的優勢。Python語言的特點Python作為一門程序開發語言,被越來越多地運用到快速程序開發。
  • C語言程序設計入門學習六步曲(菜鳥福利哦!)
    例如,如果你不知道長方形的面積公式,即使C語言學得再好你也編不出求長方形的面積的程序來。三、C語言程序設計是一門實踐性很強的課程,「紙上談兵」式的光學不練是學不好C語言的。例如,大家都看過精彩自行車雜技表演,假如,你從來沒有騎過自行車,光聽教練講解相關的知識、規則、技巧,不要說上臺表演、就是上路你恐怕都不行。出現問題原因清楚了,那麼如何學習呢?
  • PLC常用程序設計語言
    功能模塊圖語言採用功能模塊圖的形式,通過軟連接的方式完成所要求的控制功能,它不僅在可編程序控制器中得到了廣泛的應用,在集散控制系統的編程和組態時也常常被採用,由於它具有連接方便、操作簡單、易於掌握等特點,為廣大工程設計和應用人員所喜愛。
  • 語言學習技巧:專家教你如何掌握一門新語言
    語言學習技巧:專家教你如何掌握一門新語言學習語言任何時候都可以。
  • 自學小程序開發需要掌握的基本知識!看完這篇就能做自己的小程序
    接下來的2018年一定是小程序雄起的一年,沒抓住GZH風口的,這回別再錯過了。你不會?別急。這篇文章要教你的就是!小程序入門需要掌握的基本知識。其實,小程序類似於H5面,提供了視圖層描述語言,需要掌握WXML 和 WXSS 以及基於JavaScript的邏輯層框架,這裡wxml相當於html,wxss相當於css。想要開發小程序?一個前端一個後端或者一個全棧工程師就可以搞定。那麼小程序開發到底該如何入門,小白應該掌握哪些基本知識?往下看。
  • 程序設計入門—Java語言 免費學習教程
    教程介紹         程序設計是一門基礎課程。對於計算機相關專業而言,程序設計是專業基礎知識,是進一步學習其他專業知識的第一步階梯;對於非計算機專業而言,程序設計的學習有助於理解計算機的能力所在,理解哪些是計算機擅長解決的問題,怎樣的方式方法是計算機擅長的手段,從而能更好地利用計算機來解決本專業領域內的問題。