程序人生 | 编程的上帝视角应该怎么去找

这篇具有很好参考价值的文章主要介绍了程序人生 | 编程的上帝视角应该怎么去找。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

程序人生 | 编程的上帝视角应该怎么去找

 

前言

📫作者简介:小明java问道之路,专注于Linux内核/汇编/HotSpot/C++/Java/源码/架构/算法

就职于大型金融公司后端高级工程师,擅长交易领域的高安全/可用/并发/性能的架构设计📫 

🏆 CSDN专家博主/Java优质创作者/CSDN内容合伙人、InfoQ签约作者 、阿里云专家/签约博主、华为云专家、51CTO专家/TOP红人 🏆

🔥如果此文还不错的话,还请👍关注、点赞、收藏三连支持👍一下博主~


目录

本文导读

一、编程的上帝视角

二、编程 Root 是什么

三、找到 Root——系统调用

四、Root 的扩展和运用


本文导读

本文通过抛出一个编程的上帝视角问题,我们了解什么是编程的上帝视角,编程如何学习以及编程的root是什么,找到root之后,我们有如何利用上帝视角去解决编程中的推理。

一、编程的上帝视角

上帝视角乃是叙述视角中,第三人称叙述者如同无所不知的上帝,能够以非现实的方式不受限制的描述任何事物,操控者一切,监视着一切,想没想过,如果你打开了编程世界的上帝视角,会干嘛?

这将意味着:

1、学习将不区分语言
2、遇到问题快速定位
3、不再纠结于如何学习
4、对任何新技术,只要看一下架构和功能,马上能猜(推理)出底层实现原理
5、抓住语言共同点学习

从底向上学习:操作系统->计算机组成->计算机网络->汇编与C/C++语言 ->数据结构算法->其他高级语言 (Java、Python、Go…),刨根问底,从源码论证,去除不必要的争论与错误,对计算机思维模式进行训练。

程序人生 | 编程的上帝视角应该怎么去找
上帝视角

二、编程 Root 是什么

我们需要找到一个 Root 点,然后往下对比学习分析,扩展知识脉络。那么我们先来定义下本文要探究的 Root是什么?

既然我们需要打开混沌视角,那么必然得把多个语言进行融合分析,不过我们先来基于已经知道的知识来进行推理:

