OOP 思想真的很先进吗 GOTO 真的不能用吗

2016-12-22 09:52:55 +08:00
 nbhec2

由于身处的行业环境,身边有很多做嵌入式的朋友,引发我对这两个问题的老生旧谈的思考。 个人观点:

这个所谓的面向对象思想其实不过是降低了行业的入门门槛罢了,实际上对于任何一段程序,一切归为函数。抽象画一个程序只是降低了记忆力门槛,因为你不需要记下来整个程序段的内容,都封装好了。但是函数、过程明显要高效严谨的多。 GOTO 是一个高效的语句,它和面向过程函数是相辅相成的, GOTO 其实就是 JMP SETJMP , JMP 允许你从程序的某一行跳到另一行, SETJMP 允许你从一个函数中跳到另一个函数中,它使得整个程序致密、高效、严谨,紧紧耦合在工艺上。 总之我身边的工程师每天都在写着这样严谨、美观、精致极富逻辑结晶的程序,调试控制实现着各种复杂的工艺,小到能源站大到酸奶生产线。听了一节 JAVA 视频,居然听到了这种认为 OOP 先进只支持 OOP 删除 GOTO 语句的程序设计语言,难怪它如此的低效低质。

13305 次点击
所在节点    编程
124 条回复
v2exhehehehe
2016-12-26 14:25:23 +08:00
首先 c 是可以面向对象的,有兴趣可以看看 jserv 的 物件导向的 C ,在 Linux kernel 里面也有大量的范例。
一般 goto 用于基于返回值的错误处理(比如做一些清理)以及跳出深层的嵌套
ryd994
2016-12-26 15:45:38 +08:00
goto 在标准库和 Linux 内核里都不少见
主要用于 bailout cleanup
通常的准则是只用于这类用途
不控制运行逻辑,也不连续使用(每个逻辑分支最多一个,到函数尾)
另外,编程没有银弹。 oo 是很好用的设计,但并不是万能。工程师是以目标为导向,根据现有的条件,选择最优化的途径。
Balthild
2016-12-28 12:48:05 +08:00
@nbhec2 git 就是用 C 语言实现面向对象的例子之一。
另外,早期 C++编译器只是 C++到 C 的翻译器,这个你该不会不清楚吧?
wysnylc
2017-01-20 17:25:10 +08:00
特意来上来骂你一句,沙比.
面向对象降低门槛真是第一次听说,这个真理你可以申请雨果奖.
低能的大脑无法装载程序?请问你的大脑能背多少字节的数据?怕是你的猪脑 1000 个 01 都背不下来.
趁早退出软件行业,至少别进入 java,有你这种智障在技术只会倒退不会进步.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/329320

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX