软件开发中的哲学——世界的本原是物质(一)

2023-05-16

在这个系列博客的第一篇中,首先要涉及到的哲学原理就是——世界的本原是物质。

在IT领域,有硬件和软件之分,而二者之间的关系,就和物质与精神类似。没有硬件的存在,那么软件就没有能够发挥作用的基础支持了。所以,我们会看到,硬件的作用非常重要,即便是我们只从事软件开发,也需要对硬件有足够的了解,这也正是计算机软件专业的学生也需要学习计算机原理,计算机网络等等课程的原因所在把。

硬件的不同,有时候会在很大程度上决定运行其上的软件,比方说,在不同体系结构的计算机硬件上,所能够运行的软件会受到限定,比方说,计算机会分为微型计算机、小型计算机、大型计算机等等,上面运行的软件,从操作系统到各种应用软件,都会有很大的区别,这也是由于每种计算机所要完成的工作也是不同的。再比方说x86架构和RISC架构的计算机,软件运行的方式也不尽相同。很多大型软件,像Linux、Oracle等等都需要针对不同的架构来开发出不同的软件。

在解决问题的过程中,尽管我们是开发人员,大部分的时间只会和软件打交道,但是对于特定的问题,也要关注硬件。比方说性能问题,根据摩尔定律,硬件更新的速度非常之快,所以在很多时候,大家都希望通过从硬件的角度来解决,软件运行的速度不够快,那么我们就换更好的CPU,甚至是四核、八核的,提高并行计算的速度,或者加更多的内存,让更多的程序在内存中运行,或者把磁盘换成固态的硬盘等等。这样的手段在某些情况下会很有效,起到立竿见影的效果,而且购买这些硬件所需要付出的成本,远远要比一个程序员修改程序、从软件的角度调优的成本要低得多。

然而,我们又不能够把所有的性能优化问题都交给硬件工程师来解决,那样软件工程师不就失去了存在的价值吗?很多时候,我们在编写程序的时候就应该关注性能的问题,从开始的时候就避免因为程序的编写而造成性能问题。比方说,因为各种设备或者的速度大概会是:网络 < 传统硬盘 < 固态硬盘 < 内存 < 高速缓存,这样我们在编写程序的时候,就应该尽量避免网络传输的频率和数量,比方说应用服务器和数据库服务器是通过网络连接的两台独立的计算机,那么就应该在往返一条指令的过程中,在一台服务器上做更多的处理,而不是过于频繁地在两台服务器之间传递数据。而且在二者之间传递数据的时候,要尽可能地节省,只传递必要的数据,而不是眉毛胡子一把抓,传递了一大堆没有用的数据,这样就会产生大量的浪费。

硬件和软件是密不可分的,而且硬件是看得见摸得着的实体,而想要一个人认识到软件,就有一些抽象了,它们只不过是存在于计算机中的“1”和“0”,因此就会产生这样的情况,人们愿意为硬件付费,但是却不愿意为了软件花钱。很多人愿意花1万元购买一台昂贵的计算机,却不愿意花30元购买一个小软件。这对于程序员群体是一种悲哀,因为那就意味着大家的劳动成果没有得到认可,毕竟钱也是对价值的一种体现。所以,在很多项目中(特别是国内项目),厂商都喜欢采用硬件和软件搭配在一起销售的方式,因为只有见到了硬件,才认为自己的钱花的值得。更可笑的是,为了证实自己的硬件有价值,厂商们可能会把本来可以做的很小的设备放在一个庞大无比的铁箱子里,那样才能够卖得出价钱——这铁块儿也太值钱了吧,哈哈。

因为同样的原因,还有一些厂商喜欢把软件的功能集成到硬件之中去,把原来的卖软件变成了卖硬件,比方说大家最为熟悉的防火墙,有硬件防火墙,也有软件防火墙,其实二者的功能以及运行机制上都是类似的,但是销售起来却完全不是一个概念了。

在现在流行的移动开发中,硬件对于开发者的影响也非常大。iOS的开发者很幸福,只需要针对一种或者几种设备开发应用就好了,而Android的开发者就比较悲催了,光是主流设备的种类就够头疼的了,更不用提各种各样的山寨机了,尽管现在有不少网站提供了虚拟测试的环境,但是很多功能只有用具体的设备才能够测试出真正的效果。因此,现在才会有HTML 5技术会更为流行的说法,这样开发者就不需要去适配各种各样的设备了。然而这又会导致另外的问题,原生的应用和基于HTML 5的应用,不论从开发方法还是从各种使用方式来说,都会有一些区别。

