DEV Community

Discussion on: Java is NOT EASY to learn. But still worth :)

Collapse
 
rodiongork profile image
Rodion Gorkovenko

I'm afraid you are messing C and C++

And anyway I learnt and used C years before Java. I started career as electronics developer where it is quite popular.

Collapse
 
delta456 profile image
Swastik Baranwal

What you mean by that?

Thread Thread
 
rodiongork profile image
Rodion Gorkovenko

If you say "C is nightmare" there probably is some mistake.

C is quite simple language originating from 1970. C++ is it's extension from mid-1990s, with OOP, templates and (in recent standards) it have become really difficult to learn just because it has tons of features, many of which are legacy.

C++, Java, C# and Objective-C - they all are decendants of old simple C in some way.

Thread Thread
 
delta456 profile image
Swastik Baranwal

Most people don't find it simple.
I agree C is small and simple.

Thread Thread
 
oldprogrammer profile image
OldProgrammer • Edited

C is easy enough to learn, but issues such as the following make it difficult to master:

  1. Pointer / array syntax and semantics are difficult to understand.
  2. Lack of variable initialisation to safe values e.g. zeroes.
  3. The ability to write all over memory.
  4. Doing things that otherwise would cause fast failure in other languages may result in a program that runs and works, or fails in unexpected ways.
  5. Dynamic memory allocation - the memory must be allocated and freed. This comes for free in other languages, and increase the complexity of C code.
  6. Null terminator character instead of length / array representation for strings.
  7. C requires more lines of code to do some things than other languages e.g. implement a simple linked list.
  8. Lack of a namespace to organise source code.
  9. Portability issues - possibility of different results on different hardware even if code works correctly e.g. due to different int sizes.

I say this as somebody who's programmed C for many years, and still do. In my university placement year, I was given a copy of "Kernighan & Ritchie" to learn C in my first week.

Thread Thread
 
delta456 profile image
Swastik Baranwal

Agreed but if you understood all these concepts then you will be able to understand any language.

Thread Thread
 
oldprogrammer profile image
OldProgrammer • Edited

Differerent classes of languages have their own subtleties so take time to learn. For example, I'd personally really need to think about how to write a prime sieve in a functional programming language.

It's surprising that some developers, even with quite a lot of C programming experience, program without giving sufficient thought to things I've listed above e.g. a new struct is defined, code is written to allocate memory for the structure and fields within it, but with no clean-up strategy in the (admittedly rare) case that memory allocation fails.

I've seen this on projects where a developer is programming in other languages e.g. Java alongside C.

Thread Thread
 
delta456 profile image
Swastik Baranwal

It's because they are used to newer languages which cleans up everything for them.

Thread Thread
 
oldprogrammer profile image
OldProgrammer • Edited

Even with Java care has to be taken so that the garbage collector thinks it can actually release an object when it goes out of scope.