第一步

要选择一个编程平台,也就是一个集成开发环境,如:Visual Studio 2015.

问:编程平台主要作用有哪些呢?

答:首先,它可以将你用高级语言编写的程序代码“翻译”成计算机可以直接运行的代码;其次,它可以帮你检查某种编程语言的语法错误;再次,它可以帮你把一个项目复杂的文件系统有条理地组织起来;最后,它用强大的Debug功能,可以帮你找出代码的bug。

第二步

选择一门编程语言,例如:C++,R,Python等。

一般来讲第一步和第二步是在你下载了一个编程平台软件后,按提示一步步安装时混在一起做完,即很多编程平台在安装时会自动让你选择编程语言,之后会让你选择该编程语言必要的一些文件(头文件系统、内部的功能函数模块等等)。

第三步

设置编程环境。

初学者常常会疑惑,到底什么叫编程环境?为什么要去设置这种东西?

答:我们再编写完以后程序后,接着就要实现它。当你点击编译后,报错“找不到XXX文件”,这种错误一般都是编程环境没设置好导致的。编程环境实质上就是设置一连串的文件路径。在编译时,编译器会根据你编写的程序的指示去找对应的文件,把它拷贝过来,翻译到目标程序里。通常你编程程序的时候一般只会提供一个文件名,你默认编译平台能够帮你找到相应的文件。那么编译平台会怎么做呢?首先,他先在当前文件目录找一遍,发现没有。然后就要到你事先设置好的编译环境里去找了,实质上就是一个表,存了一大堆默认路径,然后它按照列表顺序,按个路径找过去,直到发现跟你程序提到的那个文件同名的文件为止。如果把你事先列出来的所有路径都找了一个遍,发现还是没找到,那好,你就会在错误提示栏里看到“找不到XXX文件”的错误。所以为了防止老出现这样的问题,你事先就要把文件可能出现的路径都尽可能列全,或者之后一旦发现“找不到XXX文件”的错误,就把相应路径添加到环境设置中去。

问:Makefile配置文件是干什么用的?

答:我们之前配置环境都是通过点击按钮,添加路径完成环境配置。Makefile文件相当于通过程序脚本的方式实现了你打开一些窗口,添加路径集合,关闭窗口等工作。它的功能较前者更大,它与前面一种环境配置的关系当相于计算机管理员权限和普通用户权限的差别。前者是傻瓜式了,比较好操作,权限小;后者比较难,权限大。

第四步

测试当前编程平台是否可用。环境设置得有没有问题。

最基本的当然是先试试“hello world”可不可以编译通过并执行。

除此之外,为了保险起见,还需找人家编写好的程序,保证在别人电脑上已经编译通过,并且执行正确。新建工程,项目,将代码都相应复制过来。最后这个程序涉及的模块非常多,而不是简单的“hello world”就完事了。例如:这个程序包含各种各样的头文件,而且还还需要调用其他的软件接口,如调用CPLEX或者Gurobi求解一个大规模线性整数规划模型。这个程序需要通过读入外部文件获得模型所需要的数据,并且把运行完的结果写到相应的外部文件里。

如果以上程序编译通过,并正确执行,那么说明你的这个编程平台基本可以投入使用了。

第五步

新建工程——>新建项目——>导入需要的头文件,然后依次编好自己的.h文件.cpp文件以及其他素材文件。点击编译,这是我们默认经过前四步的调试,暂时不会出现“找不到XXX文件”类型的问题。如果出现什么语法错误,那么这些都是低级误差,基本功扎实一点也不会出现什么问题,出现了,也能根据提示错误修改过来。微软官方已经将常见的C++编译错误,链接错误,执行错误都分好类别了,查查官网常见错误数据库,基本都可以找到修改的办法。

第六步

程序编译并执行完毕,发现结果跟预想查太多。这个问题非常复杂,说明你编程的逻辑哪个地方出错了,这种错误非常难找。一般有三个大招。

我们先保证循环之外的赋值运算都没问题,那么真正的问题都会落在循环里。

大招一:如果你计算的“解”在可视化技术下能够很容易看出门道,那么你可以把部分迭代的“解”对应的可视化“图”画出来,看看有没有按你预想的方式演变。例如:集成电路布局、信号处理、图像处理等问题的求解都可以这么去做。

大招二:print大法。将程序运行的关键点的运行情况打印在显示屏上。然后在程序执行的过程中,我们可以看到,程序是在哪个位置中断的,那一步迭代开始,“解”的一些属性值变化有点奇怪,例如:本来目标函数是要下降的,突然发现某一步上升了。

大招三:借助编程平台的debug工具箱进行系统地排查错误。在一些循环体开始处和一些关键点插入断点,然后程序运行到那里终止后,查看内存中相应变量的数据是否合理。如果合理,就按continue,继续重复工作,直到找到错误所在。

完成以上六部,就基本大功告成了!

