为自己的个人学习经验创建脚本语言值得吗?
我问的原因是已经有那么多编程语言可用,我知道我的语言除了提供良好的学习体验外,不会有任何实际用途。但是,我确实发现仅尝试将脚本语言作为一种学习经验是有弊端的:要花费更多的时间和精力,我可能会做一些更具“生产力”的事情。
创建一种编程语言(包括编写其预期目的,语法,哲学,解释器等的草稿)是否值得花费时间,精力和学习经验?还是还有其他我可以从中受益的项目?
为自己的个人学习经验创建脚本语言值得吗?
我问的原因是已经有那么多编程语言可用,我知道我的语言除了提供良好的学习体验外,不会有任何实际用途。但是,我确实发现仅尝试将脚本语言作为一种学习经验是有弊端的:要花费更多的时间和精力,我可能会做一些更具“生产力”的事情。
创建一种编程语言(包括编写其预期目的,语法,哲学,解释器等的草稿)是否值得花费时间,精力和学习经验?还是还有其他我可以从中受益的项目?
Answers:
我认为这将是一个很好的学习经历,因为它将:
因此,我确实将其视为生产,有用且总体上“值得”。
现在,您可以使用不同的方法,具体取决于您计划在此上花费多少时间...:
我宁愿建议您从小处着手。据我所知,从来没有人像这样直接写过一种很棒的语言。你跌倒跌倒,失败,失败,失败。然后,您成功了,因为它有效,但仍然很糟糕,因此您需要重新开始。您添加了新功能后,它终于变得很酷,但是突然您意识到,有一个基本概念在开始时就搞砸了。因此,您再一次开始 ...
对我来说似乎很有教育意义。
继续(并与我们分享链接)。
但是,再次建议您从小处着手。如果有人说这将花费很多代码和时间,请不要担心。不一定,如果您不打算使用复杂的语言。据称,艾伦·凯(Alan Kay)和其他 施乐PARC工程师开发了适合放在一张纸上的Smalltalk的早期版本 ,以达到简洁的目的(有关PARC历史的详细信息,请阅读《施乐PARC:闪电经销商》)。似乎是一种好的,有教育性的且受限制的方法(只要它不牺牲可读性)。
您无需立即支持高级类型系统,高阶函数和42种不同范例的组合。它可能只是一种数学表达语言。
您可能还想看看用于从头开始编写语言的工具。您可以重新实现自己的所有功能,但是也许值得一试的是例如现有的词法分析器和解析器生成器。
显然,您可能想全面了解编译器的构造。
现在,如果我们将您的问题修改为“这将是您最有效地利用您的时间吗?” 这变成了一个完全不同的问题:)
您可以解决很多其他的学习项目,即使没有更好的训练,也可以同样很好地训练和展示您的技能。这取决于您想要的目标。
这需要一段时间。您打算维护它吗?
创建一种编程语言(包括编写其预期目的,语法,哲学,解释器等的草稿)是否值得花费时间,精力和学习经验?还是还有其他我可以从中受益的项目?
我假设您的财务状况不是无限的,所以我认为这是不值得的。您可以将时间花在其他可以赚钱的有用项目上。请记住,这可能不是您要找的答案,但是从逻辑的角度来看,我想说您的编程语言目前可能不是正确的项目。如果您是退休的计算机科学家,并且认为有必要为该行业做出贡献,我会考虑的。似乎您对编程有强烈的热情,这很棒。但是,构建一种全新的脚本语言吗?那将是一个非常漫长的项目。到那时,您可能已经构建了许多可以放入投资组合中的应用程序。我认为问题是:
我对你的建议是
不要重新发明轮子
这种惯用隐喻的灵感在于,车轮是人类创造力的原型,不仅由于其为用户提供的强大功能和灵活性,而且源于古老的起源,即使它不是全部, ,现代技术。由于它已经被发明,并且没有任何操作缺陷,因此对其进行重新尝试将是毫无意义的,也不会为该对象增加任何价值,并且将浪费时间,使研究人员的资源偏离了可能更有价值的目标他或她的技能可以大大提高。
您应该问自己:
我了解您希望拥有更多的学习经验,因此我个人认为,创建框架将为您提供更多的学习经验,并且您/您的团队/社区可以比创建脚本更晚地重用它。
这个xkcd漫画有点相关,只需将“标准”更改为“语言”即可: