学编程第一步?从抄代码开始?

说说学编程的一些经验

程序员学的知识分为两种,一种是偏理论的,例如计算机原理,计算机网络、数据库原理、以及操作系统原理,这些知识都是以理论为基础,注重的理解能力。

另一部分主要以实践为主,就是平常当工具用的,例如 linux 日常命令工具、数据库SQL操作、还有写代码,这些知识学起来没什么技巧,ctrl c ctrl v,拿到教程就是照着抄,唯手熟尔。

不过照着抄代码需要做到3点:

第一步:理解,如果照着教程敲代码没有建立在理解基础之上,那叫瞎抄,就跟上学的时候差等生抄别人作业没啥区别,抄完之后,考试出一模一样的题目你都不知道写。

第二步:验证,跟着把敲出来,验证别人说的是不是对的,带着怀疑的精神验证每一行代码,很多时候我们就算照着抄也有可能会抄错,也许别人的代码有错,如果最后输出结果跟预期理解的不一致,这就考验你解决问题的能力了。怎么办?多思考,多请教,多总结。

第三步:举一反三,这步是最重要的,举一反三会把知识变成自己的,把每一行代码按照自己的思考进行修改,例如:既然这样可行,那换种方式看看有什么不一样的效果。

关于抄代码,我只服一人,就是Openresty 的作者春哥,可以看下对他的访谈:

回过头看,抄书是我自学编程的法宝。话说抄书这种学习方法是我意外间发现的。初三时,我酷爱化学,总是缠着当时的初中化学老师提各种奇怪的问题,老师拗不过,借给我一本他当年大学时用的课本。

我如获至宝,爱不释手,但借的书总要还,但又不能立马消化,于是我便抄书,抄了整个暑假,结果意外地发现了抄书的奥妙——那就是延缓阅读速度,不至遗漏每一个重要的细节:眼到,手到,心到。 其实不仅书抄得,代码也抄得。记得我刚学习 Nginx 源码时。白天上班就对着 Kindle 抄 C 源,同时就已暗记于心;晚上回家在房子里来回踱步,在脑海中反复回放白天抄过的源码,直至融会贯通,深得其奥妙。

大神都有独门绝技,不是我等随随便便能学会的,好在勤能补拙,与各位共勉。

有位小伙伴说道:我不是程序员,没有计算机基础,也不懂前端后端,更不知道框架,分布式等等的,平时不知道学编程有什么用,觉着相关工作也比较少。

问及为什么要学编程时,他说只想给他的职业生涯加加分,如果这样能学好编程我就不信邪了,他说他是搞金融的,那为啥不学些对工作有帮助的东西呢?比如数据分析、量化交易什么的,学点即学即用的东西才是正事,别特么瞎学了。

你们知道程序员最熟悉,最熟练,最常用的两个快捷键是哪两个吗?没错,估计你现在心中所想的就是:ctrl c 和 ctrl v ,俗名为:复制和粘贴。

对于大部分程序员来说:复制和粘贴就是他敲代码,写程序员创造伟大产品的左膀和右臂,而复制和粘贴更是形影不离的好兄弟。

学编程最重要的是实践,就是写代码、看别人写的代码、再写代码,你看再多的书,不写代码,你还是不会编程。但是写代码也要讲究方法循序渐进,不能刚学了几天语法,就想写个操作系统什么的,树立这种不切实际的目标只会让你的自信受到严重打击迷失自我。

抄袭代码是否正确

所谓,天下代码一大抄,亦不过在程序员心中就是复制和粘贴。那么这么做到底对不对呢?

首先需要肯定的是在软件开发中代码复用情况是非常普遍的,判断这种代码复用是否是抄袭行为的标准,要根据被复用的代码版权协议。这种行为非但不应该受到批评,而且应该受到肯定。只要他抄代码的时候遵守了被抄袭的代码的知识产权或分发协议。

从社会角度而言,这个世界上,最应该受到批评的不是抄袭;恰恰相反,应该是重复劳动。重复劳动是对宝贵社会资源(人力物力财力精力时间等)的极大浪费。

目前,我们身处在共享经济当中,可是殊不知我们这是一个伪共享的时代。共享单车,共享汽车,乃至共享充电宝都不是真正的共享,所谓共享就是把闲置和剩余资源利用起来,进行分享,以达到资源利用,资源价值的最大化。现在的共享经济,都不是把闲置和剩余资源的重复再利用,而是花钱买好的,每天,每月正在造成更大的资源浪费。

什么是开源代码?

众所周知,所有的软件都用源码编写,并通过编译最终生成系统或应用。开放源码软件保证所有人可以得到这些代码。这意味着没有一个公司可以完全独占它。开放源码意味着自由选择的权力,而自由选择意味着激发更多创新的能量。

它把控制权交还给使用者和客户。您可以查看系统运作的所有源码,或进行修改,或从中汲取相关的知识。系统缺陷和漏洞可以更快地被发现并加以修正。并且,当客户不满意一个供应商的服务,他们可以选择更好的服务提供商来建设他们的信息基础设施。没有技术的壁垒,也没有市场的垄断。

开源代码的价值

对于学生来说:如果做项目不借鉴别人的基本不可能,因为很多原理毕竟不看别人的代码是很难懂得,而开源的出现,最大的好处就是降低了学习编程的门槛,让这种学校里面的小白能更早的接触许多不错的代码

对于程序员来说:好用,开发速度快,bug少。可以加快开发效率,完成了自己的工作,这样的方式简单快捷,不需要思考如何提取抽象。

对于社会来说:开放源码有利于开发更高质量,更稳定可靠的软件系统。它可以几何级数地提升各个公司的开发能力。大家协同工作,最好的软件将获得认可和胜利。我们不再局限于一个公司的小范围开发,我们在基于互联网的世界范围的合作团体和社区内工作,并通过互联网即时地传递新的想法和代码,促进整个软件开发的进步和繁荣。

因此,开放源码的模式可以帮助开发出更高质量,更安全,更易用的集成软件。它的确使软件开发的步伐迈得更加快速,并有效降低了成本。

但是,代码的开源,技术的开源可以说是真正的共享,但是还不属于经济,毕竟开源太多都是免费的,所以,我们技术开源才是真正的共享鼻祖。

开源库的正确用法

我们应该得感觉和意识到一些开源许可证的使用,应该正确使用开源库以及开源代码才可以。不知道有多少开发者意识到了开源库的正确使用方法?我相信现在几乎每个程序员开发的项目中都使用了 GitHub 上的开源库,但是你们尊重开源和版权了吗?一般在应用中应该声明一下使用了哪些开源库,以开源许可证等信息。只要不违反原作者的版权协议,那么借鉴是完全可以的。

抄袭也是技术活

能从千百万行代码中找到自己想用的那一段,稍作修改变成自己需要的功能,资料裙:八九三一54226这本身就是一种于百万军中取上将首级的本事。若不对那段代码无比熟悉,至少架构了然于胸,不然他怎么抄?若不是基础比较扎实,经过了大量训练,他又怎么改呢?

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190912A0MNM100?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券