473,883 Members | 1,656 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
more.

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++.

--
cody

[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 23866
>>>> There are a few constraints, though. For example, the ISO
COBOL 2002 standard specifies that intermediate calculations
be done using 32 decimal digits of precision. 32 digits of BCD
into a 128-bit register leaves very little room for a sign and
exponent.

I still have never written a COBOL program, but is that fixed point
or floating point?


'Standard' COBOL arithmetic. Calculate as well as possible and then
assign to a fixed-point variable. Best ask COBOL folk what that is
:-).


As you say COBOL requires 32 decimal digits of precision. Would that
be _exactly_ 32 digits of precision or _at least_ 32 digits of
precision? I think producing _exactly_ 32 digits if what you have
available is 34 digits could be difficult.


I forget the actual wording. The final draft is on the web, somewhere,
if you want to check.

Mike Cowlishaw
--
comp.lang.c.mod erated - moderation address: cl**@plethora.n et
Nov 14 '05 #661
"Mike Cowlishaw" <mf*****@attglo bal.net> wrote
There are a few constraints, though. For example, the ISO
COBOL 2002 standard specifies that intermediate calculations
be done using 32 decimal digits of precision. 32 digits of BCD
into a 128-bit register leaves very little room for a sign and
exponent. I still have never written a COBOL program, but is that fixed point
or floating point?
'Standard' COBOL arithmetic. Calculate as well as possible and then
assign to a fixed-point variable. Best ask COBOL folk what that is
:-). As you say COBOL requires 32 decimal digits of precision. Would that
be _exactly_ 32 digits of precision or _at least_ 32 digits of
precision? I think producing _exactly_ 32 digits if what you have
available is 34 digits could be difficult.
I forget the actual wording. The final draft is on the web, somewhere,
if you want to check.


This precision requirement could be based on IBM's COBOL arithmetic, which
uses 30 or 31 decimal digits (I don't remember which) for all intermediate
results in fixed-point arithmetic expressions. If any floating-point
values are present in a given expression, the whole thing is done in
floating-point instead.

Anyway, 30 or 31 BCD digits plus a sign nibble fit quite naturally into
128 bits (16 bytes). IBM stipulated additional rules for handling gradual
loss of precision (i.e., truncation of least sigificant digits) for the
arithmetic operators, so that no high-order digits are lost (this differs
from PL/1 semantics).

It just so happens that IBM 360 (370, 390, etc.) hardware directly supports
signed BCD arithmetic of up to 31 digits (as do some other systems, e.g.
VAX).

-drt
--
comp.lang.c.mod erated - moderation address: cl**@plethora.n et
Nov 14 '05 #662
David R Tribble wrote:
"Mike Cowlishaw" <mf*****@attglo bal.net> wrote
There are a few constraints, though. For example, the ISO
COBOL 2002 standard specifies that intermediate calculations
be done using 32 decimal digits of precision. 32 digits of BCD
into a 128-bit register leaves very little room for a sign and
exponent. I still have never written a COBOL program, but is that fixed point
or floating point? 'Standard' COBOL arithmetic. Calculate as well as possible and
then assign to a fixed-point variable. Best ask COBOL folk what
that is :-). As you say COBOL requires 32 decimal digits of precision. Would that
be _exactly_ 32 digits of precision or _at least_ 32 digits of
precision? I think producing _exactly_ 32 digits if what you have
available is 34 digits could be difficult.
I forget the actual wording. The final draft is on the web,
somewhere, if you want to check.


This precision requirement could be based on IBM's COBOL arithmetic,
which uses 30 or 31 decimal digits (I don't remember which) for all
intermediate results in fixed-point arithmetic expressions. If any
floating-point values are present in a given expression, the whole
thing is done in floating-point instead.

Anyway, 30 or 31 BCD digits plus a sign nibble fit quite naturally
into 128 bits (16 bytes). IBM stipulated additional rules for
handling gradual loss of precision (i.e., truncation of least
sigificant digits) for the arithmetic operators, so that no
high-order digits are lost (this differs from PL/1 semantics).

It just so happens that IBM 360 (370, 390, etc.) hardware directly
supports signed BCD arithmetic of up to 31 digits (as do some other
systems, e.g. VAX).


We're talking about COBOL 2002. This specifies 32-digit
intermediate results, not 31. (The conspiracy theorists suggest
that this is so that IBM BCD hardware cannot be used :-).)

