由"软件是干什么的"引发的思考

追梦1819 追梦1819     2022-10-11     249

关键词:

        自工作以来,都只在进行模块的开发,很少站在整个项目的角度思考过。甚至,自己开发的软件,自己都没有去用过,包括开发的一些APP,都没有下载来认真体验过、思考过。却对自己手机上那些用过的APP评头品足的。其实,这种"挑剔"的精神,如果放在自己开发的项目上,即站在用户额角度来考虑,兴许能让自己成长更快。博主是半路出家的程序员,对很多软件的基础知识都有所缺失,但是这不是借口。

        本周末闲来无事,脑海中一直回旋着一个问题:软件是干什么的?
        之前从来没有思考过这个问题。只是为了工作而工作,只是为了敲代码而敲代码。领导分配什么任务,就按部就班完成什么任务。很少再多问一个为什么。可能这就是我们难以成长或者成长很慢的的原因之一。

软件是干什么的?

软件的本质只是一个处理信息的工具。也就是,软件只是起一个辅导作用,核心还是信息,即数据。

那在开发软件的过程中,我们是不是得重新审核以下几个问题:

  • 程序中哪些数据是静态的?哪些数据是动态的?
  • 程序中哪些数据需要持久化?哪些数据不需要持久化?分别如何处理?
  • 数据量是大是小?是大该如何处理?是小该如何处理?
  • 数据的生命周期如何?从哪里开始?到哪里结束?
  • 数据是如何流转的?特别是一些状态值。
  • 数据的改变是由哪些因素引起的?鼠标点击?键盘输入?组件之间的通信?任务调度?等等。
  • 程序中的数据是以何种结构存储的?
  • 不同的数据结构如何选择合适的算法?
  • ......
            之前听过一些业界大牛说过,一个系统采用什么样的语言、什么样的框架,那都不重要。当时不明白这句话的意思。现在慢慢有了一点的感悟。是的,采用什么样的语言、什么样的框架,那都不是事。重要的是:功能实现、效率(开发效率和系统运行效率)提高、用户体验提升。

        结合自己正在做的项目,目前只能想到这几个问题。欢迎大家指正、建议、补充、解答。

由c#dynamic是否装箱引发的思考

前言前几天在技术群里看到有同学在讨论关于dynamic是否会存在装箱拆箱的问题,我当时第一想法是"会"。至于为啥会有很多人有这种疑问,主要是因为觉得dynamic可能是因为有点特殊,因为它被称为动态类型,可能是因为这... 查看详情

由strcat函数引发的c语言中数组和指针问题的思考(代码片段)

问题一首先,来看一下下面这段代码:#include<stdio.h>#include<string.h>intmain()char*str="media";char*tmp="aaa";printf("str:%s\\n",str);strcat(str,tmp);printf("str:%s\\n&q 查看详情

由system.getproperty("user.dir")引发的联想

