当前位置: 首页 > 编程日记 > 正文

如何提高编程能力?

其实很多人学编程都会遇到困难,我觉得其中一个根本原因是他们没搞明白学编程到底是学什么。
编程不是一种知识,而是一门手艺。
我们从小到大的学习都是学习知识,流程一般是课前看书预习,上课听讲,下课做作业,然后复习考试。但是学手艺可不是这么学的。
我们先拿游泳举例,游泳不是知识,而是技能,也可以算门手艺吧。
需要预习吗?需要上课听讲吗?不需要,因为两岁小孩都能学会游泳,他们连话都不太会说呢,怎么可能听课预习呢。游泳是通过在水里的练习,教练手把手地传授动作,一点一点提高熟练度学会的。
我们再来看看弹琴,学钢琴一定要有钢琴,音乐基础知识也是老师在练琴间隙传授的,并且一定会结合练习,另外练琴时间是很重要的,必须保证一定的练习量,有些理想远大的琴童练琴时间可以用惨无人道丧心病狂来形容。
千万别把编程看作知识,计算机科学是知识,但是编程是手艺。
既然是手艺就要用学手艺的思路去学习。
以动手练习为主,看书学习为辅,甚至极端点,初学的时候除了看必要的文档都可以不看书,等有了一定编程基础后再去看书,看完书立刻动手编程去验证书上的理论知识。
练习一定要循序渐进,把手艺分解成几个简单的动作,反复练习直到熟练,然后再把基本动作组合起来练习直到熟练。拿C语言举例,比如从认真写好一个Hello world开始,然后去熟悉 if for while 等基本关键字,然后熟悉字符串操作,内存操作,练习查找 排序 二叉树等基本算法数据结构,然后学习一个小型Framework。。。。
找个师傅,手艺的一大特点就是自学是很慢的,而且容易走弯路,而有人手把手教要快得多,手艺有很多细节,实际操作经验,需要去体会感受的东西,这些细节书上基本不会有。
坚持做大量的练习,以代码行数为例,每年50000行左右是比较一般的练习量,有毅力的话可以挑战10万行。(有人说代码行数不代表什么,行数多不见得程序就对,写得好的程序代码很少blablabla,滚,去跟朗朗说去,告诉他其实不用练那么长时间琴。)
回忆下自己当年是怎么学会骑自行车,学会游泳,学会打篮球的,按照那个思路去学编程,而不是用你学大学课程的思路去学编程。
记住,编程是手艺,不是知识。
======
最后再强调下,对编程能力本质最好的比喻就是弹琴。但是有了编程能力还不能算优秀的程序员,优秀的程序员是作曲家,他们不仅能想出优美的旋律,并且能弹奏出来,就像优秀的程序员不仅能想出优美的算法架构,而且能把它变成可执行代码。你很难想像作曲的人不会任何乐器。
很多人的问题是想当作曲家却不肯下功夫去练琴。
打个预防针,估计有人会举出反例说我就知道某某某作曲家不会乐器(其实真的有)。
我要说的是,等你成了公认的著名作曲家之后再说自己不会乐器,那你牛逼。
在成名之前就这么说那是煞笔。

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">



来自为知笔记(Wiz)



转载于:https://www.cnblogs.com/lvonve/p/8639250.html

相关文章:

【HTML】兴唐第二十八节课之初识HTML

1、HTML&#xff1a;hyper text markup language&#xff08;超级文本标记语言&#xff09;算编程&#xff0c;但HTML不是编程语言 2、注意&#xff1a; &#xff08;1&#xff09;所有的HTML文件都是以.html或者htm作为扩展名 &#xff08;2&#xff09;html文件需要被浏览…

Nagios插件NDOUtils安装

1.DBI的安装# wget http://www.cpan.org/modules/by-module/DBI/DBI-1.608.tar.gz # tar zxvf DBI-1.608.tar.gz # cd DBI-1.608# perl Makefile.PL# make# make test# make install2.DBD的安装# wget http://www.cpan.org/modules/by-module/DBD/DBD-mysql-4.011.tar.gz # tar…

maven 获取pom.xml的依赖---即仓库搜索服务

常用仓库地址&#xff1a; http://repository.sonatype.org/ (https://repository.sonatype.org/)如下图&#xff1a; http://www.mvnrepository.com 转载于:https://www.cnblogs.com/hblthink/p/8643137.html

XFile 关键帧动画的解析遇到的问题

一、mesh 数据储存方式的修改 由于在设计CXFileMesh类时考虑不够全面&#xff0c;原CXFileMesh 类内部储存mesh数据采用的是vector模板。这使后来试图为该类添加支持3dsmax关键帧动画功能时带来很大麻烦。最后还是对CXFileMesh 类做了整体修改&#xff1a;用二叉树储存mesh数据…

