2010-01-18 95 views
3

我有一个学校作业,其中包括为指定的简单语言编写扫描仪/词法分析器。扫描仪必须用C++编程。现有学校作业的替换项目

这种类型的任务自90年代以来一直使用,虽然仍然是一个有效的excersise,我认为它有点过时和有点无聊。

我已获得许可提出新的编程任务。它必须有同样的难度,它可以在C++,Objective C或Java中使用。

我该走的是什么方向,有相同的难度,但更现代一点,适用于现代CS /生活。

谢谢

+2

这个作业的课程名称是什么? – laura 2010-01-18 13:35:15

+3

在学校做无聊练习是至关重要的,这样你就可以学习编写无聊的程序,当你进入劳动力队伍时:-) – 2010-01-18 14:17:27

+1

听起来像无聊的手段,以帮助你:-) – 2010-01-18 17:45:40

回答

9

这种类型的任务...被认为是有点过时和有点无聊。

我很好奇:谁认为这个陈旧?你的教授?有人在解析社区中显着?或者你?

扫描仪和解析器仍然与专业软件开发相关,更重要的是与计算科学相关。如果你想了解电脑,那么你应该了解扫描仪和解析器。如果你确信你应该做一些其他的任务,为什么不写一个工具来生成C++中的扫描器呢?您可以提供一组正则表达式来定义语法的标记,它可以提供一个C++程序来识别输入标记。然后,你永远不需要再次写一个扫描仪!

+3

对于该建议+1。虽然对于像OP这样聪明的人来说,这不会是一个挑战;-) – 2010-01-18 15:47:25

+0

这不是我遇到的问题,编写扫描仪绝对是一个挑战。问题是其他学生发现它很无聊(我会)。这是第四年的任务,第二年有一些项目,这些项目更有趣并且涵盖相同的概念。 即将进入第四年,如斯蒂芬C恰当地注意到的那样,对于许多学生来说这样做是无聊的。 另外,你在哪里阅读,我认为扫描仪和解析器是不相关的? 事实是,这个任务不符合当前的项目和类,这是一个过去的遗留问题。 – bing 2010-01-18 17:23:12

+0

所以,如果你认为他们是相关的,你会说“我想跳过相关知识,因为我觉得它很无聊”?也许你不应该再学习CS。 – jalf 2010-01-18 17:59:57

2

为什么你认为Lexers/Parsers不再相关?我发现我至少每年都会按照这些原则写一些内容。

1

作为一名软件工程师,我会说你在CS课程中编写的任何代码都是你生活中可能编写的最好的代码。一旦你进入这个行业,你可能只会写模块而不是整个东西。

相信我。一旦你进入这个行业并在这里待了一段时间,你只需要编写这些编译器,汇编器,词法分析器。所以请不要错过这个机会。

我相信在编写这些“无聊”的东西时遇到的挑战是值得的,一旦你开始设计这些东西,你会发现它们真的很有趣。

1

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

我的猜测是,它并不觉得现代,因为你正在扫描的简单编程语言。我个人会更换简单的编程语言,如MarkdownTextile。这两个都用于现代编程,并会教你类似的概念。