However, I've been alive long enough that if I don't 'know' the solution I need a whiteboard. I can't think without a whiteboard.
Age brings wisdom and experience but it certainly has dulled my brain quite a bit :(
31–40 of 68 posts
However, I've been alive long enough that if I don't 'know' the solution I need a whiteboard. I can't think without a whiteboard.
Age brings wisdom and experience but it certainly has dulled my brain quite a bit :(
If I have access to such a language, I use it. If I don't, but know how to implement it, I might do just that if I think it's worth it in terms of time and effort. Otherwise, I try to think of the next best language that could represent what I mean and that I can use or implement more easily. At some point I get to "really low-level" abstractions like Common Lisp objects, closures and macros...
It's a surprisingly high-quality and slow way to program. I figure at some point I'll have accreted so much language implementation knowledge and infrastructure that I'll be unstoppable because I'll almost always be able to make a good approximation of the best tool for the job quickly.
Translation from one language to another is just another layer of indirection and makes you slower. It's easiest and best just to learn languages from scratch or near-scratch, IMHO. If you get used to learning in that way, it's easy to keep doing it.
Caveat: I think in C when I'm coding C++.
I think in English. Whenever I'm thinking about a problem, my solutions are immediately described in my head at a high level. This allows me to rapidly iterate over the solution space without having to venture down into the pseudocode or code level until I've found something I'm convinced will actually work.
This can make it weird working on programming stuff with Italians, as English really is where my brain wants to be for programming. It's not about knowing the terminology (I do), it's just that English is really what I want to use to reason about programming.
Incidentally, trying to think in another language about what's going on is a great way of practicing it if you're learning it.
If I'm looking at a website, I think in SQL (cf. dude I can write SO in like 4 minutes ;)
If I'm looking at stats/ML stuff, I try to think in pictures (usually of probability densities being transformed in various ways), and sometimes slip into "pseudomath," which is basically English that sounds like "argmax integral x filtered by f times hessian of g".
If I'm doing information theory I tend to think geometrically or graphically, seeing distributions as points/nodes and then reasoning about what the picture looks like as distances/edges between them grow and shrink.
If I'm looking at an attractive member of the opposite sex, a good bottle of wine, or someone that needs cursing at, I think in French.
I think in pseudo-code, then figure out what language is best suited for the task.
When you say "I think in pseudo-code", what are the semantics of this pseudo-code? 'cause it's actually a bit of a non-answer, when you think about it. Saying 'pseudo code' means that the language you think in has some informality in its syntax - but presumably you still have some fixed understanding of what it does? If it has no fixed syntax and no fixed semantics, then is it actually helpful as a mental model? I wo…
Today I have learned to think in work flows and the visualizations of the UI. This is how the users of the program view it. To users the UI is the program. Now the users accept my work 90% of the time. I seldom think about the methods or data structures anymore until I am actually sitting there typing it in.