【HTML】兴唐二十八节课之常用标签(不定期更新)

部分属性的详细参数见菜鸟教程 &#xff08;1&#xff09;换行 <br/> (2)字体设置颜色和大小 <font size 6 color blue>小米巨能写</font> &#xff08;3&#xff09;添加图片 <img src "index.jpg" width "300px"> 注&…

Python中自定义类如果重写了__repr__方法为什么会影响到str的输出?

这是因为Python3中&#xff0c;str的输出是调用类的实例方法__str__来输出&#xff0c;如果__str__方法没有重写&#xff0c;则自动继承object类的__str__方法&#xff0c;而object类的__str__方法是调用__repr__方法&#xff0c;因此自定义类未重写__str__方法的情况下&#x…

IT人士的人际关系压力

感谢听心心理学网站的投递在造成IT从业者的众多压力之中&#xff0c;人际关系带来的压力或许是最明显并且循环效应最强的一种。IT行业的冷漠环境是出了名的&#xff0c;在这样的状态之下&#xff0c;如何调整我们的人际关系&#xff0c;将恶性循环改造成良性循环&#xff0c;对…

软件工程网络15结对编程作业

软件工程网络15结对编程作业 1.项目成员 学号&#xff1a;201521123014 博客地址&#xff1a;http://www.cnblogs.com/huangsh/学号&#xff1a; 201521123102 博客地址&#xff1a;http://home.cnblogs.com/u/hyy786030686/结对编程码云项目地址&#xff1a;https://gitee.com…

【THML】兴唐第二十八节课 几个小程序

1、第一个html文件 <HTML><Head><title>小米商城</title></head><body><font size 6 color blue>小米巨能写</font><hr /><img src "index.jpg" width "300px"><p>标签组成部分&a…

Android系统默认Home应用程序(Launcher)的启动过程源代码分析

在前面一篇文章中&#xff0c;我们分析了Android系统在启动时安装应用程序的过程&#xff0c;这些应用程序安装好之后&#xff0c;还需要有一个Home应用程序来负责把它们在桌面上展示出来&#xff0c;在Android系统中&#xff0c;这个默认的Home应用程序就是Launcher了&#xf…

Data - 数据思维 - 下篇

9 - 数据解读与表达 数据解读 数据解读需要选择一个基点、一个参照系&#xff0c;单独的一个数值往往不具备价值&#xff0c;它只是数字。 注意点&#xff1a; 关注异常值&#xff0c;并深究WHY?相互验证、大胆假设、多方验证。把握趋势或者规律。归纳总结、数清理明。数据表达…

cas server 配置

1.修改cas server的deployerConfigContext.xml <bean id"dataSource" class"org.apache.commons.dbcp.BasicDataSource"> <property name"driverClassName"> <value>com.microsoft.sqlserver.jdbc.SQLServerDriv…

四 Vue学习 router学习

index.js: 按需加载组件&#xff1a; const login r > require.ensure([], () > r(require(/page/login)), login); 把JS文件分模块&#xff0c;安需加载&#xff0c;而不是&#xff0c;整个都加载。 routes &#xff1a; 定义路径和组件的mapping关系。c…

Oracle 10.2.0.5.4 Patch Set Update (PSU) – Patch No: p12419392

有关Oracle patch和PSU&#xff0c;PSR 说明参考我的blog&#xff1a;Oracle 补丁体系 及opatch 工具 介绍http://blog.csdn.net/tianlesoftware/article/details/5809526Oracle 10g 最新的版本是10.2.0.5.4. 其中的5是PSR 版本号&#xff0c;4是PSU版本号。MOS 上的2篇文档&am…

【数据库】兴唐第二十八节课零散知识点汇总

1、group by order by等都要放到语句的最后 2、表格标签&#xff1a; <table> <tr>表示行 <td>表示一个行里的单元格 </table> 3、表格调整 内容水平方向跳整&#xff1a; align"center" 表示水平居中 align 有三个值&#xff1a;left…

服务器端往手机端推送数据的问题(手机解决方案)

1.方案一&#xff1a; 思路&#xff1a;使用socket连接&#xff0c;在手机端开个socketserver&#xff0c;然后服务器端连接手机端&#xff0c;实现服务器端的不定时发送数据。 MIDlet关闭时, 你可以通过sms激活它. midlet运行时, 你可以通过socket来解决双向推数据的功能. 个人…

软件测试实验一

实验报告 a) The brief description that I install junit, hamcrest and eclemma. Junit&#xff0c;hamcrest 上网下载junit,hamrest包&#xff0c;然后在项目中新建文件夹lib,复制包到其中&#xff0c;然后单击项目->build path -> configer build path,然后在把包加入…