浅谈“如何学习编程——学会用编程软件编程”相关推荐

  1. 浅谈JAVA中如何利用socket进行网络编程(二)

    转自:http://developer.51cto.com/art/201106/268386.htm Socket是网络上运行的两个程序间双向通讯的一端,它既可以接受请求,也可以发送请求,利用它可以 ...

  2. 浅谈元认知理论与学会学习

    摘自:http://blog.sina.com.cn/s/blog_50f98dfa0100a86r.html 浅谈元认知理论与学会学习                                 ...

  3. 浅谈工作/学习中找bug的思路_0_调试、try-catch以及打印报错信息和百度的方法、No default constructor for entity: com.gyf.bos.mod

    浅谈工作/学习中找bug的思路_0 文章目录 浅谈工作/学习中找bug的思路_0 调试.try-catch-以及打印报错信息和百度的方法 前言 描述 解决思路1 -- 检查移植的代码,细枝末节也不要忽 ...

  4. 浅谈深度学习:如何计算模型以及中间变量的显存占用大小

    原文链接:https://oldpan.me/archives/how-to-calculate-gpu-memory 前言 亲,显存炸了,你的显卡快冒烟了! torch.FatalError: cu ...

  5. 浅谈如何学习深度学习(经验之谈,仅供参考)

    浅谈如何学习深度学习 方向 书籍 视频 方向 首先,要选择一个感兴趣的方向,或者说是将深度学习与自己的专业.学校的优势学科相结合. 计算机视觉(数字图像处理.图像分类.目标检测.图像语义分割.目标跟踪 ...

  6. 浅谈深度学习:LSTM对股票的收益进行预测(Sequential 序贯模型,Keras实现)

    浅谈深度学习:LSTM对股票的收益进行预测(Sequential 序贯模型,Keras实现) 总包含文章: 一个完整的机器学习模型的流程 浅谈深度学习:了解RNN和构建并预测 浅谈深度学习:基于对LS ...

  7. 浅谈深度学习:了解RNN和构建并预测

    浅谈深度学习:了解RNN和构建并预测 总包含文章: 一个完整的机器学习模型的流程 浅谈深度学习:了解RNN和构建并预测 浅谈深度学习:基于对LSTM项目LSTM Neural Network for ...

  8. 浅谈深度学习:基于对LSTM项目`LSTM Neural Network for Time Series Prediction`的理解与回顾

    浅谈深度学习:基于对LSTM项目LSTM Neural Network for Time Series Prediction的理解与回顾#### 总包含文章: 一个完整的机器学习模型的流程 浅谈深度学 ...

  9. 嵌入式AI —— 6. 为糖葫芦加糖,浅谈深度学习中的数据增广

    没有读过本系列前几期文章的朋友,需要先回顾下已发表的文章: 开篇大吉 集成AI模块到系统中 模型的部署 CMSIS-NN介绍 从穿糖葫芦到织深度神经网络 又和大家见面了,上次本程序猿介绍了CMSIS- ...

  10. 浅谈深度学习的基础——神经网络算法(科普)

    浅谈深度学习的基础--神经网络算法(科普) 神经网络算法是一门重要的机器学习技术.它是目前最为火热的研究方向--深度学习的基础.学习神经网络不仅可以让你掌握一门强大的机器学习方法,同时也可以更好地帮助 ...

最新文章

  1. Python使用pandas的crosstab函数计算混淆矩阵并使用Seaborn可视化混淆矩阵实战
  2. 前端实习生笔试_一道来自美图的实习生前端笔试算法题
  3. boost::hana::unique用法的测试程序
  4. /deep/使用方式方式;/deep/无效; ::v-deep和>>>使用;
  5. Google Earth KML格式成为开放式国际标准
  6. 2017.9.9 幸运数字 失败总结
  7. windows系统bat批处理 管理nginx启动 nginx脚本管理bat脚本管理生命周期windows一键nginx启动
  8. LeetCode之猜数字大小
  9. 用python实现pdf转word(带格式)_Python 实现加密过的PDF文件转WORD格式
  10. 金山毒霸捆绑安装软件被起诉,辩称属于行业惯例
  11. avr单片机c语言计算log,AVR单片机定时器初值计算公式与方法 - 单片机定时器初值计算公式(51单片机和AVR单片机的初值计算三种方法)...
  12. 文字相对于图片垂直居中
  13. [注]微信公众号的运营推广总结方案(持续更新)
  14. Java绝对好文,转载的!(转载)
  15. partial correctness and total correctness部分正确性和整体正确性
  16. 计算机三级网络技术资料分享
  17. 做好公司各部门数据报表支撑的几个简单思维
  18. 基于结构光扫描的生物芯片快速彩色质量监管
  19. 杰奇1.7用php53,杰奇CMS 1.7商业版注入漏洞
  20. 2015.08.20情人节--指针

热门文章

  1. 变频器按启动没反应_ABB变频器启动无反应维修那些事
  2. ISO50001认证辅导,ISO50001能源管理体系认证至少符合以下条件
  3. Windows XP 系统中内置的AT命令
  4. C#中提供了三种类型的计时器的比较实验(转自百度文库)
  5. 使用DTS迁移12cR2到 dm8
  6. Hbase-day03_java操作hbase_hbase_各种过滤器使用
  7. linux自动内存清理
  8. 微端服务器物品备注,GOM引擎定制功能可视化仓库+物品备注脚本
  9. SQL server 2008 如何卸载干净
  10. html制作苹果手机屏幕,iphone怎么录屏幕点击动作(苹果手机的屏幕录制步骤)...