Question

With the introduction of Apple M1 processor, ARM has stood up to be a capable competitor and an alternative to x86 processors. We can foresee a future where ARM captures considerable market share of x86 in the server space. That means we will be writing software that works and is optimised for ARM.

Such a change would definitely affect developers who deal with low level code(device drivers, compilers, os and os kernels, etc) that requires knowledge and expertise of underlying cpu architecture.

But would such a technology shift affect "general" developers too? I mean developers who are mostly involved in implementing business logic using high level languages such as Python, Javascript, Java, C#, etc. Those languages and their implementations usually take care of running the same piece of code on different os and cpu architectures and developers just have to focus on implementing the requirements.

If yes, how would it affect the "general" devs and what would change in the development work? How can we prepare for such a change? Will some programming languages become preferable over others? Should we consider cross-platform frameworks?

Was it helpful?

Solution

Quite simple: write portable code in a high-level, multi-platform language, without making assumptions about endianness, or size of integers, and CPU architecture. Just check if your favourite language supports the new platform.

It’s not a new situation: 30 years ago the CPU landscape was very diverse. There was x86, M68K, PowerPC, Sparc and several others. You had to trust your OS, your compilers and your libraries. It’s far more challenging to have a consistent multi-platform user-interface across many systems, than supporting multiple processors (provided you kept portability in mind).

One challenge is the communication between processes which could use different CPU architectures. Binary data makes a lot of assumptions about the CPU and requires some extra caution. But in reality, this challenge exists already today if you use multi-language development.

Another challenge will be to package and distribute multi-target code. While this may impact the toolchain, build, test (multiple automated tests for each targeted platform required) and distribution process, this will not fundamentally impact the way software is developed. The best preparation here is probably to familiarize yourself with multi-target open source projects.

Licensed under: CC-BY-SA with attribution
scroll top