Whats the best language to learn...

This is a discussion on Whats the best language to learn... within the Programming Languages forums in category; What's the best language to learn as a beginner, for someone like I who has never programmed in any language before? I'm interested in learning python or c++, which would you say is the least complicated?...

Go Back   Application Development Forum > Programming Languages

Object Mix

Register FAQ Calendar Search Today's Posts Mark Forums Read
  #1  
Old 08-17-2008, 01:12 PM
Gits
Guest
 
Default Whats the best language to learn...

What's the best language to learn as a beginner, for someone like I
who has never programmed in any language before? I'm interested in
learning python or c++, which would you say is the least complicated?
Reply With Quote
  #2  
Old 08-17-2008, 01:29 PM
Malcolm McLean
Guest
 
Default Re: Whats the best language to learn...


"Gits" <hamza612@live.com> wrote in message news:
> What's the best language to learn as a beginner, for someone like I
> who has never programmed in any language before? I'm interested in
> learning python or c++, which would you say is the least complicated?
>

Don't try to learn C++ as a first programming language. I'm told Python is
simple, though I have absolutely zero experience with it.

--
Free games and programming goodies.
http://www.personal.leeds.ac.uk/~bgy1mm

Reply With Quote
  #3  
Old 08-17-2008, 01:36 PM
Pascal J. Bourguignon
Guest
 
Default Re: Whats the best language to learn...

Gits <hamza612@live.com> writes:

> What's the best language to learn as a beginner, for someone like I
> who has never programmed in any language before? I'm interested in
> learning python or c++, which would you say is the least complicated?


The best programming language to learn as a beginner is probably scheme.

Structure and Interpretation of Computer Programs
http://mitpress.mit.edu/sicp/full-te...ook-Z-H-4.html
http://swiss.csail.mit.edu/classes/6...sman-lectures/
http://www.codepoetics.com/wiki/inde...ther_languages

How to Design Programs -- An Introduction to Computing and Programming
http://www.htdp.org/2003-09-26/Book/

Concrete Abstractions -- An Introduction to Computer Science Using Scheme
http://www.gustavus.edu/+max/concrete-abstractions.html

http://www.drscheme.org/

Then of course, it won't be the only programming language you'll
learn, but you won't be a beginner anymore.

I would still learn C and Smalltalk, before C++.

--
__Pascal Bourguignon__ http://www.informatimago.com/
You never feed me.
Perhaps I'll sleep on your face.
That will sure show you.
Reply With Quote
  #4  
Old 08-17-2008, 03:45 PM
Mensanator
Guest
 
Default Re: Whats the best language to learn...

On Aug 17, 12:12�pm, Gits <hamza...@live.com> wrote:
> What's the best language to learn as a beginner, for someone like I
> who has never programmed in any language before? �I'm interested in
> learning python or c++, which would you say is the least complicated?


Python is a good choice, much less complicated
than c++.
Reply With Quote
  #5  
Old 08-17-2008, 07:54 PM
Juha Nieminen
Guest
 
Default Re: Whats the best language to learn...

Pascal J. Bourguignon wrote:
> The best programming language to learn as a beginner is probably scheme.


Is that a joke?

Functional languages like scheme and haskell may be wonderful for
programming gurus and mathematicians (and if you are both, better).
However, people who are infatuated with the functional paradigm fail to
understand the reality of the human mind.

The average person does not think functionally nor recursively. A
recursive definition might be compact and beautiful, but it's not the
way the average person thinks about things. It may be how a
mathematician and a specialized programmer thinks about (some) things,
but not how normal people do. Even a simple compact recursive definition
is very difficult for the average person to understand.

The average person thinks about tasks using two elements: Concepts and
sequential steps.

A food recipe is the perfect example of this: A food recipe consists
of concepts (such as ingredients and measurements) and sequential steps
(a list of things what to do, in which order and how).

In programming these two elements have a natural translation: Modules
and imperative programming. A module is a concept, and imperative
programming is the sequence of steps what to do with those concepts. As
much as programming gurus detest imperative programming, it's just the
reality that the average person thinks imperatively and understands
imperative algorithms easiest.