软件的确会受到硬件的各种限制,同时,没有软件,硬件也就没有用武之地了。想要让一个硬件发挥出真正的作用,需要大量软件的支持,比方说我们的计算机中会安装操作系统软件、办公软件、开发软件、游戏软件等等,每种不同的软件都会为我们的工作提供不同的便利,有了这些软件,我们的工作和生活才会变得如此美好。

总之,硬件和软件的关系,与物质和精神之间的关系类似,硬件决定了软件,反过来软件也会让硬件体现出存在的价值,决定硬件所能够起到作用的效果,二者是密不可分的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

软件开发中的哲学——世界的本原是物质(一) 的相关文章

  • TensorFlowLite GPU加速

    官方文档 https tensorflow google cn lite performance gpu hl 61 zh cn TF LITE支持移动端GPU加速 xff0c 特别对android端的支持比较丰富 相对android来说
  • C语言基础----流程控制

    流程控制是C语言中比较基础的 它分为三种状态 xff1a 1是顺序结构 2是选择结构 3是循环结构 我要说明后两种结构 xff0c 选择机构和循环结构 首先先说 xff1a 选择结构 选择结构是指 xff1a 当一个条件成立则执 xff08
  • 复杂数据类型——数组

    复杂数据类型是C语言基础的重点 1 数组 xff1a 存储一组数据 2 特点 xff1a 只能存放一种类型的数据 如int类型 xff0c float类型的数据 数组的元素个数只可以放常量 int ages 5 61 1 2 3 格式 xf
  • OC语言——基本语法和思想

    今天学习了OC语言基础语法 1 oc语言完全兼容C语言 xff0c 后缀为 m类型 被广泛应运与开发苹果mac os x平台和ios开发平台 2 oc语言关键字基本上以 64 开头 xff0c oc字符串也是以 64 开头 3 基本类型新加
  • OC语言——三大特性-继承与多态

    继承是oc中比较常见的 1 继承 xff1a 就是当两个类拥有相同的属性和方法时 xff0c 就可以将相同的东西抽取到一个父类中 子类可以拥有父类中所有的成员变量和方法 2 继承的好处 xff1a 可以抽取重复代码 xff0c 节省时间 建
  • OC语言——点语法和成员变量的4种作用域及property和synthesize的使用

    点语法 xff1a 点语法的本质还是方法调用 Person p 61 Person new 点语法的本质还是方法调用 p age 61 10 p setAge 10 一 点语法注意点 xff1a 64 implementation Pers
  • 树排序的理解

    参考文献与详细资料 xff1a https blog csdn net weixin 64067830 article details 124443430 视频 https www bilibili com video BV1iU4y1B7
  • OC语言——构造方法和分类的使用

    一 构造方法 1调用 43 alloc分配存储空间 Person p 61 Person alloc 2初始化 init Person p1 61 p init 可以整合为一句 Person p2 61 Person alloc init
  • 使用CSDN-markdown

    欢迎使用Markdown编辑器写博客 本Markdown编辑器使用StackEdit修改而来 xff0c 用它写博客 xff0c 将会带来全新的体验哦 xff1a Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传
  • 【笔试&面试】关于动态链接库

    动态链接库英文为DLL xff0c 是Dynamic Link Library 的缩写形式 xff0c DLL 是一个包含可由多个程序同时使用的代码和数据的库 xff0c DLL 不是可执行文件 动态链接提供了一种方法 xff0c 使进程可
  • 虚函数表的实现细节

    1 虚函数 虚表是怎么实现的 xff1f 虚表存放在哪里 xff1f 虚表中的数据是在什么时候确定的 xff1f 对象中的虚表指针又在什么时候赋值的 xff1f 我们很难通过 C 43 43 语言本身来找到答案 C 43 43 标准给编译器
  • 三种工厂模式区别总结

    工厂模式分为三种 xff1a 简单工厂 工厂模式和抽象工厂模式 三者之间存在哪些异同呢 xff1f 先分别看看各个模式的特点 一 简单工厂模式 xff1a 实现了算法和界面的分离 xff0c 也就是将业务逻辑和界面逻辑分开了 xff0c 降
  • 快速排序 改进快排的方法

    快速排序法事应用最广泛的排序算法之一 xff0c 最佳情况下时间复杂度是 O nlogn 但是 最坏情况下可能达到 O n 2 说明快速排序达到最坏情况的原因 并提出改善方案并实现 之 答 xff1a 改进方案 xff1a 改进选取枢轴的方
  • linux select函数详解

    在 Linux 中 xff0c 我们可以使用 select 函数实现 I O 端口的复用 xff0c 传递给 select 函数的参数会告诉内核 xff1a 我们所关心的文件描述符 对每个描述符 xff0c 我们所关心的状态 我们是要想从一
  • Linux epoll详解

    Linux epoll详解 一 什么是epoll epoll是什么 xff1f 按照man手册的说法 xff1a 是为处理大批量句柄而作了改进的poll 当然 xff0c 这不是2 6内核才有的 xff0c 它是在2 5 44内核中被引进的
  • 转折后的总结--2014年找工作

    转折后的总结 找工作 好吧 xff0c 还是忍不住做个总结 xff0c 毕竟还是我人生中一次比较大的事件了 非常感谢华科 xff0c 我的第二个母校能提供给我一个优秀的平台 非常感谢信息安全与保密实验室607室的老师们 xff0c 给我诸多
  • 2014找工作总结-机会往往留给有准备的人

    好基友的文章必须转 xff0c 大神一枚 xff1a 出处 xff1a http blog csdn net xiajun07061225 article details 12844801 其实我的求职过程在十一之前就已经结束了 xff0c
  • 1020 Tree Traversals

    Suppose that all the keys in a binary tree are distinct positive integers Given the postorder and inorder traversal sequ

