Affichage des articles dont le libellé est Avantages. Afficher tous les articles
Affichage des articles dont le libellé est Avantages. Afficher tous les articles

jeudi 9 août 2012

La programmation dans le domaine informatique

La programmation dans le domaine informatique

    La programmation dans le domaine informatique est l'ensemble des activités qui permettent l'écriture des programmes informatiques. C'est une étape importante de la conception de logiciel (voire de matériel, cf. VHDL).
Pour écrire le résultat de cette activité, on utilise un langage de programmation.
La programmation représente usuellement le codage, c’est-à-dire la rédaction du code source d'un logiciel. On utilise plutôt le terme développement pour dénoter l'ensemble des activités liées à la création d'un logiciel.


Une brève histoire de la programmation


    La première machine programmable (c’est-à-dire machine dont les possibilités changent quand on modifie son "programme") est probablement le métier à tisser de Jacquard, qui a été réalisé en 1801. La machine utilisait une suite de cartons perforés. Les trous indiquaient le motif que le métier suivait pour réaliser un tissage ; avec des cartes différentes le métier produisait des tissages différents. Cette innovation a été ensuite améliorée par Herman Hollerith d'IBM pour le développement de la fameuse carte perforée d'IBM.
En 1936, la publication de l'article fondateur de la science informatique On Computable Numbers with an Application to the Entscheidungsproblem1 par Alan Mathison Turing allait donner le coup d'envoi à la création de l'ordinateur programmable. Il y présente sa machine de Turing, le premier calculateur universel programmable, et invente les concepts et les termes de programmation et de programme.
Les premiers programmes d'ordinateurs étaient réalisés avec un fer à souder et un grand nombre de tubes à vide (plus tard, des transistors). Les programmes devenant plus complexes, cela est devenu presque impossible, parce qu'une seule erreur rendait le programme entier inutilisable. Avec les progrès des supports de données, il devient possible de charger le programme à partir de cartes perforées, contenant la liste des instructions en code binaire spécifique à un type d'ordinateur particulier. La puissance des ordinateurs augmentant, on les utilisa pour faire les programmes, les programmeurs préférant naturellement rédiger du texte plutôt que des suites de 0 et de 1, à charge pour l'ordinateur d'en faire la traduction lui-même. Avec le temps, de nouveaux langages de programmation sont apparus, faisant de plus en plus abstraction du matériel sur lequel devaient tourner les programmes. Ceci apporte plusieurs facteurs de gains : ces langages sont plus faciles à apprendre, un programmeur peut produire du code plus rapidement, et les programmes produits peuvent tourner sur différents types de machines.

La fin des programmeurs ?


    De tous temps, on a prédit « la fin des programmeurs ».
Dans les années 60, les langages symboliques comme AUTO-CODE, Cobol et Fortran ont en effet mis fin - en grande partie - à la programmation de bas niveau tel que l'assembleur. Il semblait alors clair que n'importe qui était capable d'écrire du code du type
multiply MONTANT-HT by TAUX-TVA giving MONTANT-TAXES.
add MONTANT-HT, MONTANT-TAXES giving MONTANT-TTC.
ou
RDELTA = SQRT(B**2 - 4*A*C)
X1 = (-B + RDELTA) / (2*A)
plutôt que des dizaines de lignes cryptiques comme
movl    %esp, %ebp
subl    $24, %esp
flds    12(%ebp)
fmuls   12(%ebp)
flds    8(%ebp)
flds    .LC0
fmulp   %st, %st(1)
fmuls   16(%ebp)
fsubrp  %st, %st(1)
fstpl   (%esp)
call    sqrt
fstps   -4(%ebp)
flds    -4(%ebp)
fsubs   12(%ebp)
flds    8(%ebp)
fadd    %st(0), %st
fdivrp  %st, %st(1)
Pourtant il a vite fallu se rendre compte que la programmation ne se limitait pas au codage, et que la conception d'applications était un vrai métier qui ne s'improvise pas.
Dans les années 80, la micro-informatique a souvent conduit à une informatisation sauvage des entreprises, dont le service informatique débordé n'arrivait pas à satisfaire les demandes (qui ne correspondaient d'ailleurs pas forcément aux vrais besoins des utilisateurs finaux). Dans cette catégorie, on peut également partiellement ranger les applications développées avec des L4G par des utilisateurs non formés. Il est évident que ce type d'outil (dont MS Access est un descendant) permet à un utilisateur non formé de réaliser de petites applications qu'il n'aurait pas entreprises autrement, et à un utilisateur compétent de développer très rapidement d’importantes applications, mais elles n'ont pas le pouvoir magique de faire l'analyse et la conception automatiquement dans les mains d'un utilisateur novice.

