写优雅的代码,做优雅的程序员

时间: 2018-12-05阅读: 299标签: 代码

Q1:软件工程学什么?  

学计算机,写程序,做软件,当程序员。


Q2:软件工程(Software Engineering)跟计算机科学(Computer Science)是什么关系?

两个专业的课程安排相近。CS专业会更深入地学习计算机理论和原理,SE更注重编程实践能力。专业选择上,看分数线选。


Q3:听说学计算机很辛苦?  

是的,IT行业加班现象严重。在计算机世界里,技术日新月异,自学能力是程序员最重要的能力之一。选了这个专业,就要时刻保持好奇心和技术嗅觉,不能只满足于完成课内作业。


Q4:软件工程学习哪些专业课程?

• 编程类:编程语言、设计模式、web开发、移动端开发、桌面端开发、Unix环境编程等等

• 原理类:数据结构、算法、操作系统、数据库、计算机网络、数字逻辑电路、计算机组成原理、编译原理、软件工程等等

• 数学类:离散数学、高等数学、线性代数、概率统计、数值计算等等

不知道这些课程到底学的是什么?我来举个栗子吧。

假设你用浏览器打开了豆瓣,搜索“周星驰”,在这个过程中计算机帮你做了什么事情呢?

玩过游戏的同学肯定听说过“客户端”和“服务器”这两个词,在这里你的浏览器就是客户端,它把这个搜索请求提交给豆瓣的一台服务器(服务器是另一台计算机),服务器处理完后,返回结果给你的浏览器。

你可能会问,浏览器去找哪台服务器呢?它和服务器之间怎么通信呢?这就是计算机网络课程学习的知识,这个过程中会涉及到DNS,HTTP等网络协议,协议定义了两台计算机间传递的信息的表示方法等。

好了,现在浏览器拿到了结果,这是一些文件,浏览器又是怎么让你看到这样一个界面的呢?这是因为浏览器按着文件上写的东西干活,把一个个文字一张张图片画了出来。


那么,“画了出来”是什么意思?

这个问题其实有些复杂。你的电脑上有一块叫做”显卡“的设备,它接收一堆0和1的电信号,执行指令,最终显示器把电信号转化成光信号。这里的显卡和CPU类似,都按照收到的指令完成任务。不同厂家生产的显卡、CPU的接受的指令可能不同,但结构上往往相似。研究CPU内部的结构,以及CPU怎么执行指令,就是计算机组成原理课程的内容。

浏览器和底层的设备之间,还有操作系统在干活,简单来讲,操作系统接受浏览器的差遣,去和底层的硬件打交道。操作系统对上层软件(例如浏览器)屏蔽了底层硬件的细节。

现在我们把关注点转移到服务器上,它是怎么知道周星驰拍了哪些电影呢?答案是查询数据库,数据库管理软件负责把数据以某种形式保存起来,并提供查询功能等。

你可能会惊叹,数据库好强大,它存了数以万计的电影,它是怎么这么快就把周星驰的电影找出来呢?数据库会用很多技术来做这件事,其中可能用到”索引技术“——就像查新华字典一样,先查目录,再找到要查的东西在哪里。而数据怎么组织使得可以通过一个目录项迅速定位到要查找的东西,就涉及到数据结构的知识。

提到数据结构就不能不提算法。周星驰的电影按照评分、热度等排好了序,怎么进⾏排序就跟“算法”有关。

再来聊聊其它的事情,大家应该知道,大部分代码都是类似自然语言的表述,例如 if (a < b) return a; 而CPU却只认识0和1,怎么翻译呢?这是编译原理要解决的问题。

而数学也是无处不在的,在离散数学里, a < b 被(拗口地)称作“a与b具有关系:小于”。离散数学理论在计算机里大有用武之地。

现在我们来定义一种二元关系R,规定a和b 只能为0或1, a R b = 1 当且仅当a和b均为1,其它情况 a R b =0 。这里的关系R即“与”关系,类似的还有“或”关系,“非”关系等等。把这些关系组合起来并用电路实现,电路就能接收一组0/1输入,按照设计好的数字逻辑,产生一组0/1输出,这就是数字逻辑电路研究的问题。

最后,模拟电子技术会告诉你0和1是怎么来的。


Q5:毕业后有哪些选择?  

毕业后可以选择就业,到阿里腾讯这些互联网公司就职,待遇较好,详情可以到他们的校园招聘网站了解。

开放的岗位一般有:

• 技术类:

开发类:前端开发、移动端开发、后台开发、底层开发、游戏开发、运营开发等等

运维类:系统运维、数据库运维、网络运维等等

数据类:大数据分析、机器学习、自然语言处理等等...


• 非技术类:

产品类:游戏策划、产品策划等等

设计类:游戏美术、视觉设计等等

也可以选择继续深造,升学读研,详情可了解各高校的研究生招生项目。


Q6:一些建议  

• 课程学习:打好计算机基础,多思考总结背后的设计思想

• 动手实践:多动手做做一些玩具项目,写写技术博客,加入软件团队,参与到实际的软件项目开发中(这里为中大Matrix团队打个广告)

• 科研能力:如果想走科研路线,可以尽早跟着导师读论文做科研项目

• 综合能力:开拓眼界,多了解业内动态,学好英语,学好数学


个人经历及感受  

我在入学时是小白一个,每周C语言的编程作业几乎总有一道难题不会写。寒假时静下心提前自学了一些C++的知识,第二学期终于进步明显,编程作业总能上榜,信心也积累了起来。大一一年,我想自己收获最大的是开拓了眼界,通过看经典书籍、参加讲座、学习⽹课,终于对计算机及软件工程有了一个宏观的粗浅的理解。