随机推荐

  • 入职后的书单

    程序员一生的命运就是不停的学习 xff0c 淬炼自己的技术 xff0c 转化为自己的经验 作为新手 xff0c 首先要读的应该是 xff1a 代码整洁之道 1 JAVA核心技术 xff08 卷1 xff09 作者 Cay S Horstma
  • 国内第一本详解云GIS技术的参考书籍《云GIS技术与实践》

    书籍封面 内容简介 云计算技术从概念提出到项目落地已经经历了十余年了 xff0c GIS技术也紧跟IT主流技术大潮 xff0c 通过日趋成熟的云计算技术来解决GIS面临的诸多问题 一转眼 xff0c 云GIS技术也发展了五个年头了 xff0
  • jetpack之ViewModel

    ViewModel类旨在以注重生命周期的方式存储和管理界面相关的数据 ViewModel类让数据可在发生屏幕旋转等配置更改后继续留存 摘自官方文档 Android 框架可以管理界面控制器 xff08 如 Activity 和 Fragmen
  • 二叉树的各种创建方法

    1 前序创建 include lt stdlib h gt include lt malloc h gt include lt iostream gt include lt stack gt include lt queue gt usin
  • 虚拟机创建、发放与迁移

    虚拟机创建方法 xff1a 创建空虚拟机虚拟机克隆虚拟机 xff1a 虚拟机运行状态是可以克隆虚拟机的按照模板部署虚拟机 xff1a 模板存在 xff0c 可以调整参数 xff0c 批量部署模板转为虚拟机 xff1a 模板不存在 xff0c
  • Linux必学书籍!五本强烈推荐,你读过几本?

    深入理解Linux内核 推荐等级 xff1a 5颗星 为了透彻理解Linux的工作机理 xff0c 以及为何它在各种系统上能顺畅运行 xff0c 你需要深入到内核的心脏 cPu与外部世界的所有交互活动都是由内核处理的 xff0c 哪些程序会
  • 一个毕业6年的程序员工作经历和成长感悟(终)

    接上篇 xff1a 一个毕业6年的程序员工作经历和成长感悟 xff08 上 xff09 一个毕业6年的程序员工作经历和成长感悟 xff08 中 xff09 一个毕业6年的程序员工作经历和成长感悟 xff08 下 xff09 回望过去 6 年
  • 红包随机算法,给定一定的金额,一定的人数,保证每个人都能随机获得一定的金额。...

    前段时间做了一个笔试题 xff0c 觉得很有意思 xff0c 特此记录下来 题目如下 题目 请编写一个红包随机算法 需求为 xff1a 给定一定的金额 xff0c 一定的人数 xff0c 保证每个人都能随机获得一定的金额 比如100元的红包
  • linux下 ftp服务器如何设置上传文件的权限

    先用vi打开 vsftpd conf vsftpd的配置文件在Ubuntu下是vi etc vsftpd conf在centos 下是vi etc vsftpd vsftpd conf这个在不同的系统下可能不同原理一样 找到umask默认是
  • 敏捷之旅大连2013总结回顾

    12月21日 xff0c 敏捷之旅大连站如期召开 xff0c 这是今年我在大连组织的第九次程序员社区活动 xff0c 在此简单总结一下 这次活动考虑到参会人员会比平时多一些 xff0c 所以选择了中山区的比较大的会议室 xff0c 从十二点
  • 1062 Talent and Virtue

    About 900 years ago a Chinese philosopher Sima Guang wrote a history book in which he talked about people 39 s talent an
  • 演说(zhi)之法

    近年来 xff0c 参加了很多各种各样的技术会议 xff0c 在其中也听了很多高手和牛人们的演说 在总结了自己的一些经验之后 xff0c 也会在一些场合和大家分享 在以上的过程中 xff0c 越来越觉得 xff0c 想要为听众们奉献一场精彩
  • 窗体继承,然后实现按钮点击事件的重写

    做了一阵子Winform的程序之后 xff0c 越来越能够做到把窗体 控件等都看作类来对待了 以前做VB的时候 xff0c 对这些控件都是有一种敬畏的心理 xff0c 根本就不敢对其做什么 xff0c 而且当时也的确做不了什么 xff0c
  • 参加百度轻应用编程马拉松总结

    上个周末 xff0c 我到北京参加了百度举办的轻应用编程马拉松大赛 xff0c 感觉非常不错 xff0c 在此总结一下 这是我第一次参加编程马拉松的活动 xff0c 对此充满了好奇也充满了期望 xff0c 更是希望自己以后也能够组织类似的活
  • 前天奶奶来了 xff0c 把屋子里面的东西都收拾了一下 xff0c 尤其是佳佳的玩具 xff0c 有好多毛绒玩具 xff0c 都放在一个柜子的层里面了 早上佳佳醒来 xff0c 发现了新大陆 xff01 美羊羊都碰头了 xff01 维尼的碰
  • 超级简单的抽奖工具

    昨天快到中午的时候接到业务部门的一个需求 xff0c 要求对现有的抽奖软件进行改进 问题是 xff1a 现在的抽奖软件每次只能够抽出一个中奖号码 xff0c 而此次设置的各种奖项的中奖人数加起来有500人 xff0c 如果使用原有的软件 x
  • 程序员应知——把小事做好

    在从事软件开发的这些年中 xff0c 近期越来越多地听到这样的论点 xff1a 当前的程序员越来越浮躁 我的感觉也是如此 xff0c 由于在软件公司中 xff0c 人才流动特别快 xff0c 因此很多人的职位也变化的比较快 xff0c 很可
  • 程序员应知——学习、思考与分享

    有人说 xff0c 程序员是个苦差事 xff0c 一辈子总是要不停地学习 xff0c 学习新的技术 xff0c 学习新的架构 xff0c 学习新的工具 xff0c 一旦一段时间不学习 xff0c 就会发现其他人嘴里冒出来的新鲜词 xff0c
  • Evernote和有道云笔记的比较

    每个人可能都有随手记录一些事情的习惯 xff0c 可能是为了不忘记 xff0c 也可能是随时闪现在头脑中的一些想法 xff0c 因此就有了便利贴 xff0c 而在计算机或者说互联网的时代 xff0c 我们就有了更多选择 xff0c 可以随时
  • 软件开发中的哲学——世界的本原是物质(一)

    在这个系列博客的第一篇中 xff0c 首先要涉及到的哲学原理就是 世界的本原是物质 在IT领域 xff0c 有硬件和软件之分 xff0c 而二者之间的关系 xff0c 就和物质与精神类似 没有硬件的存在 xff0c 那么软件就没有能够发挥作