Carlos Escobar

   Programming knowledge

C++

C++ Language

  C++ is an object-oriented programming (OOP) language. It literally means "increased C", reflecting its nature as an evolution of the C language. C++ treats programming from a perspective where each component is considered an object, with its own properties and methods, replacing or complementing strutured programming paradigm, where the focus was on procedures and parameters. C++ has certain characteristics over other programming languages. The most remarkable ones are:

• Object-oriented programming
The possibility to orientate programming to objects allows the programmer to design applications from a point of view more like a communication between objects rather than on a structured sequence of code. In addition it allows a greater reusability of code in a more logical and productive way.

• Portability
You can practically compile the same C++ code in almost any type of computer and operating system without hardly making any changes. C++ is the most used and ported programming languages in the world.

• Brevity
Code written in C++ is very short in comparison with other languages, since the use of special characters is preferred to key words, saving some effort to the programmer (and prolonging the life of our keyboards!).

• Modular programming
An application's body in C++ can be made up of several source code files that are compiled separately and then linked together. Saving time since it is not necessary to recompile the complete application when making a single change but only the file that contains it. In addition, this characteristic allows to link C++ code with code produced in other languages, such as Assembler or C.

• C Compatibility
C++ is backwards compatible with the C language. Any code written in C can easily be included in a C++ program without hardly making any change.

• Speed
The resulting code from a C++ compilation is very efficient, due indeed to its duality as high-level and low-level language and to the reduced size of the language itself.

ROOT

An Object-Oriented Data Analysis Framework

   ROOT is an object-oriented framework aimed at solving the data analysis challenges of high-energy physics. There are two key words in this definition, object oriented and framework.First, we explain what we mean by a framework and then why it is an object-oriented framework.

   In one hand, programming inside a framework is a little like living in a city. Plumbing, electricity, telephone, and transportation are services provided by the city. In your house, you have interfaces to the services such as light switches, electrical outlets, and telephones. The details, for example, the routing algorithm of the phone switching system, are transparent to you as the user. You do not care; you are only interested in using the phone to communicate with your collaborators to solve your domain specific problems.

  If you are interested in doing physics, a good HEP framework will save you much work. Below is a list of themore commonly used components of ROOT:

• Command Line Interpreter
• Histograms and Fitting
• Writing a Graphical User Interface
• 2D Graphics
• Input/Output
• Collection Classes
• Script Processor

  There are also less commonly used components, as:

• 3D Graphics
• Parallel Processing (PROOF)
• Run Time Type Identification (RTTI)
• Socket and Network Communication
• Threads

  The benefits of frameworks can be summarized as follows:

• Less code to write - programmer should be able to use and reuse the majority of the existing code. Basic functionality, such as fitting and histogramming are implemented and ready to use and customize.
• More reliable and robust code - the code inherited from a framework has already been tested and integrated with the rest of the framework.
• More consistent and modular code - code reuse provides consistency and common capabilities between programs, no matter who writes them. Frameworks make it easier to break programs into smaller pieces.
• More focus on areas of expertise - can concentrate on their particular problem domain. They do not have to be experts at writing user interfaces, graphics, or networking to use the frameworks that provide those services.

  On the other hand, Object-Oriented Programming offers considerable benefits compared to Procedure-Oriented Programming:

• Encapsulation enforces data abstraction and increases opportunity for reuse.
• Sub classing and inheritance make it possible to extend and modify objects.
• Class hierarchies and containment hierarchies provide a flexible mechanism for modeling realworld objects and the relationships among them.
• Complexity is reduced because there is little growth of the global state, the state is contained within each object, rather than scattered through the program in the form of global variables.
• Objects may come and go, but the basic structure of the program remains relatively static, increases opportunity for reuse of design.

Python

The Python Programming Language

  Python is a dynamic object-oriented programming language that can be used for many kinds of software development. It offers strong support for integration with other languages and tools, comes with extensive standard libraries, and can be learned in a few days. Many Python programmers report substantial productivity gains and feel the language encourages the development of higher quality, more maintainable code.

  Python runs on Windows, Linux/Unix, Mac OS X, OS/2, Amiga, Palm Handhelds, and Nokia mobile phones. Python has also been ported to the Java and .NET virtual machines.

  Python is distributed under an OSI-approved open source license that makes it free to use, even for commercial products.

Home:

C++

ROOT

Python

HTML


Get Firefox!

Carlos Escobar
Tel.: +34 96 3543489

Carlos Escobar IbaƱez