3 ms·
This is probably different from the other (great) advice on this page, but here goes. If you have 10 months before you got back to university, I suggest, you w
by plinkplonk 17y ago
This is probably different from the other (great) advice on this page, but here goes.
If you have 10 months before you got back to university, I suggest, you work with one language and build something substantial in that time. It doesn't matter which language you select (and this is where my advice differs from those of people who recommend lisp/Haskell and so on, you could choose C or C++ or Java, it doesn't matter).
The key is to make something substantial, but which also has a lot of intermediate stopping points (a ray tracer/renderer is a good example, it gives you visual feedback of your progress) and work on it every day. Writing a large program is substantially different experience from working through toy examples and you will learn a lot, irrespective of the language you use.
Of course you could still use lisp or haskell or smalltalk (EDIT: if you are already somewhat familiar with them, learning a new language and building something large is tricky) if you so choose, but it doesn't matter really.
Just build something ambitious.
My 2 cents.
Good Luck.
- henrikschroder 17y agoBuilding something and learning from your mistakes is indeed the best way to learn, but doing something ambitious in a language you don't really know means that you're going spend a lot of time on doing and re-doing the structure of it, and that requires a lot of patience since you'll get so little feedback. I'm a very impatient person, all the side-projects I've made have had very tight feedback loops, where you quickly get results and can change them and see your project grow. My first language on the side was PERL, which is a very unstructured get-stuff-done-fast kind of language which suited me perfectly at that time and was fun to learn, for me. Horses for courses, etc.
- plinkplonk 17y ago" but doing something ambitious in a language you don't really know " I never really implied "language you don't know". My advice was "use a language you know and build something ambitious" (vs trying to find the ultimate "cool" language). I'll edit. "Building something and learning from your mistakes is indeed the best way to learn," This is what I was trying to say, (with "something" != tiny programs). I know many people who "know" many languages(and try to know more) but haven't built anything substantial with any of them.
- sb 17y agoI have not read any of the other advice yet, but I think that's too ambitious for somebody who has just completed two fundamental, but introductory courses. I totally agree upon building stuff for teaching the ropes--but this is probably a bit too early in for doing something meaningful (the raytracer example is probably too tough, since it requires at least some amount of linear algebra, analysis, etc. which probably lacks, too.) So good advice in principle, but probably too early IMHO. I have recently completed SICP (after having 15y of experience and knowing multiple PLs) and it is still one of the best introductory textbooks I can think of, if only for the breadth they cover using their examples. In addition to learning functional programming concepts, how an interpreter works and last but not least building a compiler is more than anybody can expect to learn in 10 months time, too. PS: One does not need to be a beginner to appreciate SICP. Actually, having a lot of programming experience enables you to work through SICP in a breeze... EDIT: After reading through the comments, probably it would be a good idea to skim through "Simply Scheme" by Brian Harvey and Matthew Wright. Many people think its the "predecessor" of SICP and probably would be a good complement for you: http://www.eecs.berkeley.edu/~bh/ss-toc2.html http://www.eecs.berkeley.edu/~bh/ss-toc2.html If you are choosing SICP, be sure to check the video lectures from MIT!
- addenine 17y agoI agree completely. There's a huge value to learning a number of other languages and they will help you approach projects from different conceptual angles, but most important is the ability to approach a project. You'll learn more about how things are really working under the hood and the limitations of your chosen language by building one substantial modular project in that time. Visual feedback is definitely hugely important too. I couldn't agree more that working on it every day is essential, if you want to get great, code isn't a job, it's life. Just like learning Japanese, if you want to really internalize what you're learning, you have to immerse yourself.