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

科技回声

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

GitHubTwitter

首页

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

资源链接

HackerNews API原版 HackerNewsNext.js

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

Ask HN: Books/courses for self-taught programmer

29 点作者 throwaway0071超过 7 年前
As a self-taught programmer, I realize I&#x27;ve many blind spots. I would like to get better well rounded when discussing software engineering topics.<p>Things like data structures but also modern software engineering practices.<p>Any books, courses or other resources I should focus on?

10 条评论

segmondy超过 7 年前
Take CS courses online or offline from universities that offer lectures for free&#x2F;pay online. If you are sufficiently motivated, you can work through the book by yourself and watch video. If not, the commitment of paying for a class and time boxed scheduled of a semester will hopefully push you.<p>Computer architecture course. - you need to understand the machine you are programming. Something like Meltdown&#x2F;Spectre will make sense to you.<p>Learn assembly programming &amp; C, does much for your confidence, you understand how your programs get turned to 10101<p>Take a programming language course, understand the difference programming languages. When people start talking about the new XYZ language, you can quickly evaluate it based on the paradigm and decide if you should get on it or not.<p>Operating System course. - The OS coordinates resource allocations to your program, you can begin to understand the discussion such as why fork() takes longer than a thread. You will make many wise decisions.<p>Algorithm &amp; Design - You can write better program.<p>Software Engineering - You can deliver better softwares.<p>Automata Theory - you can understand machines more, sometimes complex logic is best representated as a simple machine. This becomes useful if you are parsing (compiler, NLP, etc)<p>Distributed Systems - if you have ever uttered the word microservices or plan to.<p>The below 3 maths are the main maths of computer science, most cutting edge work today employ some or all of them.<p>Linear Algebra, Discrete Maths, Probs &amp; Statistics
评论 #16242570 未加载
评论 #16242668 未加载
baldfat超过 7 年前
I program in a lot of languages and feel like I am a master of none. At work I do R about everyday and I was feeling like I needed to get my stuff together. I ended up learning Racket and I wish I did it 10 years ago.<p>&quot;How to Design Programs&quot; <a href="http:&#x2F;&#x2F;www.htdp.org&#x2F;" rel="nofollow">http:&#x2F;&#x2F;www.htdp.org&#x2F;</a> is the best book I have ever read. It is very dense and I had to restart it a few times to get through it. This is not a knock on the material or process it is just how I process things. When I get stuck I go back and review everything again from page 1. I also went through &quot;Realm of Racket&quot; <a href="https:&#x2F;&#x2F;www.realmofracket.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.realmofracket.com&#x2F;</a> with my 11 year old daughter and that was also great. My programs never repeats itself and I can program a function quicker and more concise than ever before.
writesoftware超过 7 年前
You don&#x27;t mention which language you&#x27;re interested in, but if you use Go, check out my guide on Go Data Structures <a href="https:&#x2F;&#x2F;flaviocopes.com&#x2F;golang-data-structures&#x2F;" rel="nofollow">https:&#x2F;&#x2F;flaviocopes.com&#x2F;golang-data-structures&#x2F;</a><p>Even if you&#x27;re not into Go at all, I think the language is nice to beginners and the examples can be easily read.<p>I hope you&#x27;ll find it useful, it focuses more on the implementation than on the theory but it could be reference material along with more in-depth books.
tmaly超过 7 年前
Once you get over the syntax and basics of writing a program, I would recommend learning about writing maintainable software.<p>Kent Beck&#x27;s 4 rules of simple design is great. You can find the rules online.<p>Some great books are Clean Code, Pragmatic Programmer, Working Effectively with Legacy Code
lual超过 7 年前
- Computer Science, an Overview, by Brookshear: an excellent introduction to the whole field.<p>- Introduction to Algorithms, by Cormen, et all: a bible for computer science.<p>- Design Patterns, by the Gang of 4: well designed solutions for common problems, a classic.
afarrell超过 7 年前
If you&#x27;re in the camp of &quot;I worked through a good rails&#x2F;django&#x2F;nodejs&#x2F;php tutorial, but I don&#x27;t really understand SQL&quot;, you should go through this course: <a href="https:&#x2F;&#x2F;lagunita.stanford.edu&#x2F;courses&#x2F;Engineering&#x2F;db&#x2F;2014_1&#x2F;about" rel="nofollow">https:&#x2F;&#x2F;lagunita.stanford.edu&#x2F;courses&#x2F;Engineering&#x2F;db&#x2F;2014_1&#x2F;...</a><p>Skip XML but do not skip relational algebra.
pyeu超过 7 年前
List of Free Learning Resources<p><a href="https:&#x2F;&#x2F;github.com&#x2F;EbookFoundation&#x2F;free-programming-books&#x2F;blob&#x2F;master&#x2F;free-programming-books.md" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;EbookFoundation&#x2F;free-programming-books&#x2F;bl...</a>
git-pull超过 7 年前
Reading code is best. Downloading and building the code locally and running it (debugging snags along the way) is a helpful skill.<p>Like this:<p>Ever use tmux? What if the system your building tmux against doesn&#x27;t have queue.h (found in Free&#x2F;OpenBSD)?<p><a href="https:&#x2F;&#x2F;github.com&#x2F;tmux&#x2F;tmux&#x2F;blob&#x2F;master&#x2F;compat&#x2F;queue.h" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;tmux&#x2F;tmux&#x2F;blob&#x2F;master&#x2F;compat&#x2F;queue.h</a><p>How does tmux know to include queue.h? First, the build system detects if the system has the macros declared, <a href="https:&#x2F;&#x2F;github.com&#x2F;tmux&#x2F;tmux&#x2F;blob&#x2F;58e9d12&#x2F;configure.ac#L481" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;tmux&#x2F;tmux&#x2F;blob&#x2F;58e9d12&#x2F;configure.ac#L481</a> and defines a C Preprocessor Symbol HAVE_QUEUE_H. That then gets swept up in the build process: <a href="https:&#x2F;&#x2F;github.com&#x2F;tmux&#x2F;tmux&#x2F;blob&#x2F;a3967de&#x2F;compat.h#L82" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;tmux&#x2F;tmux&#x2F;blob&#x2F;a3967de&#x2F;compat.h#L82</a>.<p>Look at queue.h, nice, portable, solid macros for linked lists. It&#x27;s actually derived from BSD&#x27;s queue.h decades ago.<p>I like how FreeBSD&#x27;s fork of queue.h has a table of the macro&#x27;s features: <a href="https:&#x2F;&#x2F;github.com&#x2F;freebsd&#x2F;freebsd&#x2F;blob&#x2F;releng&#x2F;11.1&#x2F;sys&#x2F;sys&#x2F;queue.h#L77" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;freebsd&#x2F;freebsd&#x2F;blob&#x2F;releng&#x2F;11.1&#x2F;sys&#x2F;sys&#x2F;...</a><p>Here&#x27;s the linked list for Postgres, <a href="https:&#x2F;&#x2F;github.com&#x2F;postgres&#x2F;postgres&#x2F;blob&#x2F;master&#x2F;src&#x2F;include&#x2F;lib&#x2F;ilist.h" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;postgres&#x2F;postgres&#x2F;blob&#x2F;master&#x2F;src&#x2F;include...</a>.<p>Also, check out Postgres lexer and parser utilities: <a href="https:&#x2F;&#x2F;github.com&#x2F;postgres&#x2F;postgres&#x2F;blob&#x2F;master&#x2F;src&#x2F;backend&#x2F;parser&#x2F;scan.l" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;postgres&#x2F;postgres&#x2F;blob&#x2F;master&#x2F;src&#x2F;backend...</a> (for Flex) and <a href="https:&#x2F;&#x2F;github.com&#x2F;postgres&#x2F;postgres&#x2F;blob&#x2F;master&#x2F;src&#x2F;backend&#x2F;parser&#x2F;gram.y" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;postgres&#x2F;postgres&#x2F;blob&#x2F;master&#x2F;src&#x2F;backend...</a> (for BISON)<p>If you insist on an all-around programming book, <i>Code Complete</i> by Steve McConnell.
hackermailman超过 7 年前
Lot&#x27;s of these reading&#x2F;lecture lists around <a href="https:&#x2F;&#x2F;functionalcs.github.io&#x2F;curriculum&#x2F;" rel="nofollow">https:&#x2F;&#x2F;functionalcs.github.io&#x2F;curriculum&#x2F;</a>
book_mentioned超过 7 年前
<a href="https:&#x2F;&#x2F;bigmachine.io&#x2F;products&#x2F;the-imposters-handbook" rel="nofollow">https:&#x2F;&#x2F;bigmachine.io&#x2F;products&#x2F;the-imposters-handbook</a>