kuinka Smalltalkin oppiminen voi tehdä sinusta paremman kehittäjän

Smalltalkin oppimista pidetään yleisesti vanhana, kuolemaisillaan olevana kielenä—antiikkina menneiltä ajoilta. Mikään ei voisi olla kauempana totuudesta.

Smalltalk on edelleen hyvin relevantti. Se on erinomainen opetuskieli ohjelmoinnin opettamiseen ihmisille, joilla ei ole teknistä taustaa. Se on superlatiivi prototyyppikieli startupeille. Se on teollisen vahva yritys kieli, jota käyttävät sekä suuret että pienet yritykset ympäri maailmaa. On hyviä syitä harkita nykyaikaisen Smalltalkin käyttöä tänään, koska paljon on muuttunut viime vuosina sen näkymien parantamiseksi.

tuotannossa ei tarvitse käyttää Smalltalkia tänään, mutta kokeile koodata jotain Smalltalkissa ja katso, miltä se tuntuu. Sen pitäisi tuntua tutulta, koska Smalltalkin object-oriented (oo)-paradigman toteutus on niin erinomainen, että se on vaikuttanut kokonaisen sukupolven OO-kieliin, kuten Objective-C, Python, Ruby, CLOS, PHP 5, Perl 6, Erlang, Groovy, Scala, Dart, Swift ja niin edelleen.

oppimalla Smalltalkin ymmärrät, miten kaikki nuo hyödylliset ominaisuudet nykypäivän OO-kielissä syntyivät. Smalltalkin oppiminen voi myös antaa sinulle ison edun ohjelmointitaidoissa ikätovereidesi keskuudessa, ja se voisi olla loistava työkalu ohjelmoinnin opettamiseen aloittelijoille.

mitä Smalltalk antoi meille?

Smalltalkilla on runsaasti perintöä ohjelmistoalalle. Katsokaa tätä luetteloa ominaisuuksista ja teknologioista, jotka se esitteli:

  • Smalltalk esitteli maailmalle kielellisen virtuaalikoneen (tai VM), jonka avulla ohjelmistot voivat olla alustariippumattomia. Tämä on sama tekniikka, joka tukee Java (JVM) ja.NET, sekä Android (Dalvik).
  • Smalltalk kehitti myös JIT (just-in-time) – koontitekniikan, joka parantaa merkittävästi bytecode-ohjelmistojen, kuten Javan, suorituskykyä.
  • Smalltalkista tuli ensimmäinen moderni IDE (integrated development environment), johon kuului tekstieditori, järjestelmä-tai luokkaselain, objekti-tai omaisuustarkastaja ja debuggeri. Tämä johti monet IDEs että kehittäjät suosivat tänään, kuten Visual Studio, Xcode, ja IntelliJ IDEA. Henkilökohtaisesti olen sitä mieltä, että mikään näistä IDE voi verrata Smalltalk IDE yksinkertaisuus, tyylikkyys, ja nopeus kehityksen; alkuperäinen on edelleen paras!
  • Smalltalkissa oli alusta asti sulkuja, jotka ovat leksikaalisesti scopattuja ensimmäisen luokan funktioita. Pohjimmiltaan sulkeminen on takaisinkutsufunktio, joka voi nähdä ei-lokaaliset muuttujat paikassa, jossa ne on määritelty. Tämä voi auttaa sinua kirjoittamaan paljon kompakti ja luettava koodi. Sulkeumat ovat löytämässä tiensä monille pääkielille, kuten Javalle, C#: lle ja PHP: lle.
  • Smalltalk oli ensimmäinen kielityökalu, joka tuki ”live”-ohjelmointia ja kehittyneitä virheenkorjaustekniikoita, kuten lennossa tapahtuvaa tarkastusta ja koodin muutoksia suorituksen aikana. Nykyään live-debuggaus on mahdollista C#: ssa Visual Studion ”Edit and Continue” – ohjelmalla ja Javassa Hotswapilla.
  • Smalltalk esitteli maailmalle MVC: n (Model-View-Controller). MVC on ohjelmistoarkkitehtuuri käyttöliittymien toteuttamiseen. Se on suosittu työpöydän GUI sovelluksia ja web-sovelluksia. Nykyään, se on arkkitehtuuri, että useimmat web kehittäjät oppivat ensin.
  • Smalltalk on suurelta osin vastuussa testivetoisen kehityksen (tai TDD) ja extreme-ohjelmoinnin (tai XP) antamisesta meille, jotka molemmat ovat hyvin vaikutusvaltaisia nykypäivän standardeissa ketterissä käytännöissä.
  • Smalltalk teki ”ankkakirjoittamisesta” taloussanan (No, jos talossasi on ohjelmoija siinä). Duck-tyypitys on paikka, jossa ”tyyppitarkastus” lykätään runtime—kun heijastusominaisuuksia käytetään oikean käyttäytymisen varmistamiseksi. Sorsakirjoitusta on nykyään monilla kielillä, kuten Java, Python, Common Lisp, Go, Groovy, Objective-C ja PHP.
  • Smalltalk oli edelläkävijä oliotietokantojen kehittämisessä. Vaikka he eivät päässeet valtavirtaan, object-tietokannoilla on markkinarako. Paras esimerkki objektitietokantatuotteesta on GemStone / s, joka soveltuu hyvin skaalautuviin, suorituskykyisiin, monikäyttöisiin hajautettuihin järjestelmiin.
  • Smalltalk antoi meille ensimmäisen refactoring-selaimen. Tietenkin, refactoring tukea löytyy useimmissa IDE tänään.
  • Smalltalk oli keskeisessä asemassa graafisen käyttöliittymän (tai GUI) ja ”what you see is what you get” (WYSIWYG) – käyttöliittymän kehittämisessä.

