TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Ask HN: project ideas for a noob

40 点作者 kunqiana大约 16 年前
Hi, I just learned programming for about a year. I am familiar with a few programming languages such as python, scheme and java. My experiences with them include 1 OO programming course using Java and 2 courses using scheme and python. I feel I want to advance working on some simple projects but not sure where to start. Ideally the problem is not too simple or too complex. I have been reading source codes on sourceforge but not many really suit me. (either uninteresting or complex) So no idea what I should work on. Could you please share your experience with me about your first major/minor programming project that made your friends say, "wow"?<p>PS, I prefer writing in python or scheme.

23 条评论

mahmud大约 16 年前
My first real programming project was a DOS TSR keylogger. When you start your programming journey in the computer underground: 1) you have no idea the magnitude of the problems being thrown around by your peers, everything is trivialized and you're expected to know a great deal of info about the inner workings of your programming languages and their execution model, application software, OS/kernel internals, compilers, network, hardware, file formats and .. <i>bugs</i> and 2) there is an absolute joy to everything you do; never underestimate the power of mischief as a great motivator.<p>I don't expect you to dawn a blackhat at this stage, you're probably too mature, and the scene is pretty much lame nowadays anyway. What you can do however is join a community that enjoys and fosters a healthy hacking attitude. Something very geeky and very focused, like the demo scene (if they're still as innovative as they used to be.) You need a group of <i>friends</i>, all of whom are hacking for fun and giving each other feedback. IRC is an excellent place to find such people. Something focused on a given subject and a given technology. Start with your favorite libraries and join their IRC channels. The Allegro game library scene was cool, write 2D games for fun. Once you master the basic usage of the library, you will see what more experienced people have done with it. There is a different, unique taste to seeing a master craftsman make something great out of the ordinary ("wow, he did that in 4k" or "wow, fake 3D".) This will motivate you to no end :-)<p>Take out the manual of your "battery included" language of choice (Python, PLT or Chicken Scheme) and step through the module list. Write small programs that use each module/library and pretty soon you will have tons of ideas. Just take a GUI library, a network library, a regex parser, a mime/XML/html parser, and an audio library; taken into any combination, you will have something that solves an interesting problem. Something as "big" as a web server can be written with just the system calls built into every unix :-)<p>Finding your own problems, to keep you busy, is also something you will eventually develop as you continue hacking.<p>P.S. DON'T start with a janitorial position cleaning up other people's code or doing manuals, as the "Hacker HOWTO" advocates. Fuck that, NIH and all, go out there and create your own bugs to fix. Have fun, eh? :-)
评论 #601630 未加载
评论 #601657 未加载
评论 #601675 未加载
评论 #601843 未加载
shizcakes大约 16 年前
Strongly recommending project euler.<p><a href="http://projecteuler.net/" rel="nofollow">http://projecteuler.net/</a><p>Start from problem 1 and work your way up - they get gradually harder to solve as complete more. They are simple yet require flexing your algorithm-development muscles, which also help you to think about coding in an "efficient enough" manner: some problems can be implemented in ways that take 10 hours to run, or .001 seconds.
评论 #601805 未加载
评论 #601719 未加载
showerst大约 16 年前
A few standard 'toy' learning projects come to mind:<p>Try building a client/server chat program, using TCP/IP, a mass-file Renamer, or mp3 tagger, including a GUI for your OS of choice.<p>In python, try building something using either google app engine, or implementing a full blog using django (with packages for all the useful features).<p>Build something that downloads stock data from yahoo or google, parses it, and charts it.<p>Most of those are more towards the 'trivial' end of the spectrum, but they'll make you familiar with the standard libraries, and the last 10% of 'polish' will sharpen your skills.
SwellJoe大约 16 年前
I'd recommend spending some time with other peoples code. Open Source provides mountains of great (and bad) examples. The only way you'll really learn to grok the difference is to spend time enhancing other peoples code. You get exposure to a lot more code that way, since you can't possibly write hundreds of thousands of lines of code by yourself in a short period of time...but you can learn to navigate projects of that magnitude in a few weeks, and learn a lot of what those kinds of projects have to teach you.<p>Pick a project that interests you and has a large/friendly community, and make a plugin or a patch for it. You'll learn a lot about working with other developers, and a lot about the ancillary tools that are needed to build big and useful software but are rarely taught in school.
silentbicycle大约 16 年前
What are your interests?<p>When I was learning to program as a kid (not counting Basic), I was really into text adventure games like this (<a href="http://www.rickadams.org/adventure/" rel="nofollow">http://www.rickadams.org/adventure/</a>). I wrote an interpreter for text game worlds. It wasn't that great (I was 12 and it was in C++), but I learned quite a bit, and it gave me confidence for other stuff.<p>If you like math puzzles, Project Euler (<a href="http://projecteuler.net/" rel="nofollow">http://projecteuler.net/</a>) is great. Python Challenge (<a href="http://www.pythonchallenge.com/" rel="nofollow">http://www.pythonchallenge.com/</a>) is a series of fun puzzles that will also lead you through its standard library.<p>But, really, go with your interests. If you like logic puzzles, or making music, or 3D game stuff, or MUDs, etc., just pick something and run with it. Also, feel free to start small, you can hit the ground running once you have the basics down.
johngunderman大约 16 年前
My first 'major' project was writing a Lisp interpreter from scratch. Looking back on it, my implementation was horrible, the design atrocious, and the extensibility null. However, I remember how AWESOME it was at the time to be able to run my code on my own interpreter. What mattered most about that project wasn't the program itself: it was what I learned in the process. I guess my point is, no matter how shitty your code is, you learned something from writing it. So don't wait for a 'firm foundation' to start hacking away, just dive in and feel free to screw up. Just don't screw up in the same way the next time you do it.
评论 #601807 未加载
andrewljohnson大约 16 年前
You should make a blog. It was my first project, and to this day i write my own blog software.<p>I just launched the latest incarnation as a Google App Engine blog using Django/Python: <a href="http://andrewljohnson.appspot.com" rel="nofollow">http://andrewljohnson.appspot.com</a>
grinich大约 16 年前
Find something that has a limited scope. ie: something that you /know/ you can do from start to end. A lot of things seem "too simple" but often, there are interesting ways to solve the problem which involve more complex thinking.
knowtheory大约 16 年前
Sadly i don't have time to write a fuller post on this, to my regret.<p>But i definitely agree with Paul Graham on this subject: <a href="http://www.paulgraham.com/ideas.html" rel="nofollow">http://www.paulgraham.com/ideas.html</a><p>If one pays attention carefully there are many opportunities for projects that present themselves weekly. Some of your ideas will be bad, some of them good. But just keep thinking of things that may be cool to work on.<p>I think the important part of finding ideas has nothing to do with programming. You should find a subject you're interested in and something that you think would be cool to accomplish to help others.
mnemonicsloth大约 16 年前
99 Lisp Problems:<p><a href="http://www.ic.unicamp.br/~meidanis/courses/mc336/2006s2/funcional/L-99_Ninety-Nine_Lisp_Problems.html" rel="nofollow">http://www.ic.unicamp.br/~meidanis/courses/mc336/2006s2/func...</a>
pookleblinky大约 16 年前
Try livecoding with Snd or CLM or Impromptu (or extending them). You'll get a sense for code structures and tweaking your dev environment, and produce really interesting things.
sown大约 16 年前
Are you familar with MUD/Mushes?<p>Try writing one. You'll learn about concurrency, networking, parsing (some mushes have a built-in scripting language) and you will end up writing a lot of code.
kunqiana大约 16 年前
Thank you all for the great comments
klahnako大约 16 年前
IMHO, it is hard to find a domain that is challenging, useful, and small. But a couple of examples listed above are pretty good: 1) Write your own web server, blog software, etc: By leveraging existing libraries (or not!) you can get a lot of effect for very few lines 2) Script your daily chores: It does not matter what language you write the “scripts” in. Choose your current favorite and get a feel for how you can interact with the OS
buugs大约 16 年前
If you like math or math problems or complicated problems that require some thought you should check out <a href="http://projecteuler.net/" rel="nofollow">http://projecteuler.net/</a> the first 30 problems don't really require a large amount of math knowledge and can be very interesting.<p>Edit: I saw you were going for projects maybe something using pythons cgi library on a web server to do interesting tasks would be nice.
paraschopra大约 16 年前
Actually, my first programming attempts started with extremely simple projects: BMI calculator, recipe generator, mathematics puzzles game, a simple assembly language implementation.<p>If you want to start with web, start coding a blog or a url shortner. If you want to have something more complex, start with existing web APIs and make a mashup!
zubin71大约 16 年前
after making a few API`s using java, after coding in c and cpp for about two years, i moved on to explore the capabilities of various other languages. i took me about 6 months; but it was well worth the time. I suggest you try out networking projects; maybe a chat client coupled with a file transfer mechanism; or maybe a P2P file sharing project. i don`t agree with the comment which says "mischief motivated you like none other". it is true that many are interested towards activities like circumventing security systems, but as long as you do not understand the fundamental concepts behind the working of a particular exploit or shellcode; you`ll be wasting your time and will remain a script-kiddie learning little or nothing.
dbul大约 16 年前
Be more observant in your daily routine. Analyze everything your friends and family say and don't overlook any problem they may have, because it could become your idea and something people want. Just ask questions and listen and something is bound to become salient.
amichail大约 16 年前
If you have no ideas, then maybe just try a small unoriginal project to improve your skills for now. For example, try building something for the Google App Engine in python.
zc大约 16 年前
Stop procrastinating. Just make something.
swolchok大约 16 年前
Wasn't this done over and over on Proggit?
zubin71大约 16 年前
the first two comments mentioned by mahmud are very interesting; real good advice for any programming beginner.
chaosmachine大约 16 年前
Write your own URL shortener ;)