keer_zu 发表于 2014-7-9 16:10

列出你所知道和编程思想有关的内容,五花八门什么都行!

本帖最后由 keer_zu 于 2014-7-22 10:42 编辑

如题

做MCU开发的,很多不谈规范的,但是规范确实能提高效率。所以,编程思想的改进对于开发工作必定会有很大的帮助。

题目只所以提的这么大,就是因为MCU开发简直就是一块真空地带,几乎能想到的编程思想都可以对其施加影响,从而加以改观。

yyy71cj前辈从这方面入手,个人表示万分得支持。正因为这个领域太真空,所以相信前辈的想法也是要起到抛砖引玉的作用的,如果工作中遇到因为编程思想的运用而带来的惊喜或者困惑也行,一起分享,一起解决。。。。


感谢 @eydj2008 发表了自己的观点。

eydj2008 发表于 2014-7-9 20:05

感觉有点广,
我个人感觉主要,要有一个清晰的程序架构,
程序中要有多任务和多线程的思想,
不要像教科书或是XX例程那样,都是单线程的思想,
(所以我告诉我的群友,我很少用FOR和WHILE 一个程序中基本上 只能看到一个WHILE ,能不用DELAY 也不用.想尽办法让全局变局部变量 这就是我的程序思想)
不一定要走系统.

走系统是为了多人分工.

keer_zu 发表于 2014-7-10 16:05

eydj2008 发表于 2014-7-9 20:05 static/image/common/back.gif
感觉有点广,
我个人感觉主要,要有一个清晰的程序架构,
程序中要有多任务和多线程的思想,


漫谈,哈哈。论坛不就是这样吗?

eydj2008 发表于 2014-7-12 22:54

没啥 人气 呵呵

keer_zu 发表于 2014-7-14 09:11

加根柴火

Adu0227 发表于 2014-7-17 11:26

范围太大了,还是提点实际的问题吧。

keer_zu 发表于 2014-7-17 12:49

刚刚入手JAVA,不错,挺有趣的。

world.java
package hello;
import java.awt.*;

public class world {
        static tt tt1=new tt();
        /**
       * @param args
       */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                System.out.println("ni hao shijie!");
                tt1.tt_print();
                Frame f=new Frame("窗口1");
                Panel p = new Panel();
                p.add(new Button("请点击!"));
                p.setBackground(Color.YELLOW);
                f.add(p);
                f.setSize(500, 350);
                p.setBackground(Color.RED);
                f.setVisible(true);
        }
}

eydj2008 发表于 2014-7-18 13:53

提到编程思想,刚到一新公司,看之前的代码

RAM 512 B
FLASH 16K

1.结果所有DATA[],这些DATA都不用修改,是死的, 有200多B 全部不用const 弄得最后RAM只余8个字节没用.
当然程序不会出错, 只是编程思想的问题

2.基本上没有局部变量 ,全是全局变量,也看不到static .

3.还好有Volatile 关于Volatile 我也很少用,优化等级高,也不好把握Volatile,只能测试功能.

4.看门狗 最多能定时10ms,然而有一个函数使用时间在4-15MS之间 怎么办呢,他就在这个函数里面再去喂狗多次,结果是可以了,但是很难保证喂好了,对吧
解决办法:当然是增加看门狗的时间改成100MS+ ,怎么改,当然得放弃系统看门狗了,因为这个时钟下面最多才10MS.
   可以采取 #defineRESET_FUNC()            ((void (*)())0x0000)()   
类拟的方法

当然最后功能是对了,我也没办法说别人的程序有什么问题,测试也没发现问题.,只是...对于一个设计人员来讲,感觉不够严谨.

eydj2008 发表于 2014-7-18 13:55

keer_zu 发表于 2014-7-17 12:49 static/image/common/back.gif
刚刚入手JAVA,不错,挺有趣的。

world.java


是 手机就是开发板了 带个SURFACE PRO 到处玩

JAVA 有点像C++

msblast 发表于 2014-7-18 14:15

