473,883 Members | 1,527 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

why still use C?

no this is no trollposting and please don't get it wrong but iam very
curious why people still use C instead of other languages especially C++.

i heard people say C++ is slower than C but i can't believe that. in pieces
of the application where speed really matters you can still use "normal"
functions or even static methods which is basically the same.

in C there arent the simplest things present like constants, each struct and
enum have to be prefixed with "struct" and "enum". iam sure there is much

i don't get it why people program in C and faking OOP features(functi on
pointers in structs..) instead of using C++. are they simply masochists or
is there a logical reason?

i feel C has to benefit against C++.


[Freeware, Games and Humor]
www.deutronium.de.vu || www.deutronium.tk
comp.lang.c.mod erated - moderation address: cl**@plethora.n et
Nov 13 '05
687 23893
cody wrote:
sorry i don't know the term "dead on". what does it mean?


/Sven ;)

Remove the "-usenet" part of the mail address to mail me. The Gibe/Swen
worm forced me to shutdown my usenet email address for a limited time.
comp.lang.c.mod erated - moderation address: cl**@plethora.n et
Nov 13 '05 #211
On 14 Oct 2003 10:01:56 GMT
Keith Thompson <ks*@cts.com> wrote:
Chris Hills <ch***@phaedsys .org> writes:
In article <cl************ ****@plethora.n et>, th*@cs.ucr.edu writes
In comp.std.c cody <NO************ ****@gmx.net> wrote:

C is pretty much, but not quite, a sublanguage of C++.

C++ is based on C90 However C++ is no longer a super set of C. They
are different languages.

C++ has never been a strict superset of any version of C. C++ has
several keywords that are not reserved in C; that alone makes prevents
it from being a superset.

I agree that "C++ has never been a strict superset of any version of C",
but I disagree with your logic. A superset can define new keywords (and
comment operators). However there are many constructs in standard C that
are illegal in C++. One example that comes to mine is:
In C:
void foo(void);
In C++ this will cause a syntax error because C++ requires fully
prototyped functions. So, the C++ equivalent is:
void foo();
Since in C++, an empty parameter list means just that, where in C, it
may indicate a legacy function declaration.

Additionally, C++ disallows most of the older legacy (K&R) code that the
C standard had to allow.

So, to be a superset, C++ must be able to compile any legal C program,
and clearly C++ was not intended to do so.
Jerry Feldman <gaf-nospam-at-blu.org>
Boston Linux and Unix user group
http://www.blu.org PGP key id:C5061EA9
PGP Key fingerprint:053 C 73EC 3AC1 5C44 3E14 9245 FB00 3ED5 C506 1EA9
comp.lang.c.mod erated - moderation address: cl**@plethora.n et
Nov 13 '05 #212
In article <cl************ ****@plethora.n et>, Francis Glassborow
<fr*****@robint on.demon.co.uk> writes
volume of code running at any given time is far more debatable. 8051
based equipment tends to be running very small amounts of code
relatively slowly, quite apart from anything else high clock speeds are
very power hungry so running an 8051 at 2GHz would be inappropriate.
Francis, AFAIK you have absolutely no knowledge of the 8051 other than
what I have told you in various ACCU and BSI meetings.... and that has
been very superficial. It would be best if you did not use it as an

Being power hungry is not the reason why an 8051 does not (normally) run
at 2Ghz.... Many 8051's work in areas where power is not a factor. They
run code from 2Kbytes to 16Mega bytes.

There are also many 32 and 64 bit embedded systems running that have
megabytes of code.... virtually any car radio or engine management
system. I did have the figures for the line of code in a car radio. It
was in the 100's of thousand lines! It surprised me. Engine management
systems have the odd megabyte of code.

Then there is the telephone & internet system... based on MIPs and PPC.
One SDH switch I worked on had a PPS and 12 486 parts as slaves running
gigabytes of code....

Every aircraft is running a million or two lines of code as soon as the
inverters go on.....

