The Artima Developer Community
Sponsored Link

Weblogs Forum
After Java and C# - what is next?

46 replies on 4 pages. Most recent reply: Jul 18, 2009 3:46 PM by jovan tomasevic

Welcome Guest
  Sign In

Go back to the topic listing  Back to Topic List Click to reply to this topic  Reply to this Topic Click to search messages in this forum  Search Forum Click for a threaded view of the topic  Threaded View   
Previous Topic   Next Topic
Flat View: This topic has 46 replies on 4 pages [ « | 1 2 3 4 | » ]
Larry O'Brien

Posts: 7
Nickname: lobrien
Registered: Jul, 2003

Re: After Java and C# - what is next? Posted: Jul 4, 2003 2:50 PM
Reply to this message Reply
Advertisement
> Yup. That's because graphics is in many ways a
> production environment. What drives increases in
> programmer productivity is conceptual advances.


I absolutely agree. That's why one of my first observations was that text streams transformed into machine instructions in O(lines of code) is a _very_ old concept.

For instance, test-driven development reminds me of constraint-based programming. It's not inconceivable that computers could proffer implementations that satisfy the test suite. IMHO, it's not inconceivable that computers could eventually "master" programming in the same way that they "master" chess -- not by reproducing human tactics but by a combination of models, heuristics, and brute force.

Pete Lyons

Posts: 2
Nickname: petelyons
Registered: Jul, 2003

Re: After Java and C# - what is next? Posted: Jul 7, 2003 2:29 PM
Reply to this message Reply
While the C language was revolutionary to the programming world, its technology was very much a simple evolution of what had preceded it: the B language. The cultural revolution of its adoptions is much more the story of the explosion of Unix and the PC marketplace. Unix was a written in C so it became the language of choice for working with it. The early PC hardware was typically so slow and so memory constrained only a few programming languages were light enough to work well on it; C was one of these.

Its true that Java and C# are relatives of C, C++ and Smalltalk, but while the technology isn't revolutionary, their adoption has been. (Note: In this same revolution I would throw in the scripting languages like: Perl, Python and Ruby.) This isn't a revolution of language as much as cultural dogma shift away from micro managing memory and the emergence/availability of hardware powerful enough to hide the garbage collection.

