Register | Login
Views: 19364387
Main | Memberlist | Active users | ACS | Commons | Calendar | Online users
Ranks | FAQ | Color Chart | Photo album | IRC Chat
11-02-05 12:59 PM
0 user currently in Programming. | 3 guests
Acmlm's Board - I2 Archive - Programming - Where to start. What to start with. | |
Pages: 1 2Add to favorites | "RSS" Feed | Next newer thread | Next older thread
User Post
paraplayer

Snifit
Level: 22

Posts: 2/280
EXP: 57271
For next: 1079

Since: 06-06-05

Since last post: 44 days
Last activity: 44 days
Posted on 06-06-05 08:12 AM Link | Quote
What program language should i start with and how do i start with it.

Also what programming languages are the most flexible.


I know the VERY basics of programming through flash actionscripting but i wanna learn something i can use.

most importantly. how much will it cost me

(Note: I've already tried Python. Didn't like it)

I AM new to this so try and be nice!
HyperLamer
<||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people

Sesshomaru
Tamaranian

Level: 118

Posts: 4809/8210
EXP: 18171887
For next: 211027

Since: 03-15-04
From: Canada, w00t!
LOL FAD

Since last post: 2 hours
Last activity: 2 hours
Posted on 06-06-05 10:16 AM Link | Quote
VB is easy enough, good to start with. (stfu Disch. ) Once you're used to the API I highly recommend moving to C... Depending how much experience you have you may want to skip VB entirely as it's not all that useful in comparison (slow and not very powerful). C isn't easy at first but once you get used to it, it's generally pretty simple and a lot more flexible than VB could ever hope to be. (Way faster too. ) Not to mention C compilers are mostly free. If you use anything besides Visual C++ (which, as you might expect, is pretty buggy and generates messy, non-standard code) you'll need a resource editor for making dialogs and such; PE Module Explorer is the only one I've found that actually works but unfortunately it isn't able to create menus and has some other limitations. If you go with VC++, there's one built in (you can't use it with another compiler though).

So basically, in order, you should try VB6 a bit, then C/C++ (probably best to start with C) once you're used to basic API stuff. Anything you need to know about Windows, you can find here. The page lists information about all standard Windows controls, and typing a function's or struct's name into the search box will bring up loads of info about it (usually the first or second result, unfortunately you'll get squat with most other things). If that doesn't find it, Google will.
paraplayer

Snifit
Level: 22

Posts: 3/280
EXP: 57271
For next: 1079

Since: 06-06-05

Since last post: 44 days
Last activity: 44 days
Posted on 06-06-05 10:24 AM Link | Quote
Thanks for the help!

Actually i think i've made a script with VB before. I made one of those irratating things where alerts keep popping up except i took it to the next level and made the CD-ROM drive pop out repeatedly. Heh most annoying thing ever.

have any good links for starting out in VB6?

by the way... API is application to Person Interactivity right? (Or something like that)

EDIT: Last second question whats the diffrence between C and C+ totally diffreny or just a better version?


(edited by paraplayer on 06-05-05 05:26 PM)
ADnova
Newcomer
Level: 5

Posts: 1/9
EXP: 364
For next: 165

Since: 05-04-05

Since last post: 97 days
Last activity: 40 days
Posted on 06-06-05 01:26 PM Link | Quote
Even though my first language was C++, I'd recommend starting with plain old C.

C syntax is common for many languages, including C++, Java, PHP, and many others. So once you've learned C, it allows you to learn many other languages quickly. VB6 syntax is only used in VB6. I'm not saying VB is bad, it certainly has its uses, just that you may want to start with C.


Dish

Spiny
Level: 38

Posts: 413/596
EXP: 355646
For next: 14801

Since: 03-15-04
From: Disch

Since last post: 18 days
Last activity: 18 days
Posted on 06-06-05 06:16 PM Link | Quote
If you've done work in Flash's actionscript then you're already familiar with basic C/C++ syntax. (Actionscript was based on C++, just as many other languages were).

Skip VB entirely -- you won't need it and it will just waste your time. Grab a copy of Dev-C++ and/or MinGW (I believe MinGW is the compiler, Dev-C++ is an IDE for the compiler). I agree with ADnova -- you should start with straight C until you get the idea, then it'll be easier to move to C++ (C++ includes all of C, but has a bunch of extra stuff added. Straight C is very basic and simplistic, though -- C++ adds a lot of extra wacky rules that take longer to warm up to).

