考试动态

名师推荐

试听名师的课 查看所有名师

做算法研究,ICPC为了什么?都是做研究的牛人吗? 发布时间:2024-02-21 13:07 来源:网络

我经常在网上看到很多有才华的人都有参加过ICPC等大型编程比赛的经历。

我是学嵌入式开发的,感觉每天都在看芯片资料。 代码并不难,很多甚至是现成的。 你自己只要修改一下就可以使用。

看来先进的算法和超强的数学能力并没有在我的学习中体现出来! 完全没用啊~~

那么ICPC为什么要做算法研究呢? ? ? 他们都擅长做研究吗? ?

ICPC 的东西对普通程序员意味着什么? ?

以下是去过现场的人的回答:

陈俊奇,你没必要参加ICPC。 行业不同。 计算机软件工程师也参与其中。 个人感觉嵌入式工程师涉及的算法和计算机软件工程师设计的算法还是有一点点区别的。 计算机软件工程师想要实现的是在通用计算机平台上运行的软件。 算法研究倾向于尽可能减少系统开销,而完全不考虑硬件设备。

嵌入式软件工程师设计的工作是机器编程或者面向过程的编程。 算法主要考虑如何结合硬件来处理事件。 由于嵌入式系统不像计算机那样拥有大量的内存资源(RAM基本以KB来计算),所以很少敢使用链表。 甚至有些电子、测控、自动化专业的学生虽然将来也可能从事嵌入式系统,但并不学数据结构。 软件开发),但是当你使用DSP来处理图形、音频和电机控制时,就会用到算法。 最简单的就是《自动控制》教材中提到的PID。 还有一些听说过但没做过的神经网络算法(在实验室和做项目的时候听研究生说的,但我只是本科生,不懂自学里的一堆数学理论)控制教材),打个比方,你想设计一个嵌入式系统,控制自热水壶的水温准确、快速地达到60℃,是不是直接加热到60℃就停止加热(但是停止后会有余热继续升高温度,浪费电); 或者你应该把它加热吗? 当达到50度以上时,停止加热,让余热慢慢将水温带到60摄氏度,然后间歇性地控制水温(如何既省电又省时)。

至于电机的控制,我记得看到过MIT学生做的四轴飞行器。 它可以在强风中平稳自由地飞行。 如果你用棍子戳它,它只会稍微晃动一下,很快就会恢复稳定。 这也是通过自控算法来实现的。 还有一些更贴近人们生活的嵌入式系统算法,就是那些实现汽车ESP车身稳定系统的算法。

因此,嵌入式软件研发工程师和普通计算机软件工程师(程序员)在设计思维上其实是存在一些差异的。 但共同点是:加班对于勤劳的人来说是必不可少的……

PS:这些过程控制和自动控制理论我实践很少。 有错误之处请指出。

沉晨,因为你把自己定位为“普通程序员”,这确实没有道理。

李建波-优优移动嵌入式与算法没有直接关系。 你提到的嵌入式开发属于嵌入式系统的驱动单元。 嵌入式系统中涉及算法的部分应该在“主控单元”中。 如果你想在算法方面感到先进,你可以考虑在通信领域尝试。 通信领域的无线信道计算涉及的算法较多,但基本已经成熟。

还有机器人领域,有机械臂控制的识别算法,也有涉及图像处理的嵌入式领域。 另外,发帖者应该知道,每个人都有自己的成长轨迹,这与周围的环境密切相关。 你想想,还有人不到三十岁,就成为国家的领导人了。 虽然每个人的轨迹不同,但轨迹的终点应该是我们心中所寻找的。 的地方,而不是一致性的结果。 这样,每个人的人生都是独一无二的。

邱振宇有这个空闲时间,何不攒起来享受造轮子的乐趣,写一些编译器、3D图形引擎、正则表达式引擎、通用Adt库、网络库、3D超级马里奥等等,或者实现一些嵌入式中你想要的东西和一般嵌入式从业者不同的东西,比如ICPC,不适合你(从价值观上)。

条条大路通罗马。

汤姆建议回去回顾一下嵌入式系统的定义。 什么是嵌入式系统? 国内普遍接受的定义是:嵌入式系统以应用为中心,以计算机技术为基础,软硬件可定制。 适用于应用系统满足功能、可靠性、成本、体积、功耗要求严格的专用计算机系统。 这里的定义值得深思。 由于嵌入式系统与传统计算机系统有很大不同,因此对代码质量的要求非常高。

