Developpez.com - Rubrique HPC

Le Club des Développeurs et IT Pro

Julia, une introduction, mais vite

Une première prise en main du langage de calcul par Thibaut Cuvelier

Le 2020-02-26 04:50:41, par dourouc05, Responsable Qt & Livres
Julia est un langage de programmation récent orienté (très haute) performance : il s'agit de l'un des très rares langages à être utilisé sur un superordinateur ! Par exemple, il a été utilisé pour le projet Celeste, qui consiste en l'analyse d'images astronomiques : les chercheurs ont pu cataloguer 188 millions d'objets astronomiques, dénichés dans pas moi de 178 téraoctets de données, en moins de quinze minutes — le fruit de trois années de recherche.

Julia a ainsi été préféré au C, au C++ ou au Fortran, les trois langages de prédilection pour ce genre d'application. En effet, ces langages ont l'avantage de limiter leur impact sur la performance des applications : on a accès très directement à la machine, sans mécanisme lourd comme une machine virtuelle. De plus, les compilateurs optimisent très fortement le code généré, pour qu'il tourne plus vite. Julia dispose des mêmes avantages (donc en performance, point crucial pour cette application), tout en étant plus facile à utiliser : il s'agit d'un langage bien plus dynamique (comme Python ou Ruby), avec des notations mathématiques habituelles (il est similaire à MATLAB, Octave ou encore Fortran).

Lire l'introduction
  Discussion forum
1 commentaire
  • Pyramidev
    Expert éminent
    Bonjour,

    Je cite un extrait du tutoriel :

    Les boucles for ne fonctionnent pas comme dans la majorité des langages : Julia préfère itérer sur un conteneur qu'incrémenter manuellement une variable ; il n'existe pas de forme avec trois arguments (initialisation, condition, mise à jour, comme en C). Ici, la boucle itère sur une plage de nombres, entre 1 et 10, avec un incrément d'une unité. On pourrait aussi itérer sur les éléments d'un tableau :

    Code Julia :
    1
    2
    3
    for i in [1, 3, 4, 9, 10] 
        println(i) 
    end

    En fait, cette fonctionnalité (le "foreach") existe dans la majorité des langages utilisés dans l'industrie. Parmi les langages les plus populaires dans l'industrie, je crois qu'il n'y a qu'en langage C où la manière idiomatique de parcourir une collection est d'incrémenter manuellement une variable, comme un indice de tableau. Dans les autres langages, pour parcourir une collection, la manière normale est d'utiliser une forme de "foreach".

    Exemples :

    Code Python :
    1
    2
    for i in (1, 3, 4, 9, 10): 
    	print(i)
    Code JavaScript :
    [1, 3, 4, 9, 10].forEach(i => console.log(i));
    Code C++ :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #include <iostream> 
    #include <vector> 
      
    int main() { 
        for (auto i : std::vector<int>{1, 3, 4, 9, 10}) { 
            std::cout << i << '\n'; 
        } 
        return 0; 
    }
    Code Java :
    1
    2
    3
    4
    5
    6
    7
    8
    public class Program { 
         public static void main(String []args){ 
            int[] array = {1, 3, 4, 9, 10}; 
            for (int i : array) {  
                System.out.println(i); 
            } 
         } 
    }
    Code C# :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    using System; 
    using System.Collections.Generic; 
      
    public class Program { 
    	public static void Main() { 
    		foreach (int element in new List<int>{1, 3, 4, 9, 10}) { 
    			Console.WriteLine(element); 
    		} 
    	} 
    }
    Code PHP :
    1
    2
    3
    foreach (array(1, 3, 4, 9, 10) as &$i) { 
        echo "$i\n"; 
    }