我的编程之路

2018年3月31日,西湖西边的山

上大学之前,我没有接触过编程,用电脑就是玩玩游戏,上个网啥的。对电脑有这么点兴趣,就报了计算机科学与技术专业(也叫 CS),从此走上了敲代码的不归路…大一的课程就有 C 语言,操作性非常强,要上机考试,题目是写个函数做数学运算。我觉得用 C 语言作为编程入门并不合适,因为它不如 Java、Python 等语言高级(这里的高级是指对开发者友好),光是指针就把人搞得晕晕乎乎。C 是非常接近底层的语言,开发操作系统、硬件驱动还行,没有人拿它来做应用层。做不出简单的小应用,比如小游戏或者网页,就缺少及时的正向反馈,大家都没有学习的兴趣。之后学习了 web 开发,俗称前端,做过几个小网站,慢慢体会了编程的乐趣,这期间用的是 HTML、CSS、JavaScript、PHP。网页其实就是一种经过排版的文档,浏览器就是解释器,HTML 和 CSS 就是排版工具,它们的属性超级多,组合的样式也十分丰富。JavaScript 能让这些静态的页面动起来,网页的交互也变得更加炫酷。作为 GitHub 上最受欢迎的语言,JavaScript 十分傲娇,各种框架层出不穷。PHP 是后端的脚本语言,这里不讨论它是不是最好的语言,给我的感觉就是不愠不火,比起 JavaScript 低调不少。下面 Java 登场了,这门课叫「面向对象程序设计」,至今我面向的只有屏幕,请问哪来的对象 (-。-;。言归正传,到目前,我认为 Java 是综合能力最强的编程语言,虚拟机的存在保证了安全性和跨平台,活跃的社区和庞大的开源库让开发者无后顾之忧。长盛不衰的 Java 后端主要用来构建企业级应用,近些年流行的 Android 也采用 Java 开发,这才是工业级的编程语言啊。那时候对 Java 没上心,外面的世界接触也少,没想到 Java 这么强大,纠结中就浪费了不少时间。这是大学遗憾的事情之一,没有用心钻研 Java,只能后面慢慢补呗。期间有两门数据库的课程,主要学的是基本的 SQL 语句和设计数据表(基于 MySQL),还算比较简单。计算机网络也是认真学过的一门课程,网络模型是编程的基础,这个不用解释。编译原理非常难,直接面向机器,什么 CPU 指令、寄存器啊,总之就是难以理解。操作系统也是,涉及许多调度算法,已经忘得差不多了。总之就是越往底层越难学,越往上越容易。数据结构是门非常重要的课,副院长亲自授课,她这个人教学很认真,大家都不敢怠慢,在所有课程里面这门课的质量还是很高的。常用的数据结构有这么几个:数组、链表、哈希表等,是每个程序员必须熟知的。对于编程,有个公式是这样的:程序 = 逻辑 + 控制 + 数据结构你看,不懂数据结构谈何编程,逻辑和控制就是算法,这个也是逃不掉的。毕业设计是自己动手做的,就是一个简单的记账 app。那时候感觉自己是全能啊,原型自己想,界面自己画,代码自己写。整个 app 设计参考了随手记和挖财,连图标素材都是从人家安装包里「借」来的。每隔一段时间就向老师汇报,当时确实非常用心,最后答辩的时候老师们都很满意。写了这么多,其实我想说的是,技术洞察力真的非常重要,直接决定了你的选择,你以后的发展,现在看有多少在用 .net 开发的,再看看有多少用 Java 的。往后看,我觉得 Python 和 Go 会有不错的发展,Python 在 AI 领域大有作为,Go 介于 C 和 Java 之间,各自都有适用的场景,以后的事让时间来验证吧。另外一点就是基本功,比如上面说的算法和数据结构、网路模型、计算机原理等。万丈高楼平地起,勿在浮沙筑高台。只有掌握本质原理,才能在瞬息万变的技术世界游刃有余。这是我编程这么多年来的经历和感受,编程是门手艺活儿,既然选择了,那就做下去吧。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180709G1Y87D00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券