我从11岁起就开始编程了。年仅18岁,那就是七年的经验(哇!)。然而,有一件事一直困扰着我,那就是C编程语言,它更大,更丑,兄弟:C++。
现在不要误会我的意思-语言本身并没有那么糟糕(至少在C语言中是这样)-我的问题更多地存在于周围的生态系统中。
最近,我一直在尝试在Rust中开始图形编程。在经历了许多试验、痛苦和挫折之后,我决定为它卷起我自己的OpenGL包装器。我已经使用Rust的FFI将一个C程序移植到了Rust(总体来说,这是一个相当不错的体验),所以我决定做同样的事情。
我兴奋地打开了Windows10笔记本电脑上的文件管理器(我发誓这是相关的),并为我辉煌的C项目创建了一个新文件夹。
“等等,”我心想,“我需要一个编译器!”
我上网,几次搜索后,我的系统上安装了MinGW和GCC。下一个?嗯,我需要一个OpenGL SDK和一个上下文提供程序。后一个决定很容易-GLFW。我以前在其他语言中使用过它,这是我喜欢的东西。对于sdk,我选择了Glew,因为…。嗯,我不知道。它就在那里。
于是,我抽出VS代码,开始编程。这里调用几个GLFW,那里调用一个OpenGL,然后砰!我有窗户的密码。
接下来,我构建一个简单的批处理脚本来自动编译和运行我的代码,然后执行它。
“哦?”我心里想。“您找不到我正在使用的每个GLFW函数的实现吗?或者OpenGL调用?该死的。“。
自然,我的第一反应是Google,于是我发现我需要链接适当的库(.dll或.a文件),我已经在这么做了。显然,这不是解决之道。再找一找,我发现这可能是我给GCC的论据的顺序。因此,我重新排序了我的论点(尽管它们已经是“正确的”顺序),瞧!什么都没变。同样的错误。同样的根本性问题。
更多的搜索让我越来越深地陷入了一个兔子洞,里面总是有如此具体的问题和解决方案,但却没有解决任何问题。
最后,我意识到:大多数人有问题都是在Windows机上,因为,出于我不知道或不理解的原因,C++就是…。不想工作吗?
您可能会认为,如果您将一种有近50年历史的编程语言和最流行的操作系统放在一起,就会得到不错的工具。
这就是为什么,归根结底,我真的、真的、真的不喜欢C。做任何事情都很麻烦。将此过程与铁锈进行比较:想要使用OpenGL吗?好的,这里有一个您可以使用的库的目录。选择一个,输入一个命令,然后bada bing,bada bog,你就得到了OpenGL支持。这甚至也不是什么新奇的想法--几乎可以用任何现代语言来实现。那么,为什么没有人决定为C做这件事呢?
P.S.CMake不算什么,因为1)在Windows上使用它很痛苦,2)在其他地方使用它也很痛苦。