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

计算机的本质是什么?当我们学习计算机的时候,我们在学习什么?

  •  
  •   baobao1270 ·
    baobao1270 · 181 天前 · 7100 次点击
    这是一个创建于 181 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近在群里讨论这个问题,很多人都有不同的看法。有人觉得应当代码先行、Learn by code ,有人觉得反而是数学和逻辑更加重要。有人认为,实践的方法虽然能做出跟上业界的东西,但是也很容易过时,掌握了计算机本质与核心的思想,才是最重要的。

    我们在此讨论的不是面向就业的课程,而是更加基础的计算机学科问题。

    假如你有机会编写计算机科学与技术专业大学生入学的第一门课的教材,或者是高中计算机教育的大纲,假设你编写的内容不会受到教育以外因素的限制,你会怎样编写呢?

    (希望这是一个大家一起思考的主题,因此请不要在这个主题下回复 AI 生成的文本,谢谢!)

    76 条回复    2023-04-04 14:53:14 +08:00
    seers
        1
    seers  
       181 天前   ❤️ 4
    工业和学术都讨论烂了
    0xZhangKe
        2
    0xZhangKe  
       181 天前 via Android
    计算机涵盖的太多了,如果是指软件开发的话,最重要的应该是工程能力,软件开发的本质就是构建一个软件系统,对这个系统的设计能力显然是最重要的,对于这个系统的具体实现上需要逻辑能力也可能需要数学能力。
    wtsamuel
        3
    wtsamuel  
       181 天前
    计算机本质就是工具,用来解决问题的。你第一段讨论的是 engineering 和 science 的区别,也就是实践与理论。
    James369
        4
    James369  
       181 天前
    本质是虚拟全世界
    stevefan1999
        5
    stevefan1999  
       181 天前   ❤️ 3
    計算機的本質就是狀態機(笑)
    所以計算的本質就是狀態的轉移(笑)
    guaguaguaxia1
        6
    guaguaguaxia1  
       181 天前
    控制复杂度
    xxzlll
        8
    xxzlll  
       181 天前 via Android
    这两个知乎问题,已经讲清楚了
    misaka19000
        9
    misaka19000  
       181 天前
    计算机的本质是图灵机啊,是逻辑
    janus77
        10
    janus77  
       181 天前
    计算机的本质就是计算机啊,计算,机器,这两个词已经说的那么明白了
    计算的本质?计算只是一个手段,目的是解决问题,我们学习计算,就是为了解决问题
    limbo0
        11
    limbo0  
       181 天前
    题主这种问法完全是开放的哲学问题啊
    唯心, 唯物, 存在, 虚无
    zxCoder
        12
    zxCoder  
       181 天前
    无聊的问题,闲着
    rus4db
        13
    rus4db  
       181 天前
    什么是“本质”?
    wisetc
        14
    wisetc  
       181 天前 via iPhone
    本质是计算,是一种人类的延展,人类文明的成果,俗称电脑,你会发现不少英文转中文词汇的翻译很精准,传神,先前的
    wisetc
        15
    wisetc  
       181 天前 via iPhone
    对现实世界的建模和虚拟,以及通信
    rpish
        16
    rpish  
       181 天前
    op 要给学生上导论课?
    可以参考下下面这个视频:
    cmdOptionKana
        17
    cmdOptionKana  
       181 天前
    大部分人没有兴趣、或者没有能力去学计算机的本质。

    而有兴趣、有能力学本质的人,他很自然就知道本质是什么(其实也没啥神秘的,软件层面的本质无非就是编译原理、算法、设计模式之类的)。
    weiweiwitch
        18
    weiweiwitch  
       181 天前 via Android   ❤️ 3
    程序员就是翻译。你懂机器的语言,然后帮有需求的人翻译给机器听,让机器帮人类做事。
    一方面你要懂人类的需求,这样翻译的更快也不容易翻错。另一方面你也要学习机器的原理,也就是机器的“文化”。
    随着技术的进步,语法会简单,也会有类似谷歌翻译的自动翻译工具出现。
    boshok
        19
    boshok  
       181 天前
    当我们在 xxx 时,我们在 x 什么?????????????
    zzzzzzggggggg
        20
    zzzzzzggggggg  
       181 天前
    计算机是工具,想要搞清楚我们在什么,就得搞清楚计算机作为一个工具它在解决什么问题
    Genshin2020
        21
    Genshin2020  
       181 天前
    思维逻辑
    shendaowu
        22
    shendaowu  
       181 天前
    本民科 + 民哲狂喜。

    我个人觉得本质这个东西好像要有一定的抽象,讨论 A 的本质,那么这个本质可能在 B 里甚至更多的东西里也存在。但是计算机是一个过于特殊的东西,我更愿意说什么东西的本质是计算机。想想历史上的那些极端伟大的发明,好像都是很难说明本质的。比如语言、农业、蒸汽机、电气化。

    还有本质好像本质原因的简称。这个我挺没自信说出来的,也许有更好的表达方法,但是感觉可以强行分析一波。计算机这个东西是太多东西的因,但是它的因好像有点难描述。我更愿意说计算机是涌现出来的,它没有单个决定性的因,而是一些原件组合到一起涌现出来的。涌现是复杂系统科学中的一个概念,挺难解释的,有兴趣自己去搜吧。当我们讨论本质的时候,可能一般都期待获得一个单一的概念,这在计算机上是行不通的。我不太同意原始的计算机的想法是设计出来的,我更愿意相信它是涌现出来的,虽然 Intel CPU 是设计出来的没什么问题。

    最近看的一本《现象和本质的辩证法》里提到了一个叫系统本质的概念,感觉跟上面提到的涌现有点关系。介绍系统本质的章节提到整体大于部分之和了。不过这书里也没怎么展开讲。

    还有就是我觉得称得上本质的东西都有一些大众人不知道的信息在里面,至少在专家中很多人都不知道。但计算机是纯纯的人造物,基本没有什么专业人士不知道的基本原理。它在最基础的领域还没有什么人无法理解的东西。
    Lemonadeccc
        23
    Lemonadeccc  
       181 天前
    就是软工、控制、通信、安全。外围还有一个电子,其实就是这些。培养方案也都是这么几个方向。工科最终解决的都是实际问题。
    当然,大部分软工都是对问题的抽象,利用计算机的复用性和对循环的执行能力来进行工程构造,来达到现实世界的问题的解决。
    其实没必要追求本质,哲学到现在都没有一个安全出口。好好吃饭,照顾好家人才是王道。
    Jiajin
        24
    Jiajin  
       181 天前
    输入、计算、输出?
    byewind
        25
    byewind  
       181 天前
    有点搞笑的问题, 看起来像是被中国教育迫害了的人才会这么问.
    计算机的本质就是工具, 使用这个工具发挥你的创造力创造工具也好创造艺术也好, 总之是创造.

    当然你可以将计算机创造得更好.

    数学, 逻辑, 代码, 编程语言都只是你掌握得工具. 都不是重点, 重点是创造力, 你用这些工具创造什么, 是创造垃圾还是创造能让人们喜欢得东西.

    也别介意创造垃圾, 大部分人的工作都是在创造垃圾.
    mrlmh00
        26
    mrlmh00  
       181 天前
    计算机的本质是一种能够通过电子电路执行计算的机器,它可以模拟现实世界的各种问题,并通过程序和算法来处理大量的数据和信息。
    我们学习计算机的时候,我们在学习的是如何利用计算机的功能来解决各种实际问题和计算机的原理、结构、设计。
    vvhy
        27
    vvhy  
       181 天前
    @Jiajin #24 接、化、发?🤣
    laqow
        28
    laqow  
       181 天前
    有能力就解决能将现有的生产效率提升几十倍的问题,没能力就不断翻新轮子混点钱
    lister
        29
    lister  
       181 天前
    😊学的越多,离润越近
    xuanbg
        30
    xuanbg  
       181 天前
    学习计算机软件设计的话,重要程度依次递减:需求理解 - 交互设计 - 数据结构 - 软件工程 - 测试 - 编码。

    低代码平台一直期望能够替代编码工作,但可笑的是低代码还没来得及取代低端编码工作,反而要先被 AI 淘汰掉了。
    Tyuans
        31
    Tyuans  
       181 天前
    修电脑和 office 吧…我能接受毕业生让我帮忙调论文格式,但我无法接受让我修电脑。甚至自己 cpu 上的一体水冷风扇坏了不转两年最终还是被我发现的…i7cpu 降频 90 度工作两年…
    Jiajin
        32
    Jiajin  
       181 天前
    哈哈,强的一
    EngAPI
        33
    EngAPI  
       181 天前
    我们如今所有的计算机包括量子计算机都是冯诺依曼结构,的本质都是在做数学题,做有限步内有解的数学题。
    opengps
        34
    opengps  
       181 天前
    要学的不是计算机本质的 0 和 1 ,而是 0 和 1 按规则定义出的那堆含义。就好比中文笔画对中文的区别、英文字母相对于英语的差异
    artnowben
        35
    artnowben  
       181 天前
    计算机学科有很多方向,如操作系统、网络、存储、数据库、编程语言、算法等,每个方向都有一些重要的具体问题需要解决,并没有一个抽象的"本质"问题。多去动手解决一些具体的问题可能更符合计算机学科。

    例如,去年我做了一个基于 DPDK 的开源网络测试仪 dperf ,性能远超商业测试仪,解决了四层网络性能测试的业界难题,现在国内大厂,一些知名开源项目都在用。 https://github.com/baidu/dperf
    StarRail
        36
    StarRail  
       181 天前   ❤️ 1
    本质是生产资料。
    学习的是如何成为劳动者。
    Over
    yangzhezjgs
        37
    yangzhezjgs  
       181 天前   ❤️ 1
    1.计算机本质上是状态机,指令的目的就是触发状态机的状态改变,程序就是一连串的用于控制状态机状态变化的指令。

    2.软件设计中分层和抽象是基础,从硬件,操作系统,虚拟机 /编译器,应用层框架都遵循相似的规律,上一层通过构建抽象和声明式接口来为本层提供声明式接口(即只用关注输入输出的 API ),本层又使用命令式编程方式将上层提供的声明式接口组合封装为下一层的声明式接口,这样层层递归式的嵌套是软件工作的基本原则,所以实际的应用层编程在这样的层层简化下,变成简单的根据建模编写基于框架声明式接口的业务逻辑代码的过程。

    3.面向对象是主流的建模方式,一个对象本质上就是一个映射现实业务或者计算过程的状态机模型,对象的方法就是状态机的指令,而面向对象是参考了现实世界的运行方式而设计出的建模方法,因为现实世界各个物体都是具有明确的边界(封装)和特征(成员变量),通过交互完成一次协作,协作累加杂一起最后完成现实中繁复多样的生产、交易等活动。
    XxxxD
        38
    XxxxD  
       181 天前
    学习逻辑思维利用各种算法计算,让机器帮我们解决问题
    easing
        39
    easing  
       181 天前 via iPhone
    如果你学过计算理论就不会问出这种问题
    mobpsycho100
        40
    mobpsycho100  
       181 天前
    根据哥德尔不完备定理, 任何自洽的形式系统, 只要包含皮亚诺算术公理, 那么就总是包含不能被证明的命题. 因此很多时候你的问题, 尽管是从你当前的问题空间中产生的, 却必须要放到一个更大的问题空间中才能得到答案, 而这意味引入更多的假设. 即使你的问题空间被放大到全世界, 也总有一些问题是无法回答的, 例如缸中之脑问题, 或者整个世界是否是运行在一个巨大的计算机上. 公理会改变, 理论会过时, 本质的存在只是一种错觉.
    duke807
        41
    duke807  
       181 天前 via Android
    现在有些本科毕业要完成设计一款 cpu ,可以运行 riscv 指令集,用 verilog 硬件描述语言,在芯片模拟器 fpga 里面运行
    duke807
        42
    duke807  
       181 天前 via Android   ❤️ 1
    当你会设计 cpu ,就能深入理解计算机的本质
    chatWell1
        43
    chatWell1  
       181 天前   ❤️ 1
    计算机跳出行业本身来看,另外一层角度是带来一种思维方式。
    levelworm
        44
    levelworm  
       180 天前
    感觉硬件的本质上 Computer Architecture 这门课,设计一个 ALU 或者 CPU 就知道了。软件的本质看一下 SICP 或者学一下编译原理就差不多了?
    levelworm
        45
    levelworm  
       180 天前
    或者软硬兼做,可以尝试一下东京大学的 CPU 项目: https://www.is.s.u-tokyo.ac.jp/isnavi/practice01-01.html
    Aaron01
        46
    Aaron01  
       180 天前 via Android
    抽象
    bl4ckoooooH4t
        47
    bl4ckoooooH4t  
       180 天前
    是函数,相同输入到不同函数得到不同结果。和人脑一样,不同的事情每个人有不同看法。 因此计算机也叫电脑……
    bruce0
        48
    bruce0  
       180 天前
    到底层感觉是用数学(或者说数字)描述这个世界

    昨晚看一个介绍 UE5 的视频,这种感觉更强烈了
    Yeen
        49
    Yeen  
       180 天前
    信息科学本质就是把信息去熵(这里不是指信息熵)化的过程。
    计算机软硬件就是加工、处理信息的工具。
    让杂乱、无规律、无用处的信息,按需要变得有序、可解读、可以利用有价值。
    summerLast
        50
    summerLast  
       180 天前
    再讨论计算机之前,先去考虑一个简单的计算器它再做什么,首先去观察计算会发现其是个机械重复的过程,因此找到其重复的模式,再将模式用文字或符号描述出来,就有了计算可被实现的基础,恰好计算可以被布尔逻辑所描述,然后将现实中的一些物品看能否与其建立映射,而布尔逻辑可以被电路模拟,这就是我们现实世界中基于二进制电子计算机基础 ,本身是对计算重复机械的过程的实体实现之一,然后再去考虑硬件已硬如何解决软化,然后便有了软体可以通过编程的手段对硬件进行编排与操作来解决某些问题。

    计算机的本质是计算,计算是个机械的过程,而计算机作为机器是这个机械过程的实现之一。
    summerLast
        51
    summerLast  
       180 天前
    求群,哈哈哈,这些问题挺有趣和好玩的。
    nicebird
        52
    nicebird  
       180 天前
    1. 多看书学习。两个问题差距太远。
    2. 对于第二个问题,别想太多,多学多做,慢慢就明白应该做什么。
    summerLast
        53
    summerLast  
       180 天前
    上文存在问题,已修正:

    在讨论计算机之前,先去考虑我们人类在计算的时候在做什么,当静下心来细心去观察计算的过程时会发现其是个机械重复的过程,因此找到其重复的模式,再将模式用文字或符号描述出来,就有了计算可被实现的基础,恰好计算可以被布尔逻辑所描述,然后将现实中的一些物品看能否与其建立映射,而布尔逻辑可以被电路模拟,这就是我们现实世界中基于二进制电子计算机基础 ,本身是对计算重复机械的过程的具体可行的实体实现之一,然后再去考虑硬件已硬如何解决软化,然后便有了软体可以通过编程的手段对硬件进行编排与操作来解决某些问题。

    计算机的本质是计算,计算是个机械的过程,而计算机作为机器是这个机械过程的实现之一。
    wangxiang
        54
    wangxiang  
       180 天前
    让碳基生命成为硅基生命的引导程序
    hanlin85
        55
    hanlin85  
       180 天前
    周国平写过一本《无用之学》,上面说如果应试、谋职、赚钱是有用,那么,哲学的确没有什么用。可如果你希望成为一个真正优秀的人,哲学恰恰是最有用的。

    而当我被生活和工作搞得焦头烂额
    每天过着朝不保夕的生活
    看到有的家伙煞有件事地、悠闲地、漫无目的地在讨论某件事情本质的时候
    我特别能感觉到人类的悲喜并不相通
    我只想搞破坏,砸烂某个家伙的狗头
    anmu
        56
    anmu  
       180 天前
    怎么感觉学生气很重...
    visper
        57
    visper  
       180 天前
    解释器. 对命令的解释及执行. 作为一个个体,当和外界交互时,交互对象都是一个解释器. 对人,用人类语言,对电脑,用计算机语言,对狗,用....
    auh
        58
    auh  
       180 天前
    计算机的本质,就是数据存储,计算,传输。编程语言的本质,操控这些。

    更加高级一点的编程语言,实现更多,对资源的利用方式。

    以及,对人为编写上进行优化,方便人类读写。
    yule111222
        59
    yule111222  
       180 天前
    去看看吴军的《计算之魂》应该第一章就解释清楚这个问题了
    err1y
        60
    err1y  
       180 天前
    项羽:万人敌。

    在我现在的认知里,只有计算机(自动化)和心理(营销、管理)相关的专业才能做到万人敌。

    计算机通过机器来增强个人能力;心理学通过控制其他人来增强个人能力
    encro
        61
    encro  
       180 天前
    计算机的本质是工具,就如:

    农民手中的锄头,

    工人手中的扳手,

    士兵手中的枪!


    要很好掌握这个工具,我们得了解它的特点,并掌握他们的用法(软件操作和程序开发)。
    libook
        62
    libook  
       180 天前
    计算机科学不是自然科学,而是人类基于数学和物理学造出来的应用科学。计算机本身只是个工具,不同需求场景下,它的定位也不一样。

    题主不想谈论就业问题,但很多人学习它、很多学校教授它就是奔着就业的方向去的,所以不可能绕过就业问题。

    计算机知识是非常系统化的、环环相扣的,上层知识依赖底层知识的支撑。所以现在计算机专业课程都是从基础讲起,这些基础可能未来永远不会在职业中直接用到,但如果掌握了这些基础,就可以更容易理解上层的知识、解决上层问题。基础知识是相对比较稳定的,现行的教科书在知识大纲上问题不大,关键就是如何讲解得更加通俗易懂,以及如何培养兴趣的问题了。

    虽说如此,如果我是大学或职教的老师,我恨不得先从职业规划入手,然后再从规划反推需要学习哪些基础知识,虽然大部分可以和课本重叠,但可以让学生的目标更加明确。
    faust24601
        63
    faust24601  
       180 天前 via Android
    生产资料,人机对话的方法
    wanguorui123
        64
    wanguorui123  
       180 天前
    计算机的本质是数学
    marcong95
        65
    marcong95  
       180 天前
    你不想奔着就业去,那就应该来点计算机组成原理。但是如果你让非 CS 专业乃至基础教育阶段教这些东西,就会被部分人批判为应试教育。毕竟这年头,连教个语数英都会被批评,买菜用不上文言微积分 English 如何这般。更何况计算机组成原理
    kaddusabagei38
        66
    kaddusabagei38  
       180 天前
    太闲可以学点新知识扩充自己,而不是在这里扯这些形而上学的东西

    真要硬说的话,计算机本质是一种工具,学习计算机(比如编程)无非是在理解怎么更好的使用这个工具,或者是辅助自己做好工作(比如 CAD )而已。
    treizeor
        67
    treizeor  
       180 天前
    数学
    thtznet
        68
    thtznet  
       180 天前
    在当前需求下,对我来说,本质是:糊口。但凡糊不了口的,我都没兴趣深入。
    apake
        69
    apake  
       180 天前
    应该要区分计算与计算机. 计算, 或者说编程, 核心能力是良好的分解问题 和 抽象建模. 计算机, 非要说本质的话, 就是状态机.
    emperinter
        70
    emperinter  
       180 天前
    0 和 1
    whypro
        71
    whypro  
       180 天前
    计算机的内涵在计算机外面,计算机的外延在计算机里面。
    Me7426
        72
    Me7426  
       180 天前
    回想下中学时候你的计算机课叫什么,不出意外的话,应该叫《信息与技术》吧?
    dqzcwxb
        73
    dqzcwxb  
       180 天前
    人的本质是信息,模式是状态机
    以及万事万物的本质都是信息,也是状态机
    imv2er
        74
    imv2er  
       180 天前
    本质:
    数据+计算->数据结构+算法
    YaKeya
        75
    YaKeya  
       179 天前
    本质就是信息交流
    Pantheoon
        76
    Pantheoon  
       179 天前
    对于我们普通人来说,学习一个知识,应该搞懂是什么,再来弄懂为什么,知识的产生也是如此,先是在哪个场景下,遇到了什么问题,然后基于这个问题产生了什么学术,这个符合人的思考习惯.

    我上大学的时候,学习 c 的时候,一脸蒙蔽,这是个啥,学到数据结构更蒙蔽了,这又特么是个啥,到底能干啥,当然也有大佬能在不知道是啥的情况下,取得优异成绩也是很厉害的,我想我的老师,如果给我们上课的时候,多讲一些 c 语言能做啥事,我可能学习兴趣会更高点,不至于这个菜鸡样

    回到题主的问题,我们在学习什么?我觉得是代码先行,最好是代码的成果先行,也就是从做出一个小小的,能贴近使用的功能,一个小功能,里面可能会涉及到网络,算法,数据结构,这就把整个体系搭建起来了,会对技术产生一个很明确的认识.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1883 人在线   最高记录 6067   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 16:01 · PVG 00:01 · LAX 09:01 · JFK 12:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.