PDA

View Full Version : Anyone know anything specific about the 6th generation of programming languages?



Blacklightbulb
December 25th, 2009, 08:54 PM
Anything? Or does it depend on the next generation of computers? If so anyone have any info about those? All I know is they are expected 10 years from now. God I'll be old by then :(!

Dark Aspect
December 25th, 2009, 10:58 PM
Anything? Or does it depend on the next generation of computers? If so anyone have any info about those? All I know is they are expected 10 years from now. God I'll be old by then :(!

Hm, might be mistaken but its seems like I heard something about this a while ago. People were saying it will be completely based on web programing and cloud computing. I don't really put a lot of faith in that crap.

sidewalkcynic
December 26th, 2009, 01:24 AM
I'm not a programmer, just a dreamer, but why might it take ten years?

What are the first five generations, anyway?

forrestcupp
December 26th, 2009, 02:01 AM
I'm sure by then people will still be using C, C++, and Assembly a lot.

jrothwell97
December 26th, 2009, 02:49 AM
I'm not a programmer, just a dreamer, but why might it take ten years?

What are the first five generations, anyway?
Officially, the "generations" are as follows (I think):

Machine code. The lowest level, at a level understood directly by the processor.
Assembly. A mnemonic for machine code, and little more.
Procedural languages. Variables, structures, complex functions and types. "Do this." Examples: C, Pascal, BASIC.
Object-oriented languages. Objects, methods, classes. On this event, create a new one of those and tell it to do that. Examples: C++, C#, Visual Basic (shudder), Visual C++ (doubleshudder), Objective-C (WTF?)
Declarative languages. Queries, sources, relationships. "Find out this." Examples: PROLOG, SQL.

Exodist
December 26th, 2009, 03:23 AM
I noticed I have to take C# next fall in college. What the heck is C#? Is it like the next step up from C and C++?

NovaAesa
December 26th, 2009, 03:38 AM
I noticed I have to take C# next fall in college. What the heck is C#? Is it like the next step up from C and C++?
C# is a strange mix between Java and C++, all with MS branding!

Hwæt
December 26th, 2009, 03:39 AM
I noticed I have to take C# next fall in college. What the heck is C#? Is it like the next step up from C and C++?

It's basically the unholy marriage of C++ and Java. It's also a programming language offered by Microsoft. It's available on Linux via mono.

EDIT- It's also the language you use with the .NET and Mono runtime environments.

gsmanners
December 26th, 2009, 05:11 AM
I don't know how the next generation of languages will work, but I do know what will be used to create them: C and assembly language.

Exodist
December 26th, 2009, 05:38 AM
C# is a strange mix between Java and C++, all with MS branding!


It's basically the unholy marriage of C++ and Java. It's also a programming language offered by Microsoft. It's available on Linux via mono.

EDIT- It's also the language you use with the .NET and Mono runtime environments.

I goggled it, but Wikipedia wasn't 100% clear other then the proprietary MS branding.

C++ + Java.. ehh.. Sounds like the marriage of two unoriginal ideas..
Well I want knock it before trying it, really since I have no choice in the matter since I will have a whole semester of learning it.. hehe It may be good, but IDK.

Eisenwinter
December 26th, 2009, 09:11 AM
Well I want knock it before trying it, really since I have no choice in the matter since I will have a whole semester of learning it.. hehe It may be good, but IDK.
Can't you learn another language instead? Why are you forced to learn C#?

earthpigg
December 26th, 2009, 10:13 AM
I don't know how the next generation of languages will work, but I do know what will be used to create them: C and assembly language.

I don't know how the next next generation of languages will work, but I know what will be used to create them: sticks and rocks. and software patents.

koenn
December 26th, 2009, 10:27 AM
Officially, the "generations" are as follows (I think):

Machine code. The lowest level, at a level understood directly by the processor.
Assembly. A mnemonic for machine code, and little more.
Procedural languages. Variables, structures, complex functions and types. "Do this." Examples: C, Pascal, BASIC.
Object-oriented languages. Objects, methods, classes. On this event, create a new one of those and tell it to do that. Examples: C++, C#, Visual Basic (shudder), Visual C++ (doubleshudder), Objective-C (WTF?)
Declarative languages. Queries, sources, relationships. "Find out this." Examples: PROLOG, SQL.

