Smalltalk er allment oppfattet som en gammel, døende språk—en antikk fra en svunnen tid. Ingenting kunne være lengre fra sannheten.
Smalltalk er fortsatt svært relevant. Det er et utmerket instruksjonsspråk for å undervise programmering til folk som ikke har teknisk bakgrunn. Det er et superlativt prototypingsspråk for oppstart. Det er en industriell styrke enterprise språk som brukes av bedrifter både store og små over hele verden. Det er gode grunner til å vurdere å bruke moderne Smalltalk i dag, siden mye har endret seg de siste årene for å forbedre sine prospekter.
Du trenger ikke å bruke Smalltalk i produksjon i dag, men prøv å kode noe i Smalltalk og se hvordan det føles. Det burde føles kjent, Fordi Smalltalk implementering av objektorientert (oo) paradigmet er så utmerket at det har påvirket en hel generasjon AV oo språk, Som Objective-C, Python, Ruby, CLOS, PHP 5, Perl 6, Erlang, Groovy, Scala, Dart, Swift, Og så videre.
ved å lære Smalltalk, vil du forstå hvordan alle de nyttige funksjonene i dagens oo språk kom til å være. Å lære Smalltalk kan også gi deg en stor kant i programmeringsferdigheter blant dine jevnaldrende, og det kan være et flott verktøy for å undervise programmering til nybegynnere.
hva ga Smalltalk oss?
Smalltalk har en rik arv av bidrag til programvareindustrien. Bare se på denne listen over funksjoner og teknologier det innført:
- Smalltalk introduserte verden til språket virtual machine( ELLER VM), som gjør at programvare kan være plattformuavhengig. Dette er den samme teknologien som støtter Java (JVM) OG. NET, Samt Android (Dalvik).
- Smalltalk også pioner jit (just-in-time) kompilering, en teknikk for dramatisk å forbedre ytelsen til bytecode programvare som Java.
- Fra Smalltalk kom den første moderne IDE (integrated development environment), som inkluderte en tekst editor, et system eller klasse nettleser, et objekt eller eiendom inspektør, og en debugger. Dette førte til Mange Ideer som utviklere favoriserer i dag, For Eksempel Visual Studio, Xcode og IntelliJ IDEA. Personlig tror jeg at ingen Av Disse Ideene kan sammenligne Med Smalltalks IDE i enkelhet, eleganse og utviklingshastighet; originalen er fortsatt den beste!
- Fra begynnelsen Hadde Smalltalk lukninger, som er leksikalsk scoped førsteklasses funksjoner. I hovedsak er en nedleggelse en tilbakeringingsfunksjon som kan se ikke-lokale variabler på stedet der de ble definert. Dette kan hjelpe deg med å skrive mye mer kompakt og lesbar kode. Nedleggelser finner veien til mange store språk, for Eksempel Java, C# og PHP.
- Smalltalk var det første språkverktøyet for å støtte «live» programmering og avanserte feilsøkingsteknikker som on-the-fly inspeksjon og kodeendringer under kjøring. I Dag er live debugging mulig I C# Med Visual Studios «Rediger og Fortsett» og I Java Med HotSwap.
- Smalltalk introdusert MVC (Modell-View-Controller) til verden. MVC ER en programvare arkitektonisk mønster for implementering av brukergrensesnitt. Det er populært med desktop GUI-applikasjoner og webapplikasjoner. I disse dager er det arkitekturen som de fleste webutviklere lærer først.
- I stor grad Er Smalltalk ansvarlig for å gi oss testdrevet utvikling (ELLER TDD) og ekstrem programmering (ELLER XP), som begge er svært innflytelsesrike i dagens standard agile praksis.
- Smalltalk laget «duck typing» et husstandsord (vel, hvis huset ditt har en programmerer i det). Duck typing er der «type checking» er utsatt til runtime—når refleksjon evner brukes til å sikre riktig oppførsel. Vi finner duck skrive på mange språk i dag, inkludert Java, Python, Common Lisp, Go, Groovy, Objective-C, OG PHP.
- Smalltalk pioner i utviklingen av objektdatabaser. Selv om de ikke gjorde det til det vanlige, har objektdatabaser sine nisjemarkeder. Det beste eksempelet på et objektdatabaseprodukt er GemStone / S, som er godt egnet til skalerbare, høyytelses, multitier distribuerte systemer.
- Smalltalk ga oss den første refactoring nettleseren. Selvfølgelig kan refactoring støtte finnes i de fleste Ideer i dag.
- Smalltalk var medvirkende til å utvikle det grafiske brukergrensesnittet (ELLER GUI) og brukergrensesnittet «what you see is what you get» (WYSIWYG).
men hvordan kan læring Smalltalk gjøre meg til en bedre utvikler?
Smalltalk har flere killer funksjoner som var langt foran sin tid:
- Bildebasert utholdenhet
- Objekter: Alt er et objekt, og objekter kommuniserer bare gjennom meldinger (den «reneste» OO, og en av de tidligste)
- «Live» programmering
- Avanserte feilsøkingsteknikker som kodeendringer på flyet
- et enkelt, ryddig IDE-grensesnitt
- domenespesifikke språk (dsl): Den eneste Måten Smalltalk fungerer, så programmerere må fokusere på problemdomenet ved hjelp av et språk og notasjon som er naturlig for det domenet
og Det er noen andre funksjoner som gjør Smalltalk spesiell også.
I hovedsak Er Smalltalks viktigste fordel som et produktivt språk og læringsverktøy at Det fjerner det meste, om ikke alt, av det kognitive stresset i vanlige OO-språk som Java. Smalltalk presenterer ingen syntaktisk rot eller distraherende funksjoner. Det blir bare ut av veien, slik at du kan fokusere all oppmerksomhet på problemet eller applikasjonen ved hånden. Det er ikke At Java er et dårlig språk for å være mer komplekst (og ha 30-tegn klassenavn); det jeg sier er at å lære et uhemmet OO-språk faktisk kan gjøre deg til en bedre Java-programmerer når du forstår OO-konseptene fra et annet perspektiv.
Eliminering av kognitivt stress Er et grunnleggende mål for mange språk—For eksempel Python, Ruby, Elixir, Elm og Go. Selv om du ikke føler det, er stresset der. Det er ofte sagt at programmering I Smalltalk eller Python er ganske Som Zen; tankene dine flyter bare uten problemer med oppgaven. Dette er skjønnheten og verdien av språk enkelhet, Og Smalltalk har dette i spar.
I Smalltalk destilleres OO til sine mest grunnleggende begreper av klasser og metoder, metaklasser og refleksjon, og viktigst av alt budskap som passerer. Smalltalk, i kraft av sin objekt renhet og konsistens, vil gi deg en dypt bedre forståelse av objektorientert programmering og hvordan du bruker den til sin beste effekt.
Smalltalk enkelhet gjør det også en ideell instruksjonsspråk for å lære programmering, spesielt hvis du ikke har en teknisk bakgrunn. Enkelheten i språket og verktøyene lar deg fokusere dine energier på å lære programmeringsteknikker, ikke på språkformaliteter.
Hvordan Fungerer Smalltalk? Den bildebaserte tilnærmingen til programmering
Smalltalks hovedkrav til berømmelse er dens bildebaserte tilnærming til programvareopprettelse. Et bilde er et øyeblikksbilde av minne som inneholder alle objektene i programmet eller systemet som kjører. Det innkapsler hele utførelsen tilstand av programmet. Et bilde kan lagres på disk, og utførelsen kan senere gjenopptas nøyaktig fra der du slapp!
Smalltalks bilde kan høres litt whacky, men faktisk har det en sterk likhet med noe som er mye brukt i det i dag: systembilder I OS-virtualisering som vi finner I VMware og VirtualBox. Du må huske At Smalltalk var opprinnelig et frittstående operativsystem da Det ble opprettet På Xerox PARC på 1970-tallet.
Smalltalks bilde har også en sterk likhet med EN websides DOM (Document Object Model). Merk at en webapplikasjon i hovedsak er et system for seg selv, sekvestrert i nettleseren og nektet direkte tilgang til vertsfilsystemet og andre ressurser. Når en nettleser lukkes, kan tilstanden til det dynamiske nettstedet lagres eller bufres, og neste gang nettleseren gjenopptas, kan nettstedet gjenopprettes i nettleseren (med noen begrensninger).
Selv det lave regnearket henger tett til bildekonseptet. Den innkapsler hele utførelsesstaten. Det kan ikke få tilgang til vertens systemressurser. Den kan reddes og gjenopprettes. Og du bør vite at regneark fortsatt brukes til å utvikle sofistikerte modeller og applikasjoner med eget språk.
så bildekonseptet er ganske utbredt. Det er en fin måte å utvikle programvare på at en versjon av bildekonseptet er opprettet For JavaScript i Den Livlige Kjernen.
Alt I Smalltalk er et objekt
Ingen unntak: Alt er et objekt. Det finnes ingen primitive datatyper. Det er ingen kontrollstrukturer som utvalg og iterasjon! Alt I Smalltalk gjøres ved å sende meldinger til objekter. Dette er det som gjør Smalltalk så enkel, elegant og lett å lære. Dette er det som gjør språket så helt rent syntaktisk.
følgende kodebit utvider For Eksempel Tallklassen til å støtte en ikke-rekursiv faktoriell operasjon:
Number extend
ifFalse: .
^ (c fold: ) ]]].
7 factorial printNl.
7 my_factorial printNl. "should be the same result as the previous line"
her er ifTrue: en nøkkelordmelding sendt Til Det Boolske objektet som kommer fra evaluering av uttrykket (selv < 2). Argumentet til søkeordmeldingen er en kodeblokk (avgrenset av firkantede parenteser). Faktisk, ifTrue: er den første delen av en todelt søkeordmelding, den andre delen er ifFalse:.
unary-meldingen ny sendes Til Klassen OrderedCollection for å opprette en ny samling. PrintNl-meldingen sendes til resultatet (som er et objekt) for å sende my_factorial-meldingen til nummer 7. Hele greia leser nesten som naturlig språk!
Beregningsrefleksjon I Smalltalk
Refleksjon i Smalltalk er spesielt verdifullt som et middel for et program for å inspisere sin egen struktur og beregning under kjøring. Dette gir enorm makt, slik at programmer kan utvide seg med nye klasser og metoder eller spørre «hvem sendte denne meldingen til meg?»
Beregningsrefleksjon brukes til å implementere en effektiv måte å håndtere feil på. Når et objekt sendes en melding det ikke implementerer, mottar den en doesnotunderstand: – melding, sammen med en bekreftelse av den opprinnelige meldingen. Det er mange ting som programmet kan gjøre med doesnotunderstand: melding, inkludert utvide seg med ny funksjonalitet!
bildekonseptet og refleksjonen tillater Også Smalltalk å eliminere applikasjons – / IDE-grensen. Alt du trenger for å utvikle, feilsøke, og kjøre programmet er i bildet. Det er ikke nødvendig å forlate applikasjonsmiljøet ditt. Det er en helt helhetlig tilnærming til programvareutvikling som gjør alt Mer Zen-aktig og produktivt.
Smalltalks renessanse
de siste 15 årene med utvikling i Smalltalks verden har gjort språket mye mer tiltalende.
Smalltalk er nå tilgjengelig for front-end web programmering ved Hjelp Av Amber Smalltalk, som transporterer Til JavaScript. Amber utvikling foregår helt i nettleseren. En av de fantastiske tingene Med Amber er at når du importerer Et JavaScript-bibliotek, kan objektene behandles akkurat som Smalltalk-objekter.
I 2002 ble Seaside web framework utgitt, og ble det mest populære verktøyet for webutvikling i Smalltalk. Dens fortsettelsesbaserte tilnærming ga en konvensjonell» call/return » – mekanisme for webapplikasjonen din. Det kan bidra til å løse problemer som dobbel forespørsel og tilbake-knappen problemer. Ganske revolusjonerende for sin tid, og fortsatt ikke vanlig vedtatt i andre webrammer.
Pharo prosjektet startet i 2008 for å fokusere på moderne software engineering og utvikling teknikker. Det har brakt Smalltalk mye lenger sammen enn den forrige åpen kildekode kalt Squeak, som var basert på den ærverdige Smalltalk – 80 dialekt. Pharo-prosjektet har også skapt forskning på en ny TYPE IDE kalt Glamorous Toolkit. Det er basert på ideen om at programmeringsmiljøet ditt skal være «formbart» for å passe dine behov.
I fjor ble Den høyt ansette Dolphin Smalltalk åpen kildekode, og tilbyr et annet flott alternativ for fans Av Smalltalk. Dolphin Smalltalk har ofte blitt rost for å ha en av de fineste implementeringer Av Smalltalk IDE.
Smalltalk-arven: Gjør programmering moro
når du bruker de mange fasilitetene til moderne programvareutvikling som JVM, Eclipse IDE, closures, «live coding», MVC, TDD, VMware, og til og med den vanlige gamle webappen, tenk tilbake til deres opprinnelse I Smalltalk og hold større respekt for hva du gjør. Ha større forståelse for språkene du bruker, enten De er Objective-C, Python, Ruby, Groovy, Scala, Dart eller Swift.
Arbeide med språket som oppsto alle disse flotte funksjoner og teknologier gir en unik mulighet til å forbedre din kunnskap, din mentale skarphet, og produktiviteten som en programvareutvikler. Ordet «moro» går ikke alltid inn i diskusjoner om software engineering, men Jeg tror At Smalltalk—og DETS oo—brødre-gir den lave kognitive barrieren og enkel programmering som kan gjøre software engineering moro.