mfc

-drt

--
comp.lang.c.mod erated - moderation address: cl**@plethora.n et
Nov 14 '05 #663
On 2003-10-12 18:49:40 -0400, Jerry Feldman <ga********@blu .orgsaid:
On 08 Oct 2003 05:35:19 GMT
"cody" <do************ *********@gmx.d ewrote:
>i though in standard C, there isn't such a thing like "const" you can
only use macros to fake them.
Maybe you should read the standard. The const keyword is certainly
defined, but it has a different meaning
than in C++. const int foo = 4;
In C, foo is a variable and will be treated as such. int *pf = (int *)&foo;
*pf = x;
You are mistaken. You cannot legally do that in either language.

From the standard:

6.7.3 5
"If an attempt is made to modify an object defined with a
const-qualified type through use of an lvalue with non-const-qualified
type, the behavior is undefined."
--
comp.lang.c.mod erated - moderation address: cl**@plethora.n et -- you must
have an appropriate newsgroups line in your header for your mail to be seen,
or the newsgroup name in square brackets in the subject line. Sorry.
Aug 9 '06 #664
Clark,

Comment/question below.
>const int foo = 4;
In C, foo is a variable and will be treated as such. int *pf =
(int *)&foo;
*pf = x;

You are mistaken. You cannot legally do that in either language.

From the standard:

6.7.3 5
"If an attempt is made to modify an object defined with a
const-qualified type through use of an lvalue with non-const-qualified
type, the behavior is undefined."
I lifted the following example from c99 6.5.16.1 Simple assignment:

const char **cpp;
char *p;
const char c = 'A';

printf("c = %c.\n", c);

cpp = &p; // constraint violation
*cpp = &c; // valid
*p = 'B'; // valid

printf("c = %c.\n", c);

It compiles without warning on Microsoft Visual C++ .NET (2003) and on
MS Visual Studio 2005. In both cases, the resulting program changes the
value of c.

gcc version 3.2.2 generates a warning but compiles. The resulting
program changes the value of c.

I guess I'm wondering what a constraint violation is. I know a
constraint is defined as a restriction, either syntactic or semantic, by
which the exposition of language elements is to be interpreted.

But doesn't a compliant compiler need to issue a fatal diagnostic for a
constraint violation. Or maybe even a warning?

rCs
--
comp.lang.c.mod erated - moderation address: cl**@plethora.n et -- you must
have an appropriate newsgroups line in your header for your mail to be seen,
or the newsgroup name in square brackets in the subject line. Sorry.
Aug 18 '06 #665
[mod note: I received something like 200 submissions of this post, and
there's no contact address for the author. This is the second or third time.
If I can't contact someone, I will happily just add mail filters to deal
with stuff like this. Be contactable. -mod]

Robert Seacord wrote:
Clark,

Comment/question below.
>>const int foo = 4;
In C, foo is a variable and will be treated as such. int *pf =
(int *)&foo;
*pf = x;
You are mistaken. You cannot legally do that in either language.

From the standard:

6.7.3 5
"If an attempt is made to modify an object defined with a
const-qualified type through use of an lvalue with non-const-qualified
type, the behavior is undefined."

I lifted the following example from c99 6.5.16.1 Simple assignment:

const char **cpp;
char *p;
const char c = 'A';

printf("c = %c.\n", c);

cpp = &p; // constraint violation
*cpp = &c; // valid
*p = 'B'; // valid

printf("c = %c.\n", c);

It compiles without warning on Microsoft Visual C++ .NET (2003) and on
MS Visual Studio 2005. In both cases, the resulting program changes the
value of c.
In that case you need to make sure you are compiling it as C code and
make sure you have told the compiler to follow the C standard. I don't
currently have my Windows notebook with me to test it myself since it
did not catch the same plain as me.
gcc version 3.2.2 generates a warning but compiles. The resulting
program changes the value of c.
The C standard does not mandate that programs fail to compile after
producing and required diagnostics (Warnings, Information messages,
Error, insults about your coding abilities, and of these could be issued
as a "diagnostic "). Also, once undefined behaviour is invoked, the
program is allowed to do anything. One of the infinitely many "any
things" it can do is exactly what you expect. However, tomorrow it might
not change the value of C, or after you upgrade the compiler the
behaviour might change (this does happen to people), or it might decide
to report you to the CIA for spying.
I guess I'm wondering what a constraint violation is. I know a
constraint is defined as a restriction, either syntactic or semantic, by
which the exposition of language elements is to be interpreted.
At its simplest, a constraint violation is where the standard places a
constraint (limitation) on what you are allowed in your code, and you
violate that constraint in your code.
But doesn't a compliant compiler need to issue a fatal diagnostic for a
constraint violation. Or maybe even a warning?
See above. Any form of "diagnostic " message is allowed, even something like:
Write out 1000 time "I will not write code with errors"
The compiler could even just fart in your general direction.

