如何训练自己的编程思路

如何训练自己的编程思路

最近一个周末班的学员,问黄哥你在讲解编程思路训练时,如何想到这个思路的。

首先要解决一个问题,学习编程是学习啥?是纯学习语法吗?

不是,是要学习计算思维,编程思路。

何为计算思维:

计算思维(Computational Thinking)概念的提出是计算机学科发展的自然产物。

第一次明确使用这一概念的是美国卡内基·梅隆大学周以真(Jeannette M. Wing)教授。

计算思维是运用计算机科学的基础概念去求解问题、设计系统和理解人类的行为;

计算思维最根本的内容,即其本质是抽象和自动化。

何为编程思路,望文生义,思路,思考的道路,方向也。就是说,从哪里下手,从哪里着手解决问题。
其实就是计算思维的具体体现,用语法来表达解决问题的方法、算法。

没有人天生会编程,计算机科学家总结了很多解决问题的方法(也就是算法),现在学习编程,不是
从头自己发明算法,不是重新造轮子,站在巨人的肩膀上,学习计算机科学家总结出来的解决方法,利用
这些成熟的算法,组合和微创新来解决自己的问题。

编程思路是训练出来的(自我训练或者跟着别人学习)。

黄哥python培训,黄哥提醒大家解决问题时,要将任务切分,大问题化解为小问题,其中有的小问题,已经有成熟的解决方案,直接拿来用,
剩下不会求解的小问题,那么就集中解决它。

训练就是要学习成熟的解决问题的方法:if 语句用来做分支判断,循环用来解决反复运算的问题。
穷举法、递推、递归、排序、回溯等等(如果需要当专业程序员,需要学习数据结构和算法,设计模式等等,需要学的东西很多很多。但首先要解决的一个问题是自己能写代码解决一般问题。)
训练函数抽象,类抽象解决问题。

如对有序数组,查找特定数值,没有经过训练,初学者,直接用循环遍历。
如果经过二分法算法的训练,下次碰到这样的问题,就用二分法求解。

做习题,要像开发项目的流程一样(需求->需求分析->设计->编码->测试->交付等),
拿到一个习题,还没有进行分析,就匆匆忙忙敲代码,这个学习方法,是不好的学习方法。
先要分析清楚题目(所谓的需求分析,何为需求分析,请自己搜索),再设计,用那种数据类型(数据结构)
来组织或保存数据,用何种算法来计算效率最高,用面向过程,还是面向对象的编程范式,还是用函数式编程等等。
设计后,再编写代码,最后写测试。(也可以采用软件开发过程中的应用方法,测试驱动开发等)

很多基础的东西,对于程序员来说,认为是顺理成章的事,但对于初学者有一个习惯的过程。

   1、有超级小白学员问黄哥,计数循环为何要从1起。当时感觉很讶异,为啥有这样的问题,
      这就是上面说的对于程序员来说,认为是顺理成章的事,但对于初学者有一个习惯的过程。
      计数循环从1起是为了方便,大家从儿时数数,扳手指也是从1开始啊。
      如果从负100,开始计数,不是不可以,不方便啊。

   2、对于这样的问题。
      python list中放二个变量,有初学者也不理解和习惯。
      list 这个数据类型(或者说数据结构)中,可以放python任意对象。
      python 中变量是对象的引用,当然也可以放变量。
      computer = "剪刀"
      people = "石头"
      guess_lst = [computer, people] 相当于 guess_lst = ["剪刀", "石头"]

   3、看这个程序员认为理所当然的事情。
      跟黄哥学python序列文章之python方法链(method chaining)
      https://zhuanlan.zhihu.com/p/20931492

   4、多敲代码,多训练,才能找到感觉。
      不敲代码,不知道会犯变量名前后敲错了。
      不敲代码,不知道会犯缩进错误。
      不敲代码,不知道如何看python报错信息快速排除错误。
      ......................

总结 (没有人天生就有编程思路,编程思路是经过一定训练后,养成的!)

黄哥python培训,黄哥提醒大家如何才有思路,只有先经过训练常见的算法,会分解问题,会做需求分析,慢慢训练,才会养成自觉的思路。
没有人一出生会编程,只有经过训练,才会学会编程。
很多牛逼程序员用vim,敲的啪啪响,一会儿一屏幕代码,为啥那么熟练使用vim,习惯成自然。
当你训练多了以后,学会一定的套路(解决问题的方法),养成独立思考的习惯,假以时日,自然就有思路了。
养成独立思考的习惯,养成切分问题,养成大问题化解小问题,养成套用学过的算法,才会有思路。
简单的判断、循环都不会写,就想玩django,何来的思路?
万丈高楼从地起,希望大家脚踏实地实地的从基础训练起,先达到独立写代码解决一般的问题,再谈项目。
见过盲目上号称牛逼项目的培训班出来的程序员,没有学会独立写代码解决一般的问题的能力,开发项目时如狗咬刺猬无从下手。

共勉!
黄哥写于2016-5-22 早晨 北京

点击黄哥python培训试看视频播放地址

时间: 2024-08-02 07:56:20

如何训练自己的编程思路的相关文章

helloworld讲解cocos2d-x的编程思路与要点

