Archive for the ‘C/ C++ Development’ Category

C Is The Most Popular Programming Language In April

Wednesday, April 25th, 2012

Have you heard of the TIOBE Programming Community Index? It’s a table that lists the ratings of programming languages and tracks their status throughout the developer ecosystem. It’s a good indicator of where a language stands in terms of its general use. April has a few surprises though.

It was found that Java is a downward trend from it’s top spot in the developer world. It would appear that C is now the most popular programming language in the world at a rating of 17.555 percent. It’s not all that bad for Java though since it’s rating for April is at 17.026 percent. TIOBE Software says that Java will never diminish too badly due to the Android development scene.

How does TIOBE find these results? Here’s how the Web site puts it:

The TIOBE Programming Community index is an indicator of the popularity of programming languages. The index is updated once a month. The ratings are based on the number of skilled engineers world-wide, courses and third party vendors. The popular search engines Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube and Baidu are used to calculate the ratings. Observe that the TIOBE index is not about the best programming language or the language in which most lines of code have been written.

What’s interesting is that C-based languages make up the majority of the top five list with C++ coming in at number three with a rating of 8.896 percent, Objective-C at number four with 8.236 percent and C# at number 5 with 7.348 percent. Objective-C has seen the largest climb with its position at number eight this time last year.

While Java may be doing down, JavaScript is working it’s way up rather slowly. It was at number 10 this time last year, but now it’s at number nine.

TIOBE hopes that their list will help developers make the proper choice when it comes to building new applications. Choosing a more popular language will ensure maximum compatibility, but there are applications being made now that should make language conversion easier for those who want to program applications in multiple languages.

Here’s the top 20 languages for the month of April according to the TIOBE Index:

C Most Popular Programming Language In April

Did you like this? Share it:

C/ C++ development – The Differences and Similarities Between C and C++

Tuesday, November 9th, 2010

by Oleksi Derkatch, coderprofile.com

keywords: C, C++, C plus plus, development

Intro

There have always been debates about the differences between C and C++. Hopefully this article will clear somethings up. I’ve seen a lot of content online, where C++ programmers assume that they know everything about C, just because they know C++. This is not the case. Hopefully this article will illuminate these differences. Knowledge of C and C++ is recommended for this article.

History

C++ was created by Bjarne Stroustrup as a superset to C. He originally called it “C with Classes”. After C++ became more and more popular, C++ began a standardization process and the name became C++. C++ contains all the features of C. That is to say that every C program is a C++ program, save a few specific times. All C++ programs are not C programs.

The Differences

Object Oriented Programming

One of the most commonly known differences between the two programming languages is that C++ supports OOP and C does not. Although this is true, it is a very basic definition. C was originally built to be a procedural programming language. You can actually implement OOP in C, but it’s not true OOP and it’s not very clean. C++ supports multiple programming paradigms. OOP is simply one of them. For example, C++’s parameterized templates allow for generic programming. C++ also has support for procedural. It even has a few characteristics of functional programming (in the form of function pointers). Of course, you can assume that any C++ feature relating to classes does not exist in C, including things like friends, and virtual functions. I suppose that one could summarize the difference as such:C++ has better support for multiple programming paradigms when compared to C

Generic Programming

C++ has support for generic programming in several different forms. First, C++ allows for function overloading. That is, creating two functions with the same name, that operate on different types of data. This allows a programmer to create a general interface acomplish a task. The second main support of generic programming comes in the form of templates. This features will generate overloaded functions at compile time for you, which saves you from writing out all type permutations yourself. Templates also allow you to generalize classes. The last way that generic programming can be achieved is through virtual functions. You can have a single method name work on several different derived classes, again allowing a programmer express behavior without specifying low-level types. C++ allows for generalizing work in the form of function overloading, parametrized templates, and virtual functions.

Macros and their uses

Any C programmer knows the importance of Macros in C. They are mainly used to create constants and to generate inline functions. C++ added several features to help eliminate the use of macros. For example, C++ added a const qualifier to define constants within a program. It also included the inline modifier to make functions inline. Although C++ still supports macros, it is recommended that you avoid using them. In C++, you should avoid using macros, and use C++ specific features to achieve the same results in a cleaner way.

The Namespace

In C, all libraries declare all their global variables in the global namespace. Any variable declared in a library can be accessed simply by including that file. Although this seems like a good feature, it makes it very simple for name collisions to occur. To solve this C++ implemented a namespace, which in essence modifies the scope of variables. Variables declared in a namespace can only be used through their namespace. That is what’s happening when you see something like “std::cout<<x<<std::endl;”. std is the namespace in which cout and endl are declared. Namespaces are another C++ specific feature that helps prevent name collisions.