【java】兴唐第二十九节课作业

将用户在网页填写的信息输入数据库 数据库&#xff1a; create table user_infer(id int(2) not null auto_increment primary key,user_name varchar(12), password varchar(64) not null,real_name varchar(8) not null,age int(3) ); JAAVEE stuList <% page langu…

【php】【psr】psr2 编码风格规范

为避免浏览多个作者参与编写的项目时&#xff0c;因风格的不同造成不便时&#xff0c;大家可以使用同一套风格规范来统一标准 代码必须遵循PSR1的规范缩进使用4个空格&#xff0c;而不是TAB键缩进每行代码控制在80-120个每个namespace申明语句后&#xff0c;每个use申明语句块后…

代码生成器项目正式启动

SVN地址是&#xff1a; svn://www.oksvn.com/CodeAssistant J2EE的项目开发工作本身充斥着各种重复&#xff0c;各种复制&#xff0c;各种粘贴&#xff0c;所以&#xff0c;才会出现了Spring和Struts2这些优秀的框架。 但是在使用这些框架的时候&#xff0c;有些问题也会不停的…

查询XML节点 value

查询XML节点 value&#xff1a;通过nodes 指定到节点通过Value属性取出值Declare Xml xmlset Xml<Employee><ID>1</ID><ID>2</ID></Employee>SELECT ID.value(.,Nvarchar(500)) as EmployeeID FROM Xml.nodes(Employee/ID) Employee(…

JQUERY动态生成当前年份的前5年以及后 2年

由于工作需要&#xff0c;赶紧记录下来转载于:https://www.cnblogs.com/wjhaaa/p/8652298.html

osgearth+vs2010安装

OSGEARTH VS2010 安装*VS 平台不重要,本教程也适用于VS2008等。假设我的OSG目录为&#xff1a;D&#xff1a;/OSG*本教程参考网上osgearthvs2008安装。 一、准备工作下载: http://osgearth.org/wiki/Downloads 1. CURL (curl-7.21.7.tar.gz): http://curl.haxx.se/downl…

Contos7 克隆实例 以及 配置网络-服务-等相关信息

以下为我自己整理的克隆虚拟机和设置固定IP的方法&#xff0c;记录一下&#xff0c;以防忘记&#xff1a; 桥接模式网络配置 1、配置ip地址等信息在文件里做如下配置&#xff1a; /etc/sysconfig/network-scripts/ifcfg-ens33 命令&#xff1a; vi /etc/sysconfig/network-sc…

【jdbc】兴唐第三十一节课之修改数据和查询数据(使用自己写的DBUtil)

一、修改数据 方法一 代码实现&#xff1a; public static void opDBByNormal() {DruidDataSource dds new DruidDataSource(); dds.setUsername("root");dds.setPassword("root");dds.setUrl("jdbc:mysql://localhost:3306/system");dds.se…

ios4.2文件夹及多任务

ios4.2的文件夹和多任务可谓是主要特性,但是安装完后我却丝毫不知道该怎么做...在网上找了好久总算解决了 多任务:双击home键,在屏幕下方就会显示当前正在执行的任务,如http://tech.sina.com.cn/it/2010-11-22/22334894444.shtml所示. 文件夹操作:见视频http://v.youku.com/v_s…

利用Unity3D制作简易2D计算器

利用Unity3D制作简易2D计算器 标签&#xff08;空格分隔&#xff09;&#xff1a; uiniy3D 1. 操作流程 在unity3DD中创建一个新项目 注意选择是2D的&#xff08;因为默认3D&#xff09; 在Assets框右键新建C#脚本 在新建的C#脚本中写入下列代码 代码下载地址 https://downlo…

将moss 2007的模板文件导入到moss 2010

最近公司HR请请将一个moss2007的调查模板文件导入到我们部门的Moss protal 上面。 我想这是举手之劳&#xff0c;就爽快的答应了。 但是导入时却报如下错误&#xff1a; ErrorMicrosoft SharePoint Foundation version 3 templates are not supported in this version of the p…

C算法--黑盒测试

黑盒测试 系统会判断每组数据的输出结果是否正确。 单点测试只需要按正常的逻辑执行一遍程序即可。 多点测试&#xff1a; while...EOF型 while...&#xff08;T--&#xff09;型 在多点测试中&#xff0c;每次循环都要重置一下变量和数组&#xff0c;否则在下一次数据来临时变…

【java】兴唐第三十一节课之反射

知识点 一、获取类对象、 方法一 代码实现&#xff1a; Class myDriver Class.forName("com.mysql.jdbc.Driver"); 方法二&#xff1a; 代码实现&#xff1a; Class mysqlDriver com.mysql.jdbc.Driver.class; 注&#xff1a;方法二中Driver前面的东西可以…