V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
keelii
V2EX  ›  程序员

技术的变化根本没那么快

  •  1
     
  •   keelii ·
    keelii · 2019-07-08 16:41:19 +08:00 · 15316 次点击
    这是一个创建于 1994 天前的主题,其中的信息可能已经有所发展或是发生改变。

    不知道为什么周围的人似乎都在抱怨一个问题:技术的变更迭代太快,如果不学习就跟不上潮流。

    最近在看到一篇 2003 年的关于 AOP 的 文章 时突然有所感悟。

    时至今日( 2019 年),将近 20 年后我们再看这此文时,关于软件构架与设计方面涉及到的问题、面临的困境、解决的办法似乎根本没有变化过。

    这就不禁让人产生疑问:到底是技术变化太快还是我们理解技术的的深度不够。

    109 条回复    2019-07-10 09:26:42 +08:00
    1  2  
    strcmp
        1
    strcmp  
       2019-07-08 16:42:58 +08:00   ❤️ 8
    系统层面的技术万年不变,应用层的技术一天一变
    janxin
        2
    janxin  
       2019-07-08 16:45:30 +08:00
    只是你看到的部分变化不大,要么前端最近几年的应用演变史了解一下
    milando
        3
    milando  
       2019-07-08 16:45:34 +08:00
    2011 年准备学 php 的时候一堆软文说 php 要过时了
    vanton
        4
    vanton  
       2019-07-08 16:45:51 +08:00   ❤️ 1
    才 20 年,理论变化并不会太大。
    luckyrayyy
        5
    luckyrayyy  
       2019-07-08 16:49:46 +08:00   ❤️ 9
    我觉得有意思的一点是,现在常见的软件架构方式,计算机系统课程里面就有了。一个小主机已然是复杂的分布式系统,涉及到各种缓存、数据交换、消息队列、锁等等
    yjxjn
        6
    yjxjn  
       2019-07-08 16:51:20 +08:00   ❤️ 2
    因为对于特别底层的东西,几十年甚至半个世纪都不会变的,cobol 和汇编了解一下,对于 Java,PHP IOS 这种的,应用层面的编程语言,变化更新快,而大多数中国程序员都在做应用层面的编程语言。
    zhangxs1989
        7
    zhangxs1989  
       2019-07-08 16:52:31 +08:00   ❤️ 1
    几千年了人性和人形几乎没变
    XHalso
        8
    XHalso  
       2019-07-08 16:53:29 +08:00
    就前端而言,我持反对态度
    xmge
        9
    xmge  
       2019-07-08 16:55:30 +08:00
    过了好多年,java 还是 ssh
    QQ2171775959
        10
    QQ2171775959  
       2019-07-08 16:55:42 +08:00
    IT 类的技术更新也是很快的,三五年更新一次技术是家常便饭的。
    zlccn
        11
    zlccn  
       2019-07-08 16:56:15 +08:00
    前端发展史了解一下...
    BCy66drFCvk1Ou87
        12
    BCy66drFCvk1Ou87  
       2019-07-08 16:56:24 +08:00
    后端开发表示前端变化很快啊,前几年写个网站前端页面还是 jQuery/Bootstrap 一把梭,现在用 react/vue 都感觉落后于时代了……
    BCy66drFCvk1Ou87
        13
    BCy66drFCvk1Ou87  
       2019-07-08 16:56:48 +08:00
    @HuasLeung "不用 react/vue 都感觉落后于时代了"
    ben1024
        14
    ben1024  
       2019-07-08 16:57:06 +08:00
    深度越深越是焦虑,越担心变化,真正变不变两说
    贩卖焦虑罪大恶极
    Narcissu5
        15
    Narcissu5  
       2019-07-08 17:00:43 +08:00   ❤️ 3
    @janxin 我觉得前端变化快不是技术本身演进有多快,而是本身起点太低
    whypool
        16
    whypool  
       2019-07-08 17:02:30 +08:00
    前端:先追上了再说变化
    ianva
        17
    ianva  
       2019-07-08 17:09:09 +08:00   ❤️ 5
    前端也几乎没有变化,
    目前 react,angular 这些理念和当年 Silverlight xaml, flex mxml,这种声明式的 UI 构建方式来说没有任何变化,
    前端只是从基于 DOM API 的时代刚刚来到 20 年前在软件开发行业已经很成熟的方案的路上
    whywhywhy
        18
    whywhywhy  
       2019-07-08 17:10:10 +08:00
    变化快是因为发展快,当达到一个瓶颈的时候,就会慢下来了。

    高度基本固定,就会发展宽度。
    ianva
        19
    ianva  
       2019-07-08 17:10:16 +08:00
    另外 iOS 和 Android 也是,Swift UI 和 Flutter
    janxin
        20
    janxin  
       2019-07-08 17:10:24 +08:00
    @Narcissu5 几年补掉几十年的差距还不算快么...
    liuzhiyong
        21
    liuzhiyong  
       2019-07-08 17:11:12 +08:00 via Android
    那要看什么技术,前端的技术变得飞快的。
    Narcissu5
        22
    Narcissu5  
       2019-07-08 17:14:54 +08:00
    @janxin 所以说啊,并不是这几年技术有了多么突出猛进的进步,前端纯粹是补课。整个技术圈的演进依然是四平八稳的,前端课补的差不多了也会开始趋于稳定
    hailaz
        23
    hailaz  
       2019-07-08 17:15:10 +08:00   ❤️ 2
    看你从哪个角度看和看哪一层的技术。例如移动通讯技术 2G 3G 4G 5G 传输方式都是无线电波,你说技术有进步不?
    yangzhezjgs
        24
    yangzhezjgs  
       2019-07-08 17:20:57 +08:00
    前端现在也已经逐渐进入稳定了,之前变化快,个人觉得很大程度上因为前端在 node 出现之前本身体系就不够完善,完善的体系建立起来之后就不会太大变化了
    ianva
        25
    ianva  
       2019-07-08 17:26:24 +08:00
    前端这些东西除去声明式的 UI 构建外,标签和组件其实就是不同 function 的 compose,也就是 point-free 风格建构起来的,从这个角度讲这都是上个世纪 50-60 年代开始玩的东西
    airyland
        26
    airyland  
       2019-07-08 17:29:04 +08:00
    一直身处其中,就不会快。就像你天天看你旁边的一个人,你不会发现有多大变化,但是从别人看来其实是非常大的。
    rogwan
        27
    rogwan  
       2019-07-08 17:33:27 +08:00 via Android
    1G ~ 5G 通信计算设备,软硬件的各个组件,变化还是很大的。
    zqx
        28
    zqx  
       2019-07-08 17:34:25 +08:00 via Android
    从底层开始梳理的话: 芯片集成程度更高,计算机运算速度更快&网络传输速度更快,应用层软件的丰富程度和复杂程度更高,到这里就对语言框架的性能和工程能力提出了更高的要求。前端客户端移动端的技术迭代肯定会随着芯片发展变慢而变慢,最后稳定,最后的最后新一代革命性的终端出现,把手机电脑淘汰掉,然后人类开始研究新的语言和框架。
    smdbh
        29
    smdbh  
       2019-07-08 17:58:20 +08:00
    自从学了快排,天下无敌啊
    大家这些年一点都不努力 xd
    lidfather
        30
    lidfather  
       2019-07-08 17:59:08 +08:00 via Android
    这种观点真的很 native
    charlie21
        31
    charlie21  
       2019-07-08 18:23:50 +08:00
    IoC、AOP 应该属于程序员的基本功,可惜我怀疑 10 个人里面只有 1 个知道它的
    ww2000e
        32
    ww2000e  
       2019-07-08 18:54:13 +08:00
    新技术虽然都是相通的,你可以很快学会,但是总会有坑的,公司不会给你时间重新踩一遍,所以要有经验的。。所以就这样被落后,跟不上了
    notreami
        33
    notreami  
       2019-07-08 19:08:21 +08:00   ❤️ 1
    加减乘除、阿拉伯数字,几百年都没变化,所以你们数学为什么考不了满分?
    xuanbg
        34
    xuanbg  
       2019-07-08 19:11:11 +08:00   ❤️ 1
    MVC 模式还是 76 年提出来的呢,前端的同学用上才几年。。。
    Raymon111111
        35
    Raymon111111  
       2019-07-08 19:14:12 +08:00
    一些经典的方法手段肯定不会经常变, 都是前人很多大牛好多年总结实践出来的

    经常变的是工具
    oneisall8955
        36
    oneisall8955  
       2019-07-08 19:32:43 +08:00 via Android
    理论基本不变,实现方式变了
    twoconk
        37
    twoconk  
       2019-07-08 20:42:00 +08:00
    @luckyrayyy 说的很在理!
    wupher
        38
    wupher  
       2019-07-08 21:37:52 +08:00   ❤️ 3
    多少还是有变化的。

    2000 年初的时候,以 Java 平台来说,框架还是 XML 设置大行其道,struts 风格当时还是吃香的。经常开发时还会用到专用的 xml 工具,比如 xml spy。现在,大家都受 ROR、Sintra 风潮的影响,多走标签、yaml,开发个项目也不再一堆 XML 配置文件了。

    Web Service 也就不用再多说了,呵呵。

    2K 年初,大家还是比较 OO 的,设计模式等等。JS 框架那时也努力 OO 化,虽然 javascript 本身的继承模型是原型继承。到今天,FP 不能说大行其道,起码也展露头脚了。JS 的纯 OO 风格框架也基本不存在了。大家更喜欢使用回调,闭包。

    其它的方面就更多了。2K 初搞数据分析和商业智能,都是搞数据仓库,上下钻取。当年的自己很难相像,短短十来年后,人工智能就能在围棋上远远甩开人类。机器学习和深度学习会达到今天这样的能力和热度。

    别的不说,你当时能想像以后大家出门不用带现金,拿部手机就足够了?
    janus77
        39
    janus77  
       2019-07-08 22:18:43 +08:00
    变的都是工程化 产业化的东西比较多
    就拿前端说事
    之前是全都叫做美工,没有前端这个概念
    DW+手写
    然后出现了 js,css,开始使用引用加载和各类复杂效果
    出现了 jquery,dom 一把梭
    出现了 AJAX,于是开始写逻辑
    各类浏览器的兼容问题,出现了兼容方案
    node js,出现了可以完全由前端人员写后端的机会
    各种架构(比如 MVVM ) webpack,seo,SSR,ES6 等标准

    路线:纯美术视觉—— UI 交互(兼容,优化)——涉及后端以及分离( AJAX,node js )——规范化标准化(为了超大型工程的持续开发维护,节省成本)
    这其中的技术都是因为内在需求(工程化本身的需求,而非产品形态的需求)而演变出来的
    azh7138m
        40
    azh7138m  
       2019-07-08 22:24:21 +08:00
    @ianva react 最大的变化是给前端带来了 jsx ( yyx,现在可能是 hooks api (笑
    jsx 这种东西才是极大的提高了生产力
    janxin
        41
    janxin  
       2019-07-08 22:24:52 +08:00
    @Narcissu5 我的意思是实践操作也是技术的一环,并不是说理论进步不大就是技术进步不大。

    这就跟说基础科学没有进步,生产的进步就不叫进步一样
    ryd994
        42
    ryd994  
       2019-07-08 22:27:30 +08:00 via Android
    这就是为什么我做底层
    底层万年不变啊,但是全靠经验,越老越值钱。
    ianva
        43
    ianva  
       2019-07-08 22:36:52 +08:00
    @azh7138m 就像我之前说了,jsx 本质其实是 function 的 compose,也就是 point-free 风格建构起来的,从这个角度讲这都是上个世纪 50-60 年代开始玩的东西
    loading
        44
    loading  
       2019-07-08 22:48:51 +08:00 via Android
    @ianva 人类的本质就是复读机。
    azh7138m
        45
    azh7138m  
       2019-07-08 23:25:24 +08:00 via Android
    @ianva jsx 并不是说什么新东西,但是它是一个好的语法糖。
    自此之后,写界面的时候更为直观。
    就如 omi 所说 JSX 是开发体验最棒(智能提示)、语法噪音最少、图灵完备的 UI 表达式,模板引擎不完备,模板字符串完备但是语法噪音太大。

    它提高了生产力。
    enaxm
        46
    enaxm  
       2019-07-08 23:29:32 +08:00   ❤️ 3
    nicevar
        47
    nicevar  
       2019-07-08 23:44:36 +08:00
    前端都成娱乐圈了,变化还不快么
    wtdd
        48
    wtdd  
       2019-07-08 23:59:09 +08:00
    主要是前端三大件在不断发明轮子,后端就稳定太多了
    rainmakeroly
        49
    rainmakeroly  
       2019-07-09 00:18:29 +08:00 via Android
    例子好多!然后感觉还有很多没看!
    Concurrency Java 1999 年的的一本书,
    加 2006 年的一本书。
    后来才知道 JCIP 作者也是 03 年左右就在 ibm developer 写了一个系列。

    感觉后端的演变没前端快。系统底层的不了解不知道
    q397064399
        50
    q397064399  
       2019-07-09 03:07:35 +08:00 via iPhone   ❤️ 2
    1. 技术变化快很多是表层的东西,楼上说 Java 的 xml 跟现在的 Javaconfig 其实本质上是一回事,过去用 xml 是没有一整套类似 springboot 的玩意,即插即用 但是 bean 生命周期 bean 的切面 aop 关注点分离这些东西基本上是没变的,里子还是那套玩意,整个 oop 依赖注入的思想 跟 springboot 的 autoconfiguration 是一脉相承的,变化的是外观。

    2.写 c 的估计更有感悟,c 语言基本上更新的非常慢,基本上不加特性,很多操作系统的 abi 好多都是万年不变了 x11 应该也是好多年头了 当年提供机制而非策略的这种思想 到今天还未过时。

    3.感觉技术变化快的只有前端,因为最早用户交互这块,压根就没想到这种十几天速成出来的 script 要承担以亿计的人类的交互体验,web 最早设计出来也是桌面端 UI 的补充而已,但是时代变化不以人意志改变,web 乱拳打死老师傅,有一定年纪的程序员应该知道桌面 UI 技术架构不知道比 JavaScript 那套高到哪里去了,前端那套东西说不好听点到 15 年后才真正赶上 20 年前桌面交互 UI 技术那套设计,之前 JavaScript 配合 dom api 也就是刀耕火种罢了。

    最后总结一下吧,在整个冯氏图灵机下,很多架构跟模块分解思想方面的东西基本上不会过时,很多基础性的东西也不太会过时,毕竟很多年来也经受过不少检验了。另外动不动说颠覆性技术更新的那是不存在的,人类的生产力发展,本身就是在过去的基础上进行不断的完善改进,真正颠覆人类的生产力的目前看来只有强人工智能,就目前可见的时间,只要还是猿猴在写代码,很多活了不少年的老家伙再活一个轮回不成问题
    ericgui
        51
    ericgui  
       2019-07-09 03:23:02 +08:00 via Android
    我们公司的系统还是 15 年前的。。。
    version
        52
    version  
       2019-07-09 03:57:11 +08:00
    技术变化还是很快的..不能单看应用软件层面.和网页
    可以看看近年来的游戏..从架构和服务端各种.都是以前不一样的了.

    虽然页游还能赚小朋友的钱.但还活在页游世界.哪天淘汰了.就是怀疑自己竞争力的问题了.
    可能做永远都是同样的东西..实现和架构和交互在不断进步..
    学习新事物.多个跳板吧.也是机遇.也是能力体现
    Mac
        53
    Mac  
       2019-07-09 04:11:32 +08:00 via Android   ❤️ 1
    是一帮人整天给现有技术起新名词
    ech0x
        54
    ech0x  
       2019-07-09 07:52:44 +08:00 via iPhone
    编程语言上也没有变化啊,现在语言的那些新特性都是各种从像 Haskell 这样的函数式编程语言里抄。
    KuroNekoFan
        55
    KuroNekoFan  
       2019-07-09 08:29:24 +08:00 via iPhone
    技术发展虚无主义?
    shakoon
        56
    shakoon  
       2019-07-09 08:34:17 +08:00
    互联网行业前段开发技术变化很快,但除此之外其实其他技术更新很慢的。特别是在企业应用方面,十年前和现在的差距,还不如互联网去年和今年的差距大。
    snappyone
        57
    snappyone  
       2019-07-09 08:45:28 +08:00   ❤️ 1
    后端的话如果你基础很熟,那些新出来的技术真的是稍微了解下就掌握了,换汤不换药基本都是,都是为了解决特定的问题而做了一些取舍和优化
    starsriver
        58
    starsriver  
       2019-07-09 08:47:49 +08:00 via Android
    我是学电气控制,顺便写写网络这边的程序。
    硬件的进步才是网络的进步,实际上技术本来就那些,编译器最后干的事情还是汇编到机器码,cpu 核心永远是一个累加器。

    进步看是什么方面,是思想观念还是工具的更新换代。
    SilentDepth
        59
    SilentDepth  
       2019-07-09 08:52:08 +08:00   ❤️ 1
    其实,就算是前端,本质的东西也没咋变。当然各种 Web 规范确实在演进,也带来了不少新东西,但远没到「学不动跟不上」的程度。

    变的一直是工具。就好像以前做菜切丝只用刀,现在有了刨丝器,不兴用刀了,你就不知道做这菜需要刨丝了?
    Davic1
        60
    Davic1  
       2019-07-09 09:08:55 +08:00
    @strcmp 同意
    leegoo
        61
    leegoo  
       2019-07-09 09:15:30 +08:00
    其实我觉得像这些语言特性,中间件等技术无非是把底层很麻烦的代码通过简单的方式去实现
    当然作为程序员你当然也想通过简单的功能函数去实现某个功能,总不至于查用个系统的 IP 地址还得写个几千行底层代码吧 那样开发的效率多底啊 软件更新的速度和维护那简直是令人发指的
    spring 配置太麻烦-->spring boot 简单配置
    jQuery 维护太麻烦-->vue 框架解决
    arthas2234
        62
    arthas2234  
       2019-07-09 09:27:57 +08:00
    新瓶装旧酒,现在出的一堆的技术,框架,都是基础语法+语法糖
    q397064399
        63
    q397064399  
       2019-07-09 09:28:14 +08:00   ❤️ 1
    另外补充一点:
    这些年我没见过有什么突破性的思想跟革命性的技术更新,
    类似于发明晶体管跟计算机这种革命性的突破,绝大部分的技术都是在原有的基础上进行改进,
    人工智能相关我不太理解,不做讨论。

    那些说前端发展快的,那是编程语言跟工具被时代驱动的,倒退 20 年 有谁知道今天的 web 会秒天秒地秒空气?
    当年 Delphi MFC QT Silverlight 以及各种桌面库 跨平台技术 可是百家争鸣。
    再倒退 30 年,你觉得网景那帮人会知道他们搞的那个半瘸的 script 跟在 Sun 公司屁股后面 顶着当年如日中天的 Java 名头 能占领每一个普通用户的桌面?
    现在很多前端里面的东西,很多在 20 年前乃至更早的时间就在别的系统开发实践中就已经被奉爲圭臬了,
    只是稍微年轻一代的计算开发者不再像他们年长的一辈那样磨炼自己的技艺,
    以至于以为很多东西都是 Javascript 以及前端这个领域搞出来的。
    doublechenpaul
        64
    doublechenpaul  
       2019-07-09 09:30:45 +08:00
    1972 年的 c 跟现在的 c
    senghoo
        65
    senghoo  
       2019-07-09 09:30:49 +08:00
    其实是东西还是那些东西。只是一种语法糖,切换到了另一种语法糖。
    FrankHB
        66
    FrankHB  
       2019-07-09 09:54:21 +08:00
    太浮躁了。
    combinator 是 20 年代的事情。
    lambda/Petri net 是 30 年代的事情。
    binary rep/symbolic computation 是 40 年代的事情。
    recursive call/coroutine/GC/refcounting 是 50 年代的事情。
    lexical scoping/FEXPR/J operator 是 60 年代的事情。
    actor model 是 70 年代的事情。
    delimited continuation 是 80 年代的事情。
    ……
    还想跟得上多少“技术”?
    @doublechenpaul 说起来丢人,C 在出生时就够后进了。(比如说,funargs 彻底缩卵了。)
    @senghoo 搞清楚啥叫“语法”和“糖”了么。
    wly19960911
        67
    wly19960911  
       2019-07-09 09:54:34 +08:00
    现在框架不是为了简化开发方案的吗?并没有说解决了什么吧。
    wly19960911
        68
    wly19960911  
       2019-07-09 09:55:27 +08:00
    @wly19960911 #67 应该说从编程理论上做了一个完全的创新
    senghoo
        69
    senghoo  
       2019-07-09 10:01:32 +08:00
    @FrankHB 吐槽很多现在很多所谓的“新技术”而已。 莫较真。
    66beta
        70
    66beta  
       2019-07-09 10:05:12 +08:00 via Android
    所以前端都劝新人学 JAVA,相对来说,不用担心不持续学习而被淘汰
    keelii
        71
    keelii  
    OP
       2019-07-09 10:07:46 +08:00
    软件的开发是从机器(底层)到各端(高层)的某种链路,在这条链路中越接近高层、越接近终端(产品 /用户),需求的复杂性 /个性化程度会越高。

    底层的是理性的基于逻辑关系构建的,高层则相对感性地基于自身需求喜好来构建。
    Cloutain
        72
    Cloutain  
       2019-07-09 10:12:00 +08:00
    X86 体系建立以来,还是能看到阶段性的显著变化,尤其是 16 位到 32 位的变化是刻骨铭心的。32 位到 64 位变化反而由繁化简,真是世事无常啊
    FrankHB
        73
    FrankHB  
       2019-07-09 10:15:37 +08:00
    @q397064399 总结?很多不会过时的说法没问题,但是麻烦先把不切实际的误导性前提给扔了。
    TM is overselled.
    别瞎认祖宗了,不说 formalism (图灵机要求纸带无限,谁给搞个内存无限的实现试试),现在的机器就没几个接近 UTM,当作土嗨编程模型用的撑死也就像个 PRAM (“一坨大数组”)。
    也别给冯诺依曼栽赃。现在大部分码农眼前也没多少正儿八经冯诺依曼机器。虽然通用处理器(不算一些单片机) ISA 角度上基本算是(然而微架构上通常不是,搞得设计 CPU 时还是要承受 SMC/CMC 之类的冗余,什么 victim cache 乱七八糟的),但白瞎的是上面几乎把这坨硬件能力全给阉完了(想想 60 年代以后几个有语言允许原生 shellcode )。
    smallpython
        74
    smallpython  
       2019-07-09 10:16:17 +08:00
    理论变化的不快,工具变化的快,或者说招聘的要求变化的快
    PatrickDingDing
        75
    PatrickDingDing  
       2019-07-09 10:21:23 +08:00
    关于“人工智能”的“革新”可以参考 yin 喷子的文章,其中会提到侯世达这个人,然后稍微读一下此君的书,就知道“人工智能”所谓的“革新”是啥了。
    darknoll
        76
    darknoll  
       2019-07-09 10:23:43 +08:00
    但是绝大部分人是用框架
    hst001
        77
    hst001  
       2019-07-09 10:25:17 +08:00 via Android
    理论基础还是几十年前大佬们留下来的,但是由于互联网发展的需要,很多事情不得不改变思维来重新对待,于是就有了今天看到的层出不穷的"技术"。
    FrankHB
        78
    FrankHB  
       2019-07-09 10:29:43 +08:00
    @starsriver 编译器到机器码?我有撸过编译到微码的,算不算机器码?反正肯定不是汇编。
    累加器?糊 ALU RTL 的估计能把你打死……
    民科 model 自己造乐子可以,别给造 CPU 的添乱,谢谢。
    q397064399
        79
    q397064399  
       2019-07-09 10:45:25 +08:00
    @FrankHB #73 你这样说一通有是想讲什么?
    现在通用的计算机虽然有分支预测 跟指令冒险,
    但是抽象出来的模型 一直都没变啊,每次 取指令 读数据 写数据 ,
    这个抽象模型一直都没变啊,CPU 以上一直都是这样 CPU 以下跟软件技术已经没什么太大的联系了
    Felldeadbird
        80
    Felldeadbird  
       2019-07-09 10:54:39 +08:00
    技术的核心是没变化,主要是用到的工具日新月异。 去年,你还在写原生语法, 今年你可能得用框架,再后来,你就需要告诉 AI 怎样写代码。最后,你发现自己失业了。
    FrankHB
        81
    FrankHB  
       2019-07-09 11:01:24 +08:00   ❤️ 3
    回到主题。
    “关于软件构架与设计方面涉及到的问题、面临的困境、解决的办法似乎根本没有变化过。”
    不对,是多出很多新的问题,而解决问题受到的限制更大了,而且整体演化成了没法单纯从技术上面对的问题工厂。
    20 年前,软件规模要求的压力显然没现在这么大,原始需求的问题领域也没现在那么丰富。
    而 20 年来软件开发人员成本的增长不足以支撑软件开发人员完成多出来的需求变化需要的能力的增长。
    因为大多数管理人员习惯用“水平扩容”(增加资源数量)解决问题,在遇到人的瓶颈(总工时)也没有什么好的方案只能照猫画虎(要扩招更要 996 ),反而加剧了传统软件工程的问题(譬如,沟通成本)。
    更有甚者,从业人员的平均基础水平实际上是下降了。
    这一方面是因为现在的开发人员很多场景下分工过于专一,普遍欠缺考察迁移问题解决方案的能力的场景,要求降低了;
    另一方面是基础教育本身就歪了(想想 SICP 都改用 py 了)。
    这进一步导致解决新的问题时会倾向于专一而便于靠堆砌资源数量变通的解法,却不注重解的结构和内部关联,更不关注维护现有解决方案的成本去除冗余。
    很多所谓的新的技术就是这时候炮制出来的。
    由于“新”的技术越来越多,又不没几个人去查重归并,以后这方面问题复杂度会越来越高。
    仅仅是“学习”的问题,其实算不上什么事儿。真正开始体现影响的是选型成本以及应对碎片化的机会成本。这时候就各显神通了:无视的无视,diss 的 diss,还有自己糊屎取而代之的。
    直白点说,问题增长得本来就不慢,试图解决问题的人似乎有效地解决了一部分问题,但实际上制造了更多其它的问题,而且越来越不容易解决。这个倾向比原始问题快得多。
    字面上,这当然能算得上技术变化很快。只是不应该那么快。
    按理说人的忍耐总是有极限的。可惜现实由于韭菜(资本和相对低端的人力资源)仍然大批量进场的问题,这部分暂时还没法平衡,还会在天上飞一阵子。
    littlewing
        82
    littlewing  
       2019-07-09 11:13:31 +08:00
    确实,现代计算机仍然摆脱不了 冯·诺依曼 架构

    量子计算机啥时候能民用啊
    FrankHB
        83
    FrankHB  
       2019-07-09 11:14:28 +08:00
    @q397064399 我指出的是你所谓的这些抽象对底层实现者还是对高层用户都没有什么实际意义。因为实际的场景几乎全不是按你想象这样抽象的。
    你给的模型典型实现中只是在微架构层面直接相关。ISA 以上的用户虽然被允许利用某些特定实现的知识做启发式优化,但一般根本不需要依赖这种模型编程。原则上,一些时候还应该避免做得到,否则就是泄漏实现细节的问题了:制造 side-channel attack 的机会是安全设计上的 bug。
    另外,在 ISA 的层次上划分软硬件的分界只是侧重商业角度上的保守做法,不是普遍必须的。“指令”都不一定是硬件接受的编码处理的基本单位。
    FrankHB
        84
    FrankHB  
       2019-07-09 11:26:24 +08:00
    @littlewing 请不要再迫害冯诺依曼了……
    纯冯诺依曼架构下的 CPU,共用总线读取指令或读 /写内存数据,没缓存没法并行。
    你家“现代计算机”能受得了这种限制么。
    v23x
        85
    v23x  
       2019-07-09 11:37:40 +08:00
    2012 年的时候

    asp 还在大行其道....

    jQuery 还是极其时髦

    写原生 JS 的大把大把的

    chrome 根本没人用...
    v23x
        86
    v23x  
       2019-07-09 11:38:30 +08:00
    div 还在慢慢取代 table....
    karia
        87
    karia  
       2019-07-09 12:01:02 +08:00 via Android
    想不出节奏,好急
    ninjachen
        88
    ninjachen  
       2019-07-09 12:06:26 +08:00
    1960 年的 IBM 的软件项目的管理经验现在还基本能用呢。
    说的技术发展太快是应用层的技术,不是概念层的
    yuanxianrenqiu
        89
    yuanxianrenqiu  
       2019-07-09 12:07:06 +08:00
    刚刚在看 AOP 的这边文章,就刷到这个贴: https://juejin.im/post/5d217430e51d4556da53d132
    其实计算机很多概念的东西都不会变得很快,变的是实现的东西。比如可能以前流行框架 A,后面流行框架 B 而已。核心思想、核心理念很多都没变。无非易用性方面变得多、变得快。
    starsriver
        90
    starsriver  
       2019-07-09 12:33:26 +08:00 via Android
    @FrankHB 看你怼了这么多,我也不好说什么。但是,alu 本质不就是一个线性累加器吗?微代码是汇编的雏形,当初控制矩阵比较简单,低级硬件使用的东西,目前 cpu 支持的指令集里面包含这种代码,实际上和汇编没区别,你应该好好补习一下基础。

    如果说计算机领域的新技术,inter 传承多年的 x 架构也快用矩阵代替了,将来是量子时代,现在是硅时代。
    b00tyhunt3r
        91
    b00tyhunt3r  
       2019-07-09 12:37:36 +08:00 via iPad
    @yjxjn cobol 咋也成底层了
    abcbuzhiming
        92
    abcbuzhiming  
       2019-07-09 14:52:25 +08:00
    @HuasLeung 前端变化快?不好意思,MVVM 是微软 2005 年搞出来的,现在三大前端框架不就是绕着这玩意变来变去吗
    z0ne
        93
    z0ne  
       2019-07-09 15:39:09 +08:00
    重构 && 改进
    比如前端,以前都是写原生或者加个 jquery,后来写多了,开发者们就想:为何不写个更方便的库,把这些重复的代码用更简单的形式表达出来呢?于是就多了很多库。
    在“外行”看来是变化大,其实只不过是思路广,一个代码 n 种写法,衍生出不同技巧而已。

    这是好事,因为懒而去不断进化,不都是我们人类在做的事吗
    no1xsyzy
        94
    no1xsyzy  
       2019-07-09 15:43:35 +08:00
    @lidfather native ?你是想说 naive 吧?
    no1xsyzy
        95
    no1xsyzy  
       2019-07-09 15:51:32 +08:00
    技术不曾改变,是技术的实现改变了
    bojackhorseman
        96
    bojackhorseman  
       2019-07-09 15:58:14 +08:00
    @v23x #85 那时候刚上大一,网站设计开发第一节老师教怎么用 table 布局。
    pythonee
        97
    pythonee  
       2019-07-09 16:19:15 +08:00
    有没有大牛整理过近几年主要的技术变化和趋势呢?

    我觉得有几点:
    1、容器
    2、协程
    3、Serverless

    还有 AI/EI/AR/VR 之类的新兴行业
    leonard916
        98
    leonard916  
       2019-07-09 16:24:49 +08:00
    其實底層的東西還是那些 應用層只是越來越簡單了 當然可以實現的功能也越來越多了 而已
    q397064399
        99
    q397064399  
       2019-07-09 16:32:01 +08:00
    @FrankHB #83
    多人协作 把代码全部写一坨 怎么维护? 现代软件开发技术的进步很大程度上就在于屏蔽底层特性,
    架构在抽象层面上,例如系统程序员不需要了解 CPU 门电路的实现,他只需要了解 ISA 指令,
    根据指令文档指出的抽象描述来控制计算机,至于门电路 指令流水具体的实现 则交给 CPU 的设计者,
    操作系统上面又把 ugly 的硬件进行了统一封装,你只要知道 open 文件描述符这个概念,
    至于写入的是 SSd 还是机械硬盘 中间缓存什么的 都不用管。
    这种分层的概念才是软件各个方面的精髓所在吧。
    kindle958
        100
    kindle958  
       2019-07-09 16:32:20 +08:00
    @lidfather 是 native,还是 naive ?
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1542 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 16:39 · PVG 00:39 · LAX 08:39 · JFK 11:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.