Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C++ > Should I learn C++?

Reply
Thread Tools

Should I learn C++?

 
 
red floyd
Guest
Posts: n/a
 
      04-14-2007
Walter Bright wrote:
> Victor Bazarov wrote:

t than in C++.
>>
>> I think that just confirms the point. If it's easier, what's the
>> value of _learning_ it? Using it, I can understand. But learning?
>> It's like learning to drive automatic after mastering stick shift.

>
> You do learn to appreciate an auto after learning a stick <g>.


My problem when driving my wife's automatic (I have a stick) is that I
keep reaching for the stick...
 
Reply With Quote
 
 
 
 
Walter Bright
Guest
Posts: n/a
 
      04-14-2007
red floyd wrote:
> Walter Bright wrote:
>> Victor Bazarov wrote:

> t than in C++.
>>> I think that just confirms the point. If it's easier, what's the
>>> value of _learning_ it? Using it, I can understand. But learning?
>>> It's like learning to drive automatic after mastering stick shift.

>> You do learn to appreciate an auto after learning a stick <g>.

>
> My problem when driving my wife's automatic (I have a stick) is that I
> keep reaching for the stick...


LOL. Every once in a while, when driving an automatic, I'll step on the
"clutch" when coming to a red light. Stands the car on its nose.

There's no real pleasure in driving an auto, though. But I prefer an
auto in creeping rush hour traffic, as there's no pleasure in that anyway.
 
Reply With Quote
 
 
 
 
Ian Collins
Guest
Posts: n/a
 
      04-14-2007
red floyd wrote:
> Walter Bright wrote:
>
>>Victor Bazarov wrote:

>
> t than in C++.
>
>>>I think that just confirms the point. If it's easier, what's the
>>>value of _learning_ it? Using it, I can understand. But learning?
>>>It's like learning to drive automatic after mastering stick shift.

>>
>>You do learn to appreciate an auto after learning a stick <g>.

>
>
> My problem when driving my wife's automatic (I have a stick) is that I
> keep reaching for the stick...


You think that's bad, try driving a left hand drive manual after 20
years of driving a right hand drive one. Unfortunately I'm at a loss to
find a C++ analogy for that

--
Ian Collins.
 
Reply With Quote
 
Roland Pibinger
Guest
Posts: n/a
 
      04-14-2007
On 13 Apr 2007 20:24:54 -0700, "Unknownmat" wrote:
>I would recommend against learning C++ if your stated goal is to
>broaden your horizons. From a language perspective C++ is quite
>similar to Java which you already know.


C++ and Java are quite different but anyway ... The main reason to
avoid C++ as teaching language is its enormous but unnecessary
complexity which distracts the student from understanding basic
concepts.

>I strongly recommend that you cast your net a bit further. In
>particular, I would recommend a LISP variant because it is so easy to
>write mini-languages within it. Haskell would be good because it is a
>purely functional, lazy language and learning its type system will be
>quite insightful.


There has been a trend in recent years for new (non-academic)
programming languages to combine functional and OO concepts
(JavaScript, Python, Ruby, Lua, Scala). BTW, C++ also has a prominent
functional library: STL.

>I think there are huge advantages to be able to think in completely
>different paradigms (even if you stick with Java professionally),


Definitely. The requirements on the job market change rapidly, the
basic concepts and paradigms not.

>I strongly recommend
>reading the book "Structure and Interpretation of Computer
>Programs" (which uses Scheme): http://mitpress.mit.edu/sicp/. This
>book is quite amazing. Talk about broadening your horizons.


MIT apparently switches to Python as teaching language:
http://www-tech.mit.edu/V125/N65/coursevi.html.


--
Roland Pibinger
"The best software is simple, elegant, and full of drama" - Grady Booch
 
Reply With Quote
 
James Kanze
Guest
Posts: n/a
 
      04-14-2007
On Apr 13, 3:21 am, Walter Bright <(E-Mail Removed)>
wrote:
> Scott Sellers wrote:
> > The reason for this interest is that I noticed that alot of
> > universities have started to teach C++ as their core language and I am
> > beginning to think that its time now to widen my range of programming
> > languages/skills.


> If you want a broad range of useful programming skills, then C++ is a
> must to learn, along with Java, Ruby, Lisp, Assembler, and D.


