Programmation informatique
Contexte des ??coles Wikip??dia
Cette s??lection se fait pour les ??coles par la charit?? pour enfants lire la suite . Avant de vous d??cider ?? propos de parrainer un enfant, pourquoi ne pas en apprendre davantage sur diff??rents organismes de parrainage premier ?
Programmation informatique (souvent abr??g?? en programmation ou de codage), parfois consid??r?? comme une branche de math??matiques appliqu??es , est le processus de l'??criture, les tests, le d??bogage / d??pannage, et de maintenir le code source de programmes informatiques. Ce code source est ??crit dans un langage de programmation . Le code peut ??tre une modification d'une source existante ou quelque chose de compl??tement nouveau. Le but de la programmation est de cr??er un programme qui pr??sente un certain comportement d??sir?? (de personnalisation). Le processus d'??criture du code source requiert une expertise dans de nombreux sujets diff??rents, y compris les connaissances du domaine d'application, sp??cialis??s algorithmes et la logique formelle .
Cycle de d??veloppement |
---|
Un d??veloppeur de logiciels au travail |
Activit??s et ??tapes |
|
M??thodologies |
|
Soutenir disciplines |
|
Outils |
|
Dans g??nie logiciel, la programmation (la mise en ??uvre) est consid??r?? comme une phase dans un processus de d??veloppement de logiciels.
Il ya un d??bat en cours sur la mesure dans laquelle l'??criture de programmes est un art, un m??tier ou une discipline d'ing??nierie. Une bonne programmation est g??n??ralement consid??r?? comme l'application mesur??e de tous les trois, dans le but de produire une solution logicielle efficace et maintenable (les crit??res pour "efficace" et "soutenable" varient consid??rablement). La discipline se distingue de beaucoup d'autres professions techniques que les programmeurs ne ont g??n??ralement pas besoin d'??tre licenci?? ou passent des tests de certification normalis??s (ou le secteur r??glement??s) afin de se appeler ??programmeurs?? ou m??me ??ing??nieurs de logiciels".
Un autre d??bat en cours est la mesure dans laquelle le langage de programmation utilis?? dans des programmes d'??criture affecte la forme que prend le programme final. Ce d??bat est analogue ?? celle entourant la Hypoth??se Sapir-Whorf dans la linguistique , qui postule que la nature d'une langue particuli??re influence la pens??e habituelle de ses locuteurs. Structures linguistiques diff??rentes donnent diff??rents sch??mas de pens??e. Cette id??e conteste la possibilit?? de repr??senter parfaitement le monde avec la langue, car il reconna??t que les m??canismes de ne importe quelle langue conditionnent les pens??es de sa communaut?? de haut-parleur.
Programmeurs
Les programmeurs sont ceux qui ??crivent des logiciels. Leur travail comprend habituellement:
- Analyse des besoins
- Sp??cification
- Architecture logicielle
- Codage
- Compilation
- Test du logiciel
- Documentation
- Int??gration
- Entretien
Langages de programmation
Diff??rents langages de programmation prennent en charge diff??rents styles de programmation (appel??s paradigmes de programmation). Le choix de la langue utilis??e est l'objet de nombreuses consid??rations, comme la politique de l'entreprise, l'aptitude ?? la t??che, la disponibilit?? des paquets de tierce partie, ou de pr??f??rence individuelle. Id??alement, le langage de programmation le mieux adapt?? ?? la t??che ?? accomplir sera s??lectionn??. Compromis de cet id??al consistent ?? trouver suffisamment de programmeurs qui connaissent la langue pour construire une ??quipe, la disponibilit?? de compilateurs pour cette langue, et l'efficacit?? avec laquelle les programmes ??crits dans une langue donn??e ex??cuter.
Allen Downey, dans son livre Comment penser comme un informaticien, ??crit:
Les d??tails semblent diff??rentes dans diff??rentes langues, mais quelques instructions de base apparaissent dans ?? peu pr??s toutes les langues: entr??e: obtenir des donn??es ?? partir du clavier, un fichier, ou un autre dispositif de sortie:. Les donn??es d'affichage sur l'??cran ou envoyer des donn??es ?? un fichier ou autre dispositif math??matiques:. effectuer des op??rations math??matiques de base comme l'addition et la multiplication ex??cution conditionnelle:.. V??rifiez certaines conditions et ex??cuter la s??quence appropri??e des ??tats r??p??tition: effectuer une action ?? plusieurs reprises, souvent avec quelques variations.
Beaucoup de langages informatiques fournissent un m??canisme pour appeler des fonctions fournies par les biblioth??ques. Pourvu que les fonctions dans une biblioth??que suivent les conventions d'ex??cution appropri??es (par exemple, la m??thode du passage d'arguments), alors ces fonctions peuvent ??tre r??dig??s dans une autre langue.
Histoire de la programmation
La premi??re programmable la machine (ce est une machine dont le comportement peut ??tre contr??l?? par des changements ?? un ??programme??) ??tait La programmable d'Al-Jazari robot humano??de en 1206. Al-Jazari de Robot ??tait ?? l'origine un bateau avec quatre musiciens automatiques qui flottaient sur un lac pour divertir les invit??s au beuveries royales. Son m??canisme avait une machine ?? tambour programmable chevilles ( cames) qui bosse dans peu leviers qui exploitent la percussions. Le batteur pourrait ??tre faite pour jouer des rythmes diff??rents et diff??rents patterns de batterie en d??pla??ant les pions ?? diff??rents endroits.
Le Jacquard Loom, d??velopp?? en 1801, est souvent cit?? comme une source de art ant??rieur. La machine utilise une s??rie de cartes carton avec des trous perc??s en eux. Le mod??le de trou repr??sent?? le motif que le m??tier a d?? suivre dans le tissage. Le m??tier ?? tisser pourrait produire enti??rement diff??rentes armures en utilisant diff??rents ensembles de cartes. L'utilisation de cartes perfor??es ont ??galement ??t?? adopt??es par Charles Babbage vers 1830, de contr??ler son Moteur analytique.
Cette innovation a ensuite ??t?? affin??e par Herman Hollerith qui, en 1896 a fond?? le Tabulating Machine Company (qui est devenu IBM ). Il a invent?? la carte perfor??e Hollerith, le Lecteur de carte, et la machine de poin??on cl??. Ces inventions ??taient le fondement de l'industrie moderne de traitement de l'information. L'addition d'un plug-conseil ?? son 1906 Type I Tabulator lui permettait de faire diff??rentes t??ches sans avoir ?? reconstruire (la premi??re ??tape vers la programmation). ?? la fin des ann??es 1940, il y avait une vari??t?? de plug-conseil machines programmables, appel?? l'??quipement d'enregistrement de l'unit??, pour effectuer des t??ches de traitement de donn??es (de lecture de carte). Les premiers ordinateurs ont ??galement ??t?? programm??s ?? l'aide de plug-conseils.
L'invention de la Architecture permis programmes informatiques Von Neumann ?? stocker dans m??moire d'ordinateur. Les premiers programmes ont d?? ??tre minutieusement con??u en suivant les instructions de la machine particuli??re, souvent en binaire notation. Chaque mod??le d'ordinateur serait susceptible d'avoir besoin des instructions diff??rentes de faire la m??me t??che. Plus tard langages d'assemblage ont ??t?? d??velopp??s qui laisse le programmeur pr??cise chaque instruction dans un format de texte, entrer abr??viations pour chaque code d'op??ration au lieu d'un nombre et adresses sp??cifiant sous forme symbolique (par exemple AJOUTER X, TOTAL). En 1954, Fortran, le premier langage de programmation de haut niveau, a ??t?? invent??. Cela a permis aux programmeurs de sp??cifier calculs en entrant une formule directement (par exemple Y = X * 2 + 5 * X + 9). Le texte du programme, ou la source, ont ??t?? converties en instructions machine en utilisant un programme sp??cial appel?? compilateur. Beaucoup d'autres langues ont ??t?? d??velopp??s, y compris ceux pour la programmation commerciale, tels que COBOL. Les programmes ont ??t?? pour la plupart encore entr??s ?? l'aide de cartes perfor??es ou ruban de papier. (Voir programmation informatique ?? l'??poque de cartes perfor??es). ?? la fin des ann??es 1960, dispositifs de stockage de donn??es et terminaux informatiques sont devenus assez bon march?? afin que les programmes pourraient ??tre cr????s en tapant directement dans les ordinateurs. Les ??diteurs de texte ont ??t?? d??velopp??s qui permettait aux changements et corrections ?? apporter beaucoup plus facilement qu'avec des cartes perfor??es.
Comme le temps a progress??, les ordinateurs ont fait des pas de g??ant dans le domaine de la puissance de traitement. Cela a entra??n?? nouveaux langages de programmation qui sont plus abstraite du mat??riel sous-jacent. Bien que ces langues les plus abstraites exigent suppl??mentaires frais g??n??raux, dans la plupart des cas l'??norme augmentation de la vitesse des ordinateurs modernes a entra??n?? peu de diminution de performance par rapport ?? leurs homologues ant??rieures. Les avantages de ces langues les plus abstraites, ce est qu'ils permettent ?? la fois une courbe d'apprentissage plus facile pour les gens moins familiers avec les langages de programmation de bas niveau plus ??g??s, et ils permettent ??galement un programmeur exp??riment?? pour d??velopper des applications simples rapidement. Malgr?? ces avantages, les grands programmes complexes, et des programmes qui sont plus tributaires de la vitesse encore besoin relativement langues de niveau inf??rieur et plus rapides avec le mat??riel d'aujourd'hui. (Les m??mes pr??occupations ont ??t?? soulev??es ?? propos de la langue d'origine Fortran.)
Tout au long de la seconde moiti?? du XXe si??cle, la programmation ??tait une carri??re attrayante dans les pays les plus d??velopp??s. Certaines formes de programmation ont ??t?? de plus en plus soumis ?? l'externalisation offshore (d'importer des logiciels et des services d'autres pays, g??n??ralement ?? un salaire inf??rieur), la prise de d??cisions de carri??re de programmation dans les pays d??velopp??s plus compliqu??s, tout en augmentant les opportunit??s ??conomiques dans les zones les moins d??velopp??es. On ne sait pas dans quelle mesure cette tendance se poursuivra et combien il aura un impact salaires et opportunit??s programmeur.
Programmation moderne
Les exigences de qualit??
Quelle que soit l'approche du d??veloppement de logiciel peut ??tre, le programme d??finitif doit satisfaire certaines propri??t??s fondamentales. Les cinq propri??t??s suivantes sont parmi les plus pertinentes:
- Efficacit??: la quantit?? de ressources syst??me consomme un programme (temps de processeur, espace m??moire, p??riph??riques lents, bande passante du r??seau et dans une certaine mesure, m??me interaction de l'utilisateur), le moins sera le mieux.
- Fiabilit??: combien de fois les r??sultats d'un programme sont corrects. Cela d??pend de la pr??vention de la propagation d'erreur r??sultant de la conversion de donn??es et la pr??vention des erreurs r??sultant de d??bordements de tampon, sousverses et division par z??ro.
- Robustesse: comment un programme pr??voit des situations de conflit de types et d'autres incompatibilit??s qui se traduisent par les erreurs d'ex??cution et haltes de programme. L'accent est mis principalement sur l'interaction de l'utilisateur et le traitement des exceptions.
- Ergonomie: l'clearity et l'intuitivit?? d'une sortie de programmes peuvent faire ou d??faire son succ??s. Cela implique un large ??ventail d'??l??ments textuels et graphiques qui fait un programme facile et confortable ?? utiliser.
- Portabilit??: la gamme de plates-formes mat??rielles et syst??mes d'exploitation sur lequel le code source d'un programme peut ??tre compil?? et ex??cut??. Cela d??pend principalement sur la gamme de compilateurs sp??cifiques de plate-forme pour la langue du code source plut??t que quelque chose ayant ?? voir avec le programme directement.
Complexit?? algorithmique
Le champ acad??mique et la pratique de l'ing??nierie de la programmation informatique sont ?? la fois largement concern??s par la d??couverte et la mise en ??uvre les plus efficaces algorithmes pour une classe donn??e de probl??me. A cet effet, les algorithmes sont class??s dans l'ordre en utilisant ce qu'on appelle Comparaison asymptotique, O (n), qui exprime l'utilisation des ressources, telles que le temps d'ex??cution ou de la consommation de m??moire, en termes de la taille d'une entr??e. programmeurs experts sont familiers avec une vari??t?? d'algorithmes bien ??tablies et leurs complexit??s respectives et utiliser ces connaissances pour choisir les algorithmes qui sont les mieux adapt??es aux circonstances.
M??thodologies
La premi??re ??tape dans la plupart des projets de d??veloppement de logiciels formelle est l'analyse des besoins, suivie par la mod??lisation, la mise en ??uvre, et l'??chec de l'??limination ( d??bogage). Il existe beaucoup d'approches diff??rentes pour chacune de ces t??ches. Une approche populaire pour analyse des besoins est Utiliser l'analyse de cas.
Techniques de mod??lisation les plus populaires sont l'analyse orient??e objet et Design ( OOAD) et Model-Driven Architecture ( MDA). Le (Unified Modeling Language UML) est une notation utilis??e ?? la fois pour OOAD et MDA.
Une technique similaire ?? celle utilis??e pour la conception de base de donn??es est mod??lisation entit??-relation ( ER Modeling).
techniques de mise en ??uvre comprennent les langages imp??ratifs ( orient??e objet ou proc??durale), langages fonctionnels, et langues logiques.
Le d??bogage est le plus souvent fait avec IDEs comme Visual Studio, NetBeans, et Eclipse. D??bogueurs s??par??es comme GDB sont ??galement utilis??s.
usage de la langue de mesure
Il est tr??s difficile de d??terminer ce que sont les plus populaires des langages de programmation modernes. Certaines langues sont tr??s populaires pour des types particuliers d'applications (par exemple, COBOL est toujours forte dans le centre de donn??es d'entreprise, souvent sur de grandes mainframes, FORTRAN dans les applications d'ing??nierie, et C dans applications embarqu??es), tandis que certaines langues sont r??guli??rement utilis??s pour ??crire de nombreux types d'applications.
M??thodes de mesure de la popularit?? de la langue comprennent: compter le nombre des offres d'emploi qui mentionnent la langue, le nombre de livres qui enseignent la langue qui sont vendus (ce surestime l'importance des langues les plus r??cents), et les estimations du nombre de lignes existantes de code ??crites dans la langue (cela sous-estime le nombre de locuteurs de langues d'affaires tels que COBOL).
D??bogage
Le d??bogage est une t??che tr??s importante dans le processus de d??veloppement de logiciels, en raison d'un programme erron??e peut avoir des cons??quences importantes pour ses utilisateurs. Certaines langues sont plus sujettes ?? certains types de d??fauts parce que leurs sp??cifications ne n??cessite pas compilateurs d'effectuer autant de contr??le que d'autres langues. Utilisation d'un outil d'analyse statique peut aider ?? d??tecter des probl??mes possibles.