前言

近期使用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++写程序的一些感悟的更多相关文章

  1. 用CIL写程序:写个函数做加法

    前言: 上一篇文章小匹夫为CIL正名的篇幅比较多,反而忽略了写那篇文章初衷--即通过写CIL代码来熟悉它,了解它.那么既然有上一篇文章做基础(炮灰),想必各位对CIL的存在也就释然了,兴许也燃起了一点 ...

  2. 用CIL写程序:定义一个叫“慕容小匹夫”的类

    前文回顾: <用CIL写程序:你好,沃尔德> <用CIL写程序:写个函数做加法> 前言: 今天是乙未羊年的第一天,小匹夫先在这里给各位看官拜个年了.不知道各位看官是否和匹夫一样 ...

  3. 用CIL写程序:从“call vs callvirt”看方法调用

    前文回顾:<用CIL写程序系列> 前言: 最近的时间都奉献给了加班,距离上一篇文章也有半个多月了.不过在上一篇文章<用CIL写程序:定义一个叫“慕容小匹夫”的类>中,匹夫和各位 ...

  4. 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 ...

  5. 第一章-第四题(ACM 比赛的程序是软件么? “写程序” 和 ”做软件“ 有区别么?软件工程是不是教那些不怎么会写程序的人开发软件? 你怎么看?这个游戏团队, 有很好的软件,但是商业模式和其他软件之外的因素呢?有没有考虑到)--By梁旭晖

    引用 http://baike.baidu.com/link?url=z_phkcEO4_HjFG_Lt163dGFAubdb68IbfcfzWscTOrrZ55WbJEQKzyMQ5eMQKyatD ...

  6. 4.“写程序” 这个活动大多数情况下是个人行为。 我们听说的优秀程序员似乎都是单打独斗地完成任务。同学们在大学里也认识一些参加ACM 比赛的编程牛人, 他们写的ACM 比赛的程序是软件么? “写程序” 和 ”做软件“ 有区别么? 请采访这些学生。

    ACM的题库的编程都只能算做程序,不能算软件.写程序和做软件区别还是很大的.程序是为实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合.为实现预期目的而进行操作的一系列语句和指令.而软件是程 ...

  7. IntelliJ下使用Code/Live Template加快编码速度:程序员的工作不是写程序,而是写程序解决问题

    程序员的工作不是写程序,而是写程序解决问题. --- 某不知名程序员 我们每天都在写代码,有些代码有结构性的相似,但不是所有的代码都可以被抽成方法.在这种情况下,我们应该考虑使用template的方式 ...

  8. object-c cocos2d-x 写程序时注意调试的技巧

    (1)写程序时最好在类的init函数中显示类名,表明现在在执行哪个类,样例代码 CCLOG(@"cocos2d: Using Director Type:%@", [self cl ...

  9. 象写程序一样写博客:搭建基于github的博客

    象写程序一样写博客:搭建基于github的博客   前言 github 真是无所不能.其 Pages 功能 支持上传 html,并且在页面中显示.于是有好事者做了一个基于 github 的博客管理工具 ...

随机推荐

  1. jQuery多重事件绑定

    1. <a> a标签默认绑定了一个onclick事件,当自己再写一个onclick事件的时候,默认自己写的那个优先执行. 如下程序,先执行(123),然后再发生跳转. <!DOCTY ...

  2. 【JavaScript】函数表达式

    一.前言        接着上一篇的内容,继续学习JavaScript. 二.内容       函数的声明 function functionName(arg0,arg1,arg2){ //函数体 } ...

  3. 【BZOJ5251】【八省联考2018】劈配(网络流,二分答案)

    [BZOJ5251][八省联考2018]劈配(网络流,二分答案) 题面 洛谷 BZOJ Description 一年一度的综艺节目<中国新代码>又开始了. Zayid从小就梦想成为一名程序 ...

  4. 【bzoj4195】【NOI2015】程序自动分析

    4195: [Noi2015]程序自动分析 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 3470  Solved: 1626[Submit][Sta ...

  5. [ACM][2018南京预赛]Lpl and Energy-saving Lamps

    一.题面 样例输入: 5 4 3 10 5 2 7 10 5 1 4 8 7 2 3 6 4 7 样例输出: 4 0 1 1 3 6 5 1 5 1 2 0 3 2 4 4 3 6 5 1 二.思路 ...

  6. Shell颜色及显示git分支配置

    # Ubuntu终端下命令行颜色配置 ## Parses out the branch name from .git/HEAD: find_git_branch () { local dir=. he ...

  7. 驱动之NandFlash的介绍与应用20170209

    本文主要介绍的是NAND FLASH的介绍与应用,直接看个人笔记即可:

  8. vmware中无法ping通主机的问题

    虚拟机使用NAT方式运行一段时间后,发现无法ping通主机(物理机),显示错误如下 ipconfig如下 查看虚拟机中的网络连接,显示"未识别网络" 分析: 查看了网络上的一些资料 ...

  9. Google Map API 应用实例说明

    目录 Google Map API 1基础知识 1.1 Google 地图 API 概念 1.2 Google 地图的"Hello, World" 1.2.1 加载 Google ...

  10. Spring Boot 使用IntelliJ IDEA创建一个web开发实例(一)

    .新建项目File-->New-->Project-->Spring Initializr 点击Finish,一个Spring Boot web应用就创建好了.