现有学校作业的更换项目

3
我有一个学校作业,需要编写一个针对特定简单语言的扫描器/词法分析器。这个扫描器必须使用C++编程。
自90年代以来,这种类型的作业一直在使用,虽然仍然是一个有效的练习,但我认为它有点过时和无聊。
我已经得到了许可来设计一个新的编程作业。它必须具有相同的难度,并且可以使用C++、Objective C或Java进行编程。
我应该朝着什么方向去,以达到相同的难度,但更加现代化和适用于现代计算机科学/生活呢?
谢谢。

2
这个作业是在哪门课程中布置的? - laura
3
在学校做无聊的练习非常重要,这样当你进入职场时就能学会编写枯燥的程序 :-) - Stephen C
1
听起来像是对你来说太难了,可能有点无聊 :-) - Martin York
我有一个很好的建议给你:为指定的语言编写词法分析器和语法分析器!我还想问一下,是什么让你认为有资格判断什么是“适用于现代计算机科学/生活”的东西。这是非常有用的知识。如果有任何计算机科学学校让学生避免这样的作业,我会非常担心。 - jalf
这是许多学生共同的观点。请阅读我的其他评论以了解原因。这个任务无法避免,但可以用难度相当的任务来替代。这就是我正在寻找的。 - bing
4个回答

9
这种类型的作业被认为有点陈旧和乏味。我很好奇:是谁认为这是过时的?你的教授?在解析社区中有知名人士吗?还是你自己?扫描器和解析器仍然与专业软件开发相关,并且更重要的是,与计算科学相关。如果您希望了解计算机,那么您应该了解扫描器和解析器。不过,如果您确信应该做其他任务,为什么不编写一个生成C++扫描器的工具呢?您可以提供一组定义语法标记的正则表达式作为输入,它将产生一个能够识别输入标记的C++程序。然后,您将永远不需要再编写扫描器了!

3
对于这个建议点赞。尽管对于像OP一样聪明的人来说,这几乎不会是一个挑战;-) - Stephen C
我并不觉得写扫描器有问题,它确实具有挑战性。问题在于其他学生觉得这很无聊(我也是)。这是一个四年级的作业,而在第二年就有许多更有趣的项目可以完成,并且涵盖了相同的概念。因此,像Stephen C所指出的那样,对于许多学生来说,进入第四年并完成这个任务是很无聊的。另外,请问你从哪里看到我认为扫描器和解析器不相关?事实上,这个任务与当前的项目和课程不匹配,它是过去留下的遗产。 - bing
如果你认为它们是相关的,那么你是在说“我想跳过相关知识,因为我觉得它很无聊”?也许你不应该学习计算机科学。 - jalf
@Daniel 好主意,就像简化版的Flex。 这可能是一个适合多个学期的学生小组完成的好项目。我正在寻找一个可以在一个学期内由单个人完成的项目。虽然我不确定你是否在讽刺我,但无论如何还是谢谢你。 - bing
我承认,我有点挖苦(同时也有点认真)。因为英语不是你的母语,所以我认为我应该承认这一点。听起来作业很无聊,因为对你和你的同学来说太容易了。因此,尝试一些更难的事情似乎是很自然的选择。 - Daniel Yankowsky
显示剩余2条评论

2
为什么你认为词法分析器/语法分析器不再重要了?我发现我每年都会写一些类似的内容。

1
作为一名软件工程师,我认为您在计算机科学课程期间编写的任何代码都可能是您此生最好的代码。一旦进入行业,您可能仅编写模块而不是整个程序。
相信我,一旦您进入这个行业并花费了一些时间,您就会想要编写那些编译器、汇编器和词法分析器。所以请不要错过机会。
我相信编写这些“无聊”的东西所面临的挑战是值得的,一旦您开始设计它们,您将会发现它们真正有趣。

1

编写扫描器/词法分析器是我最喜欢的任务之一。我认为这也是最相关的任务之一。这是一个现实世界中的问题。

我猜测,它不感觉现代化,是因为你正在扫描简单的编程语言。我个人会将简单的编程语言更换为像MarkdownTextile这样的东西。这两种语言都用于现代编程,并且将教授您类似的概念。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接