Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
嵌入式技术综合讨论
迷途中的小鸟
发布于 2013-04-22 00:11:25 浏览:9128
订阅该版
今天想向大家讨教一个问题,这个问题困扰我一两年了。 还是从我接触编程开始说起吧,高中开始学C语言,那时候编程对我来说是一种课程, 每周四节上机课对我来说是激动的,我会忙的不亦乐乎,dos环境下,陌生的恐惧,但当时 却不以为然,一开机便键入不知何原因的命令,直接进入turbo c 2.0,如今看起来将会是 非常高深的编程环境。不错,现在大家都用各种强大的IDE了。但当时的我也许只知道这是 进入编程的必须步骤,究竟为什么需要这样当时并没有想太多。机械与惯性吧,或许也是我 们大多人接触到的教学方式,始终是一种“知其然不知其所以然”的感觉。且能反思出这个道 理的人甚至都很少。比如很多时候你会不会因为一些前辈的一个点拨而恍然大悟? 上机课不间断的重复这练习课程代码,反复的编辑、编译、调试、举手。但是三年毕业 了,回想起当时对编程的概念就是C语言,就是没有桌面没有我们今日看到的window、 色彩丰富的操作的环境下进行的main、if、for、break、switch、continue、+、-、*、/、 *p、p++、a*、++i、i++、?=、&&、||、!、&等等运算符、逻辑控制、分支跳转等组合的 搭配组合来实现想达到的目的而已。不知道有程序构架、不知道的还有接口抽象、不知道的 还有数据结构、不知道的还有算法、不知道的空间换时间——时间换空间、不知道的还有.... .. 大学三年埋头苦干,挣扎寻找这个编程世界的新鲜感、奇特点。但是即使让我知道代码 不只有在电脑上能被执行,而且还能针对特定的硬件做编程控制这些新鲜、奇怪的作用。却 反过来还是没有搞明白的是——代码难道就是这样吗?编程就这些吗? 参加工作后发现,前人留下的代码千奇百怪,维护之艰难、重构之风险、束缚重重。眼 看着自己写过的那些代码,感受如同一篇博客里所说的:“在一堆堆的代码面前,有时候, 很容易迷失曾经进来的入口,而掉入符号,变量以及函数堆积成的沼泽地。”确实是这样, 我不知道自己如何才能写得更加美观、更加灵活、更加通用、更加简洁。但我始终有一种感 觉,当我读一些开源软源的时候发现别人写的代码,为什么就从感觉上来看就这么舒服、这 么简单、这么具有通用性、灵活性。就从基本的符号命名、代码组织上能感觉读起来非常容 易。就比如我有时候没事就在琢磨RTT的代码设计者在编写的时候所处于的那种状态,就在 猜想那些作者们当时是怎么思考的。怎么就能想到这样去实现。 直到前几天突然看到一年多年前为公司实现的一个I2C打印接口。那是一个没有操作系 统的环境,整个程序是buffer——poll进行的。记得当时PM跟我说需要考频繁的poll i2c打印 对系统带来的负载。所以他介意我在i2c_printf里面加一个now_call_time与pre_call_time 的限制。我一想觉得不可靠,应该是更具i2c的hard buffer来决定i2c_printf的push buffer 过程。我是觉得i2c是具有硬件buffer的,所以简单的将数据送入buffer效率是很高的,不用 考虑一般的无缓冲而带来的阻塞问题。然而我记得最后我们发生了很严重争论,我差点罢工 走人了。最后想想无论在哪里,领导的话不听,到哪里都会容不下自己。现实就是这样!! 举这么一个例子是因为我将要说,最近我找到一点点窗口,发现自己在编码过程中一定要善 待——“机制”与“策略”。现在我还完全不能理解这个思想的本质,但是至少我觉得i2c_printf 接口按照PM的想法是错误的,是含糊在机制与策略中的。 我今天说出这些苦恼,是想让给位有过同感的,经历过的,走出来的老少爷们们给点指 导,给点学习方法,方向。这种问题困扰我真的很久了,阻碍了我前进的动力,方向。多谢!!
查看更多
25
个回答
默认排序
按发布时间排序
prife
2013-04-22
这家伙很懒,什么也没写!
分享我自己的感触: 大部分时候,不站在巨人肩膀上的重新思考,也是重复造轮子行为。 所以解决方法是:多读书。 PS: 计算机行业发展到现在,已经积累了大量的资料和知识,可以说,我们目前所在的嵌入式领域遇到的大部分问题。前任都应该遇到过。学习前辈是怎么做的,这就是站在巨人的肩膀上的意思。 历史总是在不断重复,计算机也是如此。
geniusgogo
认证专家
2013-04-22
这家伙很懒,什么也没写!
>分享我自己的感触: >大部分时候,不站在巨人肩膀上的重新思考,也是重复造轮子行为。 >所以解决方法是:多读书。 > >PS: >计算机行业发展到现在,已经积累了大量的资料和知识,可以说,我们目前所在的嵌入式领域遇到的大部分问题。前任都应该遇到过。学习前辈是怎么做的,这就是站在巨人的肩膀上的意思。 >历史总是在不断重复,计算机也是如此。 --- 很感谢prife的回复,我一直很佩服你的那种状态与激情,能够在很短时间内阅读很多的著作。我虽然也跟你说过我也有读过某些书籍,并问过你有读过的一些资料。我感觉我当时读的时候和现在读的时候有不同的感悟,可能就是那种不断重复的去读某本书会有不同的收获。而且我发现学习方法也重要,我看到你读书时都会写下笔记,这样可以增加理解和记忆。而我之前都没有写笔记。再就是很大的问题,总认为自己以前读过了的书没有什么收获觉得没什么大不了,也就那样。这些杂念,让我认为没有必要再去读一本读过的书,当然现在我要重新思考这个问题。而往往之前读过的犹如前面所说的,当时读的都因为学习方法的不对,或者感悟都没有到达那个层次,且所没有领悟到的东西太多,丢的太多了。导致现在我都不知道自己该读什么书,该如何进行我的下一步了。一直卡在某个坎上,突破不了自己。
grissiom
2013-04-22
这家伙很懒,什么也没写!
基本务虚的: [http://book.douban.com/subject/1477390/](http://book.douban.com/subject/1477390/) [http://book.douban.com/subject/1152111/](http://book.douban.com/subject/1152111/) [http://book.douban.com/subject/1467587/](http://book.douban.com/subject/1467587/) 然后或许就是各种编码,看码,实践,体会……
bernard
2013-04-23
这家伙很懒,什么也没写!
现在有些书确实好很多,以前我都是随着自己的编程经验变化,摸索、总结、重构。 重构非常重要,这个也源自敏捷编程。有的时候甚至要有决心推翻以前的设计,从头再来过
grissiom
2013-04-23
这家伙很懒,什么也没写!
是的,现在忽然很喜欢重构了…… 不过一个悲剧就是发现最后的实现和最初的设计文档还是有差距的……
bernard
2013-04-23
这家伙很懒,什么也没写!
>是的,现在忽然很喜欢重构了…… > >不过一个悲剧就是发现最后的实现和最初的设计文档还是有差距的…… --- 这个肯定是的,如果实现与最初的设计是一致的,那么也就不存在重构了,这也是敏捷开发中一项十分重要的内容。
geniusgogo
认证专家
2013-04-23
这家伙很懒,什么也没写!
>基本务虚的: >[http://book.douban.com/subject/1477390/](http://book.douban.com/subject/1477390/) >[http://book.douban.com/subject/1152111/](http://book.douban.com/subject/1152111/) >[http://book.douban.com/subject/1467587/](http://book.douban.com/subject/1467587/) > >然后或许就是各种编码,看码,实践,体会…… --- 买书如山倒,看书如抽丝! 这几本书看起来有点枯燥,因为对于我这样一个coder来说脱离了本质的code,哇哈哈哈哈哈哈哈,所以看起来好枯燥。不过我正在寻找一种心里平衡! [s:154]
geniusgogo
认证专家
2013-04-23
这家伙很懒,什么也没写!
>现在有些书确实好很多,以前我都是随着自己的编程经验变化,摸索、总结、重构。 > >重构非常重要,这个也源自敏捷编程。有的时候甚至要有决心推翻以前的设计,从头再来过 --- 重构,我通常叫它“重写”,没有很好的构思,但是心里却又一种莫名的烦恼,看着那些代码写的自己都不承认,包括看到同事写的代码一样很shit。 我工作任务之余或者让我去维护老产品的时候,有时候我都在愤怒,如果幸运的话,碰到说要修改或者添加,我能则重写,否则至少模块被我改掉! [s:157]
geniusgogo
认证专家
2013-04-23
这家伙很懒,什么也没写!
>是的,现在忽然很喜欢重构了…… > >不过一个悲剧就是发现最后的实现和最初的设计文档还是有差距的…… --- 何止是“还是有差距的”,我乃那是简直脱离轨道。当然文档也不正规!
bernard
2013-04-23
这家伙很懒,什么也没写!
那么文档也进行重构
撰写答案
登录
注册新账号
关注者
0
被浏览
9.1k
关于作者
geniusgogo
这家伙很懒,什么也没写!
提问
42
回答
157
被采纳
7
关注TA
发私信
相关问题
1
开新板块了! 迅速占领第一帖!
2
有想玩点阵做电子钟的没?手上有屏
3
LED点阵屏硬件保护研究笔记
4
USB相关、Android、Arduino
5
Arduino即将发布ARM平台新产品
6
关于开关电源的同步整流技术
7
rt_thread_wizard使用教程
8
[转]开源如何盈利
9
FM3系列MCU的IO操作笔记。
10
转一个xoolhaha 的寻一起开发的帖子
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
env中添加lvgl软件包后,keil编译包--c99错误
2
【NXP-MCXA153】 定时器驱动移植
3
GD32F450 看门狗驱动适配
4
【NXP-MCXA153】看门狗驱动移植
5
RT-Thread Studio V2.2.9 Release Note
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
PWM
freemodbus
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
编译报错
Debug
rt_mq_消息队列_msg_queue
SFUD
keil_MDK
msh
ulog
C++_cpp
MicroPython
本月问答贡献
踩姑娘的小蘑菇
7
个答案
2
次被采纳
a1012112796
18
个答案
1
次被采纳
红枫
5
个答案
1
次被采纳
Ryan_CW
5
个答案
1
次被采纳
张世争
4
个答案
1
次被采纳
本月文章贡献
YZRD
3
篇文章
6
次点赞
catcatbing
3
篇文章
6
次点赞
lizimu
2
篇文章
10
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部