VB 文化与 C# 文化
本文描述了 VB 和 C# 的文化。
引言
有一篇旧文章声称描述了使用 C# 而非 VB 的好处。该文章声称是基于这两种语言的文化来讨论这个问题的。实际上,该文章完全没有描述每种语言的文化;它甚至没有给出“文化”一词的任何定义!文章花费了大量篇幅(其中包含许多错误信息)讲述每种语言的历史,最后却滑向了语法和语义的比较,给出了许多作者的个人观点而非客观结论。您可能不相信,但整篇文章中对语言文化的描述只有一两句话!!我不想在本文中讨论那篇文章粗糙的做法,因为已经有很多优秀的程序员做过了,例如, Giancarlo Aguilera 写的《VB 诽谤确实如此!》
https://codeproject.org.cn/Articles/10264/VB-Defamation-Indeed
我写这篇文章是因为——不幸的是——仍有现代链接引用那篇文章,仿佛它是关于 C# 和 VB 文化的神圣参考。我想清楚地解释每种语言的文化是什么,最后你会发现,不存在什么“更好的文化”,只有根据每个程序员和每个任务“偏好的文化”。
我们说的文化是什么意思?
文化,正如大多数人理解的那样,是一个社会所有成就的总和。然而,在编程语言中,我将文化定义为解决某些被编译器和开发工具鼓励或强制执行的习惯的成就。我选择这个定义,而不考虑每种语言开发的应用程序,因为,简单地说,VB.NET 和 C#.NET 在整体上非常等效;用其中一种语言可以完成的应用程序,另一种语言肯定也能完成。我将开发工具的影响包含在这个定义中,这一点非常重要;尽管它通常被高估了。事实上,一种糟糕的语言,如果配有出色的开发工具,其生产力可能远超一种优秀的语言但配有糟糕的开发工具(当然是在糟糕语言的限制范围内)。历史上就发生过一个清晰的例子;当比较 VB6 和 C++ 时。C++ 在代码层面比 VB6 强大得多,但 VB6 程序员可以在一分钟内绘制出在 C++ 中可能需要数小时才能绘制出的图形。C++ 的强大之处仅在于 VB6 无法完成某些任务时才显现出来。
Visual C#.NET 文化
为了理解 C# 的文化,我们必须审视它的发展历程。C# 是一种 C 风格的语言,是在 C++ 的基础上发展而来的。Java 也对它产生了一些影响。这些语言中的每一种都在编程界证明了自己的伟大。这里一个显而易见的问题是:如果 C++ 很棒,那么 C# 的出现还有什么意义呢?也就是说,为什么我们既有 Visual C#.NET 也有 Visual C++ .NET,考虑到它们都是 C 风格的?答案是 C++ 很棒,但 C++ 固有的语法和语义允许程序员犯许多编译器无法捕获的逻辑错误。从 C++ 的语法层面来看,代码可能是正确的,但它可能与程序员的想法不同。
C# 在设计时认真考虑了这一点。结果是 C# 是一种非常严格的语言(比 C++ 更严格),它禁止了许多可能导致不易察觉的逻辑错误的习惯。例如,C# 不允许:整数到布尔值的隐式转换、使用全局变量、除非代码块明确用“unsafe”关键字标记,否则使用指针,等等。尽管这种严格性会减慢开发过程,但它可能会减少调试和修复错误的时间。总之,由于模仿了 Visual Basic 的 IDE,C# 现在已经是一种 RAD 工具——这是 C# 从其他语言中学习的举措之一。
可以肯定地说,C# 从未获得 C++ 那样原始的强大能力,因为它缺少了许多赋予其强大功能的特性。例如,C# 中指针的使用非常有限,在 99% 的应用程序中,它们几乎没有用处——如果有的话;然而,C# 比 C++ 更容易学习和编程。与 VB 相比,C# 的能力略强于 VB,但这种能力在大多数类型的应用程序中并不明显。C# 仍然需要许多改进才能达到 VB 那样简单。简而言之,C# 在易用性和功能性方面是介于 C++ 和 VB.NET 之间的选择。世界各地的许多程序员都偏爱这种选择。
回到 C# 的文化,C# 编译器及其 IDE 提供了一个由特定文化指导的出色的开发工具。C# 编译器会告诉程序员:“嘿,程序员,请小心,慢慢来,我们不想花几个世纪来修复 bug!我不会让你做任何可疑的事情,如果你在使用“switch”时忘记了“break”关键字,我会用枕头狠狠地打你的头!” C# 文化总结如下:它是一个极其严格、谨慎、安全、清晰且非常一致的开发环境。
VB.NET 文化
现在,我们来谈谈 Visual Basic。Visual Basic 是一种主要基于 BASIC 语法的语言,BASIC 的字母是“Beginners All Symbolic Instruction Code”(初学者全符号指令代码)的首字母缩写。这个名字告诉我们,这种语言主要是为初学者设计的。因此,BASIC 最初是一种非常糟糕的语言。1991 年,微软发布了 Visual Basic 的第一个版本,然后 successive 地改进它,直到 1998 年发布 VB6。Visual Basic 的语法与 BASIC 的语法相似,但进行了一些必要的修改,以使其与“Visual”风格的编程兼容。当时,Visual Basic 仍然被认为是一种糟糕的语言。
随着时间的推移,一件有趣的事情震惊了世界——使用 Visual Basic 构建应用程序的速度非常快!许多初学者从 VB 开始编程,然后在实际工作中继续使用它,并赚了很多钱。在许多情况下,Visual Basic 程序员比其他语言的同行更具生产力。Visual Basic 证明了它不仅仅是一种初学者语言。随着时间的推移,它形成了自己独特的文化,与其他语言截然不同。该语言的弱点在 Visual Basic .NET 发布时都得到了弥补,使其成为一种一流的编程语言,但同时,它保持了将程序员生产力放在首位的精神。
Visual Basic 的生产力体现在不同的方面。例如,IDE 要求程序员只需键入最少的内容,IDE 就会自动完成代码。VB.NET 的智能感知是所有其他 .NET 产品中最出色的。Visual Basic 允许使用全局变量。它还允许将限定级别降低到类级别,最终减少了键入量,以及更多 Visual Basic 特有的方面。
Visual Basic 的文化之一是支持不同水平程序员的编程语言。无论开发者是初学者、中级还是专业人士,Visual Basic 都能满足他们的需求。关于 VB 的诽谤是说它是一种“脏”语言,因为它具有从双精度转换为整数的隐式转换等特性。然而,VB 允许这样做,但并不强制。它允许初学者进行这种数据转换,因为他们只想专注于程序的逻辑,而不是技术细节。例如,如果初学者键入“Label1.Text = V”,那么 VB 编译器就会理解程序员想要在 Label1 中显示 V 的值——无论 V 是字符串、整数、双精度,甚至是上面提到的那个枕头!值得一提的是,当程序员的意图模糊不清时,VB 不允许隐式转换;例如,即使“Option Strict”关闭,编译器也不允许将“Double”传递给一个应该接受“Integer”但又重载为接受“Single”的方法。VB 的隐式转换并非为了让初学者高兴而进行的随意行为,而是一个智能编译器的智能行为,它理解程序员的想法。总之,专业人士始终可以打开“Option Strict”,并在相对严格和清晰的环境中工作。
VB 编译器及其 IDE 的设计宗旨是帮助程序员尽快完成工作。VB 的文化是程序员应该主要关注应用程序的逻辑,而不是沉浸在技术细节的泥潭中。VB 编译器会这样告诉程序员:“嘿,程序员,小心点,我不会阻止你做任何让你感觉良好的事情,不要浪费时间;我们明天有东西要交付。” 总之,VB 文化是一种相对宽容的开发环境,允许程序员更快、更具生产力。
结论
我们已经看到,编程语言的文化不是一个好坏的问题;文化与语言的功能和效率无关。文化只是对开发环境中被鼓励有时也被强制执行的显著特征的描述。如果你对一个谨慎、严格、安全的开发环境感到舒适,那么 C# 会让你满意。然而,如果你喜欢快速的编程节奏,那么 VB 将是你的更好选择。需要注意的是,在选择编程语言时,还应考虑其他因素,如应用程序的类型、团队中其他成员使用的语言、产品交付的截止日期等等;然而,本文只讨论了文化。
最后,我希望本文有助于阐明 C# 和 VB 的文化。如果您觉得本文有任何错误,请告诉我,如果给出的理由充分,我可能会进行更正。总之,感谢您阅读本文。欢迎所有评论。