Reflections on Programming: Past and Present
The Challenges and Limitations of the Past
When we look back at the evolution of programming, it’s important to recognize the challenges and limitations that developers faced in the past. While some romanticize the early days of programming, the reality is that developing software was often a solitary and challenging endeavor. There was no internet to provide instant support or resources. Instead, programmers had to rely on books, their own knowledge, or seek help from a friend or colleague.
The availability of programming resources was quite limited. There wasn’t a rich ecosystem of online communities like Stack Overflow and Quora. Additionally, the range of programming languages available was much narrower. Programmers were tied to a few languages and faced significant limitations. For example, languages like C or Java had to adapt from what they were to what modern expectations demanded. Over time, these languages have been updated and improved, such as the aggressive update of C to version 14 and the improvements in PHP 8, Raku’s role in putting an end to Perl’s bad reputation, and Java’s adoption of features from Haskell.
Hardware limitations also hampered development. Early computers were slow, and the hardware was far from ideal for modern standards. Writing complex web applications was particularly challenging. Today, while the choices may have diversified, the problems have been mitigated. Tools like Elixir, Blazor, and Purescript have made it possible to develop applications with less overhead and fewer headaches. Even JavaScript, once considered a challenge, has evolved significantly, providing more efficient ways to generate HTML using languages that resemble Haskell.
Better Days? Not Exactly
Some might argue that programming was better in the past because it was more fun and accessible, especially for beginners. Indeed, in the early days, kids like our hypothetical bright individual could grasp the essentials of Applesoft BASIC in just one day. However, there were significant drawbacks. BASIC was not designed for itself, so there was a steep learning curve for those who wanted to delve deeper. This led to the development of Plain English, a programming language that addresses these issues by making it both broad and deep.
Introducing Plain English
Plain English is an application designed to be a stand-alone tool, including an interface, a simplified file manager, an elegant text editor, a handy hexadecimal dumper, a native-code-generating compiler/linker, and a WYSIWYG page-layout facility. All of these functionalities are integrated into a single, lightweight application that is easy to use and understand. The application is released under a permissive license and is free for download on Windows, making it accessible to anyone without the need for installation.
Plain English is both broad and deep. It is broad because it is a complete application that includes a wide range of tools, each with its unique functionality, and it is deep because it is self-reproducing, starting from natural language all the way down to machine code. The language is designed to be easily comprehensible, with keywords like 'IS', 'HAS', 'DOES', 'WAS', and simple prepositions like 'A', 'AN', 'THE', 'SOME', 'IN', 'ON', 'OF', 'TO'. This makes it accessible to both beginners and experienced developers.
For those who are eager to dive into Plain English, the project offers documentation and resources, including a blog with interesting articles and applications. The vocabulary and grammar are defined by the programmer, making it highly customizable and adaptable to specific needs. Plain English is a refreshing return to the past, offering the best of both worlds: accessibility and depth.
Conclusion
While there were certainly challenges and limitations in the past, reflecting on these experiences can provide valuable insights for current and future programmers. Tools like Plain English offer a new perspective on what programming can be, combining the best of earlier approaches with modern conveniences. As we continue to evolve, it’s important to appreciate the progress made and the foundational elements that have paved the way for today’s advancements.