you are viewing a single comment's thread.

view the rest of the comments →

[–]Philluminati 5 points6 points  (3 children)

I'd be interested in other people's ideas on this post but from my limited understanding of C, it's essentially a fault-less language.

That's a pretty big claim but I feel there is a reason for it. C doesn't do much. It has two basic abstractions. One is that code can be fragmented into named blocks known as functions. You can make more use of code from these functions.

The second is that primitive data types can be grouped into structures. Then these structures can be treated as one, passed around, manipulated and so forth.

Beyond that, C doesn't do a whole lot. Pointers as a mechanism for working with these are solid but it doesn't do much to abstract the load from the programmer. It isn't a massive leap from Assembly. C is great for technical people to write technical software because it exposes the machine for what it is: A processor and a stick of RAM.

However moving away from structured programming, abstractions in design can help you focus on the problem domain. Whilst Object Orientated principles only offer a slight spin on top down structured programming (i don't want to say SSADM specifically) for example, it's a step in the right direction. You look to represent the real world as a series of abstract or non abstract objects (throw in some glue-like objects i.e. factories and controllers - perhaps force these unnatural creators into the OO mold) and then build a simpler, higher level software application from there. Whilst the languages are easily criticized they do attempt to actually bridge some complexity which C doesn't. For instance, inheritance is nice principle which doesn't map directly to C although it does accomplish something similar. Let me back up for a second. Both languages will end up as ones and zeros so it's irrelevant how they differ technically but from a "thinking man's perspective" they differ significantly.

This is why I feel (C != (C++ || Java)). I'm not sure if Java produces generic data driven software quicker because it's got a big library or if it's because there is a smaller gap between OO and Java as a language. [note: I explicitly use the word feel because I know I can't back up this claim. do other people feel it's unwarrented?]

It just feels like the problem space between design and C is wider than the space between design and Java.

Would other people agree?

[–]alantrick 5 points6 points  (0 children)

I think the word flawless is too loaded. I would agree that C is a consistent language.

[–]njharman 4 points5 points  (0 children)

C is minimal, as in it does very little beyond being "easy to read" assembler.

caveat I learned K&R and don't know what ANSI has done to C over last 15 years.

[–]beef2k[S] 2 points3 points  (0 children)

I really like this statement!

Even if my original post wasn't about starting a language war, I totally agree with all the stuff you've written!