Reflecting on Svelte, Smalltalk, and the Evolution of Programming Languages
Recently, I attended a London Svelte community event. One of the speakers was Lovell Fuller, renowned for his Node.js Sharp image processing module, with the intriguing title, "Everything old is new again".
Fuller shared his recent experiences with Svelte, offering a unique perspective comparing older technologies and frameworks and their influence in the current frameworks and especially Svelte.
Fuller discussed a fascinating comparison that piqued my interest – the influence of Smalltalk on Svelte. Fuller's mention of Smalltalk sparked curiosity in the room, leading to a poignant question from an audience member: If Smalltalk was so instrumental in shaping the future of software engineering, why did it not succeed more broadly?
In the mid 90s I had the chance to spend a couple of years working with Smalltalk whilst working for IBM. My role was to help companies adopt Object Oriented programming mainly using Smalltalk.
My understanding, if my memory doesn't fail me here, is that Smalltalk's nuanced syntax, performance considerations, and runtime behavior played a part in its overshadowing by languages such as Java, Ruby, and Objective-C. Each of these languages, in their time, addressed the evolving needs of developers and industries, filling the spaces where Smalltalk did not.
To my delight, I discovered that the legacy of Smalltalk-related products, such as IBM's VisualAge, continues under the guidance of new custodians (same logo :).
Smalltalk was ahead of its time in many ways, introducing concepts that have become staples in modern software development. Its influence is evident in the design of modern languages and frameworks, such as Svelte, which aims to simplify and enhance the development experience. Fuller's exploration of Svelte through the lens of a Smalltalk enthusiast serves as a reminder of the cyclical nature of innovation in technology. Ideas that once seemed relegated to history find new life in contemporary solutions, reshaping our understanding and approach to software development.