Overclock.net banner

1 - 18 of 18 Posts

·
Registered
Joined
·
85 Posts
Discussion Starter #1
Been seeing a lot of the same questions lately so I thought I would put together (as best to my knowledge) of the questions that I see asked pretty much every day. If I miss anything feel free to message me and ill edit it. Also I plan on taking the next two post with blanks in order to give myself room for more information if ever needed at a later date.

Q1. I want to learn how to program where should I start? Know of any good books/online tutorials? What IDE should I use?

A. This question comes up a lot and the simple answer is to start with learn an object oriented language. The top languages I (and most other people would suggest starting with) are Java and C++. Other options are Python, C# and VB.Net

Java
C++/C#/VB.net
Python
List of IDEs (Thanks to joshd for this information!)
IDE/SDK List

Q2. Im having problems with a program how can I get help?

A. Simply post on the forums and someone will come along and take a look! Title the thread with the problem you are having and what language it is in. When the problem is solved edit the thread title with [SOLVED] so others who may have a similar problem to you can take a look. In your problem describe the program you are writing, the error you are having (copy and paste the error), and the snippet of code that is causing the error. The more information you provide the faster we can solve the problem.

Q3. I think computers are awesome and I want to become a Computer Science student at the College/University I am attending but I was wondering how hard is it?

A. To be frank Computer Science is a difficult degree. You will spend countless hours toiling over a program hidden away in a basement with no human interaction for weeks at a time on some occasions
smile.gif
. When I was in college I was taking Linear Algebra, Software Engineering, Systems Programming and funnily enough World Music simultaneously in one semester. I slept maybe 3 hours a night that entire semester and devoted almost all my time between Systems and Software Engineering. Now! If you've read this far and your going "ehhhh...sounds like crap, I want friends" I can tell you its one of the most rewarding majors out there. Through hard work and determination you see something you've created become this magnificent program and it feels pretty awesome.

tl;dr it's hard, super rewarding

Q4. Im bad at math does that mean I shouldn't program?

A. While Computer Science is a math based major you can still provide quality code and have an enjoyable experience programming without it. I am not the brightest crayon in the box when it comes to mathematics. During college my grades would range from a D- to a C during my college career. Knowing math helps theres occasions where you can reduce entire loops to a single algorithm with the proper knowledge but that can come in time.

Footnote
Slight adjustment to the Python information. Please message me if you have any questions or ideas of how we can improve this.
 

·
Registered
Joined
·
85 Posts
Discussion Starter #2
I have decided to cut up the information into sections. Post 2 will attempt to be not just information on HOW to code but on how to write GOOD code.

Q1. So I know how to write programs in Java/C++/Python etc but I want to write quality code how can I do that?

