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

Smalltalk

Smalltalk
Logo.

Date de première version Développement démarré en 1969, disponible publiquement en 1980
Paradigmes Objet
Auteur Alan Kay, Dan Ingals, Ted Kaehler, Adele Goldberg
Développeurs Xerox PARC
Dernière version ANSI Smalltalk ()[1]Voir et modifier les données sur Wikidata
Typage dynamique
Influencé par Lisp, Simula
A influencé Objective-C, Self, Oak, Java, Dylan, AppleScript, NewtonScript, Python, Ruby, Scala, Perl 6, Scratch
Implémentations Squeak, GNU Smalltalk, VisualWorks, Pharo
Système d'exploitation Multiplate-forme
Extension de fichier stVoir et modifier les données sur Wikidata

Smalltalk est un langage de programmation orienté objet, réflexif et dynamiquement typé. Il fut l'un des premiers langages de programmation à disposer d'un environnement de développement intégré complètement graphique. Il a été créé en 1972. Il est inspiré par les langages Lisp et Simula. Il a été conçu par Alan Kay, Dan Ingals, Ted Kaehler, Adele Goldberg au Palo Alto Research Center de Xerox. Le langage a été formalisé en tant que Smalltalk-80 et est depuis utilisé par un grand nombre de personnes. Smalltalk est toujours activement développé.

Smalltalk a été d'une grande influence dans le développement de nombreux langages de programmation, dont : Objective-C, Actor (en), Java et Ruby.

Un grand nombre des innovations de l'ingénierie logicielle des années 1990 viennent de la communauté des programmeurs Smalltalk, tels que les design patterns (appliqués au logiciel), l’extreme programming (XP) et le refactoring. Ward Cunningham, l'inventeur du concept du wiki, est également un programmeur Smalltalk.

Historique

Il existe un grand nombre de variantes de Smalltalk, comme c'est souvent le cas avec les langages de programmation[2]. Sans autre qualificatif, le mot Smalltalk est souvent utilisé pour désigner Smalltalk-80, la première version à avoir été rendue publique en 1980.

Smalltalk est le produit d'un groupe de chercheurs conduit par Alan Kay au Palo Alto Research Center (PARC) de Xerox ; Alan Kay a conçu les premières versions de Smalltalk qui ont été implémentées par Dan Ingalls. La première version, nommée Smalltalk-71, a été créée en quelques matinées sur le pari qu'un langage de programmation basé sur l'idée d'envoi de messages inspirée de Simula pouvait être réalisé en « une page de code ».

Concepts

Les principaux concepts de Smalltalk sont :

  • « Tout est objet » : les chaînes de caractères, les entiers, les booléens, les définitions de classes, les blocs de code, les piles et la mémoire sont représentés en tant qu'objets ;
  • Tout est modifiable. Le langage permet par exemple de changer d'IDE en cours d'utilisation, sans recompiler ni redémarrer l'application. De même, il est possible de créer de nouvelles instructions de contrôle dans le langage. Certaines implémentations permettent de changer la syntaxe du langage, ou la façon dont le ramasse-miettes fonctionne ;
  • Le typage est dynamique, donnant ainsi une certaine concision au langage ;
  • Un ramasse-miettes mémoire est intégré et transparent pour le développeur ;
  • Un système de gestion d'exceptions avec reprise est fourni ;
  • Les programmes Smalltalk sont généralement compilés en bytecode, exécutés par une machine virtuelle ;
  • La compilation est faite à la volée : les machines virtuelles commerciales modernes compilent le bytecode vers le code machine natif de façon à obtenir de meilleures performances, une technique dont Smalltalk-80 a été le pionnier, développé par ParcPlace Systems au milieu des années 1980. Cette idée a été adoptée par le langage de programmation Java quelque dix ans après et renommée « compilation just-in-time », ou JIT ;
  • Une classe peut hériter d'une seule autre classe (héritage simple).

Description

Smalltalk implémente, en plus des principaux objets de base (classe, objet, héritage, polymorphisme), des concepts originaux (métaclasse) et introduit la notion d'objet persistant, de traitement des exceptions et le principe modèle-vue-contrôleur.

Une caractéristique surprenante de Smalltalk est l'absence totale d'instructions de contrôle intégrées au langage : if-then-else, for, while, etc. Toutes ces instructions sont implémentées en utilisant des objets. Par exemple, les décisions sont prises en envoyant un message ifTrue à un objet booléen, et en passant un fragment de code à exécuter si le booléen est vrai. Le seul aspect intégré par défaut est la syntaxe pour envoyer un message à un objet.

