程序员入门指南

发布时间 2023-08-02 21:16:05作者: Icys

程序员入门指南

本文作者:futz12 ,szx0427

虽然本人由于多方面原因没有选择计科/软工(对AI和图形算法的热爱),但是根据多年研究经验(业余的),打算给各位推荐基本相关的书和软件(主要是学习思路)。

注意:学习编程不一定是搞那些绚丽的界面,开发有趣的游戏。很多有用且享誉世界的程序并没有那些高大上的界面,相反他们在默默无闻的地方发挥他们至关重要的作用。

作为初学者,所要面对的是枯燥无味的程序界面——控制台(一个黑色的框框),不要因为你的心里落差而放弃了编程

C/C++

C/C++开发算是我比较常用的开发方式,这一方面我比较有发言权(桌面开发方向)。C语言本质上就是在学计算机,了解了C语言的方方面面也就了解了计算机的一些基本运行原理。C/C++虽然难学,但是基本上学好了C/C++其他语言都可以速通。

语言入门

推荐书目

注意以下推荐的书均可找到相应的电子版(初学可以对着电子版来,以免学不进去造成浪费)

推荐书目 推荐原因
啊哈C语言 是一本非常基础的C语言教程(面向青少年/儿童的),如果对计算机原理完全没有了解的同学可以看看。
Essential C++ 薄,且能快速入门
中学生计算机程序设计 虽然写的不怎么样,但是可以让人快速的写出程序并且跑起来
推荐网站
推荐网站 网址 推荐原因
CSDN https://www.csdn.net/ 虽然CSDN以他的广告多,文章抄袭多而臭名昭著。但是CSDN往往可以提供给初学者快速且准确的解答。
博客园 https://www.cnblogs.com/ 博客园则和CSDN相反,博客园文章相对质量比较高,可以基于开发者相对深入的帮助。同时博客园也可以作为自己的学习日记,把自己的学习感悟之类的写上去。(顺便给自己博客园主页打个广告:https://www.cnblogs.com/Icys)。
百度 https://www.baidu.com 同样的,百度在一些编程老手口中是臭名昭著的,一个是他的广告,另一个是作为一个中文搜索引擎没法获得英文的一手资料。但是,由于新手没法准确的表达自己的问题,百度可以提供更适合新手的答案。新手遇到的99%问题可以通过百度解决,善用百度。
必应 https://cn.bing.com/ 必应和百度相对。必应可以提供更多的国外一手资料,但是他的搜索结果对新人可能不是很友好。
洛谷 https://www.luogu.com.cn/ 在洛谷可以提高自己构造代码的能力,提高逻辑思维能力
推荐工具
推荐工具 推荐原因
DevC++ 4.9.9.2 DevC++因为和工作脱节为人诟病,但是作为初学者,想快速的把代码跑起来,DevC++是你的不二之选。
虚拟机(VirtualBox) 虚拟机是一种在电脑里运行另一个电脑系统的软件(主要就是为了折腾,只有充分了解电脑和电脑系统才能更好的编程)。
Linux系统(需要对Windows有一定的基本功) 使用Linux对于初学者最大的好处就是折腾新手,在折腾的过程中可以提高自己对电脑的使用能力,更能了解系统,软件之间的关系。Linux系统有很多种,这里推荐的是Ubuntu和Fedora(最好是在虚拟机里运行,对自己折腾能力极为自信的可以找台电脑试着安装一下)。如果您是Win10/11用户可以试一下微软的WSL1(注意是1而不是2)。在Linux下您可以学到终端的用法,这是您未来长期需要使用的工具。作为一个合格的程序员不是说你会多少编程语言,最重要的是你解决问题的能力,而在折腾中就是在锻炼你的耐挫,解决问题的能力。试着在Linux上生存一段时间吧!

语言进阶

在完成语言入门的时候,想必大家已经拥有了一部分的编码能力。这时候需要将基础的编码能力开始向开发项目转变。

在进阶阶段,我们需要进一步了解C/C++的语言特性,包括函数反映到计算机底层是什么,C++ STL/Boost,IDE是如何完成编译任务的,如何使用命令行调试工具,C/C++相对其他语言的本质区别是什么,清楚C++的class,模板,多态继承,不得不承认这是一个极为困难的过程。

