Jump to content

Is computer programming theoretical?


Popcorn Sutton

Recommended Posts

I was just wondering if I am a good programmer. I don't have anything to base my skills off of.

I do not understand how the above question relates to the topic of this thread, "Is computer programming theoretical?"

 

The answer to "Is computer programming theoretical?" is both yes and no, depending on what you are doing.

The answer to whether you are a good programmer or not depends on who is evaluating your skill. Generally, programmer skill is evaluated by an employer or teacher, who assigns work and determines if you work quickly and accurately enough.

 

IMO your questions cannot be answered here.

Link to comment
Share on other sites

  • 3 weeks later...

I think I understand Popcorn's question. Can someone who learned how to program and refined their skills consider themself a good programmer even if they never studied computer science theory?

That was the situation I found myself in when graduating high school and entering college. I had a passion for programming and had taught myself BASIC and assembly language. My skills for writing tight code were sharpened by freelancing several video games, written entirely in assembly language, while still in high school. I had the same doubts about my abilities, as I had never taken formal computer science courses.

In college I received the education I desired. The good news is that a single course filled in most the gaps in my knowledge of programming. That course was Data Structures and Algorithms. Get yourself a good book on the topic. My textbook was Aho, Hopcroft and Ullman but there are better books available today such as The Algorithm Design Manual or Introduction to Algorithms.

With passion, a little experience, and some education in data structures and algorithms, I think you could become a good programmer.

lamont

(link removed)

Link to comment
Share on other sites

All I have to say is JESUS MAN, ASSEMBLY LANGUAGE!? Seriously, video games.... In assembly language? Pro.

 

My question could have been phrased like this. Its computer programming alot of "maybe this will work... No nvm, how about this? ... Nope not that either... Time to do some research." 2 days later youre using plugins and bit processing and don't even know what the code your typing means, and therefor, you have to come up with a theory to explain the code... or is it just an ok this works, use it type of deal.

 

My experience in sound recognition is more of an ok this works, use it type of thing.

It seems that my sound recognition code is accessing the mainframe or something by using the if __name__ == __main__: statement but I have no idea really. It works though.

Link to comment
Share on other sites

 

All I have to say is JESUS MAN, ASSEMBLY LANGUAGE!? Seriously, video games.... In assembly language? Pro.

When I started programming, in the late 60's, assembler language programming was sometimes necessary. This was before structured programming (conditionals used go_to), when super computers rarely had 1MB of memory, and assembler programs sometimes modified themselves to save a few bytes of memory. Occasionally a program was like the Voynich manuscript, impossible to read. Today assembler programing is rarely necessary, and compilers such as C can produce more efficient code from source that is also readable.

 

 

Time to do some research." 2 days later youre using plugins and bit processing and don't even know what the code your typing means, and therefor, you have to come up with a theory to explain the code... or is it just an ok this works, use it type of deal.

Libraries of existing code make easy work of otherwise very difficult programs, and improve programmer productivity. On the other hand, using existing code deprives one of learning the nuances of some algorithms. Two days research to do something as complicated as sound recognition might save many months of programming, for example if you mean speech recognition.

 

Programming consists of knowing how to code in at least one language. In addition, one must know about algorithms that are used for many problem domains, as those taught in introduction to algorithms classes. And, one must know algorithms for specific problem domains for whatever segment of the market in which one works, for example business, game development, astronomy, manufacturing, etc. Beyond these basics, there are many tools and technologies that can improve ones ability to program, more than a person can learn in a life time.

 

On a productivity scale of 1 to 28. The worst programmers produce 10 lines of debugged, documented code per day, and the best produce 280. Although, some dispute this ratio and suggest productivity ranges from 1 to 10. Most programmers only produce about 10 lines of debugged documented code per day in a business environment. A few are incapable of producing any debugged code, but they are often fired shortly after being hired.

Link to comment
Share on other sites

Actually, software has several somewhat verifiable aspects —

  • Does it perform according to spec?
  • Was it written within the time and budget constraints?
  • Is it concise and memory/processor efficient?
  • How many revisions were required before "getting it right"?
  • Was it annotated/documented sufficiently for another programmer to understand what each section does?
  • Is it robust enough to undergo future modifications without massive rewrites?
Link to comment
Share on other sites

It seems that my sound recognition code is accessing the mainframe or something by using the if __name__ == __main__: statement but I have no idea really. It works though.

I can give a practical answer based on the quote above alone. If you don't know what the if __name__ == '__main__': line in Python does, then you aren't a good programmer.

 

I am no expert at Python, but I looked up what that meant the first time I ran across it and now I know what it means. It is actually incredibly useful in terms of code reuse and testing.

 

I agree with the above, if you are using code you don't understand, then in no way can you consider yourself a good programmer.

Link to comment
Share on other sites

Seriously, video games.... In assembly language? Pro.

 

Ha ha. In those days most arcade-style video games were written in assembly language in order to achieve 30 frames per second animation. I no longer write entire programs in assembly.

 

Also, it seems that I misunderstood your question. Thanks for coming back and clarifying. I agree with the comments above. A good programmer (working in his/her favorite language) will have clear expectations of how each line of code will perform. After diagnosing and fixing a bug, a good programmer will understand exactly why the original code failed. It's not a "shot in the dark" or "trial and error" process.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.