Once upon a time, computers were invented. The idea was simple enough; feed the machine input, it processes per your instructions, and produces an output. The hard part was getting the instructions into the computer so it knew what to do. First, logic was hardwired. Then there were punchcards. These processes were incredibly time-consuming, so programming languages were written. Low-level languages like Assembler allowed the programmer to build software for the CPU itself… this was efficient, but still complicated, and would only work for that particular hardware. Higher level languages were created to abstract the hardware and software, and make things more programmer-friendly. This gave birth to COBOL, FORTRAN, and BASIC. However, it was discovered early on that these functional languages were not well-suited for complex applications. Languages like C++ evolved over the next few decades to make object-oriented programming popular. As languages moved away from concepts such as garbage collection, other concepts remained, like static typing.
Over a decade into the 21st century, PC productivity has evolved by leaps and bounds. We no longer do word processing using markup tags. We don’t use BASIC as an OS. We don’t poke around in PostScript code to build vector shapes and 3D models. We don’t hack around in Unix terminals to check our email. Event logging is not done using a dot matrix printer in a closet. So then, why are we are still using punchcard-era thinking in computer programming?
We need to demand better than this. We need to put an end to Notepad-style IDEs. End the command prompts. End the need for compiling everything to machine code. End the buffer overflows, freezes, crashes, hex hacking, and general security disasters. End the thousands of source files strewn across directories. End the hours wasted rebuilding for other architectures. End the dozens of C++ and LISP copycat languages and admit they were never great languages to begin with. End the need for languages.
While everything else on PCs has moved away from languages, software development has not. Why is that? Is it because we’re too limited by RAM and HDD? Software is getting more complicated? We can’t afford for software to take longer than it needs to? No, no, and no. Why can’t we abstract things in a different way? Like simply use visual interfaces to snap together libraries of low-level logic, skipping high-level programming languages completely? Why does MVC and OOP have to involve hundreds of files, when it could simple be the way you choose to visualize your data, not necessarily how you physically organize it? Why not let the computer organize itself efficiently… why is the housekeeping our job?
I hope one day we will live in a future where the average developer doesn’t concern him/herself with text-based code, but instead concentrates on the tangible engineering aspects of their project. I see interesting projects that attempt to go this route, and I guess the biggest problem is the money and time involved in such feats. But in the IT world, wouldn’t it be so worth it? I know I’ve talked about these ideas a million times, but let me reiterate: Creating yet another programming language will not solve any problems; let’s instead come up with a plan to move away from programming languages.