• 零基础刚接触编程,该怎么学?


    从大一入学开始就有好多同学跟我讨论过编程该怎么学

    我呢,也没什么资历,写过的代码不多,用过的语言也很少,到现在还没有写过大工程,面向对象程序设计学过也没咋用,都忘光了,主要就是写面向过程面向算法的程序还稍多一点,既然大家信得过我跟我讨论这个问题,那我就尽我所能尽我所知给刚接触编程的朋友们提一点个人的建议吧

    首先最重要的就是多写写代码,感觉信息类的学科有一个和其他工科一样的特点,它的学习和应用是一个共通的过程,用的时候才会发现有的地方该怎么写,发现有什么东西不会就可以去学,要是光学不写的话肯定过两天就忘了。计算机语言的语法相较于自然语言的确较死板,却也有其灵活之处,这些灵活的地方,什么时候该怎么用,是著书者最想带给读者的,却也是他们做不到的,因为这是一个很经验性的东西,是一个在实践中积累下来的结果。很多人找我要过编程练习平台,我每次都是推荐的http://noi.openjudge.cn/,这个平台是对全社会免费开放的,题目质量还是挺高的,数量也不少,而且难度梯度比较小,覆盖面广,对于没有竞赛需求的本科生(不管是不是信息类)大学四年用这一个OJ就足够了。

    还有就是多和别人交流,多看看别人写的代码,然后你就会发现,“哦原来这个地方应该这么写”或者说“这个地方还能这么写”,这还是很有启发性意义的。做到这一点就要在平时多结交一些同样喜欢程序设计的朋友,这样就可以和他们分享程序设计过程中遇到的困难或者收获的感悟;另外开源网站是一个很好的平台,开源即公开源代码,好吧其实就是往上面放代码,比如Github,现在开源网站上的代码很多其实是直接被当做黑箱算法封装起来引用的,这是开源网站的一种意义所在,但远远不是全部,交流和分享、促成思维火花的碰撞其实才是开源网站的本意所在;开源网站上能看到的往往只是代码,那么在博客上你就可以获得你想要的一切,从讲解到实例,以及代码,国内知名的博客平台有博客园和CSDN,在这些平台上可以搭建自己的博客,也可以阅读上面的优质文章或是和其他博主交流,很多资深程序员更是会选择搭建独立域名的独属于自己的博客,以在页面设计、访问功能等方面获得更大的自由度,达成更好的效果。

    然后是代码调试的问题,好多人都反应代码写不对,调也调不出来。首先写不对是不可避免的,代码写的再多也难免有些地方出错,不过多写写代码对避免犯一些低级错误还是很有帮助的。其实在实际应用中很少有一次就能写对的代码,所以调试是每个程序员必备的技能,具体的调试方法这里就不再赘述了,如果有需求的话可以私戳我,我会单独再出一期。很重要的一点是,一定要自己动手调自己的每一个代码,尝试使用一切可以使用的手段,模拟各种可能出现的情况,构造各种不同的数据,调试的结果不是调对,而是要保证代码的运行完全符合你的算法设计,因为这就意味着你的代码已经完全实现了你的具体算法所期望它实现的功能,调试就可以算是完成了。

    代码调多了其实就会形成一种反向推演的能力,刚开始调代码肯定就是根据代码流程一步一步去查哪里出了问题,调多了之后就可以根据代码的运行结果,结合数据的特点,去推断代码哪里出了问题,再针对性的进行检验。比如说我原来跟研究生学长写的AI下过五子棋,科普一下,五子棋的状态量很小,以现代计算机的算力配合不错的算法是可以完全覆盖的,也就是说人类在理论上根本没有战胜电脑的可能,但我下了两盘发现AI在边界处理上出了问题,并最终利用这个bug战胜了AI。开个玩笑,如果影视作品中AI试图征服人类的情节真的发生,那么人类反抗军的中坚力量一定是程序员,因为只有算法的设计者最懂算法的弱点;另外就是有一次填表的时候,填日期,我填的7.10,七月十号,但是每次编辑完成之后总是自动变成了7.1,我就觉得这表格是不是对填入内容的长度有限制,结果后来看7.11,7.12都没事,就想到这个程序可能是把7.10看做小数来处理的,自动把末尾的0忽略了。这两个程序对我来说都是完全的黑箱,我没有参与过其中的任何算法设计和代码编写的过程,也未曾编写过内容相关的程序,但依靠运行情况,结合以往调试程序的经验,我们仍然可以对错误之处做出较为准确的判断,更别说是自己实际参与设计甚至编写的代码了。所以说,调代码的确是一件很折磨人的事,但它并非没有意义,对代码调试敏锐度的提升也并非无解。

    就先这么多吧,只是一些个人的观点而已,可能用处也不大,希望每个接触编程的人都能爱上编程,驾驭编程!

  • 相关阅读:
    Core Animation简介
    objective-c 常用函数、变量
    NSString判断纯数字
    自定义对话框AlterView
    IOS 6 自动布局 入门-1(IOS中autolayout和之前版本autoresize的差异)
    真机调试问题 错误集合
    block使用小结、在arc中使用block、如何防止循环引用
    View和viewController的生命周期
    IOS侧滑和webview
    Linker Error、MRC与ARC、导航条背景
  • 原文地址:https://www.cnblogs.com/ivanovcraft/p/15110848.html
Copyright © 2020-2023  润新知