1、计算机基础硬件:CPU、内存、硬盘(计算机组成原理、计算机体系结构
2、程序员直接通过命令或者鼠标、键盘外设来跟操作系统交流,操作系统来调度硬件完成操作(操作系统、计算机体系结构
3、我们的编程语言自然也是通过某种方式来跟操作系统进行沟通(操作系统编译原理、汇编语言
4、而如果是多个机器进行沟通,那么我们需要在硬件上支持网卡,操作系统上支持网络栈(操作系统计算机网络

程序人生 | 编程的上帝视角应该怎么去找
Java知识体系架构图

三、找到 Root——系统调用

通过第二章我们得到了一个结论,一切事情由操作系统来完成。

操作系统和硬件将用户所处的环境分为,用户空间和内核空间,不过不懂也没关系。我们可以想想你在网站中编写的Controller,然后通过浏览器输入地址,然后就可以通过Http协议访问这个Controller(SpringMVC),从而获取到返回结果。

那么读者这里可以将操作系统提供的这些功能接口想象为Controller,而我们所需要做的就是通过编程语言去调用这些接口完成需要的功能。在上面我们提到了,通过Http协议来调用,那么我们与系统调用之间,是不是也需要定义一个协议来完成操作

程序人生 | 编程的上帝视角应该怎么去找
程序、操作系统、计算机的关系

这就是系统调用,我们需要使用操作系统提供的方法来完成参数传递到操作系统,从操作系统中获取到结果。所以对于Http协议来说只不过是通过TCP/IP协议栈来完成调用,而系统调用来操作系统是单机上完成调用。这时我们找到了 Root,所有编程语言都会使用系统调用,来告诉操作系统需要完成的动作和获取结果。

四、Root 的扩展和运用

1、在计算机中保存计算数据的地方就是内存,一个内存基础单元为1byte = 8bit (位) 【存放数据的盒子,最小就是1byte ,不能再小了,比如:没有1bit的盒子,最小给的盒子就是1byte】编程语言需要提供些什么呢,操作这些不同大小盒子的东西,那是什么?基础数据类型

2、基础数据类型让我们可以从操作系统中获取到给定规格大小的盒子,而如果我们需要获取不属于这些规格的盒子呢?我们就需要:分配这些盒子的功能

3、如果我们只分配盒子,不释放,那么显然最终盒子用尽,导致系统奔溃,那么我们需要归还这些盒子,那么这时我们有两种方法:由某个东西帮我们自动归还、通过编程方式手动归还

4、在提供了这些基本操作后,我们考虑下,需要用户直接按照协议来直接操作系统调用么?那必然不是,我们需要在编程语言中提供给用户便捷的使用方法

程序人生 | 编程的上帝视角应该怎么去找
最受欢迎的编程语言

通过以上分析我们可以得出以下编程语言需要提供的功能结论

1、封装系统调用方便用户调用(线程库、IO库、 图形库、网络编程库)
2、提供基础数据类型来使用规格化的内存(堆、栈、方法区…)
3、提供内存分配和释放的手段
4、提供基础算法与数据结构(数组、链表、队列、栈、树)
5、按照编程语言的特性,提供面向对象的支持(抽象、继承、多态)

当读者掌握到以上的内容后,恭喜已经打开了编程世界的上帝视角。文章来源地址https://www.toymoban.com/news/detail-423392.html

到了这里,关于程序人生 | 编程的上帝视角应该怎么去找的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 雷军:我的程序人生路

    今天有朋友发给我一篇我在20年前在BBS上写的帖子。那还是1996年,我们通过电话线拨号连接到西点BBS上飙帖子玩的年代。那是一个互联网混沌初开的年代,那是一个BBS和Email几乎主宰了全部互联网的年代,那是一个青春的理想和热血沸腾的年代。 我是一个程序员,一个软件工

    2024年02月04日
    浏览(81)
  • 哈工大CSAPP程序人生大作业

    正在上传…重新上传取消 计算机系统 大作业 题     目   程序人生 -Hello’s P2P  专       业    计算机科学与技术        学    号   2021110991             班    级      2103101             学       生         安心           指 导 教 师    

    2023年04月24日
    浏览(72)
  • 程序人生——Java数组和集合使用建议(2)

    程序人生——Java数组和集合使用建议(2) 需求:要删除一个ArrayList中的20-30范围内的元素;将原列表转换为一个可变列表,然后使用subList获取到原列表20到30范围内的一个视图(View),然后清空该视图内的元素,即可在原列表中删除20到30范围内的元素 建议72:生成子列表后

    2024年03月19日
    浏览(49)
  • 【程序人生】上海城市开发者社区小聚有感

    📫作者简介: 小明java问道之路 , 2022年度博客之星全国TOP3 ,专注于后端、中间件、计算机底层、架构设计演进与稳定性建设优化,文章内容兼具广度、深度、大厂技术方案,对待技术喜欢推理加验证,就职于知名金融公司后端高级工程师。          📫 热衷分享,喜欢原

    2024年02月06日
    浏览(67)
  • 【程序人生】如何在工作中保持稳定的情绪?

    在工作中保持稳定的情绪是现代生活中一个备受关注的话题。随着职场压力和工作挑战的增加,我们常常发现自己情绪波动不定,甚至受到负面情绪的困扰。然而,保持稳定的情绪对于我们的工作效率、人际关系和整体幸福感都至关重要。 无论你是一位职场新人还是一位资深

    2024年02月15日
    浏览(46)
  • C罗老矣,我的程序人生还有多远

    ☆ 随着12月11号摩洛哥1-0葡萄牙比赛的结束,不仅说明葡萄牙对要结束本届卡塔尔世界杯了,就连C罗此生的世界杯之旅也将画上句号了。 ☆ 37岁的球星本该是人生最璀璨的阶段,但在足球生涯中,这已经是大龄了。不禁让我想到,身为开发的我,也大概类似吧。   目录  1、

    2024年01月16日
    浏览(52)
  • 【程序人生】还记得当初自己为什么选择计算机?

            还记得人生中第一次接触计算机编程是在高中,第一门编程语言是Python(很可惜由于条件限制的原因,当时没能坚持学下去......现在想来有点后悔,没能坚持,唉......)。但是,错过的就错过了,把握当前才是正确的选择。努力最好的时机永远是在过去,其次就在当

    2024年02月04日
    浏览(64)
  • 《人生苦短,我学Python》——第一个python程序

    Hello!朋友们大家好,从今天开始,我们将学习 Python 的相关内容。 首先,让我们来思考一个问题,编程是什么? 编程是人类与电脑沟通的过程,可以告诉电脑做什么以及怎么做。人类用编程构建数字世界,比如网站、App、办公软件等等。 世界上有很多种编程语言,比如C,

    2024年02月11日
    浏览(45)
  • 人工智能AI时代:全栈程序员的人生规划

    博主 默语带您 Go to New World. ✍ 个人主页—— 默语 的博客👦🏻 《java 面试题大全》 🍩惟余辈才疏学浅,临摹之作或有不妥之处,还请读者海涵指正。☕🍭 《MYSQL从入门到精通》数据库是开发者必会基础之一~ 🪁 吾期望此文有资助于尔,即使粗浅难及深广,亦备添少许微薄

    2024年02月11日
    浏览(85)
  • 程序人生 | 与足球共舞的火柴人(致敬格拉利什,赋予足球更深的意义)

    个人简介 👀 个人主页: 前端杂货铺 🙋‍♂️ 学习方向: 主攻前端方向,也会涉及到服务端 📃 个人状态: 在校大学生一枚,已拿多个前端 offer(秋招) 🚀 未来打算: 为中国的工业软件事业效力n年 🥇 推荐学习:🍍前端面试宝典 🍉Vue2 🍋Vue3 🍓Vue2Vue3项目实战 🥝

    2024年02月02日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包