Phases de création d'un programme


Conception


    La phase de conception définit le but du programme. Si on fait une rapide analyse fonctionnelle d'un programme, on détermine essentiellement les données qu'il va traiter (données d'entrée), la méthode employée (appelée l'algorithme), et le résultat (données de sortie). Les données d'entrée et de sortie peuvent être de nature très diverses. On peut décrire la méthode employée pour accomplir le but d'un programme à l'aide d'un algorithme. La programmation procédurale et fonctionnelle est basée sur l'algorithmique. On retrouve en général les mêmes fonctionnalités de base :
Pour la programmation impérative
"Si"
Si prédicat
Alors faire ceci
Sinon faire cela
"Tant que"
Tant que prédicat
Faire ...
"Pour"
Pour variable allant de borne inférieure à borne supérieure
Faire ...
"Pour" (variante)
Pour variable dans conteneur
faire ...

Codage


    Une fois l'algorithme défini, l'étape suivante est de coder le programme. Le codage dépend de l'architecture sur laquelle va s'exécuter le programme, de compromis temps-mémoire, et d'autres contraintes. Ces contraintes vont déterminer quel langage de programmation utiliser pour "convertir" l'algorithme en code source.

Transformation du code source

    Le code source n'est (presque) jamais utilisable tel quel. Il est généralement écrit dans un langage "de haut niveau", compréhensible pour l'homme, mais pas pour la machine.

Compilation


    Certains langages sont ce qu'on appelle des langages compilés. En toute généralité, la compilation est l'opération qui consiste à transformer un langage source en un langage cible. Dans le cas d'un programme, le compilateur va transformer tout le texte représentant le code source du programme, en code compréhensible pour la machine, appelé code machine.
Dans le cas de langages dits compilés, ce qui est exécuté est le résultat de la compilation. Une fois effectuée, l'exécutable obtenu peut être utilisé sans le code source.
Il faut également noter que le résultat de la compilation n'est pas forcément du code machine correspondant à la machine réelle, mais peut être du code compris par une machine virtuelle (c'est-à-dire un programme simulant une machine), auquel cas on parlera de bytecode. C'est par exemple le cas en Java. L'avantage est que, de cette façon, un programme peut fonctionner sur n'importe quelle machine réelle, du moment que la machine virtuelle existe pour celle-ci.
Dans le cas d'une requête SQL, la requête est compilée en une expression utilisant les opérateurs de l'algèbre relationnelle. C'est cette expression qui est évaluée par le système de gestion de bases de données.

Interprétation

    D'autres langages ne nécessitent pas de phase spéciale de compilation. La méthode employée pour exécuter le programme est alors différente. La phase de compilation est la plupart du temps incluse dans celle d’exécution. On dit de ce programme qu'il interprète le code source. Par exemple, python ou perl sont des langages interprétés.
Cependant, ce serait faux de dire que la compilation n'intervient pas. L'interprète produit le code machine, au fur et à mesure de l'exécution du programme, en compilant chaque ligne du code source.

Avantages, inconvénients

    Les avantages généralement retenus pour l'utilisation de langages "compilés", est qu'ils sont plus rapides à l'exécution que des langages interprétés, car l'interprète doit être lancé à chaque exécution du programme, ce qui mobilise systématiquement les ressources.
Traditionnellement, les langages interprétés offrent en revanche une certaine portabilité (la capacité à utiliser le code source sur différentes plates-formes), ainsi qu'une facilité pour l'écriture du code. En effet, il n'est pas nécessaire de passer par la phase de compilation pour tester le code source.

