Quote: I know quite a few languages though, so not knowing the specifics of any given language doesn't mean I don't have a decent picture in my mind of what it *should* do to impliment the idea, even if the specifics are a little more vague. I think you are confusing two different things. There is knowing a programming language, and then understanding a library. I know C++ well, I daresay perhaps very well, but I have no idea how to write 3d applications using DirectX. Well, actually, I do have some idea, because I'm familiar with OpenGL and know the general principles of 3d, but whatever -- the point is that familiarity in a language won't give you familiarity in sets.
Here's a better example: despite knowing C/C++ well, I would have to learn from almost scratch if I wanted to write GUI applications for Gnome using GTK.
Basically there is a difference between the language you write in and the tool set, libraries, etc. that you use.
Quote: I am one of those people that, when completely familiar with the syntax, can code a thousand line program in a few hours, then spend less than half that debugging it. I rarely have to "plan out" the design of anything. I admit that this may be biasing my thinking a bit, since what *seems* obvious to me in the big picture can look really complicated to someone else. Not to diminish your claim, but a thousand line program is still relatively small. I regularly write 200-1000 line programs to help me solve homework, or even for homework.
But try writing a 45,000 line program. Or, even a 15,000 line program. It's a completely different beast. Not having a design is a sure recipe for disaster.
Also, sometimes a clear big picture isn't worth very much. The big picture of virtual memory management or disk caching in an operating system really isn't that hard. But the actual implementation is extraordinarily complex.
Give it a shot and see what you think:
http://www.stanford.edu/class/cs140/ Operating Systems
Quote: Languages that I don't know well, get me a tad more frustrated, especially when they are ones like C++, where if you are not using something like MFC, require you spend a lot more time telling the system how to do things, than telling it what you want it to do. I'm not sure what you mean by this. I'm guessing you mean having to deal with things like memory allocation and deallocation, and having to work in a fairly rigid syntax. But I agree with the general sentiment that some languages incur a greater start-up cost than others depending on what you are doing.
That is why it is important to understand your toolbox. For small, quick programs I use Perl or Lua. When it gets larger, I either structure the Perl/Lua more (using a module-based system, for example, or object orientation) or move to C++ or Java.
Quote: It doesn't help at all that right now I have the choice between something like GCC, which has, at best, a command line debugger (yuck!) and no sort of GUI based code editor with helpers I know what you mean but your comparison is a little unfair. GCC is just a compiler; it doesn't purport to be any of the above. It's one piece of a tool chain.
gdb is a debugger, and if you really want a GUI environment on top, you can use e.g. ddd, a graphical front-end for gdb. For the GUI, you should think about what features you need specifically. The two things I use a lot are:
- intelligent auto-completion (OmniCppComplete plugin for vim7)
- jumping to a specific function, method or class (vim tag system, using exuberant ctags)
Since those are my main needs, I have found ways to meet them that work very well, arguably better than Visual Studio. Of course, it doesn't hurt that I have been slowly learning vim for years now, and have been working in this whole tool chain for years as well. When I started it was rather daunting.
Quote: The problem isn't that I don't think fast enough, its that I think too fast and can literally change perspective in mid sentence, at times I am trying to get something complicated out. Oh, that's what I meant. I didn't mean to say you don't think fast. :-) I've run into a number of people (myself included, in the past and sometimes now) who write too quickly and don't stop to collect their thoughts. I (usually) make an effort to think through what I'm going to say before I say it, in the hopes that the result will be more coherent and more precise.
Quote: However, you are still admonishing me about the subtlety and complexity of something that *if* you understood it either you would have the answers I need. My main complaint is that you appear to be saying it is simple when you don't know the answer yourself. I'm not sure how you can say it's easy when you don't know how to do it. :-) Of course I don't know how to do it either, and for that matter I haven't really looked into it, but on the other hand, I have written a fair amount of code in my time including some that deals with Windows event loops. (Admittedly I have not written an MFC program, and only know the basics of how it works, that much is true.)
Quote: That it "looks" subtle and complex may be a given. But neither of us is in a position to say that it really is, unless we understand the mechanics of how to produce it. Yes, but as I said above the converse applies too, and that is what I am trying to point out. Neither of us have the process in hand, so arguing that it's easy just because you want it to be easy doesn't really hold much sway. (It would be nice, of course, if it were easy...) |