从计算机的角度来看,程序的性能一定要高,那么时间复杂度一定要低。 由于内存小,所以空间复杂度必须低,必须设计良好的数据结构。 功耗需要低,因此一些硬件功能由软件完成。 从应用角度来看,嵌入式系统是以应用为中心的,因此有大量的应用算法需要开发:语音识别、人脸识别、数据融合、路径检测、机器视觉、压缩编码、信号检测等。 ……

你能否在工作中使用算法和数学取决于你。 与机械加工类似,普通技术工人不需要很高的理论水平编程比赛,只需要看懂工程师给出的图纸即可。 然而,对于工程师来说,情况就不同了。 必须合理选择材料、结构和工艺。 这个时候就需要理论了,所以一切就看你自己了。

李俊杰要看你的工作内容和个人喜好。 如果你喜欢造轮子,这些很有用。 嵌入式也分为硬件和软件。 如果你选择专注于硬件而更多地致力于电子产品,那么软件竞赛对你来说就没用了。 如果选择专注于软件,现在大部分都是Linux驱动开发,涉及到的算法并不多。 但如果不想当底层搬运工,想往上层走,像图像处理、语音识别之类的东西就涉及到更多的数学。 如果有兴趣,可以往机器学习等高薪低竞争的方向发展。 当考虑到这些时,算法和数学技能变得尤为重要。 单纯用微控制器和DSP来控制一个电机甚至一个摄像头并没有太多技术含量。 像上面提到的四轴、自平衡优化、机器人、路径规划、摄像头、图像压缩等等,同样的东西就看你想挖多深了。

王欣的专业是电子。 作为新生,他在 ACM 打了一年球,并在地区比赛中获得了铜牌。 至少写程序折磨同学还是很容易的(学校很一般)。 参加这种类型的比赛还是会让你的思维更开阔,代码实现能力更强。

钟瑞光作为一名拥有多年OI经验、目前研究软件无线电的嵌入式算法工程师来回答。 我目前所做的主要是在FPGA、DSP和多核arm上实现各种通信算法,例如宽带抽取滤波器。 主要难点在于算法的并行扩展、强实时要求下的优化以及涉及的知识结构。 主要是计算机体系结构(比如CPU的工作原理)和数字电路的基础知识,但是实现的时候一定要对算法本身有透彻的了解(据说ACM和oi都出了FFT相关的试题)近几年?我没有亲自验证过)。 以fft为例,这个运算在FPGA上的实现思路与PC、GPU完全不同。 此外,还有各种关于零拷贝的代码研究,以接近硬件IO瓶颈。 从嵌入式工业控制的角度来说,对数学基础也有一定的要求,比如无人机飞行控制涉及到的算法。 当然,应用范围广泛的通用嵌入式系统主要侧重于业务组合,对算法要求不高。

匿名用户对于“普通”程序员来说很可能毫无意义。 嵌入式行业依赖硬件,测试成本较高。 实际开发中,很多时候都是优先考虑稳定的。 从成本效益的角度来说,你没有机会按照你的想法去做你想做的事情。 一个“普通”的开发者在这方面基本上没有发言权。 无论是初创公司还是已经入行十几年、几十年的公司,代码往往都是现成的。 说到PID算法,哪家公司会让你从头开始实现呢? 不都是参数调整吗? 这对开发者的要求不是很高吗? 并且存在一个可悲的情况编程比赛,嵌入式行业企业的竞争力更多的是技术以外的东西,技术人员的重要性相对较低。 你在开发过程中付出如此多努力的优化,可能还不如销售时的一杯酒,或者审核时悄然送来的一个信封……

总的来说,嵌入式软件开发的复杂度无法与计算机开发相比,所以对算法的要求没有那么高。 然而,为了降低成本,大多数嵌入式设备都比PC拥有更多的内存和存储空间。 它小了很多,所以也需要算法优化,所以高级的嵌入式设备还是需要学习基础的数据结构和算法。 但往往嵌入式系统更重要的是硬件设计的质量,以及软硬件集成、系统移植和驱动程序开发(可能需要连接传感器)的知识。

|整理文章是为了传播相关技术,版权归原作者所有|

第一考试网友情提示:如果您遇到任何疑问,请登录第一考试网考试动态频道或添加qq:,第一考试网以“为考友服务”为宗旨,秉承“快乐学习,轻松考试!”的理念,旨在为广大考友打造一个良好、温馨的学习与交流平台,欢迎持续关注。以上是小编为大家推荐的《做算法研究,ICPC为了什么?都是做研究的牛人吗?》相关信息。

编辑推荐

河南2010年会计从业资格考试成绩查询

2010年重庆恢复初级会计电算化考试通知

2010年枣庄市会计从业资格证书办理事项的说

天津2010年会计电算化考试报名时间5月2日-6

辽源市2010第二季度会计从业资格考试报名时