Actually most things run far more code than you would imagine. From a
washing machine upwards.
General purpose computer tend to run very large volumes of, often flaky,
code very fast. Of course there is embedded code running on very fast
Some of it faster than the average PC.
(e.g. the latest high end graphics cards that are so power
hungry that they need to take power directly from the power unit and not
from the motherboard.)
Actually some of the more powerful embedded processors like the Power PC
don't have a power )or the associated heat) problem. Just listen to an
iMac running for hours with no fan....
OTOH embedded processor code tends to be compact
and carefully honed code which is relatively error free. I would hazard
a guess that the hours of development time per code instruction is an
order of magnitude (or possibly 2 or even 3 orders) higher than that for
even for operating systems for PCs.
No so from my experience. though it is true that the average PC
programmer will be pulling in a large overhead of library code for the
GUi and other libraries.

There is also the issue as to whether the code running on the graphics
card, sound card etc. counts as PC code or embedded processor code.

Good point..... very debatable. You get to choose do you want to be
Bill Gates or Plato for this one? :-)

\/\/\/\/\ Chris Hills Staffs England /\/\/\/\/\
/\/\/ ch***@phaedsys. org www.phaedsys.org \/\/
comp.lang.c.mod erated - moderation address: cl**@plethora.n et
Nov 13 '05 #213
"cody" <do************ *********@gmx.d e> wrote in message news:<cl******* *********@pleth ora.net>...
you mean a typedef let you omit the keyword? thanks, i didn't know that.

Of course. Without typedefs, normal type specifiers have to contain at
least one keyword (such as 'int'), and usually contain many of them
(such as 'const' and 'volatile'). Typedefs allow you to replace the
entire type specifier with a single typedef name.

(Oh, and re your response to Jack Klein: While IMHO Jack was a
bit harsh, and a bit defensive, his criticism of your style was
dead on.

sorry i don't know the term "dead on". what does it mean?

It means "exactly correct". The relevant image for this phrase is
someone shooting at a target; when they hit the target, their shooting
is said to be "dead on".
comp.lang.c.mod erated - moderation address: cl**@plethora.n et
Nov 13 '05 #214
cody wrote:
But I tried it using the microsoft C Compiler and
printf("%i",siz eof('a'));

If you mean Visual C++, that is not a C compiler but
rather some sort of C++ compiler. Perhaps it has some
option you can specify to make it operate as a C
compiler, in which case you should see a different
result. As was already explained, C and C++ differ
with regard to the type of a character constant.

By the way, you don't need the extra parentheses,
which obscure the distinction between the two forms
of sizeof.

Nov 13 '05 #215
cody wrote:
printf("%i",siz eof((char)'a')) ;
outputs 1. char is not the same as char. funny.

char *is* the same as char. Your error is in thinking
that in C a character constant has type char. As has
ben explained several times, it has type int. I could
explain the historical reasons for this but they are
beside the point.

Nov 13 '05 #216
E. Robert Tisdale wrote:
Our indigenous trolls are more interested
in making new subscribers look foolish
than they are in helping them to understand
the C computer programming language.

Cody doesn't need anybody's help to look foolish.
If he would stop asserting misinformation and instead
ask questions, he would get a different response.

Nov 13 '05 #217
Keith Thompson wrote:
Personally, I would actually prefer it if character constants
had type char rather than int, but my preference isn't strong enough
to suggest changing the language.

There are a large number of things about C that deserve
to be changed, if we were to go about cleaning up the
language. Unfortunately, nearly all of these would
cause existing carefully written programs to behave
differently. Legacy is a severe constraint.

I'm thinking seriously about using my copious free time
(when I finally get some!) to go back to ~7th Edition
Unix and explore an alternate evolution using a clean
C-inspired language that takes into account lessons
learned over decades of C programming. I don't think
it would look much like Limbo, but it might borrow some
ideas such as tuples: (a;b) := (b;a); // swap a & b

Nov 13 '05 #218
cody wrote:
The type of 'a' is int. ... Was is the same in other versions of C besides C99?

It has "always" been that way.
template <class T>
void FillBuf(T * buf, int nelements)
memset(buf, 0, sizeof(T)*nelem ents);
Would be very dangerous called with a char argument if C++ would behave like
in this context.

No, you stll don't understand what has been explained
several times now. Char has nothing to do with this.

Nov 13 '05 #219

[cross-post to comp.lang.c.mod erated removed, for chronological reasons
- I like to see my posts appear within a week, thankyouverymuc h :) ]

On Wed, 15 Oct 2003, Jerry Feldman wrote:

Keith Thompson <ks*@cts.com> wrote:
th*@cs.ucr.edu writes
>C is pretty much, but not quite, a sublanguage of C++.
C++ has never been a strict superset of any version of C. C++ has
several keywords that are not reserved in C; that alone makes prevents
it from being a superset.

