Redigerer
Smalltalk
Hopp til navigering
Hopp til søk
Advarsel:
Du er ikke innlogget. IP-adressen din vil bli vist offentlig om du redigerer. Hvis du
logger inn
eller
oppretter en konto
vil redigeringene dine tilskrives brukernavnet ditt, og du vil få flere andre fordeler.
Antispamsjekk.
Ikke
fyll inn dette feltet!
{{infoboks programmeringsspråk}} '''Smalltalk''' er et [[objektorientert_programmering|objektorientert]], [[dynamisk typet]], [[Reflection (computer science)|reflektivt]] [[programmeringsspråk]] av [[Alan Kay]], [[Dan Ingalls]], [[Ted Kaehler]], [[Adele Goldberg]] m.fl. fra [[PARC|Xerox PARC]] fra 70-tallet. Språket er hovedsakelig inspirert av [[Sketchpad]] og [[Simula]], men også fra [[LISP]] når det gjelder å tilby et integrert utviklingsmiljø, samt i det at det i hovedsak er skrevet i seg selv og dermed er lett utvid- og modifiserbart. Den mest kjente Smalltalk-utgaven er Smalltalk-80 som «dalte ned fra elfenbenstårnet» i august 1981-utgaven av datamagasinet ''Byte''; en ANSI-standard for Smalltalk ble godkjent i 1998.<ref name="ANSI"/> == Historikk == Smalltalk-71, Smalltalk-72, [[Smalltalk-76]] ==Smalltalk i Norge == [[Trygve Reenskaug]], Senter for Industriforskning (SI) [[Model-view-controller]] (MVC) [[Computer_Sciences_Corporation|CSC]]s norskutviklede, globale produkt for [[reassuranse]], [[SICS/nt]], er skrevet i Smalltalk (IBM VisualAge for Smalltalk). Ifølge IBM er SICS/nt det største produktet i verden skrevet i Smalltalk. [[GeoKnowledge]]s RRV programvare, GeoX, er skrevet i Smalltalk. ==Semantikk og syntaks== Smalltalks semantikk kan (siden Smalltalk-80) kort oppsummeres ved at ''alt er objekter''. Enhver entitet man arbeider med er et objekt som er en instans av en klasse. (Dette gjelder også klassene selv, som er instanser av spesialiserte underklasser av klassen '''Class'''.) Det finnes ikke noe klart skille mellom program og utviklingsmiljø; typisk er verktøyene man utvikler i også representert ved objekter som bor i samme verden som objektene man selv definerer og lager. Som hovedregel fungerer ''variabler'' som referanser til objekter heller enn til stykker av minnet; unntak gjelder for grunnleggende objekter som hel- eller flyttall, booleske størrelser og karakterer. Smalltalk har automatisk søppelsamling: når det ikke lenger finnes noen referanse til et objekt, vil minnet det opptok bli frigjort. All interaksjon mellom objekter foregår via sending av ''meldinger''. Når et objekt mottar en melding, finner det frem til den ''metoden'' som implementerer hvordan det skal reagere på meldingen, utfører det metoden angir, og returnerer et objekt som svar. Smalltalks syntaks er meget enkel. Hver melding kan ha én av tre former (fet skrift og kursiv er kun brukt for å tydeliggjøre delene av en melding): ''objekt'' '''melding''' Meldingen '''melding''' sendes til objektet ''objekt''. Et eksempel kan være ''mainWindow'' '''close'''. ''objekt'' '''operatormelding''' ''argument'' Meldingen '''operatormelding''' sendes til objektet ''objekt''. Denne syntaksen brukes først og fremst for regneoperasjoner og lignende – kun visse tegn kan brukes i en slik melding. Et eksempel er ''2'' '''+''' ''3'', som sender meldingen '''+''' til objektet (heltallet) ''2'' med argumentet ''3''. Klassen som ''2'' er en instans av implementerer en metode '''+''' som returnerer summen av mottakeren og argumentet. ''objekt'' '''melding:''' ''argument'' ''objekt'' '''meldingDel1:''' ''argument'' '''del2:''' ''argument2'' ''objekt'' '''meldingDel1:''' ''argument'' '''del2:''' ''argument2'' '''del3:''' ''argument3'' osv. Dette er måten man normalt sender en melding med ett eller flere argumenter. I det siste tilfellet mottar f.eks. objektet ''objekt'' meldingen '''meldingDel1:del2:del3:''' med tre argumenter. "Hello World"-eksemplet nedenfor viser en slik melding med ett argument; et eksempel med tre argumenter kan være ''account'' '''processInvoice:''' ''inv1'' '''vatPolicy:''' ''self foodPolicy'' '''logTo:''' ''logFile''. Prioritering av meldinger er rent syntaksbasert, og følger rekkefølgen meldingsformene er angitt i ovenfor. Innen hver meldingsform er prioriteten alltid fra venstre mot høyre – dette kan virke forvirrende på dem som er vant til andre språk, siden det f.eks. impliserer at ''2'' '''+''' ''3'' '''*''' ''5'' evaluerer til 25, ikke 17. Smalltalk har kun fem reserverte ord. Disse er '''self''' (referanse til objektet selv), '''super''' (referanse til objektet selv som om det var en instans av sin umiddelbare overklasse), '''true''' (boolesk sannhet, referanse til den eneste instansen av klassen '''True'''), '''false''' (boolesk falskhet, referanse til den eneste instansen av klassen '''False''') og '''nil''' ("ingen verdi", referanse til den eneste instansen av klassen '''UndefinedObject'''). ==[[Hello World]] eksempel == Transcript show: 'Hello, world!'. Meldingen "show" sendes til klassen "Transcript" med teksten "Hello, world!" som argument. Aktivering av "show"-metoden fører så til at teksten blir vist i transcript/konsoll-vinduet. (PS Du må ha systemvinduet "Transcript" åpent for å se resultatet av eksekvering av dette eksemplet.) == Smalltalk-varianter == Smalltalk/V VisualAge Smalltalk fra IBM VisualWorks fra Cincom Systems. Squeak Dolphin Smalltalk (for Windows), fra Object Arts == Referanser == <references> <ref name="ANSI">[http://webstore.ansi.org/RecordDetail.aspx?sku=ANSI+INCITS+319-1998+(R2007) '''ANSI INCITS 319-1998 (R2007)'''] {{Wayback|url=http://webstore.ansi.org/RecordDetail.aspx?sku=ANSI+INCITS+319-1998+(R2007) |date=20140222135229 }} "Information Technology - Programming Languages - Smalltalk", approved on May 19, 1998</ref> </references> {{Programmeringsspråk}} {{Autoritetsdata}} [[Kategori:Programmeringsspråk]]
Redigeringsforklaring:
Merk at alle bidrag til Wikisida.no anses som frigitt under Creative Commons Navngivelse-DelPåSammeVilkår (se
Wikisida.no:Opphavsrett
for detaljer). Om du ikke vil at ditt materiale skal kunne redigeres og distribueres fritt må du ikke lagre det her.
Du lover oss også at du har skrevet teksten selv, eller kopiert den fra en kilde i offentlig eie eller en annen fri ressurs.
Ikke lagre opphavsrettsbeskyttet materiale uten tillatelse!
Avbryt
Redigeringshjelp
(åpnes i et nytt vindu)
Maler som brukes på denne siden:
Mal:Autoritetsdata
(
rediger
)
Mal:Bilde fra Wikidata
(
rediger
)
Mal:Hlist/styles.css
(
rediger
)
Mal:Infoboks/styles.css
(
rediger
)
Mal:Infoboks bilde
(
rediger
)
Mal:Infoboks dobbeltrad
(
rediger
)
Mal:Infoboks overskrift
(
rediger
)
Mal:Infoboks programmeringsspråk
(
rediger
)
Mal:Infoboks rad
(
rediger
)
Mal:Infoboks slutt
(
rediger
)
Mal:Infoboks start
(
rediger
)
Mal:Navboks
(
rediger
)
Mal:Programmeringsspråk
(
rediger
)
Mal:Wayback
(
rediger
)
Modul:Arguments
(
rediger
)
Modul:External links
(
rediger
)
Modul:External links/conf
(
rediger
)
Modul:External links/conf/Autoritetsdata
(
rediger
)
Modul:Genitiv
(
rediger
)
Modul:Navbar
(
rediger
)
Modul:Navbar/configuration
(
rediger
)
Modul:Navboks
(
rediger
)
Modul:Navbox/configuration
(
rediger
)
Modul:Navbox/styles.css
(
rediger
)
Modul:Reference score
(
rediger
)
Modul:Reference score/conf
(
rediger
)
Modul:Reference score/i18n
(
rediger
)
Modul:String
(
rediger
)
Modul:Wayback
(
rediger
)
Modul:Wikidata2
(
rediger
)
Modul:WikidataBilde
(
rediger
)
Modul:WikidataDato
(
rediger
)
Navigasjonsmeny
Personlige verktøy
Ikke logget inn
Brukerdiskusjon
Bidrag
Opprett konto
Logg inn
Navnerom
Side
Diskusjon
norsk bokmål
Visninger
Les
Rediger
Rediger kilde
Vis historikk
Mer
Navigasjon
Forside
Siste endringer
Tilfeldig side
Hjelp til MediaWiki
Verktøy
Lenker hit
Relaterte endringer
Spesialsider
Sideinformasjon