Type Safety

C++ is more strict on type safety than C is. For example, in C, one does not need to cast in order to assign pointers of different types to one another. In C++, an explicit cast is necessary. C++ actually defines 4 different types of casting on top of the C-style cast. They are static_cast, dynamic_cast, static_cast, and reinterpret_cast. I will not get into the differences between these casts, as it is outside the scope of this article. Note that the C-style casting is depreciated in C++ and it is recommended that use the C++ casts. Also, C allows the int-by-default rule, while this is not allowed in C++. This rule is the rule that says that if a functions return type is not specified, it is assumed to be int. As a general rule, C++ is more strict on types than C.

Exception handling

C++ has it, C doesn’t. This is very simple. C++ allows you to catch and throw exceptions of different types. This gives C++ a better way of handling errors. C++ has support for exception handling, unlike C

References

C++ added references to it’s arsenal. References are similar in nature to pointers, only references are easier to use (and less powerful). References let a C++ program pass by reference without using pointer syntax. This is their main use in C++. As mentioned, references are rather limited in power. For example, you cannot do any of the following with references: change what they refer to, have a pointer to a reference, have an array of references. You must make references refer to something in their declaration, as they cannot be changed after that point. In that sense, references are similar to constant pointers. Of course C++ still has full support for pointers. C++ added references to let programmers pass by reference easier.

They way things are identified

In C, the full type of of any structure (or union) includes the word struct (or union). In C++, the name of the struct/union is sufficient. This is one of the ways C identifies things a little differently than C++. Another little naming difference is encountered when it comes to naming standard libraries. In C, you will always include standard libraries using the .h extension, but in C++, this is not the case. All standard C libraries are re-identified in C++. For example, the file stdio.h becomes cstdio. The general rule for including standard C libraries in C is simple. Prefix the library with the c character, and lose the .h. This becomes an identifier, instead of a file. The C++ compiler links the identifier cstdio to the file stdio.h and includes it. This is how that works. So when you include iostream, the C++ compiler looks for the file behind the identifier iostream. In C, you include the file directly. Of course, this only applies to standard libraries. For user-defined header files, the process is still the same (except that C++ headers have a .hpp extension rather than .h, but C++ can work with either one). C has a slightly different way of identifying aggregate types and standard files.

Extended structs

C++ adds a little more power to the struct. For example, structs in C++ can have methods, constructor and destructors. C does not have this power. C++ adds a little more features to structures.

Function Prototyping

Another simple difference. In C function prototyping is optional, in C++ it is mandatory.

Function taking no parameters

In C++ when you leave the parameter list of a function empty, you are telling the compiler that this function does not take any parameters. Doing the same in C implies that the function can take any number of parameters. In C, you need to then add the void to the parameter list to tell the compiler that this function is not taking parameters. In C++, this is not needed, although it is not an error to include it anyway. Functions taking no parameters are declared differently in C than in C++

Manual Memory Allocation

In C, you must use the malloc and free keywords to manually allocate and deallocate memory. In C++, you can use the new and delete keywords. They provide a cleaner way of manually working with memory. You can still use malloc and free, but new and delete are preferred. C++ provides a cleaner way to work with manual memory management.

Declarations of local variables

C dictates that all local variables must be declared at the top of their containing block, before any non-declarative statements. Although this is changing because of C99 standard, you will still see C code where all local variables are declared at the top of their block. In C++, you are allowed to declare a local variable anywhere in a block. C++ allows you do declare local variables anywhere in a block, but C forces you to declare all local variables at the top of the block.

Primitive boolean type

When it came to working with boolean types, you had to use an integer, where 0 was false and non-zero values were true. C++ added a primitive bool type that does not exist in C.

Operation overloading

C++ allows a programmer to overload a lot of operators such as +, -, * and /. This features does not exist in C. C++ allows for operation overloading

Default Arguments

C++ allows a programmer to specify default arguments for a function. C does not have this power. C++ allows default values for functions parameters.

Run Time Type Identification

Because C++ allows a programmer to have a lot more control with types, the type of an object cannot always be determined at compile-time. Because of this, C++ adds a system for determining the type of objects at runtime.

Conclusion

As you can see, there are a lot of differences between the two programming languages. I hope you learned something from this article. C is not C++ and vis versa. They are related, but contain a variety of differences. Feel free to PM me any comments or concerns about this article, especially if you spot something that I may have missed or misstated.

Did you like this? Share it: