Smalltalk je široce vnímán jako starý, umírající jazyk—starožitnost z minulé éry. Nic nemůže být dále od pravdy.
Smalltalk je stále velmi relevantní. Je to vynikající výukový jazyk pro výuku programování pro lidi, kteří nemají technické zázemí. Je to superlativní prototypovací jazyk pro startupy. Je to průmyslový podnikový jazyk používaný velkými i malými podniky po celém světě. Existují dobré důvody, proč zvážit použití moderního Smalltalk dnes, protože se v posledních letech hodně změnilo, aby se zlepšily jeho vyhlídky.
nemusíte používat Smalltalk ve výrobě dnes, ale zkuste kódování něco Smalltalk a uvidíte, jak to cítí. Mělo by to být povědomé, protože Smalltalk je implementace objektově-orientovaný (OO) paradigma je tak vynikající, že ovlivnila celou generaci OO jazycích, jako je Objective-C, Python, Ruby, CLOS, PHP 5, Perlu 6, Erlang, Groovy, Scala, Dart, Swift, a tak dále.
učením Smalltalk pochopíte, jak všechny tyto užitečné funkce v dnešních jazycích OO vznikly. Učení Smalltalk by vám také mohlo poskytnout velkou výhodu v programovacích dovednostech mezi vašimi vrstevníky a mohlo by to být skvělý nástroj pro výuku programování pro začátečníky.
co nám Smalltalk dal?
Smalltalk má bohaté dědictví příspěvků do softwarového průmyslu. Stačí se podívat na tento seznam funkcí a technologií, které představil:
- Smalltalk představil svět jazykovému virtuálnímu stroji (nebo VM), který umožňuje, aby software byl nezávislý na platformě. Jedná se o stejnou technologii, která je základem Java (JVM) a.net, stejně jako Android (Dalvik).
- Smalltalk také propagoval kompilaci jit (just-in-time), techniku pro dramatické zlepšení výkonu softwaru bytecode, jako je Java.
- od Smalltalk přišel první moderní IDE (integrated development environment), který zahrnoval textový editor, prohlížeč systému nebo třídy, Inspektor objektů nebo vlastností a debugger. To vedlo k mnoha IDE, které vývojáři dnes upřednostňují, jako je Visual Studio, Xcode a IntelliJ IDEA. Osobně si myslím, že žádný z těchto IDE nemůže srovnávat s IDE Smalltalk v jednoduchosti, eleganci a rychlosti vývoje; originál je stále nejlepší!
- od samého začátku měl Smalltalk uzávěry, které jsou lexikálně rozsahem prvotřídních funkcí. Uzávěr je v podstatě funkce zpětného volání, která může vidět nelokální proměnné v místě, kde byly definovány. To vám pomůže napsat mnohem kompaktnější a čitelnější kód. Uzávěry se nacházejí v mnoha hlavních jazycích, jako je Java, C# a PHP.
- Smalltalk byl první jazykový nástroj pro podporu“ živého “ programování a pokročilých ladicích technik, jako je kontrola za běhu a změny kódu během provádění. Dnes je živé ladění možné v C# s Visual Studio „Upravit a pokračovat“ a v Javě s HotSwap.
- Smalltalk představil světu MVC (Model-View-Controller). MVC je softwarový architektonický vzor pro implementaci uživatelských rozhraní. Je oblíbený u desktopových GUI aplikací a webových aplikací. V dnešní době je to architektura, kterou se většina webových vývojářů učí jako první.
- Do velké míry, Smalltalk je zodpovědný za to, že nám test-driven development (nebo TDD) a extrémní programování (nebo XP), které jsou obě velmi vlivný v dnešní standard agilní praktiky.
- Smalltalk udělal z „duck typing“ slovo pro domácnost (dobře, pokud má váš dům programátora). Duck typing je místo, kde je „kontrola typu“ odložena až do doby běhu-když jsou k zajištění správného chování použity odrazové schopnosti. Dnes najdeme kachní psaní v mnoha jazycích, včetně Java, Python, Common Lisp, Go, Groovy, Objective-C a PHP.
- Smalltalk propagoval vývoj objektových databází. I když se nedostali do hlavního proudu, objektové databáze mají své specializované trhy. Nejlepším příkladem produktu databáze objektů je drahokam/S, který se dobře hodí pro škálovatelné, vysoce výkonné, multitier distribuované systémy.
- Smalltalk nám dal první refaktoring prohlížeč. Samozřejmě, refaktoring podporu lze nalézt ve většině IDE dnes.
- Smalltalk byl nápomocný při vývoji grafického uživatelského rozhraní (nebo GUI) a uživatelského rozhraní“ co vidíte, je to, co dostanete “ (WYSIWYG).
ale jak může učení Smalltalk mě lepší vývojář?
Smalltalk má několik zabijáckých funkcí, které byly daleko před jejich časem:
- Image-based persistence
- Objekty: Všechno je objekt, a objekty, komunikovat pouze prostřednictvím zpráv („nejčistší“ OO, a jeden z prvních)
- „Živé“ programování
- Pokročilé ladění techniky, jako jsou on-the-fly změny kódu
- jednoduché, přehledné rozhraní IDE
- Domény specifické jazyky (DSLs): Jediný způsob, Smalltalk pracuje, takže programátoři se zaměřit na problémové doméně s použitím jazyk a notace, že je přirozené, že domény
A existuje několik dalších funkcí, které Smalltalk taky zvláštní.
V podstatě, Smalltalk je klíčovou výhodu jako produktivní jazykové a vzdělávací nástroj, je to, že proužky pryč, většina, pokud ne všechny, kognitivní stres v proudu OO jazyky jako je Java. Smalltalk nepředstavuje žádné syntaktické nepořádek nebo rušivé funkce. Jednoduše se vám dostane z cesty, abyste mohli soustředit veškerou pozornost na problém nebo aplikaci. Není to tak, že je Java špatný jazyk za to, že složitější (a s 30-znakové názvy tříd); to, co říkám, je, že učení nezatížený OO jazyk může skutečně udělat lepší Java programátor jakmile pochopíte jeho OO koncepty z jiného pohledu.
odstranění kognitivního stresu je základním cílem mnoha jazyků-například Python—Ruby, Elixir, Elm a Go. I když to necítíte, stres je tam. Často se říká, že programování v Smalltalku nebo Pythonu je spíše jako Zen; vaše mysl s úkolem plyne bez námahy. To je krása a hodnota jazykové jednoduchosti, a Smalltalk to má v piky.
v Smalltalku se oo destiluje podle svých nejzákladnějších konceptů tříd a metod, metaklasí a reflexe a hlavně předávání zpráv. Smalltalk vám díky své objektové čistotě a konzistenci poskytne mnohem lepší pochopení objektově orientovaného programování a toho, jak jej využít k nejlepšímu efektu.
Smalltalk jednoduchost také dělá to ideální instruktážní jazyk pro učení programování, zvláště pokud nemáte technické zázemí. Jednoduchost jazyka a nástrojů vám umožňuje soustředit svou energii na učení programovacích technik, nikoli na jazykové formality.
jak Smalltalk práce? Image-based přístup k programování
Smalltalk je hlavní nárok na slávu je jeho image-based přístup k tvorbě softwaru. Obrázek je snímek paměti, který obsahuje všechny objekty ve spuštěné aplikaci nebo systému. Zapouzdřuje celý stav provádění vašeho programu. Obrázek lze uložit na disk a spuštění může být později obnoveno přesně od místa, kde jste přestali!
obraz Smalltalk může znít trochu šíleně, ale ve skutečnosti se silně podobá něčemu, co se v něm dnes běžně používá: systémové obrazy ve virtualizaci OS, jako je například VMware a VirtualBox. Musíte si uvědomit, že Smalltalk byl původně samostatný operační systém, když byl vytvořen v Xerox PARC v roce 1970.
Smalltalk obrázek také nese silnou podobnost s DOM webové stránky (Document Object Model). Všimněte si, že webová aplikace je v podstatě systém sám o sobě, oddělený ve webovém prohlížeči a odepřen přímý přístup k souborovému systému hostitele a dalším zdrojům. Když webový prohlížeč zavře, stav dynamické webové stránky mohou být uloženy nebo mezipaměti, a příště prohlížeč, životopisy, webové stránky lze obnovit v prohlížeči (s určitými omezeními).
dokonce i nízká tabulka úzce souvisí s konceptem obrazu. Zapouzdřuje celý stav provádění. Nemá přístup k systémovým prostředkům hostitele. Může být uložen a obnoven. A měli byste vědět, že tabulky se stále používají k vývoji sofistikovaných modelů a aplikací s vlastním jazykem.
takže koncept obrazu je docela převládající. Je to tak pěkný způsob, jak vyvíjet software, že verze konceptu obrazu byla vytvořena pro JavaScript v živém jádru.
vše v Smalltalk je objekt
žádné výjimky: vše je objekt. Neexistují žádné primitivní datové typy. Neexistují žádné řídicí struktury, jako je výběr a iterace! Vše v Smalltalk se provádí odesíláním zpráv na objekty. Díky tomu je Smalltalk tak jednoduchý, elegantní a snadno se učí. To je to, co dělá jazyk tak naprosto čistý syntakticky.
například následující fragment kódu rozšiřuje Počet třídy na podporu non-rekurzivní faktoriál provozu:
Number extend
ifFalse: .
^ (c fold: ) ]]].
7 factorial printNl.
7 my_factorial printNl. "should be the same result as the previous line"
Tady, ifTrue: je klíčové slovo, zpráva odeslána na Logický objekt, který vyplývá z vyhodnocení výrazu (self < 2). Argument ke zprávě klíčového slova je blok kódu (vymezený hranatými závorkami). Vlastně, ifTrue: je první část dvoudílné zprávy klíčového slova, druhá část je ifFalse:.
zpráva unary new je odeslána do třídy OrderedCollection za účelem vytvoření nové kolekce. Zpráva printNl je odeslána na výsledek (což je objekt) odeslání zprávy my_factorial na číslo 7. Celá věc skoro zní jako přirozený jazyk!
Výpočetní odraz v Smalltalk
Odraz v Smalltalk je zvláště cenná jako prostředek pro program kontrolovat svou vlastní strukturu a výpočty za běhu. To dává obrovskou sílu, což umožňuje programům rozšířit se o nové třídy a metody nebo se zeptat „kdo mi poslal tuto zprávu?“
výpočetní reflexe se používá k implementaci účinného způsobu zpracování chyb. Když objekt je poslal zprávu, že to nebude realizovat, obdrží doesNotUnderstand: zprávy, spolu s reifikaci původní zprávy. Existuje mnoho věcí, které program může dělat s doesnot understand: message, včetně rozšíření o nové funkce!
koncept obrazu a odraz také umožňují Smalltalk eliminovat hranici aplikace / IDE. Vše, co potřebujete k vývoji, ladění a spuštění aplikace, je na obrázku. Není třeba nikdy opustit své aplikační prostředí. Je to zcela holistický přístup k vývoji software, který dělá všechno více Zen-jako a produktivní.
Smalltalk je renesance
posledních 15 let vývoje ve světě Smalltalk učinily jazyk mnohem přitažlivější.
Smalltalk je nyní k dispozici pro front-end webové programování pomocí Amber Smalltalk, který transponuje do JavaScriptu. Vývoj Amber probíhá výhradně v prohlížeči. Jednou z úžasných věcí na Amber je to, že při importu knihovny JavaScript lze s jejími objekty zacházet stejně jako s objekty Smalltalk.
v roce 2002 byl vydán Seaside web framework, který se stal nejoblíbenějším nástrojem pro vývoj webových aplikací v Smalltalk. Jeho přístup založený na pokračování poskytl konvenční mechanismus „volání/vrácení“ pro Vaši webovou aplikaci. Může pomoci vyřešit problémy, jako jsou problémy s dvojitým požadavkem a tlačítkem Zpět. Na svou dobu docela revoluční a stále není běžně přijímán v jiných webových rámcích.
Projekt Pharo začal v roce 2008 se zaměřením na moderní softwarové inženýrství a vývojové techniky. To přineslo Smalltalk mnohem dál, než předchozí open-source projekt s názvem Pískot, který byl založen na starobylém Smalltalk-80 dialekt. Projekt Pharo také vytvořil výzkum nového druhu IDE zvaného Glamorous Toolkit. Je založen na myšlence, že vaše programovací prostředí by mělo být „tvarovatelné“, aby vyhovovalo vašim potřebám.
v loňském roce se vysoce ceněný Dolphin Smalltalk stal open source a nabízí další skvělou možnost pro fanoušky Smalltalk. Dolphin Smalltalk byl často chválen za to, že má jednu z nejlepších implementací Smalltalk IDE.
Smalltalk legacy: Takže programování zábava
Když budete používat mnoho zařízení moderní vývoj software, jako je JVM, Eclipse IDE, uzávěry, „živé kódování“ MVC, TDD, VMware, a dokonce i obyčejné webové aplikace, myslím, že zpět k jejich původu v Smalltalk a držet větší respekt za to, co děláte. Mají větší uznání za jazyky, které používáte, ať už jsou objektivní-C, Python, Ruby, Groovy, Scala, Dart, nebo Swift.
Práce s jazykem, který vznikl na všechny tyto skvělé vlastnosti a technologie poskytuje jedinečnou příležitost, aby výrazně zlepšit své znalosti, své duševní ostrost, a produktivity jako software developer. Slovo „zábava“ není vždy vstoupit do diskuse o softwarové inženýrství, ale myslím si, že Smalltalk—a její OO bratří—poskytují nízké kognitivní bariéry a snadné programování, které můžete vytvořit softwarové inženýrství zábava.