A. Now heres a topic thats pretty gigantic. For 2 years I was a Teaching Assistant for the Principles of Programming 1 (aka Intro to Programming) and Principles of Programming 2 (Aka Data Structures) and theres a few key things I told my students (plus heres a few things I have learned that are pretty useful since I got out in the working world)
  • Design than Develop
    • Whenever I start a new program the first thing I do is sit down with a piece of paper (yes paper! I like to draw when I plan) thinking about your program and creating a UML diagram (a design document that contains what methods are in each class etc) ahead of time will literally save you HOURS of work. This is something I knew in college and wish I would have started doing earlier than second semester junior year lol
  • Comments!
    • These will save you more headaches than anything else will in the entire world. It may seem stupid on small little programs but getting in the practice of commenting as you code is super important and will save you a lot of pain. When you program something drop it for a year and come back to it its pretty horrible to try to remember everything you did. Whats worse is when you have to read someone elses code that has 0 COMMENTS IN IT. Example: I started a project at work the project had a few thousand lines written by another developer (much smarter than me) with absolutely no comments. I spent the entire first week trying to figure out what was going on and took me about 3 to get a full understanding of everything. Don't be that guy/girl that never comments no one likes that guy on his team. Make sure you learn the commenting standard for your language for example learning the Javadoc standard is wonderful.
  • Prefix/Suffix and descriptive variable names
    • When declaring a variable it helps tremendously to describe what action your attempting to perform as well as use a prefix or a suffix to determine type. For example if I am creating a variable that will represent the effective date of something I would name it something along the lines of dteEffectDateOfChange. Its a bit lengthy yes but at any moment in time just reading that name tells me every single piece of important information I could know about it. For private class level variables I use p_ as a prefix so in the case of my date variable p_dteEffectiveDateOfChange once again furthering the information about this variable that I can learn from just simply reading the name!
  • Remember scope!
    • Make sure to not make everything public. Class variables should almost always been private than access through getter/setter methods. Methods that are only used within that class should be private etc and so forth. Remembering to use appropriate class level/method level and variable level scopes is key to quality software.
  • You don't have to declare all variables at the top of a method!
    • Now we go straight back to the scope idea. Remember declare at the top of the variables SCOPE not METHOD. If there is a variable never used outside of lets say an if statement declare it IN the if statement. If that portion isn't executed during a certain call of the method than you just saved yourself the clock cycles required to declare and instantiate that and took your first step to making more efficient code
      smile.gif
Footnote
This is just a bunch of ramblings and thoughts I had that help build more quality code that newer developers often forget. Feel free to shoot me a message with other things or questions on how to make better code and I will certainly do my best to answer!
 

·
Registered
Joined
·
511 Posts
I'll fill in some of the Python info in this thread.

Having said that, I think you should switch places between C++ and C#, as currently they (C# and Java) are the most used in non-specialized programming projects as well as high level enough not be bother with stuff that doesn't concern the core of programming logic (like memory allocations, manual garbage collection).
 

·
Premium Member
Joined
·
1,563 Posts
Quote:
Originally Posted by ByteMyASCII View Post

Been seeing a lot of the same questions lately so I thought I would put together (as best to my knowledge) of the questions that I see asked pretty much every day. If I miss anything feel free to message me and ill edit it. Also I plan on taking the next two post with blanks in order to give myself room for more information if ever needed at a later date.
Q1. I want to learn how to program where should I start? Know of any good books/online tutorials? What IDE should I use?
A. This question comes up a lot and the simple answer is to start with learn an object oriented language. The top languages I (and most other people would suggest starting with) are Java and C++. Other options are Python, C# and VB.Net
Java
C++/C#/VB.net
Python
No idea someone fill me in please
smile.gif

Q2. Im having problems with a program how can I get help?
A. Simply post on the forums and someone will come along and take a look! Title the thread with the problem you are having and what language it is in. When the problem is solved edit the thread title with [SOLVED] so others who may have a similar problem to you can take a look. In your problem describe the program you are writing, the error you are having (copy and paste the error), and the snippet of code that is causing the error. The more information you provide the faster we can solve the problem.
This is all I've got for now please let me know if anything is missing that someone may ask or any information people may need and if its worth while ill throw it up here!
Dammit... you stole my faq
tongue.gif


Well good job starting it. I was going to make it next month after getting over with my exams but it's nice to see that you took the initiative. I can help you over the next few days if you would like any.
smile.gif


The No. 1 question you addressed is, IMO, the most important current issue to make a FAQ about.
Since you are talking about how to start with programming, you should try to compile the information (paraphrased if you wish) I have posted in the other thread and all the other invaluable advice everyone in this forum has posted in various threads.
Quote:
Originally Posted by {Unregistered} View Post

Crucial advice there.

I'd say start with Python or an easy scripting language. Python is good because it allows both OOP and Procedural programming. Focus on basic procedural programming first and learn the basics. Do some practice and once you are familiar with programming and are able to make little (useless
tongue.gif
) programs for fun, move on to an OOP language such as JAVA or C++.

