An IRC app probably would actually teach you several new things, most of which would be helpful later on, like standards, specs, networking, threading, etc. but it would take a lot more than a month.
What language(s) do you know now? If you know Java, and know how to do a GUI, then you could try writing a game. Tic-tac-toe would be fairly simple, you could do it in a month, and, to spice it up, have an AI play against you, or have human vs. human, a choice between the two.
That way, you'd learn about different data structures, enforcing game rules, at least some optimization, and, if done right, creating your own API, allowing a human to control via one set of input (the GUI) and the AI via another (decision making, no GUI)
I think that the most "complete" kind of software you can make, and learn a lot, is a game. Games use a lot of computer science areas, like network, storage, database, graphics, threads, math, physics, AI and so on. Even a simple network game will require you to cover many areas, so I think it's worth trying it.
Here's a bit of a zany one, but who knows: go functional! Maybe take something like Haskell and do up a quick project, maybe an interpreter for a simple language.
There are numerous tutorials and books online. Write Yourself a Scheme in 48 Hours is pretty efficient. Combine that with some lessons from Real World Haskell and I don't think learning an entirely new programming paradigm AND getting a useful program out of it in one month is impossible.
Advantages here? One, you'll learn a totally new way of programming, the functional style. A lot of advocates say it will really open your mind to new programming ideas, and I think Haskell definitely opened my eyes to some new concepts. Two, you'll learn a lot about lexing and parsing, and the general first steps into how a computer language works. Three, come on, how cool of a project is that! You write your own language and interpreter for it!
Once we had to do an application that allowed users to view short clips. Once that the clip has been played, the application displays a list of clips from which the viewers could choose (by voting through SMS) which clip to view next. We did the whole deal in Java. You might also want to include a database that stores clips and maybe even users and manage the database through Hibernate. We used SMS Lib to allow SMS capability to the application.
我们为大学新生编程课制作了“战舰”游戏。好处与 Slokun 提到的类似,但你真的可以在《战舰》中为 AI 疯狂。或者如果你想走 UI 路线,你也可以在这里花很多时间。从本质上讲,跟踪游戏细节实际上并不是那么困难的问题。
We did the game Battleship for a freshman college programming class. The benefits are similar to what Slokun mentioned, but you can really go crazy with AI in Battleship. Or if you want to go the UI route you could spend a lot of time here as well. And at a core, it's really not that difficult of a problem to keep track of game details.
Rather than do a small project from scratch, you might consider contributing a useful feature to some open source project. That way you won't be spending so much of your time on just building basic infrastructure.
Introducing the class to interesting public APIs (like having them create a twitter client or a weather app) would help them immensely in the real world.
Perhaps a mini database server. Key/value store, with threads and a network socket. There are a lot of interesting twists you can do here (caching, concurrency, how to store on disk, how to survive a crash). By keeping it key/value you're keeping the complexity relatively low.
虽然不像某些游戏创意那么令人兴奋,但您可以构建一些与当今 IT 世界高度相关的东西,它们会引导您学习有价值的东西,并且可以在不同程度上在时间范围内完成/您建议的语言。
简单消息代理(例如 Xml/B2B 采购订单交换)
简单消息总线(例如发布/订阅,可以使用它来发送 IRC 消息)
分布式存储(< em>例如缓存、哈希表、数据网格等),
“耐用”点对点队列
简单案例管理系统(例如 CRM)
Although not as excited as some of the game ideas, there are several things you could build that are highly relevant in todays IT world, would lead you to learn things that are valuable, and can be accomplished to varying degrees in the time-frame/Languages you suggested.
Simple Message Broker (Ex. Xml/B2B Purchase Order Exchange)
Simple Message Bus (Ex. Publish/Subcribe, could use this to send your IRC messages)
Distributed Store (Ex. Cache, Hashtable, Data-Grid, etc),
发布评论
评论(10)
IRC 应用程序实际上可能会教你一些新东西,其中大部分都会在以后有所帮助,例如标准、规范、网络、线程等,但这需要一个多月的时间。
您现在懂什么语言?如果您了解 Java,并且知道如何制作 GUI,那么您可以尝试编写游戏。井字游戏相当简单,你可以在一个月内完成,并且,为了增加趣味性,可以让人工智能与你对战,或者进行人类对人类,在两者之间进行选择。
这样,您就可以了解不同的数据结构,执行游戏规则,至少进行一些优化,如果做得好,还可以创建自己的 API,允许人类通过一组输入(GUI)进行控制,而人工智能则通过另一个(决策,无 GUI)
An IRC app probably would actually teach you several new things, most of which would be helpful later on, like standards, specs, networking, threading, etc. but it would take a lot more than a month.
What language(s) do you know now? If you know Java, and know how to do a GUI, then you could try writing a game. Tic-tac-toe would be fairly simple, you could do it in a month, and, to spice it up, have an AI play against you, or have human vs. human, a choice between the two.
That way, you'd learn about different data structures, enforcing game rules, at least some optimization, and, if done right, creating your own API, allowing a human to control via one set of input (the GUI) and the AI via another (decision making, no GUI)
我认为你可以制作并学到很多东西的最“完整”的软件就是游戏。游戏使用了很多计算机科学领域,如网络、存储、数据库、图形、线程、数学、物理、人工智能等。即使是一个简单的网络游戏也会需要你覆盖很多领域,所以我认为值得尝试一下。
I think that the most "complete" kind of software you can make, and learn a lot, is a game. Games use a lot of computer science areas, like network, storage, database, graphics, threads, math, physics, AI and so on. Even a simple network game will require you to cover many areas, so I think it's worth trying it.
这有点滑稽,但谁知道呢:实用!也许采用像 Haskell 这样的东西并做一个快速项目,也许是一个简单语言的解释器。
网上有大量教程和书籍。 在 48 小时内为自己编写一个方案非常高效。将其与 真实世界 Haskell 中的一些课程结合起来,我不认为学习全新的编程范例在一个月内获得一个有用的程序是不可能的。
优势在这里?第一,您将学习一种全新的编程方式,即函数式风格。许多拥护者表示,它确实会让你接受新的编程思想,我认为 Haskell 确实让我看到了一些新概念。第二,您将学到很多有关词法分析和解析的知识,以及了解计算机语言如何工作的一般第一步。三,来吧,这个项目多酷啊!您可以为其编写自己的语言和解释器!
Here's a bit of a zany one, but who knows: go functional! Maybe take something like Haskell and do up a quick project, maybe an interpreter for a simple language.
There are numerous tutorials and books online. Write Yourself a Scheme in 48 Hours is pretty efficient. Combine that with some lessons from Real World Haskell and I don't think learning an entirely new programming paradigm AND getting a useful program out of it in one month is impossible.
Advantages here? One, you'll learn a totally new way of programming, the functional style. A lot of advocates say it will really open your mind to new programming ideas, and I think Haskell definitely opened my eyes to some new concepts. Two, you'll learn a lot about lexing and parsing, and the general first steps into how a computer language works. Three, come on, how cool of a project is that! You write your own language and interpreter for it!
有一次我们必须做一个允许用户查看短片的应用程序。播放剪辑后,应用程序会显示剪辑列表,观众可以从中选择(通过短信投票)接下来要观看的剪辑。我们用 Java 完成了整个交易。您可能还希望包含一个存储剪辑甚至用户的数据库,并通过 Hibernate 管理数据库。我们使用 SMS Lib 来允许应用程序使用 SMS 功能。
Once we had to do an application that allowed users to view short clips. Once that the clip has been played, the application displays a list of clips from which the viewers could choose (by voting through SMS) which clip to view next. We did the whole deal in Java. You might also want to include a database that stores clips and maybe even users and manage the database through Hibernate. We used SMS Lib to allow SMS capability to the application.
我们为大学新生编程课制作了“战舰”游戏。好处与 Slokun 提到的类似,但你真的可以在《战舰》中为 AI 疯狂。或者如果你想走 UI 路线,你也可以在这里花很多时间。从本质上讲,跟踪游戏细节实际上并不是那么困难的问题。
We did the game Battleship for a freshman college programming class. The benefits are similar to what Slokun mentioned, but you can really go crazy with AI in Battleship. Or if you want to go the UI route you could spend a lot of time here as well. And at a core, it's really not that difficult of a problem to keep track of game details.
您可能会考虑为某些开源项目贡献一个有用的功能,而不是从头开始做一个小项目。这样您就不会花费太多时间来构建基本的基础设施。
Rather than do a small project from scratch, you might consider contributing a useful feature to some open source project. That way you won't be spending so much of your time on just building basic infrastructure.
跳棋可能很有趣,您可以向其中添加人工智能元素,因为它足够简单,可以制作完整的决策树。
Checkers might be fun and you could add in an AI element to it since it's simple enough to make a complete decision tree.
向班级介绍有趣的公共 API(例如让他们创建 Twitter 客户端或天气应用程序)将在现实世界中为他们提供巨大帮助。
Introducing the class to interesting public APIs (like having them create a twitter client or a weather app) would help them immensely in the real world.
也许是一个小型数据库服务器。键/值存储,带有线程和网络套接字。您可以在这里做很多有趣的事情(缓存、并发、如何在磁盘上存储、如何在崩溃时幸存)。通过保留它的键/值,您可以保持相对较低的复杂性。
Perhaps a mini database server. Key/value store, with threads and a network socket. There are a lot of interesting twists you can do here (caching, concurrency, how to store on disk, how to survive a crash). By keeping it key/value you're keeping the complexity relatively low.
虽然不像某些游戏创意那么令人兴奋,但您可以构建一些与当今 IT 世界高度相关的东西,它们会引导您学习有价值的东西,并且可以在不同程度上在时间范围内完成/您建议的语言。
Although not as excited as some of the game ideas, there are several things you could build that are highly relevant in todays IT world, would lead you to learn things that are valuable, and can be accomplished to varying degrees in the time-frame/Languages you suggested.