While it is more common in scientific programming groups than in commercial IT organizations, a large number of developers have transitioned from FORTRAN programming to C programming. Without a doubt, the hardest concept for a FORTRAN programmer just starting out in C to master is pointers. C provides a tremendous amount of programmer flexibility in its ability to use pointers. As in the case of procedural to object-oriented transitions, some FORTRAN programmers learn C and are very happy to program away without ever utilizing C's pointer facilities.
Perhaps more common in commercial IT organizations is to find developers who have transitioned from COBOL programming to C programming. Like the FORTRAN to C transition, this is a major change. On average, there are many more possible ways to write a code fragment in C than there are to write the code implementing the same functionality in COBOL. While a C programmer may describe this as flexibility, the COBOL programmer may define it as "more ways to make an error."
One of the simplest language transitions to make is from C++ programming to Java programming. The Java language reduces the complexity of C++ while remaining instantly familiar. While Java syntax is similar to C++, the Java language does not use the concept of pointers. Instead, all objects are referenced by true object handles. In addition, some of the more complicated object-oriented features of C++, like implementation inheritance and templates, have been removed from the Java language. In addition, Java's rich set of application programming interfaces (APIs) provides programmers with a wide range of pre-defined extensions to the language.
The transition from C to Java programming is only slightly harder than from C++. As there are no stand-alone functions in the Java language, all application functionality must be implemented as methods within a class. This at least forces a programmer to start thinking about object-oriented design. By contrast, as previously mentioned, a C programmer could start writing code verbatim in C++ without ever using classes, methods , or any other object-oriented structure.