Again, in JAVA or C++, you'll have to learn the basics first. Try to understand what a class is, what objects are and how the fundamental functions work before beginning a full scale project.

Important information => Programming != Coding

Coding is just converting the idea into code. Programming is the actual designing of the program (how it will work and how everything will fit together in the program to give the desired result). You have to learn how everything goes on as the program is executed. Once you can understand that, all languages will be basically the same.

If you choose to learn Python first, then you should get the free e-book, A Byte of Python. Seriously, if you are a beginner and this is your first programming language then that is the best book for Python available. If someone ever tells you to use Dive into Python instead, then don't listen to him or her. I tried Dive into Python and it was no doubt very hard since Python was my first programming language too. The former one will allow you to actually understand what's going on while the latter will just push you and force you to copy and paste code and in the end, you will know how to make a program that completes a specific task but you won't know what the code means.
However, you can still try both and see which one works for you.

Also, to complement your learning, you can watch TheNewBoston's programming tutorials on youtube.

And again, I can't emphasize this enough: Coding != Programming.

Good luck!
smile.gif
Quote:
Originally Posted by {Unregistered} View Post

I really need to make a "How to start learning programming" post and sticky it.
redface.gif
I'll be sure to make that in January when I have more time on my hands.
To answer your question:
Yes, of course, you can learn programming without a proper course. The Internet is the best resource available.
Usually, it is recommended that beginners start with an easier language so that they can become comfortable with programming before they dive in to the "real thing".
I'd say start off with Python. It is a good easy-to-learn scripting language that allows both procedural and object-oriented programming. It is much more flexible and the syntax is easy to get used to.
Since this is going to be the first language you learn, you should use A Byte of Python. It really gives a proper introduction into programming in Python and it is paced well enough for the average beginner. The most important thing from then on will be actually starting to practice making your own little programs. The more you do, the more problems you'll run into and the more you will learn by trying to solve those problems. You can supplement your learning with the Python video tutorials available on Youtube by "thenewboston". Watch the tutorials on the specific sections you learn about as you progress through the book. Remember: practice, practice, practice. Then, in a couple of months, when you begin to see yourself as an "expert beginner" and have already finished the material listed above, you can start through Dive into Python. (It starts by making you learn by doing. I personally did not like this book but many people suggest it and you may like it too.)
I am pretty sure this will keep you busy for many months.
biggrin.gif
(All the information I have listed above is completely from personal experience. I too started with Python). Once you feel you are a pro, you can look into further resources but I am pretty sure this is enough for now.
However, according to my experience, I only actually gained a profound understanding of programming when I learned Java. (because of its object-oriented paradigm).
If you have any further questions, just ask in the Coding section and we'll be sure to help you.
smile.gif

~ {Unregistered}

Look over in these threads and I am sure you will find much more and even better tips and advice to include in the FAQ.

Also, I will try to prepare a few more questions to include and discuss.

I think I will add a link to this thread in the Sticky Notes section and also edit the title to "Coding an Programming FAQ (In Progress) " so that people know about its current status.

EDIT: Oh and I'd say that remove the mention of the IDE's in the first question. Remember that most people that come here are beginners and are primarily interested in the basics and the mechanics of how they should start rather than what or how to program. IMO, either you should change this to a coding and programming centered FAQ with information on actually programming or you should focus on resolving the usual problems that beginners face when starting off. Just my advice. The end decision is yours since it is technically your FAQ.
biggrin.gif


~ {Unregistered}
 

·
Programmer
Joined
·
28,680 Posts
This will be a great guide. (I use visual basic)
 

·
Registered
Joined
·
85 Posts
Discussion Starter #9
Thanks for the suggestions and information guys keep em rolling in! hopefully we can get a pretty well built FAQ before the end of the week. I didnt do any updating this weekend got myself busy with some other stuff but after work tonight I will try to get some of the information suggested read through and posted.

In response to
Quote:
Originally Posted by {Unregistered} View Post

