10 Forces Guiding the Future of Scripting
snydeq writes "InfoWorld examines the platforms and passions underlying today's popular dynamic languages, and though JavaScript, Perl, PHP, Python, Ruby, Groovy, and other scripting tools are fast achieving the critical mass necessary to flourish into the future, 10 forces in particular appear to be driving the evolution of this development domain. From the cooption of successful ideas across languages, to the infusion of application development into applications that are fast evolving beyond their traditional purpose, to the rise of frameworks, the cloud, and amateur code enablers, each will have a profound effect on the future of today's dynamic development tools."
And twitter.
though JavaScript, Perl, PHP, Python, Ruby, Groovy, and other scripting tools are fast achieving the critical mass necessary to flourish into the future
I didn't read the article, but from the summary I'll assume one of the forces is gravity.
It's too bad it's such a weak force.
Well, back to rejecting software patent applications.
Does anyone know of a project to bring some of the fast Javascript implementations like V8 to the server? It could be like PHP or Perl, only very fast-- if the numbers hold out. I would like to write in the same language on the client and the server. (Java almost achieved that...)
I write embedded firmware for my job (predominantly C) - my code is tied to the hardware, I frequently code real-time stuff in assembler to get the maximum speed. I have no OS, and I write all the ISRs and schedulers myself.
On the other end of the spectrum is a friend of mine who is language and platform agnostic. Sways between a bunch of scripting languages on a number of operating systems and has probably never compiled an application in his life, interpreters are his tools.
My point - if there is one - is that each to their own, there will always be a requirement for different skill sets. In a way, software is software regardless of the language it is coded in. The same rules apply.
I love doing clever stuff with pointers (except when it goes wrong in style), and using neat mathematical tricks in assembler to speed up fixed divisions and run stuff faster - but as the same time when knocking up a test rig on a PC I can honestly appreciate stuff like a "foreach".
Hey ho. Ramble Ramble.
Ya, once Perl is used in a few more places, it'll have critical mass.
It must have been something you assimilated. . . .
I'm surprised there was no mention of Lua. Besides Javascript, Lua is probably the most widely used scripting language out there. Usually its use is hidden from the end-user but it's in everything from embedded devices to World of Warcraft.
It has a very simple design and is very fast (especially with LuaJIT). The semantics are similar to Javascript but Lua is a lot more pure and simple. There probably will never be a Javascript engine as fast as the fastest Lua engines.
Larry Wall nabbed Python's object system when he created Perl...
Erm, WTF? Perl was released in 1987; Python was 1991.
Don't thank God, thank a doctor!
Most human wars throughout the ages are based on religion. Scary, isn't it?
You think that's scary, you should've seen the camel wars.
Languages such as PHP will always be more popular than languages such as Ruby, not because the former is any easier to learn or better designed, but because almost purely becuase PHP is much more like a natural human language, with all its flaws, than a language like Ruby. Most of the time you are scripting, you are hacking strings together and it doesn't really help if they are objects are not. I imagine that given the choice between a highly structured language and one that is at its core, hacked together, people will always choose the latter. It wasn't until the Europeans discovered Sanskrit in the 18th century until European languages had any formal grammar. If I were going to pick a "Highlander" for scripting languages, it would be JavaScript because it's highly structured and also very functional.
From Larry Wall's 2007 State of the Onion:
1) So, Perl which came along long before the existence of Python, stole from Python?
Nope, this guy didn't do any research:
Python reached version 1.0 in January 1994
...
Perl 5 was released on October 17, 1994. It was a nearly complete rewrite of the interpreter, and added many new features to the language, including objects,
Hm... I was offtopic to the post I was replying to? Or with the 'camel' reference, which is considered the symbol of the Perl language? Between those two, I managed to stay on topic both to this thread, and the article overall. (Didn't you wonder why the article was tagged with 'camel'?) Bah. Having to explain jokes just ruins the fun of 'em. I either need to learn to tell them better, or we need smarter moderators.
Oh. My. God.
A million grammarians cried out in terror and were suddenly silenced.
European (and all) languages have always had a clear grammar, and formalizing them (i.e, "this is the one and only one correct form of $FOO in language $BAR") didn't change a thing.
Ironically, some amazing B.S. got put into English because of 'formal grammars.' People saying 'They met John and I' rather than the more natural and arguably more correct 'John and me,' or people complaining about split infinitives and prepositions at the end of sentences (avoiding both of which becomes unwieldy in complex sentences)
As someone with a BA in Linguistics, I call BS on the natural language part of your post. The biggest mistake you have made is that you failed to distinguish between written grammar guides, and an actual grammar for a language, which is in each person's head and is quite complete and well-formed. So much so that we have yet to fully elucidate the complexities therein.
I don't think "John and I" is even arguably correct, since "I" is subjective.
Dewey, what part of this looks like authorities should be involved?
"It wasn't until the Europeans discovered Sanskrit in the 18th century until European languages had any formal grammar."
Well, sure... It's only that the first printed greek grammar is from 1453; the first modern grammar, the Spanish one from Nebrija, dates from 1492; the first Italian one, that of Trissino, is from 1529, the Portuguesse one from Fernando de Oliveira is from 1536 and the French one from Louis Meigret was published on 1550.
So, I read the rest of the article, to see if he got anything else right. Well...
But will PHP be able to shake the casual structure that encourages beginners to whip up spaghetti code? Will it be able to continue to mix the presentation layer and the application layer without driving everyone insane?
It's true that PHP encourages this, and I find it a little disturbing that people are building web frameworks in what is essentially a Turing-complete template language. It would be as if the next big thing was written in PostScript.
But in a larger sense, this isn't nearly as relevant as how you use it. Drupal is proof that you can do good things with PHP.
However, I do prefer to work in a language that helps, rather than hinders, such a design.
Some want to place their bets on Ruby on Rails, a striking and elegant solution that produces sophisticated results in no time.... This simplicity often turns into shackles when the programmers reach the edge of the framework's capabilities. Changing little details or producing slightly unorthodox output can be maddening.
That's downright flamebait.
I suspect that many Rails developers do feel this way, for the same reason that many PHP programs are useless spaghetti code -- as a complete side effect. Since Rails is so easy to get into, it's a rude awakening when you need to do something it doesn't provide -- you're finding out just how much work Rails has done for you.
But seriously, "slightly unorthodox output"? Are you serious? Probably one of the easiest things to do is add another view of the same data -- even in another format.
A programmer gets the rock-solid foundation of compiled Java code mixed with the flexibility to diddle with the Java objects in real time.
Maybe Groovy makes that easier, but Java already had reflection. Next!
thanks to the lightning performance of the new JavaScript semi-compilers, the language is bound to look even more attractive.... The semantic barriers won't be as important as the languages rush to steal good ideas from one and other.... In five years, there's a good chance you'll be able to imagine you're writing Python while the code is interpreted by something called JavaScript.
Interesting ideas. None of which apply to Javascript, now or ever.
You see, Javascript client-side is a nightmare, because you have to make it work in several existing browsers, which don't always play nice with the standards.
And Javascript, the language, is evolving at an incredibly slow pace -- mostly because it's got the worst case of cruft of any language. Add an interesting feature in a browser, and you probably break some client code. Even if you're careful, as a developer, I can't use your feature if it isn't also present in other browsers.
So changing the core syntax of the language is right out. If we were to break backwards compatibility in such a dramatic way, it'd make a lot more sense to port Python to the browser.
In which case, we may as well use Java or Silverlight -- plenty of dynamic languages target these. My personal favorite would probably be JRuby in an applet.
Libraries such as Dojo and jQuery aren't just a set of helpful routines; they actively tweak the language and ask you to adopt a particular set of idioms.
True enough -- except that in the case of jQuery, it actually doesn't force anything. If you really like wasting time, you can write using the old idioms you learned. If you don't like jQuery, you can always rename the $ variable and pretend it doesn't exist.
The focus really should be on the next point, which is actually a good one:
Applications are becoming their own worlds.
Especially in a dynamic language, any body of code of sufficient size is going to have some idioms of its own.
The main reason frameworks are important
Don't thank God, thank a doctor!
With the story on Chrome having a 1.5% share earlier today, and Firefox having a 32% share, I don't see how there's a "battle for supremacy"...
Website coming soon.
...and the ancient Greeks discussed grammar in their works, and the Romans had grammars of Latin, and in fact, those Latin grammars provided an important model for the European vernacular grammars that you mention. Hell, even modern-day linguists get a much bigger chunk of their grammatical terminology from Latin grammar than they do from Panini's Sanskrit grammar--even though the latter is much deeper than Latin grammar, and a bigger conceptual influence on modern linguistics.
Are you adequate?
As somebody with an A.B.D. in Linguistics, I'm not sure your criticism of GP is correct, because I can't see that GP is saying what you attribute to them. This is mostly because GP isn't being very clear about what they mean, I'll grant you.
It all comes down to what GP means by "formal grammar." In your response, you have assumed that this means "grammar guides," apparently of the prescriptive sort, but GP's example is Panini, and Europeans' discovery thereof. This is one of the key historical events that launched modern European linguistics, since it provided both a clear example of a family relationship between very far-flung languages, but also because Paninian grammar is far more technical and precise than anything that Europe had ever produced. The statement that European languages "didn't have formal grammar" until the discovery of Panini's work sounds very much like a claim that the European discipline of linguistics only really took off after the discovery of Sanskrit.
Though even reading it charitably in this way, GP's statement is still very garbled. The discovery of Sanskrit eventually started an ongoing change of grammatical theory in Western science, but it didn't change the grammar of the languages.
Are you adequate?
Well, if that is what he meant, then I think you have a fair point. I'm just so used to people saying blatantly incorrect things about the way language works that I probably assumed he meant the more ignorant of the two interpretations.
And perl1.0 was released on Dec 18th, 1984...
Some numbers just seem so way out there...
I don't know for sure what the guy meant. Again, it's pretty garbled, and the choice of example only makes it more so.
Are you adequate?
Don't use the forks, Luke (or Larry, or Guido, or Rasmus)
It will wind up looking like what we all use as 'pseudo-code' when teaching someone something in a language-neutral way.
It will use real words or phrases as commands, instead of ridiculously stupid things like 'elif' or 'printf'. *sigh*
I'm not a programmer, but I have been able to use PHP to make some pretty nice little dynamic web sites and mini-applications.
You don't have to be an expert to make effective use of it. You can open a PHP script and follow it.
The same can be true for many languages, I suppose - but for someone with practically no programming skills at all I've always found php to be the easiest to just pick up and do something useful with.
So, I'd say that one of the biggest reasons for it's popularity is that you can learn it very easily if you have no programming background. (I'm perhaps a special case, though - I consider myself to be a highly effective IT Systems Engineer with a great deal of background with computers so I pick these things up pretty quickly anyways.)
- It's not the Macs I hate. It's Digg users. -
I've played around with tcl/tk a bit and found it to be fun to use in the limited time I used it. You can get things up on the screen and do something useful with it almost immediately.
The only other language I've "programed" with is PHP.
- It's not the Macs I hate. It's Digg users. -
...it was a mass, and critical. This was one of those "If there is a bug in this program, somebody dies" applications. Granted, almost all of the deaths were maintenance programmers. You know the drill -- a sudden rash of suicides and one horrific industrial accident involving a regexp gone horribly awry.
Help poke pirates in the eyepatch, arr.
To be fair to the author, I read his manuscript while it was in progress and this was not his wording. The original reads only that "Larry Wall says he nabbed Python's object model for Perl." Unfortunately, the current wording is an error that was introduced during the edit phase.
One word. PowerShell.
That is all.
My blog
That's actually two words, with a misspelling, if the lack of a space can be called a misspelling.
Seriously, though, I'd take Perl over PowerShell anytime. Reasons: 1) CPAN; 2) Data saved as text instead of binary objects. The Unix Philosophy runs around the use of small scripts which can be used standalone and reused chained together. Perl was designed around this principle, it's perfect for text input.
From the co-optation of successful ideas across languages, to the infusion of application development into applications that are fast evolving beyond their traditional purpose, to the rise of frameworks, the cloud, and amateur code enablers, ...
Honestly, for anyone who actually uses them to solve problems, the benefits of dynamic languages aren't hard to understand: they allow you to code easily and clearly, to debug quickly, and to expand from simple scripts to complex systems. And they're surrounded by supportive developer communities and code libraries.
Just like all the other great geek innovations... we don't need marketing types to notice in order to enjoy our toys :-)
My bicyles
It's nice that you think, but your opinion is merely subjective. Enjoy your subjective correctness. But feel free to come back when you have observable data with replicable analyses.
Besides - it's got a cool blue screen
PowerShell FTW
PHP is no more like a natural human language than any other programming language. Did you never learn about the Chomsky hierarchy in your computer science classes? All programming languages are formal languages as they are at least regular languages. However it is not known whether human natural languages (or any other conceivably similar natural language) are entirely translatable to any formal language. The two cannot be assumed to be comparable until this can be proven, and as far as linguistics goes we're a long way from being able to even *nonmathematically* describe a single natural language, much less prove compatibility with formal languages. Hell, in linguistics we're not even sure what words even *are*, much less how to completely define the set of them.
As for your other commentary, you're talking complete and unfounded nonsense.
Panini's grammar, the Ashtadhyayi, is quite different from the European grammars mentioned. It is a true generative grammar, consisting of a set of rules in a formal language that generate all and only the grammatical sentences of Sanskrit. Nothing like it was created in the West until Chomsky's work on generative grammar. Even now, Panini's grammar is more detailed and comprehensive than most formal grammars of natural languages.
"Panini's grammar, the Ashtadhyayi, is quite different from the European grammars mentioned."
On one side, the point was that "It wasn't until the Europeans discovered Sanskrit in the 18th century until European languages had any formal grammar.". Well, it isn't: almost as soon as there were printed books and as soon as the XV-XVI there's an obvious interest on formalize those recently created latin derivatives talked in Europe. But even regarding the pure intellectual effort about formalizing -not just exposing, language rules, you can see for example, 1587's work from Francisco Sánchez de las Brozas who genuinely studies the internal formal rules of sentence generation. If your point is that a work from the XVIII is more deeper and advanced than one from the XVI, well, news at eleven but that we have to wait to it for an interest on formalizing European languages, sorry but no.
No, my point is that the grammars you mentioned are not formal grammars as you seem to think. Europeans only started serious work on formal grammars in the mid-twentieth century.
If Malda was "one of the founders of Slashdot", who were the others?
Low energy nuclear reactions are useless when scripting
She made the willows dance
Three : portability of programs between Linux, Solaris, Unix, cygwin and Win32.
Well I had to migrate a whole administration web site (coldfusion based) dating from 1998 to PHP. This migration was done on 2007.Reason?
Almost nobody knows it anymore.
Coldfusion is dead.
today's, for example, php apps are so complex and big that you can hardly call them 'scripts' anymore.
better term is open code programs running through a compiler.
Read radical news here
Stop trying to appear clever by using acronyms no one understands.
You don't understand the assembly equivalent of GOTO? You must never have touched assembly, then. Though, to be fair, when I did VAX Assembler, I did not use BNE.
Bearded Dragon
Don't look at me! I use bash, Tcl, Python and Perl for all my dynamic language scripting needs. He wanted a native Windows thing. WSH sucks. VB isn't even a dynamic language. PowerShell is at least passable.
My blog
Learning a language is trivial compared to learning its standard libraries and/or the existing code inherited as part of a legacy project that you have to maintain. I mean, sheesh, the language is nothing. Learning what has already been written (so you don't have to) and figuring out how to call it, is what it's all about. Learning a language takes a week or two. Learning a big library can take months, maybe even years.
BTW, since when is Python "core savvy?" Lack of easy parallelism (other than forking new processes) has been one of python's biggest problems. Or at least I thought so. I must not be keeping up.
As copyright owner of this comment, I authorize everyone to defeat any technological measure which limits access to it.
That's an interesting assembly of years there.
1453 - Constantinople falls, bringing the end of the Byzantine Empire. (Looks like that Greek grammar was printed just in time!)
1492 - Columbus and the whole ocean-blue thing; completion of the Reconquista in Spain.
1529 - Protestantism gets a shot in the arm with the Diet of something or other whose name escapes me.
1536 - Henry VIII's wild year: Catharine of Aragon dies, Anne Boleyn loses her head, Henry hooks up with Jane Seymour.
1550 - Um, never mind. Totally blanking on 1550...
I've never come across an assembler instruction named "BNE". In x86 its "jne" and in Z80 IIRC its "jr". So save the patronising for someone who didn't do real assembler and keep your dumb made up opcodes to yourself
BNE is used in 6502 assembly. Keep your devilspawn CPUs to yourself.
John and I went to the store. The clerk said "hi" to John and me.
Have you driven a fnord... lately?
You must wait a little bit before using this resource; please try again later.
CPAN is definitely a valid reason, a bigger one is portability. But the text vs object thing is really a point against Perl. The text-parsing stuff is still there in PowerShell, only if the small-script you're are calling supports it, you get an object stream back. You can convert it to text if you really feel the need, but knowing that $_.ProcessName is always going to refer to the Process name is way better than having to find column 5, and trust that the script's author hasn't rearranged things on you.
Yep. "I" is the subject of the first sentence, and "me" is the object of the second.
Dewey, what part of this looks like authorities should be involved?
Okay, please tell me why above got marked as "troll". Knowing its a sensitive topic, I was careful to not be "attacking" in my wording. I want to know what I did wrong so that I can correct it in the future. Thank You.
Table-ized A.I.
I've heard claims like this from various language proponents, but haven't seen any definitive illustrations. Do you have any code examples of PHP hitting an un-fixable wall?
Table-ized A.I.
I take it by "strict typing" you mean static typing? What's so great about it? Lots of server-side languages and frameworks (Python/Django, for example) are dynamically typed. I guess I'm not gettting what your point is here.
Strict/weak and static/dynamic are separate and orthogonal properties of languages.
Static typing means types are determined at compile time, as in C/C++, Java, Haskell, etc. Dynamic typing defers type checking to run time, as in Perl, Python, Erlang, etc.
Strict typing means that the type system cannot be "bent" by things like casts and unions in C, or by behind-the-scenes type conversions in Perl.
C is statically and weakly typed. Perl is dynamically and weakly typed. Python is dynamically and (fairly) strongly typed. Haskell is statically and strongly typed.
Man, that is so arrogant. It is different in every assembler. In PIC asm it is GOTO.
You seem to be mixing up atheism with christianity.
Just replace atheist with christian , and it makes a lot more sense , it even becomes historically relevant.
Atheists don't give a fuck about what other people believe. They just don't like it when people force their religion on others.
I'm pretty sure most atheists have higher moral standards than religious people , simply because they don't have a holy book to hide behind.
Off course , your post could have been sarcastic, and in that case , you won't mind this post.
Slipping shoelaces ?
to summarize , most wars are based on greed.
In the case of religions , i noticed the following:
At the start of religions , the religion is usually fought against by the powers that be. At that moment the religion is often peacefull , caring , and serves a general good.
Then the religion becomes accepted, and eventually becomes mandatory. At that point the religion becomes dogmatic , abusive , and serves basically to enslave people.
It all begins spiritually , with best intentions.But then power and greed corrupts it , and uses it to bend the people's will.
So , if you seek spirituality , you can only find it by seeking it all by yourself, not by someone else tells you to do.
One of my favorite quotes :
religion is regarded by the common man as true , by the wise as false , and by the rulers as useful.
Slipping shoelaces ?
I guess you must have a different concept of the word "Native" than I do ;)
Lets assume that we have a "Vanilla" installation of Windows XP... how well does PowerShell work compared to VBScript?
Considering that I have absolutely no control over what is installed on about 90% of the PCs in the organisation, and that I am rolling out scripting solutions to all PCs, that means that I am limited in choice to using either VBScript or WinBatch (or JScript... no thanks).
Cheers, Chris
Formal grammars have little to do with natural languages...
I've never come across an assembler instruction named "BNE". In x86 its "jne" and in Z80 IIRC its "jr". So save the patronising for someone who didn't do real assembler and keep your dumb made up opcodes to yourself.
Right, because x86 and Z80 are the only two CPUs in the entire world, right? Arrogant much?
Downmodding is the refuge of the weak. Don't downmod, make a better argument!
John, you, the store, and the clerk would all have different word endings in each of the example sentences. I am told Serbo-Croatian has seven of these noun endings, and Latin and Greek are up there as well.