Many object-oriented programming languages use these two paradigms,
ie. modules and imperative programming. Thus it's a logical consequence
that a simple, high-level OOP language would be the best for a beginner.
(Well, in fact a modular programming language would be enough, but the
few modular languages which have ever existed never got very popular, so
the next best thing are their big brothers, the object-oriented languages.)

And yes, like "imperative programming", also "object-oriented
programming" is nowadays more a swearword than anything else among the
know-it-all programming gurus. However, it just works. There's no way
around it. It might not be the silver bullet, but it's the best
beginner-approachable paradigm we have.

Functional programming is nice, but it just isn't how people think
about things.

> I would still learn C and Smalltalk, before C++.


Hell no! Smalltalk maybe, but C? No, no and a thousand times no!

Make a beginner learn C as his first language and he will struggle to
learn good programming for YEARS to come. Just no.

(For the record, personally I just love C++ and it's my language of
choice for most things. I also would be able to develop in C if I was
forced to (although it would really be a horrible nightmare). However, I
would never, ever, ever recommend C for anyone as their first language.
Ever.)
Reply With Quote
  #6  
Old 08-17-2008, 08:39 PM
Pascal J. Bourguignon
Guest
 
Default Re: Whats the best language to learn...

Juha Nieminen <nospam@thanks.invalid> writes:

> Pascal J. Bourguignon wrote:
>> The best programming language to learn as a beginner is probably scheme.

>
> Is that a joke?


No.

> Functional languages like scheme and haskell may be wonderful for
> programming gurus and mathematicians (and if you are both, better).
> However, people who are infatuated with the functional paradigm fail to
> understand the reality of the human mind.
>
> The average person does not think functionally nor recursively. A
> recursive definition might be compact and beautiful, but it's not the
> way the average person thinks about things. It may be how a
> mathematician and a specialized programmer thinks about (some) things,
> but not how normal people do. Even a simple compact recursive definition
> is very difficult for the average person to understand.
>
> The average person thinks about tasks using two elements: Concepts and
> sequential steps.


Average persons have nothing to do in programming. There are enough
jobs at McDonalds for average persons.

--
__Pascal Bourguignon__ http://www.informatimago.com/
In deep sleep hear sound,
Cat vomit hairball somewhere.
Will find in morning.
Reply With Quote
  #7  
Old 08-17-2008, 09:24 PM
Ben Bacarisse
Guest
 
Default Re: Whats the best language to learn...

Juha Nieminen <nospam@thanks.invalid> writes:

> Pascal J. Bourguignon wrote:
>> The best programming language to learn as a beginner is probably scheme.

>
> Is that a joke?


I doubt it but then I did not say it. Bear in mind that scheme is
supported by an excellent textbook that is available for free online.
This is a non-trivial benefit for the person who posted. You don't
give you own preference for first language, but few have such a
high-quality resource so readily available.

> Functional languages like scheme and haskell may be wonderful for
> programming gurus and mathematicians (and if you are both, better).
> However, people who are infatuated with the functional paradigm fail to
> understand the reality of the human mind.
>
> The average person does not think functionally nor recursively. A
> recursive definition might be compact and beautiful, but it's not the
> way the average person thinks about things. It may be how a
> mathematician and a specialized programmer thinks about (some) things,
> but not how normal people do. Even a simple compact recursive definition
> is very difficult for the average person to understand.
>
> The average person thinks about tasks using two elements: Concepts and
> sequential steps.


I'll just note that both scheme and Haskell have the notion of
sequencing. Scheme needs it because it has assignment and modifiable
variables and Haskell uses sequencing to make IO sensible (and then
generalises the notion to a whole range of uses).

> A food recipe is the perfect example of this: A food recipe consists
> of concepts (such as ingredients and measurements) and sequential steps
> (a list of things what to do, in which order and how).
>
> In programming these two elements have a natural translation: Modules
> and imperative programming. A module is a concept, and imperative
> programming is the sequence of steps what to do with those concepts. As
> much as programming gurus detest imperative programming, it's just the
> reality that the average person thinks imperatively and understands
> imperative algorithms easiest.