After issuing some form of message the compiler is allowed to continue
to compiler the program (although it does not matter what the program
then does) or reject the program.
--
Flash Gordon
Still sigless on this computer.
--
comp.lang.c.mod erated - moderation address: cl**@plethora.n et -- you must
have an appropriate newsgroups line in your header for your mail to be seen,
or the newsgroup name in square brackets in the subject line. Sorry.
Aug 25 '06 #666
Robert Seacord <rc*@sei.cmu.ed uwrites:
[...]
I guess I'm wondering what a constraint violation is. I know a
constraint is defined as a restriction, either syntactic or semantic, by
which the exposition of language elements is to be interpreted.

But doesn't a compliant compiler need to issue a fatal diagnostic for a
constraint violation. Or maybe even a warning?
C99 5.1.1.3p1:

A conforming implementation shall produce at least one diagnostic
message (identified in an implementation-defined manner) if a
preprocessing translation unit or translation unit contains a
violation of any syntax rule or constraint, even if the behavior
is also explicitly specified as undefined or
implementation-defined. Diagnostic messages need not be produced
in other circumstances.

Footnote:

The intent is that an implementation should identify the nature
of, and where possible localize, each violation. Of course, an
implementation is free to produce any number of diagnostics as
long as a valid program is still correctly translated. It may also
successfully translate an invalid program.

So a compiler is allowed to produce a non-fatal warning in response to
a constraint violation.

--
Keith Thompson (The_Other_Keit h) ks***@mib.org <http://www.ghoti.net/~kst>
San Diego Supercomputer Center <* <http://users.sdsc.edu/~kst>
We must do something. This is something. Therefore, we must do this.
--
comp.lang.c.mod erated - moderation address: cl**@plethora.n et -- you must
have an appropriate newsgroups line in your header for your mail to be seen,
or the newsgroup name in square brackets in the subject line. Sorry.
Aug 25 '06 #667
Robert Seacord wrote:
....
I lifted the following example from c99 6.5.16.1 Simple assignment:

const char **cpp;
char *p;
const char c = 'A';

printf("c = %c.\n", c);

cpp = &p; // constraint violation
*cpp = &c; // valid
*p = 'B'; // valid

printf("c = %c.\n", c);

It compiles without warning on Microsoft Visual C++ .NET (2003) and on
MS Visual Studio 2005. In both cases, the resulting program changes the
value of c.

gcc version 3.2.2 generates a warning but compiles. The resulting
program changes the value of c.

I guess I'm wondering what a constraint violation is. I know a
constraint is defined as a restriction, either syntactic or semantic, by
which the exposition of language elements is to be interpreted.

