• Tyra Kaddu

Ordering Cyberspace: The Babel of Syntax and Computer Programming Languages.

Updated: May 9, 2021

We spoke to Samuel Ugbechie, a software engineer with experience in multiple languages and technology stacks about all things Programming.

As a software engineer with experience in multiple programming languages, how do you decide what programming languages to learn, and does efficiency as a programmer depend on how many languages you know?

This mainly depends on the use cases. Some programming languages excel in certain projects, and a programmer could be motivated to learn a certain language because the software project at hand is best suited for that language. For example, Unity and Unreal are maybe the two most popular engines for game development right now. Unity uses C#. So a programmer who plans to go into Game Development might see the need to learn C#. I’ve had to learn some programming languages because I can do some jobs faster and more efficiently with them, and because of their market demand. Another example would be Machine Learning (ML). We know Python excels here because of platforms like TensorFlow, PyTorch, and others that allow developers to use Python for ML projects. A developer then might be motivated to learn Python for such a reason.

Stack Overflow has this beautiful annual survey that polls for language popularity based on market demands, developers’ love for it, and other factors. It’s a good place to gauge programming trends yearly.

What makes programming so difficult for so many people is the whole gamut of keywords and modules one has to learn. Over the years, we have witnessed a shift towards simplification. Do you think there will come a time when programming will be as simple as writing sentences in natural language?

I think this has been the trend: from complexity/difficulty to simplicity. We had BASIC and COBOL in the 50s and 60s, and then C arrived in the 70s, followed by C++, and then in the 90s some of the big names arrived: PHP, JavaScript, Python, Java, Ruby, and others, while in the 2000s, we’ve seen C#, Golang, Rust. Not that it’s been perfectly moving from complex to simple. It’s more of a curve than a straight line. No doubt, though, there’s the trend there: that things should be simple and efficient. This is one reason many developers still love Python. And when Google introduced Golang, they touted simplicity too. Today’s generation wants simple and readable syntax without sacrificing efficiency. I don’t think there’s anyone out there thinking of creating a language that complex.

I will also add that languages today have quite simple syntaxes à la Python. And once a student learns the fundamentals of programming—data types, variables, if…else, loops, etc—which cuts across all the major languages, then they can easily pick up other languages along the way. But, yea, I think future programming languages will have simplicity in mind because it has been shown that simplicity is not a hindrance to efficiency and performance, so why create a new difficult language?

Users often don’t bother about what programming languages were used in the development of Apps, so long as they are functional and efficient. In what ways do the choices of languages limit user experience?

Yes, [users do not bother] because the technical part of the app is abstracted from the users so they can focus on enjoying the app and having a smooth experience. But a handful of things will stand out to the user: ease of use, speed, and aesthetics. And this is where the choice of language could come into play. In many situations, though, more than one language could efficiently build an app and how good the app becomes would depend on the experience of the developers or tech team. That said, some platforms, frameworks, or languages seem to excel better than others in some use cases.

Airbnb dropped React Native sometime in 2018 and move to native apps for both Android and iOS. Now, React Native powers a lot of mobile apps and would do just fine in many mobile projects, but due to the complexity of Airbnb’s app, they needed to go native to make life easier for their tech team and their users. So the choice of tech stack matters sometimes.

If we took a linguistic look at programming languages, one would fear that there would be the problem of barriers in their interaction: an English speaker would need an interpreter to be able to interact with a French speaker, for instance. How do computer languages break this barrier?

I’ve worked with developers whose first language wasn’t English, and who somehow struggled a bit speaking or writing English, however, they excelled in programming. I think this is because as kids, to communicate, they learned their mother tongue—a foreign language—as their first language. On the other hand, in programming, their first language isn’t French or Spanish, but maybe Java or C#. So they’re able to make this mental distinction and easily grasp their first programming language just like others. Was it more difficult for them compared to an English speaker, given that most of these major languages are in English? Maybe or maybe not. From my experience, programming has always seemed like a universal tongue for programmers of different nationalities.

Programmers are wont to debating what programing language is the most powerful. Do you think this is a useful debate; and if you had to choose, which might it be?

I think debates like this are useful, so long as they’re thought politely and constructively. Because the truth is some languages are more powerful than others for some use cases, so it has to be debated so that others would get to know. But is there a programming language that’s the most powerful? I don’t think so. It depends on the use case. That said, I think JavaScript and Python, and even C# have been doing so well.

JavaScript, particularly, whatever its flaws, is impressive. It can handle web backend (Node.js), web frontend (Svelte, React.js, Vue.js), desktop app (Electron), mobile (React Native). Does that mean it’s the most powerful? I wouldn’t use the word, “powerful.” I think it’s among the most useful. JavaScript and Python are up there. Blender, for example, which is arguably a top 2 software/platform for 3D modeling uses Python. Python does the web, desktop, and with Brython, handles web frontend too, so Python is still doing great.

There are growing concerns about how computer programming may be impacting the depth of thought in humans. Calculators have almost obliterated the fundamental human faculty to abstractly sum up numbers. Do you think things will get worse as programming improves?

I can’t really say. But maybe a balance would happen. Maybe programming will help us think differently. That said, I think this concern is justified. If software apps and AI can solve and handle many of our mental tasks, it might not be a good thing altogether, or it might just make us relocate and concentrate our mental energy on other things, which could be more pressing and important things that no software app could solve.

Structural programming seemed impeccable until it was replaced by Object-Oriented Programming, which has helped programmers organise code into chunks. What nuances do you wish there was to programming paradigms, especially in the area of code structure and organisation?

Programming languages are not natural languages nor do they flow like natural languages. For example, every native speaker of English should be able to write a basic letter to a friend wishing them a happy vacation. And any stranger, who is also a native speaker, should be able to read and understand. But programming languages don’t have their kind of structure.

I think this is what has led to such advancement: from functional to object-oriented programming, and other software design principles and patterns. The software industry is looking for code readability that doesn’t just rely on the inherent simplicity of the language being used. The industry is looking for ways to make code easily maintainable, and ultimately, more scalable. I would wish programming languages were like natural languages in that sense, but that’s not the case, so advancements like this will keep happening which is good.

With the gradual foray of Python into web development with Flask and Django, do you think the usurpation of the web design trio of HTML, CSS, and JavaScript is imminent?

It will be difficult to usurp JavaScript. JavaScript has dug a deep hole it alone could fill. And over the years the hole has deepened, and it’s a useful hole. However, Brython (a Python implementation) is challenging it. Microsoft’s Blazor (that uses C#) wants to challenge it too. Will they succeed? Time will tell. Anything is possible, but I feel it will be difficult. HTML and CSS don’t seem to have major competitors yet.

Finally, licensing appears to be a major problem for most developers. What do you consider best practices in this area, especially for people who intend to commercialise their products?

Different software licenses cater to different needs. I’m not a specialist in this area, so for someone who has developed software that isn’t intended to be free open-source with a license like the MIT license, I would advise them to read up on the available licenses and see what fits their needs. Better still, they could consult a software license specialist/consultant for advice. That said, whether the software application is open source or not, it helps to read about software licenses and be informed about them.

18 views0 comments

Recent Posts

See All