| Register | FAQ | Calendar | Search | Today's Posts | Mark Forums Read |
|
#1
| |||
| |||
| 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? |
|
#2
| |||
| |||
| "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 |
|
#3
| |||
| |||
| 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. |
|
#4
| |||
| |||
| 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++. |
|
#5
| |||
| |||
| 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.) |
|
#6
| |||
| |||
| 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. |
|
#7
| |||
| |||
| 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. |
|
#8
| |||
| |||
| 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. |
|
#9
| |||
| |||
| "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, ...). |
|
#10
| |||
| |||
| 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. |
![]() |
| Thread Tools | |
| Display Modes | |
In an effort to better serve ads to our visitors, cookies are used on objectmix.com. For more information, check out our Privacy Policy.