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

科技回声

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

GitHubTwitter

首页

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

资源链接

HackerNews API原版 HackerNewsNext.js

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

Ask HN: Best way to learn computer/programming theory without college?

4 点作者 makufiru将近 10 年前
Having never done well in college, I did not complete my degree when I was there.<p>I&#x27;m curious about the best way that other people have found to learn theory or ideas that have made them way better programmers. Especially things they have done on their own time, or at least outside of college.<p>I&#x27;ve built complex systems and user interfaces, but I couldn&#x27;t tell you about quick-sort algorithms, or sieves, or the best way to build a fibonacci sequence; I wonder if my programming is objectively worse because of it.

5 条评论

duggieawesome将近 10 年前
There are a lot of MOOCs (Massive Open Online Courses) nowadays that offer CS theory. For example, Coursea has an algorithm class available (<a href="https:&#x2F;&#x2F;www.coursera.org&#x2F;course&#x2F;algs4partI" rel="nofollow">https:&#x2F;&#x2F;www.coursera.org&#x2F;course&#x2F;algs4partI</a>).<p>MIT also offers classes as well (<a href="http:&#x2F;&#x2F;ocw.mit.edu&#x2F;index.htm" rel="nofollow">http:&#x2F;&#x2F;ocw.mit.edu&#x2F;index.htm</a>).
评论 #10055982 未加载
smt88将近 10 年前
Computing theory is only going to make you &quot;way better&quot; if you&#x27;re doing lower-level stuff. It&#x27;ll still make you somewhat better with high-level languages, but those languages (and optimizations at the compiler level) will abstract the really complex theory away. Understanding memory is really important, though.<p>In general, the thing that&#x27;s made me a way better programmer is seeing how highly experienced programmers explain the way they organize their code. Even though I don&#x27;t practice functional programming, reading the reasoning behind it has been really helpful to me, and there are many principles from FP that make object-oriented code far better.<p>&gt; I&#x27;ve built complex systems and user interfaces, but I couldn&#x27;t tell you about quick-sort algorithms, or sieves, or the best way to build a fibonacci sequence; I wonder if my programming is objectively worse because of it.<p>It depends on what you&#x27;re doing. For the vast majority of people, especially those in the business world, the answer would be &quot;no&quot;. Many of those parts of programming (sorting, linked lists, random number generation, etc.) are provided by standard libraries or other programmers. You don&#x27;t want to constantly reinvent the wheel if someone is paying for your time.<p>If it&#x27;s something like cryptography, it&#x27;s a lot murkier of an issue. It&#x27;s really hard to evaluate a crypto package if you&#x27;re not an expert, and even the &quot;industry-standard&quot; packages are often found to have holes in them. I&#x27;m still not suggesting you write your own, but it&#x27;s always worthwhile to understand data security better.
brudgers将近 10 年前
<i>The Art of Computer Programming</i>.<p>Knuth coined the term &quot;computer science&quot;. I won&#x27;t claim it made be a better programmer, but it couldn&#x27;t have made me worse.
评论 #10057712 未加载
valhalla将近 10 年前
&quot;Learn Python the Hard Way&quot; is what I&#x27;m using now and it&#x27;s been pretty awesome at making me figure out where my scripts&#x2F;programs went wrong so I can fix them myself and learn from my mistakes. They also have a bunch of other languages such as Ruby if Python isn&#x27;t your thing.
epalmer将近 10 年前
In addition to the comments others have provided. Take a reasonable complex problem and solve it. Now refactor it. Not sure what refactoring is, read Refactoring: Improving the Design of Existing Code by Martin fowler.<p>Show your code to others and seek feedback. Always assume that your code can be improved.