用C++写程序的一些感悟
前言
近期使用C++有了一些心得很感悟,这里整理一下。
心得1
如果只会使用LabVIEW写程序,还想要进一步深入程序设计,一定要学习一门文本语言。
什么是会用LabVIEW
会用是个比较笼统的概念。
- 只要能写一个简单运行的程序叫做会用
- 能写稍微复杂的仪器控制程序叫会用
- 能写大中型测控程序也叫会用
这里我认为至少能写稍微复杂的多个仪器联合控制程序,完成基本的测控系统应用叫做会用LabVIEW,用时间评估来说,使用LabVIEW作为主要编程语言至少工作2年以上。
什么是深入程序设计
写LabVIEW程序本身比较简单,大量的工作只是去学习现有的库如何去使用,然后集成到自己的工作需求中来,只要了解了基本的问题解决方法,很多人都可以胜任常规的编程任务。
所以,随着项目需求的演进,势必程序会越来越复杂,如何有效的完成任务,如何让程序稳定可靠,如何容易拓展,这些都是程序架构考虑的事情。
如果你已经掌握了基本的LabVIEW编程功底,工作中大部分工作内容已经开始接近重复的编码,那么深入程序设计也许就是下一步考虑的事情。
为什么学一个文本语言
LabVIEW程序设计的架构从简单的状态机到稍微复杂的生产者消费者,从面向对象到ActorFrameWork。效率上讲,更高级的架构会让程序开发变得相对容易,也确实提高了可拓展性和维护性。
然而,无论如何变化,本质上还是没有摆脱语法的限制,尤其是对面向对象的设计,图形化的编程本身会限制思考效率,很多面向对象思想的设计仅仅在文本编程才会凸显设计优势。
我之前学习LabVIEW面向对象一直很慢,以为是自己比较笨,抽象思维很差,后来用文本学习后发现很多不理解的东西换个语言去理解很容易。编码方法和思维体系不同,真的会影响学习效率。
设计模式是面向对象设计中最简单的一环,所以GOF中也会提到设计模式是可复用程序设计基础….基础….真的只是基础…

心得2
近期在做产线测试的时候,新产品导入会对原有测试程序产生冲击。
而使用面向对象的程序接口设计+简单工厂模式极大的加快了程序开发。虽然各种控制指令和操作方式均发生了变化,但适应新产品到秀跟的代码完成测试只用了2个小时左右,真正体会到思想指导实践带来的效率提高。 

心得3
在使用LabVIEW程序设计时,有一个设计思想是“一切皆可配置”,但是由于语法限制,这一想法一直实现的比较牵强。
- 使用数据结构直接存储配置文件会遇到配置文件的拓展问题
- 使用Config Read来扯线也是比较恶心的事情,重复的编码效率非常低
- 后来使用了AQ JSAON存储好了很多,不过代码就相对量比较大了
用C++后,读写配置文件只是一句话的事情,所以一些皆可配置变得简单了许多,感觉还是很不错。

心得4
有人说LabVIEW编程简单,其他编程语言复杂,经历过两者之后,发现
- LabVIEW测控程序简单,是因为有丰富的库,如果公司有验证过的文本库,编码效率不比LabVIEW低
- LabVIEW语法简单,是因为动态语言,与其相近的Python,MATLAB等语言也一样简单
- LabVIEW编写UI界面简单,是因为UI库相对丰富一些,C#里面有更多更专业的库,一样简单
当然,LabVIEW作为一些优点的集合,必然在一些情境下更加具有优势,也必然在另一些场合劣势明显。
文本编程与图形化编程各有优劣
- 如果做科研探索,原型验证,首推LabVIEW
- 如果做程序架构学习,换文本语言学习,效率和效果都会翻倍
总结
设计思想跟语言没有关系,学习设计思想却跟语言有很大关系
近期一直在充电学习,所以更新不是那么频繁…讲真的,学习的感觉蛮好的,工作后惰性越来越强,找点新东西学习来克服惰性是不错的方法。

来自为知笔记(Wiz)
用C++写程序的一些感悟的更多相关文章
- 用CIL写程序:写个函数做加法
		前言: 上一篇文章小匹夫为CIL正名的篇幅比较多,反而忽略了写那篇文章初衷--即通过写CIL代码来熟悉它,了解它.那么既然有上一篇文章做基础(炮灰),想必各位对CIL的存在也就释然了,兴许也燃起了一点 ... 
- 用CIL写程序:定义一个叫“慕容小匹夫”的类
		前文回顾: <用CIL写程序:你好,沃尔德> <用CIL写程序:写个函数做加法> 前言: 今天是乙未羊年的第一天,小匹夫先在这里给各位看官拜个年了.不知道各位看官是否和匹夫一样 ... 