mutta miten Smalltalkin oppiminen voi tehdä minusta paremman kehittäjän?

Smalltalkissa on useita tappajamaisia piirteitä, jotka olivat paljon aikaansa edellä:

  • Image-based persistence
  • Objects: Everything is an object, and objects communicate only through messages (the ”puhtain” OO, ja yksi varhaisimmista)
  • ”Live” programming
  • Advanced debugging techniques such as On-The-fly code changes
  • a simple, uncluttered IDE interface
  • verkkoaluekohtaiset kielet: Ainoa tapa Smalltalk toimii, joten ohjelmoijien on keskityttävä problem domainiin käyttämällä kieltä ja notaatiota, joka on luonnollinen kyseiselle domainille

ja on olemassa muutamia muita ominaisuuksia, jotka tekevät Smalltalkista erityisen myös.

Smalltalkin keskeinen etu tuottavana kielenä ja oppimisvälineenä on se, että se poistaa valtavirran OO-kielissä, kuten Javassa, suurimman osan ellei jopa kaiken kognitiivisen stressin. Smalltalk ei sisällä syntaktisia sotkuja tai häiritseviä ominaisuuksia. Se yksinkertaisesti saa pois tieltä niin, että voit keskittyä kaikki huomio ongelma tai sovellus käsillä. Se ei ole, että Java on huono kieli olla monimutkaisempi (ja ottaa 30-merkin luokan nimet); mitä sanon on, että oppiminen esteetön oo kieli voi todella tehdä sinusta paremman Java-ohjelmoija kun ymmärrät sen oo käsitteitä toisesta näkökulmasta.

kognitiivisen stressin poistaminen on monien kielten—esimerkiksi Pythonin, Rubyn, eliksiirin, Jalavan ja Go: n-perustavoite. Vaikka et tuntisi sitä, stressi on siellä. Usein sanotaan, että ohjelmointi Smalltalkissa tai Pythonissa on kuin Zen; mielesi vain virtaa vaivattomasti tehtävän mukana. Tämä on kielen yksinkertaisuuden kauneus ja arvo, ja Smalltalk on tämä padassa.

Smalltalkissa oo: ta tislataan sen peruskäsitteisiin luokkiin ja menetelmiin, metaklassikoihin ja pohdintaan sekä ennen kaikkea viestin välittämiseen. Smalltalk antaa oliopuhtautensa ja johdonmukaisuutensa ansiosta sinulle syvällisemmän ymmärryksen oliopohjaisesta ohjelmoinnista ja siitä, miten voit käyttää sitä parhaalla mahdollisella tavalla.

