Initiation à la programmation L'essentiel de la programmation en shell, perl, php et C++
Communiquer avec sa machine Les langages de programmation sont d'abord destinés aux humains et non aux machines. Ils permettent d'automatiser des suites d'opérations plus ou moins complexes. Pour être compris par la machine il faut des exécutables qui traduisent le code du programme en une suite d'instructions machine.
Langages de bas niveau Un langage est dit de bas niveau s'il reste proche des instructions directes aux processeurs tel que l'assembleur. Dans ce cas on ne peut exprimer que des instructions simples : Inversion, décalage, recopie de codes binaires. Opérations arithmétiques de base. Opérations sur les chaînes de caractères.
Langages de haut niveau Les opérations les plus complexes telles que la multiplication matricielle où les tests statistiques ne se programment pas directement dans un langage de bas niveau. On préfère programmer des compilateurs ou des interpréteurs de langages plus évolués. Dans un langage de haut niveau, une simple fonction peut impliquer la mise en œuvre de milliers d'instructions de bas niveau.
Et l'on créa le C Le langage C est un compromis entre langages de bas et haut niveau. Il fut imaginé par des ingénieurs pour programmer les premiers systèmes UNIX et été totalement standardisé. Le langage est apparu avec de multiples compilateurs permettant de traduire un programme C en instructions système pour presque tout type de machines.
Compilateurs (bis-repetita) C est un langage compilé, on n'exécute pas directement ces programmes, on applique au préalable un autre programme appelé compilateur qui génère le binaire exécutable. La syntaxe du C est indépendante de la machine utilisée, c'est le compilateur qui est spécifique à la machine et donc le code binaire qu'il génère.
Les langages interprétés On a programmé en C de multiples langages destinés à être interprétés à la volée : shell, awk, perl, php, python, ruby etc. Chaque langage dispose d'une syntaxe normalisée unique et de multiples interpréteurs (un par type de machine) qui portent généralement le nom du langage.
Langages compilés vs interprétés Un langage compilé est généralement plus efficace qu'un langage interprété. La traduction en instructions machine ne se fait qu'une seule fois. Les compilateurs mettent en œuvre des stratégies d'optimisation selon le type de machine.
Langages interprétés vs compilés Beaucoup plus interactifs, on développe très rapidement des prototypes. Souvent de très haut niveau, les programmes sont généralement courts et concis. Le temps d'interprétation est très court comparé au temps d'exécution.
La C familly Shell, tch, bash etc. pour la programmation système. awk et perl pour les flux de données. php pour la programmation Web. python et ruby généralistes conçus pour leur lisibilité. Java (propriété d'oracle) : langage généraliste semi interprété.
Perl Interpréteur programmé en C Syntaxe qui étend celle du shell Conçu pour le «reporting» Très efficace sur tout flux de données : fichiers txt, csv, XML etc. Bases de données Réseau biotechnologie
Perl : les scalaires Un scalaire peut être toute chaîne de caractères sans limite théorique de longueur. Selon le contexte cette chaîne peut être interprété comme un entier ou comme un réel. On parle alors de typage implicite. Par défaut Perl considère que la valeur numérique d'une chaîne de caractères est égale à 0.
Perl syntaxe : les scalaires $ est le déclarateur de scalaiores en Perl comme dans les langages shell. '' est le délimiteur de chaîne de caractères avec caractères spéciaux. Un caractère spécial est introduit avec \ Par exemple \n est le retour à la ligne, \t la tabulation, \\ le caractère échappatoire \. Attention le $ est aussi interprété. ' est le délimiteur de chaînes non interprétées sauf pour la séquence \'.
Perl syntaxe : instructions de base = opérateur d'affectation d'une valeur à une variable <> lecture d'une ligne sur l'entrée par défaut, ligne = chaîne de caractères se terminant par «\n». ; séparateur d'instructions Opérations arithmétiques : +,-,* Concaténation :. print renvoie d'un scalaire sur la sortie par défaut.
Perl : tests et boucles ( ) : délimiteurs du test { } : délimiteurs de blocs d'instructions Prédicats : ==,!=, <,<=,>,>=, eq, ne Connecteurs : &&,,! Instructions : if, elsif, while
Perl : les listes (ou tableaux) (... ) : délimiteurs de liste @ : déclarateur de liste [ ] : opérateurs d'accès à un élément (la numérotation commence à 0) for : parcours d'une liste split : découpe un scalaire en une liste join : concatène une liste en un scalaire Attention : pas d'imbrication de listes
Perl : les tableaux associatifs Il s'agit de listes d'associations => : définition d'une association % : déclarateur de tableau { } : opérateurs d'accès à un élément keys : récupération des clefs d'un tableau