#MakeSmalltalkGreatAgain

Smalltalk vs Scheme, JavaScript og Java

Smalltalk er magnað tungumál. Það er hið fullkomna kennslumál til að kenna bæði börnum og fullorðnum forritun. Það er mjög auðvelt að læra og afar fjölhæfur, frekar eins og JavaScript en án alls rusls sem JavaScript leggur á gagnslausa forritara. Smalltalk kemur vel saman við Java þegar kemur að því að skrifa traustan, stóran hugbúnað, þrátt fyrir að vera virkur tegund.

Í þessari grein skal ég varpa ljósi á muninn á milli Smalltalk og Scheme í kennsluskyni og milli Smalltalk og JavaScript fyrir öryggi og notagildi, og milli Smalltalk og Java fyrir þungaræktar forritun í iðnaði.

Áætlun

Smalltalk var sérstaklega hannað af Alan Kay til að kenna börnum forritun. Það er líka fullkomið fyrir fullorðna. Smalltalk er mjög hreinn, einfaldur og glæsilegur. Það hefur nánast enga setningafræði!

En Smalltalk er ekki eina tungumálið sem hefur þessa eiginleika. Í mörg ár kenndi MIT forritun til nýliða með því að nota Scheme og frábæra félaga bók sína, "Uppbygging og túlkun tölvuforrita," ástúðlega þekktur sem SICP (borið fram "veik-ert"). Þeir völdu Scheme einmitt vegna einfaldleika þess svo að tungumálið komist úr vegi byrjandans. Eins og Smalltalk, hefur Scheme enga truflandi eiginleika og farangur sem flytur frá iðnaðarnotkun.

Tungumálin tvö hafa þó áhugaverðan mun. Í fyrsta lagi er setningafræði kerfisins þjakað af endalausum sviga sem geta skyggt á læsileika. Hörð hagnýt forskeyti merkingar kerfisins geta verið vandræðaleg (einkum fyrir tölur, tengsl og rökrétt stjórnendur). Til dæmis,

;;; gera-fylki býr til fylki (vektor af vigrum).
(skilgreina gerð fylkis
  (lambda (raðir dálkar)
    (gera ((m (gera-vektor línur))
         (i 0 (+ i 1)))
        ((= ég raðir) m)
        (vektor-set! m i (gera-vector dálka)))))

Smalltalk les aftur á móti næstum því eins og náttúrulegt tungumál, þökk sé notkun þess á skilaboðunum um unary, tvöfaldur og lykilorð: lestu greinina mín um Smalltalk sem ber yfirskriftina „Hvernig að læra Smalltalk getur gert þig að betri verktaki.“

Annar stór munur er að kerfið er mjög hagnýtur að eðlisfari en Smalltalk er eingöngu stéttbundið hlutbundið. Þó að hægt sé að herma eftir flokkum og hlutbundinni forritun (OOP) í Scheme, þá er það ekki alveg þægilegt passa, alveg eins og hægt er að herma eftir hagnýtum forritun í Smalltalk en á frekar óreglulegan hátt.

