Share to: share facebook share twitter share wa share telegram print page

Typage dynamique

Le typage dynamique est une technique utilisée dans certains langages de programmation pour assigner le type de la valeur dénotée par la variable durant l'exécution du code.

Tous les langages de programmation permettent, directement ou indirectement, de manipuler des valeurs. Généralement, c'est par l'entremise de variables, qui sont une association (on dit aussi une liaison) entre un symbole et une valeur ou succession de valeurs, le symbole permettant au programmeur d'identifier et manipuler ces valeurs.

Le typage d'une variable consiste à associer à sa variable symbolique un « type » de donnée, permettant à l'ordinateur de savoir si celle-ci est de type numérique, textuel, etc., d'allouer en conséquence des zones de mémoire de dimension suffisantes pour stocker cette donnée, et éventuellement de vérifier que les manipulations programmées sur cette variable (opérations mathématiques, traitement de texte, etc.) sont cohérentes avec son type.

Le typage dynamique consiste à laisser l'ordinateur réaliser cette opération de typage « à la volée », lors de l'exécution du code, contrairement aux langages statiquement typés où l'analyse de type est effectuée en amont (en général lors de la compilation du programme). Indépendamment du moment où cette analyse est effectuée, la méthode de typage peut soit imposer des annotations explicites de types aux expressions du programme, soit disposer d'un mécanisme d'inférence de types. On notera que la plupart des langages à typage dynamique disposent de ce mécanisme.

Le typage dynamique peut être une solution très commode pour le développement rapide de programmes, notamment lorsque le type des objets manipulés n'est pas forcément connu à l'avance, ou bien lorsque le programmeur veut permettre par commodité le changement de type d'une variable. Il est de plus nécessaire au développement d'un protocole à méta-objets — ou MOP — où le typage statique est interdit[réf. nécessaire].

Exemples

Typage statique

Par exemple, en langage C ou C++, l'extrait de programme suivant :

int a;
a = 5; 
int b = a + 1;

déclare une variable dénotée 'a', de type entier ('int'), puis lui affecte (la définit par) la valeur 5. Ensuite, une variable b, du même type, est définie et par la même occasion initialisée par le résultat de l'expression a + 1. C++ est un langage à typage statique. En C++ moderne (après C++11), le mot clé auto permet de ne pas déclarer le type de certaines variables. Le type de la variable doit alors être inféré par le compilateur par analyse contextuelle.

int a = 1;
auto b = a + 1;

Typage dynamique

En Common Lisp, on écrira :

 (let ((a 5)) ...)