But doesn't a compliant compiler need to issue a fatal diagnostic for a
constraint violation. Or maybe even a warning?
When a translation unit (TU) contains one or more constraint
violations, a diagnostic message is mandatory. That's the single most
important thing you need to know about constraint violations. It's
usually the case that when there's a constraint violation, the behavior
is undefined and the program is not strictly conforming (but I suspect
that there might be subtle cases where this isn't true). Therefore,
terminating translation of a TU is permitted. However, it's not
mandatory. The only case where the C standard prohibits an
implementation from translating a TU is if it contains a #error
directive which survives conditional compilation.
As a practical matter, changing the value of an object declared
constant is a problem only in two cases:
1. The implementation places the object in read-only memory.
2. The implementation makes optimizations based upon the assumption
that the value of the object can't change.

If neither of those cases applies, and the compiler chooses to
translate your program, and you choose to execute it, it might even
work as you might expect it to work. You shouldn't be surprised by that
result; but I would not recommend counting on it.
--
comp.lang.c.mod erated - moderation address: cl**@plethora.n et -- you must
have an appropriate newsgroups line in your header for your mail to be seen,
or the newsgroup name in square brackets in the subject line. Sorry.
Aug 25 '06 #668
On 2006-08-18 04:53:41 -0400, Robert Seacord <rc*@sei.cmu.ed usaid:
Clark,

Comment/question below.
>>const int foo = 4;
In C, foo is a variable and will be treated as such. int *pf =
(int *)&foo;
*pf = x;

You are mistaken. You cannot legally do that in either language.

From the standard:

6.7.3 5
"If an attempt is made to modify an object defined with a
const-qualified type through use of an lvalue with non-const-qualified
type, the behavior is undefined."

I lifted the following example from c99 6.5.16.1 Simple assignment:

const char **cpp;
char *p;
const char c = 'A';

printf("c = %c.\n", c);

cpp = &p; // constraint violation
*cpp = &c; // valid
*p = 'B'; // valid

printf("c = %c.\n", c);

It compiles without warning on Microsoft Visual C++ .NET (2003) and on
MS Visual Studio 2005. In both cases, the resulting program changes the
value of c.

gcc version 3.2.2 generates a warning but compiles. The resulting
program changes the value of c.

I guess I'm wondering what a constraint violation is. I know a
constraint is defined as a restriction, either syntactic or semantic, by
which the exposition of language elements is to be interpreted.

But doesn't a compliant compiler need to issue a fatal diagnostic for a
constraint violation. Or maybe even a warning?

rCs
Yes, according to 5.1.1.3:
"A conforming implementation shall produce at least one diagnostic
message (identified in an implementation-defined manner) if a
preprocessing translation unit or translation unit contains a
violation of any syntax rule or constraint, even if the behavior is
also explicitly specified as undefined or implementation-defined.
Diagnostic messages need not be produced in other circumstances."

So, a conforming compiler has to at least produce a warning message
for the "cpp = &p" line. In this instance, gcc is conforming, VC++ is
not.
--
Clark S. Cox, III
cl*******@gmail .com
--
comp.lang.c.mod erated - moderation address: cl**@plethora.n et -- you must
have an appropriate newsgroups line in your header for your mail to be seen,
or the newsgroup name in square brackets in the subject line. Sorry.
Aug 25 '06 #669
Robert Seacord wrote:
6.7.3 5
"If an attempt is made to modify an object defined with a
const-qualified type through use of an lvalue with non-const-qualified
It compiles without warning on Microsoft Visual C++ .NET (2003) and on
MS Visual Studio 2005. In both cases, the resulting program changes the
value of c.
gcc version 3.2.2 generates a warning but compiles. The resulting
program changes the value of c.
Yes, one form of "undefined behavior" is to go ahead and produce
some kind of result, which may or may not be what the programmer
naively was expecting.

Some compilers, such as those for embedded systems, may allocate
"const"-qualified objects in a read-only program section, which
in the final product might be burned into ROM. On more general-
purpose platforms, it is possible that read-only segments of a
task image might not have the "writable" bit set in the page
descriptors, in which case attempts to write to that storage
would result in an illegal-access trap (and probably task
termination).
I guess I'm wondering what a constraint violation is. I know a
constraint is defined as a restriction, either syntactic or semantic, by
which the exposition of language elements is to be interpreted.
A "constraint violation" is a violation of some requirement
specified in a subclaused entitled "Constraint s".
But doesn't a compliant compiler need to issue a fatal diagnostic for a
constraint violation. Or maybe even a warning?
Yes, constraint violations require a diagnostic.
However, the example was an instance of *undefined behavior*,
which is a different category of transgression.
--
comp.lang.c.mod erated - moderation address: cl**@plethora.n et -- you must
have an appropriate newsgroups line in your header for your mail to be seen,
or the newsgroup name in square brackets in the subject line. Sorry.
Aug 25 '06 #670

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

Similar topics

3
11266
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...
2
5865
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
3
23053
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.
0
8508
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
1
8621
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...
4
18317
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
1
6890
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
2
31461
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.
3
23617
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.
0
11137
Oralloy
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...
0
10736
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth. The Art of Business Website Design Your website is...
1
10840
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,...
0
9570
agi2029
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...
1
7969
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms. Adolph will...
0
7120
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();...
0
5795
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...
1
4608
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
3
3230
bsmnconsultancy
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.