打印

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

[复制链接]
4091|40
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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
感觉有点广,
我个人感觉主要,要有一个清晰的程序架构,
程序中要有多任务和多线程的思想,

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

使用特权

评论回复
地板
eydj2008| | 2014-7-12 22:54 | 只看该作者
没啥 人气 呵呵

使用特权

评论回复
5
keer_zu|  楼主 | 2014-7-14 09:11 | 只看该作者
加根柴火

使用特权

评论回复
6
Adu0227| | 2014-7-17 11:26 | 只看该作者
范围太大了,还是提点实际的问题吧。

使用特权

评论回复
7
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);
        }
}

使用特权

评论回复
8
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.
   可以采取 #define  RESET_FUNC()            ((void (*)())0x0000)()   
  类拟的方法

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

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
zhaxiaobian_er + 1 赞一个!
9
eydj2008| | 2014-7-18 13:55 | 只看该作者
keer_zu 发表于 2014-7-17 12:49
刚刚入手JAVA,不错,挺有趣的。

world.java

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

JAVA 有点像C++

使用特权

评论回复
10
msblast| | 2014-7-18 14:15 | 只看该作者
lz先列出一些给大家参考学习!

使用特权

评论回复
11
keer_zu|  楼主 | 2014-7-22 10:39 | 只看该作者
eydj2008 发表于 2014-7-18 13:53
提到编程思想,刚到一新公司,看之前的代码

RAM 512 B

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

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

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

使用特权

评论回复
12
后学| | 2014-7-22 10:57 | 只看该作者
随便说一下:
规范不仅能规避一些低级错误,也能适当规范下程序风格,对于代码传承还是有好处的。
高手写程序都比较规矩,固化下来一些确实能帮助新手。
不过也不要太吹毛求疵了,另外有些思想是很难固化的,比如异常处理之类的。

使用特权

评论回复
13
warfid| | 2014-8-9 14:57 | 只看该作者
不明觉厉

使用特权

评论回复
14
keer_zu|  楼主 | 2014-9-9 15:45 | 只看该作者
warfid 发表于 2014-8-9 14:57
不明觉厉

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

使用特权

评论回复
15
nandyanton| | 2014-9-17 12:42 | 只看该作者
现在最根本的思想是 模块化 和 复用
使用外部的资源的用指针调用 给外部用的封装成一个结构体
然后每个C文件最后带一段测试代码 即做本模块测试用 也可以给其他人(也包括自己后期使用)提供一个参考

使用特权

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

使用特权

评论回复
17
sxhhhjicbb| | 2014-10-9 11:37 | 只看该作者
eydj2008 发表于 2014-7-9 20:05
感觉有点广,
我个人感觉主要,要有一个清晰的程序架构,
程序中要有多任务和多线程的思想,

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

使用特权

评论回复
18
keer_zu|  楼主 | 2014-10-9 18:07 | 只看该作者
lwm1368 发表于 2014-10-6 11:01
能总结的就以下几点了,其他的比较零碎:
1.使用状态机进行功能模式划分(便于维护).
2.使用状态机对复杂 ...

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

使用特权

评论回复
19
eydj2008| | 2014-10-9 21:49 | 只看该作者
不是有本书 是 《编程思想与裸编程》吗?
作者估计总结了不少

使用特权

评论回复
20
lwm1368| | 2014-10-10 09:46 | 只看该作者
keer_zu 发表于 2014-10-9 18:07
不错。
状态机是用来降低问题复杂度的。
任务的消息循环指的是什么?

任务消息循环:指使用静态环形消息队列,存储任务消息,在消息查询时不断出队并处理,这里应该称做“消息机制”比较合适。
消息处理转移表:在一个消息机制的系统中通常会定义很多的全局消息,但不是每个任务都会监听/处理所有的消息,每个任务设计一个消息处理转移表,用来监听特定的消息并处理(其实就是一个结构体数组,包含要监听的消息类型和处理的函数)。这样做的目的是使得任务不用对每个消息都关心,只订制要处理的小修,维护起来也比较方便。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:qq群:49734243 Email:zukeqiang@gmail.com

1322

主题

12293

帖子

53

粉丝