跳转到内容
View in the app

A better way to browse. Learn more.

彼岸论坛

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.
欢迎抵达彼岸 彼岸花开 此处谁在 -彼岸论坛

[分享发现] 转眼高中毕业十年了,总结了篇文章解决大学生学习编程的所有迷茫

发表于

录了视频: https://www.bilibili.com/video/BV1x2vjeuEdQ/?share_source=copy_web&vd_source=57ff17a6f0b3b002c6b2eca57af07900 ,下边是文字稿

编程可以做什么

大部分人进入大一对于计算机还是一无所知的,比如我。大一的时候开始学 C++ ,整天对着黑框框,不禁在想,自己学了假计算机吗,这是在干什么?

ss3-1

但我想告诉你的是,计算机不仅如此,对于日常使用的应用可以分为两类,一类就是最开始学习,需要在命令行运行的程序,一般普通用户很少用。

另一类就是有 GUI(图形界面)的应用,手机上的各种应用,微信、小红书、支付宝、抖音,还有各种各样的微信小程序,电脑上的各种应用,浏览器、百度网盘,以及在浏览器打开的各种各样的网页。等等等等……所有的我们都可以做,结合现在的 chatGPT ,各个技术栈的壁垒更进一步的被打破,只要我们知道编程基本的概念,现在可以在计算机上实现自己想要的任何东西。

先分享下我自己的经历:大学 4 年的生活

大学会学什么

对于大学,尤其是计算机专业,更多的需要自学,学校的课程更多的是计算机底层以及数学上的东西。

以清华大学的为例:https://www.tsinghua.edu.cn/jxjywj/bkzy2023/zxzy/29-1.pdf

image-20240711075945131.png

如果单纯只学完这些课会发现还是啥也干不了,从计算机分层角度来看:

  1. **硬件层 (Hardware Layer)**:
  • 物理设备:CPU 、RAM 、硬盘、SSD 、键盘、鼠标、显示器等。

  • 硬件电路和逻辑门:实现基本计算和数据处理功能。

  1. **微架构层 (Microarchitecture Layer)**:
  • CPU 内部结构:寄存器、缓存、ALU 、控制单元等。

  • 指令集架构 (ISA):定义 CPU 可以执行的指令集。

  1. **系统软件层 (System Software Layer)**:
  • 操作系统 (OS):管理硬件资源和提供基本服务,如文件系统、内存管理、进程管理等。

  • 驱动程序 (Drivers):与操作系统协作,直接与硬件设备进行通信和控制。

  1. **应用软件层 (Application Software Layer)**:
  • **应用程序 (Applications)**:包括各种类型的应用软件,如文字处理软件、浏览器、游戏、社交媒体应用、办公软件等。

  • **数据库管理系统 (DBMS)**:如 MySQL 、PostgreSQL 、Oracle 、SQL Server 等。

  • **应用编程接口 (APIs)**:提供了应用程序与操作系统或其他服务之间的通信接口。

初学计算机期望做的是第 4 层中的应用程序,各类 app 、小程序等,但学校除个别选修课可能会教,基本上不会涉及了。

其他学的底层知识,说有用也没用,说没用也可能有点用。

绝大数人毕业以后其实就是做各个公司的应用程序,进行业务功能的迭代,底层数据库、操作系统这些只要知道怎么用就可以,如果不了解原理也没任何的影响。

但如果了解了一点原理,当执行上层命令的时候,就会有一个具象的认识,此时底层干啥干啥了。当然也不排除未来转换岗位,可能突然就会写数据库或者操作系统相关的了。

补充一点,学校的老师的教学风格并不适合所有人,如果你觉得吃力或者跟不上是非常正常的,完全可以在互联网上相关的课程进行自学,只要保证最后考试没问题就可以。比如 3Blue1Brown 的课简直降维打击。还有各个知名大学的公开课,比如哈佛的 cs50

大学可以做什么

除了保证学校课程的成绩,在大学还可以做很多很多的事情。

参加比赛

ACM 相对来说是含金量最高的比赛,一般三个人组队,然后在规定时间和其他小组比谁做对的算法题多。题目做完提交,如果成功了就会得到令人兴奋的 「 AC 」,accept ,就是题目做对了,还有就是「 AK 」,all kill ,完成了所有题目。

自己大一的时候,对 ACM 不是很感冒,总觉得那些题目很无聊。现在反而有点喜欢上了算法(算法就是解决一个问题的思路,方法,具体操作),每解一道题的喜悦,是他人无法体会的。我推荐大家先去尝试尝试 ACM ,未来找工作算法题是必备的

