[Sussex] Linux IDE's

Geoffrey Teale tealeg at member.fsf.org
Thu Apr 14 21:52:28 UTC 2005


On Thu, 2005-04-14 at 22:06 +0100, Thomas Adam wrote:
> Other way around, please.  :) C# is _very_ much like Java.  Microsoft,
> yet again capitalising off of existing tools....

Yeah, fair enough.  BTW, there is actually a .NET java VM as well,
though I don't really know much of the detail, I know it's possible to
run Eclipse on top of Mono, for example.

> Ummm... perhaps.  But you have to remember that C++ is a hybrid language
> in many respects.  It's just an extension of C with the OO part added on
> for good measure.  With Java, it's OO in the sense that you can only
> work in that way.

Yeah. Kind of my point really.  Though it's not just C with OO added on,
it's a larger language that has _one_ subset which is C.  You can write
very large, very good C++ programs that bear very little resemblance to
C.  This is perhaps the key thing I've been trying to say throughout
this thread.  Java has a much more defined "right way" of doing things
that C++ doesn't really have.

Here's a good article covering some of these issues:

http://www.allankelly.net/writing/WebOnly/HighChurch.htm


> But that's just semantics at the end of the day -- programming isn't
> about constructs and syntax, it's about principles.  If you know how a
> loop works, or what object interaction is, collaboration, inheritence,
> etc, etc, then all that remains is to pick out the syntax and run... Now
> I realise that within whatever language you happen to do that in,
> there'll be idiosyncrases in the way they're done, but the principle is
> very much the same.

Hmm, yes, but as I've said the sheer number of different _concepts_ that
C++ supports is more of a problem than the syntax - the syntax gets
reused because you have to deal with so many different concepts.
Because C++ is so popular every time someone comes up with a new idea
they start adding it to C++, and if a reasonable number of people adopt
it (and even a small number of the C++ community is a _large_ number of
people) then it gets added to the standard.

If you _just_ add what's needed to do Java style OO to C then you end up
with Objective C, a radically simpler language to use, learn and compile
than C++ has ever been.

Java is starting to get some of the things C++ has had for a while -
generic programming springs to mind.  Generic programming is an
orthogonal concept to Object Orientism (the two coexist very nicely) but
it's not something that's adequately explained in many C++ introductory
texts simply because it's a little difficult to get your head round.
The problem then is that most decent C++ programmers use it and would
expect anyone claiming to be a C++ programmer to be able to understand
it and implement it.

On the subject of generic programming, if anyone is intersted generic
programming in C++ they should really take a look at:

"Generic Programming and the STL - Using and extending the C++ Standard
Template Library" By Matthew H. Austen 
(Addison Wesley, ISBN 0-201-30956-4)

> Maybe, but you're still looking at that from a viewpoint many people new
> to programing won't have.  Yes, Java use GC to handle all the memory
> crap, but there's a high overhead in doing so.

Sure, but dealing with memory when you're trying to learn what the hell
a "for loop" is jus a distraction. 

It's weird, part of me thinks that if you want to learn to program you
should be sat down with MIXAL and taught some basic principles and them
move onto C, then maybe C++ or Java.  All that would be fine if you had
a three year degree course to do it in, but if your a home user trying
to step into the world of programming you need something that's going to
allow you to do things pretty quickly else you'll loose heart.

This isn't about what language is best to a job in - that kind of
decision is based on experience and understanding, its about picking a
language that's going to teach you the first principles.

> Not me.  But a segfault is either the result of poor memory management,
> or bad coding... I wonder which is more prominent... :P

:-)

Sure, but by definition a learner is going to be a bad coder.  Segfaults
are tricky to solve when you just learning.


-- 
Geoffrey Teale <tealeg at member.fsf.org>
Free Software Foundation





More information about the Sussex mailing list