Appellation impropre

    Il faut noter qu'on parle abusivement de langages compilés ou interprétés. En effet, le caractère compilé ou interprété ne dépend pas du langage, qui n'est finalement qu'une grammaire et une certaine sémantique. D'ailleurs, certains langages peuvent être utilisés interprétés ou compilés. Par exemple, il est très courant d'utiliser Ruby avec un interprète, mais il existe également des compilateurs pour ce langage2.
Néanmoins, l'usage qu'on fait des langages est généralement fixé.

Test du programme

       C'est l'une des étapes les plus importantes de la création d'un programme. En principe, tout programmeur se doit de vérifier chaque partie d'un programme, de le tester. Il existe différents types de test. On peut citer en particulier :
  • Test unitaire
  • Test d'intégration
  • Test de performance

Il convient de noter qu'il est parfois possible de vérifier un programme informatique, c'est-à-dire prouver, de manière plus ou moins automatique, qu'il assure certaines propriétés.

Pratiques

  • Algorithmique
  • Gestion de versions
  • Optimisation du code
  • Programmation système
  • Refactoring
  • Test d'intégration
  • Test unitaire


Techniques de programmation

  • Programmation concurrente
  • Programmation déclarative
  • Programmation fonctionnelle
  • Programmation impérative
  • Programmation logique
  • Programmation orientée aspect
  • Programmation orientée composant
  • Programmation orientée objet
  • Programmation orientée prototype
  • Programmation par contraintes
  • Programmation par contrat
  • Programmation par intention
  • Programmation procédurale
  • Programmation structurée

mercredi 8 août 2012

derniers Technologies

Technologies de l'information et de la communication


Les notions de technologies de l'information et de la communication (TIC) et de nouvelles technologies de l'information et de la communication (NTIC) (en anglais, Information and communication technologies, ICT) regroupent les techniques utilisées dans le traitement et la transmission des informations, principalement de l'informatique, de l'Internet et des télécommunications.
Par extension, elles désignent leur secteur d'activité économique. Cette définition des TIC positionne cette industrie comme support de l'industrie du contenu numérique.
En ce qui concerne les NTIC, le terme tend à qualifier plus particulièrement les problématiques résultantes de l'intégration de ces technologies au sein des systèmes institutionnels, recouvrant notamment les produits, les pratiques et les procédés potentiellement générés par cette intégration.

Histoire


Après l'invention de l'écriture puis l'avènement de l'imprimerie, les premiers pas vers une société de l'information ont été marqués par le télégraphe électrique, puis le téléphone et la radiotéléphonie, alors que la télévision, le Minitel et l'Internet puis la télécommunication mobile ont associé l'image au texte et à la parole, "sans fil", l'Internet et la télévision devenant accessibles sur le téléphone portable qui fait aussi office d'appareil photo.
Le rapprochement de l'informatique et des télécommunications, dans la dernière décennie du xxe siècle ont bénéficié de la miniaturisation des composants, permettant de produire des appareils « multifonctions » à des prix accessibles, dès les années 2000.
Les usages des TIC ne cessent de s'étendre, surtout dans les pays développés, au risque d'accentuer localement la fracture numérique et sociale ainsi que le fossé entre les générations. De l'agriculture de précision et de la gestion de la forêt (traçabilité des bois pour lutter contre le trafic), au contrôle global de l'environnement planétaire ou de la biodiversité, à la démocratie participative (TIC au service du développement durable) en passant par le commerce, la télémédecine, l'information, la gestion de multiples bases de données, la bourse, la robotique et les usages militaires, sans oublier l'aide aux handicapés (dont aveugles qui utilisent des synthétiseurs vocaux avancés ainsi que des plages braille éphémère), les TIC tendent à prendre une place croissante dans la vie humaine et le fonctionnement des sociétés.
Certains craignent aussi une perte de liberté individuelle (effet Big Brother, intrusion croissante de la publicité ciblée et non-désirée...). Les prospectivistes s'accordent à penser que les TIC devraient prendre une place croissante et pourraient être à l'origine d'un nouveau paradigme civilisationnel.
Depuis quelques années, avec le développement d'Internet, les usages des TIC se sont développés et la grande majorité des citoyens utilise ces outils pour accéder à l'information. De l'autre côté, le nombre de services disponibles explose et les emplois directement liés à ces technologies génèrent plus de 5,5 % du PIB français1
Les emplois de la filière nécessitent de plus en plus de compétences de communication, de marketing et de vente, la technique n'étant qu'un support de la communication. Cela entraîne de nombreuses modifications dans les profils professionnels recherchés par les entreprises selon l'Observatoire International des Métiers Internet, qui analyse les profils et les compétences recherchés par le marché de l'emploi en Europe2.

