录了视频: https://www.bilibili.com/video/BV1x2vjeuEdQ/?share_source=copy_web&vd_source=57ff17a6f0b3b002c6b2eca57af07900 ,下边是文字稿
# 编程可以做什么
大部分人进入大一对于计算机还是一无所知的,比如我。大一的时候开始学 C++ ,整天对着黑框框,不禁在想,自己学了假计算机吗,这是在干什么?
![ss3-1]( https://windliangblog.oss-cn-beijing.aliyuncs.com/ss3-1.png)
但我想告诉你的是,计算机不仅如此,对于日常使用的应用可以分为两类,一类就是最开始学习,需要在命令行运行的程序,一般普通用户很少用。
另一类就是有 GUI(图形界面)的应用,手机上的各种应用,微信、小红书、支付宝、抖音,还有各种各样的微信小程序,电脑上的各种应用,浏览器、百度网盘,以及在浏览器打开的各种各样的网页。等等等等……所有的我们都可以做,结合现在的 chatGPT ,各个技术栈的壁垒更进一步的被打破,只要我们知道编程基本的概念,现在可以在计算机上实现自己想要的任何东西。
先分享下我自己的经历:[大学 4 年的生活]( https://www.zhihu.com/question/614706706/answer/3146012068)。
# 大学会学什么
对于大学,尤其是计算机专业,更多的**需要自学**,学校的课程更多的是计算机底层以及数学上的东西。
以清华大学的为例:[https://www.tsinghua.edu.cn/jxjywj/bkzy2023/zxzy/29-1.pdf]( https://www.tsinghua.edu.cn/jxjywj/bkzy2023/zxzy/29-1.pdf)。
![]( https://windliangblog.oss-cn-beijing.aliyuncs.com/image-20240711075945131.png)
如果单纯只学完这些课会发现还是啥也干不了,从计算机分层角度来看:
1. **硬件层 (Hardware Layer)**:
* 物理设备:CPU 、RAM 、硬盘、SSD 、键盘、鼠标、显示器等。
* 硬件电路和逻辑门:实现基本计算和数据处理功能。
2. **微架构层 (Microarchitecture Layer)**:
* CPU 内部结构:寄存器、缓存、ALU 、控制单元等。
* 指令集架构 (ISA):定义 CPU 可以执行的指令集。
3. **系统软件层 (System Software Layer)**:
* 操作系统 (OS):管理硬件资源和提供基本服务,如文件系统、内存管理、进程管理等。
* 驱动程序 (Drifers):与操作系统协作,直接与硬件设备进行通信和控制。
4. **应用软件层 (Application Software Layer)**:
* **应用程序 (Applications)**:包括各种类型的应用软件,如文字处理软件、浏览器、游戏、社交媒体应用、办公软件等。
* **数据库管理系统 (DBMS)**:如 MySQL 、PostgreSQL 、Oracle 、SQL Serfer 等。
* **应用编程接口 (APIs)**:提供了应用程序与操作系统或其他服务之间的通信接口。
初学计算机期望做的是第 4 层中的应用程序,各类 app 、小程序等,但学校除个别选修课可能会教,基本上不会涉及了。
其他学的底层知识,说有用也没用,说没用也可能有点用。
绝大数人毕业以后其实就是做各个公司的应用程序,进行业务功能的迭代,底层数据库、操作系统这些只要知道怎么用就可以,如果不了解原理也没任何的影响。
但如果了解了一点原理,当执行上层命令的时候,就会有一个具象的认识,此时底层干啥干啥了。当然也不排除未来转换岗位,可能突然就会写数据库或者操作系统相关的了。
补充一点,学校的老师的教学风格并不适合所有人,如果你觉得吃力或者跟不上是非常正常的,完全可以在互联网上相关的课程进行自学,只要保证最后考试没问题就可以。比如 [**3Blue1Brown**]( https://space.bilibili.com/88461692?spm_id_from=333.337.0.0) 的课简直降维打击。还有各个知名大学的公开课,比如哈佛的 [cs50]( https://www.bilibili.com/video/BV1HW4y1A7Yi/?spm_id_from=333.337.search-card.all.click&vd_source=1601984bd34a1c024e107764b2a8c7e0)。
# 大学可以做什么
除了保证学校课程的成绩,在大学还可以做很多很多的事情。
## 参加比赛
ACM 相对来说是含金量最高的比赛,一般三个人组队,然后在规定时间和其他小组比谁做对的算法题多。题目做完提交,如果成功了就会得到令人兴奋的 「 AC 」,accept ,就是题目做对了,还有就是「 AK 」,all kill ,完成了所有题目。
自己大一的时候,对 ACM 不是很感冒,总觉得那些题目很无聊。现在反而有点喜欢上了算法(算法就是解决一个问题的思路,方法,具体操作),每解一道题的喜悦,是他人无法体会的。我推荐大家先去尝试尝试 ACM ,未来找工作**算法题是必备的**。
可以直接到 [leetcode]( https://leetcode.cn/problemset/) 体验,我之前也总结过一些 [题解]( https://leetcode.wang/)。
还有一些其他的蓝桥杯、挑战杯等等,都可以去了解,很多我也没有参加过,可以参考 [大学适合计算机专业的所有竞赛有哪些?]( https://www.zhihu.com/question/502443310)。
## 科研
所谓科研就是看别人的论文,了解别人的思想,去改进作者的算法。怎么判断是否改进了呢?举个简单的例子,预测明天天气,作者的正确率 90%,你的算法经过实验发现是 95%,你这个算法就比原作者的好,然后你就可以发论文了。就是看论文,写代码,做实验,分析实验数据,不断的尝试。
怎么开始科研呢?胆子大一些,直接去找老师,问老师有没有什么项目,自己想跟着做。相当于提前研究生的生活,我当时搞的是演化算法,深度学习也很火,现在研究比较多的估计是大模型了。
## 做应用
做应用,相比其他两个会更有成就感。因为做出来可以很快的让你的同学用到或者服务自己。
上手最快的是学习 js ,可以写网页或者小程序,发布之后就可以让同学直接使用,同时可以利用 Node.js 编写后端,相当于一门语言做所有的事情。
比如纯前端的 [http://idea.windliang.wang/]( http://idea.windliang.wang/)、[小程序挑战星期几]( https://windliang.wang/2021/12/11/%E4%B8%96%E7%95%8C%E6%9C%AB%E6%97%A5%E8%A7%84%E5%88%99-DoomsdayRule/),前后端交互的 [http://game.windliang.wang/]( http://game.windliang.wang/),[小程序个性转换器]( https://windliang.wang/2024/05/26/%E7%AC%AC%E4%B8%80%E4%B8%AA%E7%94%A8%E4%BA%86ai%E7%9A%84%E5%B0%8F%E7%A8%8B%E5%BA%8F-%E8%AF%AD%E6%B0%94%E5%8F%8B%E5%A5%BD%E8%BD%AC%E6%8D%A2%E5%99%A8-%E4%BB%8E%E5%BC%80%E5%8F%91%E5%88%B0%E5%A4%87%E6%A1%88%E4%B8%8A%E7%BA%BF%E5%85%A8%E8%BF%87%E7%A8%8B%E5%88%86%E4%BA%AB/),如果比较迷茫这里推荐一下 [0 基础入门前端的课程]( https://xiaobot.net/p/fe?refer=1c9e2277-4405-4c12-93a9-5e982f62c9c6),会介绍前端的方方面面,可以快速入门,也可以查漏补缺。
当然你也可以学习 cocos ,来做一些游戏,最快的还是去发布微信的小游戏,比如我之前做的 [挑战 1024]( https://windliang.wang/2022/11/07/%E5%89%8D%E7%AB%AFer%E5%BC%80%E5%8F%91cocos%E5%B0%8F%E6%B8%B8%E6%88%8F%E5%BF%AB%E9%80%9F%E5%85%A5%E9%97%A8/)。如果你要开发更大型的游戏,那么就需要去学习 Unity 了。
当然做应用不止 js ,也有安卓、iOS 、桌面端开发等,甚至也可以开发底层的数据库、操作系统,它们也都有各自的编程语言,大学期间多尝试,和最终的工作岗位选择没有必然的联系,找到自己最感兴趣的。
## 参与开源
[github]( https://github.com/) 是程序员一定离开不了的一个网站了,如果平常用到一些开源库,发现有问题那么我们参与到项目开发中也完全是可能的。
可以参考一下别人的经历,[给 Vue 生态贡献代码的这一年]( https://mp.weixin.qq.com/s/Xt9LrxA1ucGcppr-0HSczw)。
以 [echarts]( https://github.com/apache/echarts) 为例,可以看下贡献指南。
![]( https://windliangblog.oss-cn-beijing.aliyuncs.com/image-20240714101241883.png)
## 公司项目
一些公司会专门举办一些活动,专门面对在校大学生做一些东西。
知名的比如谷歌的 [编程之夏]( https://summerofcode.withgoogle.com/),其他的可以参考 [https://erdengk.github.io/gsoc-analyse/cn/activity/]( https://erdengk.github.io/gsoc-analyse/cn/activity/)。
字节有 [青训营]( https://juejin.cn/user/3386151545092589/posts) 的活动,也可以关注现在还会不会有,还有其他公司的可以网上搜一下。
## 付费课程
虽然网上有很多的免费课程了,但付费课程也是一个不错的选择,它会更加系统,会减少自己走弯路的时间。
国内目前还可以的有两大平台,[极客时间]( https://time.geekbang.org/resource) 和 [稀土掘金]( https://juejin.cn/course),极客时间学生认证之后还能半价优惠,进一步省钱的话可以从 [https://coursesub.top/]( https://coursesub.top/) 下单。
# 时间线
大学毕业后就是三条路,工作、保研、考研。
而这一切需要从**大三下学期**一开始就需要做抉择了,是的,大学真正学习的时间仅仅有两年半。
[保研时间线]( https://windliang.wang/2017/12/30/%E4%BF%9D%E7%A0%94%E5%85%A8%E8%BF%87%E7%A8%8B/):大三下学期大概 4 月开始投递保研夏令营。
工作时间线:大三下学期,3 月、4 月各个公司开始春招,主要是招 7 、8 月暑假的实习生,实习过之后有拿 offer 的资格。
8 、9 月开始秋招,面试通过后就可以拿到 offer ,第二年毕业后入职。关于秋招之前写过 [互联网秋招时间线]( https://zhuanlan.zhihu.com/p/138713115)。
[考研时间线]( https://www.sohu.com/a/638384610_121401178):大三下学期开始如果保研不成功,就需要看是需要决定是春招找实习还是开始准备考研了,考研会在 12 月开始。
# 工作有什么
最简单的就是到 [招聘官方网站]( https://jobs.bytedance.com/experienced/position) 查看。
![]( https://windliangblog.oss-cn-beijing.aliyuncs.com/image-20240714102925833.png)
大部分岗位还是业务开发,也就是开发我们日常用的各类 app 、小程序的功能迭代,会涉及到前端、后端、算法。从我个人经验来看,一个需求开发中,前端、后端、算法配比大概是 2:5:1 ,因此后端招的人数是最多的。
日常工作大概是这样:[在美团工作的第一年]( https://windliang.wang/2021/05/29/%E5%9C%A8%E7%BE%8E%E5%9B%A2%E5%B7%A5%E4%BD%9C%E7%9A%84%E7%AC%AC%E4%B8%80%E5%B9%B4/)。
当然除了业务开发,还有很多岗位不是面向普通用户的,比如数据库的维护、服务器的运维、底层算法的优化等等。
大家可以在大学期间都了解一下,找工作的时候可以选择自己感兴趣的岗位进行投递。
# 总
以上仅我从我个人经历总结出来的,会有一定的偏差,仅供参考,最后祝大家大学生活充实快乐!
编程非常适用一万小时定律,只有多写代码、多写代码、多写代码才能提高自己的编程能力,另外推荐 [刻意练习]( https://mp.weixin.qq.com/s/vMTSeO8JeQwHqfwX9_ZIGA) 这本书,适合于学习每个新技能。 |
|