Starting VB will introduce you to a lot of abstract concepts that you'll ultimately have to completely disregard when you move to C. You're better off just starting with C and skipping that step.

API is "Application Programming Interface", meaning it's just a series of libraries and functions that your program uses in order to generate programs which run on the desired machine. For example, programs written for Windows will use functions will use window generation functions from the WinAPI. Programs which make use of DirectX will use its API, etc.
neotransotaku

Baby Mario
戻れたら、
誰も気が付く
Level: 87

Posts: 3131/4016
EXP: 6220548
For next: 172226

Since: 03-15-04
From: Outside of Time/Space

Since last post: 11 hours
Last activity: 1 hour
Posted on 06-06-05 10:14 PM Link | Quote
Originally posted by paraplayer
EDIT: Last second question whats the diffrence between C and C+ totally diffreny or just a better version?
C++ is C with mechanisms to do object oriented programming easier but otherwise they are the same. To make your programming learning experience easier if you are choosing between C++ and C, I'd go with C first. Once you understand C, picking up other programming languages will be easier.
paraplayer

Snifit
Level: 22

Posts: 6/280
EXP: 57271
For next: 1079

Since: 06-06-05

Since last post: 44 days
Last activity: 44 days
Posted on 06-07-05 03:33 AM Link | Quote
The compiler is what you type your scripts into right?


also whats openGL... i've heard some say it's very frustrating.

(Thank you for all the help so far guys this is really helpful!)
DarkSlaya
POOOOOOOOOOOORN!
Level: 88

Posts: 3696/4249
EXP: 6409254
For next: 241410

Since: 05-16-04
From: Montreal, Quebec, Canada

Since last post: 8 hours
Last activity: 5 hours
Posted on 06-07-05 03:39 AM Link | Quote
Originally posted by paraplayer
The compiler is what you type your scripts into right?


Not really.

More like the thing that's going to make an actual executable file.
paraplayer

Snifit
Level: 22

Posts: 7/280
EXP: 57271
For next: 1079

Since: 06-06-05

Since last post: 44 days
Last activity: 44 days
Posted on 06-07-05 03:41 AM Link | Quote
can you test your script with out the compiler?
DarkSlaya
POOOOOOOOOOOORN!
Level: 88

Posts: 3697/4249
EXP: 6409254
For next: 241410

Since: 05-16-04
From: Montreal, Quebec, Canada

Since last post: 8 hours
Last activity: 5 hours
Posted on 06-07-05 03:44 AM Link | Quote
Nope, at least not that from what I know (then again, I'm more experienced in Server-side Web Programming, so I don't know much about compilers).
paraplayer

Snifit
Level: 22

Posts: 11/280
EXP: 57271
For next: 1079

Since: 06-06-05