Concept


de 2007 à 2010, la proportion de sociétés équipées d'un extranet est passé de 17 % début 2007 à 35 % début 20103.

À l'origine

Le concept présente trois caractéristiques typiques des notions nouvelles :
il est fréquemment évoqué dans les débats contemporains
sa définition sémantique reste floue ; par exemple, le terme technologie qui signifie « discours sur la technique » est utilisé à la place de « technique » qui serait à la fois plus simple et plus exact.
Ce concept est à rapprocher de celui de société de l'information.
les technologies de l'information et de la communication sont des outils de support à la communication, la communication de l'information restant l'objectif, et la technologie, le moyen.

Évolution de la terminologie

L'avènement de l'Internet et principalement du Web comme média de masse et le succès des blogs, des wikis ou technologies Peer to Peer confèrent aux TIC une dimension sociétale. Gérard Ayache dans La Grande confusion, parle d'« hyperinformation » pour souligner l'impact anthropologique des nouvelles technologies. De nombreux internautes, quant à eux, considèrent l'Internet comme une technologie de la relation (TR) : Joël de Rosnay a repris cette expression dans La révolte du pronétariat : des mass média aux média des masses. Le Web 2.0 est permis par les TIC

Appellations connexes

Les TIC sont également désignées par les « nouvelles technologies de l'information et de la communication » (NTIC).
Les sigles anglais correspondant sont IT, pour « Information Technology » et NICT, pour « New Information and Communication Technology/Technologies » ou encore ICT pour « Information Communication Technology/Technologies ».
Dans l'éducation nationale en France, on évoque plutôt les Technologies de l'information et de la communication pour l'éducation (TICE).

Technologies


Les TIC regroupent un ensemble de ressources nécessaires pour manipuler de l'information et particulièrement les ordinateurs, programmes et réseaux nécessaires pour la convertir, la stocker, la gérer, la transmettre et la retrouver.
On peut regrouper les TIC par secteurs suivants :
L'équipement informatique, serveurs, matériel informatique ;
La microélectronique et les composants ;
Les télécommunications et les réseaux informatiques ;
Le multimédia ;
Les services informatiques et les logiciels ;
Le commerce électronique et les médias électroniques.

Avantages

L’investissement dans les TIC serait l’un des principaux moteurs de compétitivité des entreprises. En effet, selon des études de l'OCDE, les TIC seraient un facteur important de croissance économique aux États-Unis.
au niveau du système d'information :
Hausse de la productivité du travail pour la saisie de l'information, donc baisse des coûts. Délocalisation de la production (ex : centre d'appels). Meilleure connaissance de l'environnement, réactivité plus forte face à cet environnement, amélioration de l'efficacité de la prise de décision permise par une veille stratégique plus performante.
au niveau de la structure de l'entreprise et de la gestion du personnel :
Organisation moins hiérarchisée, partage d'information. Meilleure gestion des ressources humaines (recrutement, gestion des carrières plus facile).
au niveau commercial :
Nouveau circuit de production grâce à l'extension du marché potentiel (commerce électronique). Une baisse des coûts d'approvisionnement. Développement des innovations en matière de services et réponse aux besoins des consommateurs. Amélioration de l'image de marque de l'entreprise (entreprise innovante).

Limites