Smalltalkin yksinkertaisuus tekee siitä myös ihanteellisen opetuskielen ohjelmoinnin oppimiseen, varsinkin jos sinulla ei ole teknistä taustaa. Kielen ja työkalujen yksinkertaisuuden ansiosta voit keskittää energiasi ohjelmointitekniikoiden oppimiseen, ei kielimuodollisuuksiin.

miten Smalltalk vaikuttaa? Kuvapohjainen lähestymistapa ohjelmointiin

Smalltalkin tärkein väite kuuluisuuteen on sen kuvapohjainen lähestymistapa ohjelmistojen luomiseen. Kuva on muistikuva, joka sisältää kaikki käynnissä olevan sovelluksen tai järjestelmän objektit. Se kiteyttää ohjelmasi koko suoritustilan. Kuva voidaan tallentaa levylle,ja suoritusta voidaan myöhemmin jatkaa täsmälleen siitä, mihin jäit!

Smalltalkin kuva saattaa kuulostaa hieman sekopäiseltä, mutta itse asiassa se muistuttaa vahvasti jotain, jota siinä nykyään käytetään laajalti: järjestelmäkuvia käyttöjärjestelmien virtualisoinnissa, kuten VMwaresta ja Virtualboxista löytyy. Täytyy muistaa, että Smalltalk oli alun perin itsenäinen käyttöjärjestelmä, kun se luotiin Xerox PARC: llä 1970-luvulla.

Smalltalkin kuva muistuttaa vahvasti verkkosivun Domia (Document Object Model). Huomaa, että web-sovellus on pohjimmiltaan järjestelmä itselleen, eristetään verkkoselaimessa ja evätään suora pääsy isännän tiedostojärjestelmään ja muihin resursseihin. Kun verkkoselain sulkeutuu, dynaamisen verkkosivuston tila voidaan tallentaa tai tallentaa välimuistiin, ja seuraavan kerran kun selain jatkaa, sivusto voidaan palauttaa selaimessa (tietyin rajoituksin).

vähäinenkin taulukkolaskenta hiertää tiiviisti kuvan konseptia. Se kiteyttää koko suoritustilan. Se ei voi käyttää isännän järjestelmän resursseja. Se voidaan pelastaa ja palauttaa. Ja sinun pitäisi tietää, että laskentataulukoita käytetään edelleen kehittää kehittyneitä malleja ja sovelluksia omalla kielellä.

joten kuvakäsitys on varsin vallalla. Se on niin mukava tapa kehittää ohjelmistoa, että Kuvakonseptista on luotu versio JavaScriptille Lively Kerneliin.

kaikki smalltalkissa on objekti

ei poikkeuksia: kaikki on objekti. Alkeellisia tietotyyppejä ei ole. Ei ole olemassa ohjausrakenteita, kuten valinta ja iterointi! Smalltalkissa kaikki tapahtuu lähettämällä viestejä esineille. Tämä tekee Smalltalkista niin yksinkertaisen, tyylikkään ja helpon oppia. Tämä tekee kielestä niin täydellisen puhtaan syntaktisesti.

esimerkiksi seuraava koodinpätkä laajentaa Lukuluokkaa tukemaan ei-rekursiivista faktorioperaatiota:

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

7 factorial printNl.

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

tässä ifTrue: on Boolen objektille lähetetty avainsanaviesti, joka on tulosta lausekkeen arvioinnista (self < 2). Avainsanaviestin argumentti on koodilohko (rajattu hakasulkeilla). Itse asiassa ifTrue: on kaksiosaisen avainsanaviestin ensimmäinen osa, toinen osa on ifFalse:.

uusi viesti lähetetään järjestetylle Keräysluokalle uuden kokoelman luomiseksi. PrintNl-viesti lähetetään my_factorial-viestin lähettämisen tulokseen (joka on objekti) numeroon 7. Koko juttu kuulostaa melkein luonnolliselta kieleltä!

laskennallinen heijastus Smalltalkissa

heijastus Smalltalkissa on erityisen arvokas väline ohjelmalle tutkia omaa rakennettaan ja laskentaa suorituksen aikana. Tämä antaa valtavan voiman, jolloin ohjelmat voivat laajentaa itseään uusilla luokilla ja menetelmillä tai kysyä ”kuka lähetti tämän viestin minulle?”

