编程的本质

简介:
程序员们每天为之忙碌而编写的程序归根到底是由什么组成的?——数据和算法 。
想想是不是这样?
那么,究竟是“数据/结构”重要?还是“算法”更重要呢?
思考一下我们为什么要编写程序?——处理数据 。
不是么,无论是存储和读取、发送和接收、监听和订阅、服务端与客户端,我们翻来覆去,玩的就是一堆“数”。
因此可以想象,如果程序建立在一个不佳的数据模型之上,改进的成本将远远大于建立在不佳的算法之上。
数据建模是构建好系统的第一步,如同建造一座高楼,好的基础是最重要的,而优秀的算法如同华丽的装饰,可以看作是后来的锦上添花,尽管这在很多情况下是必不可少的……
编写程序的难点在哪里?或者说我们如何把“数”玩到极致?——多线程和内存 。
对于这两点算法的研究和改进可以说永无止境!因为它们决定着系统的安全性、健壮性和效率。

多线程和内存的算法一直是高手们谈论的话题、面试中的难点、工作中的陷阱,想想吧:JVM Cache 高性能 高负载 …… 都与二者密切相关。
一个改进程序的例子:
Gaven King 写 Hiberate 的动力就是因为厌倦了RD(关系数据模型)和OOP(面向对象编程)之间的转换——通过 JDBC + MetaData 你已经可以全部掌控对象数据模型,那么为什么不多加一个工具层,实现这种软化呢。
 
 


     本文转自胡奇 51CTO博客,原文链接:http://blog.51cto.com/huqicto/280909,如需转载请自行联系原作者

相关文章
|
机器学习/深度学习 人工智能 算法
|
1月前
|
安全 Linux 网络安全
Metasploit Framework 6.4.88 (macOS, Linux, Windows) - 开源渗透测试框架
Metasploit Framework 6.4.88 (macOS, Linux, Windows) - 开源渗透测试框架
458 0
|
存储 关系型数据库 MySQL
RR隔离级别在MySQL中的实现与幻读问题探讨
【10月更文挑战第3天】在数据库管理系统中,事务隔离级别是确保数据一致性和并发性能的关键要素。MySQL作为广泛使用的关系型数据库管理系统,支持多种事务隔离级别,其中可重复读(Repeatable Read,简称RR)是其默认隔离级别。本文将深入探讨RR隔离级别在MySQL中的实现原理,以及RR隔离级别下幻读问题的产生与解决方案。
453 2
|
8月前
|
机器学习/深度学习 算法 量子技术
《深度揭秘:拉普拉斯平滑在朴素贝叶斯算法中的关键作用与参数选择之道》
朴素贝叶斯算法在文本分类、情感分析等领域广泛应用,但常遇零概率问题,即某些特征从未与特定类别同时出现,导致条件概率为零,影响模型准确性。拉普拉斯平滑通过在计数上加一小正数(如α=1),避免了零概率问题,提升了模型的稳定性和泛化能力。选择合适的平滑参数α至关重要:经验法则通常设α=1;交叉验证可找到最优α值;根据数据规模和特征分布调整α也能有效提升模型性能。
363 19
|
8月前
|
存储 C# 图形学
Unity 逐字显示 打字机效果
在 Unity 中实现逐字显示的打字机效果,主要通过 UGUI Text 组件和 C# 脚本完成。核心原理是将文本逐字拆分并按时间间隔依次显示。具体步骤如下:1. 创建 Text 组件和脚本;2. 使用协程或 Update 方法控制字符逐个显示。代码示例展示了两种实现方式,一种使用协程 `IEnumerator`,另一种通过 `Update` 方法结合 `Substring` 实现逐字显示效果。
|
Java Linux
解决OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0...
解决OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0...
2388 0
|
前端开发 索引
基于React的简单轮播图组件
基于React的简单轮播图组件
285 3
|
开发框架 监控 Java
Spring Boot中的反应式编程最佳实践
Spring Boot中的反应式编程最佳实践
|
机器学习/深度学习 算法 计算机视觉
m基于Yolov2深度学习网络的智能零售柜商品识别系统matlab仿真,带GUI界面
MATLAB 2022a中展示了YOLOv2目标检测算法的仿真结果,包括多张检测图像。YOLOv2是实时检测算法,由卷积层和全连接层构成,输出张量包含边界框坐标和类别概率。损失函数由三部分组成。程序使用75%的数据进行训练,剩余25%作为测试集。通过ResNet-50预训练模型构建YOLOv2网络,并用SGDM优化器进行训练。训练完成后,保存模型为`model.mat`。
322 2