You are not logged in.
I honestly feel that the future of programming languages is going to be a result of added features to languages and other modifications or alterations, rather than a complete overhaul of how we do programming. C introduced the concept of curly bracers syntactically, along with structs semantically (at least, as far as I know - feel free to correct me on that). C++ had a large hand in contributing to object oriented programming. And then came languages like Java, C#, VB, etc.
One language which really has a futuristic potential I think is D (at least, from what I've read about it). While it has garbage collection, you can turn it off. I know it's possible to 'hack' GC into a language like C or C++, but unless it's a native feature within the language, I don't think it really counts. Objective-C is similar in the respect that you can control your GC as well.
Some thoughts:
Google comes out with 'Dart', and there's a fair amount of programmers who are against it partially due to the fact that it has combined the notion of dynamic typing with static typing. I honestly think this is a step in the right direction; where they went wrong in my opinion was adding too much detail in their design of their type interface. For example, rather than having int, float, etc. they created a generalized 'num' type which was supposed to dynamically convert - whatever the variable which used that type held - data at runtime. The problem with this is that they also added int, float, etc. While I could see some situations where this could be useful, I also see some problems, as it goes against what the ideal programming language is supposed to represent: simplicity. C has this simplicity (C++ may not quite as much, but I would consider that an exception to the "think simply" rule ).
Anyway, it appears that there is still room on the board for a new language to emerge itself in terms of being considered the "language of the future". Besides, Dart is strictly for Server/Client side programming if I recall correctly, which means that there isn't much room for it in the system-side programming (unless they release an API).
Honestly, though: Assembly, which I have yet to learn (though I will very soon), is a very important part of the programming language paradigm. One thing that truly revolutionized C in this sense was that you can COMBINE your C code with Assembly code, for optimization purposes. THAT is an amazing concept in my eyes. I believe the next generation of language should offer the exact same approach, but iron out and improve the areas which C missed.
C will reign supreme forever.
+1
Offline
So, perhaps a more realistic expectation is, not the replacement of any low level programming, but perhaps a widening of the spectrum between low and high level languages?
One language which really has a futuristic potential I think is D (at least, from what I've read about it).
I've recently purchased Andrei Alexandrescu's book, "The D Programming Language"; it is very well written. I think once the compiler technology catches up (e.g. an *official* D front end for GCC, and/or an updated front end for LLVM, and/or DMD gets a major modernization overhaul), and more libraries emerge, D could become a viable alternative to C++. Whether or not it actually goes mainstream probably depends more on social factors than technical merit. On the one hand, D is trying to compete head-to-head with C++, and there are some C++ programmers out there that treat C++ like a religion. On the other hand, no body lives forever. Perhaps as these "dinosaurs" die off, and the more agile minds of the next generation begin to take their place, new languages like D could gain a foot-hold.
C will reign supreme forever.
Oh cool, a talking dinosaur
- Good judgement comes from experience; experience comes from bad judgement. -- Mark Twain
- There's a remedy for everything but death. -- The wise fool, Sancho Panza
- The purpose of a system is what it does. -- Anthony Stafford Beer
Offline
my 2 cents on the future
1 / a language easy to use for parallel computing
2 / interpreted languages becoming as fast as fortran programs
Offline
I think that on some level there will "always" (in quotes since I can only predict things based around microprocessors) be assembly code, and as long as there is assembly there will be a need to get as close to it as possible while still writing (relatively) portable code. So far in computer history C has been the most popular choice for that, and I think it will be for quite some time, possibly even for the rest of our lifetimes. A new C standard (C11) was even released at the end of last year, so it is far from a dying dinosaur.
People have tried to think of a drastic re-imagination of how to do programming for years, but so far it mainly seems to lead to things like Apple's Automator or Radical Breeze's Illumination Software Creator which does allow people to program things visually... but in a far less efficient way than actual software developers writing code could do the same thing. Heck, both examples even transform your visual actions into code as an intermediate step.
I've even tried writing code on an iPad just to try it, it was actually pretty nice... I did it with the device placed on a stand using a bluetooth keyboard. Even on a natively touchscreen device like that the best way to code is using a keyboard. The nice thing with Android and iOS tablets are that they are very portable computers that work really nicely with external keyboards, to me that is the future usage scenario for such a device by a software developer.
Looking at recent history of programming languages I think what in the short term what will happen is that there will be more and more programming languages. I've seen that effect myself as it feels like I do work in a bigger and bigger set of languages every year. This will both lead to that there will be more languages to choose from based on what you like, but it will also mean that software developers will need to be more language-agnostic since the choice of language will keep being made for you in a lot of cases unless you are managing the project.
Basically I don't think we will see any revolutionary changes in the next 10 years, some languages might grow and some might shrink a bit... and we'll definitely have more of them, but I think the basic concepts of programming will still be the same. I think the tools for producing the code will get better, and I think that looking even further into the future we will probably have a few major paradigm shifts at the level of what OOP has been, but I think that until we have a drastic change in hardware architectures the fundamentals of how software development is done will be the same.
I haven't lost my mind; I have a tape back-up somewhere.
Twitter
Offline
So, perhaps a more realistic expectation is, not the replacement of any low level programming, but perhaps a widening of the spectrum between low and high level languages?
I've recently purchased Andrei Alexandrescu's book, "The D Programming Language"; it is very well written. I think once the compiler technology catches up (e.g. an *official* D front end for GCC, and/or an updated front end for LLVM, and/or DMD gets a major modernization overhaul), and more libraries emerge, D could become a viable alternative to C++. Whether or not it actually goes mainstream probably depends more on social factors than technical merit. On the one hand, D is trying to compete head-to-head with C++, and there are some C++ programmers out there that treat C++ like a religion. On the other hand, no body lives forever. Perhaps as these "dinosaurs" die off, and the more agile minds of the next generation begin to take their place, new languages like D could gain a foot-hold.
I would say yes on the widening of the spectrum between low and high-level languages. MASM32 for example is more of a high-level assembly language, rather than a full blow assembly language such as NASM or FASM.
As far as D is concerned, I'd agree with you in that respect: I find C++ to be a beautiful language, but I wouldn't think even once that it was perfect - it has its fair share of flaws in my honest opinion, and I hope D becomes sets a new standard as I would LOVE to try it out and see what it's capable of. I'd imagine making the move from C++ to D wouldn't be too hard either, since, if I recall correctly, the languages have many similarities. I just hope it's statically typed...
Offline
The main thing about D is that it really misses love in the Linux community. Too bad about this.
Personally I would like to see the results of some big C++ project rebuilt in D. How about KDE (and Qt by the way)? At least the compile times should drop significantly.
But this won't happen.
To know or not to know ...
... the questions remain forever.
Offline
The main thing about D is that it really misses love in the Linux community. Too bad about this.
Personally I would like to see the results of some big C++ project rebuilt in D. How about KDE? At least the compile times should drop significantly.
If people feel sceptical that yet another newcomer might be the solution to everyone's problems, I would like to entertain some doubts that such a large project of KDE will be won over in a hurry.
If D really is the way of the future, I suspect this will be demonstrated at first in small projects that win attention, and become larger with time.
Offline
If D really is the way of the future, I suspect this will be demonstrated at first in small projects that win attention, and become larger with time.
Sure! But even this needs some dedication. If at least some stable compiler was available (and kept in Community).
About KDE, I am just curious. Currently (one year ago to be precise) building it takes ages. And the outcome should be safer, with far less faults, too.
Could be any other project, though. If only a few people would gather and make D really usable in Linux systems.
To know or not to know ...
... the questions remain forever.
Offline
If at least some stable compiler was available
I thought about giving D a go since it sounds great in theory, but I found the lack of a decent (completely open) compiler off-putting.
Offline
bernarcher wrote:If at least some stable compiler was available
I thought about giving D a go since it sounds great in theory, but I found the lack of a decent (completely open) compiler off-putting.
I use gdc2-hg from the AUR. It mostly works but it is still far from perfect.
And another issue is the not-so-optimal Linux adaptation of the basic D libraries. More than enough stuff for a dedicated team. Too bad my time is limited to barely some trivial experiments.
But it is about time to make it a useful tool, imo.
To know or not to know ...
... the questions remain forever.
Offline
I recall seeing a statement by the D devs to have it merged into gcc (4.7?), likely this would give it credibility given that gcc is the 'de facto' compiler toolchain. As for C reigning supreme, I've had discussions with my fellow programmers at work regarding this and we're pretty much in agreement that nothing will ever replace C as a low level/systems language. D is competition for C++, problem is that the masses which are fluent in C++ likely doesn't see enough advantages with D for them to leave a language platform they know so well and which has such huge support. I'd say it's not out of some fanboyism/religion which bsilbaugh implied, but rather a purely practical choice.
Personally I work in C,C++ and Python and of other languages I've come across, the only one which has interested me (as in something I would consider programming in) is Go due to interfaces, goroutines and of course strong support in the form of Google. Still I wouldn't spend the time to learn it unless I had a project for which it was extremely well suited.
Offline
For you D fans, I suggest giving Go a try if you haven't already. It has several similarities with D, strongly typed, garbage collected, compiled, and a rich set of built-in data types. It also has a cool OOP model, really good concurrency support (CSP), and, last but not least, a toolchain that works well on Linux. I've been writing a lot of stuff in it lately. The impetus behind Go was just to make a highly practical and comfortable language. At least in the next 5-10 years, I don't think new languages will focus on drastically new paradigms or concepts. I think the aim will be to create consise and coherent integrations of the good bits of pre-existing languages. At least a few of the recently designed languages are like this; I personally think that Go is the nicest of them.
Offline
I agree with the above^, not because I'd like it to happen that way but simply because that's the way it appears to be going. It seems like that's been the trend for much longer than this generation as well. Look at PHP: a scripting language which was influenced heavily by C (and Java too, later on). Java was supposed to be a simplification of C++. C# was inspired by Java; Objective-c was inspired by Smalltalk; C was inspired by B. It seems like languages have always been derivatives of other languages in the past. It makes logical sense.
Offline
I'm going to predict that the the languages of the future involve a resurgence of functional programming. One of the oldest paradigms, it will never die due to it's extremely strong mathematical foundation.
A quote on Lispers.org: “Lisp ... made me aware that software could be close to executable mathematics.”
Exactly. As long as math exists as we know it, functional programming will exist as well.
As for the reasons it will see a resurgence, the first is "Javascript". It's been called "Lisp in C clothing" and quite a few popular libraries (JQuery etc) are written with a functional approach. Something which works extremely well in Javascript, a language that looks to become more popular than ever in the future.
The second is "Parallelism". Object-oriented programming is struggling to come to grips with parallelism, something which works really well in functional programming, exemplified in languages such as Erlang but quite reasonable to accomplish in Lisp, Haskell and Clojure. I've tried to implement parallelism in my C++ programs using Intel Threading Building Blocks. and while easy to use just isn't as conceptually clean as my multithreaded Lisp programs and requires me to surrender a lot of control and understanding of my program to a third party library.
So I think the language of the future needs to be able to handle parallelism on a massive scale while not abstracting it too heavily. And since we already have such a thing, it makes sense to extend and mutate the existing functional paradigm (functional reactive programming etc) rather than try to invent something altogether new. I'm keeping an eye on F# and expect a language with similar ideas but an even better implementation to eventually catch on.
Offline
As some have already pointed out: The benefits of the functional paradigm (relating to parallelism, and overall expressive elegance) are becoming increasingly difficult to ignore, as we drift further into the "sea of cores". Therefore, I think the "language of the future" will probably be a LISP descendant of some sort.
Regarding "graphical" languages:
I have some experience with "Logic Bricks", which are visual programming components used in the Blender Game Engine, to script basic object behavior. It's based on the "Sensors -> Controllers -> Actuators" concept, which is typically used in robotics, and it works quite well for problems that can be solved with some combination of provided bricks. However, a network of such high-level abstractions is inherently limiting, because it doesn't cover more general cases.
The engine also features a (poorly integrated) Python scripting interface, but many users, consisting mostly of artists, would rather click 10,000 times than write 10 lines of code.
... The word "programmer" will be used to describe a wide variety of individuals - that's for sure.
(This of course assumes that we don't slip into a dark age caused by global economic recession, or blow ourselves up in a nuclear holocaust.)
Anything can happen.
Offline
NO. NOT LISP.
!
Despite the fact that Python is a scripting language, I think it's popular enough to where its semantics may be adopted for a new programming language. I'm not a fan of the syntax (honestly, I like my fucking curly bracers, thank you very much :3), but its philosophy is awesome, and so is its community. Guido Van Rossum is a genius.
One language which I definitely do NOT see being an abstract class for the future is Objective-C, especially since Apple makes it so damn proprietary. It's messaging system is cool, but no built in constructors? Come on...
No, only Open Source languages will really have a place in the programming world in terms of how much they effect future development I think. I.e., C++, C, PHP, Python, Ruby, etc.
And you can kiss Java goodbye now that Oracle pretty much screwed it over. And I hate the fact that I use MySQL for web development...hmm, maybe I should switch to Postgres? Hehe...
Offline
Funny fact: Everytime you say "X is a scripting language", you will have at least one person telling you, that X is not a scripting language.
Offline
Python isn't a scripting language? I always thought it was interpreted O.o
Offline
Python isn't a scripting language? I always thought it was interpreted O.o
inorite? Next they're going to tell us that Java is Turing Complete!
I used to place high importance on the difference between a "scripting" and a "programming" language.
Then I became obsessed with LISP and stopped being able to distinguish them.
I tend to think that C will never go away. No matter what else we do with ourselves, C is just too portable, too concise, too tidy, and too correct.
Wouldn't hurt my feelings if C++ stopped existing.
I also tend to agree that the multi-core movement is going to necessitate more functional programming. As well as supplementary calculating devices such as this: http://www.dwavesys.com/en/products-services.html (along with whatever languages/API's crop up for them).
It seems like the world is ripe for dirty Haskell replacements (like F#) ... assuming we can convince people to stop using Javascript so much.
If I were to ask you a hypothetical question, what would you want it to be about?
Offline
holland01 wrote:Python isn't a scripting language? I always thought it was interpreted O.o
inorite? Next they're going to tell us that Java is Turing Complete!
I used to place high importance on the difference between a "scripting" and a "programming" language.
Then I became obsessed with LISP and stopped being able to distinguish them.
I tend to think that C will never go away. No matter what else we do with ourselves, C is just too portable, too concise, too tidy, and too correct.
Wouldn't hurt my feelings if C++ stopped existing.
I also tend to agree that the multi-core movement is going to necessitate more functional programming. As well as supplementary calculating devices such as this: http://www.dwavesys.com/en/products-services.html (along with whatever languages/API's crop up for them).
It seems like the world is ripe for dirty Haskell replacements (like F#) ... assuming we can convince people to stop using Javascript so much.
I wouldn't mind a lack of js. I mean, i don't hate it per se, but it's not the greatest of languages, and it's become the defacto for frontend web development i have no idea why.
D looks like it could potentially replace c++. The amount of flexibility it offers to the programmer is great.
Offline
I wouldn't mind a lack of js. I mean, i don't hate it per se, but it's not the greatest of languages, and it's become the defacto for frontend web development i have no idea why.
Because it's on everything.
To the extent that JS is like Scheme, it is awesome. To the extent it is also like LISP, it is obnoxious.
I want to like Javascript... it's just that it's got too much Javascript in it.
D looks like it could potentially replace c++.
I respect D from afar. I've never cared enough to actually compile anything in it. The whole contract programming thing is pretty sexy. Makes C# look like the old BASIC interpreters that made you prefix all lines with numbers.
Edit: Or it would if LINQ didn't also exist (thus making C# more like LISP!)
Last edited by Ishpeck (2012-04-10 22:34:36)
If I were to ask you a hypothetical question, what would you want it to be about?
Offline
I don't want to think of future languages haha, I haven't even learned enough stuff to make anything useful in one. I started first with (Javascript, GML) in highschool taught the basics of programming concepts (if statements, loops..etc). Then I tried my hand at C++ (several different times in fact) but it's almost too much of a language( at least right now anyway). Now currently working with python. It's already mind blowing the number of tools available to programmers. I hope the future keeps C, and that all of these lanuages that come out stop coming out, I would like to know enough langauges to tackle any problem I am faced with, but its going to be required that I keep learning languages just because they are languages. And the more you know it seems the better.
As far as visually programming (drag and drop), game maker used it when I learned that and developed a couple games, but I learned to use GML instead (its the actual language of game maker) of Drag n Drop, because all of the icons filled up screen space, where code can be structured to make it nice and clean. Plus I like comments.
Offline
As far as visually programming (drag and drop), game maker used it when I learned that and developed a couple games, but I learned to use GML instead (its the actual language of game maker) of Drag n Drop, because all of the icons filled up screen space, where code can be structured to make it nice and clean. Plus I like comments.
I think you made the wise decision in steering clear of the pointy-clicky tools.
It is true that spatial representations can be a concise and clear way to express many things. The trouble is that our brains only tend to visually comprehend three spatial dimensions and many concepts can be more complex than can be lucidly represented in that space.
The more abstract the computational expression gets, the harder it is to depict in space with shape and color. Since programming consists of dealing with many concurrent levels of abstraction, the domain specificity of a graphical depiction of any concept can quickly gyrate out of control and be no more helpful than existing forms of programming notation for depicting the procedures/concepts.
If I were to ask you a hypothetical question, what would you want it to be about?
Offline
holland01 wrote:I wouldn't mind a lack of js. I mean, i don't hate it per se, but it's not the greatest of languages, and it's become the defacto for frontend web development i have no idea why.
Because it's on everything.
To the extent that JS is like Scheme, it is awesome. To the extent it is also like LISP, it is obnoxious.
I want to like Javascript... it's just that it's got too much Javascript in it.
holland01 wrote:D looks like it could potentially replace c++.
I respect D from afar. I've never cared enough to actually compile anything in it. The whole contract programming thing is pretty sexy. Makes C# look like the old BASIC interpreters that made you prefix all lines with numbers.
Edit: Or it would if LINQ didn't also exist (thus making C# more like LISP!)
Yeah, I haven't really either cared enough to compile anything but a hello world either. I wish it had better support for Linux in terms of an IDE, but that will have to wait it looks like. The D-IDE for Windows is great; you can tell that it's based heavily off of Visual Studio, which is nice for Windows programmers.
And as far as C# and LINQ....meh, C# just does everything for you, since that's what Microsoft thinks is what most programmers want, I guess. I like the features of the language, and I'd say it has a good standard library. Personally, I like having control over what I'm programming, as that way I actually learn and can build something the way I like it. Hence, why C++ is my favorite language
Python is awesome too.
Offline
Yeah, I haven't really either cared enough to compile anything but a hello world either. I wish it had better support for Linux in terms of an IDE, but that will have to wait it looks like. The D-IDE for Windows is great; you can tell that it's based heavily off of Visual Studio, which is nice for Windows programmers.
http://www.prowiki.org/wiki4d/wiki.cgi? … EmacsDMode
Python is awesome too.
Python is acceptable. It's my main work-horse in my day job.
If I were to ask you a hypothetical question, what would you want it to be about?
Offline