You are currently browsing the category archive for the ‘Lenguajes de Programación’ category.

Esta semana he asistido a un curso interesantísimo sobre el estandar C++11, es decir, sobre lo último que nos pueden ofrecer los compiladores de C++, impartido por Jacek Generowicz, del CERN y que controla bastante el tema, en el IFIC.

En palabras del propio Jacek, ésta es brevemente la guía de estilo para el nuevo estandar:

  • utilizar nullptr para punteros nulos,
  • inferencia automática de tipos mediante auto,
  • definición de rangos para los bucles,
  • utilizar funciones begin y end y no las correspondientes funciones miembro,
  • inizializaciones con {},
  • lambda funciones: facilitan los algorimos tipo STL, la inyección remota de código para metaprogramación y en la concurrencia,
  • nueva semantica move como optimización de copy y con la consiguiente implementación del move constructor, el move assignment y el swap, junto con los clásicos copy constructor, copy assignment y destructor,
  • smart pointers unique_ptr y shared_ptr que, de alguna manera, permiten cierto tipo de gestión automatica de la memoria,
  • concurrencia: threads, mutex, etc…

Ya tengo instalado el gcc 4.8, que con -std=c++11 soporta todas estas novedades, y con ganas de aplicar estos potentes mecanismos a mis códigos :–)

Anuncios

Eclipse es un IDE multiplataforma Open Source desarrollado por la Eclipse Foundation. Utiliza módulos, plug-in, para proporcionar diferentes funcionalidades, ya que se basa en la filosofía RCP (Rich Client Platform), de manera que tenemos una plataforma ligera en la que el usuario va añadiendo lo que realmente necesita.

El plug-in CDT (C/C++ Development Toolkit) permite desarrollar en Eclipse proyectos basados en estos lenguajes de programación.

Otro plug-in que encontramos es el MDT (Model Development Tools), el cual permite trabajar, entre otras cosas, con UML2 con el que especificar y diseñar software basado en el paradigma de la orientación a objetos.

El siguiente código muestra la definición de una clase en el lenguaje C++. En el podemos ver los elementos típicos de las mismas.

En el fichero Complex.h, tendriamos la representación del tipo:


#ifndef ComplexH
#define ComplexH

class Complex {

  private:

    //atributos
    double re;
    double im;

  public:

    //constructores
    Complex();
    Complex(double re, double im);

    //metodos
    double get_re();
    double get_im();
    void set_re(double re);
    void set_im(double im);
    double get_mod();
    double get_arg();

    //destructor
    ~Complex();

};

Mientras que en el fichero Complex.cpp tendriamos la implementación del mismo:

#include "Complex.h"

//constructores
Complex::Complex() {
  re = 0;
  im = 0;
}

Complex::Complex(double re, double im) {
  this.re = re;
  this.im = im;
}

//destructor
Complex::~Complex() {
}

//metodos
double Complex::get_re() {
  return this.re;
}

double Complex::get_im() {
  return this.im;
}

void Complex::set_re(double re) {
  this.re = re;
}

void Complex::set_im(double im) {
  this.im = im;
}

double Complex::get_mod() {
  return ...;
}

double Complex::get_arg(){
  return ...;
}

};

Una de las funcionalidades soportadas a partir de Fortran 2003 es la orientación a objetos. De esta manera, tenemos herencia, abstracción y polimorfismo en el lenguaje para computación de altas prestaciones por excelencia.

Sin embargo, cuando hablamos de Fortran 2003 nos referimos al estandar correspondiente, cuya implementación corresponde a los diferentes compiladores.

En particular, el compilador gfortran de GNU, ¿qué funcionalidades incorpora del estardar 2003? ¿qué es lo que incorpora de la Orientación a Objetos? Y de la misma manera, ¿qué soportan el resto de compiladores? En este enlace tenemos información al respecto.

diciembre 2017
L M X J V S D
« Ago    
 123
45678910
11121314151617
18192021222324
25262728293031