专栏名称: 程序猿
本微信公众号:imkuqin,为程序员提供最新最全的编程学习资料的查询。目前已经开通PHP、C/C++函数库、.NET Framework类库、J2SE API查询功能。
目录
相关文章推荐
程序员的那些事  ·  趣图:你是做什么的 ·  3 天前  
OSC开源社区  ·  JetBrains官宣两款重量级IDE非商用免费 ·  5 天前  
程序猿  ·  开源软件Gradio上新5大功能,几行Pyt ... ·  1 周前  
OSC开源社区  ·  Linux内核将删除3万多行代码——其开发者 ... ·  1 周前  
51好读  ›  专栏  ›  程序猿

学会编程, 而不是学会Java

程序猿  · 公众号  · 程序员  · 2017-04-08 22:49

正文

来自:码农翻身(微信号:coderising)

作者:刘欣


由于《我是一个线程》这篇文章的广泛传播, 很多加了我的QQ和微信,交流编程学习的问题。


但是我发现其中很多初学者,尤其是半路出家的遇到了一个很普遍的情况: 那就是只学会了Java 的语法, 而没有学会编程。 


我拿一个例子来说一下, 下面是一个SimpleList 的类, 模仿java 的ArrayList,   已经定义好了接口,需要实现具体的业务:


/**

 * 自定义的一个模仿ArrayList的类, 你需要实现其中的add, get, remove , 等方法

 * @author 刘欣

 */

public class SimpleList{

    private Object[] elementData;

    private int size=0;    

    public int size() {            

        return -1;

    }

    public SimpleList(){        

    }

    public boolean isEmpty() {    

        return false;

    }    

    public boolean add(T e) {

        return false;

    }

    public boolean remove(Object o) {

        return false;

    }

    public T get(int index) {

        return null;

    }

}


然后我拿这个类给几个人测试, 我发现很少人能够顺利的把这几个方法给实现了, 哪怕是非常粗糙的实现也没有。 


感兴趣的同学也可以用你擅长的语言尝试一下。 


这个题目不要求实现复杂的算法, 也不需要进行面向对象的设计,也不需要考虑多线程下的线程安全, 况且已经给了提示:


用一个Object数组来实现。 


如果说有一点语法层面的难度, 那就是使用了一点泛型。 

其实如果我把泛型去掉, 估计他们还是实现不了, 因为这个类的核心逻辑不是泛型。 


这个SimpleList 要求的就是能对一个数组进行操作,核心就两点:

1. 能往数组添加数据, 记录size ,如果数组空间不够了, 需要增大空间

2. 能删除数组指定位置的数据,并且把之后的数据往前挪动。


难吗? 这其实是编程序的基本素养, 编程的本质,和用什么语言实现没有关系。

如果不是Java , 学的是C#, 或者Python,  我估计结果也差不多。


我想可能是不少人都缺乏最最基本的数据结构和算法的训练, 还没有养成面向计算机的逻辑思考的方式。 


解决的办法其实也很简单:就是多实践,多编码, 我推荐多做数据机构和算法的习题, 这也是我个人的经验, 大学时把数据结构的习题都做一遍, 后来工作中只要不是设计算法, 基本上没要难住我的。


如果以后想选择码农作为职业, 这种编程能力是必不可少的, 所以在校的同学, 不妨从现在就开始, 把缺失的能力不上。 


来自:码农翻身(微信号:coderising)



●本文编号2307,以后想阅读这篇文章直接输入2307即可。

●输入m可以获取到文章目录

本文内容的相关公众号推荐

Java编程

程序员的那点事


更多推荐15个技术类公众微信

涵盖:程序人生、算法与数据结构、黑客技术与网络安全、大数据技术、前端开发、Java、Python、Web开发、安卓开发、iOS开发、C/C++、.NET、Linux、数据库、运维等。