推荐书目
推荐书目 推荐原因
C++ Primer C++的百科全书,关于C++的一切都在上面(其实也不过是冰山一角)。
Effective C++ 让你更好的了解C++应该怎么写。
算法导论 虽然和C++无关,但是在进阶阶段,你需要强硬的算法功底才能写出优秀高效的程序(你面试反正是要)。
Windows 程序设计(选) 很老的一本书了,Windows是一个使用范围很大的系统,掌握Windows编程可以方便以后使用其他类库的能力。学习这本书可以让你快速(相对的)写起一个程序。但是不要使用配套版本的VS工具(尽量使用最新版,这样做可能会使得您寸步难行,但是请不要放弃)。

很少,对吗。/xyx

推荐网站
推荐网站 网址 推荐原因
CSDN 同上 你以为你入门了就可以看不起用CSDN吗?
博客园 同上 博客园学算法很合适。
百度/必应 同上 该用还得用。
Stack Overflow https://stackoverflow.co/ 一个外国的网站,可以用英文找到您遇到的问题以及解决方法。
Leet Code https://leetcode.cn/problemset/all/ 程序员也需要刷题,在洛谷上做完基础的题目后就来这里,做多线程之类更符合项目的题目,提高自己建模的能力。
推荐工具
推荐工具 推荐原因
GCC(Mingw)/MSVC 这里指的是编译器(g++.exe,cl.exe)请使用命令行去编译你写的程序(多个cpp文件的程序,尽量不使用IDE),我见过很多大四学生也不知道怎么添加 include,为什么要添加lib,反正各种杂七杂八的问题,很多人拿着python的思维,以为一个import就能开始写代码了(C++ 马上也能这样了,尽请期待)。归根结底就是被IDE保护太好了。
CMake 去编译几个软件来折磨一下自己,比如OpenCV,Boost,7-Zip等。
Visual Studio Code + CMake插件 写小程序我建议用这玩意,折磨一下自己
Visual Studio 很好用,但是请少用
Clion(作为大学生您应该可以免费使用该工具) 很好用,但是请少用

这时候你写的程序就应该开始使用到 C/C++ 库命令以外的东西了,比如 Windows.h 等,开始学习多线程等。

走向项目

推荐书目

这里开始其实基本不需要书了,绝大多数网上的英文资料您应该开始着手消化了。比如您的程序需要图像处理功能,用到了OpenCV,这时候您的最佳选择不是网上买一本OpenCV的书,而是去OpenCV的官方网站上看它提供的官方文档。

推荐网站
推荐网站 网址 推荐原因
同进阶 同进阶 同进阶
各种Docs 很多,看你用什么工具,OpenCV就看OpenCV的,Windows就看MS Docs 当一个字典查,要有耐心
各种开发社区 同上 在交流中成长
GitHub https://github.com 当您开始写项目的时候可以去上面看看别人的是怎么写的代码的,作为一个程序员您应该去看看,在这个阶段相信您能找到优雅的上这个网站的方法。(给自己Github打个广告:https://gtihub.com/futz12)
知乎 https://www.zhihu.com 前面不推荐的原因是因为上面大佬如云,大佬说的是正确的,但是未必是适合你的。但是现在您已经掌握了基本的代码能力,可以上知乎开拓一下视野了,比如C++新标准,OpenMP能实现什么骚操作。
推荐工具
推荐工具 推荐原因
Visual Studio 您已经是个成熟的大学生了,如果您在Windows上编程,VS是一个明智的选择
Clion(作为大学生您应该白嫖这个工具) 这也是个明智的选择
Qt 想写窗口程序了?想写手机程序了?想让自己程序被别人看到?可以试试看
Android Studio(需要会Java) 写手机程序(安卓)

其他编程语言

说实话,不是很了解,不在这误人子弟了

后记

笔者也不过是个高中毕业生而已,只不过是掌握了一些对于同龄人的信息差,不算是编程高手,更不是顶尖一线专家,只是想给走入这个我热爱的行业的同学一点帮助,写出来的内容未必正确,仅供参考。

  1. 值得注意的是,成为一个合格的程序员,并不是要掌握更多的编程技能,而是如何更好的解决问题。学会了编程只不过是一个结果,而您的目的是解决问题。

  2. 在学习过程中,除了您身边的同伴以外,为了谋求更长远的进步,您可能需要在网上寻求志同道合的伙伴。但是也不要过度沉迷于网络社交(本人就是)。

  3. 也不要养成所谓的鄙视链,不要进所谓的编程群(进那种解决实际项目需求的,给自己的QQ群打个广告:904511841)。

48522ea783a3c182a1d2782bddc98465
  1. 多去打打笔试,蓝桥杯,ACM都可以,可以增强自己的竞争力。