L'exemple suivant illustre le style de programmation Smalltalk. L'exécution de ce code permet de trouver les voyelles dans une chaîne. Les variables sont déclarées entre deux barres verticales |...|, : déclare les paramètres :

| aString vowels |
aString := 'This is a string'.
vowels := aString select: [:aCharacter | aCharacter isVowel].

À la dernière ligne, la chaîne aString reçoit un message select: avec un bloc de code en argument. Voici le code de la super-classe Collection qui fait le travail :

Collection>>select: aBlock
| newCollection |
newCollection := self species new.
self do: [:each | 
    (aBlock value: each) 
        ifTrue: [newCollection add: each]].
^newCollection

Ce code répond au message en itérant au travers de ses membres (c'est la méthode do:) en évaluant le code aBlock à chaque caractère ; aBlock (aCharacter isVowel) une fois évalué crée un booléen, qui est alors envoyé à ifTrue:. Si le booléen est vrai, alors le caractère est ajouté à la chaîne qui sera retourné. Comme select est défini dans la classe abstraite Collection, on pourrait également l'utiliser de cette façon :

| rectangles aPoint|
rectangles := OrderedCollection 
  with: (Rectangle left: 0 right: 10 top: 100 bottom: 200)
  with: (Rectangle left: 10 right: 10 top: 110 bottom: 210).
aPoint := Point x: 20 y: 20.
collisions := rectangles select: [:aRect | aRect containsPoint: aPoint].

Annexes

Sur les autres projets Wikimedia :

Articles connexes

Liens externes

Didacticiels

Bibliographie

  • Clavel Gilles, Programmer objets avec Smalltalk (ISBN 978-2-225-85157-5)
  • Briffaut X. et Sabah G., Smalltalk : Programmation orientée objet et développement d'applications,
  • Erard P.J. et Déguénon P., Simulation par événements discrets, Concept et réalisations en Simula, Ada et Smalltalk, PPUR, coll. Informatique, Lausanne, 1996
  • Goldberg, Adele (December 1983). Smalltalk-80: The Interactive Programming Environment. Addison-Wesley. (ISBN 0-201-11372-4).
  • Goldberg, Adele; Robson, David (May 1983). Smalltalk-80: The Language and its Implementation. Addison-Wesley. (ISBN 0-201-11371-6).

Notes et références

  1. a et b « https://wiki.squeak.org/squeak/172 »
  2. (en) « Implémentations de Smalltalk », The World of Smalltalk (consulté le ).


Read other articles:

A PHP Error was encountered

Severity: Notice

Message: Undefined variable: z

Filename: wikipedia/wikipediareadmore.php

Line Number: 24

Artikel ini adalah bagian dari seriPembagian administratifIndonesia Tingkat I Provinsi Daerah istimewa Daerah khusus Tingkat II Kabupaten Kota Kabupaten administrasi Kota administrasi Tingkat III Kecamatan Distrik Kapanewon Kemantren Tingkat IV Kelurahan Desa Dusun (Bungo) Gampong Kute Kalurahan Kampung Kalimantan Timur Lampung Papua Riau Lembang Nagari Nagori Negeri Maluku Maluku Tengah Negeri administratif Pekon Tiyuh Lain-lain Antara III dan IV Mukim Di bawah IV Banjar Bori Pedukuhan Dusun Jo…

Paula RaymondRaymond pada 1950LahirPaula Ramona Wright(1924-11-23)23 November 1924San Francisco, California, Amerika SerikatMeninggal31 Desember 2003(2003-12-31) (umur 79)West Hollywood, California, Amerika SerikatNama lainPaula Rae WrightRae PattersonTahun aktif1938–1994Suami/istriFloyd Patterson (1944–1946)(bercerai) 1 anakH. Leslie Williams (1965-1966)[1]AnakRaeme Dorene Patterson (1946-1993) Jack Kelly dan Paula Raymond dalam Maverick (1961) Paula Raymond (…

Granitic SeychellesGranitic Seychelles forestsThe small granitic island of Chauve Souris (Praslin)Map of the Granitic SeychellesEcologyRealmAfrotropicalBiomeTropical and subtropical moist broadleaf forestsGeographyArea166 km2 (64 sq mi)CountriesSeychellesCoordinates4°30′58″S 55°34′37″E / 4.516°S 55.577°E / -4.516; 55.577ConservationConservation statusCritical/endangeredProtected38 km2 (23%)[1] The Granitic Seychelles are the islands in S…

Ancient granite-greenstone terrane in South Africa Location of the Barberton Greenstone Belt. The Barberton Greenstone Belt is situated on the eastern edge of the Kaapvaal Craton in South Africa. It is known for its gold mineralisation and for its komatiites, an unusual type of ultramafic volcanic rock named after the Komati River that flows through the belt. Some of the oldest exposed rocks on Earth (greater than 3.6 Ga) are located in the Barberton Greenstone Belt of the Eswatini–Barberton a…

Untuk kapal lain dengan nama serupa, lihat Kapal perusak Jepang Amagiri. Amagiri pada November 1930 Sejarah Kekaisaran Jepang Nama AmagiriDipesan 1923 (Tahun Fiskal)Pembangun Ishikawajima ShipyardsNomor galangan Perusak No. 49Pasang lunas 28 November 1928Diluncurkan 27 Februari 1930Mulai berlayar 10 November 1930Nasib Tenggelam dekat Kalimantan pada 23 April 1944 Ciri-ciri umum Kelas dan jenis Kapal perusak kelas-FubukiBerat benaman 1.680 ton panjang (1.710 t) (standar) 1.980 ton panjang (2…

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

Contre-la-montre par équipes féminin aux championnats du monde de cyclisme sur route 2017 GénéralitésCourse6e Championnat du monde féminin du contre-la-montre par équipes de marquesCompétitionChampionnats du monde de cyclisme sur route 2017 CMDate17 septembre 2017Distance42,5 kmPays NorvègeLieu de départRavnangerLieu d'arrivéeBergenÉquipes9Vitesse moyenne45,795 km/hRésultatsVainqueur SunwebDeuxième Boels DolmansTroisième Cervélo Bigla ◀20162018▶Documentation Le cont…

Form of Japanese ritual suicide by disembowelment Harakiri and Hara-kiri redirect here. For other uses, see Harakiri (disambiguation). Staged seppuku with ritual attire and kaishaku, 1897 SeppukuSeppuku in kanjiJapanese nameKanji切腹HiraganaせっぷくKatakanaセップクTranscriptionsRomanizationSeppuku Seppuku (切腹, lit. 'cutting [the] belly'), also called harakiri (腹切り, lit. 'abdomen/belly cutting', a native Japanese kun reading), is a form of Japanese ritualistic suic…

Las referencias de este artículo no tienen un formato correcto. Puedes colaborar editándolas como se indica en esta página.También puedes avisar en su página de discusión a quien las añadió pegando lo siguiente: {{subst:Aviso formato de referencias|Hispania}} ~~~~Este aviso fue puesto el 7 de junio de 2019. Este artículo trata sobre el término general. Para periodos específicos, véanse Hispania romana e Hispania (desambiguación). Imagen satelital de la península ibérica. …

Les ordres militaires sont des ordres religieux chrétiens. Leurs membres se consacraient à la défense des lieux saints et des pèlerins, ainsi qu'à la restauration des pratiques religieuses conformes aux « Saintes Écritures ». Les plus anciens ordres militaires chrétiens sont les chevaliers de Saint-Pierre, les Templiers, les Hospitaliers de l'ordre de Saint-Jean de Jérusalem, l'ordre de Santiago, l'ordre de Calatrava et les Teutoniques. Apparus au Moyen Âge en lien avec les …

American TV series or program CNN Republican Town Hall with Donald TrumpGenreTelevision interviewPresented byKaitlan CollinsStarringDonald TrumpCountry of originUnited StatesOriginal languageEnglishProductionProduction locationsSaint Anselm College, Goffstown, New HampshireRunning time62 minutesOriginal releaseNetworkCNNReleaseMay 10, 2023 (2023-05-10) The CNN Republican Town Hall with Donald Trump was a 2023 television interview hosted by journalist Kaitlan Collins and featured f…

Prix Sakharov Cérémonie de remise du prix Sakharov à Denis Mukwege à Strasbourg le 26 novembre 2014. Nom original Prix Sakharov pour la liberté de l'esprit Description Prix récompensant des individus ou des organisations qui ont œuvré pour les droits de l'homme et la liberté d'opinion Organisateur Parlement européen Date de création 1988 Dernier récipiendaire Mahsa Amini Site officiel europarl.europa.eu/sakharovprize modifier  Le prix Sakharov pour la liberté de l'esprit (ou si…

Sri Lankan manufacturing company Royal Ceramics Lanka PLCLogo of Royal CeramicsCompany typePublicTraded asCSE: RCL.N0000S&P Sri Lanka 20 Index componentISINLK0217N00006IndustryCapital goodsFoundedAugust 29, 1990; 33 years ago (1990-08-29)HeadquartersColombo, Sri LankaKey peopleH. Amarasekera (Chairman)A. M. Weerasinghe (Deputy chairman)Aravinda Perera (Managing Director)Revenue LKR63.206 billion (2023)Operating income LKR14.447 billion (2023)Net income LKR10.…

Chlorure de plomb(II) Identification Nom UICPA chlorure de plomb(II)dichlorure de plomb Synonymes chlorure plombeuxcotunnite No CAS 7758-95-4 No ECHA 100.028.950 No RTECS OF9450000 PubChem 166945 SMILES [Cl-].[Cl-].[Pb+2] PubChem, vue 3D InChI InChI : vue 3D InChI=1S/2ClH.Pb/h2*1H;/q;;+2/p-2 InChIKey : HWSZZLVAJGOAAY-UHFFFAOYSA-L Apparence solide blanc inodore Propriétés chimiques Formule Cl2PbPbCl2 Masse molaire[1] 278,1 ± 0,1 g/mol Cl 25,5 %, Pb&#…

التبني تقسيم إداري  البلد سوريا  التقسيم الأعلى ناحية التبني  تعديل مصدري - تعديل   التبني بلدة وناحية سوريّة إداريّة تتبع منطقة دير الزور في محافظة دير الزور. بلغ عدد سكان الناحية 48,393 نسمة حسب تعداد عام 2004.[1] المراجع ^ المكتب المركزي للإحصاء. نشرة السكان - المناط…

Duke of Anhalt in 1918 For other people named Joachim Ernst, see Joachim Ernst (disambiguation). Joachim ErnstJoachim Ernst in 1918Duke of AnhaltReign13 September 1918 – 12 November 1918PredecessorEduardSuccessorMonarchy abolishedBorn(1901-01-11)11 January 1901Dessau, Duchy of AnhaltDied18 February 1947(1947-02-18) (aged 46)NKVD special camp Nr. 2, Weimar, Allied-occupied GermanySpouse Elisabeth Strickrodt, Countess of Askanien ​ ​(m. 1927; div. 1929&…

United States patent law Legislation American Inventors Protection Act Bayh–Dole Act Invention Secrecy Act Hatch-Waxman Act Leahy–Smith America Invents Act Title 35 of the United States Code Types of patent claims Article of manufacture Composition of matter Machine Method Procedures Inter partes review Markman hearing Reexamination Other topics United States Patent and Trademark Office Patent Trial and Appeal Board Exhaustion Infringement Misuse Term of patent Manual of Patent Examining Pro…

Administrative unit in Japan Modern districts of Japan. Cities (white areas) are not part of districts. Former district government office of Higashiyamanashi, Yamanashi (reconstruction at Meiji-mura museum) District assembly of Kawabe, Akita in 1923. All assemblies would be abolished by 1926. In Japan, a district (郡, gun) is composed of one or more rural municipalities (towns or villages) within a prefecture. Districts have no governing function, and are only used for geographic or statistical…

Catholic episcopal see Latin Patriarchate of JerusalemPatriarchatus Latinus Hierosolymitanusהפטריארכיה הלטינית של ירושליםبطريركية القدس للاتينLatin Patriarch of JerusalemArchbishopriccatholic Pierbattista Pizzaballa, the current Latin Patriarch of JerusalemCoat of armsIncumbent:Pierbattista PizzaballaLocationCountryCyprusIsraelJordanPalestineEcclesiastical provinceNone; immediately subject to the Holy SeeStatisticsPopulation- Catholics(as of 2012…

Indian general election, 2014 in Chhattisgarh ← 2009 10, 17, 24 April 2014. 2019 → All 11 constituencies from Chhattisgarh to the Lok SabhaTurnout69.39% (14.10%)   Majority party Minority party   Leader Raman Singh Ajit Jogi Party BJP INC Alliance NDA UPA Leader's seat Did not contest Mahasamund (lost) Last election 10 1 Seats won 10 1 Seat change The 2014 Indian general election in Chhattisgarh was held in three phases on 10, 17 and 24 April 2…

Kembali kehalaman sebelumnya