I agree that "C++ has never been a strict superset of any version of C",
but I disagree with your logic.

"That's impossible! Logic cannot be refuted!"
A superset can define new keywords (and comment operators).
....however, if any of those additions mean that there exist C programs
that are not C++ programs, then (the set of) C++ (programs) is no
longer a superset of (the set of) C (programs). For example:

int test(int size)
int *new = malloc(size); /* two non-C++isms in this line */
return 1 //*
-1 + 1; /* 0 in C99, 1 in C++ */

However there are many constructs in standard C that
are illegal in C++. One example that comes to mine is:
In C:
void foo(void);
In C++ this will cause a syntax error because C++ requires fully
prototyped functions.
How long have you been programming in C++?
So, the C++ equivalent is:
void foo();
So, to be a superset, C++ must be able to compile any legal C program,
and clearly C++ was not intended to do so.

Right. There's no shame in not being a superset of C; many
languages aren't. And they get along just fine. :-)


Nov 13 '05 #220

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

by: William C. White | last post by:
Does anyone know of a way to use PHP /w Authorize.net AIM without using cURL? Our website is hosted on a shared drive and the webhost company doesn't installed additional software (such as cURL) on the server because of that. Our site will have an SSL certificate next week, so I would like to use AIM instead of SIM, however, I don't know how to send data via POST over https and recieve data from the Authorize.net server over an https...
by: Albert Ahtenberg | last post by:
Hello, I don't know if it is only me but I was sure that header("Location:url") redirects the browser instantly to URL, or at least stops the execution of the code. But appearantely it continues to execute the code until the browser send his reply to the header instruction. So an exit(); after each redirection won't hurt at all
by: James | last post by:
Hi, I have a form with 2 fields. 'A' 'B' The user completes one of the fields and the form is submitted. On the results page I want to run a query, but this will change subject to which field is completed.
by: Ollivier Robert | last post by:
Hello, I'm trying to link PHP with Oracle 9.2.0/OCI8 with gcc 3.2.3 on a Solaris9 system. The link succeeds but everytime I try to run php, I get a SEGV from inside the libcnltsh.so library. 354 roberto@ausone:Build/php-4.3.2> ldd /opt/php4/bin/php libsablot.so.0 => /usr/local/lib/libsablot.so.0 libstdc++.so.5 => /usr/local/lib/libstdc++.so.5 libm.so.1 => /usr/lib/libm.so.1
by: Richard Galli | last post by:
I want viewers to compare state laws on a single subject. Imagine a three-column table with a drop-down box on the top. A viewer selects a state from the list, and that state's text fills the column below. The viewer can select states from the drop down lists above the other two columns as well. If the viewer selects only one, only one column fills. If the viewer selects two states, two columns fill. Etc. I could, if appropriate, have...
by: Albert Ahtenberg | last post by:
Hello, I have two questions. 1. When the user presses the back button and returns to a form he filled the form is reseted. How do I leave there the values he inserted? 2. When the user comes back to a page where he had a submitted POST data the browser keeps telling that the data has expired and asks if repost. How to avoid that? I tried registering all POST and GET vars as SESSION vars but
by: inderjit S Gabrie | last post by:
Hi all Here is the scenerio ...is it possibly to do this... i am getting valid course dates output on to a web which i have designed ....all is okay so far , look at the following web url http://www.mis.gla.ac.uk/biquery/training/ but each of the courses held have maximum of 8 people that could be
by: Jack | last post by:
Hi All, What is the PHP equivilent of Oracle bind variables in a SQL statement, e.g. select x from y where z=:parameter Which in asp/jsp would be followed by some statements to bind a value to :parameter I dont like the idea of making the SQL statement on the fly without binding parameters as I dont want a highly polluted SQL cache.
by: Sandwick | last post by:
I am trying to change the size of a drawing so they are all 3x3. the script below is what i was trying to use to cut it in half ... I get errors. I can display the normal picture but not the results of the picture half the size. The PHP I have installed support 1.62 or higher. And all I would like to do is take and image and make it fit a 3x3. Any suggestions to where I should read or look would be appreciated.
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own.... Now, this would greatly impact the work of software developers. The idea...
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert into image. Globals.ThisAddIn.Application.ActiveDocument.Select();...
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.