lz先列出一些给大家参考学习!

keer_zu 发表于 2014-7-22 10:39

eydj2008 发表于 2014-7-18 13:53 static/image/common/back.gif
提到编程思想,刚到一新公司,看之前的代码

RAM 512 B


是啊,做MCU开发的,很多不谈规范的,但是规范确实能提高效率。所以,强调编程思想不只是让程序严谨,对于开发工作还是有很大的改观的。

题目只所以提的这么大,就是因为MCU开发简直就是一块真空地带,几乎能想到的编程思想都可以对其施加影响,从而加以改观。

yyy71cj前辈从这方面入手,个人表示万分得支持。正因为这个领域太真空,所以相信前辈的想法也是要起到抛砖引玉的作用的,如果工作中遇到因为编程思想的运用而带来的惊喜或者困惑也行,一起分享,一起解决。。。。

后学 发表于 2014-7-22 10:57

随便说一下:
规范不仅能规避一些低级错误,也能适当规范下程序风格,对于代码传承还是有好处的。
高手写程序都比较规矩,固化下来一些确实能帮助新手。
不过也不要太吹毛求疵了,另外有些思想是很难固化的,比如异常处理之类的。

warfid 发表于 2014-8-9 14:57

不明觉厉

keer_zu 发表于 2014-9-9 15:45

warfid 发表于 2014-8-9 14:57 static/image/common/back.gif
不明觉厉

把你编程中遇到的问题,突发的奇想说出来吧

nandyanton 发表于 2014-9-17 12:42

现在最根本的思想是 模块化 和 复用
使用外部的资源的用指针调用 给外部用的封装成一个结构体
然后每个C文件最后带一段测试代码 即做本模块测试用 也可以给其他人(也包括自己后期使用)提供一个参考

lwm1368 发表于 2014-10-6 11:01

能总结的就以下几点了,其他的比较零碎:
1.使用状态机进行功能模式划分(便于维护).
2.使用状态机对复杂任务进行分片处理(避免阻塞).
3.任务的消息循环.
4.使用函数指针数组/结构体作为消息处理转移表(便于维护).
5.使用回调函数实现功能模块的解耦(抽象与解耦).
6.基于虚拟共享内存的数据通信.

sxhhhjicbb 发表于 2014-10-9 11:37

eydj2008 发表于 2014-7-9 20:05 static/image/common/back.gif
感觉有点广,
我个人感觉主要,要有一个清晰的程序架构,
程序中要有多任务和多线程的思想,


一个程序中基本上 只能看到一个WHILE
这样的程序也太小了吧。叫代码片段

keer_zu 发表于 2014-10-9 18:07

lwm1368 发表于 2014-10-6 11:01 static/image/common/back.gif
能总结的就以下几点了,其他的比较零碎:
1.使用状态机进行功能模式划分(便于维护).
2.使用状态机对复杂 ...

不错。
状态机是用来降低问题复杂度的。
任务的消息循环指的是什么?
消息处理转移表指的什么?

eydj2008 发表于 2014-10-9 21:49

不是有本书 是 《编程思想与裸编程》吗?
作者估计总结了不少

lwm1368 发表于 2014-10-10 09:46

keer_zu 发表于 2014-10-9 18:07 static/image/common/back.gif
不错。
状态机是用来降低问题复杂度的。
任务的消息循环指的是什么?


任务消息循环:指使用静态环形消息队列,存储任务消息,在消息查询时不断出队并处理,这里应该称做“消息机制”比较合适。
消息处理转移表:在一个消息机制的系统中通常会定义很多的全局消息,但不是每个任务都会监听/处理所有的消息,每个任务设计一个消息处理转移表,用来监听特定的消息并处理(其实就是一个结构体数组,包含要监听的消息类型和处理的函数)。这样做的目的是使得任务不用对每个消息都关心,只订制要处理的小修,维护起来也比较方便。
页: [1] 2 3
查看完整版本: 列出你所知道和编程思想有关的内容,五花八门什么都行!