Newbie to Programming

K

Kato06

Good afternoon all. I'm interested in beginning to learn how to
program. The problem is with so many different languages out there
which one should I be considering?? I have no previous programming
experience. Any help or suggestions would be greatly appreciated.
 
W

WW

Kato06 said:
Good afternoon all. I'm interested in beginning to learn how to
program. The problem is with so many different languages out there
which one should I be considering?? I have no previous programming
experience. Any help or suggestions would be greatly appreciated.

http://www.python.org
 
P

Player

Kato06 said:
Good afternoon all. I'm interested in beginning to learn how to
program. The problem is with so many different languages out there
which one should I be considering?? I have no previous programming
experience. Any help or suggestions would be greatly appreciated.

I was at the same point you find yourself at earlier last year, and I went
through a myriad of choices following allsorts of advice from different
people.

I started with TCL then through that found Python, which did prove to be a
good starting point as the syntax is fairly relaxed and user friendly, as
programming language syntax goes.
Anyway from there I went over to Scheme which I found to be a better
language by far than both of the others I had tried previously.
So I would say to you, that if you want to grasp the basics the of
programming first before you start to fix on one particular language that
you will favour over all, as most coders end up doing, I would say try
Scheme and read the books HTDP and SICP. HTDP = How to Develop Computer
Programs, and SICP = Structure and Interpretation Of Computer Programs,
these books both centre around explaining programming and the development of
good coding practices, through the use of the language Scheme.
URL'S AS follows below:::
http://mitpress.mit.edu/sicp/full-text/book/book.html
http://www.htdp.org/

After a while you will start to realise, that unless your a complete
Unix/Linux/bsd fan and only use them, that learning to code for your windows
orientated operating system is the must, and so you will no doubt end up
either trying a free IDE like Bloodsheds DEV-C++ or go for the much more
powerful and all together superb IDE of the Microsoft Visual Studio, were
you can code in c++, c, java, and vb also.

I would say to you that in if I were to go back and start again on my road
to learning coding, but taking with me certain info about the languages and
development environments I no of now, I would do the following......
1-- Learn Scheme via HTDP AND SICP
2-- Obtain Microsoft's Visual Studio .Net 2003 and learn on that all the
powerful languages of C, C++, Java, J#, C#, VB .net

If on the other hand you just want to get right into the big languages then
I would say, Obtain MS Visual Studio .net 2003 and begin there and learn
all the languages associated with it, as the new .net framework can be cross
platform-OS capable, and quit frankly I cant sing it's praises enough.

Hope I have been of some help to you :)

Player
 
J

jeffc

Chris Dams said:
I think if you start programming the language does not matter that much.
The programming paradigm does matter however. I would think starting
within the procedural programming paradigm is best. Start by learning about
bottom-up versus top-down programming. If you use C++ (after all, this is a
C++ group), after a while, it is okay to use classes but even then I
think you should wait a bit with putting so-called member-functions
inside them. That is a bit more advanced.

I think it's only "advanced" if you learn regular procedural programming
first. They say that those who learn Object-Oriented programming first have
it come more naturally and clearly to them, as opposed to those who learned
structured programming for a long time, and then tried to switch. For
example, some of the worst C++ code I've ever seen was written by reasonably
experienced C programmers.
 
C

Chris Dams

Hello,

Good afternoon all. I'm interested in beginning to learn how to
program. The problem is with so many different languages out there
which one should I be considering?? I have no previous programming
experience. Any help or suggestions would be greatly appreciated.

I think if you start programming the language does not matter that much.
The programming paradigm does matter however. I would think starting
within the procedural programming paradigm is best. Start by learning about
bottom-up versus top-down programming. If you use C++ (after all, this is a
C++ group), after a while, it is okay to use classes but even then I
think you should wait a bit with putting so-called member-functions
inside them. That is a bit more advanced. After you are confident with
bottom-up and top-down programming you can learn about recursion, which
is a rather interesting subject.

Good luck,
Chris Dams
 
N

Noah Roberts

I think it's only "advanced" if you learn regular procedural programming
first. They say that those who learn Object-Oriented programming first have
it come more naturally and clearly to them,

That depends, OO as in C++, or OO as in Objective-C/Smalltalk/Java/Every
other OO? It can be rather difficult to make the transition from one to
the other.

as opposed to those who learned
structured programming for a long time, and then tried to switch. For
example, some of the worst C++ code I've ever seen was written by reasonably
experienced C programmers.

I wonder if it would be an even better idea to start with
aspect-oriented programming now.

NR
 
J

jeffc

