面向对象的程序员应该懂(学习)什么?

本文探讨为何80%的程序员难以成为架构师,从并发编程、对象构建能力和理解软件输出特性三个角度深入分析,指出程序员的核心职责在于商业逻辑的实现及运行时效果,并强调了对软件产品输出特性的理解对于使用者责任的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先,这里要把程序员的概念放宽一点,不管是分析的,还是搞设计的或者编码,测试的,都叫做程序员。也就是说,这里以程序员泛指所有软件实现过程中所涉及的所有人员。但是不包括如配置管理员,数据库管理员,测试工程师这样的职位。因为这里讨论的仅仅是软件的构建,与验证、管理等其它周边事务都无关。

第一个要考虑的就是并发编程。比如多线程,它是否真是程序员本应该涉及的领域。程序员是否真的应该费大量精力去研究它,以便然后才能在现实工作中正确地使用它?

这是形式语义学讨论的范围。形式语义学讨论的就是语言元素的语义。其实我觉得它应该讨论得更多一点,比如比语言层次更高一点的如库(Library),平台,操作系统服务,本地服务,协议等的语义。

程序员应该干什么??

根据不重复发明轮子的原则,所有编程中的共性部分都不应该是程序员的职责。程序员只应该对商业逻辑负责。程序员当然还要负责这些逻辑的运行时实现效果。也就是说,程序员负责的部分包括两个:

1,程序的静态特性;

2,程序的动态特性。

简而言之,程序员应该是最终的产品责任人。这并不意味着程序员会负责整个系统所有的部件质量,也不意味着程序员只负责自己编写的程序部分。程序员对于因需要引入的任何系统构件都拥有责任。但这种责任是一种使用者责任,是区别于开发这些构件的生产者责任的。这就象我买了个手机,手机不是我生产的,但我仍然对它的质量负有责任:使用者责任。否则我就不会在购买的时候问东问西了。我问东问西,因为我关心它的质量,这个询问过程即体现了我的一种承担责任的态度。

承担使用者责任,需要的是对所使用产品的输出特性的理解。这种输出特性可能由生产者定义,也可能由第三方定义,也可能由使用者自己定义,毫无疑问的是,它必须被定义。如果产品的输出特性都不重要了,那么就没有任何东西是重要的了。

所以一个面向对象的程序员,应该至少拥有两种能力:

1,构建必要对象的能力(不一定是领域建模。因为前面提过领域建模只是面向对象的一种方法而已。面向对象的方法论并不一定要求只能对领域建模。面向对象的方法论的要求是:你的系统是由对象组成的);

2,理解大部分软件产品的输出特性的能力。比如数据库,支撑平台,操作系统,网络(因特网),安全,硬件等等。其中有些产品是有形的,有些是无形的如安全产品。这里所指的安全产品,是指作为组成安全方面的全部元素其中的全部产品。

当然,在技术以外,程序员如果懂得更多的东西那当然是好事情。如项目管理,软件质量与测试,IT审计,配置管理,系统架构,,,因为这些都是处在软件价值链上面的东西,懂得越多当然越好。

如果不好,那就是科学的错误了。 

转载于:https://my.oschina.net/digerl/blog/34062

### Java程序员入门学习路径及资源推荐 对于希望进入Java领域的新手来说,制定合理的学习计划并利用优质的学习资源至关重要。以下是详细的建议: #### 学习路径规划 1. **基础知识夯实** 掌握Java的基础语法、面向对象编程的核心概念以及常用的数据结构和算法是必不可少的[^1]。这些知识点构成了后续深入学习的技术基石。 2. **理解访问修饰符的作用** 需要深入了解`public`, `private`, `protected`, 和默认(default)这四种不同的访问权限设置及其应用场景[^2]。这是编写清晰、安全代码的重要环节之一。 3. **进阶技能提升** 当具备一定基础之后,可以进一步探索更复杂的主题比如异常处理机制、集合框架(Collection Framework),还有多线程与并发等内容。同时也要熟悉常用的API库和技术栈。 4. **实践项目积累经验** 理论联系实际非常重要,在掌握了理论知识的基础上应该尝试完成一些小型到中型规模的实际工程项目。这样不仅可以巩固所学知识还能提高解决问题的能力。 5. **持续更新技术视野** 跟踪行业动态和发展趋势也很重要,例如关注DevOps等相关领域的变化也能帮助更好地适应现代软件开发流程[^4]。 #### 推荐学习资源 - **在线课程**: 可考虑参加由知名机构如黑马程序员提供的《JAVA基础入门》系列教程,这类系统化的教学材料能够有效引导初学者快速上手。 - **书籍资料**: 查阅经典教材如《Effective Java》,它涵盖了大量关于最佳编码实践方面的指导;另外,《Head First Java》则以其生动有趣的方式介绍了众多关键概念。 - **开源项目参与**: 加入像CODING这样的平台上的开源贡献活动可以获得宝贵的真实世界编码经历,并有机会向更有经验开发者请教[^3]。 ```java // 示例:简单的HelloWorld程序展示基本语法规则 public class HelloWorld { public static void main(String[] args){ System.out.println("Hello, world!"); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值