企业职业发展和C语言调试问题

在学校任教多年,由于各种问题,离开学校,到了一个甲方企业。甲方企业不编程,虽然轻松很多,但也有很多新问题。这些问题,写100篇博文都行。又或者不必写,项目的发展,终究会给出答案。同样是擅长编程的学生,职业发展差别太大了。大一到大四,学生的误区,100篇博文说不完,说了也没人信。毕业后的经历,自然会把职业的真相、他人的谎言,逐个分辨清楚。

有一个问题,值得谈一下。公司做过三个项目:1个是JavaEE SSH;1个是原生android;1个是Flutter。这三个项目,都是当时擅长这些工具的人,开发而成。项目最终效果,功能简陋、难用,维护扩展都难。一种可能,这些项目的程序员,继续改进,让项目更高级、功能更强大。另一种可能,程序员接了其他项目,重复增删改查,做一些简单项目,养家糊口。

这有4个结论:

(1)熟练掌握、擅长某一个工具(流行的、过时的),并不是多么厉害的事。使用Django或jsp,如果只会增删改查,并不能做出有竞争力的产品。一个人会uniapp、react、angular、flutter,号称全栈,只会做一个登录页面,有什么意义。

(2)入职以后的程序员,靠自学、靠实践,能变成高手?还是过两年,就随便改行?靠自学、靠实践,很难变成高手。原因是,他经手的项目,无论一个,还是十个,都只做最简单、最快完成、交付的功能。重复十次简单项目,还是一个简单的技术。

(3)基本功重要。我过往学过的技术、讲过的课,很多。哪个技术和现在的项目完全对应?有没有可能,人预测到将来要做某个项目,于是只学对应的技术、其他技术都不学?流行的工具,年年更新换代。“会了python,通杀、高薪”,“不会python,就淘汰、落后”,这都是内行骗外行,就像培训班劝家长掏学费。技术是通用的,基本功重要。即使读博,矩阵、概率论,这些知识有变化吗?

(4)学生的观点,来自同学、学长、老师、网友等等,来自所处的学习环境和氛围。“打游戏比学习重要”,“看PPT比项目实践重要”,相信这些观点的人,很多。其他误区、争议,太多了。大学和大学差别太大,学生和学生差别太大,择校确实重要。

写这篇博文,是因为有人问一个C语言问题。我的专业技术,都是这样点点滴滴积累的,做个解答。时至今日,Linux、网游的重要模块,也是C语言写。Lua也有必要了解。

题目是这样:

int a=3,b,c;

b=(a++)+(a++)+(a++); // 输出a,b

c=(++a)+(++a)+(++a); // 输出a,c

答案是多少?这个知识的学习方法,不是记忆一个规则,去计算。而是,打断点、看汇编,了解原理。

看运行结果。打断点后,开始调试。程序在断点处,暂停。

 结果就是这样。学生不了解断点、没听说过汇编。之后,学生能理解字节码、虚拟机吗?java的this指针,压栈,学生听说过,没办法理解。

 三次++a的指令如下:

这也没什么道理,算完前两次加1,然后就两个a相加。如果非要谈这个问题,可以了解《编译原理》,先把一个加号、连同两边表达式处理完,再算另一个加号。计算机就是这样编译执行的。

项目中,不会这样写表达式。

但仍然有必要了解,断点、汇编、参数压栈、编译,这些技术,在其他内容中有类似用法。一个人的专业技术,就是这些内容积累而成。

猜你喜欢

转载自blog.csdn.net/weixin_42644456/article/details/119719780
今日推荐