Renegen on 7/10/2006 at 02:58
hey guys, there's a lot of able programmers here and I thought of asking the question to you. Recently and relunctantly I've decided to study programming, my major in university is economy but I'm doing this on my own time and I need some guidance. I've taken some programming VB classes all the way back in high school and did a few stupid programs so I understand the basics as well as how a computer works generally, but what will I need to do to 'get it'? Programming is a lot more than remembering the syntaxes. What's the best way to eventually get there, books and any wise words?
Swiss Mercenary on 7/10/2006 at 03:01
Always apply an effort to write the most general, simple, efficient, and easy-to-understand code that you can. At least, those seem to be the fields that I found most sorely lacking in the work of my peers.
TTK12G3 on 7/10/2006 at 03:16
Study major programming and command-line interfaces (obviously). Go beyond what you are expected. It is absolutely important to stay as far ahead a possible. I would suggest reading into Python and Java, although Python is kind of basic. You should absolutely read a bunch of old UNIX and JAVA books, preferably from the early to mid nineties. The newer ones tend to hold much water in terms of confusing and somewhat pointless methods that you can do without. As Swiss Mercenary said, you should go for the kind of simplicity you are most comfortable with.
EDIT: Oh, and be sure to challenge yourself. If you don't, someone else will.
Scots Taffer on 7/10/2006 at 03:38
This is funny timing because I'm a really reluctant programmer but yet again, it seems no matter what I do I get dragged back into it - I guess it is the backbone of so much of modern business these days.
I just completed a five day accelerated double-course in(
http://www.sas.com/) SAS for the basic operations, procedures and functions - so reading in files of all different formats, outputting to all different formats, debugging, basic mathematical functions and character/string manipulations and so on.
Now, how I soaked up this language and was highly proficient within 2-3 days of this course and was wayyy ahead of everyone else in the course (depite them being recent graduates of CS/IT with programming experience in Java and C++ etc), was due to the manner in which I was taught programming in first year CS at my University.
They taught us the Fundamentals of the Programming and here is the (
http://www.dcs.gla.ac.uk/courses/teaching/level1/CS1P/CS1Pspec.html) syllabus for the first year programming course I took (albeit an updated version). Pay particular attention to the language used throughout, the course essentially distilled down to programming without syntax, i.e. thinking programatically. What this means is that when you approach a problem - even in Excel - you can see how it could be broken down into variables, iterative loops, assignments and replacements.
I underestimated the value of this course at the time but again and again it has proven it's worth, and again I end up a programmer. :)
WingedKagouti on 7/10/2006 at 08:19
Quote Posted by Scots_Taffer
They taught us the Fundamentals of the Programming and here is the (
http://www.dcs.gla.ac.uk/courses/teaching/level1/CS1P/CS1Pspec.html) syllabus for the first year programming course I took (albeit an updated version). Pay particular attention to the language used throughout, the course essentially distilled down to programming without syntax, i.e. thinking programatically. What this means is that when you approach a problem - even in Excel - you can see how it could be broken down into variables, iterative loops, assignments and replacements.
I'd say that understanding the underlying structure is the first requirement to become a programmer, otherwise you won't be much more than a code monkey. While the ability to type out code that does what you want can land you a job it isn't always great for later maintenance. You need to understand when and why you should use a specific syntax.
Understanding the difference between object oriented and procedural programming is another step. Knowing the difference and understanding it is not the same. You'll almost certainly encounter both types if you work professionally, understanding the options available to your current project will help you.
What, how and why are all important.
Renegen on 7/10/2006 at 14:28
Thanks for the replies, if I understand it what's important is how to structure the problem with the ultimate goals of simplicity and ease of understanding by others?
Scots_Taffer, do you have any lecture notes?
WingedKagouti on 7/10/2006 at 16:46
Quote Posted by Renegen
Thanks for the replies, if I understand it what's important is how to structure the problem with the ultimate goals of simplicity and ease of understanding by others?
And the ease of understanding it yourself.
Comming back to fix a minor detail in some random code 1 month after you "finished" it can be an exciting experience. Comments can help and so can a decent and consistent structure.
BEAR on 7/10/2006 at 19:03
Learning programming separated from sytax or a language definatly has its pro's, its a good way to start out.
Wether you're learning on your own or as part of a class, you will learn the most when you set yourself a project that interests you that you dont know how to do. I've learned the most just by getting some silly idea for a program that I dont know how to do (theres alot I dont know how to do), and having to learn alot to complete it. Classroom is good for the basics and to get a good understanding of logical thinking, but working on you're own is where you will learn the most; it really helps to have a mentor or somthing to help you when you get stuck, keeps you from getting discouraged when you really hit a wall.
Java is a pretty good language to start out on, it embodies object oriented programming pretty well and was always fairly easy for me to use. Also being open source there is alot of free available code out there to help you.
Somthing that took me a while to learn (assuming I've learned it), is modeling. Sit down and visually scetch out you're program before hand, its annoying and most of the time (at least for me) you will get an idea in your head and just want to sit down and do it. You will save yourself alot of time if you take some time before hand to say: what at the most basic level am I really trying to accomplish. Not just in the immediate, but what can I do now to make it easier later and how can I build it so I can add other stuff later. I think everything I built in school I would never use because I didnt do this enough, and ended up with somthing I didnt like that maybe worked, but only when I got done did I realize how I SHOULD have done it.
Somthing I struggle to learn is, you cant do everything. There are alot of people out there doing alot of stuff, if possible (and legal), use other peoples code if its been well developed, you might be able to program it all yourself but it seems to me that a skill on par with being able to do things yourself is being able to pull together other peoples code to make your projects better in less time. I always want to do it myself because I want to see if I can do it, but as far as the end product, if you can find good modular code that you can plug in you'll end up with somthing better in the end.
Concidering I dont see myself as that good of a programmer I wrote a hell of alot :erg:
EDIT: Scotts, that looks alot like the syllabus for my first programming class's.
Renegen, if you're learning this on your own I could try and find notes from my classes, my main programming instructor gave massive handouts constantly, and they were usually pretty useful. The early ones are mostly logical stuff, but after that pretty much all of them are either java or php. Let me know if you want me to look for them.
ignatios on 7/10/2006 at 19:03
Quote Posted by TTK12G3
I would suggest reading into Python and Java, although Python is kind of basic.
Nonsense; Python is an excellent language for learning programming. Its syntax is simple but that doesn't make it 'basic' by any stretch; Python is a great language and is just as capable as Java. In fact, the language itself is more expressive (and in a sense more powerful) than Java, but that shouldn't matter to you for quite some time, if ever.
Java's fine, but don't bother with it until it's your second or third language, or unless you need to for a particular library or something.
Renegen on 7/10/2006 at 20:34
Yes BEAR, I would be very thankful if you could give me your notes from classes, I am doing it on my own time, something something about not becoming a russian programmer..