ProgrammingLanguagePlatformWar

ThoughtStorms Wiki

This is old and out of date. When I was keen to promote PythonLanguage against JavaLanguage

Some good ideas though the framing is out of date and many broken links

Today I'm a huge fan of ClojureLanguage, but have just started using KotlinLanguage because of AndroidOperatingSystem. Initial thoughts are that Kotlin is nicer than Java, but just an incremental upgrade. I'm really annoyed that Clojure didn't become the thing that took over from Java in the Java ecosystem, but I do understand that Kotlin is a really easy substitute. It slides in almost without you noticing it's any different, except for the pain points that it fixes.

I suppose I'm stuck with Kotlin for a while. But I'll continue to use Clojure wherever I can. And Python is fine in its niches. (Which are various). But Clojure has my heart.

Previously

For a long time, I thought JavaLanguage was so self-evidently crap, that it was only being kept going by a life-support of hype and pump-priming by Sun, and naive universities and companies run by fresh-out-of-college-kids. And that one-day this system would catastrophically collapse. (Probably beaten by something equally lame like CSharpLanguage)

But now, I'm actually starting to get worried. That maybe JavaLanguage is close to winning a platform war and getting locked-in for a long time. (I'm in my mid 30s. So "a long time" could conceivably last until I retire as a programmer.) (Phil from the future writes : "Hey, Phil from the past, it's almost 2022, you're in your 50s, you love ClojureLanguage and you are still writing Java professionally (On AndroidOperatingSystem. That's a new platform for smart-phones which hasn't even appeared for you yet.)")

So I'm feeling I really need to get involved in the coming PlatformWar between JavaLanguage and PythonLanguage (or similar scripting language) to try to prevent this evil outcome.

I think ManageAbility hits the nail on the head with his analysis of why Java is beating Python : TheArchitectureOfParticipation (AoP). Hence his response to PaulGraham's GreatHackers.

Why is Java winning?

  • Of course, it's the libraries (but they partly exist because Java's AoP helps the manageability of large numbers of libraries
  • It also has AGoodIDE (Eclipse which is the uber-AoP)

Another discussion. Is RubyLanguage winning on the web because of problems with PythonForTheWeb?

Some other causes of Java's rise

And then there are probably some other interesting (lucky) contingent events.

  • The Java / XML symbiosis.

: XML is such a pain everyone wants to use standard libraries to manipulate it. And Java got those libraries early, managed by a good / respectable free-software committe : Apache.

: At the same time, everyone got so lazy to write parsers for LittleLanguages (possibly because universities were side-tracked teaching GUIs and web-services and XML) that they use XML for all kinds of stuff where it isn't appropriate.

: Hence some PositiveFeedback : widespread XML creates need for Java's libraries, and wide-spread use of Java and it's libraries disincentivates alternatives.

Another analysis of the advantages of Java

Python is not Java : http://dirtsimple.org/2004/12/java-is-not-python-either.html

  • evolution in library / framework specification rather than language
  • formal process of specifying interfaces makes it possible to build frameworks and platforms :

: By the very nature of what something like OSGi does, it has to be specified in terms of interfaces. There are multiple platform implementations that load bundles, and of course there are many, many bundles, and services offered by those bundles. Without interfaces, there would be "no there there" – nothing to exist or document.

This is echoing the architecture of participation thing really. Or rather, Java is a culture of participatory discipline in that it encourages ArchitectureAstronauts to come up with high-level interfaces that describe how certain large chunks of functionality should talk to each other; and then members of the community actually diligently sit down and implement these specifications. Even when they get burnt as Sun prototypes and drops one competing standard after another, someone still sits down and implements it all. It's this self-discipline in following orders by the community which is it's strength (and what makes it so off-putting to the TypesOfProgrammer who are attracted to Python).

The question is this :

  • must Python adopt Interface culture to compete at the scale Java culture works (large component libraries)
  • can there be an alternative, Pythonic way for groups to co-ordinate their efforts?

: eg. freestyling for a moment here, compare Rest vs. more complex WebServices specifications. Can there be minimal Interfaces / protocols for different frameworks to communicate?

Discusison of inerfaces continues on PythonInterfacesAreNotJavaInterfaces.

(I started writing a comment which I didn't post but became PythonBlackBoardArchitecture)

And read the discussion on OptionalStaticTyping : for http://www.artima.com/forums/flat.jsp?forum=106&thread=85551 for more thoughts on how Interfaces are important to the platform war.

How to fight back

1) Python needs AGoodIDE (and one which is FreeSoftware).

  • BoaConstructor?
  • IDLE?

2) Python has XML libraries.

3) Jython on top of JVM, IronPython on top of CLR

At the moment, the main use of these languages is to take advantage of the libraries on the two underlying platforms. These are transparent in that they don't really hide the nature of the underlying platform. (Though maybe that doesn't matter much.)

4) How can Python get more AoP?

...