Authors Puneet Bhalla, Surbhi Gupta,
License CC-BY-4.0
ANALYSIS 5(14), August 1, 2013
Discovery
ANALYSIS ARTICLE
ISSN
2278–5469
EISSN
2278–5450
Comparative study of C, Objective C, C++ programming
language
Surbhi Gupta, Puneet Bhalla
Dept. of Computer science & Engineering, Dronacharya College of Engineering, Gurgaon, India
Publication History
Received: 14 June 2013
Accepted: 17 July 2013
Published: 1 August 2013
Citation
Surbhi Gupta, Puneet Bhalla. Comparative study of C, Objective C, C++ programming language. Discovery, 2013, 5(14), 11-14
Publication License
This work is licensed under a Creative Commons Attribution 4.0 International License.
General Note
Article is recommended to print as color digital version in recycled paper.
ABSTRACT
“A programming language is an artificial language designed to express computations that can be performed by a machine, particularly a computer”. The initial
development of C occurred at AT&T Bell Labs between 1969 and 1973. It was named "C" because its features were derived from an earlier language called
"B" was a stripped-down version of the BCPL programming language. This language was created for a specific purpose to design the UNIX operating system.
From the beginning, C was intended to be useful--to allow busy programmers to get things done easily and without remembering the register binary values
which was a major problem in coding with C language. To overcome problems of Objective-C language new language is derived in 1980’s. With concept of
object oriented and some predefined rules or functionalities a language is designed known as C with classes. Later this language gets its originals name i.e.,
C++. C++ is a language which is semi dependent on machine and which is easy to understand. C++ is different from C in terms of syntaxes, header files, some
rules and many more things. The C and C++ programming languages are closely related. C++ grew out of C, as it was designed to be source-and-link
compatible with C. However, due to minor semantic differences, most non-trivial C programs will not compile as C++ code without modification—C++ is not a
strict superset of C. This research paper concludes withthe influence of one language to another and comparative study of the languages.
Keywords: C++, C, UNIX, OBJECTIVE C.
1. INTRODUCTION approved a version of C in 1989 which is known as ANSIC. With few
exceptions, every modern C compiler has the ability to adhere to this
This paper is about the comparison of the C, Objective C & C++
standard. ANSI C was then approved by the International Standards
programming language, the influences of one language on another, and the
Organization (ISO) in 1990” (A Brief History of the C Language). There is
conditions under which they were created. “C is a programming language
something interesting about the name of C. It was named C because its
which born at ‘AT & T’s Bell Laboratories’ of USA in 1972. It was written by
predecessor was called B which was also developed by Ken Thompson of Bell
Dennis Ritchie. This language was created for a specific purpose: to design
Labs (A Brief History of the C Language).
the UNIX operating system (which is used on many computers). From the
The Objective-C language is a simple computer language designed to
beginning, C was intended to be useful--to allow busy programmers to get
enable sophisticated object-oriented programming. Objective-C is defined as
11
things done” (A Brief History of the C Language). After that, C began to be
a small but powerful set of extensions to the standard ANSI C language. Its
used by more and more people outside the Bell Laboratories because it is
Page
additions to C are mostly based on Smalltalk, one of the first object-oriented
more efficient than other programming languages at that time. In the late
programming languages. Objective-C is designed to give C full object-
70’s, C took the dominant position of programming languages. “The
oriented programming capabilities, and to do so in a simple and
committee formed by the American National Standards Institute (ANSI)
© 2013 Discovery Publication. All Rights Reserved. www.discoveryjournals.com OPEN ACCESS
ANALYSIS ARTICLE
straightforward way. It is the main programming language used by Apple for 2.2. C++
the OS X and iOS operating systems and their respective APIs, Cocoa and Stroustrup found that Simula had features that were very helpful for large
Cocoa Touch. software development, but the language was too slow for practical use, while
“C++ was written by BjarneStroustrup at Bell Labs during 1983-1985. BCPL was fast but too low-level to be suitable for large software
C++ is an extension of C. Prior to 1983; BjarneStroustrup added features to C development. When Stroustrup started working inAT&T Bell Labs, he had the
and formed what he called ‘C with Classes’. He had combined the Simula's problem of analyzing the UNIX kernel with respect to distributed computing.
use of classes and object-oriented features with the power and efficiency of Remembering his Ph.D. experience, Stroustrup set out to enhance the C
C. The term C++ was first used in 1983.” A Brief History of C++ “C++ was language with Simula-like features. C was chosen because it was general-
designed for the UNIX system environment, it represents an enhancement of purpose, fast, portable and widely used. Besides C and Simula, some other
the C programming language and enables programmers to improve the languages that inspired him were ALGOL 68, Ada, CLU and ML. In 1983, the
quality of code produced, thus making reusable code easier to write” (Online name of the language was changed from C with Classes to C++ (++ being
C++ tutorial). the increment operator in C). New features were added including virtual,
function name and operator overloading, references, constants, user-
2. HISTORY controlled free-store memory control, improved type checking, and BCPL
style single-line comments with two forward slashes (//). In C++, the basic
2.1. C
data type is almost the same as C. In C++, there is one more type Booleans.
The initial development of C occurred at AT&T Bell Labs between 1969 and
A Boolean, bool, can have one of the two values true or false. A Boolean is
1973; (A Brief History of the C Language) according to Ritchie, the most
used to express the results of logical operations. There are 32 keywords both
creative period occurred in 1972. It was named "C" because its features were
in C and C++ as shown.
derived from an earlier language called "B".In 1978, Brian Kernighan and
Dennis Ritchie published the first edition of The C Programming Language.
auto else long switch
This book, known to C programmers as "K&R", served for many years as an
break enum register typedef
informal specification of the language. The version of C that it describes is
case extern return union
commonly referred to as K&R C. The second edition of the book covers the
char float short unsigned
later ANSI C standard. K&R introduced several language features:
const for signed void
continue gotosizeof volatile
Standard I/O library,
default if static while
longint data type,
do intstruct double
unsignedint data type,
In C Language, There are four basic Date type.
Only keyword _Packed is not used in C++ any more.
There are 30 keywords that are not in C, but they are used in C++.
Basic data type in C language (Brian et al. 1988).
New keyword in C++.
int “an integer, typically reflecting the natural size of
asmdynamic_cast namespace reinterpret_cast
integers on the host machine”
bool explicit new static_cast
float “single-precision floating point”
catch false operator template
double “double-precision floating point”
class friend private this
char “a single byte, capable of holding one character in
const_cast inline public throw
the local character set”
delete mutable protected true
try typeidtypename
There are five Type Specifiers in C programming (Stephen, 2005)
using
a) long
virtual wchar_t1
b) longlong
c) short
d) unsigned 2.3. Objective-C
e) signed Objective-C was created primarily by Brad Cox and Tom Love in the early
1980s at their company Stepstone. Both had been introduced to Smalltalk
There are lists of all the reserved keywords in C language. “These keywords while at ITT Corporation's Programming Technology Center in 1981. Cox was
cannot be abbreviated, used as variable names, or used as any other type of intrigued by problems of true reusability in software design and
identifiers” (C reserved keywords). programming. He realized that a language like Smalltalk would be invaluable
in building development environments for system developers at ITT.
Reserved keywords in C language (C reserved keywords) However, he and Tom Love also recognized that backward compatibility with
C was critically important in ITT's telecom engineering milieu (Biancuzzi et al.
auto else long switch 2009). Cox began writing a pre-processor for C to add some of the
break enum register typedef capabilities of Smalltalk. He soon had a working implementation of an
case extern return union do int object-oriented extension to the C language, which he called "OOPC" for
char float short unsigned Object-Oriented Pre-Compiler (Cox, 1983). Love and Cox eventually formed a
const for signed void new venture, Productivity Products International (PPI), to commercialize their
product, which coupled an Objective-C compiler with class libraries. In 1986,
continue gotosizeof volatile
Cox published the main description of Objective-C in its original form in the
default if static while double
book Object-Oriented Programming, An Evolutionary Approach.
In C, every data type such as a character, integer, or floating-point
number has a range of values associated with it. The range is decided by the 3. INFLUENCES
amount of storage that is allocated to store a particular type of data in the C is influenced by languages like Assembly, B (BCPL, CPL), ALGOL68,
memory of the computer. It depends on the computer you’re running. This FORTRAN i.e., these languages helped in developing C. C is the parent
feature for C language is called “machine-dependent”. For example, an language of many other languages or mostly of all the languages. Many later
12
integer might take up 32 bits on your computer, or perhaps it might be languages have borrowed directly or indirectly from C, including: C#, D, Go,
stored in 64 bits on another computer. Don’t write any program that Java, Java Script, Limbo, LPC, Perl, PHP, Python, and Unix's C Shell. The most
Page
assumes the size of the data types in C (Brian et al. 1988). pervasive influence on these languages has been syntactical, and they tend
to combine the recognizable expression and statement syntax of C with
underlying type systems and data models that can be radically different.
© 2013 Discovery Publication. All Rights Reserved. www.discoveryjournals.com OPEN ACCESS
ANALYSIS ARTICLE
Objective-C is influenced by C, Smalltalk. It is a powerful set of extensions to from C in terms of syntaxes, header files, some rules and many more things.
the Standard ANSI C Language. It is designed & developed to give C full For example: - In C if return type of main ( ) is declared integer (int) then
object-oriented programming capabilities, and to do so in a simple and return keyword must be used to return a value but in C++ no need to use
straightforward way.JAVA, Objective-J & other languages have some features return keyword.C++ uses the objected oriented concepts that why it is also
of it. C++ is influenced by C, Simula, Ada, etc. C adapts the features of known as Object Oriented Programming Language. In this language
classes, inheritance, etc from Objective-C. C++ is firstly known as C with all the work is done in classes so making changes are much easier from C
classes, later it gets its name C++. JAVA, ADA, PHP, C99, C# languages are language.
influenced by it.
5. CONCLUSION
4. COMPARATIVE STUDY OF LANGUAGES This paper studies about the languages, their history, and influence of one
In early times programming or coding is done with the help of binary digits. language to another. The purpose of developing C Language is to give
All the characters have their binaries. In those days coding is very difficult programmer a coding friendly language. But this language has some
because all the coding is done on binary or in assembly language. In these drawbacks also. To overcome these drawbacks new language Objective-C is
languages memory register is directly used so remembering all the register derived. It is influenced by C. Objective-C also has some issues to overcome
names and commands and binary values is not an easy work. If any changes these issues C++ is derived. It has features of C and Objective-C both. Since
a programmer wants to do in that program then doing changes is much all these languages are derived from one another but they have some
more difficult from making a new program. So programmer’s requires a dissimilarity also.C is a minimalistic programming language because it could
language which minimise their task and make coding easier for them. After be compiled in a straightforward manner by a relatively simple compiler. C
some time C Language was derived in 1970’s the purpose of discovering this offers low-level access to memory via pointers and the ability to access
language is to make programming easier for programmer. In C Language specific hardware addresses. C generates only a few instructions of machine
simple English is used for coding. No binaries as well as no need to languages for each of its core language elements and does not require
remember the name of register. In C Language syntaxes are written in very extensive run-time support. It can be concluded that C language is suitable
simple language which is easy to understand as well as to remember. C for many systems-programming applications that had traditionally been
Language is derived from or influenced form the Assembly Language so it is implemented in assembly languages. \However, as C is structured oriented
machine oriented or machine dependent i.e., the program can only run in programming language and focuses on the procedural programming
that system on which it is design (Table 1). It cannot be port to any other paradigm, it is relatively hard to control the large-scale program. As C
system which is having different configuration from the system on which it is language has high level and machine level mixed programming capacity, it is
design. Other problem is that C Language is procedural language i.e., it has used in most hardware related applications. It is very suitable for writing
its set rule for defining and declaring all the variables, functions, etc... For programs in embedded device, chip designing, industrial automation
example first line of void main () is always used for variable declaration. All products and so forth and so on. Meanwhile, Software such as “Unix”,
the variables are only declared in this line only not else anywhere in the “windows”, and other antivirus can also be created by C language. Last but
program. By developing C Language problem of writing language is solved not at least, algorithm can also be implemented in C language easily. C++
but now some new problems are arises. To overcome these problems a new was originally designed to be an enhancement to C language. Basically it
language is derived in 1980’s that is Objective-C Language. Objective-C inherits all the advantages of C language. In addition, it has more features
Language is object oriented language. In this language no rules are than C, such as encapsulation, multiple inheritance, and Polymorphism. It can
described. In this language there are no rules for name of variable, for be concluded that it is relatively easy to use C++ to develop a large or huge
declaring variables or for doing any task. In this language printing is done system compared with C 44 language as C++ supports the object-oriented
just by writing the sentence in square brackets. In this language all the work (OO) features. However, C++ has some disadvantages. C++ code is easily
is done in classes that why it an object oriented language. But this language prone to errors related to data types because C++ does not offer very strong
is not easy to learn or understand because in this there are no set rules for type-checking. C++ does not support platform independent. It can't run on
defining any variable or function. But the advantage of this language is that it the all kinds of platforms. The main disadvantage is that C++ is not a pure
gives the concept of objects. By using programming becomes very easy. object oriented programming language as it doesn’t have the feature of
To overcome problems of Objective-C language new language is derived garbage collection. C++ adopts the pointers which lead to no security for the
in 1980’s. With concept of object oriented and some predefined rules or data. C++ can be widely used in the software industry. As C++ can be a very
functionalities a language is designed known as C with classes. Later this fast programming language after compiled, the software such as application
language gets its originals name i.e., C++. C++ is a language which is semi software, device drivers and high-performance server can be designed by
dependent on machine and which is easy to understand. C++ is different C++.
Table 1
Comparative study of the languages
Basis C Objective-C C++
Multi-paradigm, procedural,
Paradigm(s) Imperative (Procedural), Structured Reflective, class-based object oriented object-oriented, functional,
generic
Appeared in 1972 1983 1985
Designed by Dennis Ritchie Brad Cox &Tom Love BjarneStroustrup
Dennis Ritchie & Bell Labs(creators); ANSI
BjarneStroustrup Bell Labs ISO/IEC
Developer X3J11 (ANSI C);ISO/IEC Apple
JTC1/SC22/WG21
JTC1/SC22/WG14(ISO C)
File name extension .h, .c .h, .m, .mm .h, .hh, .cpp, .hpp, .cxx, .c++
Syntax Very complex Easiest Moderate
Supports all types of inheritance
Inheritance feature No such feature Supports all types of inheritance
excluding multiple inheritance
Emphasis on Functions Both( function & data) Data
13
Functions can be declared at the point of Totally class-based so function are Functions must be prototyped
Function Declaration
use declared in the classes before main
Page
Concept of overloading Doesn’t support overloading Supports overloading Supports overloading
Header files Need to include them No need Need to include them
© 2013 Discovery Publication. All Rights Reserved. www.discoveryjournals.com OPEN ACCESS
ANALYSIS ARTICLE
Concept of garbage For de-allocating memory delete (
For de-allocating memory free( ) is used Automatic garbage collection
collection ) is used
Keywords 32 12 98
Main( ) doesn’t automatically returns Main( ) automatically return
Use of return keyword No concept of main( ) & return
zero(0) zero(0)
SUMMARY OF RESEARCH
The paper is regarding the cumulative studies of three well known languages i.e.C,C++and Objective C.It comprises of all the characteristics ,advantages and
disadvantages, and the developments of all the three languages . Also the paper helps to compare the languages on various aspects and helps us to decide
where to use which language so as to obtain more potential output.
FUTURE ISSUES
1. More developments in the field of languages and development work may add or deduce the comparisions.
2. Support for handling memory security vulnerabilities inlow-level programming. Can the pain in programming bereduced, and can ad hoc techniques be
eliminated?
DISCLOSURE STATEMENT
There is no financial support for this research work from the funding agency.
ACKNOWLEDGMENT
Much thanks to our guide for his constructive criticism, and assistance towards the successful completion of this research work.
REFERENCE
1. A Brief History of the C Language. Available athttp://hubpages.com 5. Brian W Kernighan, Dennis M Ritchie. Chapter 2; Types, Operators and
/hub/A-Brief-History-of-the-C-Language (Accessed May 25th, 2010) Expressions in the C programming Language, Prentice-Hall Publishing,
2. A Brief History of C++. Available at http://hubpages.com/hub/A-Brief- 1988
History-of-the-C-Language (Accessed May 25th, 2010) 6. C reserved keywords. Available at http://publib.boulder.ibm.com/
3. Online C++ tutorial, A Brief History of C++, available at http://www. infocenter/pdthelp/v1r1/index.jsp?topic=/com.ibm.debugtool.doc_8.1/e
intap.net/~drw/cpp/cpp01_03.htm (Accessed May 25th, 2010) qa8ug02426.htm (Accessed April 20th, 2010).
4. Stephen G Kochan. Understanding Data Types and Constants in 7. Biancuzzi Federico, Warden Shane. Masterminds of Programming.
Programming in C, Third Edition, Sams Publishing, 800 East 96th Street, O'Reilly Media, Inc. 2009, 242–246, ISBN 0-596-51517-0
Indianapolis, Indiana, 46240 USA, 2005, 23-39 8. Cox Brad. The object oriented pre-compiler: programming Smalltalk 80
methods in C language. ACM SIGPLAN Notices (New York, NY: ACM),
1983, 18(1).doi: 10.1145/948093.948095. Retrieved 2011-02-17
14
Page
© 2013 Discovery Publication. All Rights Reserved. www.discoveryjournals.com OPEN ACCESS