博客
关于我
编程语言圣经(卷一)
阅读量:568 次
发布时间:2019-03-11

本文共 1742 字,大约阅读时间需要 5 分钟。

编程的起源与数据结构


第0x00天:从二进制到变量的觉醒

在计算机编程的早期,程序员们必须记住内存中的具体地址才能执行读写操作。比如,要访问地址为0x3A6F270x3A6F39的值,然后将它们相加。这看似简单的操作却要求程序员对内存有深入的了解,极其痛苦。

人类终于迎来了解脱。上帝赐予了程序员变量这个神奇的存在。通过变量,我们可以用更易懂的方式表示内存中的值,而不必直接处理复杂的地址。这让编程变得更加简便。例如,直接使用int x;表示x是整数,不再需要记忆内存地址。然而,这只是编程语言的一种基本能力。

第0x01天:数据类型的诞生与应用

随着项目的复杂化,单一的整数类型已不再足够。程序需要处理多种数据类型。比如,内存中排列的二进制011001110011011001110001000010可以解释为不同的数据——整数、浮点数,甚至某种机器指令。如果没有明确的数据类型,这串二进制数据的意义就失去了。

多个部落对此产生争论。部落A认为这是一个整数1735159650,而部落B认为这可能是一个巨大的浮点数1.116533*10^24。部门C则认为这是一条机器指令。上帝告诉他们:信息的含义需要上下文补充,关键在于数据类型的正确使用。

编程语言迅速发展了许多基本数据类型,如bytebooleancharshort等,以满足不同的需求。这些数据类型让程序能够处理更丰富的数据类型结构。

第0x02天:指针与内存的自由

指针是程序员们向往的工具。它允许直接操作内存,仿佛回到以前的“自由境界”。

比如,通过int *x;,程序员可以进行内存操作,如x++x--。这看似 sessuali的操作,但却颇具危险性。如果不小心,程序可能会导致整个系统崩溃。因此,只少数编程语言支持指针操作,这对程序员而言是一种特殊的责任。

第0x03天:抽象数据类型与类的诞生

面对复杂的数据结构和操作,程序员需要一种更高级的工具。上帝推出了抽象数据类型,将数据和操作紧密结合在一起。

想象一个Stack数据结构:它不仅包含int[] values,还包含操作pushpop等。这些操作可以在不了解具体数据类型的情况下进行。这就是抽象数据类型的力量。然而,人类很快发现一个问题:每个Stack都需要为特定的数据类型定制,这实在是太麻烦了

上帝.antony<Integer union comや与多个部落,avage<LAW.T...

第0x04天:模板技术与语言的多样性

人类希望通过模板技术解决面板问题。例如,一个Stack类可以接受任意类型的数据,比如intStringStudent等。在运行时,Stack<Integer>会被编译成Stack<Object>,而Stack<String>则会成为Stack<String>。这种方式被称为“擦除法”(F rgbLaw)。

另一方面,C++采用了“膨胀法”:通过编译期生成特定的数据结构和函数。尽管技术不同,但最终目标一致——让程序员能够轻松定义和使用可自定义的数据结构。这让世界各地的程序员围坐在咖啡厅里,一边喝咖啡,一边争论哪种语言更优。

第0x05天:动态类型:代码的懒惰与灵活性

后来,一群程序员对类型声明提出了质疑:“为什么不运行时来决定变量的类型?这样一来,代码会更灵活,不用预先说明x是一个字符串而是整数。”

这引出了动态类型的概念。动态类型不再需要在编写代码时指定变量的具体类型,变量的类型由运行时确定。例如,在某种语言中,var x = 5可以让x变为整数,而x = "Hello World"则让x变为字符串。这种方式看起来更“懒惰”,但对于某些复杂的项目而言,这恰恰是种更高效的方式。

然而,静态类型的拥护者也有自己的理由:动态类型可能导致编译器无法查错,代码提示功能变得弱小,反馈速度降低。对于大型项目而言,这种灵活性可能意味着更多的工作量。

结论?编程世界没有绝对正确的答案,只有适合项目需求的选择。因为,无论是静态还是动态类型,程序员们都追求更高效、更灵活的工具。

后记:本文并未涉及实际操作代码示例,仅仅是对编程语言概念的探讨。如果需要具体了解某一环节的实现,可以参考《代码之髓》等经典书籍。

转载地址:http://imvvz.baihongyu.com/

你可能感兴趣的文章
Frame--WEB框架
查看>>
idea 在Debug 模式中运行语句中函数的方法
查看>>
eclipse“SVN检出”遇到问题 error getting dir list 的解决办法
查看>>
springboot2.1.1开启druid数据库连接池并开启监控
查看>>
vscode bash-4.3$ bash:git: command not found问题处理
查看>>
docker
查看>>
E: Sub-process /usr/bin/dpkg returned an error code (1)
查看>>
《朝花夕拾》金句摘抄(五)
查看>>
《朝花夕拾》金句摘抄(六)
查看>>
《金色梦乡》金句摘抄(六)
查看>>
mybatis+spring报错PropertyAccessException 1
查看>>
Boostrap技能点整理之【网格系统】
查看>>
hexo 报错 use_date_for_updated is deprecated...
查看>>
JavaScript实现鼠标放上去之后高亮显示且隔行换色
查看>>
java百钱白鸡的算法
查看>>
sql server链接查询
查看>>
又一大波笑到肾抽筋,笑出六块腹肌的段子
查看>>
新闻发布项目——业务逻辑层(UserService)
查看>>
新闻发布项目——后台JSP界面adminManage/modifyCategory.jsp
查看>>
常用数据库连接串与驱动总结
查看>>