<< Chapter < Page Chapter >> Page >

Formal notations rely less on intuitive, everyday meanings of words and text strings and more on definitions backed up by precise, unambiguous, and formal (or mathematical) definitions. Formal construction notations and formal methods are at the heart of most forms of system programming, where accuracy, time behavior, and testability are more important than ease of mapping into natural language. Formal constructions also use precisely defined ways of combining symbols that avoid the ambiguity of many natural language constructions.

Visual notations rely much less on the text-oriented notations of both linguistic and formal construction, and instead rely on direct visual interpretation and placement of visual entities that represent the underlying software. Visual construction tends to be somewhat limited by the difficulty of making “complex“ statements using only movement of visual entities on a display. However, it can also be a powerful tool in cases where the primary programming task is simply to build and “adjust“ a visual interface to a program, the detailed behavior of which has been defined earlier.

Object-oriented languages

There are almost two dozen major object-oriented programming languages in use today. But the leading commercial o-o languages are far fewer in number. These are:

  • C++
  • Smalltalk
  • Java


C++ is an object-oriented version of C. It is compatible with C (it is actually a superset), so that existing C code can be incorporated into C++ programs. C++ programs are fast and efficient, qualities which helped make C an extremely popular programming language. It sacrifices some flexibility in order to remain efficient, however. C++ uses compile-time binding, which means that the programmer must specify the specific class of an object, or at the very least, the most general class that an object can belong to. This makes for high run-time efficiency and small code size, but it trades off some of the power to reuse classes.

C++ has become so popular that most new C compilers are actually C/C++ compilers. However, to take full advantage of object-oriented programming, one must program (and think!) in C++, not C. This can often be a major problem for experienced C programmers. Many programmers think they are coding in C++, but instead are only using a small part of the language's object-oriented power.


Smalltalk is a pure object-oriented language. While C++ makes some practical compromises to ensure fast execution and small code size, Smalltalk makes none. It uses run-time binding, which means that nothing about the type of an object need be known before a Smalltalk program is run.

Smalltalk programs are considered by most to be significantly faster to develop than C++ programs. A rich class library that can be easily reused via inheritance is one reason for this. Another reason is Smalltalk's dynamic development environment. It is not explicitly compiled, like C++. This makes the development process more fluid, so that "what if" scenarios can be easily tried out, and classes definitions easily refined. But being purely object-oriented, programmers cannot simply put their toes in the o-o waters, as with C++. For this reason, Smalltalk generally takes longer to master than C++. But most of this time is actually spent learning object-oriented methodology and techniques, rather than details of a particular programming language. In fact, Smalltalk is syntactically very simple, much more so than either C or C++.

Questions & Answers

what is agile
Qais Reply
what do you want
how to U download
Adam Reply
hi is there any mobile spy app best you know?
muddy Reply
what is software engineer
Soumen Reply
Who make the software he is the software engineer.
i don't
mobile spy android need it any one help me
I want to create a game
Rohith Reply
Requirements to create game
yes i also
want to knoe about the reqirements
what are software evolution processes
Software Evolution is a term which refers to the process of developing software initially, then timely updating it for various reasons, i.e., to add new features or to remove obsolete functionalities etc. ... If the proposed changes are accepted, a new release of the software system is planned
basic things of software engineer
Saroj Reply
Which languages need for web development? And how I can learn it? pls help me
Zhamshid Reply
basic things of software engineer
I also want to know basic training for software engineering
I want to found an internet company
Sanay Reply
First learn english grammar correctly. 🙏
i want software developed explain videos
Fazil Reply
draw and explain state and activity diagram of library management system
Prashant Reply
hi siham how are you doing?
explain association and generalisation with library system diagram
Prashant Reply
what do you mean by functional and non functional requirements
functional - describes what a software system should do . non functional - place constraints on how the will do so
non functional requirement include: quility . reliability . response time . security . privacy . effectiveness . maintainability . robustness scalability . fault tolerance . extensibility . efficiency . portability . resilience ... .
What does encapsulation mean?
Sravanthi Reply
Encapsulation in Java is a process of wrapping code and data together into a single unit, for example, a capsule which is mixed of several medicines. ... Now we can use setter and getter methods to set and get the data in it. The Java Bean class is the example of a fully encapsulated class.

Get the best Software engineering course in your pocket!

Source:  OpenStax, Software engineering. OpenStax CNX. Jul 29, 2009 Download for free at http://cnx.org/content/col10790/1.1
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Software engineering' conversation and receive update notifications?