程序设计基础(C语言版)

我们学习的是程序设计,不是 C 语言

这是第一堂课,推上莫名其妙的吵架 gof 。

我以前面试的时候,喜欢问一个题,js 算不算面向对象语言?

有两类,一类是知道它的面向对象怪怪的,可能措辞不一定准确这没关系,但是能感觉到。或者我能和他聊到这些,能沟通能发现。另一类是背标准答案,但是没法沟通的。

从严谨的面向对象( c# 或 java )语言看,它不算。但是它具备面向对象的部分特性,可以实现面向对象。“它可能是基于面向对象”。

算不算到这里已经不重要了,语言的设计逻辑是关键。

设计程序处理某个问题,选用某种语言。设计模式是本源。gof 太久远,可以不应用,但是不能否定它。逻辑是相通的,比如共享模式,天天在用的对象池和虚拟滚动。

在今天 LLM 加持的编码环境下,可以限定设计结构让大模型分析推导。然后评估可行性,最后才编码。而不是一开始就输出,一边改一边试那个更好,那里错了都不知道。

今天的语言设计其实越来越趋向多范式。Rust 既不是传统意义上的经典 OO,也不是纯函数式;Go 表面上与 Java 背道而驰,但很多工程目标又殊途同归。它们是亲兄弟,只是当年黄色树林分出了两条路,它选择了“组合优于继承”。

编程模型也是如此。DDD 与面向对象并不冲突,它更像是在业务复杂度上的进一步抽象。

所谓设计模式、语言范式,都不该变成教条。习武之人,招式会变,兵器会变,但真正重要的还是内功心法。