4 ms·
I think any re-implementation of something you are fond of is a great exercise. It reminds me of a small project in undergrad for a networking course. Our pro
by notyourwork 10y ago
I think any re-implementation of something you are fond of is a great exercise. It reminds me of a small project in undergrad for a networking course. Our professor's assignment for the quarter was to implement a basic TCP stack using the UDP protocol. It wasn't perfect and had quirks but it worked for a basic client/server model and gave me a huge appreciate for what happens when we use the internet.
I think the higher up the stack you go the easier it is to lose appreciate for all the lower layers that facilitate your stack. And over time I fear new generations of programmers are losing touch with what the basic foundation of a computer is. Sure they will study theory but do they really know how many man hours are supporting their stack?
- thearn4 10y ago> I think any re-implementation of something you are fond of is a great exercise This is basically my procedure for learning a new programming language. I have a list of things that I like to have on hand that cover a fair amount of possible paradigms, and re-implement them. Things like FFT, linear algebra methods, numerical root finding/optimization algorithms, etc. Project Euler (and now also exercism.io) are great for finding small but digestible things to do too. At the moment I'm working on finding some better mathematical examples for class abstractions & better use cases for object-oriented concepts in general. Because it looks like I'll be teaching a course either in Java or C# next fall. Coming from a scientific computing background the usual use cases for java and .net aren't my typical problem areas of expertise (though there are some things I definitely do appreciate about them).
- Johnny_Brahms 10y agoI second project Euler, but for a different use case. It is a great tool to learn the lower level workings of a computer language. Work through the first 100 or so exercises in a new programming language, and you have got a good understanding of how to write efficient code. Most of the problems are solvable in less than 1s in most languages with the non-naive brute Force approach. I remember doing it in a functional style using scheme. At about problem 50 I had a good understanding for how to write in a way that avoided excess allocations/collections. Ah the frustration when someone was generating primes with a worse approach than I had, and my code was 2 or more times slower.
- cableshaft 10y ago> I think any re-implementation of something you are fond of is a great exercise. That's basically how I learn new technology is to either partially or fully port my Proximity game (http://briancable.com/proximity http://briancable.com/proximity) to it. I've used that to learn C#/XNA, Objective-C/iOS, Java/Kindle (sadly never finished, but it looked beautiful on a Kindle), and most recently Pico-8/Lua (still in the process). I'm planning to start working on a 3D version soon, as well, with the goal of getting stronger in my 3D programming and getting it onto a bunch of platforms with a single codebase (using Unity). Considering the game has been used in at least one book (Actionscript 3 Design Patterns) as a 'learning to code' game and I periodically get emails from students whose teachers have made an A.I. programming exercise for Proximity, it probably makes sense that it's my go-to learn new tech game, considering I've made other games too but don't port any of those.