- 用CIL写程序:从“call vs callvirt”看方法调用
		前文回顾:<用CIL写程序系列> 前言: 最近的时间都奉献给了加班,距离上一篇文章也有半个多月了.不过在上一篇文章<用CIL写程序:定义一个叫“慕容小匹夫”的类>中,匹夫和各位 ... 
- STM32用JLINK 烧写程序时出现NO Cortex-m device found in JTAG chain现象和解决方案
		现象 CPU: STM32107VC 用JLINK 烧写程序时出现NO Cortex-m device found in JTAG chain 如图无法查找到硬件就是CPU 提示1:NO Cortex ... 
- 第一章-第四题(ACM 比赛的程序是软件么?   “写程序” 和 ”做软件“ 有区别么?软件工程是不是教那些不怎么会写程序的人开发软件? 你怎么看?这个游戏团队, 有很好的软件,但是商业模式和其他软件之外的因素呢?有没有考虑到)--By梁旭晖
		引用 http://baike.baidu.com/link?url=z_phkcEO4_HjFG_Lt163dGFAubdb68IbfcfzWscTOrrZ55WbJEQKzyMQ5eMQKyatD ... 
- 4.“写程序” 这个活动大多数情况下是个人行为。 我们听说的优秀程序员似乎都是单打独斗地完成任务。同学们在大学里也认识一些参加ACM 比赛的编程牛人,  他们写的ACM 比赛的程序是软件么?   “写程序” 和 ”做软件“ 有区别么? 请采访这些学生。
		ACM的题库的编程都只能算做程序,不能算软件.写程序和做软件区别还是很大的.程序是为实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合.为实现预期目的而进行操作的一系列语句和指令.而软件是程 ... 
- IntelliJ下使用Code/Live Template加快编码速度:程序员的工作不是写程序,而是写程序解决问题
		程序员的工作不是写程序,而是写程序解决问题. --- 某不知名程序员 我们每天都在写代码,有些代码有结构性的相似,但不是所有的代码都可以被抽成方法.在这种情况下,我们应该考虑使用template的方式 ... 
- object-c cocos2d-x 写程序时注意调试的技巧
		(1)写程序时最好在类的init函数中显示类名,表明现在在执行哪个类,样例代码 CCLOG(@"cocos2d: Using Director Type:%@", [self cl ... 
- 象写程序一样写博客:搭建基于github的博客
		象写程序一样写博客:搭建基于github的博客 前言 github 真是无所不能.其 Pages 功能 支持上传 html,并且在页面中显示.于是有好事者做了一个基于 github 的博客管理工具 ... 
随机推荐
- BZOJ4972 小Q的方格纸
			每个格子记录其左下的45°直角梯形区域的和及左下矩形区域的和即可. #include<iostream> #include<cstdio> #include<cmath& ... 
- (转)修改Android 的framework层后,重新编译
			1.下面方法适合真机:下载android源码,然后编译你修改的framwork的代码,会生成framework.jar,然后push到system/framework目录下,重启机器!ok 2,下面方 ... 
- http_load - 集成测试工具之
			http_load是基于linux平台的性能测试工具,它体积非常小,仅100KB.它以并行复用的方式运行,可以测试web服务器的吞吐量与负载. 1 官方地址 http://www.acme.com/ ... 
- requests、BeautifulSoup、自动登陆示例
			requests Python标准库中提供了:urllib.urllib2.httplib等模块以供Http请求,但是,它的 API 太渣了.它是为另一个时代.另一个互联网所创建的.它需要巨量的工作, ... 
- Codeforces 543.B Destroying Roads
			B. Destroying Roads time limit per test 2 seconds memory limit per test 256 megabytes input standard ... 
- mac下php添加openssl扩展
			进入php源码目录 cd ext/openssl mv config0.m4 config.m4 phpize && ./configure && make & ... 
- 手脱UPX v0.89.6 - v1.02
			声明: 只为纪录自己的脱壳历程,高手勿喷 这个壳的脱法很多一般都一步直达的,步过我喜欢ESP定律 1.载入OD,在入口下一行ESP定律运行一次 > pushad ; //入口 BE mov es ... 
- 跟我一起写Makefile(二)
			Makefile 总述——————— 一.Makefile里有什么? Makefile里主要包含了五个东西:显式规则.隐晦规则.变量定义.文件指示和注释. 1.显式规则.显式规则说明了,如何生成一个或 ... 
- 在vue中使用animate.css
			animate.css是一款前端动画库,相似的有velocity-animate 用法: 首先 npm install animate.css --save 然后在vue文件的script中引入: i ... 
- Restful 接口传递参数
			首先补充一下什么是 Restful ,这里简单说一下,如果一个架构符合REST原则,就称它为RESTful架构. RESTful架构特点: (1)每一个URI代表一种资源: (2)客户端和服务器之间, ... 
