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

科技回声

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

GitHubTwitter

首页

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

资源链接

HackerNews API原版 HackerNewsNext.js

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

Bad programmer seeks advice

5 点作者 ngom超过 15 年前
I am not a very good programmer. I have done some basic noodling here and there. So I know how to code in a few languages to varying degrees of incompetence, I can fudge my way through. But I lack any real overview of the maths and algorithms inherent in the more interesting projects. I am not a mathematically minded person, more verbal, so I've always found it daunting. But I'd like to learn more. Is there anything you can recommend that I read?

2 条评论

ScottWhigham超过 15 年前
Couple of things:<p>1) You'll likely get better/more response if you prefix your post with "Ask HN: " (lots of folks have triggers for that type of thing)<p>2) You don't have to be a mathematician to be a good programmer. Tons of great programmers were not comp-sci majors so don't let that sort of thing get you down. If you've done "some basic noodling here and there... in a few languages" and you want to improve as a programmer, I'd advise you to:<p><pre><code> - Pick a language - Pick a pet project - Buy a few books or take a few online classes that are on your chosen language - Begin reading the book - Implement your project while reading the book - Find some sample apps written in your language and review how they did things differently - Finish your book and buy another book/class that is specific to your language - Pick a new pet project and implement it - Review some open source apps written in your language - Contribute to some open source apps </code></pre> At this point you're likely ready to spend a bunch of time reading non-domain specific books but, up until this point, the value you would receive from reading books not directly related to a specific language/task is debatable. Now that you've had some experience, I think this is a great time for books like:<p><pre><code> * The Pragmatic Programmer * Code Complete * Head First Design Patterns * The Mythical Man-Month * Design Patterns: Elements of Reusable Object-Oriented Software </code></pre> (Those are all titles of books BTW)<p>Next up: build a startup!<p>Notice there are no math books in my list. This is different from what others would propose but, given the scant description you wrote, I don't see any need for math except to satisfy a possible desire to learn.
评论 #796070 未加载
alaricsp超过 15 年前
The best introduction to real computer science that I know is the book "Structure and Interpretation of Computer Programs". It teaches programming in terms of Lisp, but don't be put off - it's just because Lisp is a good vehicle for exploring different approaches. The lessons therein have stuck with me no matter what language I'm using.<p>Beyond that sort of thing, you need to specialise in the kind of areas you want to work in - if you want to program to earn money, then learning SQL, HTML, and web app development in your favourite platform is a good idea. If you go for the Unix route, I'd recommend you learn Python before Perl/PHP, but then learn the latter two because there's money in it. If you go the Microsoft route, I'm sure there's plenty of good books on C# and ASP.net. Java's pretty useful, too.<p>It's a good idea to learn C, not so much to learn the language itself as to learn about the processor's memory model, which C somewhat ruthlessly exposes you to; if you master C, you'll indirectly learn how software performance works, in ways that'll indirectly help you write faster code in higher-level languages. And, of course, C is useful in its own right if you want to get into embedded, systems, or games programming.<p>Personally, I think C++ isn't a good language to get involved in; if you want to anyway, either because you disagree with me or because you're after a job doing C++, make sure you've read Structure and Interpretation of Computer Programs, played with C, and tried at least one object-oriented language first; C++ is complex, and having a strong background in the basics behind it will help you a lot; trying to dive straight in might lead to a rather painful learning experience.<p>Perhaps most importantly, find a programming project you are excited about, and do it. When you're done, you'll have realised you'll have made lots of mistakes - but you'll never make those mistakes again, and the next project you do (perhaps one you'll be paid for) will be a lot better. Practice makes perfect! And have fun!
评论 #796081 未加载