Machine Languages - For Best Performance
Assembly
The world communicates with the computer by submitting commands in the form of machine code, binary code consisting of a string of zeros and ones. The most direct way to do this is for the programmer to write the program in Assembly language, a human readable code very close to machine language. A tool such as MASM (in the Microsoft World) will translate this into machine code.
The programming task is challenging. Most programmers are not trained do it, and it takes far more time than normal programming. It is used when compact code is necessary, performance is critical, or there are hardware peculiarities that cannot be addressed with a higher-level language and is used only when absolutely necessary. Cambria has done extensive assembler programming in the past. The video conferencing program we wrote for Mitsubishi in the 1990s was a prime example of our prowess in using assembler.
Read MoreC
C is second only to Assembler in its ability to create high performance software but without the enormous difficulty and expenditure of time required. C is the classic low-level language that is close to the hardware and allows access to system resources.
Leaving assembler aside, C is regarded as the language that can produce the fastest code. it is a language of choice for operating systems, network programming, compilers and interpreters for other languages, games, and scientific programming. Without the abstractions of higher languages that make life easy for the programmer, coding in C can be difficult.
This language was used extensively by Cambria in hardware projects in the early 2000s and is still in use by us today where performance is critical, memory is limited, and there is no need for object-oriented programming.
Read MoreC++
A short way of describing C++ is that it can do everything C can do but adds programmer-friendly abstractions and most of all is fully object-oriented. Like C, it can generate code equal in performance to, or almost equal to, that produced by C. Because of its user-friendly modern additions, it is a fully general-purpose language useful for almost anything.
It is one of the few high-level applications that is also fully capable of low-level programming. In short, there is something for everyone. Some would say that it is hard to learn, but this writer would dispute that.
Hard to be proficient perhaps because the freedom to do everything is also the freedom to make mistakes. C++ was introduced in 1985, shortly after Cambria was founded and has been used by Cambria ever since. Today it is the language most used by Cambria programmers.
Read MoreDelphi
As an old Delphi fan, I cannot do better than quote Shayne O'Neill:1 "Delphi is one of the great tragedies of the IT world. Back in the 90s it was a decade ahead of anything in its class. It was reasonably priced, had a huge open source ecosystem of components and libraries, was productive and generated lightning fast executables... But over time management just trashed the whole product line... and it pushed the prices up so high that low end packages would be worth *months* of salary for beginner coders.."
Delphi is still a great product. It is still in use by Cambria and Cambria's internal systems still make use of Delphi code from years gone by. And it is still the fastest and best way to generate high performance Machine code. It is that rare example of a RAD language that can compete with the best on performance. But the Delphi community has shrunk, new programmers are not coming along due to prices and it is no longer popular.
Currently Delphi is owned and regularly maintained by Embarcadero who comes out with a new version every 6 months. Its small but dedicated community includes specialized fields such as industrial applications, financial services, and organizations with a need to maintain older systems.
Read MoreSwift
Swift was introduced in 2014 and intended to replace Objective-C for programming Apple devices. It needed replacement. Objective-C was difficult for many to use, especially on mobile devices. Swift introduced a simpler syntax, modern memory management and error handling and other welcome improvements. Cambria has made use of Swift since its introduction but in recent years our clients have usually preferred that we use Xamarin, a language that allows us to create multiplatform apps.
Microsoft has discontinued support for Xamarin effective May 2024 so it is not a good idea to start new projects with this application. Prior to this announcement, here at Cambria we began to use Flutter in mobile programming projects where we might have used Xamarin.
Read MoreFlutter/Dart
Dart is a general purpose programming language released by Google in 2011 to compete with JavaScript. It had significant advantages such as the ability to compile to native machine code but needed a tool (dart2js) to run in a browser by converting to JavaScript! Many of its advantages were neutralized by advances in JavaScript itself.
Flutter is a framework and toolkit explicitly developed to work with Dart as its programming language and take advantage of Dart’s advanced features such as fast compilation and UI friendly syntax. It was released by Google in 2017 and immediately began to improve Dart’s popularity. Today it is usually assumed that Dart is the language used when you speak of a Flutter app.
Flutter’s strength is ability to create high performing cross-platform apps from the same codebase, hot-reload that speeds development, a rich library with a consistent UI, and native like performance. Weak points include a relatively large app size and performance that is likely less than that of native web solutions.
Where appropriate, Cambria began using Flutter instead of Xamarin or Swift in mobile apps last year (2023). We have completed one full application and are working with others.
Read MoreInterpreted Languages - Theoretically Slower*
JavaScript
JavaScript was introduced by Netscape in 1995 as a client side scripting language intended to make web pages interactive. Early on it only ran in a web browser. Node.js, released in 2009 enabled JavaScript to be executed outside of the browser, a significant expansion of JavaScript's capabilities.
In addition to client-side, It has since emerged as a dominant language in Server-Side development where it competes with languages such as Python, Java and C#. Today JavaScript is everywhere and is used not only for web development but also for games, mobile development, and on the desktop.
I have not asked for a show of hands, but it is probably safe to say that almost all the programmers at Cambria are JavaScript experts.
Read MorePHP
PHP is a Server-Side scripting language which has slipped in recent years from its dominant position as the go-to for server-side programming in the early 2000s. In recent years it has lost some of its dominance to by JavaScript (with node.js), Python and Java.
But it is easy to learn, it has a huge user base due to WordPress and other applications built on PHP. Moreover, recent Versions 7 and 8 have given it a performance boost making it more competitive again.
Today PHP is more competitive again and powers approximately 75% of websites with a known server-side language. It's still one of the most widely used languages for web development.
Cambria has several PHP specialists, and we always have a few PHP projects in-house.
Read MorePython
The recent history of Python begins with the release of Version 3.0. A backward-Incompatible version to fix serious design flaws in earlier versions. The transition from Python 2 to Python 3 was a big task that took many years. Adoption was slow because many libraries did not support Python 3.
The syntax is easy to read and is a good RAD and prototyping language. This, its versatility and widespread use lead it to rival JavaScript as the most popular language in the world. It is used in fields like data science, web development, automation, machine learning, and more.
It consumes more memory than its competitors, has an interpreter lock (GIL) that limits multi-threaded applications and suffers from the slowness of interpretive languages in performance critical applications.f That said, there are libraries, tools and methods to improve performance where needed.
Here at Cambria we have not been left behind in the rush to master Python. Today we have 5 programmers who are working in Python. Three of them on nothing but Python projects.
Read More*All these languages can give good performance if programmed by an expert programmer.
Managed Languages - Theoretically the Slowest*
C# and .Net
For programmers like me who do not specialize in C# the very naming of the language and its relate framework is confusing.
In the beginning there was the .NET framework and C# the primary language using that framework. Sometimes referred to as C#.Net. The Framework evolved over time and the latest version is 4.8. In the mean time Microsoft introduced .NET Core as a cross-platform open-source framework that eventually evolved into the unified .NET platform. Since then we have .NET 6, .NET 7 and .NET 8 expected in November 2024. Still with me?
In meantime C# became an object-oriented general purpose language used in enterprise environments, competing with Java on Windows and offering an alternative to Linux and macOS due to .NETs cross platform capabilities. It is competitive in game development (using Unity), web development (with ASP.NET Core) and cloud development (using Azure). It remains popular and is generally among the top languages in surveys.
Read MoreJava
Java is a high-level object-oriented language used in building cross-platform applications. In particular in big time enterprise environments. It was developed by Sun Microsystems who described it with the slogan "Write Once, Run Anywhere". This refers to the use of a Java Interpreter that can run on many systems. So the programming is written to this interpreter. It is incredibly popular ranking at #2 in some lists on the internet.
Java's popularity probably has to do with the fact that it was the first multi platform language without significant disadvantages. The also rans in this race were Cobol, Smalltalk, an early Pascal system and C which had some cross platform capabilities. But they did not match Java’s combination of portability, performance and ease of use.
Cambria has had an up and down relationship with Java. We use tools that customers ask for and that can lead to big changes in direction. As recently as a year ago we had more than 50 Java programmers on a project but now C++ has overtaken it at Cambria.
Read MoreXamarin
Xamarin is an open-source framework developed by Microsoft that allows developers to build cross-platform mobile applications for Android and iOS using a single codebase written in C#. It provides access to native APIs and tools, enabling the creation of apps with native-like performance and user interfaces. Xamarin integrates with the .NET ecosystem and allows developers to share a significant amount of code across platforms, reducing development time and effort. As of 2022, Xamarin is being replaced by .NET MAUI (Multi-platform App UI), which offers a more unified and modern approach to cross-platform development.
This was not good news at Cambria at the time for we made extensive use of Xamarin in our mobile application development. The Xamarin framework was migrated to .Net Maui. We felt that so long as we had to learn a new language it was more beneficial for us to switch to a popular emerging framework, namely Flutter.
Read MoreVisual Basic
Visual Basic was developed by Microsoft and released in 1991. It was intended as a RAD language to enable the create applications with a focus on ease of use. It is event driven and offers a graphical user interface enabling programmers to drag and drop controls ono forms and write code to respond to events such as clicks or pressing a key. The most popular version is VB6. Microsoft stopped supporting it in 2008.
VB.NET is a modern object oriented language introduced in 2002 as part of the .Net Framework. It has much the same capability as C# but without a few advanced features that are available in the more popular C#. C# using Unity would be the language of choice for game development. More generally C# would be preferred to more quickly get access to more advance features as it is not updated as frequently as C#.
Read More