Það er góð ástæða fyrir því að Smalltalk er almennt litið á fyrsta tungumál OOP, tungumál sem næstum öll önnur tungumál reyna að líkja eftir (Java, Python, JavaScript, C #, C ++, PHP, Ruby, Objective-C, Perl, Scala, Groovy, Dart , CLOS, Swift osfrv.). Þegar kemur að OOP væri það synd að þekkja ekki Smalltalk.

Smalltalk er líka mjög hagnýtt tungumál. Það hefur verið notað í atvinnuskyni í meira en þrjá áratugi og gengur enn sterkt. Áætlun er aftur á móti varla notuð neins staðar. Stóri bróðir þess, Common Lisp, hefur gaman af einhverju viðskiptalegu forriti, en aðeins Clojure („Lispy“ tungumál) er hægt að líta á sem sterkt forritunarmál fyrirtækja.

JavaScript

Höfundur JavaScript fullyrðir að það hafi verið beint innblásið af Scheme. Evangelist Douglas Crockford kallar JavaScript „Lisp í C's fatnaði.“ En sannleikurinn er sá að JavaScript líkist ekki Lisp né Scheme á nokkurn hátt merkilegan hátt:

  • C-eins setningafræði JavaScript rænir tungumálinu hreinu, glæsilegu merki Scheme.
  • Miðgagnasamsetning Lisp er listinn. JavaScript er ekki með listagagnategund. Miðgagnasamsetning JavaScript er tengd fylking, sem oft masquerades eins og einhver önnur gagnategund.
  • Lisp er einsleitur, þ.e.a.s. kóðinn og gögnin eru með sömu aðalatriðum. JavaScript er ekki. Ekki einu sinni svolítið.
  • Einsleitni Lisp gerir ráð fyrir öflugu þjóðhagskerfi. JavaScript er ekki með fjölva.
  • Lambdas gera ekki JavaScript Lisp-líkar, frekar en C ++, Java, Python, Haskell og Smalltalk eru Lisp-líkar.

JavaScript var einnig beint innblásið af Sjálfinu, tungumáli sem byggist á frumgerð hlutar. Þetta er mjög óvenjuleg leið til að takast á við OOP. Talsmenn JavaScript lýsa frumgerðum sem öflugri og dásamlegri leið til að forrita. Samt sem áður eru frumgerðir mótmæla svo dásamlegar að ekkert annað forritunarmál á nótum síðastliðin 30 ár hefur tileinkað sér þær, nema Lua. Allir aðrir vilja hlutaflokka.

Eins og ég benti til áðan, er Smalltalk fyrsta hlutbundið tungumál. Jafnvel með samstilltan sykur ECMAScript 2015 fyrir námskeið, heldur JavaScript ekki kerti við Smalltalk fyrir hlutbundna forritun.

JavaScript er gríðarlega vinsælt til þróunar á vefnum, en ekki af þeim ástæðum sem þú heldur. JavaScript er eina tungumálið sem er stutt í vafranum, svo vefur verktaki hefur ekki val en að nota það. Á grundvelli tæknilegs verðmætis er næstum því hvaða forritunarmál sem er. Sem betur fer er lausn: þú getur notað tungumál sem flytjast yfir á JavaScript. Amber Smalltalk er eitt besta dæmið um þetta.

Jafnvel á þjóninn hlið þar sem Node.js hefur gengið vel, það eru betri kostir eins og Go. Ég skrifaði um þetta í Fall of the House of Node. Af hverju að beita þér JavaScript? (Tilviljun, JavaScript er að finna leið sína inn á önnur svið upplýsingatækni, svo sem skjáborði, farsíma, Internet of Things og leiki, en það er ekki sérstaklega vinsælt.)

JavaScript er vel þekkt fyrir langan lista yfir „vörtur“ og því mun ég ekki trúa punktinum hér. Ég skal bara gefa þér smá sýnishorn af vitleysunni sem þú þarft að setja upp í þessari StackOverflow spurningu. Aftur á móti er í Smalltalk mjög fáum deilum og rugli, miklu færri en nokkur önnur tungumál sem ég þekki. Það talar vel um fallega hönnun Smalltalk að eftir fjóra áratugi frá því hann var kynntur er Smalltalk jafn hreinn og hreinn og ekinn snjór.

Java

Helsti greinarmunurinn á Java og Smalltalk er að annar er tölfræðilega sleginn og hinn er virkur tegund. Annars deila tungumálin tvö með nokkrum hlutum:

  • bæði eru hlutbundin (OO) tungumál alla leið í (nema frumstæðar gerðir Java)
  • báðir taka saman til bætakóða sem keyrir í sýndarvél; hvoru tveggja er safnað sorpi
  • bæði eru afar fjölhæf, notuð á svæðum eins fjölbreytt og vefur, skrifborð, farsími, vélfærafræði, Internet of Things, töluleg tölvumál, vélinám o.fl.
  • bæði eru alveg fær um að skrifa stór og viðhalds hugbúnaðarkerfi

Síðasti punkturinn er að miklu leyti spurning um góða verkefnastjórnun, þó að tungumálin bjóði framúrskarandi stuðning við mát og skipulag kóða. Kyrrstæð innsláttur Java býður upp á ákveðna öryggismál en er að öðru leyti ekki ástæða til að stjórna stórum kóðagrunni. Sum stór Java verkefni hafa reynst hörmuleg en sum stór Smalltalk verkefni hafa verið afar viðráðanleg. Málsatriði eru JWARS, milljón lína bardaga uppgerð sem samin var af bandaríska sameiginlega hernum í Smalltalk snemma á 2. áratugnum. Það fór jafnvel betur en svipuð uppgerð og kallast STORM skrifuð af bandaríska flughernum í C ++.

Reyndar er Smalltalk svo gott fyrir stór fyrirtækjakerfi að það varð næstum því staðlað forritunarmál fyrirtækisins í dag. Snemma á tíunda áratugnum valdi IBM Smalltalk sem miðpunktinn í frumkvæði VisualAge þeirra til að koma í stað COBOL. IBM hefði ekki tekið þessa ákvörðun ef Smalltalk væri ekki að vinna að stórum stíl þróun. (Því miður var þetta hlutverk að lokum notað af stigi sem kallast Java, sem var vel markaðssett af Sun Microsystems.)

Þess má geta að Java gerir OOP mun flóknara en í Smalltalk. Þetta er líka ástæðan fyrir því að Java er svo orðrétt. OO hugtök Smalltalk eru mjög hrein og einföld. Þetta gerir OOP að hreinni ánægju. Ekki svo mikið fyrir Java.

Ef þú ert Java forritari og þú ert forvitinn um Smalltalk, gæti þessi litli grunnur veitt lyst þína.