用helloworld讲解cocos2d-x的编程思路与要点 本文以cocos2d-x的helloworld为例,讲解cocos2d-x引擎的特点和要点,2.2为了展示新功能,把包括屏幕自适应在内的新特性相关代码加入了helloworld工程代码里,但是也增加新人的上手难度,我会避过不谈,只说关键的几句代码,对于已经了解cocos2d-x架构的朋友,本文后面的内容对你毫无帮助,可以去关注我写的<cocos2d-x提高篇>(不过此刻我或许还没写).当然了,不可能一开始就把所有内容说清楚,刚上手的

运维经验分享(四)--关于 java进程管理的服务控制脚本编程思路分析

运维经验分享作为一个专题,目前共7篇文章 <运维经验分享(一)-- Linux Shell之ChatterServer服务控制脚本> <运维经验分享(二)-- Linux Shell之ChatterServer服务控制脚本二次优化> <运维经验分享(三)-- 解决Ubuntu下crontab不能正确执行Shell脚本的问题(一)> <运维经验分享(四)--关于 java进程管理的服务控制脚本编程思路分析> <运维经验分享(五)-- 改进的java进程管

【转】Lua coroutine 不一样的多线程编程思路

Lua coroutine 不一样的多线程编程思路 Sunday, Apr 26th, 2009 by Tim | Tags: coroutine, Lua 上周末开始看<Lua程序设计>第二版,目前体会到其中比较有趣的有两点,一是强大的table数据结构,另外就是coroutine.也许Lua 中的coroutine是一种很好的设计模式,但我初步的体会还是没想到其他语言和场合能非常适合用到coroutine的场景. 一.简介 协同程序与线程差不多,也就是一条执行序列,拥有自己独立的栈,局部变

CentOS6、7 LVM逻辑卷分区自动扩容Shell脚本编程思路与实例

应用场景和已知存在的问题: 适用于CentOS6或CentOS7(可能适用于CentOS4或5等早些版本) 根文件系统(被扩展的文件系统)采用LVM进行管理,例如mount命令输出"/dev/mapper/vg_$hostname-lv_root on / type ext4 (rw)"中含有"mapper"关键词 自动扩容根文件系统,如果想扩展其他文件系统,例如有的业务应用数据目录不在根分区中,则需要修改Shell脚本代码中的VG_PATH_TO_EXTEND变量

完整软件实例中文编程解析,软件试用版注册版编程思路视频教程

通过对完整软件实例(工程设计流水管理系统)编程讲解,让学员熟悉完整软件布局架构及开发思路.比如从界面布局.登录验证.软件注册程序.到软件发布等知识点,贯穿知识点间联系,提升编程整合能力. 中文编程完整软件实例编程解析之工程设计流水管理系统(8课时) 第1课:整体布局.EXCEL表数据导入到软件数据库编程a.整体布局b.EXCEL表数据导入到软件数据库编程第2课:基本信息预先设置编程a.项目名称预设置 第3课:子项目工程日志流水编程解析a.工程日志流水编程 第4课:子项目设计费发放流水编程解析a.

面向对象编程思路

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>面向对象编程思路</title> </head> <body> </body> <script type="text/javascript"> // 把大象放进冰箱,需要几个步骤 /* // ------------- 面向过程的

编程思路-长期维护-2019年12月10日新建

现在老大给了你一个任务了,你要怎么做?一定一定不能上来就写代码,一定要先分析,想想该怎么做,然后开始写代码,这就是编程的思路, 用注释来搭建程序的框架, 编程思路,往往就是逻辑的推理,一般就是正推和倒推,同一个功能,可以封装到一个函数里面去,这个也是写的多了,逐渐的封装的,不是上来直接就封装的, 代码不是从第一行写的,是什么时候用什么时候补的,所以编程的思想最重要了,一定要理清程序,理清逻辑,需要有编码规范,pep8, 原文地址:https://www.cnblogs.com/andy0816/

初学者学习编程,如何训练自己的编程思维,资深程序员这样建议

近给大家讲了一堂关于初学者如何从零基础到就业正确的学习步骤,在课堂中我提过两点困难是初学者最大的问题,其中一个问题就是学了后面忘了前面的问题,还有一个最重要的问题就是编程思维.今天主要给大家讲一下初学者学习编程,如何更好的去提升自己的编程思维. 首先我们要明白一点,我们学习编程到底在学习什么?并不是单纯的只是学某个语言的语法,而是编程思维.只有掌握了正当的编程思维,我们才能真正去应对这个语言所出现的问题.才能把这个语言相关的编程题用代码实现出来,用计算机编程思维去思考问题,而不是在学习死知. 什

【python之路】【之前没搞明白的】6面向对象(编程思路及步骤)

思路 设计功能——使用功能 步骤 光学会了class的语法还不足以让我们学会怎么去编程.就像学会了和水泥.垒砖.刮腻子 但是却不知道怎么去盖楼一样.有个顺序: 1. 定模型 多少个类2. 定属性 每个类需要哪些属性,self.name 这样的3. 定关系 每个类之间有什么关系,继承.依赖.组合.关联4. 画XML图 https://www.processon.com/5. 写代码 这是不是架构师的主要工作! 原文地址:https://www.cnblogs.com/watalo/p/123299