hm, i always understood that these generations represented the level of abstraction they provided, so that would be

1- machine code
2- assembly : mnemonics

3-
the first so-called "high level" languages: statements that each represent more than a single machine instruction.
this would enable new programming paradigms such as structured programming, object-orientation, ...

most modern languages still fall in this category

4-
languages and tools that produce a result which would require multiple statements if expressed in a 3GL. Goes to declarative languages (eg SQL), codeless programming (eg Query By Design), drag-and-drop GUI creators, report generators, code generation (eg UML to Java), ...


5-
5GL was expected to further abstract from 4GL to the point that programs would be created by merely formulating constraints, as opposed to have a programmer implement an algorithm.
However, marketing uses the term "5th generation" to sell products that provide 4GL tools in an integrated environment where users can "point and click" to create an application


6-
never heard of 6th generation until this thread

lisati
December 26th, 2009, 10:50 AM
I don't know how the next generation of languages will work, but I do know what will be used to create them: C and assembly language.

Maybe in the initial stages, and then it'd evolve into one of those seemingly incestuous languages that compiles itself.

jrothwell97
December 26th, 2009, 02:21 PM
I goggled it, but Wikipedia wasn't 100% clear other then the proprietary MS branding.

C++ + Java.. ehh.. Sounds like the marriage of two unoriginal ideas..
Well I want knock it before trying it, really since I have no choice in the matter since I will have a whole semester of learning it.. hehe It may be good, but IDK.

Essentially, it's the better bits of C++, Java and Visual Basic combined into the same language, with some XML code documentation features that it seems no-one uses.

It's by no means the best language in the world, but it beats VB (and probably Java) hands down.

Mornedhel
December 26th, 2009, 03:01 PM
Maybe in the initial stages, and then it'd evolve into one of those seemingly incestuous languages that compiles itself.

That's been around since forever.

gcc is written in C.

Exodist
December 26th, 2009, 05:34 PM
Can't you learn another language instead? Why are you forced to learn C#?
I am re-learning Basic again in addition to C, C++, XML and many others. There is a whole barrage of programming classes. But they are all required college courses. So no you dont get the option to pick and choose.

Exodist
December 26th, 2009, 05:37 PM
Essentially, it's the better bits of C++, Java and Visual Basic combined into the same language, with some XML code documentation features that it seems no-one uses.

It's by no means the best language in the world, but it beats VB (and probably Java) hands down.
Interesting, I am actually thinking this may be a good class.
If it can be used in Mono, this may be a good thing.

forrestcupp
December 26th, 2009, 06:51 PM
Don't be thrown off by anti-MS sentiments. C# is a great language.

Also, you'll find that if you learn basic programming skills and sharpen your algorithm creating skills, it is pretty easy to learn a lot of different languages. The syntax is a little different, but they all use the same basic principles.

Danimoth
December 26th, 2009, 07:40 PM
Don't be thrown off by anti-MS sentiments. C# is a great language.

Also, you'll find that if you learn basic programming skills and sharpen your algorithm creating skills, it is pretty easy to learn a lot of different languages. The syntax is a little different, but they all use the same basic principles.

++

I started programming with C# and thought it was pretty cool. Clear code, easy to write especially when using resharper. The latter is a must-use plugin if your using Visual studio, which essentially adds some(most?) of the functions you see in Netbeans for Java.

C# got me started with programming and it was easy for me to learn C++/Java afterwards.


I abandoned C# because it is slow and has no native compilation(note: java does). I think java is better in that aspect, because you get all code_writing_helpers while also having the option to natively compile if you need to.
I use java(compiled natively with gcj) for the most part and C++ for time critical parts of an application. I also didn't want to be tied up to .NET/Mono but thats just me.

Regardless, C# is very poweful and even if for some reason it doesn't turn out to be your language of choice, as quoted poster said, everything you learn in the course will help you in other programming languages anyway, so its by no means a waste.

Exodist
December 26th, 2009, 07:48 PM
Don't be thrown off by anti-MS sentiments. C# is a great language.

