Platform vs. Language

(RemObjects) #1

I frequently see people making the mistake of conflating a programming language with the platform. It's an easy mistake to make, because these days, most major platform vendors have one language (or two) that they closely tie to and associate with the platform:

This is a companion discussion topic for the original entry at

(michaelthuma) #2

The language doesn’t matter. If a vendor decides to offer a class library framework simply use it. The word plat-form has been spread into the world and says nothing but, ‘Buy our shit exclusively’. Business people took over control and tried to decide.

Ideology driven. The one language on one platform (on one device that does it all) :sleeping:

I tend to think of platform as combination of a certain kind of operating system combined with a framework - a class library framework nowadays. What survived is simply everything that offered a systemic way to handle what is provided and clean bindings - registering something into a certain execution environment.

Real value has been provided to the poor guys outside the Wintel (not Windows) world who didn’t even enjoy debugging the assembler programs by allowing them to enjoy the great opportunity of enjoying a somewhat higher level language called Java after never having been considered before. More modern processors finally really freed them.

IT people should be in the position to express themselves on various devices in their way. From a pragmatic point of view I’d simply use the stuff provided rather than try to extend a framework provided in fashion of the high ideals behind. Object Framework is an architects job, application design is a tame craftsman’s work. Object frameworks are here to be used.

The issue GUI issue was solved with the help of Sun’s sling-shot extension to the ol(v)wm long time ago.

Objective C was used to port the old MacOS to UNIX and some people with Objective-C skill and an empty stomach jumped on the train.

Smalltalk was a great a approach. We have a computer that is never turned of in general, so why bother with persistence. Before we shutdown the machine we write the core (memory) to the disk and in the meanwhile we simply copy those objects we still need. This approach is dead simple, maybe superb excellence is expressed a different way.

Superb excellence is to modify the kernel threads on Solaris and speed up flight booking system. Optimize the Linux kernel - that’s programming.

Progress in IT does come from the bottom up fairly from the top. .net programming is not about programming the Windows operation system.

(Bee Jay) #3

This is a great article. Thanks to @mh for writing it.

However, it lacks of another important thing: (dev) tool. It should be “language vs tool vs platform”. Yes, a language should be completely decoupled from the platform. Well, ideally. In real world, that’s not what really happen because we need some (development) tools to make a languange becomes applicable onto a platform. Development tools are language converter (compiler or interpreter), IDE, runtime libraries, debugger, and so on.

Why can’t we write Android apps using Swift language? Because there’s no tool to make it happen. We can’t just write some codes and then it’s magically runnable on all platforms. At least before RO made Silver. Apple only provides tools for its own platforms, for example.

The lack of (dev) tools are the reason why -in real world- we can’t just use a language to target any platform we want/need. Who is in charge to provide the required tools? That’s another question. :slight_smile:

(Jolyon Direnko-Smith) #4

Agreed, it’s a great article. I’m with @michaelthuma - the term “platform” is now massively over-used. It has become - like AI - the “thing” to be seen to be doing, and to be seen to be saying you are doing even if it’s really not.

And I say that as someone whose official job title (in my day job) is now “Platform Engineering Lead”. :slight_smile:

(michaelthuma) #5

I described the word platform here in the context of the article. Other platforms like communication platforms example do exist.

Platform in an over used sense can be described as an attempt to tar all things with the same brush. The problem is not the same brush solely but all.

I doubt that all developers enjoy having to use the same language all day over long periods of time. Doing so I think is not very healthy at all.

(marc hoffman) #6

And no-one says you should have to. even on there same platform :wink:

(Jolyon Direnko-Smith) #7

On the other hand, the best developers do tend to enjoy mastery (as in, being masters of their craft). Not all people (never mind developers in particular) can achieve mastery in multiple skills. Hence the saying, “Jack of all trades, master of none

There are of course development skills (or aptitudes/talents if you prefer) that are independent of language (or platform), such as analytical skills, algorithm design etc etc.

But then there is also knowledge that is necessarily specific to a particular language or platform and gained (and maintained) only through use and application of a particular tool. The deep language knowledge that facilitates the creation of beautiful code, not just code that get’s the job done. e.g. knowing about, and knowing how to effectively use things like null coalescing operators, short-cut property syntax, read-only initializers vs const declarations, when clauses on exception handlers etc etc.

Gaining and maintaining that sort of deep knowledge, whilst not impossible, is definitely more difficult unless you are a particular sort of person and/or in the somewhat unusual position of consistently and continuously using multiple languages and/or platforms in parallel on an on-going basis.

(michaelthuma) #8

I’m just a fan of well structured code that gets the job done. Not more, not less. I was under the top 20 on SAP BW/BI in Europe which meant the world these days. One day I observed myself indexing everything when walking down the streets generating dimensions in my memory and combining those including the reports and the navigation scenarios. These days I knew the time had come to move on. Despite of many many hours spent in the night and trying to stay in touch with ‘the more modern’ world the 4GL procedural ABAP almost killed the developers skills - almost. Unlearning is not simple.

I don’t conclude from this that ‘mastery’ tends to fuck your brain in general but it starts to influence perception and tightens the perspective or the angle from which people look at issues to be addressed. Not a lot of people enjoy the pleasure of being in the position to act as a developer. Nevertheless IT guys should at least be in the position to write an app in a native fashion on ‘one of those’ devices. Agree on the more general skills a developer should acquire over the years. I simply don’t see those skills limited to certain roles people are finally trapped in. Something smart and compact allows you to break out.

We do have more or less one technology a device at least that dominates for a decade. This decade out of doubt the smart devices, one decade earlier the web. I have simply chosen for an iPad 2 which I still use and used XCode first. In general coding in Objective C works great. From this perspective superb excellence is not required.

What I really dislike are the stoppers. You open a source file from the libraries provided, incidentally touch it and XCode cannot simply continue. Great things tend to be fragile. I don’t invest much time, except from beta testing in general, into tools that hinder me from moving forward quickly. That’s why I’m really happy with Fire at least for the moment.

Anything else are simply skills which make up the IT guy. That’s beyond the scope of the article.