首先搞清楚, 一个项目开发的部门组成, 大致如下: (1) 产品经理 负责制定需求, 产品原型图的设计, 和程序员干架等 就是, 咱们做的到底都是啥玩意, 哪些功能要做, 哪些不要做, 比如, 让手机壳随着用户心情变色; 这都是极品产品经理; 还有一个可怕的就是, 像一些小公司, 啥都不懂的老板也会跟着提需求; 和老板合作的其他老板, 也会提一些神奇的建议(谁让别人是甲方呢); 此时, 有节操的产品经理还会反抗, 没节操的, 哎, 都转移给了开发人员... 去做吧, 老板说的, 一句话, 我们开发人员就想着法弄吧 (2) 项目经理(有的兼任开发人员); 根据原型图负责将需求转换成实施步骤, 搭建好基本的项目结构, 并配置好源代码环境; 分配给不同的小弟去做; 还会调度其他部门, 比如美工, 来提供相关素材; 而且, 项目经理会跟进项目开发进度, 就是看着你干活, 每天做的啥玩意; 有的技术难点小弟搞不定, 就得自己上; (3) 各角色开发人员 职责就是根据分配的需求, 进行代码实现, 简称"码农", "码畜"... 通常除下编写代码外, 还需要背锅 开发大致分为前端和后端, 不管你处于哪一端, 都需要和另外一端人沟通; 比如后端, 需要提供接口, 编写好接口文档; 前端根据接口文档发送请求, 获取和上传数据; 两者之间, 相亲相爱, 一起调Bug, 一起和提出恶意需求的产品干架; 所以, 除下敲代码外, 锻炼好身体也很重要; (4) 和队友打交道 一般我们开发, 很少一个人独立开发, 根据项目大小不同, 分配的人员也大概在3-5人最为常见; 与他们沟通是最常见的事; 而且一般项目任务划分, 是模块化, 组件化, 或者前后端分离等等方式, 尽可能保证大家都能同步开发, 而互相不干扰; 不然俩人做同一个功能, 那就乱套了; 此时, 最需要注意的问题, 其实是在于代码合并的问题; 也就是源代码管理工具(git/svn); 你可以这么理解, 我们大家写不同功能的代码, 最终肯定要合到一个地方组成一份完整的, 可执行的程序代码; 但因为一个项目代码, 不管怎么划分, 都肯定有一些公共部分代码, 那此时, 大家的对公共部分的代码修改就可能在提交时产生冲突; 此时, 要求我们以下几点: (1) 修改公共代码时, 说一声; (2) 每天开始编写代码前, 尽可能先从服务器下载最新代码; (3) 别乱删别人东西, 也别改别人代码, 让别人自己改; 切记 (4) 没事多写点注释, 不然大家没法沟通, 特别是写SDK的; 不然很容易被打, 虽然每个程序员自己都不想写, 但都要求别人写的; (5) 尽可能写完一部分代码就提交, 避免产生大量冲突; 而且要先提交, 一旦产生冲突留给队友解决; 你回家吃饭; (6) 多做测试, 提交正确代码 (7) 测试时, 单独开一个分支(理解为单独一份代码); 别直接在正式项目那份代码中做 (8) 对新人好点好伐? 大家都是这么过来的
机器语言 - 全部都是由0和1的二进制代码组成, 可以由计算机直接执行, 效率最高; - 但因为人看不懂, 不好理解, 所以不适合编程使用; 例如 1+1 对应代码如下 0000000000000001 1101100100 0000000000000001
汇编语言 - 使用了一些助记符来代替0和1, 相对来说更好理解一些; 例如 1+1 对应代码如下 mov ax,1 add ax,ax - 最终还是要转换为机器语言执行, 多了一层转换, 所以效率低于机器语言; - 通用性依然不强,理解较差,学习曲线大, 编写大型程序繁杂; - 但因为其效率高, 所以在某些特殊行业中,还是有不少使用;
高级语言 - 接近于人类自然语言的单词和符号来表述低级语言(机器和汇编); 例如 1+1 对应代码就是 1+1 - 可阅读性, 可移植性较高 - 缺点就是效率不如机器语言和汇编语言高;