Also, you'll find that if you learn basic programming skills and sharpen your algorithm creating skills, it is pretty easy to learn a lot of different languages. The syntax is a little different, but they all use the same basic principles.

In deed. First language I learned was GW/BASIC on my Tandy 1000HX. I was fairly good at making software and kept my skills sharp through college the first time and learned VB98. But I joined the military before finishing college and haven't did any REAL programming since then, so I am in a relearning faze I guess you could say. My old college instructor is letting me take a few programming courses online that should have already been take prior to be taking a few others at college this semester, he insisted that he is confident that I wouldn't have an issue with them since he has known me for over 12 or 13 years now. Should be fun :)

Seems strange talking about going to college at age 32!

phrostbyte
December 26th, 2009, 08:03 PM
In deed. First language I learned was GW/BASIC on my Tandy 1000HX. I was fairly good at making software and kept my skills sharp through college the first time and learned VB98. But I joined the military before finishing college and haven't did any REAL programming since then, so I am in a relearning faze I guess you could say. My old college instructor is letting me take a few programming courses online that should have already been take prior to be taking a few others at college this semester, he insisted that he is confident that I wouldn't have an issue with them since he has known me for over 12 or 13 years now. Should be fun :)

Seems strange talking about going to college at age 32!

Not strange at all. When I was in CS there was someone in his 50s in the program. :)

lisati
December 26th, 2009, 08:39 PM
That's been around since forever.

gcc is written in C.

True. Someone might come up with a variation of it for the newer languages.

Exodist
December 26th, 2009, 08:50 PM
Not strange at all. When I was in CS there was someone in his 50s in the program. :)
When I was in college before there was a few folks in their late 40s and one old lady. But now I feel like I am part of "that bunch", the old folks crew.. :(

Junkieman
December 26th, 2009, 09:07 PM
I noticed I have to take C# next fall in college. What the heck is C#? Is it like the next step up from C and C++?

C and C++ compiles to native bytecode, while C# compiles to MSIL bytecode which is run through the .Net runtime environment.

The interesting thing is that all .Net languages, J#, VB, C# all compile to the same MSIL-typed executable.

.Net provides garbage collection kinda like Java. So if you forget to release an object from memory, it will get disposed and canned when it goes out of scope - In C this would lead to memory leaks, chomping all system resources and it all grinds to a halt ;)

Personally I think it's typical M$ to require such a bulky framework for their new gen languages, when native PE bytecode worked fine all along. But if you want the skill for a job then C# is a good choice.

Back to the topic ;)
Isn't a 6th gen language interpreted? I haven't heard of it until this thread.

julianb
December 26th, 2009, 09:28 PM
Here's the direction programming is heading:

it will be easy for programmers to offer users more choice.

programmers will offer users the chance to have data accessible from any internet-connected computer, AND will offer users the chance to store data locally (synchronized with on-the-cloud data or instead of on-the-cloud data).

programmers will offer users the choice to run applications off of the local disk, or use the SAME applications via an internet connection.

programmers will offer users the choice to keep using whatever operating system they use already: windows, mac, linux, whatever.

programmers will over users the chance to start using all applications almost instantaneously, because the software will only load functions / pieces of code on an as-needed basis.

programmers will also write code in ways that make it easy for users to maintain and modify programs.

what kinds of programming fit this model?
apps that work in your web browser. they're interactive. they're compatible with many OSes. they can load near-instantaneously. apps and data can be run/stored on a server or the local machine. code is easy to read and write because it resembles lists of instructions given to a computer in "plain english".

If you can make a computer do what you want using javascript and something like php (or similar script languages), you're golden.

spupy
December 26th, 2009, 10:11 PM
What I find strange is the term - programming language "generation". A more appropriate term is "level", like stories of a building. The older generations don't get phased out of existence. You can't have 5th generations without the lower generations.

Mornedhel
December 26th, 2009, 11:11 PM
Here's the direction programming is heading:

it will be easy for programmers to offer users more choice.

programmers will offer users the chance to have data accessible from any internet-connected computer, AND will offer users the chance to store data locally (synchronized with on-the-cloud data or instead of on-the-cloud data).

programmers will offer users the choice to run applications off of the local disk, or use the SAME applications via an internet connection.