In terms of language evolution I see a merging of OO style languages and functional programming. (See Nice and F#). Aspect oriented programming is also interesting. Whether these will cause a cultural revolution is too early to tell, but I doubt it. My guess would be for something more radical, perhaps in response to the demands of distributed systems or grid computing.

Alex Peake

Posts: 13
Nickname: alexpeake
Registered: Jul, 2003

Re: After Java and C# - what is next? Posted: Jul 7, 2003 3:31 PM
Reply to this message Reply
All the pieces of "what is next" are out there, we just need someone to put them together.

Here is a suggested list of issues (unordered) with current examples:

Simple Syntax Lisp/Scheme (almost none), Smalltalk (simple), Python/Haskell (indent)

Easy Data Structures ML, Erlang, Smalltalk, Lisp, ... (Lists, Records, Tuples, Trees, Sets, Dictionaries, Relations, ...)

Pattern Matching ML, Erlang, Haskell, ...

Generic Methods Clos

Tail Recursion Elimination ML, Lisp, ...

A Complete Language of Macros (Pre-Processor) Lisp/Scheme, MetaML, ...

Type Inference ML, Haskell, Qi, ...

Mixins PLT Scheme, CLOS, ...

Easy Interop (with C libraries, Java, COM, .NET) Lisp/Scheme (some), SML (.NET), Smalltalk (some)

Great UI Building (+ Interop) Lisp/Scheme, Smalltalk (some), Visual Studio, Delphi

Easy Parsing TXL, ... (not Lex/Yacc, IMHO)

Distributed Programming Erlang, ...

Concurrent Programming Erlang, ...

Web Server Programming Smalltalk, Lisp/Scheme, Erlang, ... (written in the language), Java, ASP

Large Library Smalltalk, Lisp, Java, COM, .NET

IDE (OK, not language, but necessary) Smalltalk, Lisp, ... (but they are all lacking - no integrated design, experiment, model, code, code generation, test, review, refine, ...)

Vendor for Support (Mailing lists are ok, but in a time crunch or for obscure problems a vendor helps) Microsoft, Cincom, ...

Books to learn from (lots) VB, Java, .NET, ...

Vincent O'Sullivan

Posts: 724
Nickname: vincent
Registered: Nov, 2002

Re: After Java and C# - what is next? Posted: Jul 8, 2003 7:06 AM
Reply to this message Reply
> Is the existence of redundant languages any good? Does it
> help programmers in any way? Do we profit from having a
> choice between Java and C#?

The answer to all these questions is "Yes". The existence of similar languages stimulates the respective 'owners' to continually enhance the language, in order to improve its competative edge in the market. Of course, you might not be impressed by the 'improvements' but that's another story.

> In contrast to the respective
> language designers <i>we</i> do not believe that one
> language is superior to the other. The fact that Java and
> C# are so similar is tiring and the fact that they are
> different makes it even worse.

I don't find it tiring since, like most people, I only use one of these languages. However, I recognise that stagnation within a language is best prevented by the presence of a potential rivals.

90% of the code I write basically takes commercial data from one set of tables, manipulates it (manually or automatically) and places the results in the same or other tables. Over the years I've done this using COBOL, PL1, VB, Java and Python. In my experience the productivity difference between any of these languages is much less than an order of magnitude. The most significant differences between these languages is actually a product of the hardware (teletypes -> monitors), OS (command line -> graphical) and data storage (flat -> relational) environments in which they reside, not the languages themselves.

Vince.

Tiago Antao

Posts: 26
Nickname: tiago
Registered: Feb, 2003

Re: After Java and C# - what is next? Posted: Jul 8, 2003 9:25 AM
Reply to this message Reply
Adding to some of the points here, I would say: Domain Specific Languages and all that is needed to make them a reality. This would be a productivity booster and a revolution in the way things are made.

Although I like Python can someone explain me where is the revolution there? I would call it a good evolution.

Joost de Vries

Posts: 19
Nickname: yoozd
Registered: May, 2003

Re: After Java and C# - what is next? Posted: Jul 9, 2003 10:57 AM
Reply to this message Reply
After the curly braces: that's an interesting topic.
Although it's somewhat disappointing that you don't provide any thoughts on possible answers.
Just let us do the real work, eh?
:-|

But sarcasm aside:
I've been looking around regularly over the years and I haven't found anything of which I'd say: that's going to be much use.

Although I must admit that I terminated my investigation of Ruby a few years ago thinking Ruby would never get used in the corporate world I work in.
But now people are suggesting you could use Ruby for enterprise development....
Does not convince me yet.

But recapulating the things I found that interested me:
- aspects ofcourse: a fundamentally new design construct.
- metadata on classes as in c# & java. I suspect we haven't got a clue what kind of new patterns & solutions get possible by coupling annotated classes with declarative behaviour.
- the language Mercury (descendant of Eiffel I seem to remember) has this notion of infering what is the value of the result variable you want to compute. So for instance you call a method that has let's say three arguments. You provide only two with a value and it infers the value of the variable you did not bind to a value. So that's an 'out' variable. But that could have been any of the other arguments too. The interesting part is that the method implementation can be abstracted over several of its variables.
- I was interested in Jaron Laniers point about software being fundamentally brittle since the smallest of faults often leads to total failure. See http://java.sun.com/features/2003/01/lanier_qa1.html
I'm not aware of any language implementations that provide fault tolerance at the language level.
- I did get a little tired of academics saying that functional programming is superior to imperative languages (like the curly braces) but not being able to come up with anything more real-world than the N-Queens problem. But I've been reading a bit of the online drafts of David Mertz' new book 'Text processing in Python'. And he seems to apply functional programming to real world programs, aiming to solve real world software engineering challengs. So that leaves me to desire higher-order functions in Java. I suspect that higher-order functions could lead to elegant maintainable design patterns.
Think I'm gonna buy that book.
- I've been intrigued by Oz for a long time. It's a multi-paradigm language that addresses issues such as distributed programming in a new way. I do find it has a steep learning curve. But maybe that's just because it's so different from the curly braces!
- dotNet's notion of abstracting libraries over provider language and client language. I find it's always a pity that new language has to reimplement all the basic stuff: let's say I've implemented an interesting piece of software using a new language. Let's say some neat piece of code in Oz that generalizes the notion of personal information like email, sms, rss feeds, websites. I want to have it read some RSS feeds. Hm, where to find an XML parser. Most of these languages don't provide these mundane things. There's one but nothing has been done on it for three years. (This is a situation I was in when trying to develop something in Eiffel) Someone has wrapped a C++ parser for the purpose but that doesn't seem very stable either.... And so on.
Ofcourse this could be done an a JVM too.

Those are the things I can come up with.
Anybody else experience with interesting non-OO/imperative languages?

groeten uit Nederland,
Joost de Vries

Greg McClure

Posts: 3
Nickname: chromex
Registered: Jun, 2003

Re: After Java and C# - what is next? Posted: Jul 9, 2003 4:45 PM
Reply to this message Reply
I think some good statements have been made on this board regarding computing language concepts, and I think in order to understand what is going to be coming next, and "next" may be a long "next" away, you need to think more along those lines.

The primary conceptual framework that everyone is discussing, which makes sense for this site, is OOP. Well, Java and C# can evolve and continue to evolve and as languages and frameworks, because of the sheer money behind them, they may become the final word on OOP. Personally, I tend to disagree, I think both Eiffel and Python outclasses both of these languages as both OOP languages and pure production languages, conceptually and syntactically, but there aren't any big corporations lining up behind Eiffel and most corporate developers seem to have a hard-on for C-style syntax. Python is popular for certain things and will succeed in certain areas.

What about functional programming? Lisp, Haskell, OCaml? In my opinion these languages, which are suitable for many, many things--certain implementations of OCaml and Lisp frickin' HAUL--aren't used as much as they could or should be because, very simply, they require a programming paradigm and frame of mind that is foreign to most younger, cheaper, average developers. Put simply, you need to be a bit bolder (read, willing to try something new and different) and a bit smarter to leverage these languages effectively, because they aren't very imperative, they aren't OOP at all (well, Lisp has CLOS, and CLOS is great, but Lisp doesn't constrain you to it one bit), and they aren't as familiar to many younger programmers, or even many older ones.

Tell that to a typical Java developer, who's been weaned on UML, OOP, and framework conveniences, and you'll get a lecture on the "future", and the glories of Java, and blah, blah, blah. In my opinion, if you want to see the future, you need to open your eyes a bit wider and be willing to see some things that you might not have expected or that Microsoft or Sun might not be all that excited for you to see. That's why visionaries are rare people (and keep in mind I'm not claiming to be one, I'm just saying ...).

Also, someone posted a long list of computer languages by category, but I think some of the categories were a bit dubious, and for some reason Erlang, another damned corporate language, was overrepresented. Somebody must work for Ericsson. A better list is here:

http://www.hypernews.org/HyperNews/get/computing/lang-list.html

Ed Smiley

Posts: 4
Nickname: hce
Registered: Jun, 2003

Re: After Java and C# - what is next? Posted: Jul 9, 2003 10:47 PM
Reply to this message Reply
Fundamentally, the advances in programming languages are due to growth in two areas, which I call representation and grouping.

The change from non-procedural code to procedural code represented a fundamental grouping of actions, but with little grouping of data. The chief representations were the grouped action (block) and the parameterizable action module (subroutine). This reflected a time when data (memory, disk space) was expensive, and therefore more primitive data handling was tolerable.

The change from procedural code to object oriented code grouped by object rather than action. An object clusters both actions and data together. as soon as you start using rich media, you have much more complex data. If you examine early Windows C code for GUI applications, you can see the code crying out for associating the now very complex data and actions, and treating the actions as operations on objects, as you would see in MFC or Swing/JFC. In addition, the concept of inheritance added a representation of abstract transitive (but non-commutative) class memebership.

One area of problems that is not mapped well into current languages in a maintainable way is cross-cutting concerns, such as logging. Again, another scaling issue arises with new levels of complexity in distributed n-tiered systems. Aspective programming and the hyperdimensional model may start showing up as built into some new languages.
e.g.: http://eclipse.org/aspectj/

Another area my be the building in of major pattern constructs, which would simplify the construction of major architectureal patterns.

Note that in none of this, do I suggest that will previous forms of programming go away, but they will be implemented as degenerate cases. For example a hello world program in FORTH (as I remember)

"hello world" .

would have to have a main function (procedural) in C. In Java, it would also need a class, even though these are not needed.

rocko

Posts: 2
Nickname: rocko
Registered: Jun, 2003

Re: After Java and C# - what is next? Posted: Jul 10, 2003 6:05 AM
Reply to this message Reply
The question shouldn't be for the next language, but for the next programming paradigm, since languages implement paradigms.

Kevin Greer

Posts: 2
Nickname: kgr
Registered: Apr, 2003

Re: After Java and C# - what is next? Posted: Jul 10, 2003 9:06 AM
Reply to this message Reply
It is superficial to think of all languages with "curly braces" as belonging to the same family, evolution or progression. Except for Java's use of C-like syntax, Java is actually a much closer relative of the Pascal/Modula line of languages. Pascal isn't cool though and C is. In a similiar way, Perl shares almost identical semantics to Scheme, except that it has droped the lists and added C-like syntax (and added a lot of practical Unix shell-like stuff). Same for evolution from NewtonScript to JavaScript and from Self to Ruby. (BTW Both Ruby and Self are excellent languages and I think that these "Prototype-Based" languages are the way of the future.) Perhaps the next "C" language should be Ruby (Self?) with braces? If no language or language concept can ever receive mass acceptance until it is cloaked in C-like syntax, then all progress forward will incorrectly appear to be in the evolution of C.

Michael Ruppert

Posts: 2
Nickname: merit
Registered: Feb, 2003

Re: After Java and C# - what is next? Posted: Jul 10, 2003 10:50 AM
Reply to this message Reply
have a look at the plan9 OS and perhaps inferno featuring Limbo

Michael Ruppert

Posts: 2
Nickname: merit
Registered: Feb, 2003

Re: After Java and C# - what is next? Posted: Jul 10, 2003 11:12 AM
Reply to this message Reply
I really don't know what will be next
There still is(was) a language which is 'superior' to C# and Java. Objective-C. But the things that made me more productive habe been the tools around it. Interface Builder with real software ICs and Project Builder and a bulk of real frameworks. And this was in the eighties.
Please let me know if there is something equivalent in this Java/C# world. The tools I have to work with now (IDEA, TOGETHER, ....) are nice, but I am not so productive any more.
By the way, ist there a good IDE to use with haskell. (Xemacs, no please !)

Gregg Irwin

Posts: 1
Nickname: gregg
Registered: Jul, 2003

Re: After Java and C# - what is next? Posted: Jul 10, 2003 2:31 PM
Reply to this message Reply
<< Will there be a revolutionary language like C again - invented by programmers rather than corporations? >>

Yes, I think there will be--even now, there is at least one.

Will it (REBOL) ever be as popular as C or VB? I don't know, and I don't particularly care.

<< A language that will be fun and exciting to use - free of baggage, convenient, consistent, comprehesible? >>

Yes, yes, yes, and yes. Convenience wears many hats: easy to learn, platform neutral, simple to install, multi-paradigm, and more. Baggage may be the biggest issue we face because it adds complexity, often without adding comparable value. Complexity, like stress, is a silent killer.

Raw usability is very important, and it exists on multiple levels. Both C and BASIC provide it, but in different ways and for different target audiences. In my opionion, Lisp and many other languages popular in the academic world sacrifice usability in the name of inner-beauty and purity of form. They may be great, but can normal people use them productively?

<< What would it look like? >>

It would look like what we want it to look like.

By default, it should understand the things we discuss on a daily basis; beyond just lists and strings, it should understand things like URLs, email addresses, currency values, tags, etc.

From there, it should be malleable. Domain specific langugages were mentioned; they are both powerful and, sadly, under-utilized. Lisp (and Caml and others), often mentioned in replies here, is great for building them but there are tradeoffs. Embedded languages are constrained by the syntax of the parent language, but are much easier to develop. In that light, the parent language should have as little syntax as possible.

<< Do we need such an innovation, or are we happy anyway and cannot even think of a language better than Java or C#?>>

I think we need lots of innovation. Many of the best languages had a specific goal in mind when they were designed; we need more languages like that, and domain specific languages are an important step in that direction (think of PIC, TBL, EQN, etc.). We need to leverage them and to do that, it needs to be easier to design and build them. Imagine if you had the equivalent of Mathematica for designing software.

Whether you use a functional, OO, or imperative style; UML, aspects, or design by contract; FSMs, RegExs, or XSLT, it all boils down to expressing a solution to a problem and communicating that solution to another person or a machine.

We need to climb much higher up this mountain so we can see more of the forest.

Isaac Gouy

Posts: 527
Nickname: igouy
Registered: Jul, 2003

Re: After Java and C# - what is next? Posted: Jul 10, 2003 3:48 PM
Reply to this message Reply
Will the next language be an attempt to combine ... ?
Yes, an attempt to combine SQL, XML and OO ;-)

Unifying Tables, Objects and Documents
http://research.microsoft.com/~emeijer/Papers/oopsla.pdf

John Stoner

Posts: 5
Nickname: jstoner
Registered: May, 2003

why a language at all? Posted: Jul 10, 2003 3:49 PM
Reply to this message Reply
Here's an unconsidered question: what problems are best solved by a language feature, and what problems are best solved other ways, say API features or IDE features? An example is multithreading. I'm not saying building a language around multithreaded execution is a bad idea, but it's something different languages do different ways. It can be done with Java, without any special syntax. I can get a Thread object much like I can get a Customer object.

It might be interesting to define a set of languages that play together, within a larger framework. I've done plenty of Java/SQL code, which can be clunky, but imagine doing complicated query code in Java. Shudder.

There's a tension between the general and the special purpose. Perl is powerful, but it can make you feel dirty. Maybe ML is the right tool to do that kind of thing. I don't know much about it.

Flat View: This topic has 46 replies on 4 pages [ « | 1  2  3  4 | » ]
Topic: Python, Java, Flex, and RIAs Previous Topic   Next Topic Topic: The Adventures of a Pythonista in Schemeland/28


Sponsored Links



Google
  Web Artima.com   

Copyright © 1996-2014 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use - Advertise with Us