是什么:System.getPorperty("user.dir")的功能是得到当前项目路径。 1@Test2publicvoidtest02()throwsIOException{3Stringpath1=System.getProperty("user.dir");4System.out.println("当前工程路径----"+path1);5Stringpath2=Test01. 查看详情

产品之我见-由儿童软件《汉字王国》引发的思考

今日使用了一款叫做《汉字王国》的儿童软件。                 1.1《汉字王国》界面软件中有一个功能,叫做“涂呀涂呀”,界面是很可爱的儿童绘画板。一开... 查看详情

由共享内存引发的思考

1.共享内存段被映射进进程空间之后,存在于进程空间的什么位置?共享内存段最大限制是多少?存在于进程数据段,最大限制是0x2000000Byte将一块内存映射到两个或者多个进程地址空间。通过指针访问该共享内存区。一般通过mma... 查看详情

由["1","2","3"].map(parseint)引发的问题(代码片段)

基础知识map语法map(callback,[thisArg])map参数 callback生成新数组元素的函数,callback参数,使用三个参数currentValuecallback 数组中正在处理的当前元素index[可选]callback 数组中正在处理的当前元素的索引array[可选]callback &nbs... 查看详情

由一个系统重构引发的思考

...xff0c;近期暴露的badcase较多,需要进行整体优化。避免引发更大的问题。那为什么作为这个系统最重要功能的代码之前会如此混乱不堪呢& 查看详情

由[].slice.call()引发的思考

经常看到大家用[].slice.call()或者Array.prototype.slice.call(); 我一直是一知半解的,今天算是基本弄清楚了,在此记录一下。可能最常见的是Array.prototype.slice.call(arguments) 就是截取(更重要的是获取,slice是得到子数组)函数... 查看详情

由测试杯子,引发的思考

看到这个题目,是不是很熟悉,在测试面试的过程中,通常会遇到这样的面试问题,那么咱们就来分析分析如何测试?明确测试物品如果是在面试当中,面试官临时给你一个杯子,通常是“一次性纸杯、塑料”,些都是已经确定... 查看详情

由findallreferences引发的思考。,

 今天在研究C#代码问题的时候遇到了一个Visual Studio的小问题。在Visual Studio2013中,使用Find All References功能不能找到同一类型不同版本的所有引用,具体情况请见下面例子。 为了更方便的展示这个问题,我... 查看详情

由一个emoji引发的思考(代码片段)

由一个emoji引发的思考从毕业以来,基本就一直在做移动端,但是一直就关于移动端的开发,各种适配问题的解决,在日常搬砖中处理了就过了,也没有把东西都沉淀下来,觉得甚是寒颜。现就一个小bug,让我们来了解一下我们... 查看详情

由react引发的前后端分离架构的思考

摘要以React技术栈为主分享我们在大规模企业应用建设过程中遇到的问题,对前后端分离架构的思考,前后端分离的技术方案,前后端分离过程中的实践经验,前后端分离带来的效果与价值,以及目前存在的问题与未来可能的尝... 查看详情

每日思考(2020/03/27)(代码片段)

题目概览HTML5在移动端如何打开APP对webp的理解formData主要是用来做什么的?它的操作方法有哪些?js动画和css动画有什么区别?题目解答HTML5在移动端如何打开APPAndroid是利用deeplink,iOS是利用URLSchemes用a标签<ahref="yourapp://page/... 查看详情

并发编程线程可见性的底层原理(代码片段)

...性3.缓存一致性协议4.指令重排序5.CPU层面的内存屏障三、软件层面JMM1.JMM内存模型2.JMM是如何解决可见性问题的3.JMM是如何解决有序性问题的四.HappenBeforeJMM中有哪些方法建立了happen-before规则1.程序顺序规则2.volatile变量规则3.传递... 查看详情

屏幕截图(代码片段)

目录下载B站视频引发的思考截图@下载B站视频引发的思考Linux下载B站视频引发的思考==该方法已失效==,找脚本。。。天行健-链接地址:https://www.bilibili.com/video/av17632970操作:在bilibili原URL修改为https://www.bilibilijj.com/video/av17632970网... 查看详情

面向对象初步(代码片段)

...程等多种编程范式2.面向对象编程的思想主要是针对大型软件设计而来的.面向对象编程使得程序的扩展性更强,可读性更好,使得编程可以像搭积木一样简单.3.面向对象编程将数据和操作数据相关的方法封装到对象中,组织到吗和数... 查看详情

由c#dynamic是否装箱引发的思考(代码片段)

前言    前几天在技术群里看到有同学在讨论关于dynamic是否会存在装箱拆箱的问题,我当时第一想法是"会"。至于为啥会有很多人有这种疑问,主要是因为觉得dynamic可能是因为有点特殊,因为它被称为动态类型,可... 查看详情

由爬虫引发的思考

...措施,甚至没有使用多线程。不过在其中遇到的问题还是引发了我很多的思考与问题,比如爬虫的合法性问题以及爬虫的危害等。于是写下这篇文章记录一下。由于本人经验有限,引用参考了大量文章,有问题请指出。爬虫的作... 查看详情