Jump to content


 


Register a free account to unlock additional features at BleepingComputer.com
Welcome to BleepingComputer, a free community where people like yourself come together to discuss and learn how to use their computers. Using the site is easy and fun. As a guest, you can browse and view the various discussions in the forums, but can not create a new topic or reply to an existing one unless you are logged in. Other benefits of registering an account are subscribing to topics and forums, creating a blog, and having no ads shown anywhere on the site.


Click here to Register a free account now! or read our Welcome Guide to learn how to use this site.

Photo

I want to learn to program


  • Please log in to reply
7 replies to this topic

#1 SobiMask

SobiMask

  • Members
  • 15 posts
  • OFFLINE
  •  
  • Gender:Male
  • Local time:02:05 AM

Posted 04 August 2009 - 11:24 PM

Hi everyone, pls give me some advice on this. I'm still in school but after graduating from university iIm thinking of getting a software engineering related job. That means I have to know a programming language right?

What programming language should I start with?

How do i learn? From a book? Should I find someone to teach me?

What about algorithms? Are they part of programming? If is for what programming language? Do I need to learn about them?

One of my friends say that C++ is the best choice. That most games are made from C++. Is that true? Does this make it the best choice for me (if say i'm gonna work for blizzard)?

Do I need any prior knowledge to be able to program aside from being able to use Microsoft Office, surf the internet, play games (I'm quite confident in my gaming prowess), customize windows appearance, rip music etc.?

I've had a look at the requirements+ to become a software engineer for Blizzard Entertainment and it says [# Strong data structures, logic, and algorithm skills, as well as a broad understanding of game systems
# Experience with code optimization ] will I get to know about these things when I learn to program?

Thanks for ur advice.

"Dignity consists not in possessing honors, but in the consciousness that we deserve them."
Aristotle


BC AdBot (Login to Remove)

 


#2 syscorpsecure

syscorpsecure

  • Members
  • 118 posts
  • OFFLINE
  •  
  • Local time:02:05 PM

Posted 05 August 2009 - 12:18 AM

SobiMask:

I have two college degrees - one in Computer Engineering and one in Managed Information Systems. MIS is the business side of computing and gave me the "why", where my CE degree gave me the "how".

Speaking from experience, you need to understand why you feel the need to program (what problems you want to solve) in order to understand the how (what languages you want to learn).

If you want to develop business applications - learn C, C++, COBOL, DotNET, and DOS (yes, I said it :thumbsup: - the "old school" backbone of programming languagues). Why DOS? Because there are lots of situations where the only thing that matters are the program instructions to be carried out and "GUI" [Graphical User Interfaces] are a waste of time. If you really want to be marketable, learn EDI (Electronic Data Interchange) programming.

For Internet and ECommerce applications - learn C, C++, Java, HTML, DotNET, Visual Basic, Visual COBOL, ODBC, Visual Basic for Applications (VBA), Perl, CGI, ASP, PHP, JavaScript, and Flash (if you want to be artistic).

For consumer based (read here "Desktop") application programming, C++ and Visual Basic, hands down. Throw in ODBC, Java, use of Visual Studio and NetBeans IDE, UML, SQL Server, MySQL, Postgres (just about any database programming will do).

Think of it this way, C is the "Granddaddy" of all programming languages. To program in C, you need to be able to develop good problem solving skills (logic), be able to put your solutions into packages (algorithms) which can be reused in many ways to solve different problems that may be unrelated physically but identical in fact (structures). C and C++ are where you need to begin, especially since you seem to be enthusiastic about game programming.

As far as learning method...thats up to you. Pick the one that works best for you but I find that I learn best when I have the ability to do things hands on.

#3 Keithuk

Keithuk

  • Members
  • 960 posts
  • OFFLINE
  •  
  • Gender:Male
  • Local time:08:05 PM

Posted 05 August 2009 - 07:23 AM

I want to learn to program has been asked a few times, try a search. :thumbsup:

Keith

Windows ME (spare computer)
Windows XP 2002 Professional SP3 (desktop computer)
Windows 7 Professional SP1 32bit (laptop computer)

Windows 8 64bit spare drive for laptop computer


#4 DemiReticent

DemiReticent

  • Members
  • 17 posts
  • OFFLINE
  •  
  • Gender:Male
  • Location:Texas
  • Local time:12:05 PM

Posted 05 August 2009 - 04:33 PM

If you want to be a professional developer, you should definitely take courses during college that teach programming concepts as well as the specific languages.

In my experience, programming (the thought process) is more or less the same in any language. That said, there are things that are easier in some languages than others. You need to consider what the language was designed to do. For example, it is POSSIBLE to program native functions in Java for low-level programming. However, it is infinitely easier to program native Windows code in languages in the C family or the .NET family.

Javascript is designed to interface with HTML via the document object model, so you wouldn't be able to use just any language for that. There are a variety of other languages that can also be used for web programming.

You also need to know whether a language is more "high level" in which case more of the algorithms have been taken care of for you, or "low level" which means that you'll have to program all the algorithms from scratch or find code that has already been written that does whatever you need to do. Low level is much easier to work with the system directly but making user interfaces takes a lot of code and a LONG time to do. High level means that you'll have an easier time interfacing with the user and doing common tasks, but when it comes to the finer details of what the system actually does, you have very little control.

For an idea:

C, BASIC, *.NET are all relatively low level.
Python is extremely high level.
Java is somewhere in between.

My personal recommendation is to gain some experience in Java because you get a chance to really develop the problem-solving skills necessary to program, then move on to a more (or less) difficult language to help you accomplish your goals. Even if you rarely use it, it is probably good to have a high level language like Python or Ruby because it is easy to program small tasks, or a highly specialized language like AutoHotkey. You can do a lot of the same things with any language but the differences are how easy it is to do things (with little control over detail) or how hard it is to do those same things (full control of detail).

---

A ranking from lowest-level to highest level:

Something like Assembly gives you absolute control over every detail. But you're so buried in the detail that programming is difficult and it is hard to read the code.

C gives you a little less control over detail but you can get it at if you need to -- algorithms aren't really ever handled for you and the syntax can be difficult and even frustrating to master, as the compiler is absolutely UNFORGIVING.

C++ gives you a lot more libraries to handle the common tasks and gives you object oriented programming -- both of which take the hassle of fine detail out of your hands and let you focus on task-oriented or interface programming. You can still program C++ like you were programming C (almost everything you could do in C can also be done in C++) so you still have strong low-level access. It is good to know or at least understand C in order to program in C++.

Java lets you see everything you need to see, isn't easily integrated with other languages, requires some scaffolding, but in the end is a very clean-looking language with an expansive and well-documented library of built-in functions. It has the added advantage of being cross-platform. If you program well in Java you can add layers of abstraction even during a single project so that once you've finished with algorithmic work you can focus on program logic.

The .NET languages are similar to C++ but use different libraries that allow for easier integration of the languages in a single project. Each of the languages has its benefits.

Python gives you no control over detail and is so simplified that you can do the same thing in a single line of code that might take you 3, 5, or even 10 lines in another, lower level language.

---

Learning a single language would be very narrow of you. I would start with C/C++ or Java but definitely pick up others. C/C++ is where you want to be for Game programming but don't limit yourself.

The more languages you learn and the more experience you have writing code in them you'll begin to see that all of programming is very much the same. You just have to know the syntax of each language and have an idea of how much has already been done for you or you may end up writing useless code for things that you could already do in a much easier way.

Especially with Java, and more high level languages, the golden rule is DON'T WORK TOO HARD!

---

As far as what you need to get started: to write code, you don't need to know how to do anything that the OS or the programs you install can do. All you need is a text editor (notepad is usually fine) and you can get started. Although you should probably use an editor more specialized for the language. As far as compiling, debugging, and running code, you need to know more about the language and probably install some software. In order to write code effectively you need to be able to do these things. Ask someone who already programs in the language or Google a how-to for whatever language you want.

For example, Eclipse editor is excellent for Java. DevC++ is a decent free editor for C or C++ code. Microsoft Visual Studio products are good for .NET languages (c++.net, C#, VB.net, etc). However you could technically program any language in notepad or notepad++; you might just have to do a little extra work to compile, run, and debug your code.

---

"aside from being able to use Microsoft Office, surf the internet, play games (I'm quite confident in my gaming prowess), customize windows appearance, rip music etc"


none of these things will help you program. rather, learning to program will help you understand on a deeper level how these things work.

In general, prior knowledge would be limited to being able to turn on a computer and how to use a keyboard (and a mouse, though not necessarily). It will help if you have an organized mind and think logically, but if you are not, you will develop these skills.

Programming is at the heart of everything a computer does and is in many ways one of the most free-form tasks you can do on a computer. With software developed by others you are limited by what functions they programmed into the software. In programming, you can make your program do whatever you want. You're building tools from the ground up. The power to control and expand on the tools the computer gives us is what makes programmers love what they do (at least in my experience).

Every language requires some basic knowledge of how the language works. Do a little reading up and following tutorials or start-up guides should be your first step when working with any language.

#5 SobiMask

SobiMask
  • Topic Starter

  • Members
  • 15 posts
  • OFFLINE
  •  
  • Gender:Male
  • Local time:02:05 AM

Posted 05 August 2009 - 09:07 PM

Thanks everyone! :thumbsup:

I'll start with C and Java then. =D

"Dignity consists not in possessing honors, but in the consciousness that we deserve them."
Aristotle


#6 jdkool09

jdkool09

  • Members
  • 9 posts
  • OFFLINE
  •  
  • Local time:01:05 PM

Posted 06 August 2009 - 05:53 PM

for a good java interface I would suggest looking up and downloading JCreator LE. It's what I've used for the past two years in my Computer Science classes learning Java.

#7 SobiMask

SobiMask
  • Topic Starter

  • Members
  • 15 posts
  • OFFLINE
  •  
  • Gender:Male
  • Local time:02:05 AM

Posted 06 August 2009 - 08:54 PM

thanks


I'll give it a try.

"Dignity consists not in possessing honors, but in the consciousness that we deserve them."
Aristotle


#8 BubbaT

BubbaT

  • Members
  • 42 posts
  • OFFLINE
  •  
  • Local time:01:05 PM

Posted 28 September 2009 - 01:17 PM

I am presuming that you have no knowledge of programming at this point.

Which leads to the question "You wanted to work in software engineering, but you didn't take a single course in Software Engineering? Why?"

Not just to me but to every good employer out there. So better have a good answer ready.

Some employers will not ask, but guess what the people working there will be the kind of people who hire programmers who didn't take a single programming course in college. So if they don't ask I would expect a less then auspicious beginning to your career.

As to how to start.
Buy these three books

Any book on introductory ruby programming. My particular suggestion would be to download, Programming Rubythen buy "Ruby by Example: Conepts and Code" by Barid . Start learning Ruby immediately.

Every programmer should know at least one of the three scripting languages: perl,python, ruby. Of these Ruby is the cleanest.

After getting about a quarterway into ruby, I would read:

The Unix Programming Environment, Kernigan and Pike

Even if you plan on not going anywhere near Unix. Even though you already have some knowledge of a scripting language, you will still need some knowledge of the scripting process which is what this book will convey.

The final book:

"The Pragmatic Programmer" By THomas and Hunt. Excellent book which will get you started on programming itself. Stay away from later stuff though. Like many such gurus, after a while their success goes to their head and they overdo it.

Now the main part of the process.

Go to: http://see.stanford.edu/see/courses.aspx
Download the videos for the three programming courses. Download the rest of the material too. DO your book reading and use the syllabus to plan out a course sof study while waiting for the videos to finish. i suggest that afterwards you burn everything to a DVD.

One important thing to do. Take it slow. When you read the books do not try to do it in one sitting, spend at most three hours of the day reading. Do not take the courses faster then twice what the syllabus says. Do the assignments in the course material.


Finally find some open source project to contribute to, at first make minor contributions and work your way up.




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users