hvordan læring Smalltalk kan gøre dig til en bedre udvikler

Smalltalk opfattes bredt som et gammelt, døende sprog—en antik fra en svunden æra. Intet kunne være længere væk fra sandheden.

Smalltalk er stadig meget relevant. Det er et fremragende undervisningssprog til undervisning i programmering til folk, der ikke har nogen teknisk baggrund. Det er et superlativt prototypesprog for startups. Det er et industrielt styrke virksomhedssprog, der bruges af virksomheder både store og små over hele kloden. Der er gode grunde til at overveje at bruge moderne Smalltalk i dag, da meget har ændret sig i de senere år for at forbedre udsigterne.

du behøver ikke bruge Smalltalk i produktionen i dag, men prøv at kode noget i Smalltalk og se, hvordan det føles. Det skal føles velkendt, fordi Smalltalks implementering af det objektorienterede (OO) paradigme er så fremragende, at det har påvirket en hel generation af OO-sprog, såsom Objective-C, Python, Ruby, CLOS, PHP 5, Perl 6, Erlang, Groovy, Scala, Dart, hurtig og så videre.

ved at lære Smalltalk, vil du forstå, hvordan alle disse nyttige funktioner i dagens oo sprog kom til at være. At lære Smalltalk kan også give dig en stor fordel i programmeringsevner blandt dine jævnaldrende, og det kan være et godt værktøj til at undervise programmering til begyndere.

hvad gav Smalltalk os?

Smalltalk har en rig arv af bidrag til programmelindustrien. Bare se på denne liste over funktioner og teknologier, den introducerede:

  • Smalltalk introducerede verden til sprog virtuel maskine (eller VM), som gør det muligt for programmer at være platformuafhængige. Dette er den samme teknologi, der understøtter Java (JVM) og.net, såvel som Android (Dalvik).
  • Smalltalk var også banebrydende for JIT (just-in-time) – kompilering, en teknik til dramatisk forbedring af ydeevnen for bytecode-programmer som Java.
  • fra Smalltalk kom den første moderne IDE (integrated development environment), som omfattede en teksteditor, et system eller en klassesøger, en objekt-eller ejendomsinspektør og en debugger. Dette førte til de mange ide ‘ er, som udviklere favoriserer i dag, som f.eks. Personligt tror jeg, at ingen af disse ide ‘er kan sammenlignes med Smalltalk’ s IDE i enkelhed, elegance og udviklingshastighed; originalen er stadig den bedste!
  • fra begyndelsen havde Smalltalk lukninger, som er leksikalt scoped førsteklasses funktioner. I det væsentlige er en lukning en tilbagekaldsfunktion, der kan se ikke-lokale variabler på det sted, hvor de blev defineret. Dette kan hjælpe dig med at skrive meget mere kompakt og læsbar kode. Lukninger finder vej til mange større sprog, såsom Java, C# og PHP.
  • Smalltalk var det første sprog værktøj til at understøtte “live” programmering og avancerede debugging teknikker såsom on-the-fly inspektion og kode ændringer under udførelse. I dag er live debugging mulig i C# med Visual Studio ‘s” Rediger og fortsæt ” og i Java med Hotvap.
  • Smalltalk introducerede MVC (Model-Vis-Controller) til verden. MVC er et arkitektonisk mønster til implementering af brugergrænseflader. Det er populært med desktop GUI applikationer og internet applikationer. I disse dage er det den arkitektur, som de fleste internetudviklere lærer først.
  • Smalltalk er i vid udstrækning ansvarlig for at give os testdrevet udvikling (eller TDD) og ekstrem programmering (eller ekstrem programmering), som begge er meget indflydelsesrige i nutidens standard agile praksis.
  • Smalltalk lavede “duck typing” et husholdningsord (godt, hvis dit hus har en programmør i det). Duck typing er hvor “type kontrol” udsættes indtil runtime—når refleksion kapaciteter bruges til at sikre korrekt adfærd. Vi finder ændertypning på mange sprog i dag, herunder Java, Python, Common Lisp, Go, Groovy, Objective-C og PHP.
  • Smalltalk var banebrydende for udviklingen af objektdatabaser. Selvom de ikke kom ind i mainstream, har objektdatabaser deres nichemarkeder. Det bedste eksempel på et objektdatabaseprodukt er GemStone/s, som er velegnet til skalerbare, højtydende, multitier-distribuerede systemer.
  • Smalltalk gav os den første refactoring bro.ser. Selvfølgelig kan refactoring support findes i de fleste IDE ‘ er i dag.
  • Smalltalk var medvirkende til at udvikle den grafiske brugergrænseflade (eller GUI) og brugergrænsefladen “hvad du ser er hvad du får”.