Chris Dams said:
I suppose it depends on how much experience someone first gets with
procedural programming and how willing (s)he is to learn something new.
The idea of "splitting a complicated task in simpler and perhaps even
reusable ones" that is at the basis of procedural programming is something
that for most people needs some getting used to and some trying out.
After having written perhaps some simple game-like programs of, say,
1000 lines, using structs without member functions it should, with a
few good examples, be rather obvious that hiding the data causes less
trouble if the data representation must be changed or when making sure
that invariant conditions on the data representation remain satisfied.
If someone has not seen procedures these remarks may be highly obscure.
Trying too much at once is usually a bad idea.

On the other hand, objects model the world better for most inexperienced
programmers. Haven't you been in a high level design review where some
programmers inevitably start talking about arrays and files and data
structures? Put a bunch of newbies with problem solving experience, but no
programming experience, and they'll be talking in terms of objects and
responsibility, naturally.
 
J

jeffc

Noah Roberts said:
That depends, OO as in C++, or OO as in Objective-C/Smalltalk/Java/Every
other OO? It can be rather difficult to make the transition from one to
the other.

Well, you can get away with a lot in C++, as opposed to "pure" OO languages
like Smalltalk. (That's why I said the worst C++ code I've seen was by C
programmers who knew just enough OO to make a real mess.) But I meant
"real" OO.
I wonder if it would be an even better idea to start with
aspect-oriented programming now.

Never heard of it.
 
N

Noah Roberts

jeffc said:
Well, you can get away with a lot in C++, as opposed to "pure" OO languages
like Smalltalk. (That's why I said the worst C++ code I've seen was by C
programmers who knew just enough OO to make a real mess.) But I meant
"real" OO.

A flame war may start now, but I must say...C++ is not capable of it.
This is why I was saying that a beginner who has learned "real" OO may
find C++ difficult. There are many things in C++ that work completely
differently then they will be used to and the transition can be quite
difficult.

About getting away with more, well it depends on what you are trying to
get away with. I would say it works both ways on that end.
Never heard of it.

One of the "post oop" ideas that seem to have the most weight behind it
right now. A google search or a search at citeseer will turn up much
information. There is an AspectJ and an Aspect-C++ that I know of.
Both are extensions to Java and C++ respecively. I can't say I really
understand it as I have studied it very little, don't really have the
time for a brand new paradigm right now. Instead of centering around
objects, which it still has, it centers around what they call "aspects"
that seem to basically be states.

NR
 
W

WW

Noah said:
A flame war may start now, but I must say...C++ is not capable of it.

IMO it is.
This is why I was saying that a beginner who has learned "real" OO may
find C++ difficult.

The reason they find it difficult is because they have learnt as real OO:

- high level langauges
- something which is the worse OOD possible (cosmic, fc. Java, MFC etc.)
There are many things in C++ that work completely
differently then they will be used to and the transition can be quite
difficult.

Again: because C++ is a low level langauge and provides more opportunities.
Also C++ is a not an interpreted language either, so it gives you pure OO
but not reflection as in Java and classes are not fisrt class objects. But
that is not part of pure OO either. So IMO people coming from _interpreted_
(be it interpreted by an engine or interpreter or VM) or _dynamic_ languages
find that transition hard. IMO at least what I have learnt as OO is all in
there.
 
N

Noah Roberts

The reason they find it difficult is because they have learnt as real OO:

- high level langauges
- something which is the worse OOD possible (cosmic, fc. Java, MFC etc.)

On the other hand you have something like Objective-C and the Next API.
And I agree, Java is shit as a language though not always interpreted
(gcc).

Again: because C++ is a low level langauge and provides more opportunities.
Also C++ is a not an interpreted language either, so it gives you pure OO
but not reflection as in Java and classes are not fisrt class objects. But
that is not part of pure OO either. So IMO people coming from _interpreted_
(be it interpreted by an engine or interpreter or VM) or _dynamic_ languages
find that transition hard. IMO at least what I have learnt as OO is all in
there.

Dynamic messaging is a main component of OO IMHO. An OO language should
have no need for such things as 'virtual' or templates. For instance,
build a C++ container that can accept as members any and all objects,
not just a single type or subtype. Certainly not as simple as in
something like Objective-C or Java.

NR
 
C

Chris Dams

Hello,

I think it's only "advanced" if you learn regular procedural programming
first. They say that those who learn Object-Oriented programming first have
it come more naturally and clearly to them, as opposed to those who learned
structured programming for a long time, and then tried to switch. For
example, some of the worst C++ code I've ever seen was written by reasonably
experienced C programmers.