I think I will add a link to this thread in the Sticky Notes section and also edit the title to "Coding an Programming FAQ (In Progress) " so that people know about its current status.
EDIT: Oh and I'd say that remove the mention of the IDE's in the first question. Remember that most people that come here are beginners and are primarily interested in the basics and the mechanics of how they should start rather than what or how to program. IMO, either you should change this to a coding and programming centered FAQ with information on actually programming or you should focus on resolving the usual problems that beginners face when starting off. Just my advice. The end decision is yours since it is technically your FAQ.
biggrin.gif


~ {Unregistered}
I think finding a place to DO your programming is pretty important. If your coming to programming your not gonna have any idea how to get started coding and the three main components: IDE, language and tutorials are all fairly important to learn how to get started in development.

If anyone has any more suggestions, questions or information that they think would go great in the FAQ please let me know like I said I hope we can compile a FAQ thats solid enough to where if people ask a simple question we can just simply point them to it.
 

·
Registered
Joined
·
305 Posts
I just wanted to say that python has its own IDE when you download the "suite", I think it is simply called "Python IDE". Other than that, you can use notepad, then save it as a .txt, and run the command line version of the interpreter and viola. I think though, I am not sure and it is too early for me. (damn morning, yes, 9:42 am is very early for me)

Also, don't forget D ! It is a wonderful language, but it is very new so there are not much tutorials for it sadly, or libraries.
 

·
Registered
Joined
·
85 Posts
Discussion Starter #11
Thanks ill take a look as for adding more languages im going to stick with whtas up there as suggestions for new developers. Theres hundreds of languages we could suggest and all would be great but I think the current list is probably the best for new developers.
 

·
Storage Nut
Joined
·
21,109 Posts
Sweet, can't wait to start myself, I'm a noob to to programing. lol

I see that you wrote that many suggest to start with say java or C++, but...

Is there any like standard language that you should learn first and build upon from there or is it more like start were you need to for the task?

Like C, C#, C++, etc. Any good order to learn in?

Once you know one language it should be easier to understand the rest as well?

I am starting a class next fall and would like learning now, (i think it is C) I have a little experience with HTML, a tiny bit of Microsoft Visual Studio, and using M$ scripts, but other than that very tiny limited knowledge I am useless lol
 

·
Registered
Joined
·
85 Posts
Discussion Starter #13
It (in my opinion though youll get crazy people who think other wise) doesn't matter I learned Java first and than I learned C++. Those two are pretty widely used languages and are great places to start. Once you know either Java or C++ it will be just syntax from there on out to learn other Object Oriented Languages. In general you want to learn one Object Oriented (Java/C++ etc) and one functional programming language such as C. After that point its basically just learning syntax for the language and what libraries are available for you to use.
 

·
Premium Member
Joined
·
1,563 Posts
Quote:
Originally Posted by Sean Webster View Post

Sweet, can't wait to start myself, I'm a noob to to programing. lol
I see that you wrote that many suggest to start with say java or C++, but...
Is there any like standard language that you should learn first and build upon from there or is it more like start were you need to for the task?
Like C, C#, C++, etc. Any good order to learn in?
Once you know one language it should be easier to understand the rest as well?
I am starting a class next fall and would like learning now, (i think it is C) I have a little experience with HTML, a tiny bit of Microsoft Visual Studio, and using M$ scripts, but other than that very tiny limited knowledge I am useless lol
You have come to the right place, young one...
wink.gif


ByteMyASCII's advice is pretty good. Learn one procedural (or functional) and one object-oriented programming language and then everything is basically just syntax.

The reason I recommend Python is that it is simple and it supports both object-oriented and procedural paradigms.

In my personal experience, it is easier to start with procedural programming to get used to making programs and then move on to OOP to actually understand how programs work in real life (or should I say virtual
tongue.gif
).

Basically, as long as you really have a passion to learn, you can start of with anything and still become a good programmer.
smile.gif
 