laskennallista pohdintaa käytetään tehokkaaseen tapaan käsitellä virheitä. Kun objektille lähetetään viesti, jota se ei toteuta, se saa doesnot understand: message-viestin sekä alkuperäisen viestin uudelleenmuotoilun. On monia asioita, joita ohjelma voi tehdä doesnot understand: viesti, mukaan lukien laajentaa itseään uusilla toiminnoilla!

kuvakonseptin ja heijastuksen avulla Smalltalk voi myös poistaa sovelluksen/IDE: n rajan. Kaikki mitä tarvitset sovelluksen kehittämiseen, debugiin ja suorittamiseen on kuvassa. Sinun ei tarvitse koskaan poistua sovellusympäristöstäsi. Se on täysin kokonaisvaltainen lähestymistapa ohjelmistokehitykseen, joka tekee kaikesta Zen-kaltaisempaa ja tuottavampaa.

Smalltalkin renessanssi

Smalltalkin viimeisen 15 vuoden kehitys on tehnyt kielestä paljon houkuttelevamman.

Smalltalk on nyt saatavilla front-end web-ohjelmointiin käyttäen Amber Smalltalkia, joka transpiloi JavaScriptille. Meripihkan kehitys tapahtuu kokonaan selaimessa. Yksi hämmästyttävä asioita Amber on, että kun tuo JavaScript kirjasto, Sen esineitä voidaan käsitellä aivan kuten Smalltalk esineitä.

vuonna 2002 julkaistiin Seaside web framework, josta tuli Smalltalkin suosituin web-kehityksen työkalu. Sen jatkopohjainen lähestymistapa tarjosi perinteisen ”call/return” – mekanismin web-sovelluksellesi. Se voi auttaa ratkaisemaan ongelmia, kuten kaksinkertainen pyyntö ja takaisin painiketta ongelmia. Varsin vallankumouksellinen aikansa, ja vielä ei yleisesti hyväksytty muissa web kehyksiä.

Pharo-projekti alkoi vuonna 2008 keskittyen moderniin ohjelmistotekniikkaan ja kehitystekniikoihin. Se on vienyt Smalltalkin paljon pidemmälle kuin edellinen avoimen lähdekoodin projekti nimeltään Squeak, joka perustui kunnioitettavaan Smalltalk-80-murteeseen. Pharon projekti on poikinut myös tutkimusta uudenlaisesta IDE: stä nimeltä Glamorous Toolkit. Se perustuu ajatukseen, että ohjelmointiympäristön tulisi olla” muovattavissa ” tarpeisiisi sopivaksi.

viime vuonna arvostettu Dolphin Smalltalk muuttui avoimeksi lähdekoodiksi, joka tarjoaa Smalltalkin faneille jälleen mainion vaihtoehdon. Dolphin Smalltalk on usein ylistetty ottaa yksi hienoimmista toteutuksia Smalltalk IDE.

The Smalltalk legacy: Making programming fun

kun käytät monia nykyaikaisen ohjelmistokehityksen tiloja, kuten JVM, Eclipse IDE, closures, ”live coding”, MVC, TDD, VMware ja jopa tavallinen vanha web-sovellus, muistele niiden alkuperää Smalltalkissa ja kunnioita enemmän sitä, mitä olet tekemässä. Arvostat enemmän käyttämiäsi kieliä, olivatpa ne Objective-C, Python, Ruby, Groovy, Scala, Dart tai Swift.

työskentely kielen kanssa, josta kaikki nämä hienot ominaisuudet ja teknologiat ovat peräisin, tarjoaa ainutlaatuisen mahdollisuuden parantaa huomattavasti tietoasi, henkistä terävyyttäsi ja tuottavuuttasi ohjelmistokehittäjänä. Sana ”hauska” ei aina tule keskusteluihin ohjelmistotekniikasta, mutta mielestäni Smalltalk—ja sen oo—veljet-tarjoavat matalan kognitiivisen esteen ja ohjelmoinnin helppouden, joka voi tehdä ohjelmistotekniikasta hauskaa.



+