《代码的未来》笔记(1)

  工作着工作着就忘了去学习,读点书还是有好处的,至少可以提醒自己其实是很无知。另外,计算机的世界有太多太多的东西需要,如果不关注其实就是对自己的忽视。抠门的人还知道雁过拔毛,读个书不记点笔记岂不是很可惜?还是得抠一点。
  以下均为摘录,绝非原创。

  • 编程的本质是思考

    “人们到底想要什么?想要这些东西的本质又是什么?要实现这个目的严格来说需要怎样的操作步骤?”思考并解决这些问题,才是软件开发中最重要的工作。换句话说,编程的本质在于“思考”。

  • 创造世界的乐趣

    在编程的世界中,基本上没有现实世界中重力和因果关系这样的制约,如此自由的创造活动,可以说是绝无仅有的。能够按照自己的意愿来创造世界,这正是编程的最大魅力所在。

  • 极限未来预测

    ,“如果计算机的价格越来越便宜,那当它便宜到极致的时候会怎么样呢?”“如果我们能够买到超高性能的计算机会怎么样呢?”“如果计算机的存储容量增大到超乎想象的程度会怎么样呢?”“如果网络带宽变得非常大的话会怎么样呢?”

至少这个思考角度本身还是比较有意思的:计算机的价格足够便宜的时候,那么就能够在更多的地方用上(嵌入式);性能超高的时候如何充分利用性能。

  • 编程语言的进化方向

随着抽象化的不断深入,程序员即便不去关心内部的详细情况,也可以编写出程序。人类一次所能掌握的概念数量是有限的,有说法称,大部分人一次只能驾驭7±2个左右的概念。这样一来,如果能够让问题的处理方式更加抽象,也就可以解决更复杂的问题。

  • 未来的编程语言

(1)变化不大。编程语言的写法从20世纪80年代开始就几乎没有什么进化,今后即便出现新的写法,也只是现有写法的变形而已。(从发展上来看,是比较悲观的未来)
(2)使用编程语言来编程这个行为本身不存在了。人类可以通过和计算机对话(大概是用自然语言)来查询和处理信息。(类似《星际迷航》中的世界,对于编程语言家来说是比较失落的未来)
(3)发明了采用更高抽象度写法的编程语言。这种语言在现在很难想象,不过应该是比现在更加强调What,而对于如何解决问题的How部分的细节,则不再需要人类去过问。(难以预测的未来)

  • 20年后的编程语言

    20年后的语言,应该是在分布处理(多台计算机协作处理)和并行处理(多个CPU协作处理)功能上进行强化,使得开发者不需要特别花心思就能够使用这些功能。

  • DSL( Domain Specific Language)
    之前一直不太懂什么叫DSL,这里算是完成了一次比较完整地脑补。另外,scala其实很擅长做这个。

所谓DSL,是指利用为特定领域(Domain)所专门设计的词汇和语法,简化程序设计过程,提高生产效率的技术,同时也让非编程领域专家的人直接描述逻辑成为可能。DSL的优点是,可以直接使用其对象领域中的概念,集中描述“想要做到什么”(What)的部分,而不必对“如何做到”(How)进行描述。

  • DSL的优势

    DSL在几个方面上可以说掌握了提高生产效率的关键。DSL拥有为特定领域所设计的词汇,可以在高级层面上编写程序。由于不需要编写多余的部分,因此就节约了程序开发的时间。
    此外,使用DSL可以让程序在整体上以更简洁的形式进行表达,这意味着无论是写程序还是读程序的成本都降低了,同时也意味着对于非编程专家的一般人来说,编程的大门正向他们敞开。
    很多人觉得编程很难,但如果自己的专业领域中有适用的DSL的话,情况就不同了。

  • DSL的定义

    Programming is a process of designing DSL for your own application.

这句话很有意思,说编程就是一步把项目表达成DSL。


  • 元编程

元编程就是“用程序来编写程序”。
获取和变更程序本身信息的功能,被称为反射。
元编程技术对无法预先确定的操作进行了应对,这样一来,未来的可能性就不会被禁锢,体现了语言的灵活性。
程序是由数据结构和算法构成的,然而,如果环境允许程序本身作为数据结构来操作的话,那么元编程了就和面向一般数据结构的一般操作没什么两样了。作为像Lisp和Ruby这样允许对程序结构进行访问的语言来说,所谓元编程,实际上并不是什么特殊东西,而只不过是日常编程的一部分罢了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值