看了一下阿波罗的 AGC,主频只有 2MHz,2K 的 RAM,36K 的 ROM。
那个时代的程序,可以在有限的资源上运行的非常良好,现代的计算机程序,虽然在功能上比过去的程序丰富了很多,但是运行资源上动辄上百 M 上 G。除了功能需要增加了运行所需资源,软件质量是否因为时代的变更,也下降很大呢?
1
linvaux 2019-11-08 14:46:33 +08:00 via Android 2
抛开需求谈这个没意义
|
2
garyzhuang 2019-11-08 14:48:59 +08:00
我觉得很多原因吧,只说现在,现在程序的本身就占很多资源,比如图片等等资源体量越来越大,另外一方面现在码农质量以及代码质量,冗余代码,以及日渐庞大需求,所以体量越来越大吧,只是瞎逼扯,来水一下
|
3
creamiced 2019-11-08 14:51:43 +08:00 2
换一个角度看:资源受限,就不得不考虑各种优化,才能运行程序。更别说各种奇淫技巧可能导致的问题。所以软件质量是否下降不论,我觉得开发效率有很大提升。
|
4
crella 2019-11-08 14:54:40 +08:00
业务?广告?捐赠?打工?
|
5
lzyliangzheyu 2019-11-08 14:55:44 +08:00
直接用汇编干寄存器的,效率能不高吗。。。。
|
6
kangzai50136 2019-11-08 14:56:29 +08:00
用性能去换取开发效率
|
7
FallenTy 2019-11-08 14:57:21 +08:00
语言变了,需求也变了
|
8
Raymon111111 2019-11-08 15:00:43 +08:00 1
你可以搜 安迪比尔定理
大意是所有新出的硬件性能都会被软件所用完 |
9
lzyliangzheyu 2019-11-08 15:05:09 +08:00
@Raymon111111 另一种意义上的 从简入奢易,由奢入俭难 23333333
|
10
BingoXuan 2019-11-08 15:05:21 +08:00
@garyzhuang
不是,当时应该所有功能都是用汇编硬编码进去的实现的,而且只有最简单的功能。以当时的标准来看,tcp 是实现不了,udp 勉强可以实现。但 ip 头要固定写死,udp 头的部分信息也要写死。数据长度也要有限定。发送数据直接从不同寄存器按顺序取数据加个 checksum 完事了。哪里像现在那样 udp 还要考虑流量控制,丢包重发,增加冗余以确保丢失一定数据包依旧能保证数据完整。 |
11
murmur 2019-11-08 15:06:40 +08:00 1
排除游戏之外,都是 electron 惹的祸,你看 n*pad++的主程序加插件 10m 不到
反观用了 electron 的,想不破百都是奢望 |
12
lvsemi1 2019-11-08 15:07:38 +08:00
只要钱给够我也给你手写汇编精简体积
|
13
sgissb1 2019-11-08 15:08:34 +08:00
因为那时候无证程序员少,现在无证程序员泛滥。
|
14
murmur 2019-11-08 15:12:32 +08:00 1
还有就是内存足够大,导致没人做优化和细化了,我举个例子,这个例子可能不恰当,内容也可能有部分捏造;
本来鲁大师是一个硬件检测软件 首先被 360 收购,360 就给他加了 360 的基础库 为了赚钱,鲁大师里又加了个游戏中心 因为国内网络复杂,游戏中心需要下载,所以又加了个 360 旋风的下载组件(这里是捏造的) 因为鲁大师还有驱动管理的的功能,这部分也是单独的组件 因为 360 提供系统“清理”的功能,这部分自然也要移植来 你可能只是下个鲁大师跑分,但是你下了一个全家桶回来 |
15
luckyrayyy 2019-11-08 15:13:04 +08:00 11
为什么几十年前的人们能吃红薯皮、树叶子,人均居住面积几平米,还能活得很好,现在月入万元缺总抱怨活的不如狗。人的质量是否因为时代的变更,也下降很大呢?
|
16
ech0x 2019-11-08 15:14:18 +08:00 via iPhone
第一件事软件的功能变多了,第二现代的程序越来越不注重优化了。
|
17
kokutou 2019-11-08 15:14:25 +08:00 via Android
360 壁纸,一个壁纸软件而已,谁能想到它居然内置了鲁大师组件呢?外加一个手机游戏助手。。。
|
18
1OF7G 2019-11-08 15:16:04 +08:00
成本啊,硬件便宜而人工贵。如果都按想象中的,用汇编 或 C++开发一切,目前计算机和互联网大概还停留在 2000 年的发展水平吧。
|
19
iIli1iIliIllLiL 2019-11-08 15:24:22 +08:00
对比一下早期和现在的程序有多少功能就行了,而且有摩尔定律,既然电脑有那么多可用的资源干嘛不用呢,用户使用体验也上来了。
|
20
InkStone 2019-11-08 15:32:38 +08:00
质量正比于成本,这件事情从来没变过。
你现在拿给阿波罗编写程序的成本去做软件,一样能做出很强的软件。 |
21
7654 2019-11-08 15:41:55 +08:00
因为脚手架太多
因为赶进度 因为。。。 以至于性能优化也能放到更新日志里 |
22
cloudfstrife OP @7654 貌似已经是常态了
|
23
ayase252 2019-11-08 15:53:18 +08:00
要极限性能当然可以啦,给钱我当人肉编译器都可以,手撸汇编(嗯,还要别人能够读懂我写的东西,怎么可能
|
24
jedihy 2019-11-08 15:54:03 +08:00 via iPhone
依赖少的话和当时的程序大小比完全没有劣势。
|
25
love 2019-11-08 15:54:18 +08:00
node 用户表示就写了 hello world 包目录就有几万个第三方依赖文件,以前的软件基本只用系统 lib
|
26
vipcc 2019-11-08 16:01:39 +08:00 via Android
软件工程课程不是说了这个问题的么。
你的时间值钱还是,几百个 G 的内存值钱。 火力加满烧开水,也要等温度降下来了才喝,那这些热量就是浪费了吗。 没有完美的方案,只有合适的方案。 |
27
zjsxwc 2019-11-08 16:08:23 +08:00
以前的字符游戏 和 现在的 3D 大作的区别
|
28
realpg 2019-11-08 16:08:24 +08:00
因为没有性能指标要求,所以就没性能了
|
29
ivvei 2019-11-08 16:22:43 +08:00
光图片分辨率就不同了吧,现在的图多大啊,换以前的机器,一张图都塞不下。
|
30
liuzhiyong 2019-11-08 16:24:27 +08:00 via Android 1
就是用开发效率去换性能损耗。那时候多半是直接搞汇编语言,现在单片机上都基本不搞汇编语言了:开发效率提高了,就这么简单。
|
31
hoyixi 2019-11-08 16:30:12 +08:00 1
因为以前软件太占用资源,多数人都会说:这软件写的不怎么样,优化的不好,太吃资源
现在软件太占用资源, 太多人会说:你就那么穷吗,升级内存不就行了 |
32
charlie21 2019-11-08 16:49:25 +08:00 via Android
SDK 不行。
|
33
TapCode 2019-11-08 16:51:52 +08:00 3
现在的软件要干的事情很多,除了你能看到的,还在干你看不到的事情。
公司的安卓 APP 上架第三方市场(联想),被要求需要公安备案,需要 APP 要记录打开用户的时间,IP,手机号,登录后的操作记录,等各种信息。要不没办法上架第三方市场。引入了这么一套记录功能,APP 增加了好几兆的大小。 |
34
charlie21 2019-11-08 16:56:17 +08:00 via Android
垃圾 SDK 就是垃圾。你这个东西,是你用一坨一坨 shit 拼起来,拼出来的 是 一坨大 shit ( shit 和 shit 拼起来只能拼出 shit ) 。它的确能解决需求,它的确节省了开发效率,但是 它是 shit 不是巧克力。
当然 你没吃过巧克力,就会认为 别人端上来的这一坨 是 巧克力。 从外观就可以看出来 shit 和 巧克力吧,看不出来嘛,哈哈 无所谓阿 shit 就是巧克力,巧克力味的 shit,无所谓阿。是你吃又不是我吃 - |
35
morphyhu 2019-11-08 16:58:51 +08:00
以前的程序员是脑力劳动,现在的程序员是体力劳动,所以有了 996
|
36
cest 2019-11-08 17:11:25 +08:00
软工增加产品效率
->硬件需求减少 ->gdp 上不去 ->破坏经济,拖出去斩了 |
37
kiwier 2019-11-08 17:16:45 +08:00
一个破钉钉,macOS 上 220 多 m,日了狗了
|
38
fancy111 2019-11-08 17:19:27 +08:00
各种无用的东西堆积而已。还有就是追求华而不实的人太多了。
同样一个网站,如果照十年前的设计做出来,占资源很少,但是不好看。功能其实是一样的。 |
39
Greendays 2019-11-08 17:23:54 +08:00
那个年代写出这样的代码确实厉害,但是现在航天领域的代码依然很精简啊
|
41
cloudfstrife OP @hoyixi 现在貌似确实是这样,以前是想办法优化程序,现在都是花钱升级硬件
|
42
guanhui07 2019-11-08 19:06:11 +08:00
依赖少 精简
|
43
imn1 2019-11-08 20:00:48 +08:00
早期程序不需要常驻后台
也没有打开静默打开摄像头和麦克风,现在静默开启静默关闭,不打搅用户多贴心啊 噢,还有热更新补丁,永远保最持安装 |
44
slanternsw 2019-11-08 20:15:23 +08:00
“你的时间非常值钱”
|
45
janus77 2019-11-08 20:17:24 +08:00 via iPhone
因为早期慢啊
空间换时间 |
46
smdbh 2019-11-08 20:54:52 +08:00
高级语言的功劳
|
47
koalli 2019-11-08 21:04:12 +08:00
我觉得是因为内存 cpu 这些越来越便宜了,所以使用的时候就不再那么抠了...
|
48
murmur 2019-11-08 21:09:39 +08:00
@vipcc 几百个 g 的内存一次 gc 或者出了内存泄露排查起来就是灾难,何况这种东西家用级产品用不到,都是大型的仿真建模,别人对内存更会精打细算,以前第一批内存不要钱的时候,实验室跑电磁学仿真买了 1t 内存的服务器,程序一启动 190g 内存就没了,这要是参数设大点直接炸了
|
49
coloz 2019-11-08 21:17:14 +08:00
现在也可以啊,单片机编程一直存在
|
50
fox0001 2019-11-08 21:18:50 +08:00
记得 Android 刚出,那时叫 Market 的应用市场上,绝大部分应用都是 KB 级别,也包括大多数游戏。现在找到少于 1M 的应用,都觉得神奇……
|
51
gggxxxx 2019-11-08 21:28:36 +08:00
其实就是现代软件复杂度比远古软件大的多。
现代软件开发简单,因为有很多现成的库可以直接使用。自己写的代码少,但是不代表程序运行的代码简单和少。 从另一个角度来说,你现在写的软件占用资源少,说明功能不行.....不信你们去看看你们常用的工作软件,哪个不是吃资源大户? |
52
sc3263 2019-11-08 21:35:21 +08:00
还有一种情况,开发者根据当前主流的配置进行更有针对的优化,而这个优化往往会占用更多看得到的资源。假如有 100M 的数据需要经常查询。在大家都只有几十 M 内存的时候,只能把数据放磁盘上,内存里放索引和缓存。但在大家内存都上 G 的时候,就会考虑把数据全部放内存里。
|
53
xeaglex 2019-11-08 22:05:36 +08:00 via Android
现在的软件,你把所素材文件,包括图片,视频,音频等都抛开。真正的可执行二进制部分也不多
|
54
opengps 2019-11-08 22:22:38 +08:00 via Android
以前学软件得十几几十年,现在学软件开发可以 n 天
|
55
default7 2019-11-08 22:28:57 +08:00
三个字:惯的呗。
|
56
default7 2019-11-08 22:29:23 +08:00
难怪我的手机 64G 已经完全不够用了,因为那些应用,动不动就 200M 500M 一个
|
57
nicevar 2019-11-08 22:35:27 +08:00
一方面是现在的设备性更好,4k 屏都满大街了,就算往屏幕上贴张图,内存也翻了几十倍,加上现在程序功能强大,视觉效果特好,比较占用资源也是合理的。
另一方面现在的软件更为庞大,追求开发效率,采用 gc 类语言,牺牲点性能也不算什么,再就是现在的程序员门槛低,很多对内存管理没有什么概念的,特别是偏上层应用的,就不说前端做个页面能把 chrome 卡死,安卓市场里面的应用内存泄漏严重的满天飞,各种安卓的开源库包括 google 官方的内存泄漏都是家常便饭,不卡是没有道理的。 |
58
inntechy 2019-11-08 22:50:03 +08:00
安迪比尔定律
|
59
wleexi 2019-11-08 22:58:48 +08:00
GUI 占了很多空间
|
60
greatdancing 2019-11-08 23:05:00 +08:00 via Android
写阿波罗那玩意估计要软硬件都精通
这水平要求有点高啊 |
61
cyyzero 2019-11-08 23:24:55 +08:00 via Android
因果倒置。现在程序变成这样就是因为硬件提升资源够用了。
|
62
LZSZ 2019-11-08 23:25:15 +08:00
硬件上来了
|
63
billlee 2019-11-08 23:49:24 +08:00
阿波罗导航程序不会变需求
|
64
CoderXiaode 2019-11-08 23:50:44 +08:00 via Android
可参考安迪-比尔定律, "what Andy gives, Bill takes"
|
65
arraysnow 2019-11-09 00:00:24 +08:00
@murmur 我做互联网的,以我的业务为例,你看到的双 11 营销页面在后端第一层是千台 1c4g 服务器做在不停抗流量做渲染,还有若干百 G 的 redis 做支撑
可以优化吗?可以 哪个便宜?相比时间、人力、协作成本,堆硬件资源太划算了 |
66
cmdOptionKana 2019-11-09 00:33:24 +08:00
不是程序员水平问题,不是不愿意优化
真的只是因为需求增加了。 以 Electron 为例,占用资源很疯狂,表面上看是开发商不愿意优化,但是请看看用户的需求是什么: 1. 跨平台 2. 界面现代化、好看 3. 快速迭代(不断提出需求、要求快速实现、要求多平台同时实现) 4. 重点来了:免费、没有广告 以前低资源占用、高效运行的软件并没有收到这些需求,或者说用户就算有这些需求也无法实现。 |
67
takemeh 2019-11-09 00:40:52 +08:00 1
实现一个简易的网盘,包含 web 服务器, 加上权限控制上传下载移动删除, 还有前端页面。
猜猜这个程序完成后移动多大? 只有几十 KB, 详见这里 /t/497773 @1OF7G @7654 @arraysnow @ayase252 @billlee @BingoXuan @cest @charlie21 @cloudfstrife @CoderXiaode @coloz @creamiced @crella @cyyzero @default7 @ech0x @FallenTy @fancy111 @fox0001 @garyzhuang @gggxxxx @greatdancing @Greendays @guanhui07 @hoyixi @iIli1iIliIllLiL @imn1 @InkStone @inntechy @ivvei @janus77 @jedihy @kangzai50136 @kiwier @koalli @kokutou @linvaux @liuzhiyong @love @luckyrayyy @lvsemi1 @LZSZ @lzyliangzheyu @MaiKuraki @morphyhu @murmur @nicevar @opengps @Raymon111111 @realpg @sc3263 @sgissb1 @slanternsw @smdbh @TapCode @vipcc @wleexi @xeaglex @zjsxwc |
68
KINGOD 2019-11-09 04:55:28 +08:00
@takemeh #67 当我们说资源占用的时候,更多的是说程序运行时需要的 CPU GPU 内存 存储 等等。编译后可执行文件的大小,只是一小方面。比如 :(){:|:&};: 只是十几个字节而已,却几乎能把 CPU 内存耗尽。
|
69
expy 2019-11-09 09:02:25 +08:00
大概是硬件比人工、时间成本便宜太多,现在的需求变化速度跟复杂度也不一样,
重点是用户稍微不满也不会影响赚钱。 |
70
takemeh 2019-11-09 10:40:09 +08:00
@KINGOD 是的,那个网盘也只占用很少的你说的这些资源。比如运行在只有 64MB 的内存的路由器上,可以几十个人同时上传几十 GB 的文件,内存占用依然很少。
|
71
limbo0 2019-11-09 10:58:41 +08:00
因为成本妥协,
一天一个需求和一个月一个需求的软件质量肯定不一样 |
72
XuanFei990 2019-11-09 12:15:54 +08:00
你这不在一个级别上谈。
单片机用在哪,CPU 用在哪,能一样么, |
73
TapCode 2019-11-09 12:34:08 +08:00
目前我知道的是,有一些安卓第三方市场上架一些类型(工具类的好像不需要,有社交能力的 APP 绝对是要的)的 APP 需要公安备案 ,公安备案需要让 APP 具备足够的日志记录功能(不限于 IP、手机号、时间、位置信息等内容)
|
75
linshiyouxiang 2019-11-09 13:57:44 +08:00
我是来看评论的😂
|
76
brucefu 2019-11-09 15:51:10 +08:00
一个静态 Hello word 页面也要放 tomcat 里
|
77
nvioue 2019-11-09 19:55:18 +08:00
这算是计算机里面的通货膨胀之一.
我给你列举另外一个: LeetCode53 是 easy, 拿来面试都不算难, 但这个答案是 1984 年的计算机教授给出的. |