我喜欢用似乎适合硬核程序员的语言进行编程。(我最喜欢的是Python和D。)MATLAB是为工程师而设计的,R是为统计学家设计的,看来这些语言是为那些不是硬核程序员并且不像硬核程序员那样思考的人设计的。我总是觉得它们使用起来有些尴尬,在某种程度上,我无法理解为什么。这是我设法确定的一些问题:
- (两者):在没有真正原语的情况下,极端强调向量和矩阵。
- (两者):基本字符串操作的难度。
- (两者):对基本数据结构(如哈希表和“实数”,即类型参数和可嵌套数组)的支持缺乏或尴尬。
- (两者):即使按照解释语言标准,它们也确实非常慢,除非您向后弯腰以对代码进行矢量化处理。
- (两者):它们似乎并非旨在与外界互动。例如,这两个程序都是相当庞大的程序,需要一些时间才能启动,并且似乎没有设计成使简单的文本过滤器程序易于编写。此外,缺乏良好的字符串处理能力使得文件I / O几乎不可能以任何非常标准的形式出现。
- (两者):面向对象似乎具有很强的固定感觉。是的,您可以做到,但是在C语言中,它比OO更加习惯。
- (两者):没有明显,简单的方法来获取引用类型。没有指针或类引用。例如,我不知道您如何使用这两种语言滚动自己的链接列表。
- (MATLAB):您不能将多个顶级函数放在一个文件中,因此建议使用很长的函数并进行剪切和粘贴编码。
- (MATLAB):整数显然不存在为一流的类型。
- (R):基本的内置数据结构似乎太高级了,文档却很少,并且鉴于我在类似但较低级别的数据结构上的经验,似乎从未达到我期望的效果。
- (R):该文档散布在各处,几乎无法浏览或搜索。就我所知,即使D通常因不良的文档而被淘汰,但仍然相当残破。
- (R):至少据我所知,没有好的IDE。同样,即使是D,这是一个社区规模较小的相当Alpha的语言,其效果也更好。
总的来说,如果存在足够全面的库,我还希望可以用通用语言将普通的旧库轻松替换为MATLAB和R。在更新的通用语言中尤其如此,其中包括许多面向库作者的功能。
为什么R和MATLAB在我看来如此奇怪?您是否注意到其他任何主要问题,可能会使这些语言对铁杆程序员变得陌生?当需要使用它们时,有哪些好的生存技巧?
编辑:从我得到的一些答案中我看到一个问题。当我分析数据时,我强烈希望拥有一个包含整个管道的脚本。这意味着需要使用通用语言。我讨厌不得不编写一个脚本来“清理”数据并将其吐出,然后再编写一个脚本以在完全不同的环境中将其读回,等等。我发现在某些工作中使用MATLAB / R和一个完全不同的语言具有完全不同的地址空间和思维方式,其他语言将成为巨大的摩擦源。此外,我知道存在胶合层,但是它们似乎总是非常复杂并且是摩擦的根源。