Training, Open Source Programming Languages

This is page ... a-too.html

Our email: • Phone: 01225 708225

Retiring, March 2020 - sorry, you have missed our final public course.
The Coronavirus situation has lead us to suspend public training - which was on the cards anyway, with no plans to resume

Please ask about private 'maintenance' training for Python, Tcl, Perl, PHP, Lua, etc
Happily continuing private consultancy / programming work
All the Cs ... and Java too

C, C++, C#, Java, and J++ - how they relateDo you get confused between C, C++, C#, Objective C ... and where to Java and J++ fit in?


C is the bedrock of modern computing. It's been around a while (by which I mean for at least 40 years) and it's still the language that you'll find underneath everything else. That doesn't mean it's been static for all that time - the "Kernighan and Richie" flavor of early days was supplanted by the ANSI flavor, and additional new libraries have been added so that what was a lot of work is now rather less work.

But just because something is the bedrock of modern computing doesn't mean we all need to learn about it - just as those of us who run cars on petrol don't need to be experts in oil refining. Rather, C remains a vital component of modern computing, but 'behind the counter' for the most part. As a development language for applications and web sites, there are much faster and maintainable ways to code, using tools which are themselves written in C.


As applications grow, so does the suitability of object oriented principle to their design and writing. I'm not going to try to explain "OO" fully here - there are links on a previous blog.

C++ is an extension of C - it includes everything you have in C, but in addition you have extra language features which provide useful facilities for you to use in in an object oriented manner. With its C comparability, and extras too, this means that C++ is perhaps one of the more complex languages around - you can do anything with it, but at the expense of somewhat longer coding and testing cycles (and longer training programs) than you might like. And with longer code comes a potentially harder-to-maintain application too.

Objective C

An alternative (thin) layer on top of C, added by NeXT which was acquired by Apple in the mid 1990s. You'll find that Objective C is very limited in its use these days, unlike C and C++.


C++ provides a lot of excellent facilities - but it's made over-complex and slower to code by its need to adhere to C. Certain features such as multiple inheritance add further complexity, and are really only of use in a few situations (some might say that multiple inheritance is a siren call, encouraging bad design). C++ compiled code isn't portable, and C++ isn't naturally network aware ... Now what would a language that fixed these issues look like?

That's the background to Java - brought out by Sun Microsystems some 20 years ago, it's a 'simple', 'small', Object Oriented, 'portable', Network aware, 'secure' language. (I have put quotes around many of the words used to describe java as there are - for example - degrees of portability and security!).

Java follows a public specification for the language, and for the run time compiled classes which run on a virtual machine, so you're no longer required to have one set of executable programs per processor type. It's based on the philosophies and approaches of C and C++, but no attempt is made to make it compatible with those languages, meaning that it can be much more modern, cleaner, leaner, easier.


As the Java specification is open, others can implement and use it. And one company that did so was Microsoft, who added elements to their implementation which they called J++. The additional elements meant that J++ code would not run on a standard Java Virtual Machine, thus breaking the portability philosophy, and as a result of some friction between Sun and Microsoft, the language wasn't carried forward.


C++ provides a lot of excellent facilities - but it's made over-complex and slower to code by its need to adhere to C. Certain features such as multiple inheritance add further complexity, and are really only of use in a few situations (some might say that multiple inheritance is a siren call, encouraging bad design). C++ compiled code isn't portable, and C++ isn't naturally network aware ... Now what would a language that fixed these issues look like?

If that previous paragraph looks vaguely familiar, you're right ... it's exactly the same foundations that Sun worked from when specifying Java. A few years later, and with the Java and J++ experience to look at, Microsoft specified C#. So it's no great surprise that it looks rather like Java. In fact, technically, it benefits from some experiences of Java too in that a few things are done differently and perhaps better, and some changes are made which would have been impractical at the birth of Java, when memories were smaller, processors slower, and the whole Internet / networking thing was more embryonic than born.

We offer courses on C, C++ and Java ... we don't offer courses on Objective C (we don't know it), J++ (gone) or C# (we're not set up for training on Microsoft products and would have to learn and invest a great deal to take on C# at the quality we would wish to provide).
(written 2009-12-13, updated 2009-12-15)

Associated topics are indexed as below, or enter for individual articles
C050 - C and C based languages - C - General
  [4434] Public training courses - upcoming dates - (2015-02-21)
  [4341] Segmentation Fault, Segmentation Violation, Bus Error, Stack Smashing - (2014-12-04)
  [4335] Flexible public courses - residential or commuting, programming newcomer or experienced, C or C++ - (2014-11-30)
  [3129] Extra courses - C and C++ - (2011-01-12)
  [3053] Make - automating the commands for building and installing - (2010-11-16)
  [2848] C course - final course example puts it all together - (2010-07-02)
  [2763] Our C and C++ training course are on Open Source platforms - (2010-05-13)
  [2669] Efficient use of dynamic memory - C and realloc - (2010-03-10)
  [2504] Learning to program in ... - (2009-11-15)
  [2091] C, C++ and C# ... Java and JavaScript - (2009-03-20)
  [2086] C Programming v Learning to Program in C. Which course? - (2009-03-17)
  [2002] New C Examples - pointers, realloc, structs and more - (2009-01-20)

