mattnewport comments on Open Thread: March 2010, part 2 - Less Wrong

4 Post author: RobinZ 11 March 2010 05:25PM

You are viewing a comment permalink. View the original post to see all comments and the full post content.

Comments (334)

You are viewing a single comment's thread. Show more comments above.

Comment author: SilasBarta 11 March 2010 11:43:42PM 7 points [-]

Request for help: I can do classroom programming, but not "real-world" programming. If the problem is to, e.g. take in a huge body of text, collect aggregate statistics, and generate new output based on those stats, I can write it. (My background is in C++.)

However, in terms of writing apps with a graphical user interface, take input in real-time, make use of existing code libraries, etc., I'm at a loss. I'd like to know what would be a good introduction to this more practical level.

To better explain where I am, here is what I have tried so far: I've downloaded a lot of simple open source programs that have a lot of source files. But strangely, whenever I compile them myself and get them to run, it just runs on the command screen blindingly fast and then closes, as if I'm missing some important step. (How are you normally expected to compile open-source programs?)

I've also worked with graphics libraries and read a book (IIRC, Zen and the Art of Direct3D Game Programming) and was able to use that for writing algorithms that determine the motion of 3D objects, given particular user inputs, but it was pretty limited in domain.

I've downloaded Visual C# Express, which was actually pretty helpful in terms of showing how you can create GUIs and then jump to the corresponding code that it calls. I wrote simple programs with that and even bought a book on how to use it, but it turned out to require very circuitous routes to do simple things.

Finally, becuase it's so highly recommended, and I've read Douglas Hofstadter's introduction to it, I thought about programming in Lisp, but the only programming environment for it that I could get to work was the plain old b/w command line, when I figured I'd need to have more functionality than that, and also the libraries to do more than just computation. (I'm experienced with Mathematica, which seems similar in a lot of ways to Lisp.)

So, an specific suggestions on where I should go from here?

Comment author: mattnewport 12 March 2010 12:13:04AM 1 point [-]

but it turned out to require very circuitous routes to do simple things.

Unfortunately this about sums up the current state of 'real world' programming.

It is helpful to have a concrete goal to work towards rather than merely coding for the sake of learning. Learning 'on the job' is helpful in this regard as there is usually a somewhat defined set of requirements and there is added motivation and supervision that comes with being paid to write code.

If you are trying to learn on your own I'd suggest trying to set yourself the task of writing a simple program to do something fairly clearly defined and then work towards that. Simply reading through open source code (or any third party code) is not something I've found terribly helpful as a learning exercise. More useful is to set yourself the task of fixing a specific bug or adding a specific feature as this will help direct your investigation.

Learning how to use the debugging tools available to you is also important. Understanding how software is put together can be greatly aided by stepping through code in a good debugger.

C# is pretty good for 'real world'/GUI development. Personally I think it is the best option overall at the moment for that kind of programming but you will find language choice is a bit of a religious war issue.

Comment author: wedrifid 12 March 2010 12:52:50AM 2 points [-]

C# is pretty good for 'real world'/GUI development. Personally I think it is the best option overall at the moment for that kind of programming but you will find language choice is a bit of a religious war issue.

I second that recommendation for (non-web) GUI development. Even as someone who had never programmed in C# I found learning the language the simplest option when I needed to create a visual desktop application. (Of course, given that I knew both Java and C++ it wasn't exactly a steep learning curve.)

Comment author: Furcas 12 March 2010 02:55:10AM 0 points [-]

Can you recommend a tutorial on GUI development with C#?

Comment author: wedrifid 12 March 2010 05:31:26AM 0 points [-]

I'm afraid not. I just kind of winged it.

Comment author: SilasBarta 12 March 2010 07:10:19PM 0 points [-]

Unfortunately this about sums up the current state of 'real world' programming.

Well, I don't think I described it correctly. "Circuitous", I can actually handle -- I thrive on it, in fact. But e.g. setting text in a box to bold, when the package is designed to make that easy, following the book's exact instructions, and getting plain text ... that part bothers me, especially when it's followed up with all the alternate methods that don't work, etc. But it was a long time ago so I don't remember all the details.

If you are trying to learn on your own I'd suggest trying to set yourself the task of writing a simple program to do something fairly clearly defined and then work towards that. Simply reading through open source code (or any third party code) is not something I've found terribly helpful as a learning exercise. More useful is to set yourself the task of fixing a specific bug or adding a specific feature as this will help direct your investigation.

The task I was working on was to have a WYSIWIG html editor but all redefinition and addition of tags, and add features html can't currently do. (Examples: 1. A tag that adds a specified superscript to the tagged text. 2. A tag that generates an arrow that points to some other text.)

I eventually hired someone to write it, but still couldn't understand from it how the code works, and the Visual C# book only touched on the outlines of this, and I ran into the problems I listed earlier.

I also tried to work through some of their existing program examples, like the blackjack one, but i don't remember where that went.