本指南內(nèi)容較多,但你們?nèi)裟苣托淖x完,你們將收獲很多……
歡迎訪問作者的主頁:Xi Xu’s Home Page
1 關(guān)于程序設(shè)計
-
什么是程序設(shè)計和程序設(shè)計語言?
程序設(shè)計1(programming),或稱編程,是給程序解決出特定問題的過程,軟件開發(fā)過程中的重要步驟。程序設(shè)計方法往往以某種程序設(shè)計語言為工具,給出這種語言下的程序。程序設(shè)計過程一般包括分析、設(shè)計、編碼、測試、調(diào)試等不同階段。程序設(shè)計語言2(programming language),或稱編程語言,是用來定義計算機程序的形式語言。它是一種被標(biāo)準(zhǔn)化的交流技巧,用來向計算機發(fā)出指令,一種能夠讓程序員準(zhǔn)確地定義計算機所需要使用數(shù)據(jù)的計算機語言,并精確地定義在不同情況下所應(yīng)當(dāng)采取的行動。最早的編程語言是在電腦發(fā)明之前產(chǎn)生的,當(dāng)時是用來控制提花織布機(Jacquard loom)及自動演奏鋼琴的動作。在電腦領(lǐng)域已發(fā)明了上千不同的編程語言,而且每年仍有新的編程語言誕生。
-
為什么需要學(xué)習(xí)程序設(shè)計?
因為,程序設(shè)計是你們所必須掌握的專業(yè)基礎(chǔ)技能,是進一步學(xué)習(xí)其他專業(yè)知識的第一步階梯。
-
競賽:參加程序設(shè)計競賽可以提高你們的編程能力、邏輯思維能力、創(chuàng)新能力和團隊合作能力,同時也可以增加你們的榮譽感和自信心。程序設(shè)計競賽有很多(具體見后文),這些競賽都是你們展示自己才華的舞臺,更重要地,也是你們獲得獎學(xué)金、推薦免試研究生、就業(yè)優(yōu)先等機會的重要途徑。
-
考研:你們中有很多會選擇考研,因為你們希望通過深造來提升自己的專業(yè)水平和學(xué)術(shù)水平;本科非雙一流院校畢業(yè)的你們也可以通過考研來提升自己的學(xué)歷,彌補高考的遺憾??佳械倪^程中,程序設(shè)計是一個重要的考察內(nèi)容,不僅要求你們掌握一門或多門編程語言,還要求你們能夠用程序設(shè)計解決實際問題,例如數(shù)據(jù)結(jié)構(gòu)、算法分析、操作系統(tǒng)、數(shù)據(jù)庫等??佳械碾y度和競爭都很大,因此程序設(shè)計的能力對于考研成功至關(guān)重要。
-
就業(yè):就業(yè)是你們的最終目標(biāo),因為你們希望用自己所學(xué)為社會創(chuàng)造價值。就業(yè)市場上,程序設(shè)計是你們最基本也最核心的技能,無論是從事軟件開發(fā)、系統(tǒng)維護、網(wǎng)絡(luò)安全、人工智能、云計算等領(lǐng)域,都離不開程序設(shè)計。程序設(shè)計的水平直接影響了你們的就業(yè)競爭力和薪酬水平。
-
等等。
總之,程序設(shè)計是你們在競賽、考研、就業(yè)等方面必不可少的基本技能,也是展示自己才華和創(chuàng)造價值的重要手段。另外,興趣是最好的老師,如果你們對程序設(shè)計感興趣,那么我以上所列舉的需要學(xué)習(xí)程序設(shè)計的原因就對你們來說沒有那么重要了,因為就沒有什么困難和障礙是不能克服的了。相信你們?nèi)粲兄鴮Τ绦蛟O(shè)計的熱情和潛力,只要你們努力學(xué)習(xí)和實踐,你們一定能夠達成自己的目標(biāo)。
-
2 那么,如何學(xué)習(xí)程序設(shè)計?
這是一些通用的建議:
-
打好基礎(chǔ),程序設(shè)計基礎(chǔ)即程序設(shè)計語言語法。學(xué)習(xí)程序設(shè)計語言語法的規(guī)則和基本概念,比如變量、數(shù)據(jù)類型、運算符、流程控制、函數(shù)等。這些是程序設(shè)計的基石,可以幫助你理解不同的程序設(shè)計語言和風(fēng)格。
-
利用在線資源,這是學(xué)習(xí)程序設(shè)計的一個重要途徑。你們可以通過在線資源來學(xué)習(xí)程序設(shè)計,比如在線課程、在線書籍、在線交流社區(qū)(具體見后文)。課程的書本和課堂往往只涉及最基本的知識,你們?nèi)绻胍钊氲貙W(xué)習(xí)和理解程序設(shè)計,就需要好好利用優(yōu)質(zhì)的在線資源。
-
閱讀書籍,這是學(xué)習(xí)程序設(shè)計的一個另一個重要途徑。在程序設(shè)計領(lǐng)域,有很多經(jīng)典的書籍,比如《C 程序設(shè)計語言》、《C++ Primer》、《算法導(dǎo)論》、《深入理解計算機系統(tǒng)》、《代碼大全》、《重構(gòu)》、《設(shè)計模式》等。這些書籍可以幫助你們更好地學(xué)習(xí)和理解程序設(shè)計的技巧和風(fēng)格,也可以幫助你們更好地解決問題。
-
動手實踐,這是最重要的。僅僅看書或者視頻是不夠的,你們需要自己動手敲代碼,調(diào)試錯誤,優(yōu)化性能。這樣才能提高你的程序設(shè)計能力和信心。實踐最簡單的方式就是練習(xí)程序設(shè)計題目,有很多這樣的在線練習(xí)平臺(具體見后文)。另外,你們也可以積極參加各種程序設(shè)計競賽,評估自己的水平,清楚自己和他人的差距,從而更好地提高自己。
-
熟練使用開發(fā)工具,這是提高你們的程序設(shè)計效率的重要途徑。你們需要熟練使用開發(fā)工具,比如編輯器、編譯器、調(diào)試器、性能分析器等。這些工具可以幫助你們更好地編寫、調(diào)試和優(yōu)化程序,提高你們的編程效率。其中,學(xué)會使用調(diào)試器最重要。調(diào)試器是一個可以幫助你檢查和修改代碼運行過程中的變量、狀態(tài)、錯誤等信息的工具。學(xué)會使用調(diào)試器可以讓你更快地發(fā)現(xiàn)和解決問題。普遍認為,學(xué)會調(diào)試才算是真正入門程序設(shè)計。
-
手寫代碼,它的重要性以后你們會逐漸明白的。在紙上手寫代碼可以鍛煉你的邏輯思維和記憶力,也可以幫助你備考和準(zhǔn)備面試。
-
參考代碼,但不要抄襲。參考別人的代碼可以幫助你們學(xué)習(xí)和理解程序設(shè)計的技巧和風(fēng)格,但是你們不能抄襲別人的代碼,因為這樣你們就失去了學(xué)習(xí)的意義。
-
加強英語閱讀能力,這是學(xué)習(xí)程序設(shè)計的必備技能。程序設(shè)計語言的語法和基本概念都是英文,因此你需要具備一定的英語閱讀能力,才能夠?qū)W習(xí)和理解程序設(shè)計語言的語法和基本概念。另外,程序設(shè)計語言的文檔和教程也是英文的,因此你們需要具備一定的英語閱讀能力,才能夠?qū)W習(xí)和理解程序設(shè)計語言的文檔和教程。
-
分享和討論,這是學(xué)習(xí)的最好方式。你們可以和同學(xué)、老師、朋友、同事分享和討論程序設(shè)計的問題和經(jīng)驗,這樣可以幫助你們更好地理解程序設(shè)計的技巧和風(fēng)格,也可以幫助你們更好地解決問題。你們也可以參加程序設(shè)計社區(qū)(具體見后文),這些社區(qū)可以幫助你們更好地學(xué)習(xí)和理解程序設(shè)計。
-
等等。
總之,學(xué)習(xí)程序設(shè)計需要你們不斷地練習(xí)和思考,需要你們不斷地積累和總結(jié),需要你們不斷地分享和討論,需要你們不斷地提高和進步。
注:請閱讀原文,2023-10-09 之后僅在原文中進行更新,敬請諒解。
3 在這個暑假,你們可以做什么?
上文是為了讓你們意識到學(xué)習(xí)程序設(shè)計的重要性,和學(xué)習(xí)程序設(shè)計的一些通用的建議。下文是為了讓你們知道在這個暑假,你們可以做什么。
-
明確學(xué)習(xí)路線。大一第一學(xué)期的專業(yè)必修課的教材有《C 語言程序設(shè)計》,大一第二學(xué)期的專業(yè)必修課的教材有《面向?qū)ο蟪绦蛟O(shè)計教程(C++ 語言描述)》。C/C++ 語言的語法是這兩本教材的主要內(nèi)容。計算機類和人工智能專業(yè)的學(xué)生最先學(xué)習(xí) C/C++ 有以下幾個原因:
-
C/C++ 是基礎(chǔ)的編程語言,它們可以幫助學(xué)生理解計算機的工作原理,例如內(nèi)存管理、指針、數(shù)據(jù)結(jié)構(gòu)等。
-
C/C++ 是廣泛使用的編程語言,它們在許多領(lǐng)域都有重要的作用,例如操作系統(tǒng)、游戲、圖形、網(wǎng)絡(luò)等。
-
C/C++ 是影響了許多其他編程語言的編程語言,學(xué)習(xí)了 C/C++ 之后,學(xué)生可以更容易地學(xué)習(xí)其他編程語言,例如 Java、Python、C# 等。
大二第一學(xué)期的專業(yè)必修課的教材有《數(shù)據(jù)結(jié)構(gòu)(C 語言版)》?!皵?shù)據(jù)結(jié)構(gòu) + 算法 = 程序”是一句經(jīng)典的計算機科學(xué)的格言,它的意思是說,任何一個程序都可以用數(shù)據(jù)結(jié)構(gòu)和算法來描述和實現(xiàn)。數(shù)據(jù)結(jié)構(gòu)是指數(shù)據(jù)的組織方式,算法是指數(shù)據(jù)的操作方式。這句話最早是由美國計算機科學(xué)家尼克勞斯·維爾特(Niklaus Wirth)在 1976 年出版的《算法 + 數(shù)據(jù)結(jié)構(gòu) = 程序》(Algorithms + Data Structures = Programs)一書中提出的。這句話強調(diào)了數(shù)據(jù)結(jié)構(gòu)和算法在程序設(shè)計中的重要性,也反映了計算機科學(xué)的本質(zhì)。數(shù)據(jù)結(jié)構(gòu)和算法是計算機科學(xué)的核心內(nèi)容,也是你們必須掌握的基礎(chǔ)知識。不同的數(shù)據(jù)結(jié)構(gòu)和算法有不同的優(yōu)缺點,適合解決不同的問題。選擇合適的數(shù)據(jù)結(jié)構(gòu)和算法可以提高程序的效率和可靠性,降低程序的復(fù)雜度和開發(fā)成本。具體的 C/C++ 學(xué)習(xí)路線可以參考 bilibili UP 主“程序員魚皮”的專欄《魚皮 C++ 學(xué)習(xí)路線一條龍!》。
-
-
學(xué)習(xí)中國大學(xué) MOOC 上翁愷的《程序設(shè)計入門 —— C 語言》和《C 語言程序設(shè)計進階》(除“第2周:ACLLib的基本圖形函數(shù)”和“第6周:交互圖形設(shè)計”)。它們作為一個整體是大一上學(xué)期最重要的專業(yè)必修課的課本《C 語言程序設(shè)計》的配套官方慕課,C 語言的語法是本課程的主要內(nèi)容。本慕課的課程概述指出“C 語言是古老而長青的編程語言,它具備了現(xiàn)代程序設(shè)計的基礎(chǔ)要求,它的語法是很多其他編程語言的基礎(chǔ),在系統(tǒng)程序、嵌入式系統(tǒng)等領(lǐng)域依然是無可替代的編程語言,在各類編程語言排行榜上常年占據(jù)前兩名的位置。本課程是向后續(xù)的計算機組成、操作系統(tǒng)、編譯原理、體系結(jié)構(gòu)等課程前進的基石,對于 C 語言本身甚至程序設(shè)計語言基礎(chǔ)原理的深入理解都是應(yīng)該掌握的?!币虼?,學(xué)好本課程非常重要,它是你們學(xué)習(xí)程序設(shè)計的基礎(chǔ)。本慕課的授課老師翁愷3,在中國大學(xué) MOOC 開設(shè)了 C 語言程序設(shè)計、Java 語言程序設(shè)計等課程,是目前選課人數(shù)最多、最活躍的課程之一,是累計選課人數(shù)最多的教師之一,累計選課人次 300 余萬,單次選課最高 28 萬人,其中兩門課程被認定為國家精品在線開放課程(其中包括本慕課)。作者本人(下文用“我”替代)就是通過翁愷的慕課學(xué)習(xí)《C 語言程序設(shè)計》,開學(xué)后發(fā)現(xiàn)翁愷所講的內(nèi)容比課本詳細很多,因為他會教你如何理解 C 語言的語法背后的原理。
-
基本掌握一個適合編寫 C/C++ 語言的開發(fā)應(yīng)用程序。開發(fā)應(yīng)用程序主要分為代碼編輯器和 IDE(Integrated Development Environment,集成開發(fā)環(huán)境,集成了代碼編寫功能、分析功能、編譯功能、調(diào)試功能等一體化的開發(fā)軟件服務(wù)套)。對于作為程序設(shè)計的入門者的你們往往會被推薦使用 IDE,因為它可以即裝即用。但是,由于組件很多(對于現(xiàn)在的你們還有我來說都是不必要的),它們往往會占用很大的磁盤空間和內(nèi)存,嚴(yán)重浪費系統(tǒng)資源;由于功能復(fù)雜(同樣是是不必要的),它們的界面往往會顯得十分臃腫,對你們十分不友好;等等。代碼編輯器不僅沒有以上缺點,而且往往具有可擴展性、跨平臺兼容性等特點。因此,在本指南中,我推薦你們使用最受全球開發(fā)者歡迎的由微軟開發(fā)且跨平臺的免費代碼編輯器 Visual Studio Code 4。該軟件以擴展的方式支持語法高亮、代碼自動補全(又稱 IntelliSense)、代碼重構(gòu)功能,并且內(nèi)置了命令行工具和 Git 版本控制系統(tǒng)。用戶可以更改主題和鍵盤快捷方式實現(xiàn)個性化設(shè)置,也可以通過內(nèi)置的擴展程序商店安裝其他擴展以拓展軟件功能。在 2019 年的 Stack Overflow 組織的開發(fā)者調(diào)查中,Visual Studio Code 被認為是最受開發(fā)者歡迎的開發(fā)環(huán)境。據(jù)調(diào)查,87317 名受訪者中有 50.7% 的受訪者聲稱正在使用 Visual Studio Code。根據(jù)我的搜索結(jié)果,Visual Studio Code 的一些具體優(yōu)點如下:
-
跨平臺:Visual Studio Code 可以在 Windows,macOS 和 Linux 上運行,無需擔(dān)心平臺兼容性問題。
-
輕量級:Visual Studio Code 相比于 Visual Studio 等 IDE,更加輕便和快速,不需要大量的下載和安裝,也不占用太多的磁盤空間和內(nèi)存。
-
智能:Visual Studio Code 內(nèi)置了對 JavaScript,TypeScript 和 Node.js 等 Web 開發(fā)語言的支持,以及 IntelliSense 代碼補全,語法高亮,代碼格式化,代碼重構(gòu)等功能,可以提高編碼效率和質(zhì)量。
-
可定制:Visual Studio Code 可以根據(jù)個人喜好和需求進行各種設(shè)置和調(diào)整,包括主題,字體,快捷鍵,編輯器行為等。
-
可擴展:Visual Studio Code 擁有一個活躍的開源社區(qū),提供了數(shù)千種擴展插件,可以為不同的語言和運行時環(huán)境(如 C/C++,C#,Java,Python,PHP,Go 等)提供更多的功能和工具,例如調(diào)試器,測試器,版本控制器等。
-
適用性廣:Visual Studio Code 不僅適合于 Web 開發(fā)和云應(yīng)用開發(fā),也可以用于其他領(lǐng)域和場景的開發(fā),例如數(shù)據(jù)科學(xué),機器學(xué)習(xí),物聯(lián)網(wǎng)等。它可以作為主力開發(fā)工具,也可以作為代碼編輯器或文本編輯器使用。
-
等等。
總之,Visual Studio Code 是非常優(yōu)秀的代碼編輯器且完全適合你們。你們要做的就是要會配置(Visual Studio Code 可以經(jīng)過自行配置實現(xiàn) IDE 的幾乎所有的功能,當(dāng)然還有 IDE 所不具備的功能,因為就像上文說的具有可定制和可拓展的優(yōu)點)和使用它,關(guān)于這些你們不必擔(dān)心,只需參考我的另一篇文章《Visual Studio Code (VS Code) – C/C++ 入門》,這篇文章是我翻譯 Visual Studio Code 官方文檔中與 C/C++ 相關(guān)的部分后寫的。在各大 IT 博客論壇發(fā)表后,獲得了很多的評論,其中有很多是在配置 Visual Studio Code 時遇到的問題,我都一一解答后基本都解決了。近期,為了讓你們按照文章操作起來更方便,我根據(jù)評論中的所有的問題、剛剛發(fā)布的 AI (要學(xué)會適當(dāng)使用)等功能將文章進行了一次最大的更新,其中我還更改了官方文檔中的操作步驟的順序,使其更加合理(有些問題就是操作步驟的順序不當(dāng)而引起的)。文章中指出“本教程內(nèi)容較多,但若嚴(yán)格按照本教程操作,就能輕松實現(xiàn) Visual Studio Code – C/C++ 入門,所以請耐心完整地學(xué)習(xí)本教程?!绷硗?,若遇到任何問題,可以咨詢我(在手機上點擊,沒事的情況下會秒回)哦!
-
-
練習(xí)【新手上路】語法入門&算法入門題單。學(xué)完《程序設(shè)計入門 —— C 語言》的 “第2周:計算” 后,就可以開始了。練習(xí)的重要性不用再次強調(diào)。
4 更多
-
程序設(shè)計在線練習(xí)平臺
-
PTA
-
牛客競賽
-
洛谷
-
LeetCode
-
Codeforces
-
AtCoder
-
AcWing
-
…
-
-
程序設(shè)計在線交流社區(qū)
-
Stack Overflow
-
SegmentFault
-
知乎
-
CSDN
-
…
-
-
《2023 全國普通高校大學(xué)生競賽分析報告》競賽目錄(教育部認可的 84 項全國大學(xué)生學(xué)科競賽)中的程序設(shè)計競賽
-
ACM-ICPC 國際大學(xué)生程序設(shè)計競賽
-
中國高校計算機大賽 - 團體程序設(shè)計天梯賽
-
藍橋杯全國軟件和信息技術(shù)專業(yè)人才大賽
-
百度之星·程序設(shè)計大賽
-
碼蹄杯全國職業(yè)院校程序設(shè)計大賽
其它的程序設(shè)計競賽可以參考另外一位博主的博客《計算機專業(yè)的同學(xué)應(yīng)該參加哪些比賽?》。
-
-
源代碼托管平臺
-
GitHub
-
Gitee
-
…
-
-
程序設(shè)計 - 維基百科,自由的百科全書 ??
-
程序設(shè)計語言 - 維基百科,自由的百科全書 ??
-
翁愷 - 浙江大學(xué)個人主頁 ??文章來源:http://www.zghlxwxcb.cn/news/detail-605148.html
-
Visual Studio Code - 維基百科,自由的百科全書 ??文章來源地址http://www.zghlxwxcb.cn/news/detail-605148.html
到了這里,關(guān)于一位計科學(xué)長寫給 2023 級計算機類和人工智能專業(yè)的同學(xué)們的程序設(shè)計入門指南的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!