men hvordan kan læring Smalltalk gøre mig til en bedre udvikler?

Smalltalk har flere morderfunktioner, der var langt forud for deres tid:

  • billedbaseret persistens
  • objekter: alt er et objekt, og objekter kommunikerer kun gennem meddelelser (den “reneste” OO og en af de tidligste)
  • “Live” programmering
  • avancerede fejlfindingsteknikker som on-the-fly-kodeændringer
  • en enkel, ryddelig IDE-grænseflade
  • domænespecifikke sprog (DSL ‘ er): Den eneste måde Smalltalk fungerer på, så programmører er nødt til at fokusere på problemdomænet ved hjælp af et sprog og notation, der er naturligt for det domæne

og der er et par andre funktioner, der også gør Smalltalk speciel.

i det væsentlige er Smalltalks vigtigste fordel som et produktivt sprog og læringsværktøj, at det fjerner de fleste, hvis ikke alle, af den kognitive stress i almindelige oo-sprog som Java. Smalltalk præsenterer ingen syntaktisk rod eller distraherende funktioner. Det kommer simpelthen ud af din måde, så du kan fokusere al din opmærksomhed på problemet eller applikationen ved hånden. Det er ikke, at Java er et dårligt sprog for at være mere komplekst (og have 30-tegn klassenavne); hvad jeg siger er, at at lære et ubesværet oo-sprog faktisk kan gøre dig til en bedre Java-programmør, når du forstår sine oo-koncepter fra et andet perspektiv.

eliminering af kognitiv stress er et grundlæggende mål for mange sprog—for eksempel Python, Rubin, eliksir, Elm og Go. Selvom du ikke føler det, er stresset der. Det siges ofte, at programmering i Smalltalk eller Python er lidt som en; dit sind flyder bare ubesværet med opgaven. Dette er skønheden og værdien af sprogets enkelhed, og Smalltalk har dette i Spar.

i Smalltalk destilleres Oo til sine mest grundlæggende begreber om klasser og metoder, metaklasser og refleksion og vigtigst af alt besked passerer. Smalltalk, i kraft af dens objekt renhed og konsistens, vil give dig en dybt bedre forståelse af objektorienteret programmering og hvordan man bruger det til sin bedste effekt.

Smalltalks enkelhed gør det også til et ideelt instruktionssprog til at lære programmering, især hvis du ikke har en teknisk baggrund. Sprogets og værktøjernes enkelhed giver dig mulighed for at fokusere dine energier på at lære programmeringsteknikker, ikke på sprogformaliteter.

Hvordan virker Smalltalk? Den billedbaserede tilgang til programmering

Smalltalks vigtigste krav til berømmelse er dens billedbaserede tilgang til oprettelse af programmer. Et billede er et øjebliksbillede af hukommelse, der indeholder alle objekterne i dit kørende program eller system. Det indkapsler hele udførelsen tilstand af dit program. Et billede kan gemmes på disken, og udførelse kan senere genoptages præcis fra hvor du slap!

Smalltalk ‘ s billede lyder måske lidt skævt, men det ligner faktisk en stærk lighed med noget, der er meget brugt i det i dag: systembilleder i os virtualisering som vi finder i VM og Virtualboks. Du skal huske, at Smalltalk oprindeligt var et selvstændigt operativsystem, da det blev oprettet på PARC i 1970 ‘ erne.

Smalltalk ‘ s billede ligner også en hjemmesides DOM (Document Object Model). Bemærk, at en internetapplikation i det væsentlige er et system i sig selv, sekvestreret i internetsøgeren og nægtet direkte adgang til værtens filsystem og andre ressourcer. Når en hjemmeside lukkes, kan den dynamiske hjemmesides tilstand gemmes eller cachelagres, og næste gang hjemmesiden genoptages, kan hjemmesiden gendannes (med visse begrænsninger).

selv det ydmyge regneark hugger tæt på billedkonceptet. Det indkapsler hele henrettelsestilstanden. Det kan ikke få adgang til værtens systemressourcer. Det kan reddes og genoprettes. Og du skal vide, at regneark stadig bruges til at udvikle sofistikerede modeller og applikationer med sit eget sprog.

så billedkonceptet er ret udbredt. Det er sådan en god måde at udvikle programmer på, at der er oprettet en version af billedkonceptet til JavaScript i den livlige kerne.

alt i Smalltalk er et objekt

ingen undtagelser: alt er et objekt. Der er ingen primitive datatyper. Der er ingen kontrolstrukturer som udvælgelse og iteration! Alt i Smalltalk gøres ved at sende beskeder til objekter. Det er det, der gør Smalltalk så enkel, elegant og let at lære. Det er det, der gør sproget så fuldstændig rent syntaktisk.