·
Registered
Joined
·
85 Posts
Discussion Starter #15
I prefer the reverse approach because naturally human beings think in objects therefore to get the basics down you would want to learn an Object Oriented language and than once you understand how that functions you would move onto a functional paradigm in order to understand the underlying concepts. But either or works its all preference.
 

·
Storage Nut
Joined
·
21,109 Posts
Quote:
Originally Posted by ByteMyASCII View Post

It (in my opinion though youll get crazy people who think other wise) doesn't matter I learned Java first and than I learned C++. Those two are pretty widely used languages and are great places to start. Once you know either Java or C++ it will be just syntax from there on out to learn other Object Oriented Languages. In general you want to learn one Object Oriented (Java/C++ etc) and one functional programming language such as C. After that point its basically just learning syntax for the language and what libraries are available for you to use.
Quote:
Originally Posted by {Unregistered} View Post

You have come to the right place, young one...
wink.gif

ByteMyASCII's advice is pretty good. Learn one procedural (or functional) and one object-oriented programming language and then everything is basically just syntax.
The reason I recommend Python is that it is simple and it supports both object-oriented and procedural paradigms.
In my personal experience, it is easier to start with procedural programming to get used to making programs and then move on to OOP to actually understand how programs work in real life (or should I say virtual
tongue.gif
).
Basically, as long as you really have a passion to learn, you can start of with anything and still become a good programmer.
smile.gif
Thanks guys, I look forward to learning!
biggrin.gif


I am going into Computer Engineering and need all the knowledge I can get with low level programming as well.

I will be making some threads soon and asking a bunch of q's, I can't wait to annoy you!
thumb.gif
 

·
Registered
Joined
·
305 Posts
Quote:
Originally Posted by Sean Webster View Post

Thanks guys, I look forward to learning!
biggrin.gif

I am going into Computer Engineering and need all the knowledge I can get with low level programming as well.
I will be making some threads soon and asking a bunch of q's, I can't wait to annoy you!
thumb.gif
If you want, get a 8008 interpreter or if you are into electronic engineering get a MCU and just learn assembly. That is very very low level, any lower and you reach literally 1's and 0's. If you know assembly, you will have a very firm grasp on what happens behind the scenes in a few programming languages.

The way I started was HTML (view page source in firefox, heh) and then I learned how to program C on the PIC mcu's. Then I learned some assembly, and I have to say it was EXTREMELY gratifying. You will have to learn assembly eventually, might as well learn it now.
tongue.gif
 

·
Registered
Joined
·
240 Posts
***Sorry for resurrecting this thread***

After doing extensive amounts of research, I have came to the conclusion that "Programming in C" is the BEST resource to use when learning C. There are currently 3 editions, ranging through 3 decades. There is also another edition that'll hopefully arrive in June 2013 (according to Amazon US). I'm having trouble deciding which edition to buy. The 3rd edition was published around 10 years ago and I'm certain that a lot has changes in this time, thus a new version in the midst of development. Which book do I buy? Shall I buy the 3rd edition now or buy the 4th edition in June (I don't mind waiting)?

I have a decent knowledge in HTML/CSS and also a small amount of knowledge in DirectX C++ (Using Chilli's Youtube tutorial)

EDIT: Here are links to the Amazon listing:

2nd edition: http://www.amazon.com/C-Programming-Language-2nd-Edition/dp/0131103628/ref=pd_bxgy_b_text_z
3rd edition: http://www.amazon.com/Programming-3rd-Edition-Stephen-Kochan/dp/0672326663/ref=pd_sim_b_5
4th edition: http://www.amazon.com/Programming-4th-Edition-Developers-Library/dp/0321776410/ref=dp_ob_title_bk

Side note: what the hell is this? http://www.amazon.com/Programming-Objective-C-Edition-Developers-Library/dp/032188728X/ref=pd_sim_b_2

Also, what does "developer library" mean?
 
1 - 18 of 18 Posts
Top