If you're going to be effective, you do have to learn several
languages; no one language does it all. But I'm not sure I
would agree with your list: I've seen no real demand for Ruby,
Lisp or D anywhere (although Lisp, at least, is useful, if only
to force you to think in a different way---and of course, if you
use emacs as your editor, you'll need it). On the other hand,
some sort of scripting language is a must, and as horrible as it
might be, you'll probably have to learn make at sometime.

A lot depends on the goals. If the goal is learning, a language
with a radically different idiom would probably be best: if you
already know Java, for example, you'll learn a lot more learning
Scheme or some other functional language that you will learning
C++. If the goal is to practically prepare for what you'll need
professionally, a lot depends on the type of work you want to do
professionally. In my work (server development), for example,
in addition to C++, I need Unix (and its shells)---I probably
get called on for my expertise in sh and awk as often as I do
for C++. Some knowledge of SQL is also expected. And of
course, no matter what you do, you should learn your basic
toolset: editor, etc. (For that matter, if you can't already
touch type, that should be your first priority. When you're
writing code, you want to be thinking about the code, and not
where the characters are on the keyboard.)

And don't forget about the techniques: things like design,
threading, etc. Independent of the language (more or less), but
if you don't know them, you're programs won't work.

--
James Kanze (Gabi Software) email: http://www.velocityreviews.com/forums/(E-Mail Removed)
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34

 
Reply With Quote
 
James Kanze
Guest
Posts: n/a
 
      04-14-2007
On Apr 14, 5:24 am, "Unknownmat" <(E-Mail Removed)> wrote:
> > The reason for this interest is that I noticed that alot of
> > universities have started to teach C++ as their core language and I am
> > beginning to think that its time now to widen my range of programming
> > languages/skills. When I was at university I personally learned Java
> > and Delphi as part of my studies but following my graduation I focused
> > on using Delphi (which for the most part as been quite simple) as I
> > enjoy developing and working with Windows Apps.


> I would recommend against learning C++ if your stated goal is to
> broaden your horizons. From a language perspective C++ is quite
> similar to Java which you already know.


It depends on which direction he wants to broaden them.

IMHO, there is a definite interest in going beyond the language,
and learning programming techniques: functional programming,
design patterns, etc. Your recommendation of:

> BTW, if you have not already read this, then I strongly recommend
> reading the book "Structure and Interpretation of Computer
> Programs" (which uses Scheme):http://mitpress.mit.edu/sicp/. This
> book is quite amazing. Talk about broadening your horizons.


is excellent, in this sense, not because of Scheme, per se, but
because of the higher level thought processes it teaches. In
the end, the language is just a tool, you learn Scheme not for
Scheme, but because it is a convenient tool for teaching these
thought processes. Similarly, you might want to learn C++ not
for C++, because a number of recent works on meta-programming
are based on C++.

All of which is a very good, and IMHO very important direction
to broaden horizons. On the other hand, one can take a more
practical approach: SQL or a Unix shell will also broaden your
horizons, in a very different way. (I recently wrote a build
system entirely in GNU make. Talk about broadening horizons.)

Other possible directions: Excel, or LaTeX or HTML. (You'll
need to learn to write documentation. HTML is a good support
for that, since it can be used everywhere, and LaTeX will
produce the most beautiful results.)

--
James Kanze (Gabi Software) email: (E-Mail Removed)
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34

 
Reply With Quote
 
dave_mikesell@fastmail.fm
Guest
Posts: n/a
 
      04-14-2007
On Apr 14, 6:50 am, "James Kanze" <(E-Mail Removed)> wrote:

> On the other hand,
> some sort of scripting language is a must, and as horrible as it
> might be, you'll probably have to learn make at sometime.


I'll bite - what's so horrible about make?

 
Reply With Quote
 
Victor Bazarov
Guest
Posts: n/a
 
      04-14-2007
(E-Mail Removed) wrote:
> On Apr 14, 6:50 am, "James Kanze" <(E-Mail Removed)> wrote:
>
>> On the other hand,
>> some sort of scripting language is a must, and as horrible as it
>> might be, you'll probably have to learn make at sometime.

>
> I'll bite - what's so horrible about make?


If you're bringing an off-topic, please mark your posts as such.


 
Reply With Quote
 
Unknownmat
Guest
Posts: n/a
 
      04-14-2007
On Apr 13, 11:33 pm, Ian Collins <(E-Mail Removed)> wrote:
> Unknownmat wrote:
> >>The reason for this interest is that I noticed that alot of
> >>universities have started to teach C++ as their core language and I am
> >>beginning to think that its time now to widen my range of programming
> >>languages/skills. When I was at university I personally learned Java
> >>and Delphi as part of my studies but following my graduation I focused
> >>on using Delphi (which for the most part as been quite simple) as I
> >>enjoy developing and working with Windows Apps.

>
> > I would recommend against learning C++ if your stated goal is to
> > broaden your horizons. From a language perspective C++ is quite
> > similar to Java which you already know.

>
> My Ford is similar to my Landrover, but the latter gets me to way more
> interesting places.


While I somewhat see the analogy, I'm not sure that I really
understand your point. It's not even clear to me whether you're
agreeing or disagreeing.

I'm not saying that there is never any value in learning C++. I just
personally find that I employ many of the same idioms when using
either C++ or Java, and that there are many interesting programming
techniques that are not idiomatic in either.


 
Reply With Quote
 
Unknownmat
Guest
Posts: n/a
 
      04-14-2007
On Apr 14, 5:33 am, (E-Mail Removed) (Roland Pibinger) wrote:
> On 13 Apr 2007 20:24:54 -0700, "Unknownmat" wrote:
>
> >I would recommend against learning C++ if your stated goal is to
> >broaden your horizons. From a language perspective C++ is quite
> >similar to Java which you already know.

>
> C++ and Java are quite different but anyway ... The main reason to
> avoid C++ as teaching language is its enormous but unnecessary
> complexity which distracts the student from understanding basic
> concepts.
>


While I will agree that they are different, I find them much more
similar to each other than they are to languages like LISP, or
Haskell.

I agree that the difficulty of C++ has caused many a student to
prematurely end their CS careers. When I went through school, we
required two full semesters of C++ prior to even getting into basic
data structures and algorithms. Interestingly, my classmate who came
from a Java background had a tremendous amount of difficulty adapting
to C++ (mostly the pointers gave hime trouble). This is one reason
that I like the book SICP so much. It's almost purely about
programming concepts, and the language is almost inconsequential.

> >I strongly recommend that you cast your net a bit further. In
> >particular, I would recommend a LISP variant because it is so easy to
> >write mini-languages within it. Haskell would be good because it is a
> >purely functional, lazy language and learning its type system will be
> >quite insightful.

>
> There has been a trend in recent years for new (non-academic)
> programming languages to combine functional and OO concepts
> (JavaScript, Python, Ruby, Lua, Scala). BTW, C++ also has a prominent
> functional library: STL.
>


Yes, functional abstractions can be very useful.

Interesting, I never would have considered STL to be functional. Do
you have any sources that talk about this? Frankly, the more I think
about it, the less I see it. While STL does provide the rudiments of
a "map" routine (for_each), off the top of my head I can't think of
filter / reduce routines. Similarly, iterators don't strike me as
especially functional.

Anyway, I'm hardly an expert on what is "functional". Just based on
things are that common in functional languages (no side effects, first-
class functions, function composiition, higher-order functions, etc.)
STL doesn't seem to embody any of those.

> >I strongly recommend
> >reading the book "Structure and Interpretation of Computer
> >Programs" (which uses Scheme):http://mitpress.mit.edu/sicp/. This
> >book is quite amazing. Talk about broadening your horizons.

>
> MIT apparently switches to Python as teaching language:http://www-tech.mit.edu/V125/N65/coursevi.html.
>


Oh interesting. Python is definitely a friendly, powerful language.
They could certainly do worse.

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Some information for the one who decided to learn C++, and now wantsto learn at least a bit of C? Alexander C Programming 20 09-11-2010 01:04 AM
Learn the language before you learn the GUI. CoreyWhite C++ 1 03-31-2007 08:56 PM
newbie question: should I learn TKinter or skip it and learn more advanced toolkit? Porky Pig Jr Python 3 05-12-2004 08:58 AM
What should I learn If I want to pass the exam of MCSE chenjase MCSE 2 11-06-2003 04:18 PM
Should I learn VB.NET or ASP.NET? TAM ASP .Net 20 08-02-2003 08:41 PM



Advertisments