最近更新文章
- 编程导论:2.3.操作系统 操作系统介绍
- 编程导论:2.3.数据库及其管理系统 简要介绍数据库及数据库管理系统知识。
- 编程导论:2.4.区块链 简要介绍区块链
- 编程导论:1.4:编程流程 编程在开发中的样子。
- 点集
编程导论:1.3:编程能力及其培养
归纳出编程能力并介绍如何培养。
由前一篇文章的分析,可以归纳出编程能力具体有什么。在最基础的要求——正确性之外,以下按照重要性给出四种能力:
- 代码组织能力:考察的是于可读性、简洁性/灵活性、高效性之间做平衡的能力。
- 逻辑设计能力:考察的是选取合适的形式语言描述需求,使得需求能够简单的转化为功能的能力。在大型项目中,这个能力通常与程序员无关。
- 代码熟悉度:考察的是对于用于实现功能的代码和工具的熟练程度。
- 代码编写速度。
如果将整个编程比喻做搭积木的话,这四种能力依次大概对应着:
- 为了拼出成果,积木和积木、积木和配件之间如何搭配最好。
- 一个大的目标是否需要/能否分成几部分分别拼出后组装。
- 熟悉每个选用的积木的大小,颜色,以及配件如何使用等。
- 拼积木的速度。
显然,编程具有极强的实践性。为了增强编程能力,就需要写各种代码,主要可以分为两种:
- 题目:以实现一个功能或其部分为目标,考察的是代码细节;
- 项目:以实现完整的需求为目标,考察程序员全方位能力。
笔者推荐新手依次这样做:
- 选择一个大众语言,练习使用这个语言的核心语法和功能;
- 练习以基础算法和数据结构为核心的算法题目;
- 进入各计算机专门领域进行项目开发。
题外话一:关于搜索和学习
学习编程不可避免的会出现各种各样的问题,比如代码出现bug、查找功能/需求的实现方法等。大部分情况下,程序员需要从网络上获取信息,这也是最简单的方法。
当然,从网络上获取的信息的水平通常是层次不齐的。这通常是由于两个方面导致的:
- 信息来源网站推荐序列:专业网站(如研究院/学院网站、论文等)> StackOverflow > 个人博客网站 > 知乎、csdn等博客网站 > 其他
- 搜索引擎:一般使用英文比中文能够获得更好的质量。同样给出推荐序列:Google >= AI(取决于AI质量的高低和问题是否深奥) > Bing > 国内搜索引擎
题外话二:关于AI
尽管AI在当下的各方各面已经表现出强大威力,但是由于AI的原理,一方面AI的知识储备严重首先于其训练资料,另一方面其逻辑能力较弱。
基于这两个原因,AI在编程中最好使用于两个方面:搜索引擎或文档总结、简易代码编写。