4 ms·
Reference implementations of medium sized applications are incredibly useful for leveling up as a programmer. While there are many large successful open source
by Dangeranger 10y ago
Reference implementations of medium sized applications are incredibly useful for leveling up as a programmer. While there are many large successful open source applications, many are overwhelming to read and learn from.
Having something that outlines the key features and components and which ignores the important but complicated edge cases assists in keeping the attention focused.
Now if there are annotation within the source code, that would be truely incredible.
- spooky_action 10y agoDo you have anything similar that you would recommend?
- gingerbread-man 10y agoXv6 is a pedagogical implementation of UNIX v6 that MIT created for an operating systems course. https://pdos.csail.mit.edu/6.828/2012/xv6.html https://pdos.csail.mit.edu/6.828/2012/xv6.html
- rjammala 10y agohttp://www.buildyourownlisp.com/contents http://www.buildyourownlisp.com/contents
- jnordwick 10y agoMinix (mini Unix) is a teaching operating system that goes with the well known os book "Operating Systems Design and Implementation". We used it at Cal. Very fun.
- jdc0589 10y agowas about to post a link. Minix is great.
- drworm 10y agoThis comes to mind: https://cheatdeath.github.io/research-bittorrent-doc/ https://cheatdeath.github.io/research-bittorrent-doc/
- random_gui2 10y agoDo you know a good example which implements a GUI, e.g. a drawing program or a graphical editor?
- satysin 10y agoYou could check out http://www.catch22.net/tuts/neatpad http://www.catch22.net/tuts/neatpad It is Windows specific but very informative.
- mrkgnao 10y agohttps://github.com/jameysharp/corrode/blob/master/src/Language/Rust/Corrode/C.md https://github.com/jameysharp/corrode/blob/master/src/Langua... Corrode is absolutely incredible. This file is literate Haskell, which means there's more documentation than code (I guess), and it transforms C into Rust.
- taejo 10y ago> This file is literate Haskell, which means there's more documentation than code (I guess) That's the intent, but to the compiler, the meaning of literate Haskell is that comments are the default, and only lines starting with > contain code
- mrkgnao 10y agoI know. The "I guess" was because I hadn't actually counted the lines to see if there were more comments.
- golergka 10y agoWholeheartedly agree. Making my own lisp was an eye opener on how programming languages work - and that's after I've read a lot of theory on the matter. By the way, is there are similar resource for building your own relational SQL-based database?
- specialist 10y agoMaybe peek at H2? http://h2database.org http://h2database.org
- TeMPOraL 10y agoI found that another hard thing that feels like a prerequisite for leveling up further is getting the feel for design/architecture of medium-sized systems. There's a pretty awesome resource for that particular need - the series of books called "The Architecture of Open Source Applications". http://aosabook.org/en/index.html http://aosabook.org/en/index.html (The books are CC and free to read on-line :)) I'm just through the few first chapters of the first book, and I must say it's absolutely amazing. Each chapter gives some understanding of the thought process people designing (and iterating on) a known open-source project had.
- philh 10y agoOoh, the matplotlib chapter looks super-relevant for a project I'm working on. Thanks!
- zedadex 10y ago> getting the feel for design/architecture of medium-sized systems Yes. This is exactly the kind of thing I was once looking for, only I didn't know how best to phrase at the time. Think I've since found some of the details I needed then, but will look into these nonetheless and see what I missed, if anything. Thanks!
- erikb 10y agoBoth, the tutorial and the aosabook are very, very, helpful ressources. We certainly need more like that.
- OJFord 10y ago> While there are many large successful open source applications, many are overwhelming to read and learn from. As long as the first commit isn't something like 'import to git' or 'add the code' (which seem to be tragically frequent) I find VCS a huge help here. The problem is that large OSS applications are (tautalogically) large. VCS allow cutting it back, and showing the evolution.