I suppose it depends on how much experience someone first gets with
procedural programming and how willing (s)he is to learn something new.
The idea of "splitting a complicated task in simpler and perhaps even
reusable ones" that is at the basis of procedural programming is something
that for most people needs some getting used to and some trying out.
After having written perhaps some simple game-like programs of, say,
1000 lines, using structs without member functions it should, with a
few good examples, be rather obvious that hiding the data causes less
trouble if the data representation must be changed or when making sure
that invariant conditions on the data representation remain satisfied.
If someone has not seen procedures these remarks may be highly obscure.
Trying too much at once is usually a bad idea.

Bye,
Chris Dams
 
W

WW

Noah said:
Dynamic messaging is a main component of OO IMHO.

I think not.
An OO language should have no need for such
things as 'virtual' or templates.

I absolutely disagree.
For instance,
build a C++ container that can accept as members any and all objects,
not just a single type or subtype.

Yeah. I have a proposal to the language which can do that in one way.
There is another proposal, which will do it another way (more like the Java
way).

But IMO this is not necessarily a good way to go. There are inheritly
dynamic problem domains such as databases. But at other places making the
code dynamic will just bring up the number of possible errors to infinite
and the number of compile time detectable ones close to zero (syntax aside).

IMO as you cannot buy a car or a furniture which can store anything from
neutrinos via closthing up to space shuttle it makes absolutely no sense to
do that in code. Unless you store them under a common type: such as
abstract concepts etc.
Certainly not as simple as in something like Objective-C or Java.

Thanks God. I don't have to write crap code with absolutely no internal
structure, because the "clever ones" defining the structure cannot come up
with just any mess they want to.
 
L

Larry Lindsey

and so you will no doubt end up
either trying a free IDE like Bloodsheds DEV-C++ or go for the much more
powerful and all together superb IDE of the Microsoft Visual Studio, were
you can code in c++, c, java, and vb also.

Warning: MS Visual Studio doesn't compile standard Java.

I haven't had much experience with Python, but while scheme is a relatively
easy language to learn, especially if you are accustomed to math, it is not
quite representative of most of the languages you would encounter. I think
its a good idea to learn programming practice in scheme, but be prepared to
learn completely new syntax when you move to Java, C, or C++.

After you feel comfortable with Scheme, I would suggest moving to either
Visual Basic or Java.

Visual Basic is pretty easy to learn, and quick to get programs up and
running, but be prepared to spend a lot of time figuring out which functions
to use and what they do. Visual Basic is a good introduction to method
based programming, and contians a few concepts involved with object oriented
programming.

Java is really neat because Sun lists all relevant functions in the default
development environment, and how to use them and what they do. It does take
a bit of searching if you don't already have an idea of which Class to use,
but it is a lot easier than trying to figure out what function does what
with Visual Studio or .NET, both of which have horrible documentation, and
you would need to purchase a third party book in order to figure anything
out. Another neat thing about Java is that you don't have to handle any of
the ugly memory management stuff. Its a very good way to introduce yourself
with Object Oriented Programming. There are a few downloadable IDE's for
Java, but I can't recommend any of them since I haven't used them. (I'm an
EMACS fan). JCreator and JBuilder are supposed to be good.
 
J

jeffc

Noah Roberts said:
A flame war may start now, but I must say...C++ is not capable of it.

That's pretty much a red herring. According to Bertrand Meyer, Smalltalk is
not a real programming language either. What, C++ is not a "pure" OO
language because it doesn't support a single Object hierarchy? "So what?" I
say.
This is why I was saying that a beginner who has learned "real" OO may
find C++ difficult. There are many things in C++ that work completely
differently then they will be used to and the transition can be quite
difficult.

My whole point was related to those who don't have a transition to make.
 
J

Jerry Coffin

[ ... ]
It doesn't compile standard C++ either.

As has been pointed out here before, every compiler except Comeau's has
some pretty obvious shortcomings in its implementation of C++ (Comeau
_may_ have some, but if so they don't seem to be obvious).

The current version of MS C++ is at least on a par with most of the
competition though, and is decidedly better than many of them.
 
W

WW

Jerry said:
[ ... ]
It doesn't compile standard C++ either.

As has been pointed out here before, every compiler except Comeau's
has some pretty obvious shortcomings in its implementation of C++
(Comeau _may_ have some, but if so they don't seem to be obvious).

The current version of MS C++ is at least on a par with most of the
competition though, and is decidedly better than many of them.

By Comeau you mean latest EDG frontend based? Or is Comeau some way
different from the others?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,013
Latest member
KatriceSwa

Latest Threads

Top