首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
宝塔
V2EX  ›  程序员

为什么早期的程序可以在非常有限的资源上运行,现在的软却需要大量的资源?

  •  
  •   cloudfstrife · 10 天前 · 5656 次点击

    看了一下阿波罗的 AGC,主频只有 2MHz,2K 的 RAM,36K 的 ROM。

    那个时代的程序,可以在有限的资源上运行的非常良好,现代的计算机程序,虽然在功能上比过去的程序丰富了很多,但是运行资源上动辄上百 M 上 G。除了功能需要增加了运行所需资源,软件质量是否因为时代的变更,也下降很大呢?

    77 回复  |  直到 2019-11-09 19:55:18 +08:00
        1
    linvaux   10 天前 via Android   ♥ 2
    抛开需求谈这个没意义
        2
    garyzhuang   10 天前
    我觉得很多原因吧,只说现在,现在程序的本身就占很多资源,比如图片等等资源体量越来越大,另外一方面现在码农质量以及代码质量,冗余代码,以及日渐庞大需求,所以体量越来越大吧,只是瞎逼扯,来水一下
        3
    creamiced   10 天前   ♥ 2
    换一个角度看:资源受限,就不得不考虑各种优化,才能运行程序。更别说各种奇淫技巧可能导致的问题。所以软件质量是否下降不论,我觉得开发效率有很大提升。
        4
    crella   10 天前
    业务?广告?捐赠?打工?
        5
    lzyliangzheyu   10 天前
    直接用汇编干寄存器的,效率能不高吗。。。。
        6
    kangzai50136   10 天前
    用性能去换取开发效率
        7
    FallenTy   10 天前
    语言变了,需求也变了
        8
    Raymon111111   10 天前   ♥ 1
    你可以搜 安迪比尔定理

    大意是所有新出的硬件性能都会被软件所用完
        9
    lzyliangzheyu   10 天前
    @Raymon111111 另一种意义上的 从简入奢易,由奢入俭难 23333333
        10
    BingoXuan   10 天前
    @garyzhuang
    不是,当时应该所有功能都是用汇编硬编码进去的实现的,而且只有最简单的功能。以当时的标准来看,tcp 是实现不了,udp 勉强可以实现。但 ip 头要固定写死,udp 头的部分信息也要写死。数据长度也要有限定。发送数据直接从不同寄存器按顺序取数据加个 checksum 完事了。哪里像现在那样 udp 还要考虑流量控制,丢包重发,增加冗余以确保丢失一定数据包依旧能保证数据完整。
        11
    murmur   10 天前   ♥ 1
    排除游戏之外,都是 electron 惹的祸,你看 n*pad++的主程序加插件 10m 不到
    反观用了 electron 的,想不破百都是奢望
        12
    lvsemi1   10 天前
    只要钱给够我也给你手写汇编精简体积
        13
    sgissb1   10 天前
    因为那时候无证程序员少,现在无证程序员泛滥。
        14
    murmur   10 天前   ♥ 1
    还有就是内存足够大,导致没人做优化和细化了,我举个例子,这个例子可能不恰当,内容也可能有部分捏造;
    本来鲁大师是一个硬件检测软件
    首先被 360 收购,360 就给他加了 360 的基础库
    为了赚钱,鲁大师里又加了个游戏中心
    因为国内网络复杂,游戏中心需要下载,所以又加了个 360 旋风的下载组件(这里是捏造的)
    因为鲁大师还有驱动管理的的功能,这部分也是单独的组件
    因为 360 提供系统“清理”的功能,这部分自然也要移植来
    你可能只是下个鲁大师跑分,但是你下了一个全家桶回来
        15
    luckyrayyy   10 天前   ♥ 11
    为什么几十年前的人们能吃红薯皮、树叶子,人均居住面积几平米,还能活得很好,现在月入万元缺总抱怨活的不如狗。人的质量是否因为时代的变更,也下降很大呢?
        16
    ech0x   10 天前 via iPhone
    第一件事软件的功能变多了,第二现代的程序越来越不注重优化了。
        17
    kokutou   10 天前 via Android
    360 壁纸,一个壁纸软件而已,谁能想到它居然内置了鲁大师组件呢?外加一个手机游戏助手。。。
        18
    1OF7G   10 天前
    成本啊,硬件便宜而人工贵。如果都按想象中的,用汇编 或 C++开发一切,目前计算机和互联网大概还停留在 2000 年的发展水平吧。
        19
    iIli1iIliIllLiL   10 天前
    对比一下早期和现在的程序有多少功能就行了,而且有摩尔定律,既然电脑有那么多可用的资源干嘛不用呢,用户使用体验也上来了。
        20
    InkStone   10 天前
    质量正比于成本,这件事情从来没变过。

    你现在拿给阿波罗编写程序的成本去做软件,一样能做出很强的软件。
        21
    7654   10 天前
    因为脚手架太多
    因为赶进度
    因为。。。
    以至于性能优化也能放到更新日志里
        22
    cloudfstrife   10 天前
    @7654 貌似已经是常态了
        23
    ayase252   10 天前
    要极限性能当然可以啦,给钱我当人肉编译器都可以,手撸汇编(嗯,还要别人能够读懂我写的东西,怎么可能
        24
    jedihy   10 天前 via iPhone
    依赖少的话和当时的程序大小比完全没有劣势。
        25
    love   10 天前
    node 用户表示就写了 hello world 包目录就有几万个第三方依赖文件,以前的软件基本只用系统 lib
        26
    vipcc   10 天前 via Android
    软件工程课程不是说了这个问题的么。
    你的时间值钱还是,几百个 G 的内存值钱。
    火力加满烧开水,也要等温度降下来了才喝,那这些热量就是浪费了吗。
    没有完美的方案,只有合适的方案。
        27
    zjsxwc   10 天前
    以前的字符游戏 和 现在的 3D 大作的区别
        28
    realpg   10 天前
    因为没有性能指标要求,所以就没性能了
        29
    ivvei   10 天前
    光图片分辨率就不同了吧,现在的图多大啊,换以前的机器,一张图都塞不下。
        30
    liuzhiyong   10 天前 via Android   ♥ 1
    就是用开发效率去换性能损耗。那时候多半是直接搞汇编语言,现在单片机上都基本不搞汇编语言了:开发效率提高了,就这么简单。
        31
    hoyixi   10 天前   ♥ 1
    因为以前软件太占用资源,多数人都会说:这软件写的不怎么样,优化的不好,太吃资源

    现在软件太占用资源, 太多人会说:你就那么穷吗,升级内存不就行了
        32
    charlie21   10 天前 via Android
    SDK 不行。
        33
    TapCode   10 天前   ♥ 3
    现在的软件要干的事情很多,除了你能看到的,还在干你看不到的事情。

    公司的安卓 APP 上架第三方市场(联想),被要求需要公安备案,需要 APP 要记录打开用户的时间,IP,手机号,登录后的操作记录,等各种信息。要不没办法上架第三方市场。引入了这么一套记录功能,APP 增加了好几兆的大小。
        34
    charlie21   10 天前 via Android
    垃圾 SDK 就是垃圾。你这个东西,是你用一坨一坨 shit 拼起来,拼出来的 是 一坨大 shit ( shit 和 shit 拼起来只能拼出 shit ) 。它的确能解决需求,它的确节省了开发效率,但是 它是 shit 不是巧克力。

    当然 你没吃过巧克力,就会认为 别人端上来的这一坨 是 巧克力。

    从外观就可以看出来 shit 和 巧克力吧,看不出来嘛,哈哈 无所谓阿

    shit 就是巧克力,巧克力味的 shit,无所谓阿。是你吃又不是我吃

    -
        35
    morphyhu   10 天前
    以前的程序员是脑力劳动,现在的程序员是体力劳动,所以有了 996
        36
    cest   10 天前
    软工增加产品效率
    ->硬件需求减少
    ->gdp 上不去
    ->破坏经济,拖出去斩了
        37
    kiwier   10 天前
    一个破钉钉,macOS 上 220 多 m,日了狗了
        38
    fancy111   10 天前
    各种无用的东西堆积而已。还有就是追求华而不实的人太多了。
    同样一个网站,如果照十年前的设计做出来,占资源很少,但是不好看。功能其实是一样的。
        39
    Greendays   10 天前
    那个年代写出这样的代码确实厉害,但是现在航天领域的代码依然很精简啊
        40
    MaiKuraki   10 天前
    @TapCode 现在所有 app 都要求这样吗
        41
    cloudfstrife   10 天前
    @hoyixi 现在貌似确实是这样,以前是想办法优化程序,现在都是花钱升级硬件
        42
    guanhui07   9 天前
    依赖少 精简
        43
    imn1   9 天前
    早期程序不需要常驻后台
    也没有打开静默打开摄像头和麦克风,现在静默开启静默关闭,不打搅用户多贴心啊
    噢,还有热更新补丁,永远保最持安装
        44
    slanternsw   9 天前
    “你的时间非常值钱”
        45
    janus77   9 天前 via iPhone
    因为早期慢啊
    空间换时间
        46
    smdbh   9 天前
    高级语言的功劳
        47
    koalli   9 天前
    我觉得是因为内存 cpu 这些越来越便宜了,所以使用的时候就不再那么抠了...
        48
    murmur   9 天前
    @vipcc 几百个 g 的内存一次 gc 或者出了内存泄露排查起来就是灾难,何况这种东西家用级产品用不到,都是大型的仿真建模,别人对内存更会精打细算,以前第一批内存不要钱的时候,实验室跑电磁学仿真买了 1t 内存的服务器,程序一启动 190g 内存就没了,这要是参数设大点直接炸了
        49
    coloz   9 天前
    现在也可以啊,单片机编程一直存在
        50
    fox0001   9 天前
    记得 Android 刚出,那时叫 Market 的应用市场上,绝大部分应用都是 KB 级别,也包括大多数游戏。现在找到少于 1M 的应用,都觉得神奇……
        51
    gggxxxx   9 天前
    其实就是现代软件复杂度比远古软件大的多。
    现代软件开发简单,因为有很多现成的库可以直接使用。自己写的代码少,但是不代表程序运行的代码简单和少。
    从另一个角度来说,你现在写的软件占用资源少,说明功能不行.....不信你们去看看你们常用的工作软件,哪个不是吃资源大户?
        52
    sc3263   9 天前
    还有一种情况,开发者根据当前主流的配置进行更有针对的优化,而这个优化往往会占用更多看得到的资源。假如有 100M 的数据需要经常查询。在大家都只有几十 M 内存的时候,只能把数据放磁盘上,内存里放索引和缓存。但在大家内存都上 G 的时候,就会考虑把数据全部放内存里。
        53
    xeaglex   9 天前 via Android
    现在的软件,你把所素材文件,包括图片,视频,音频等都抛开。真正的可执行二进制部分也不多
        54
    opengps   9 天前 via Android
    以前学软件得十几几十年,现在学软件开发可以 n 天
        55
    default7   9 天前
    三个字:惯的呗。
        56
    default7   9 天前
    难怪我的手机 64G 已经完全不够用了,因为那些应用,动不动就 200M 500M 一个
        57
    nicevar   9 天前
    一方面是现在的设备性更好,4k 屏都满大街了,就算往屏幕上贴张图,内存也翻了几十倍,加上现在程序功能强大,视觉效果特好,比较占用资源也是合理的。
    另一方面现在的软件更为庞大,追求开发效率,采用 gc 类语言,牺牲点性能也不算什么,再就是现在的程序员门槛低,很多对内存管理没有什么概念的,特别是偏上层应用的,就不说前端做个页面能把 chrome 卡死,安卓市场里面的应用内存泄漏严重的满天飞,各种安卓的开源库包括 google 官方的内存泄漏都是家常便饭,不卡是没有道理的。
        58
    inntechy   9 天前
    安迪比尔定律
        59
    wleexi   9 天前
    GUI 占了很多空间
        60
    greatdancing   9 天前 via Android
    写阿波罗那玩意估计要软硬件都精通
    这水平要求有点高啊
        61
    cyyzero   9 天前 via Android
    因果倒置。现在程序变成这样就是因为硬件提升资源够用了。
        62
    LZSZ   9 天前
    硬件上来了
        63
    billlee   9 天前
    阿波罗导航程序不会变需求
        64
    CoderXiaode   9 天前 via Android
    可参考安迪-比尔定律, "what Andy gives, Bill takes"
        65
    arraysnow   9 天前
    @murmur 我做互联网的,以我的业务为例,你看到的双 11 营销页面在后端第一层是千台 1c4g 服务器做在不停抗流量做渲染,还有若干百 G 的 redis 做支撑

    可以优化吗?可以
    哪个便宜?相比时间、人力、协作成本,堆硬件资源太划算了
        66
    cmdOptionKana   9 天前
    不是程序员水平问题,不是不愿意优化

    真的只是因为需求增加了。

    以 Electron 为例,占用资源很疯狂,表面上看是开发商不愿意优化,但是请看看用户的需求是什么:

    1. 跨平台
    2. 界面现代化、好看
    3. 快速迭代(不断提出需求、要求快速实现、要求多平台同时实现)
    4. 重点来了:免费、没有广告

    以前低资源占用、高效运行的软件并没有收到这些需求,或者说用户就算有这些需求也无法实现。
        67
    takemeh   9 天前   ♥ 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   9 天前
    @takemeh #67 当我们说资源占用的时候,更多的是说程序运行时需要的 CPU GPU 内存 存储 等等。编译后可执行文件的大小,只是一小方面。比如 :(){:|:&};: 只是十几个字节而已,却几乎能把 CPU 内存耗尽。
        69
    expy   9 天前
    大概是硬件比人工、时间成本便宜太多,现在的需求变化速度跟复杂度也不一样,
    重点是用户稍微不满也不会影响赚钱。
        70
    takemeh   9 天前
    @KINGOD 是的,那个网盘也只占用很少的你说的这些资源。比如运行在只有 64MB 的内存的路由器上,可以几十个人同时上传几十 GB 的文件,内存占用依然很少。
        71
    limbo0   9 天前
    因为成本妥协,
    一天一个需求和一个月一个需求的软件质量肯定不一样
        72
    XuanFei990   9 天前
    你这不在一个级别上谈。

    单片机用在哪,CPU 用在哪,能一样么,
        73
    TapCode   9 天前
    目前我知道的是,有一些安卓第三方市场上架一些类型(工具类的好像不需要,有社交能力的 APP 绝对是要的)的 APP 需要公安备案 ,公安备案需要让 APP 具备足够的日志记录功能(不限于 IP、手机号、时间、位置信息等内容)
        74
    TapCode   9 天前
    @MaiKuraki 楼上
        75
    linshiyouxiang   9 天前
    我是来看评论的😂
        76
    brucefu   9 天前
    一个静态 Hello word 页面也要放 tomcat 里
        77
    nvioue   8 天前
    这算是计算机里面的通货膨胀之一.
    我给你列举另外一个:

    LeetCode53 是 easy, 拿来面试都不算难, 但这个答案是 1984 年的计算机教授给出的.
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3040 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 25ms · UTC 10:47 · PVG 18:47 · LAX 02:47 · JFK 05:47
    ♥ Do have faith in what you're doing.