C051 - C and C based languages - C++ - General
  [4355] C++ in 2 days - (2014-12-18)
  [3809] Dwarf Exception Unwind Info - (2012-07-20)
  [3587] C++ Courses - do I get official certification at the end of my Well House course? - (2012-01-20)
  [3250] C++ - how we teach the language and the concepts behind the language - (2011-04-17)
  [3155] Rake - a build system using code written in Ruby - (2011-02-03)
  [3067] Using C and C++ functions in the same program - how to do it - (2010-11-24)
  [3052] Getting your C++ program to run - (2010-11-15)
  [2851] Further C++ material - view new or old - (2010-07-04)
  [2577] Complete teaching example - C++, inheritance, polymorphism - (2010-01-15)
  [2370] C++, Python, and other training - do we use an IDE - (2009-08-21)

J601 - Java Introduction
  [4332] First Java Application - calculating the weight of a tablecloth - (2014-11-29)
  [2423] What is a JVM, a JRE, a JDK - components of the core Java Environment - (2009-09-26)
  [2115] Finding your java program - the CLASSPATH variable - (2009-04-02)
  [1908] Java CLASSPATH explained - (2008-11-26)
  [1766] Diagrams to show you how - Tomcat, Java, PHP - (2008-08-22)
  [1557] Trying out our Java examples on our web site - (2008-02-27)
  [1497] Training Season Starts again! - (2008-01-07)
  [1466] Effective Java training - the bootcamp approach - (2007-12-09)
  [1418] A Golf Club Decision - Perl to Java - (2007-11-01)
  [1158] Private Java Course - A customer's pictures - (2007-04-22)
  [1049] Java 6, Apache Tomcat 6. - (2007-01-21)
  [871] Java oversold? - (2006-09-19)
  [792] Is Java the right language to learn? - (2006-07-04)
  [317] Programming languages - a comparison - (2005-05-20)
  [124] PHP v Java - (2004-11-20)
  [111] Training notes available under Open Distribution license - (2004-11-07)
  [25] Release numbers - (2004-08-23)

Q102 - Choosing your language
  [3785] Programming languages - what are the differences between them? - (2012-06-27)
  [3764] Shell, Awk, Perl of Python? - (2012-06-14)
  [3619] Ruby v Perl - a comparison example - (2012-02-21)
  [3558] Python or Lua - which should I use / learn? - (2011-12-21)
  [3169] Rekeying a table - comparison in #Ruby #Perl and #Python - (2011-02-14)
  [2866] Ruby - how does it compare and where is it the right language? - (2010-07-11)
  [2700] The same very simple program in many different programming languages - (2010-03-31)
  [2535] When should I use Java, Perl, PHP, or Python? - (2009-12-13)
  [2507] Admission - (2009-11-19)
  [2048] Learning to program in PHP, Python, Java or Lua ... - (2009-02-19)
  [2001] I have not programmed before, and need to learn - (2009-01-19)
  [1990] Speaking all the languages - (2009-01-12)
  [76] Learning to program in - (2004-10-07)

Back to
When should I use Java, Perl, PHP, or Python?
Previous and next
Horse's mouth home
Forward to
Faster network, but not faster browsing until ...
Some other Articles
Rock and hard place .. and the relaxing right one won
Changing Images
Open Source Training Centre and Courses for 2010
Faster network, but not faster browsing until ...
All the Cs ... and Java too
And now for some posts a bit more technical
Five guests, three groups, one car
Analysing Google arrivals by country of origin
Melksham - new Tuesday Market
4759 posts, page by page
Link to page ... 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96 at 50 posts per page

This is a page archived from The Horse's Mouth at - the diary and writings of Graham Ellis. Every attempt was made to provide current information at the time the page was written, but things do move forward in our business - new software releases, price changes, new techniques. Please check back via our main site for current courses, prices, versions, etc - any mention of a price in "The Horse's Mouth" cannot be taken as an offer to supply at that price.

Link to Ezine home page (for reading).
Link to Blogging home page (to add comments).

© WELL HOUSE CONSULTANTS LTD., 2020: 48 Spa Road • Melksham, Wiltshire • United Kingdom • SN12 7NY
PH: 01225 708225 • EMAIL: • WEB: • SKYPE: wellho

PAGE: ... a-too.html • PAGE BUILT: Sat May 27 16:49:10 2017 • BUILD SYSTEM: WomanWithCat