Since last post: 44 days
Last activity: 44 days
Posted on 06-07-05 04:02 AM Link | Quote
I wanna dive right into this!
Where can i get a compiler and the thing (cant remember what they're called.. you write the scripts into them) from?
neotransotaku

Baby Mario
戻れたら、
誰も気が付く
Level: 87

Posts: 3139/4016
EXP: 6220548
For next: 172226

Since: 03-15-04
From: Outside of Time/Space

Since last post: 11 hours
Last activity: 1 hour
Posted on 06-07-05 04:10 AM Link | Quote
The difference between C and C++ is certain things are simplified in C++ than C because they are tedious to do in C.

A compiler is a program that will take code and convert it into something that is executable.

OpenGL is an API that allows you to use your video card to render images.

http://www.mingw.org/ -- one of the best C compilers for windows
http://www.bloodshed.net/devcpp.html - an integrated development environment to make development a little easier
HyperLamer
<||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people

Sesshomaru
Tamaranian

Level: 118

Posts: 4817/8210
EXP: 18171887
For next: 211027

Since: 03-15-04
From: Canada, w00t!
LOL FAD

Since last post: 2 hours
Last activity: 2 hours
Posted on 06-07-05 05:48 AM Link | Quote
API is what you use to do anything with Windows. Creating a window, doing something when a button is clicked, opening the CD-ROM drive, and most other things like that are done via API. Generally you just include windows.h and all the functions you need are defined. (You may need to include other files or libraries, MSDN lists them at the bottom of the page.)

A compiler is what converts your code into a program. You can write the code in any standard text editor. (I wouldn't recommend something like Word though. Textpad is pretty nice.)

OpenGL is a graphics system. You can do some nifty things with it, but for simple stuff you can get away with the built-in graphic functions in Windows.

C++ is C and then some. C is probably simpler to start with, but it's mainly a matter of opinion. Just as whether to bother learning VB is up to you; some people benefit from it, others don't.
paraplayer

Snifit
Level: 22

Posts: 17/280
EXP: 57271
For next: 1079

Since: 06-06-05

Since last post: 44 days
Last activity: 44 days
Posted on 06-07-05 06:31 AM Link | Quote
whoa...

so i can use something simple like notepad to write things?

i never knew about that.
HyperLamer
<||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people

Sesshomaru
Tamaranian

Level: 118

Posts: 4838/8210
EXP: 18171887
For next: 211027

Since: 03-15-04
From: Canada, w00t!
LOL FAD

Since last post: 2 hours
Last activity: 2 hours
Posted on 06-07-05 08:17 AM Link | Quote
Sure, anything that saves as plain text. Just save it as whatever.c instead of whatever.txt. An IDE like Dev-C++ or Textpad can make things a LOT easier though. (I personally found Dev-C++ pretty buggy, but that's probably just my dumb luck. ) Textpad, for example, can highlight key words and strings and handles indentation automatically so you don't have to press Tab a bunch of times for every line. It's a really nice program.
Ramsus

Octoballoon
Level: 19

Posts: 78/162
EXP: 34651
For next: 1126

Since: 01-24-05
From: United States

Since last post: 39 days
Last activity: 71 days
Posted on 06-07-05 08:42 AM Link | Quote
Programming is a task split into several parts. You don't exactly have to understand how or why at first, but eventually you'll end up learning these things. The most important thing is to get a working setup and start experimenting and learning.

Anyway, this is how programming works (somewhat simplified, since I don't want to go too deeply into computer architecture with a beginner or bore you with lots of concepts like "linking" and "libraries"):


First, there's writing high level source code in a language like C++ or Visual Basic. The "source code" is just saved as plain text files, but they usually have their own extensions (like .cpp or .bas). You can edit it with any text editor, although there are a lot of really good text editors designed just for programmers that have things like "syntax highlighting" which highlights the language keywords with colors.

The next step depends on if you're language is compiled, byte-compiled, or interpreted (scripted). These steps are necessary because your CPU has it's own binary language called machine code, with assembly language being it's human readable counterpart. So to run your source code, something has to "translate" it into machine code that your CPU can understand.

Compiled languages use a program called a "compiler" to generate machine code from source code. This machine code is then saved into an "executable" program file that the operating system can run on its own by simply loading it into memory and sending the machine code to the CPU. The executable will only work with the same type of operating system and CPU that you have (i.e., a Windows PC with an Intel-type processor).

Interpreted languages like Javascript or Python are translated by an "interpreter" or "scripting engine" that loads the source code, translates it into machine code, and then runs it. The difference here is that the machine code is generated and then run immediately by the interpreter, instead of being saved into a file and run separately by the user. This means you don't have to compile and then run the program, but it also means anyone who uses your program needs an interpreter.

Byte-compiled languages are kind of like compilers in that they translate the source code and save it in a different form, but they translate the source code into "bytecode", which is easier to translate to machine code than source code. The bytecode can then be loaded by a bytecode interpreter that then translates it to machine code. This is all faster than interpreting source code, but you can't edit bytecode in a text editor.

Most scripting languages like Python and Perl are both interpreted and byte-compiled languages for performance reasons, but some languages like VB (with Pcode) and Java (with JIL) are simply byte-compiled.

That's all fine and dandy, but how do you get started right? Where can you get the tools you need? What are some good beginner projects to try? Where can you find good tutorials?

Unfortunately, I'm too busy to post links right now, but...

I'll put together a list of different tutorials (for a variety of languages/environments, as well as how computers work) to get started in programming later this week, along with a few guides on getting a working setup for learning C, C++, Python, Perl, Scheme, etc. for beginners without money. I'll also make a few book suggestions, but mostly continued learning at a higher, more advanced level.

To make it more accessible to people, I'll even make it into a well-organized website. If anyone has any personal suggestions for tools, tutorials, or books, let me know.

And if I have trouble finding good tutorials, I'll write my own.
Xeolord

- B l u e s -
Power Metal > All
Level: 81

Posts: 2082/3418
EXP: 4884196
For next: 108653

Since: 03-15-04
From: Yeah

Since last post: 15 hours
Last activity: 15 hours
Posted on 06-07-05 10:41 PM Link | Quote
Programming is a task split into several parts. You don't exactly have to understand how or why at first, but eventually you'll end up learning these things. The most important thing is to get a working setup and start experimenting and learning.

Nicely said. The best way to learn programming is to experiment, and make simple things at first. At first you might not even know what you're doing, but eventually you'll see patterns, and see things that you can define and find.

Personally, I've taken both a VB course and a C++ course at my school, and I have to say I enjoyed C++ more in every way. It was more hands on solid-programming with Visual C++, while with Visual VB it was more like making what your program will look like, then editing things here and there, not really starting from scratch or anything.

So, I think I learned a lot more about programming in my C++ class over my VB class, but you may differ.

You may want to attempt C though, because I do have to agree with ADnova. C++ is basically an shortcut version of C. So if you're really interested in learning programming, you might want to learn C to know and learn more, and from there you could probably easily adapt to other languages, again like others said.

Sorry for repeating what most already said ... just my hands on experience. I doupt VB would ever become very useful for you, and C or C++ seems like a better language to start off with where you could easily leave from there and then adapt to other languages.

Just be sure to find a good compiler, but know your code created in that compiler may not compile nicely in other compilers (issue I had with Visual C++).
HyperLamer
<||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people

Sesshomaru
Tamaranian

Level: 118

Posts: 4844/8210
EXP: 18171887
For next: 211027

Since: 03-15-04
From: Canada, w00t!
LOL FAD

Since last post: 2 hours
Last activity: 2 hours
Posted on 06-07-05 11:29 PM Link | Quote
VB is good if you need to hack up a simple program ASAP.

Just to clarify on the different types of programs a bit:
-Languages like C/C++ are compiled. You run the source code through a compiler, and it spits out machine code designed specifically for whatever type of CPU your system uses. This has the advantage of being faster and more efficient than anything else (and can run without needing any runtimes, drivers, etc - even without an operating system if you design it that way) but you can't, say, compile it for x86 (PC) and run it on a Mac. Also, it's very difficult to disassemble or decompile these back to source-code form, because there's no way for a decompiler to tell what parts are code and what parts are data.

-Languages like VB and Java(?) are 'pseudo-compiled' (bytecode). It works the same as a regular compiled program, but it uses its own, made-up instruction set. You use another program (usually some sort of runtime) to convert the instructions to whatever type your CPU can use. These are slower, take up more memory, and generally require some sort of external program or file, but you can run the same program on any kind of computer as long as the runtimes are installed on it. (Think how an emulator works - it's exactly the same, but in this case the system it's emulating doesn't really exist.) One other thing to note is that it's easily possible to de-compile these back into almost exact source code (if anyone's written a program to do so), but you'll lose things like comments and function names.

-Languages like Javascript are interpreted. It's the exact same idea as bytecode, but you don't compile it. You distribute the source code itself, and the system compiles it to whatever instruction set it needs. In other words it's just like bytecode, but a bit slower and completely open-source (as the source code is the program).
rg_

Goomba
Level: 8

Posts: 4/26
EXP: 1964
For next: 223

Since: 03-27-05

Since last post: 21 hours
Last activity: 12 hours
Posted on 06-07-05 11:33 PM Link | Quote
I think the most important thing for someone starting programming is to see results as quickly as possible to avoid getting frustrated because you think all that programming stuff is over your head. In the beginning I'd forget about all theory and just try to code a small Windows application.

A Notepad clone is absolutely perfect for that. If you know what you're doing you can make a Notepad clone in 15 minutes with all common RAD tools (Delphi, C++ Builder, VB, the .NET languages) and even if you don't really know what you're doing I think you could get quite far just clicking your GUIs together. You would definitely get your "woah, that was cool" moments. When you're doing console C++ and wondering what the difference between a C string and a C++ string are these moments might exist too but they'll definitely not be as cool.

Of all the RAD tools I've listed above C# 2005 (using Visual Studio) is by far the best in my opinion. It has exactly the right mix of ease and power unlike VB which leans towards the former and C++ which leans towards the latter.

Visual C# 2005 Express Edition Beta 2 is available free of charge at http://lab.msdn.microsoft.com/express/vcsharp/default.aspx
Ramsus

Octoballoon
Level: 19

Posts: 82/162
EXP: 34651
For next: 1126

Since: 01-24-05
From: United States

Since last post: 39 days
Last activity: 71 days
Posted on 06-08-05 04:00 AM Link | Quote
Microsoft has some "Visual Studio 2005 Express" software available for their major languages/platforms: http://lab.msdn.microsoft.com/express/

Go ahead and use them for Windows. After all, it's Microsoft Windows, so why not use Microsoft development tools?

Another free C/C++ IDE (which is just an editor with a compiler and a way to manage your source code) for Windows: http://www.bloodshed.net/devcpp.html

It uses GCC as a compiler, which is open source and is used for almost all Linux, BSD, and Mac OS X programming. Good for writing portable code. Less good for just Windows programming.

Some good notes on C: http://www.cs.cf.ac.uk/Dave/C/CE.html
I've heard people use this site for C++: http://www.cprogramming.com/tutorial.html

Java is a good programming language for a lot of things.
http://java.sun.com/j2se/1.5.0/download.jsp
You can also use Eclipse for an IDE, but it doesn't come with a Java compiler or runtime environment (so you still have to download those from the above link):
http://www.eclipse.org/downloads/index.php

Sun has a nice trail set of tutorials. They're a bit fast, but if you stick to them, you can learn Java rather quickly. If you're already familiar with the concepts, it might only take a few days.
http://java.sun.com/docs/books/tutorial/

EDIT:
C# is Microsoft's answer to Java. These tutorials look interesting:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/csref/html/vcoricsharptutorials.asp
http://www.softsteel.co.uk/tutorials/cSharp/contents.html

Perl is a good language if you want to mess with lots of text and data instead of writing games or big desktop applications: http://www.activestate.com/Products/ActivePerl/?_x=1
Tutorials et al: http://www.perlmonks.org/index.pl?node=Tutorials#perlstart
http://www.comp.leeds.ac.uk/Perl/start.html

PHP is good for web development:
http://www.php.net/manual/en/

As for choosing a language, just try out stuff and find something that works. It's a big plus if your compiler or interpreter has good reference documentation though.

If you just like programming for programming's sake and want to get to know computers well, while gaining access to just about everything your OS can do, give C a try. The language is small and well worn, but it allows you to do anything. Then as you need more powerful abstractions to manage bigger projects, you can move into C++, which still lets you access everything C can.

If you want to get started with fancy programs from the get go, go ahead and choose something like VB.Net, C#, Python, or Java. These types of languages also have large libraries you can take advantage of, and the abstractions they provide mean you don't have to understand what's really going on inside the machine. This means you can get started quickly.

---

Other stuff concerning thoughts for my own tutorial site.

---

I find writing programs that aren't interactive to be very interesting, but most beginning programmers these days have probably never seen a console window, let alone a real shell. Since I'm not sure how to approach a tutorial series, I'm sort of brainstorming. Let me know your experiences and ideas.

Since the very concept of what a "program" is isn't the same for most beginners these days as it was ten or twenty years ago, I think it's better for a beginner's tutorial for Windows users to focus on creating an interactive, event-based program instead of a terminal application (I've seen the "what? this is programming?" look too many times). An interactive language with a visual shell has the advantage here too, since the user can get instant results and test parts or their entire program without having to understand terminal interfaces or create new projects.

Windows isn't very UNIXy to begin with.

Then to move from beginner to intermediate, the programmer can plunge into how computers work and learn to write programs in a "pseudo" RISCy assembly language for a simulated system that has a display window (with text and graphics modes), keyboard and mouse input, and access to the filesystem of the OS it runs on.

From there, moving on to C would follow more easily. Even pointers would be an easy concept to understand (just a method for addressing memory). After learning C, the programmer would be introduced to creating and using abstract data types. Finally, he could be encouraged to try using a variety of libraries, frameworks, and APIs to learn various concepts and put them to use.

Then the programmer could be taught a few different paradigms, such as Object-Oriented programming, while learning Java or C++.

Another approach I'm considering is beginning by writing web applications. The user could install Apache and PHP on their computer and learn how to write scripts for it. Then they could be introduced to C from the context of writing CGI applications. From there, they could move into system programming with C.

I'd like to put a lot of thought into this though, which means once it's written, it'll likely be rewritten, over and over, until it's very good. I also want to avoid requiring things that won't be around in ten or twenty years. C looks like it'll live on for a long time, C++ and Java are big right now, and Pascal and Fortran are already dead.


(edited by Ramsus on 06-07-05 11:05 AM)
Pages: 1 2Add to favorites | "RSS" Feed | Next newer thread | Next older thread
Acmlm's Board - I2 Archive - Programming - Where to start. What to start with. | |


ABII


AcmlmBoard vl.ol (11-01-05)
© 2000-2005 Acmlm, Emuz, et al



Page rendered in 0.012 seconds.