Hello-
I've been lurking for a while now. No better time to start writing than
now, I suppose...
I don't find your idea strange at all. It seems that layering software
is in the nature of software itself. At one time it was considered
ridiculous that you would write software to assemble human readable
instructions (assembly language). It was thought that it would never be
fast enough, and would cause more problems than it solved. Well, we all
know how that argument turned out. Building languages on top of
languages in computer science is an interesting history of continual
re-evaluation of the problems at hand, and how to solve them.
These advances in programming languages are generally the result of
there being a common set of problems which needs to be solved more
easily. Can you imagine a new general purpose programming language which
didn't do memory management or wasn't multi-threaded? These features are
simply so common place that we would consider anything less a step
backwards. But there are still problems to solve, and things like Web
Services and AOP, and any number of other things are just minor steps
forward in solving these problems. And all of these things allow you to
execute arbitrary code, which allows you to execute C libraries, which
allow you to execute assembly. So even though there are many layers, you
can always dig down to the lower layers if required.
In ten years I assure you that there will be some new thing that has all
that stuff (or whatever stuff does not die out as a fad) in the core
language and it's libraries. It will be the new platform for awhile, and
naysayers will claim it's too slow and causes more problems than it
solves. Eventually they will come around and given enough time, the next
platform will be built on top of that. This is why writing software is
fun, and keeps us all up late!
Cheers,
Neil
Ahmed Saad wrote:
Hi all,
Please note that I'm not by any means trying to raise a debate of any kind
I'm just trying to brain dump some thoughts about future development
platforms.
I thought I'd share a "strange" thought that bubbled up in my mind while i
was in the metro (aka the underground or the tube). I think what stimulated
this idea are a set of articles i read about interoperability between java
and .net. The emphasize here is on code-level interoperability not through
any XML-based protocols (web services). Another thing is how each of the two
platforms is trying to port in the best of the other. From tools or
libraries (Ant -> NAnt, JUnit -> NUnit, etc) to Web development paradigms (
ASP.NET <http://ASP.NET> WebForms -> J2EE JSF). I know the that under the
hood WebForms and JSF are totally different but they essentially deliver the
same: Web applications based on an event model with Page Controllers and can
be visually designed by drag-and-dropping components in a visual editor. The
two platforms are heading to the same place: productivity, performance,
completeness. Did i miss somthing? oh yeah, being Cross-Platform. Both Java
and .NET are built around machines abstraction runtimes. Sun offcially
release JREs/JDKs for Windows, Linux and Solaris. Microsoft? .NET only for
Windows ( but the shared source CLI (Common Language Infrastructure) can be
build on Windows, FreeBSD and Mac OS X [
http://www.microsoft.com/downloads/details.aspx?familyid=3a1c93fa-7462-47d0-8e56-8dd34c6292f0&displaylang=en].
Mono [http://www.go-mono.com] is taking, driven by Novell, .NET development
on Unix-likes by a storm. Let's get back to our code-level interoperability
talk. I think i only have to mention two projects to get to my point: the
.NET-based JVM implementation known as IKVM [http://www.ikvm.net/] (which
ships now with Mono) which makes such interoperability a snap, and
Mainsoft's Grasshopper [http://www.mainsoft.com/], quoting their site:
"Grasshopper is a Visual Studio .NET(r) plug-in, which enables you to use C#
or Visual Basic .NET(r) to develop cross-platform ASP.NET
<http://ASP.NET>applications that run on Linux
(r) and any platform running Apache Tomcat."
Now i finally come to the strange idea. What if someday, somehow, somewhere
we come to the point where a platform could be developed atop these
platforms!! Let's call it PX or Png (sure that would be a "next generation"
platform :). So you write applications for PX and using PX Class Library
(which is will be engineered to provide unified interface to the underlying
Java/.NET class library)
I know it's a totally weird idea but who knows!!! Comments are welcome, for
sure, and you all have a nice day.
Regards,
ahmed