大一暑假里,因为兴趣开始接触网络爬虫,由此开始接触web开发。大二上学期,因为参加比赛的需要又自学了Ruby,对web的了解日渐增多。大二寒假,抱着试一试的心态报名了Matrix的招新,幸运通过了面试,参与服务端开发工作。这里介绍一下,中大Matrix团队主要做的是一个课程管理系统,为中大程序设计类课程提供代码在线评测等服务。

团队里队友们都很厉害,刚刚加入时,开发用到的技术我还很生疏,我又成了技术小白。但是,需求总得尽快做完,这段时间里,我又狼吞虎咽学习了开发用到的各种知识,向队友们请教,终于慢慢熟悉了工作。这时,团队创始人们即将毕业,我非常幸运地入选了团队核心成员。之后,要承担的工作更多了,要了解整个系统的架构,学习运维,及时修复用户反馈的问题。期中考将近,我又开始负责考试系统服务端的重构工作。为期一个月的开发和测试之后,考试系统算是顺利通过了期中考的检验。

很快又是新学期,进入大三,我开始接手团队的项目管理工作,这又是一个我不熟悉的领域,还好师兄们已经留下了许多成熟的规范,队友们也很靠谱,团队陆续完成了两个大版本的迭代。感谢队友的信赖和帮助。

因为熟悉系统的需要,我开始接触后台代码,这又是一个有趣的学习领域,我开始定下春招报后台开发的目标。寒假里做了一些准备,学习了一些以前没接触过的底层知识。三月,春招终于来了,凭着之前的积累和一些项目经验,面试还算顺利,幸运地拿到了腾讯后台开发offer。面试中最大的感受是,基础知识、项目经验和编程能力是考核的重中之重。

春招结束后,最近又花了一段时间复习基础知识,也突发奇想做了一点玩具项目。还有一周就要去实习了,希望能跟上团队的节奏。

最后谈谈一点感受。既然选了这个专业,就不要畏难,得保持学习的热情和好奇心,多做多想多交流。这个专业的方向、路线也很多,大学期间可以多做尝试,发现自己的兴趣点。最后,引用一句话作结:“每个领域初学总是很有趣,可以迅速做出东西来,但深入学习就意味着要忍受大量繁琐枯燥的细节,不必气馁,这正是何谓专业。”

本文笔者来自中山大学软件工程专业
来源:学梓守迹    


使用React Hook提高代码复用性

Hook 是 React 16.8 的新增特性。是对 React 函数组件的一种扩展,通过提供一些特殊的函数,让无状态的组件拥有状态组件才拥有的能力。没有Hook之前写组件有两种形式,分别为:函数组件,class组件

JS无形装逼,最为致命

单行简洁的代码很难维护(有时甚至难以理解),但这并不能阻止广大攻城狮们脑洞,在编写简洁的代码后获得一定的满足感。以下我最近的一些收藏javascript精简代码集合。

用什么工具保证一致的代码风格?

首先这个问题展开来讲就是:如何在Node.js模块编写中保持代码一致性风格,目前来说基本上有四种工具可以完成JSLint,JSHint,JSCS,ESLint。

Js代码压缩工具推荐

JavaScript 代码压缩是指去除源代码里的所有不必要的字符,而不改变其功能的过程。这些不必要的字符通常包括空格字符,换行字符,注释以及块分隔符等用来增加可读性的代码,但并不需要它来执行。

怎样使你的 JavaScript 代码简单易读

解决一个问题可以有很多方法,但是有些方法很复杂,甚至有些是荒谬的。在本文中,我想谈谈解决一个问题时的好方案和坏方案。

怎么避免写出烂代码

命名规则:除非在小于 5 行的函数里,否则不要使用单字命名变量,规则:不要使用名词加数字的命名方法,规则:应该且只有方法和函数以动词开头

除了敲代码,你还有什么副业吗?

作为一名程序员,除了敲代码之外的一些副业!什么是副业?副业就是主要事业以外附带经营的事业。我们都是程序员,大多数都是普通人,都在替别人打工,虽然收入在别人眼中挺高,但是在霸都连个首付都付不起。

Js代码_Js整洁之道

整洁的代码不仅仅是让人看起来舒服,更重要的是遵循一些规范能够让你的代码更容易维护,同时降低bug几率。1. 用命名的变量代替数组下标,2. 函数的参数最好<=2个,尽量避免3个。

散布JS无限循环代码,日本13岁女学生被抓

近日,一名13岁女孩被指控传播未经授权的恶意程序。警方近日质询并指控了一名13岁的女学生,起因是她将一段恶意代码的链接放到了在线公告栏上,广泛传播代码。这段有问题的恶意代码是弹出警告消息的无限循环,每当你点击确定就会立即显示新的消息。

看看这些被同事喷的JS代码风格你写过多少?

现在写代码比以前好多了,代码的格式都有eslint,prettier,babel(写新版语法)这些来保证,然而,技术手段再高端都不能解决代码可读性(代码能否被未来的自己和同事看懂)的问题,因为这个问题只有人自己才能解决

fly63.com版权所有,内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权,请与小编联系!情况属实本人将予以删除!

广告赞助文章投稿关于web前端网站点搜索站长推荐网站地图站长QQ:522607023

小程序专栏: 土味情话心理测试脑筋急转弯幽默笑话段子句子语录成语大全