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

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

  •  
  •   cloudfstrife · 4 天前 · 5519 次点击

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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