programmers will offer users the choice to keep using whatever operating system they use already: windows, mac, linux, whatever.

programmers will over users the chance to start using all applications almost instantaneously, because the software will only load functions / pieces of code on an as-needed basis.

programmers will also write code in ways that make it easy for users to maintain and modify programs.

what kinds of programming fit this model?
apps that work in your web browser. they're interactive. they're compatible with many OSes. they can load near-instantaneously. apps and data can be run/stored on a server or the local machine. code is easy to read and write because it resembles lists of instructions given to a computer in "plain english".

If you can make a computer do what you want using javascript and something like php (or similar script languages), you're golden.

Or Emacs.

(Editing files locally or from a server: check. Portability of Emacs itself, and thus of all elisp-only Emacs libraries: check. Autoloading functions when called for the first time: check. Entirely self-documenting: check. I tell you, Emacs is the future.)


Don't be thrown off by anti-MS sentiments. C# is a great language.

Also, you'll find that if you learn basic programming skills and sharpen your algorithm creating skills, it is pretty easy to learn a lot of different languages. The syntax is a little different, but they all use the same basic principles.

*Families* of languages use the same basic principles. Procedural-only languages, object-oriented languages, functional languages, logic languages, etc. are quite different.

Coding in C, Python, Lisp, and Prolog are entirely different skillsets.

forrestcupp
December 28th, 2009, 04:39 PM
*Families* of languages use the same basic principles. Procedural-only languages, object-oriented languages, functional languages, logic languages, etc. are quite different.

Coding in C, Python, Lisp, and Prolog are entirely different skillsets.I know what you're saying, and I agree with you to a point, but not totally.

I was mostly talking about problem solving skills. For instance, I'm a C++ programmer, and my wife is a SQL programmer, which is completely different. I have never even learned SQL, and I don't have a need or desire to. But more than once, my programming skills have helped her understand some things about programming her reports more efficiently.

Also, I can program in Python. One thing I noticed when learning Python and C++ is that even though things like syntax and memory management are slightly different, programming in the two languages are a lot the same. And if you can program in C++, you basically can strip the object oriented stuff out, think procedurally, and you're programming in C. I also still lean on the skills I have from my BASIC and assembly language days to help me even with C++.

Sure, there are lots of differences between "families of languages" and you have to change your mindset from language to language. But I stand by what I said that if you learn basic programming and algorithm creation skills, learning any language becomes much easier and you will see a lot of similarities.

Sporkman
December 28th, 2009, 04:51 PM
gSOAP?

doas777
December 28th, 2009, 04:56 PM
I noticed I have to take C# next fall in college. What the heck is C#? Is it like the next step up from C and C++?
c# is java with hindsight. same joy, with less wrestling

6th gen languages are supposed to shield their designer from their implementation, such that you say "read that table and write the data to file x"
instead of:
open table
read table to end, buffering
close table
lock file
open file
write buffer to output buffer
flush buffer to file
close file
release lock

the idea is of course to make every janitor and veterinarian capable of programming (which is not actually that great an idea).

just remember, each generation is built upon it's predecessors. they all abstract details, and provide a more focused interface to the decendants.

Mornedhel
December 28th, 2009, 08:17 PM
Also, I can program in Python. One thing I noticed when learning Python and C++ is that even though things like syntax and memory management are slightly different, programming in the two languages are a lot the same. And if you can program in C++, you basically can strip the object oriented stuff out, think procedurally, and you're programming in C. I also still lean on the skills I have from my BASIC and assembly language days to help me even with C++.

Well, Python and C++ are both object-oriented. If you code C++ the way Stroustrup intended it to be used, a lot of the ugly memory management stuff goes away and it's almost entirely OO with very little procedural left in from vanilla C. So yeah, the major difference with Python would be the syntax. (I hate whitespace as a block delimiter, by the way :) )

Programming C++ as if you were writing C is, again according to Stroustrup, the Wrong Way To Do It (tm). Sure, it can be done. You can also write object-oriented code in C. Just use structures as classes and call every function with a pointer to an "object" as the first argument, the way other OO languages do. Doesn't mean you should, though. Same with functional languages: you can maintain a lot of state and use them as procedural languages but that isn't the point.


