Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Técnica
Para escribir programas que proporcionen los mejores resultados, cabe tener en cuenta una serie
de detalles.
Corrección. Un programa es correcto si hace lo que debe hacer tal y como se estableció
en las fases previas a su desarrollo. Para determinar si un programa hace lo que debe, es
muy importante especificar claramente qué debe hacer el programa antes de
desarrollarlo y, una vez acabado, compararlo con lo que realmente hace.
Claridad. Es muy importante que el programa sea lo más claro y legible posible, para
facilitar así su desarrollo y posterior mantenimiento. Al elaborar un programa se debe
intentar que su estructura sea sencilla y coherente, así como cuidar el estilo en la
edición; de esta forma se ve facilitado el trabajo del programador, tanto en la fase de
creación como en las fases posteriores de corrección de errores, ampliaciones,
modificaciones, etc.
Eficiencia. Se trata de que el programa, además de realizar aquello para lo que fue
creado (es decir, que sea correcto), lo haga gestionando de la mejor forma posible los
recursos que utiliza. Normalmente, al hablar de eficiencia de un programa, se suele
hacer referencia al tiempo que tarda en realizar la tarea para la que ha sido creado y a la
cantidad de memoria que necesita, pero hay otros recursos que también pueden ser de
consideración al obtener la eficiencia de un programa, dependiendo de su naturaleza
(espacio en disco que utiliza, tráfico de red que genera, etc.).
Portabilidad. Un programa es portable cuando tiene la capacidad de poder ejecutarse en
una plataforma, ya sea hardware o software, diferente a aquella en la que se elaboró. La
portabilidad es una característica muy deseable para un programa, ya que permite, por
ejemplo, a un programa que se ha desarrollado para sistemas GNU/Linux ejecutarse
también en la familia de sistemas operativos Windows. Esto permite que el programa
pueda llegar a más usuarios más fácilmente.
Programming language
A programming language is a formal language that provides a series of instructions that allow a
programmer to write sequences of commands and algorithms in order to control the physical
and logical behavior of a computer in order to produce various kinds of data. All this set of
orders and data written by means of a programming language is known as a program.
Some of these languages are formed by a set of symbols (called alphabet), grammatical rules
(lexical / morphological and syntactic) and semantic rules, which together define the valid
structures in the language and their meaning. The process by which you write, test, debug,
compile (if necessary) and maintain the source code of a computer program is called
programming, which is what defines the creation of software through the application of
procedures logical through the following steps:
• The logical development of the program to solve a particular problem.
• Writing the program logic using a specific programming language (program coding).
• Assembly or compilation of the program until it becomes machine language.
• Testing and debugging the program.
• Documentation development.
There is a common error that treats the terms 'programming language' and 'computer
language' by synonyms. Computer languages encompass programming languages and others,
such as HTML (language for marking web pages that is not properly a programming language,
but a set of instructions that allow structuring the content of documents).
The programming language allows you to specify precisely what data a specific software
should operate, how that data should be stored or transmitted, and what actions that
software should take under a wide range of circumstances. All this, through a language that
tries to be relatively close to human or natural language. A relevant feature of programming
languages is precisely that more than one programmer can use a common set of instructions
that are included among them to perform the construction of a program collaboratively.
• Classification by paradigms
The programming paradigms distinguish different models of computation and styles of
structuring and organizing the tasks that a program must perform. A programming language
can support one or more programming paradigms, totally or partially.
• Classification by purpose
The general purpose programming languages are distinguished from those of specific purpose.
On some occasions programming languages are also classified into families that share certain
common characteristics such as the general style of the syntax they use. These characteristics
are usually inherited from previous programming languages that inspired the creators of that
language.
Historical classification or by generations
Computer equipment (hardware) has gone through four generations, of which the first three
(computers with valves, transistors and integrated circuits) are very clear, the fourth (large-
scale integrated circuits) is more debatable.
Something similar has happened with the programming of computers (software), which is
carried out in languages that are usually classified in five generations, of which the first three
are evident, while not everyone agrees on the other two. These generations did not coincide
exactly in time with those of hardware, but approximately, and they are the following:
• First Generation: The first computers were programmed directly in machine code (based on
binary system), which can be represented by sequences of 0 and 1. However, each computer
model has its own internal structure at the time of programming. These languages were called
Low Level Language, because their instructions exercise direct control over the hardware and
are conditioned by the physical structure of the computers that support it. Since this type of
language is much closer to the logic of the machine than to the human, it is much more
complicated to program with it. The use of the word low in its name does not imply that the
language is less powerful than a high-level language, but refers to the reduced abstraction
between language and hardware. For example, this type of language is used to schedule
critical tasks of operating systems, real-time applications or device drivers. Another limitation
of these languages is that certain programming knowledge is required to perform logical
instruction sequences.
• Second generation: Symbolic languages, also typical of the machine, simplify the writing of
instructions and make them more readable. It refers to the assembly language assembled
through a macro-assembler. It is the machine language combined with a series of powerful
macros that allow you to declare complex data and control structures.
• Third Generation: High-level languages replace symbolic instructions with codes independent
of the machine, similar to human language or Mathematics. They were created so that the
common user could solve a data processing problem in an easier and faster way. They are used
in computing areas where high performance is achieved with respect to languages of previous
generations. Among them are C, Fortran, Smalltalk, Ada, C ++, C #, Cobol, Delphi, Java and PHP,
among others. Some of these languages may be general purpose, that is, the language is not
focused on a single specialty, but can be used to create all kinds of programs. For certain more
common tasks, there are libraries to facilitate programming that allow code reuse.
• Fourth generation: this name has been given to certain tools that allow simple applications
to be built by combining prefabricated parts. Today it is thought that these tools are not,
properly speaking, languages. It is worth mentioning that, some propose to reserve the fourth
generation name for object-oriented programming. The latter have a structure very similar to
the English language. Some of its features are: database access, graphic capabilities, code
generation automatically, as well as being able to program visually (such as Visual Basic or
SQL). Its advantages include greater productivity and less depletion of the programmer, as well
as less concentration on the other hand, since the tools provided include sequences of
instructions. The level of concentration required is lower, since some instructions, which are
given to the tools, in turn, include sequences of instructions at another level within the tool.
When previously developed programs have to be maintained, it is less complicated because
they require a lower level of concentration. On the other hand, their disadvantages are that
these prefabricated tools are generally less flexible than direct instructions in low-level
languages. In addition, dependencies are usually created with one or several external
suppliers, which translates into loss of autonomy. Likewise, these prefabricated tools often
contain libraries from other suppliers, which entails installing additional options that are
considered optional. Unless there are agreements with other providers, they are programs
that run only with the language that created it. Nor do they usually comply with the
international ISO and ANSI standards, which entails a future risk because their time in the
market is unknown. Some examples are: NATURAL and PL / SQL.
• Fifth generation: sometimes artificial intelligence languages are called that, although with
the failure of the Japanese project of the fifth generation this denomination has fallen into
disuse.