for eksempel udvider følgende kodestykke Nummerklassen til at understøtte en ikke-rekursiv faktoriel operation:

Number extend
ifFalse: .
^ (c fold: ) ]]].

7 factorial printNl.

7 my_factorial printNl. "should be the same result as the previous line"

her ifTrue: er en søgeordsmeddelelse sendt til det boolske objekt, der er resultatet af evaluering af udtrykket (self < 2). Argumentet til søgeordsmeddelelsen er en kodeblok (afgrænset af firkantede parenteser). Rent faktisk, ifTrue: er den første del af en todelt søgeordsmeddelelse, den anden del er ifFalse:.

den unære meddelelse Ny sendes til klassen OrderedCollection for at oprette en ny samling. PrintNl-meddelelsen sendes til resultatet (som er et objekt) for at sende my_factorial-meddelelsen til nummer 7. Det hele lyder næsten som naturligt sprog!

Computational reflection in Smalltalk

refleksion i Smalltalk er særligt værdifuldt som et middel til et program til at inspicere sin egen struktur og beregning ved runtime. Dette giver enorm magt, så programmer kan udvide sig med nye klasser og metoder eller spørge “hvem sendte denne besked til mig?”

Computational reflection bruges til at implementere en effektiv måde at håndtere fejl på. Når et objekt sendes en meddelelse, som det ikke implementerer, modtager det en doesnotforstå: besked sammen med en genificering af den oprindelige meddelelse. Der er mange ting, som programmet kan gøre med doesnotforstå: besked, herunder at udvide sig med ny funktionalitet!

billedkonceptet og refleksionen tillader også Smalltalk at eliminere applikation/IDE-grænsen. Alt hvad du behøver for at udvikle, debug og køre din applikation er i billedet. Der er ingen grund til nogensinde at forlade dit ansøgningsmiljø. Det er en helhedsorienteret tilgang til udvikling af programmer, der gør alting mere smart og produktivt.

Smalltalks renæssance

de sidste 15 års udvikling i Smalltalks verden har gjort sproget meget mere tiltalende.

Smalltalk er nu tilgængelig til front-end-programmering ved hjælp af Amber Smalltalk, som overføres til JavaScript. Amber udvikling foregår helt i bro.ser. En af de fantastiske ting ved Amber er, at når du importerer et JavaScript-bibliotek, kan dets objekter behandles ligesom Smalltalk-objekter.

i 2002 blev Seaside-rammen frigivet og blev det mest populære værktøj til internetudvikling i Smalltalk. Dens fortsættelsesbaserede tilgang gav en konventionel” call/return ” – mekanisme til din internetapplikation. Det kan hjælpe med at løse problemer såsom dobbelt anmodning og tilbage knap problemer. Ganske revolutionerende for sin tid, og stadig ikke almindeligt vedtaget i andre internetrammer.

Pharo-projektet startede i 2008 for at fokusere på moderne programmelteknik og udviklingsteknikker. Det har bragt Smalltalk meget længere sammen end det tidligere open source-projekt kaldet knirke, som var baseret på den ærværdige Smalltalk-80 dialekt. Pharo-projektet har også skabt forskning i en ny slags IDE kaldet The Glamorous Toolkit. Det er baseret på ideen om, at dit programmeringsmiljø skal være “formbart”, så det passer til dine behov.

sidste år blev den højt ansete Dolphin Smalltalk open source og tilbyder en anden vidunderlig mulighed for fans af Smalltalk. Dolphin Smalltalk er ofte blevet rost for at have en af de fineste implementeringer af Smalltalk IDE.

den lille talk arv: Gør programmering sjov

når du bruger de mange faciliteter i moderne programudvikling som JVM, Eclipse IDE, closures, “live coding”, MVC, TDD og endda den almindelige gamle internetapp, skal du tænke tilbage på deres oprindelse i Smalltalk og have større respekt for det, du laver. Få en større forståelse for de sprog, du bruger, uanset om de er objektive-C, Python, Ruby, Groovy, Scala, Dart eller hurtig.

at arbejde med det sprog, der stammer fra alle disse fantastiske funktioner og teknologier, giver en unik mulighed for i høj grad at forbedre din viden, din mentale skarphed og din produktivitet som programudvikler. Ordet “sjov” går ikke altid ind i diskussioner om programmelteknik, men jeg tror, at Smalltalk—og dets oo—brødre-giver den lave kognitive barriere og nem programmering, der kan gøre programmelteknik sjov.



+