What is the programming language of the future?
I agree with the second bit, but syntax concerns are not that big a deal if we exclude extremes like BrainF**K and J. I would not say C++'s syntax is unwieldy as much as it is tedious, but that would a pretty weak argument to make in a world of snippet plug-ins and macros.
What makes markup lovely is the blurring of the line between data and code. Having a browser ready to interpret code in both a functional and a graphical context makes me tingle after working with compiled WinAPI projects. I'm certainly seeing a future where the time between expressing something in code and testing it approaches zero, and this is a possible route.
_________________
"Sex, streams, friends accessing private members... Either I am just discovering unintentional innuendo or Stroustrup is a pervert."
I agree with the second bit, but syntax concerns are not that big a deal if we exclude extremes like BrainF**K and J. I would not say C++'s syntax is unwieldy as much as it is tedious, but that would a pretty weak argument to make in a world of snippet plug-ins and macros.
Well, not the syntax per se but also the concepts of the language. For example, many people complain about multiple inheritance and the complexities that can add, the cryptic compiler errors sometimes generated when working with template (although I've heard this has been improved in C++ 2011), manual memory management, etc.
I agree with the second bit, but syntax concerns are not that big a deal if we exclude extremes like BrainF**K and J. I would not say C++'s syntax is unwieldy as much as it is tedious, but that would a pretty weak argument to make in a world of snippet plug-ins and macros.
Well, not the syntax per se but also the concepts of the language. For example, many people complain about multiple inheritance and the complexities that can add, the cryptic compiler errors sometimes generated when working with template (although I've heard this has been improved in C++ 2011), manual memory management, etc.
I feel those are more of an issue for those who are new to the language. Cryptic as they may seem, compiler errors and class relationship quirks can still be readily understood with enough practice.
_________________
"Sex, streams, friends accessing private members... Either I am just discovering unintentional innuendo or Stroustrup is a pervert."
Hello,
Enclosed are two links of interest to computer programmers.
NewsWeek Story, May 29, 2014 'Computer Programming is a Dying Art'
http://www.newsweek.com/2014/06/06/comp ... 52618.html
My response to story about coding/programming skills becoming less relevant:
An intuitive development tool called 'APP Inventor' for 'Android' (LINK:) is presently available. Yet, what's needed are tools that can boost software development for those of us who are "somewhat technically inclined" -- for such platforms as HTML5, C++, and JAVA.
LINK: Democratizing APP Building ['APP Inventor' tool was mentioned in this discussion thread]
http://www.appinventor.org/
Thank-you
Personally, I would root for anything that allows one person to do a job that takes many people and a huge budget today. (I may say the same thing 20 years later )
For stuff like this, I'd keep an eye on Stephen Wolfram. Since I cannot post URLs yet, I recommend his TED talk.
Stephen Wolfram is brilliant as a business man as well as.....
"Wolfram's parents were Jewish refugees who emigrated from Germany to England in the 1930s.[5][15] Wolfram's father Hugo was a textile manufacturer and novelist (Into a Neutral Country) and his mother Sybil was a professor of philosophy at the University of Oxford.[16] He has a younger brother, Conrad Wolfram.[17] Wolfram is married to a mathematician and has four children.[18]
Education
Wolfram was educated at Eton College, but left prematurely in 1976. He entered St John's College, Oxford at age 17 but found lectures "awful",[16] and left in 1978 without graduating.[19] He received a Ph.D.[3] in particle physics from the California Institute of Technology at age 20.[4] Wolfram's thesis committee included Richard Feynman, Peter Goldreich and Steven Frautschi[4] while the thesis research was supervised by Geoffrey C. Fox and Hugh David Politzer.[3]"*
https://www.youtube.com/watch?v=60P7717-XOQ
his brother Conrad is no slouch either.
He is a very impressive man in every way.
*source: Wikipedia
Many people have said that functional programming languages are really great, but I just don't understand why. Lambda calculus, what is that?
In that case, I guess Haskell might be the, er, "language of the future" but I seriously doubt it. Maybe someone can please, please tell me why, even from a marketing standpoint.
I just prefer good-old simple lisp and C. It may not be a high demand language like Java or C++, but it gets the job done well and they are highly portable, meaning your software can run on all sorts of hardware should you decide to use these unencumbered, lower-level languages, without OOP abstractions and whatnot.
If you can avoid assembly, go with C or lisp next. Like really, do NOT bother with Haskell unless you know what you are doing.
If someone could create a compiler that used plain speech to formulate the program, it would instantly dominate the computing world.
I'm not sure how to feel about that but I doubt it would ever happen
Many programming languages are still mostly plain english but Plain speech would probably not be useful for making many programs
Also it would completely devastate the computer world as then pretty much everyone would be able to program and millions of jobs would be lost
In that case, I guess Haskell might be the, er, "language of the future" but I seriously doubt it. Maybe someone can please, please tell me why, even from a marketing standpoint.
I just prefer good-old simple lisp and C. It may not be a high demand language like Java or C++, but it gets the job done well and they are highly portable, meaning your software can run on all sorts of hardware should you decide to use these unencumbered, lower-level languages, without OOP abstractions and whatnot.
If you can avoid assembly, go with C or lisp next. Like really, do NOT bother with Haskell unless you know what you are doing.
C is still THE language for embedded systems (making a compiler for C++ is a lot harder than making one for C), but computer game engines have moved on to C++, except for cases where you need to harvest as much power as possible out of weak hardware (eg. Shadow of the Colossus on PS2).
_________________
“He who controls the spice controls the universe.”
If someone could create a compiler that used plain speech to formulate the program, it would instantly dominate the computing world.
Hello,
The following story may be of interest 'Learn to Code: Learn to Think' (LINK) -
Despite the progress of artificial intelligence; to increasingly provide automated assistance to coding (to people who are at least "somewhat technically" inclined), learning to code boosts the very (human) thinking that will be important to whatever the programming language of future becomes!
LINK: http://www.npr.org/blogs/13.7/2014/06/0 ... n-to-think
I agree with the second bit, but syntax concerns are not that big a deal if we exclude extremes like BrainF**K and J. I would not say C++'s syntax is unwieldy as much as it is tedious, but that would a pretty weak argument to make in a world of snippet plug-ins and macros.
The newest version of C++, C++11, provides a huge amount of new functionality in its standard library. You can now do pseudo-random numbers with ease, multithreading, safe pointer management with class templates like std::unique_ptr (made possible by the addition of move semantics to the language)* (q.v.) and various other things using the new additions to the C++ standard library.
Compilers are just now getting around to fully implementing some of the most important new features.
* Basically, std::unique_ptr cannot be copied, but it can be moved to another std::unique_ptr, meaning the source std::unique_ptr gives up ownership of its pointer and hands it to the destination object. With the support for move semantics implemented in the STL (example below), std::unique_ptr can be used in containers, unlike the old deprecated std::auto_ptr. which couldn't work in containers because of a lack of support for it. Here's an example of std::unique_ptr
std::unique_ptr<long> ptr1;
ptr1.reset(new long(5)); //assigns pointer to unique_ptr, with the value of long initialized to 5
std::unique_ptr<long> ptr2;
ptr2 = ptr1; //ERROR! unique_ptr cannot be copy-assigned.
ptr2 = std::move(ptr1); /*SUCCESS! With move assignment, ptr2 now holds the pointer that was originally assigned to ptr1 and ptr1 loses all ownership (and even access) to the pointer.*/
std::unique_ptr, when it goes out of scope or when its method release() is called, calls a deleter on its pointer (which can be specified by you, though there is a default deleter for std::unique_ptr which does not carry an array). This is a great new addition to the C++ standard library!
_________________
"You have a responsibility to consider all sides of a problem and a responsibility to make a judgment and a responsibility to care for all involved." --Ian Danskin
Last edited by beneficii on 15 Jun 2014, 5:17 pm, edited 1 time in total.
I agree with the second bit, but syntax concerns are not that big a deal if we exclude extremes like BrainF**K and J. I would not say C++'s syntax is unwieldy as much as it is tedious, but that would a pretty weak argument to make in a world of snippet plug-ins and macros.
The newest version of C++, C++11, provides a huge amount of new functionality in its standard library. You can now do pseudo-random numbers with ease, multithreading, safe pointer management with class templates like std::unique_ptr (made possible by the addition of move semantics to the language)* (q.v.) and various other things using the new additions to the C++ standard library.
Compilers are just now getting around to fully implementing some of the most important new features.
* Basically, std::unique_ptr cannot be copied, but it can be moved to another std::unique_ptr, meaning the source std::unique_ptr gives up ownership of its pointer and hands it to the destination object. With the support for move semantics implemented in the STL (example below), std::unique_ptr can be used in containers, unlike the old deprecated std::auto_ptr. which couldn't work in containers because of a lack of support for it. Here's an example of std::unique_ptr
std::unique_ptr<long> ptr1;
ptr1.reset(new long(5)); //assigns pointer to unique_ptr, with the value of long initialized to 5
std::unique_ptr<long> ptr2;
ptr2 = ptr1; //ERROR! unique_ptr cannot be copy-assigned.
ptr2 = std::move(ptr1); /*SUCCESS! With move assignment, ptr2 now holds the pointer that was originally in ptr1 and ptr1 loses all ownership (and even access) to the pointer.*/
std::unique_ptr, when it goes out of scope or when its method release is called, calls a deleter on its pointer (which can be specified by you, though there is a default deleter for std::unique_ptr which does not carry an array). This is a great new addition to the C++ standard library!
I really do like the new C++11. I'm very fond of lambdas along with all the minor improvement, smart pointers, additional algorithms etc. I'm also curious about tuples, variadics and consexpr ( haven't tested them out yet. )
What I struggle to understand though, is how move semantics work. For instance :
will move the string into whatever container the method is called upon. But if you do something like :
container.emplace_back( str );
Won't ( I think. ) How would I do it if I wanted to move it?
Also; when do I use std::move(), when are move ctors called as oposed to regular copy ctors ( which move ctor is a replacement for? )
And it's kinda confusing with all the new value categories ( there are now four of them. )
For this:
container.emplace_back( str );
You'll want to change it to:
container.emplace_back( std::move(str) ) /* note the use of std::move, which tells the compiler to do move assignment/construction instead of copy assignment/construction; you can also use push_back here. str will be left in "an undefined but valid state" (most likely, it would be empty). emplace and emplace_back/front allow for construction of the object in place within the container without first constructing it at all outside of the container by accepting any number of arguments that work as long as they match up to one set of parameters of the object's constructor. The arguments are forwarded to the constructor using move semantics.*/
_________________
"You have a responsibility to consider all sides of a problem and a responsibility to make a judgment and a responsibility to care for all involved." --Ian Danskin
Similar Topics | |
---|---|
Grace Hopper - Pioneer of Computer Programming |
24 Oct 2024, 10:47 pm |
Facing my past to have a future |
26 Sep 2024, 1:32 pm |