I am undecided about what is really easiest but there is a case to be
made that it does not matter. If the declarative style has
productivity and maintenance benefits then any extra effort required
to learn may well pay off in the long run.

--
Ben.
Reply With Quote
  #8  
Old 08-18-2008, 01:22 AM
Arto Viitanen
Guest
 
Default Re: Whats the best language to learn...

Mensanator kirjoitti:
> On Aug 17, 12:12�pm, Gits <hamza...@live.com> wrote:
>> What's the best language to learn as a beginner, for someone like I
>> who has never programmed in any language before? �I'm interested in
>> learning python or c++, which would you say is the least complicated?

>
> Python is a good choice, much less complicated
> than c++.


I checked Python once to see if it would be suitable language to teach
as the first programming language, and it looked fine. We did not take
it, but still..

Boo might also be good choise: it has similar syntax to Python, but it
uses .NET classes.
Reply With Quote
  #9  
Old 08-18-2008, 03:12 AM
cr88192
Guest
 
Default Re: Whats the best language to learn...


"Juha Nieminen" <nospam@thanks.invalid> wrote in message
news:uS2qk.244$7K.59@read4.inet.fi...
> Pascal J. Bourguignon wrote:
>> The best programming language to learn as a beginner is probably scheme.

>
> Is that a joke?
>
> Functional languages like scheme and haskell may be wonderful for
> programming gurus and mathematicians (and if you are both, better).
> However, people who are infatuated with the functional paradigm fail to
> understand the reality of the human mind.
>
> The average person does not think functionally nor recursively. A
> recursive definition might be compact and beautiful, but it's not the
> way the average person thinks about things. It may be how a
> mathematician and a specialized programmer thinks about (some) things,
> but not how normal people do. Even a simple compact recursive definition
> is very difficult for the average person to understand.
>


it depends on the person I think...

Scheme has some rather useful things to teach people, and is in general a
decent language for many things (actually, Scheme and Haskell are
sufficiently different languages that I think it better to refrain from
lumping them together).


> The average person thinks about tasks using two elements: Concepts and
> sequential steps.
>


well, other people think differently than this:
some people think visually or spatially;
some people think in terms of grids, tables, and mental queries (almost like
a set of SQL-like databases were running in their head);
other people think in terms of logic or quotes (odd bastards these, but I
have seen them, they argue about wording and pedantic details and readily
give arguments in terms of masses of quotations...).


> A food recipe is the perfect example of this: A food recipe consists
> of concepts (such as ingredients and measurements) and sequential steps
> (a list of things what to do, in which order and how).
>


this example is almost a cliche, however...


> In programming these two elements have a natural translation: Modules
> and imperative programming. A module is a concept, and imperative
> programming is the sequence of steps what to do with those concepts. As
> much as programming gurus detest imperative programming, it's just the
> reality that the average person thinks imperatively and understands
> imperative algorithms easiest.
>
> Many object-oriented programming languages use these two paradigms,
> ie. modules and imperative programming. Thus it's a logical consequence
> that a simple, high-level OOP language would be the best for a beginner.
> (Well, in fact a modular programming language would be enough, but the
> few modular languages which have ever existed never got very popular, so
> the next best thing are their big brothers, the object-oriented
> languages.)
>
> And yes, like "imperative programming", also "object-oriented
> programming" is nowadays more a swearword than anything else among the
> know-it-all programming gurus. However, it just works. There's no way
> around it. It might not be the silver bullet, but it's the best
> beginner-approachable paradigm we have.
>


maybe we teach people both C and Java at the same time...


hell, I started out with BASIC, and later went over to C...

and over my life, C++ has become much more dominant, and Java has come along
and gotten far more popular as well...


> Functional programming is nice, but it just isn't how people think
> about things.
>
>> I would still learn C and Smalltalk, before C++.

>
> Hell no! Smalltalk maybe, but C? No, no and a thousand times no!
>
> Make a beginner learn C as his first language and he will struggle to
> learn good programming for YEARS to come. Just no.
>
> (For the record, personally I just love C++ and it's my language of
> choice for most things. I also would be able to develop in C if I was
> forced to (although it would really be a horrible nightmare). However, I
> would never, ever, ever recommend C for anyone as their first language.
> Ever.)