可以直接到 leetcode 体验,我之前也总结过一些 题解

还有一些其他的蓝桥杯、挑战杯等等,都可以去了解,很多我也没有参加过,可以参考 大学适合计算机专业的所有竞赛有哪些?

科研

所谓科研就是看别人的论文,了解别人的思想,去改进作者的算法。怎么判断是否改进了呢?举个简单的例子,预测明天天气,作者的正确率 90%,你的算法经过实验发现是 95%,你这个算法就比原作者的好,然后你就可以发论文了。就是看论文,写代码,做实验,分析实验数据,不断的尝试。

怎么开始科研呢?胆子大一些,直接去找老师,问老师有没有什么项目,自己想跟着做。相当于提前研究生的生活,我当时搞的是演化算法,深度学习也很火,现在研究比较多的估计是大模型了。

做应用

做应用,相比其他两个会更有成就感。因为做出来可以很快的让你的同学用到或者服务自己。

上手最快的是学习 js ,可以写网页或者小程序,发布之后就可以让同学直接使用,同时可以利用 Node.js 编写后端,相当于一门语言做所有的事情。

比如纯前端的 http://idea.windliang.wang/小程序挑战星期几,前后端交互的 http://game.windliang.wang/小程序个性转换器,如果比较迷茫这里推荐一下 0 基础入门前端的课程,会介绍前端的方方面面,可以快速入门,也可以查漏补缺。

当然你也可以学习 cocos ,来做一些游戏,最快的还是去发布微信的小游戏,比如我之前做的 挑战 1024。如果你要开发更大型的游戏,那么就需要去学习 Unity 了。

当然做应用不止 js ,也有安卓、iOS 、桌面端开发等,甚至也可以开发底层的数据库、操作系统,它们也都有各自的编程语言,大学期间多尝试,和最终的工作岗位选择没有必然的联系,找到自己最感兴趣的。

参与开源

github 是程序员一定离开不了的一个网站了,如果平常用到一些开源库,发现有问题那么我们参与到项目开发中也完全是可能的。

可以参考一下别人的经历,给 Vue 生态贡献代码的这一年

echarts 为例,可以看下贡献指南。

image-20240714101241883.png

公司项目

一些公司会专门举办一些活动,专门面对在校大学生做一些东西。

知名的比如谷歌的 编程之夏,其他的可以参考 https://erdengk.github.io/gsoc-analyse/cn/activity/

字节有 青训营 的活动,也可以关注现在还会不会有,还有其他公司的可以网上搜一下。

付费课程

虽然网上有很多的免费课程了,但付费课程也是一个不错的选择,它会更加系统,会减少自己走弯路的时间。

国内目前还可以的有两大平台,极客时间稀土掘金,极客时间学生认证之后还能半价优惠,进一步省钱的话可以从 https://coursesub.top/ 下单。

时间线

大学毕业后就是三条路,工作、保研、考研。

而这一切需要从大三下学期一开始就需要做抉择了,是的,大学真正学习的时间仅仅有两年半。

保研时间线:大三下学期大概 4 月开始投递保研夏令营。

工作时间线:大三下学期,3 月、4 月各个公司开始春招,主要是招 7 、8 月暑假的实习生,实习过之后有拿 offer 的资格。

8 、9 月开始秋招,面试通过后就可以拿到 offer ,第二年毕业后入职。关于秋招之前写过 互联网秋招时间线

考研时间线:大三下学期开始如果保研不成功,就需要看是需要决定是春招找实习还是开始准备考研了,考研会在 12 月开始。

工作有什么

最简单的就是到 招聘官方网站 查看。

image-20240714102925833.png

大部分岗位还是业务开发,也就是开发我们日常用的各类 app 、小程序的功能迭代,会涉及到前端、后端、算法。从我个人经验来看,一个需求开发中,前端、后端、算法配比大概是 2:5:1 ,因此后端招的人数是最多的。

日常工作大概是这样:在美团工作的第一年

当然除了业务开发,还有很多岗位不是面向普通用户的,比如数据库的维护、服务器的运维、底层算法的优化等等。

大家可以在大学期间都了解一下,找工作的时候可以选择自己感兴趣的岗位进行投递。

以上仅我从我个人经历总结出来的,会有一定的偏差,仅供参考,最后祝大家大学生活充实快乐!

编程非常适用一万小时定律,只有多写代码、多写代码、多写代码才能提高自己的编程能力,另外推荐 刻意练习 这本书,适合于学习每个新技能。

Featured Replies

No posts to show

创建帐户或登录来提出意见

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.