8

I've recently been looking into the topic of programming languages and from what I've seen, few to none serious languages try making really "new" things that were not seen before their creation.

  • Why do all more or less successful programming languages since 1980 or so just combine aspects of their predecessors?

I just can't believe that programming languages "can't get any better"..

0xF
  • 113
  • 1
  • 2
  • "few to none serious languages try making really "new" things"? Really? Do you have an evidence to support this? What are "serious" languages? What are these mysterious "new" things you're looking for? – S.Lott May 22 '10 at 11:55
  • 3
    I'm not the OP but i think with non-serious languages he means brainf*ck, whitespace, LOLCODE, etc... which _do_ have new ideas... just horrible ones. –  May 22 '10 at 11:57
  • 2
    Sorry your question got cloesd. You might enjoy a closely related question at http://stackoverflow.com/questions/2651343 about how languages come into being and why... – Norman Ramsey May 22 '10 at 14:43
  • Other related stuff: http://stackoverflow.com/questions/432922/significant-new-inventions-in-computing-since-1980 and http://stackoverflow.com/questions/987182/improving-the-way-we-write-code and I think there was a near duplicate of this around somewhere but it didn't turn up in my search... – dmckee --- ex-moderator kitten May 23 '10 at 12:24

12 Answers12

17

Rather than being genuinely "new" I'd say that modern programming languages are gradually bringing in ideas which have been known about in computer science for decades, but haven't really hit industry - or which have previously been in niche languages, but not in mainstream ones.

For example, many of the ideas of LINQ aren't new per se - but for many developers LINQ will be their first experience of them.

Think of it as a process of "productising" previously "experimental" features. When I talked with Eric Lippert recently he said that the C# team was trying to avoid including "open research" ideas into the language - simply because they can't tell whether or not those ideas will pan out in the long run. There's plenty of room for experimentation in language, but probably not in mainstream languages.

Jon Skeet
  • 1,421,763
  • 867
  • 9,128
  • 9,194
  • 7
    +1. I think that "idea -> experimental (proof of concept) language -> niche language -> mainstream language" is probably the path that most programming concepts took before ending up in todays mainstream languages. – sepp2k May 22 '10 at 12:11
15

Uh, Perl 6?

  • active metadata on values, variables, subroutines, and types
  • parameterised roles
  • macros (implemented in Perl) that can rewrite AST or source code
  • a grammar that is implemented in Perl 6 itself, and can be extended or modified by code
  • multiple dispatch, distributive dispatch, delegation to the next item in the call chain
  • grammars as first class objects in the language - can parse pretty much anything
  • user-defined infix, prefix, circumfix operators that can use any Unicode character
  • optional strong typing
  • multimorphic equality tests
  • hypothetical variables
  • hyperoperators (SIMD processing of lists)
  • coroutines
  • lazy lists
  • junctions (variables with multiple values)
  • automatic parallelisation of code

Perl 6 takes the feature set of Perl, Ruby, Python etc., adds an optional strong type system, the OO of Smalltalk, and the functional abilities of Haskell - plus a few more innovations: just as Perl 5 brought regexes into the mainstream, Perl 6 makes non-regular grammars first-class citizens. And yes, it is under development; while not complete, it's moving fast: Rakudo Perl 6.

rjh
  • 49,276
  • 4
  • 56
  • 63
6

Mankind hasn't invented the wheel every two years again; we consistently improve it. The same applies to programming languages; we improve it not replace it.

Anonymous Penguin
  • 2,027
  • 4
  • 34
  • 49
RoflcoptrException
  • 51,941
  • 35
  • 152
  • 200
6

What about Subtext and Coherence?

Mark Byers
  • 811,555
  • 193
  • 1,581
  • 1,452
  • Frum the Subtext FAQ: "Subtext is a research prototype that is far from being a usable language". In other words: It's a nice idea but we haven't found out how people can make anything usefull with it. –  May 22 '10 at 12:16
  • 2
    @dbemerlin: It's an experimental language. Quite often with experimental languages the ideas lie dormant for 20 or 30 years before a mainstream language will pick up some of the best ideas, perhaps in modified form. But mainstream languages are slow to change because people are slow to change their habits. – Mark Byers May 22 '10 at 12:25
  • 2
    @dbemerlin: Every feature is experimental until it's not. Many of the features we take for granted today wouldn't exist if they hadn't first been implemented in experimental languages. – sepp2k May 22 '10 at 12:30
  • This was rather interesting, thanks. – rjh May 22 '10 at 13:14
4

Programming languages can get much better! Have you looked at languages like Agda or Epigram? Of course these are research languages, so perhaps not what you would call 'serious languages'. However, if you are interested in where mainstream languages may go in the future they may offer some insight.

Alasdair
  • 778
  • 7
  • 10
3

Well, lisp has some stuff no one has copied yet and has been around forever (I'm looking at common lisp, specifically)

krzysz00
  • 2,083
  • 12
  • 24
3

Computer Languages get new Ideas all the time but they still have to compile down to the same assembler instructions, so there can be no fundamental changes. In the end all your code will still consist of loops, memory segments (=> variables) and lots of jump instructions.

A new path of programming languages is Quantum Computing which might be a "new enough" idea for your taste.

  • 6
    Haskell and C compile to the same assembly language, but I'd still consider programming in haskell a fundamental change versus programming in C. – sepp2k May 22 '10 at 12:16
2

New languages are always coming, look at scala.

fastcodejava
  • 39,895
  • 28
  • 133
  • 186
  • 1
    Well, scala is a combination of ruby and java, so his statement that languages just combine is still true. –  May 22 '10 at 11:53
  • 4
    @dbemerlin: Which one of ruby or java (or any other language) has extractors (pattern-matching on non-constructors)? How about path-dependent types? Self types? – sepp2k May 22 '10 at 12:04
2

Because we haven't yet figured out how to use many of the "old ideas" that have been around since at least 1970 really well, and there haven't really been any fundamentally new ideas that look like they'd completely change the game in a way that would make using them more useful than improving what we already have.

Michael Borgwardt
  • 342,105
  • 78
  • 482
  • 720
1

I think we can collect the design patterns we use everyday and add them to a specialized language.

For this purpose Vala is a good idea, especially when you are using C mostly. It gives you object oriented, garbage collection feature and many more. I think this is one of the most successful source to source compiler I have ever tested. And it is still a soft muddy thing to play with.

KRoy
  • 1,290
  • 14
  • 10
0

New languages do incorporate new ideas; there are more physical computing things than ever. Look at Arduino; it's language helped it become popular, not to mention without it it would only be a pile of wires. It's not only the languages, it's how we use them. If people need something that isn't available, they can make it. Not to mention, programming languages are closely tied to the hardware that they run on and who makes them and the operating system. Windows can only allow programs to do so much. Plus, the people who make languages sometimes just want a more lightweight, easier to use, and open source alternative that does the same things as the same things already available. "You cannot have you cake and eat it."

Anonymous Penguin
  • 2,027
  • 4
  • 34
  • 49
0

If it aint broke, dont fix it.

Dalbir Singh
  • 2,629
  • 3
  • 26
  • 29
  • 11
    If you can't name 5 things you hate about your current language you haven't been using it enough. – Yacoby May 22 '10 at 11:56
  • Thanks for the downvote - if you read the comment by '– S.Lott ' in the OP post I think it makes clear sense... sure its great that languages develop more features over time, but the OP argument seems to be that all principles from the 1980s should be changed - my argument is, if there's a need then sure...but despite these methodologies and concepts being fairly old they do work very well even today. – Dalbir Singh May 23 '10 at 00:58