Problèmes d'ergostressie (stress lié à l'utilisation des TIC) provenant souvent d'un manque de cohérence dans la conception de ces systèmes complexes.
Problèmes de rentabilité :
Coût du matériel, du logiciel, de l'entretien et du renouvellement ; Certains matériel sont rapidement désuet Coût dû au rythme soutenu des innovations (18 mois), ou semblent avoir fait l'objet de stratégies d'obsolescence programmée ;
Il est fréquent de voir apparaître un suréquipement par rapport aux besoins, et donc une sous-utilisation des logiciels.
Coût de la formation du personnel, de sa résistance aux changements.
Coût généré par la modification des structures, par la réorganisation du travail, par la surabondance des informations.
Rentabilité difficilement quantifiable ou difficilement prévisible sur les nouveaux produits. Parfois, d'autres investissements semblent pouvoir être aussi bénéfiques (Recherche et développement, Formation du personnel, Formations commerciales, organisationnelles, logistiques).
la fracture numérique peut être source de nouvelles inégalités. Les serveurs consomment à eux seul autant que le parc de tous les ordinateurs, pour le refroidissement notamment. Leur consommation (refroidissement inclus) est passé de 3,6 Twh/an, à 5,2Twh/an, de 2006 à 2008, alors que la consommation des Data centers diminuait fortement 4.
Des problèmes se posent aussi en termes de sécurité et d'éthique aggravés par l'internationalisation des règlementations : "fun", chantage, escroquerie, subversion, etc. face à certains publics vulnérables notamment (enfants, personnes âgées)
À l'heure actuelle, hormis pour des règles techniques, au sein de quelques grands systèmes collaboratifs, il semble qu'aucune « gouvernance mondiale » ne soit vraiment parvenue à une vision à long terme, ni à une surveillance ou à imposer un respect de règles « minimales réputées communes ».

Dérives en matière de consommation d'énergie et de ressources

La mondialisation des TIC, permettant un accès banalisé et 24h/24 depuis n'importe quel point du globe à un ensemble de ressources (données, puissance informatique), a aussi des effets pervers en termes environnementaux  : Selon France Télécom, une utilisation judicieuse (pour le télétravail par exemple des NTIC) permettraient de réduire de 7 % les émissions des gaz à effet de serre entre 2010 et 2020 (1/3 de l'objectif français de 20 % selon les protocoles actuels), mais en réalité :
l'empreinte écologique de l'informatique grandit rapidement à cause d'une consommation très importante de métaux précieux, rares ou toxiques
L'empreinte carbone et énergétique augmente également dans le monde, ainsi pour certains matériels qu'un gaspillage énergétique (ex : veille, ou absence d'extinction automatique).
En 2011, les TIC représentaient 6,2 % en 2005 (et 7,3 % en 2008) de la consommation électrique de la France (35,3 TWh/an en 2008), mais avec une croissance moins rapide que celle des usages (19 % sur 3 ans vs 40 % pour l'augmentation des équipements et une explosion des usages). Sur ces 35, 3 TWh/an, les télécoms en représentent 6,7 TWh/an). Selon France télécom si l'on ne tient pas compte de l'augmentation des usages, les matériels plus économes ont permis de diminuer la consommation de 30 %.
Selon un rapport "“Votre cloud est-il Net?“. " (avril 2012), « Certains centres de traitement des données consomment autant d’électricité que 250 000 foyers européens5. Si le « cloud » était un pays, il se classerait au 5e rang mondial en termes de demande en électricité, et ses besoins devraient être multipliés par trois d'ici à 2020 »5.
Des efforts supplémentaires permettraient de diminuer cette consommation jusqu'à 34,3 TWh/an avant 2012 et à 33,9 TWh/an à horizon 2020 ; la part des Télécoms pouvant alors se stabiliser à 8,5 TWh/an en 2012, pour décroître en à 7,6 TWh/an en 20206. En 2010, en France, une charte a engagé les opérateurs développer le réseau tout en économisant l'électricité, et améliorer la récupération et le recyclage des matériels informatiques7. De 2005 à 2008, les unités centrales desktop vendues ont légèrement diminué leur consommation d'énergie, de même que les écrans, alors que la consommation des portables augmentaient légèrement8

Ouverture des pays aux TIC


Chaque année, le Forum économique mondial publie le "Networked Readiness Index", un indice défini en fonction de la place, l'usage et le bénéfice que peut tirer un pays des Technologies de l'Information et des Communications. Cet indice prend en compte une centaine de pays (133 en 2009-2010) et permet d'établir un classement mondial. Cet indice reste encore sous le niveau souhaité si l'on prend en considération les besoins et les limitations imposées par les situations actuelles.