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 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?
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.
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.