Sure, there are lots of differences between "families of languages" and you have to change your mindset from language to language. But I stand by what I said that if you learn basic programming and algorithm creation skills, learning any language becomes much easier and you will see a lot of similarities.

Agreed. Algorithms are always good to learn for every family of languages. But there are languages that are really different from others. The logic languages family comes to mind.

Here's how you define a function to append lists in Prolog:


append([X|Y],Z,[X|W]) :- append(Y,Z,W).
append([],X,X).

Here's how you use it:


?- append([1,2,3],[4,5],[1,2,3,4,5]).
Yes

?- append([1,2,3],[4,5],A).
A = [1,2,3,4,5]

?- append([1,2,3],W,[1,2,3,4,5]).
W = [4,5]


(Yeah, Prolog's not very popular.)

Frak
December 28th, 2009, 08:42 PM
Generation 6 may be purely interpreted languages. We may be writing C# that is executed directly on the processor, with no need for a software interpreter. For all we know, there may be a translator that will be able to use software hooks to interpret a whole plethora of languages. We may be able to write Ruby code that executes as fast as compiled C code.

doas777
December 28th, 2009, 09:03 PM
Generation 6 may be purely interpreted languages. We may be writing C# that is executed directly on the processor, with no need for a software interpreter. For all we know, there may be a translator that will be able to use software hooks to interpret a whole plethora of languages. We may be able to write Ruby code that executes as fast as compiled C code.

folks have always told me, 5/6th gen languages will write themselves. personally I see no reason to write myself out of a job so...

jbrown96
December 28th, 2009, 10:05 PM
You can write a compiler/interpreter for any language. In my Programming Languages course, we wrote a Lisp interpreter in Lisp in two functions: eval and apply. Functional programming is a wild beast, but it's very useful (at least academically). The fact that only those two functions were needed to do the whole language blew my mind.

As others have said, C# is technically a very well designed language. It's too bad that the FLOSS people seem to freak out whenever it's mentioned. I'm more of a Python person and haven't worked with C#, but I do like what the Mono Devs are doing.

I have taken Java and C++ classes; I can't imagine anything more annoying than Java, especially when doing good class design: separate files for every class, good encapsulation, Javadoc comments, etc. I like Python because I can just start, which is nice for quick 'n dirty programs/scripts.

I've never heard of the 6th generation. It would be good to have more people "programming," although I really doubt that it will be so simple. Computers are retarded and need everything spelled out, and that takes a lot of skill just to know what a computer needs to be told to work.

Assembly is really on the way out. It's still used in some embedded stuff, but there aren't many advantages. Compilers have gotten so good; it takes a really good developer to be able to out code a compiler. The costs of development are so high that's its doubtful that such highly optimized code is of much value. Of course, there are situations where Assembly can make more sense, but there are C compilers for almost any chip, so it usually makes sense to program in a portable language.

Frak
December 28th, 2009, 10:09 PM
Assembly is really on the way out. It's still used in some embedded stuff, but there aren't many advantages. Compilers have gotten so good; it takes a really good developer to be able to out code a compiler. The costs of development are so high that's its doubtful that such highly optimized code is of much value. Of course, there are situations where Assembly can make more sense, but there are C compilers for almost any chip, so it usually makes sense to program in a portable language.

Java is displacing C and Assembler on embedded devices more every day. For instance, Blu-Ray players core is built in Java. The interpretation is done on-chip. Motorola phones, just to take one for instance for there are many more, have an OS that was written in Java and apps for it are written in Java.

Again, as I said before, the 6th generation will probably be interpreted-on-chip languages.

Also, great avatar.

doas777
December 28th, 2009, 10:43 PM
Java is displacing C and Assembler on embedded devices more every day. For instance, Blu-Ray players core is built in Java. The interpretation is done on-chip. Motorola phones, just to take one for instance for there are many more, have an OS that was written in Java and apps for it are written in Java.

Again, as I said before, the 6th generation will probably be interpreted-on-chip languages.

Also, great avatar.


your post has made me ponder an interesting distinction: is the generation about "where/how the code will run physically" or is it about how the human programmer writes and deploys it.

I've always believed that it pertains to the human element, in that C programmers don't have to write in assembly any more, that cobol programmers don't have to write in C anymore (yes, I took tonnes of cobol in school), that PHP programmers don't have to write in Cobol anymore, etc.
with each subsequent step, hundreds or thousands of lines of the predecessor langagues can be omitted to do the same job, so that ultimatly, one guy with a good knowledge of C# could write more execution of logic in one afternoon, than a hundred guys writing assembler could do in a month.

sounds like you think of it more like the evolution of portable unix. use C to abstract away the hardware-bound nature of assembly, use java to abstract away the implementational differances between os's, etc.

koenn
December 28th, 2009, 10:51 PM
your post has made me ponder an interesting distinction: is the generation about "where/how the code will run physically" or is it about how the human programmer writes and deploys it.


AFAIK, every new generation is a higher level of abstraction, away from the machine, closer to the "problem domain" - see also post #13

doas777
December 28th, 2009, 11:00 PM
AFAIK, every new generation is a higher level of abstraction, away from the machine, closer to the "problem domain" - see also post #13

I'm inclined to agree, but I see the problem domain as being driven by human requirements, so I have trouble seeing the next step as on-chip interpretation. almost seems a step backward in fact.

koenn
December 28th, 2009, 11:12 PM
I'm inclined to agree, but I see the problem domain as being driven by human requirements, so I have trouble seeing the next step as on-chip interpretation. almost seems a step backward in fact.
yes, the evolution is away from machine instructions, towards solving human / business problems.

in 3G languages, you can have both compiled languages and interpreted languages - how you get the code to run in the end, doesn't affect the level of abstraction a language offers. Maybe this "interprete on chip" thing is more that sort of category, rather than a "generation".

forrestcupp
December 28th, 2009, 11:42 PM
But there are languages that are really different from others. The logic languages family comes to mind.

Here's how you define a function to append lists in Prolog:


append([X|Y],Z,[X|W]) :- append(Y,Z,W).
append([],X,X).

Here's how you use it:


?- append([1,2,3],[4,5],[1,2,3,4,5]).
Yes

?- append([1,2,3],[4,5],A).
A = [1,2,3,4,5]

?- append([1,2,3],W,[1,2,3,4,5]).
W = [4,5]


(Yeah, Prolog's not very popular.)Ha, ha. Yeah, that's a good example of different. I doubt if Prolog is one that I'll be using any time soon.

But even though it's different, you still have the same concept of defining a function and calling it to do something for you. :)

jbrown96
December 31st, 2009, 02:59 AM
AFAIK, every new generation is a higher level of abstraction, away from the machine, closer to the "problem domain" - see also post #13

It's really that we have taught computers how to do some programming. Very early in computer history, it was very easy to teach a computer to take a set of assembly instructions and make the trivial translation to machine code. Then, we figured out how to take higher languages like C and get a computer to make trivial translations to Assembly, which was then translated to machine code; programming in assembly at this stage produced much better code, but lacked the portability of C. The really impressive point happened when we created compilers that are more efficient than human-written assembly code. Interpreted languages (Java, C#, Python, etc.) extend upon this, primarily with garbage collection.

It's like when you were young and did addition. At first, you needed to write both numbers vertically, then put the plus sign and line below the numbers. There was probably (and in some situations, still is) some point where you wrote down the numbers and skipped writing the plus sign and line because they are superfluous. The last step was to do the addition mentally.
That's what we're doing with programming; eliminate all the non-critical stuff, so you get to solving the problem quicker.
It's like why I like Python more than C/C++/Java. I don't have to instantiate variables; I can just start using them, and solve my problem quicker.

gsmanners
December 31st, 2009, 03:14 AM
I don't think compilers are quite at the point where they can do better assembly than a human. Maybe in a few more years, but today nothing beats hand-optimized assembly for raw speed and efficiency.

Blacklightbulb
January 2nd, 2010, 02:19 AM
This is it! LINK!! (http://en.wikipedia.org/wiki/Brain****)

On a serious not I'm amazed no one got a clue. My lecturer mentioned it and when I raised the question he didn't respond!

Either he has no clue or he wants to keep things secret. Oh and one subject where Google fails is this. It returns no good results.