我对编程的未来有一个理论。我怀疑我是第一个拥有它的人,但据我所知这不是该地区的主流思想,我想看看这是否对其他人有用。
我想关于“做某事的一种方法”的想法,我认为这是最著名的措辞,来自“ Python禅宗”
应该有一种-最好只有一种-显而易见的方法。
Perl有相反的座右铭:做到这一点的方法不止一种。我认为是“一种做事的方式”更好,就像我猜想是Python和Go的原则,还是Rust,JavaScript,Lisps等许多方式,都还不确定。
编程是关于数据结构及其操作方式的。很少有语言可以声称拥有一种存储方式。
我声称大多数简单的编程环境之所以简单,是因为它们的数据类型很简单,而不是因为它们的控制流或语句或表达式很简单。让我们来看看:
Excel电子表格支持工作表,列,行和单元格。而已。直到最近(2020年),细胞的代表能力还是极为有限,即使有了精美的新细胞,这些类型的细胞也仍然可以被挑选出来。 Excel公式可以很好地工作,并且编写得很好,因为数字列通常在任何类型的文档中都是相同的。
成功的可视化编程在数据大多是同质的受限环境中蓬勃发展。纯数据具有四种简单的“原子”。 Max / MSP还有更多,但仍然有限且不可扩展。
使R和Python成为成功的数据科学平台的原因不仅仅在于TensorFlow和ggplot,还在于将数据科学工具包的各个部分连接在一起的东西:数据框架。 Python生态系统远非完美,但事实是,存在复杂的数据类型可以处理各种研究数据输入和输入。输出,并且可以由多个程序包使用-熊猫可以与seaborn对话以快速生成图表-非常了不起。
相比之下,在许多系统中,通用数据类型是如此的低级,人们非常不愿意接受共享的定义,以至于每个“计算”问题都遇到同等或更大的“表示”问题。
要解析网页?网页是DOM吗?一个普通的嵌套对象?介于两者之间的某个地方,例如cheerio或jQuery包装器?
要操纵颜色吗?它是数组还是对象中的RGB三元组?还是它是帮助程序模块中的类的实例,还是十六进制字符串?
可视化编程或函数式编程投入了太多精力,因此我们可以“连接事物”,但花在这些事物上的时间却不多。因此,您所获得的是连接任何“兼容”部件的能力,但是对什么是兼容,那些类型是什么的定义不明确。
如果更简单的编程语言具有一流的表示,而不仅仅是字符串和数组,该怎么办?当然,这会使经验丰富的开发人员感到恼火,这些开发人员需要强大的功能并喜欢微型可扩展的系统。当开发人员想到高级类型系统时,他们会想到类似Haskell的可怕的强大基元来创建新类型,而不是生态系统支持的常见类型。
但是,如果目标是易于使用并赋予原本不会进行编程的人们以力量,那么具有很多假设的类型丰富的系统似乎是合乎逻辑的第一步。 而且不需要可视化编辑器或稀有编程语言的新方言。