我讨厌“我讨厌某种语言的事情”列表中的五件事?:D
5-画一个橘红色并不意味着它是一个苹果。
设计语言时,设计师通常会记住它的用途。将它用于完全不同的东西可以起作用,但是抱怨它不只是愚蠢的。以Python为例。我确定有人或某天某人会创建实用程序来从Python代码创建exe。为什么上帝的地球,你会想这样做?这会很整洁-不要误会我的意思-但这没有用。因此,不要再抱怨了!
一个设计良好的项目可能包含多种语言的代码。这并不是说您不能只用一种语言来完成一个项目。无论您使用哪种语言,某些项目都可能在能力范围之内。
4-你站在木腿上吗?
该平台可能会对语言的功能产生很大影响。如今,垃圾收集器甚至是帕斯卡早日尝试进行“垃圾收集”,都可以帮助减少内存(可能会分配更多的内存?)。计算机速度更快,因此,当然,我们期望更多的语言支持。坦率地说,我们可能应该这样做。但是,为使编译器创建哈希表或字符串或其他各种概念的便利性,需要付出巨大的代价。这些东西可能不会继承到使用它们的平台。要说它们很容易包含在语言中,只是告诉我您可能没有立场。
3-真的是谁的错?
虫子。你懂。我喜欢虫子。为什么我喜欢虫子。因为这意味着我可以继续工作。没有错误,将有许多封闭的比萨店。但是,用户讨厌错误。但是这里有点冷水飞溅。每个错误都是程序员的错。不是语言的。具有如此严格的语法的语言将大大减少可能产生的错误数量,这将是一种完全无用的语言。一方面可以算出它的能力。您想要灵活性还是力量?您有错误。为什么?因为你不完美,并且会犯错误。在C中举一个非常明显的例子:
int a[10];
for (int idx = 0; idx < 15; idx++) a[idx] = 10;
我们都知道会发生什么。但是,也许我们中的一些人没有意识到的是……该功能可能非常有益。取决于您在做什么。缓冲区溢出是该功能的成本。上面的代码。如果我真的公开发布了。再说一次..和我一起说..“我的错”。不是C允许我这样做。
2-我们不应该将其放入回收站吗?
用我们不了解的语言来指出功能很容易,因为我们不经常使用它并称其为愚蠢的。抱怨它在那里等等。后藤总是招待我。人们总是抱怨goto是一种语言。但是我敢打赌,您的上一个程序包含了goto类型。如果您曾经使用过休息或继续,则使用过goto。就是这样 当然,这是一个“安全的” goto,但事实就是如此。后藤有其用途。是使用诸如“ continue”还是“ break”之类的“隐式” goto还是显式gotos(对于任何语言都使用实际的关键字“ goto”)。并不是说语言开发人员是完美无缺的,而是通常……如果自从该时间的黎明起就存在功能。这方面可能是该语言的定义质量。意思是.. 被使用,并且可能由于向后兼容性而没有使用。今天正在使用。如5分钟前。并正确使用。好吧..可以说有人也在不正确地使用它,但这与我列表中的#3有关。
1.-一切都是对象。
好的,这真的是#2的子集。但这是迄今为止我在仇恨清单中看到的最烦人的投诉。并非所有事物都是对象。有很多不属于或需要成为对象的概念。把东西放到不属于他们的地方是很丑陋的,并且会降低程序的效率。当然。取决于语言的可能不多。这也与#5有关。这意味着...是的。全球都可以。附加到静态方法的函数是可以的。将OO编程与全局功能结合在一起是可以的。现在..这并不意味着我们也应该全力以赴,并从对象模型中“释放”我们的代码。设计一段代码或整个项目时,幕后发生的事情应该放在一起时考虑。不仅是该概念存在的地方,还有许多其他因素。如果无用,为什么要在类或命名空间概念中包装全局函数呢?取静态成员变量。这让我感到非常有趣,因为..当然,取决于语言和实现,但总的来说,您只是声明了一个全局变量。是的,出于某些原因将这些非OO概念包装在OO包装器中。当然之一就是自我记录代码。那很有意义。所以..就像我说的。不要出去“释放”您的代码。但是,任何好的现代语言都将在OO建模之外具有全局概念。是的,我要特别指出的是,没有全局概念的OO编程语言很可能存在严重的设计缺陷。再一次.. 取决于语言的意图和设计,因此我没有尝试选择任何特定的语言,并且这里有太多的内容需要分析。任何人,请考虑代码应该存放在哪儿并且是最有效的。在不增加功能或支持的情况下增加闪光点只会使键盘磨损更快。它对任何人都没有好处。好吧..除非您喜欢那个可能错误地教您所有事物都是对象的人的布朗尼蛋糕。
简而言之,编程不仅是无意间敲击键盘。任何项目都有很多设计注意事项。我知道这是陈词滥调,但您必须从各个角度审视它。即使使用当今的类型安全语言。您不仅会删除代码并期望它能正常工作。当然可以,但是可能不是正确的方法。总体而言,选择最适合特定工作和环境的语言和格式。但是没有一种语言能够消除其背后的思想。如果您不考虑..,则只需输入。