C and C++ represent different programming styles, but I don't think
necessarily one is "good" and the other "bad".

it just so happens that many people who use C, are not so inclined towards
OOP.
more so, much of what passes as "good style" by people who are inclined
towards OOP, is a bunch of stuff apparently lifted off of Java and then
forced onto C++.

however, C++ represents a mix, with some people more on the C end of the
spectrum (more where I would fall in the cases when I am using C++), and the
Java end of the spectrum (the people who insist on, for example, teh
crapload of tiny source files, mixing source and header files in the same
locations, only putting a single class per source/header, ...).


or, about OOP vs non-OOP, some problems naturally fit nicely into an
OOP-like approach, and other problems fit rather poorly (some problems are
actually far more suited, for example, to stack-based processing or large
parallel arrays of vectors or numbers).

problem is that people who have been taught in the modern OO regime are made
to believe that everything is an object, best hit over the head with classes
and interfaces. it is also good to know when not to do this...


actually, another problem more specific to newbs and C++ is the
overuse/abuse of certain heavy-weight features (namely operator overloading
and templates), where I think it is probably better if people first learn
how to not make a big mess out of things by trying to get though problems
via excessive use of operator overloading and templates.


now, I do what I personally like, which tends to be more what "makes sense",
which is more often more C-like (namely, source files one place, headers in
another, and having a much smaller number of somewhat larger source files,
typically 500-2000 LOC per file, ...).


more so, there are many cases where there are good reasons to use C over C++
as well (or for that matter, when it makes sense to use opaque procedural
APIs between subsystems, ...).



Reply With Quote
  #10  
Old 08-18-2008, 04:02 AM
thomas.mertes@gmx.at
Guest
 
Default Re: Whats the best language to learn...

On 17 Aug., 19:12, Gits <hamza...@live.com> wrote:
> What's the best language to learn as a beginner, for someone like I
> who has never programmed in any language before? *I'm interested in
> learning python or c++, which would you say is the least complicated?


The first language influences the thinking about programming
most. Therefore a language which explains most concepts of
programming should be used.

In the past Pascal was used as teaching language. From todays
viewpoint it misses the concepts of object orientation, generics,
overloading and much more.

AFAIK Java is used very often to teach programming nowerdays
(interestingly nobody did it suggest until now). Java is also missing
concepts like overloading and multiple dispatch.

Depending on the concepts people learned they think that all
other concepts are useless or stupid.

- People that learned object oriented languages first, think that
procedural programming is stupid.
- People that learned dynamic typed languages first, think that
static typing is stupid.
- People that learned programming with an interpreter think that
compiled languages are stupid.

The following concepts I consider important to learn
- Object oriented programming with interfaces and
multiple dispatch.
Object orientation (as I view it) is explained here:
http://seed7.sourceforge.net/manual/objects.htm
and multiple dispatch is explained here:
http://seed7.sourceforge.net/faq.htm#multiple_dispatch
- Procedural programming.
While I consider OO programming good It is not necessary to
restrict a language just to that.
- Compile time type checks.
The reasons why I think this is a good idea are explained here:
http://seed7.sourceforge.net/faq.htm..._type_checking
- Abstract data types.
Most languages use templates and generics to express abstract
data types. Some examples of abstract data types are here:
http://seed7.sourceforge.net/faq.htm#container_classes

Greetings Thomas Mertes

Seed7 Homepage: http://seed7.sourceforge.net
Seed7 - The extensible programming language: User defined statements
and operators, abstract data types, templates without special
syntax, OO with interfaces and multiple dispatch, statically typed,
interpreted or compiled, portable, runs under linux/unix/windows.
Reply With Quote
Reply


Thread Tools
Display Modes


All times are GMT -5. The time now is 05:00 PM.


Powered by vBulletin® Version 3.7.2
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
vB Ad Management by =RedTyger=

In an effort to better serve ads to our visitors, cookies are used on objectmix.com. For more information, check out our Privacy Policy.