Ici, la création d'une variable lexicale se fait sans en spécifier le type.[pas clair] Le type de la donnée n'est pas associé au symbole qui dénote la variable mais est encodé dans la donnée elle-même. Ainsi, dans la portée du 'let', on peut interroger le type de la variable 'a' (c'est une application de la réflexivité) :

   (let ((a 5))
        (when (numberp a)
              (print "a est un nombre")) ...)

De plus, en cours d'exécution, 'a' pourrait recevoir un objet de type différent, si le programme l'autorise :

    (let ((a 5)
          (setf a "je suis une chaîne") ...)

Implications du typage dynamique

La grande flexibilité que permet le typage dynamique se paye généralement par :

  • une surconsommation de mémoire correspondant à l'encodage 'à la volée' du type dans la valeur ;
  • une perte de temps lors des tests du programme, les erreurs de cohérence de type ne se détectant qu'à l'exécution de la ligne de code concernée, et non dès sa compilation ;
  • une perte de performances due aux indirections supplémentaires ; ce surcoût à l'exécution est toutefois contrebalancé par l'accroissement de la puissance des ordinateurs actuels, et permet le développement rapide d'applications ;
  • une perte de maintenabilité du code, le lecteur du code source pouvant avoir des difficultés à appréhender le type des variables, et plus encore à s'apercevoir que le code peut avoir été conçu en fonction de la variabilité de ce type.

Pour les opérations algorithmiques coûteuses, les langages de script comme Python, Tcl ou Ruby peuvent s'interfacer à des bibliothèques écrites en langage de bas niveau comme le langage C. De plus, certains langages (en particulier Common Lisp) permettent une déclaration statique facultative du type, afin de prouver la cohérence du typage à la compilation et de supprimer les indirections.

Lorsqu'une fonction reçoit à l'exécution une donnée d'un type incorrect (erreur de type à l'exécution), une exception est alors levée.

Exemples

Voir aussi

Read other articles:

ПамятникПамятник Льву Ошанину 58°03′01″ с. ш. 38°51′11″ в. д.HGЯO Страна  Россия Город Рыбинск Скульптор М.М. Нурматов Дата постройки 2003 год Материал бронза Памятник Льву Ошанину — памятник русскому советскому поэту-песеннику Льву Ивановичу Ошанину в городе Р…

This article is about the Chalcolithic archaeological culture in Central India. For the present-day culture of this region, see Malwa § Culture. The Malwa culture was a Chalcolithic archaeological culture which existed in the Malwa region of Central India and parts of Maharashtra in the Deccan Peninsula. It is mainly dated to c. 1600 – c. 1300 BCE,[1] but calibrated radiocarbon dates have suggested that the beginning of this culture may be as early as c. 2000-175…

Ancus Marcius (memerintah sejak 640 SM - 616 SM) adalah raja keempat Kerajaan Romawi. Ia adalah putra dari Marcius dan Pompilia, dan merupakan cucu dari Numa Pompilius. Ancus MartiusBerkuasa640 BCPendahuluTullus HostilliusPenerusLucius Tarquinius PriscusKematian616 BCAyahMarciusIbuPompilia Menurut Livy, tindakan pertamanya sebagai raja adalah memerintahkan para pontifex maximus untuk menyalin teks mengenai tata cara upacara keagamaan untuk ditampilkan ke publik, sehingga ritual agama tak akan la…

Ar Raihan beralih ke halaman ini. Untuk kegunaan lain, lihat Ar Raihan (disambiguasi).Artikel ini membutuhkan rujukan tambahan agar kualitasnya dapat dipastikan. Mohon bantu kami mengembangkan artikel ini dengan cara menambahkan rujukan ke sumber tepercaya. Pernyataan tak bersumber bisa saja dipertentangkan dan dihapus.Cari sumber: Yayasan Ar Raihan – berita · surat kabar · buku · cendekiawan · JSTOR Artikel ini terlalu bergantung pada referensi dari sumb…

State flag of Rhode Island Location of Rhode Island on the U.S. map This is a list of prominent people who were born in the state of Rhode Island or who spent significant periods of their lives in the state. This is a dynamic list and may never be able to satisfy particular standards for completeness. You can help by adding missing items with reliable sources. Academia Elizabeth Buffum Chace James Burrill Angell (1829–1916) – educator, academic administrator, and diplomat Glen Bowersock (bor…

Wangsa Wettin adalah dinasti bangsawan yang selama lebih dari 800 tahun pernah menguasai dan memerintah wilayah yang sekarang menjadi negara bagian Sachsen, Jerman. Anggota dari wangsa ini juga selama beberapa waktu juga pernah menjadi penguasa Polandia. Jika dirunut lebih jauh, keturunan wangsa Wettin pada masa-masa yang berbeda pernah menduduki takhta Britania Raya, Portugal, Bulgaria, Polandia, Sachsen, dan Belgia. Dari semua negara-negara ini, hanya keturunan di Britania (dari cabang Sachsen…

Historical period of Brazil (1840–1889) Second reign1840–1889Emperor Pedro II in his majestic costume with imperial insigniaKey eventsDeclaration of age of Pedro IIProclamation of the RepublicChronology Regency period Republic of the Sword [pt] Part of a series on theHistory of BrazilTerra Brasilis, Miller Atlas, 1519 Pre-Cabraline Indigenous peoples Luzia Kuhikugu Marajoara culture Colonial Brazil Treaty of Tordesillas Pedro Álvares Cabral's voyage European discovery Letter of…

French cyclist Mickaël BourgainPersonal informationFull nameMickaël BourgainBorn (1980-05-28) 28 May 1980 (age 43)Boulogne-sur-Mer, FranceTeam informationDisciplineTrackRoleRiderRider typeSprinterProfessional team1999-2009Cofidis Major winsTeam sprint world champion (2004, 2006, 2007 and 2009) Medal record Representing  France Men's track cycling Olympic Games 2004 Athens Team Sprint 2008 Beijing Sprint World Championships 2004 Melbourne Team Sprint 2006 Bordeaux Team Sprin…

Синелобый амазон Научная классификация Домен:ЭукариотыЦарство:ЖивотныеПодцарство:ЭуметазоиБез ранга:Двусторонне-симметричныеБез ранга:ВторичноротыеТип:ХордовыеПодтип:ПозвоночныеИнфратип:ЧелюстноротыеНадкласс:ЧетвероногиеКлада:АмниотыКлада:ЗавропсидыКласс:Птиц…

Halaman ini berisi artikel tentang istilah umum. Untuk organisasi antar pemerintah, lihat Persemakmuran Bangsa-Bangsa. Artikel ini tidak memiliki referensi atau sumber tepercaya sehingga isinya tidak bisa dipastikan. Tolong bantu perbaiki artikel ini dengan menambahkan referensi yang layak. Tulisan tanpa sumber dapat dipertanyakan dan dihapus sewaktu-waktu.Cari sumber: Persemakmuran – berita · surat kabar · buku · cendekiawan · JSTOR Persemakmuran merupak…

This article is about the shared career and activities of two British actors. For the individuals, see James Phelps (actor) and Oliver Phelps (actor). British actors and identical twin brothers James and Oliver PhelpsJames (left) and Oliver Phelps at Lucca Comics and Games 2011BornJames Andrew Eric PhelpsOliver Martyn John Phelps (1986-02-25) 25 February 1986 (age 38)Sutton Coldfield, Birmingham, EnglandOccupationActorsYears active2001–present James Andrew Eric Phelps and Oliver Mart…

Triazolobenzodiazepine tranquilizer drug EstazolamClinical dataTrade namesProsom, Esilgan, Eurodin, Nuctalon, othersOther namesDesmethylalprazolamAHFS/Drugs.comMonographMedlinePlusa691003License data US DailyMed: Estazolam Routes ofadministrationBy mouthATC codeN05CD04 (WHO) Legal statusLegal status BR: Class B1 (Psychoactive drugs)[2] CA: Schedule IV DE: Prescription only (Anlage III for higher doses) UK: Class C US: WARNING[1]Schedul…

113th season in existence of Real Madrid CF Real Madrid 2016–17 football seasonReal Madrid2016–17 seasonSergio Ramos (left) and former President of the Community of Madrid, Cristina Cifuentes (right), with the La Liga trophyPresidentFlorentino PérezHead coachZinedine ZidaneStadiumSantiago BernabéuLa Liga1stCopa del ReyQuarter-finalsUEFA Champions LeagueWinnersUEFA Super CupWinnersFIFA Club World CupWinnersTop goalscorerLeague: Cristiano Ronaldo (25)All: Cristiano Ronaldo (42)Highest home a…

Voce principale: Associazione Sportiva Bari. Associazione Sportiva BariStagione 1989-1990Una formazione barese durante il precampionato Sport calcio Squadra Bari Allenatore Gaetano Salvemini Presidente Vincenzo Matarrese Serie A10º posto Coppa ItaliaSecondo turno eliminatorio Coppa MitropaVincitore Maggiori presenzeCampionato: Gérson, João Paulo (33) Miglior marcatoreCampionato: Maiellaro, João Paulo (6)Totale: Maiellaro, João Paulo (7) StadioDella Vittoria 1988-1989 1990-1991 Si invit…

This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: 1564 in India – news · newspapers · books · scholar · JSTOR (July 2013) (Learn how and when to remove this message) List of events ← 1563 1562 1561 1564 in India → 1565 1566 1567 Centuries: 15th 16th 17th 18th Decades: 1540s 1550s 1560s 1570s 1580s See…

Hairstyle A medium length hi-top fade Hi-top fade is a haircut where hair on the sides is cut off or kept very short while hair on the top of the head is grown long.[1] The hi-top was a trend during the golden age of hip hop and urban contemporary music of the 1980s and the early 1990s.[2] It was common among young African American males between 1986 and 1993 and to a lesser extent in the mid–1990s (1994–1996).[3] The hi-top fade is commonly called a crew cut, due to …

American politician in Virginia (1762–1811) For other people named George Smith, see George Smith (disambiguation). George William Smith17th Governor of VirginiaIn officeApril 3, 1811 – December 26, 1811Preceded byJames MonroeSucceeded byPeyton Randolph (acting)Member of the Virginia Council of StateIn officeDecember 15, 1807 – December 26, 1811Member of the Virginia House of Delegates from Richmond CityIn officeDecember 7, 1801 – December 6, 1802Preceded byCha…

The examples and perspective in this article may not represent a worldwide view of the subject. You may improve this article, discuss the issue on the talk page, or create a new article, as appropriate. (June 2021) (Learn how and when to remove this message) Church made up of single block of stone Geghard Monastery in Armenia, founded in 4th century A monolithic church or rock-hewn church is a church made from a single block of stone. Because freestanding rocks of sufficient size are rare, such …

Wall by Silent Valley Reservoir, Northern Ireland Mourne wall on the slopes of Slieve Donard, the highest mountain in Northern Ireland The Mourne Wall (Irish: Balla an Mhúrn) was constructed to enclose a catchment area of the Silent Valley Reservoir in the Mourne Mountains, Northern Ireland. The 1.5 m (4 ft 11 in) high stone wall, which was built to keep livestock from contaminating water supplies, took almost twenty years to complete (1904 to 1922). The project was overseen by t…

Hubungan Israel-Turki Israel Turki Hubungan Israel–Turki terbentuk pada Maret 1949[1] ketika Turki menjadi negara mayoritas Muslim pertama (sebelum Iran pada tahun 1950[2]) yang mengakui Negara Israel.[3][4] Hubungan kedua negara pada tahun 1958 termasuk pertemuan antara David Ben-Gurion dan Adnan Menderes yang membahas tentang aliansi pinggiran. Sejak itu, Israel menjadi pemasok utama senjata ke Turki. Kerja sama militer, strategis, dan diplomatik antara Turki …

Kembali kehalaman sebelumnya