IT developers are moving toward higher-level languages that make their work simpler in order to keep up with business needs. That simplicity is found in lingos such as Java, C Sharp, Visual Basic and .Net. However, even those languages are sometimes not simple enough for the Web 2.0 world, spurring developers to also turn to dynamic languages such as PHP and Ruby, which can provide a faster return on development efforts. Simplicity equals speed in application development, and that speed is being driven by the move to Web 2.0.
What about other platforms that are trendy at the moment. In these times of crisis I have understood that many developers are moving to mobile platforms and the iphone is one of the most popular choices for starting developers. I quit a Java strong based course to start learning Objective-C and Cocoa on my own. I would imagine there are a lot of people out there doing exactly the same.
The commenters are quite correct that Ajax is not a "programming language" and that those development approaches cited are not, strictly speaking, "variants of Java." The fault is not Richard's; in my haste, I did a sloppy job of summarizing my viewpoint.
That viewpoint is as follows (hopefully, I'll do better this time): Ajax, as per Wikipedia, is a collection of "development techniques" (to my mind, a "meta-language") that allow web programmers to access other programs asynchronously. It used to require JavaScript (and thus, in that sense, to focus on object-oriented coding); now you can also use VBScript and other "programming-language code". Perl was originally a pastiche of straight-line/'functional" and object-oriented commands (Wikipedia claims it is "high-level", but based on the latest examples cited there, I tend to disagree). From what I heard last year at a Sun developer event, from frequent use in relation to the Web, it has tended to focus more on object-oriented programming. Ruby is primarily an object-oriented language based on Perl and Smalltalk, using the "principle of least surprise" (when you program, you should expect what you get). Again, in the real world, from what I hear, the result is typically object-oriented code. Python, like Perl, is a pastiche of object-oriented and other approaches, this time with the emphasis on "readability", but again, according to my observations, its object-oriented statements are now used more frequently than the others.
The salient point about them all, from my point of view as a post-grad at Cornell when DOD was first creating TinMan, is their basic similarity in real-world use to each other and to Java. A more correct statement of what I was trying to say in my comment would be: whether or not their practitioners believe this, these languages and "development techniques" have far more in common with each other than with C or MODEL 204 User Language (sorry, but that's the best example I know of a high-level language). They are primarily not straight-line; they are primarily used to produce object classes; and despite differences in things like inheritance, overall their object-oriented approach is not really that not far from the Java approach (again, for Ajax substitute JavaScript in that generalization, with prototypes close analogs of object classes). I define high-level languages as those that focus on 4GL, drag-and-drop WYSIWYG, or built-in extensive use of high-level components.
For example, in MODEL 204 User Language (more or less), to handle a ERP situation, you might say:
LIST1 := FIND ALL RECORDS WITH FACTORY=Boston AND QUANTITY<=5
FOR EACH RECORD IN LIST1 ORDERQUANTITY = 10
To handle the same situation via Ajax, Perl, Python, Ruby, or Java, a programmer would typically define and/or reference many object classes to handle the underlying Web architecture (client? JSP? CGI?), the browser interface, and translating the data-handling to SQL and back.
In the real world, I assert, the result of much Ajax, Perl, Python, Ruby -- and Java -- development that I hear about is now typically generation of object-oriented code that does not incorporate 4GL, WYSIWYG, drag-and-drop, and thereby unnecessarily wastes the programmer's time. Thankfully, vendors of Java toolsets have finally made some strides towards drag-and-drop programming and high-level interface-driven and data-manipulation commands; but I also feel it is not a good sign that commenters still don't understand how from a macro point of view, I can see some of Perl, etc. as "variants" of the Java approach, or the result often as low-level object-oriented code of the same ilk as Java code.
Here's an analogy: suppose I said of today's multifunction printers (and their software), that they are variants of a Xerox copier, and that they effectively produce Xeroxes. Strictly speaking, that's incorrect. In the real world, however, aren't the similarities more striking than the differences?
Wayne Kernochan
President, Infostructure Associates
Everyone involved in this article should be banned from future articles. Where did these people come from - what credentials do they have to be quoted?
Perl predates Java by 7-8 years, and couldn't be much farther away than anything from being characterized as "effectively generating Java code". Ajax isn't even a language (although it implies JavaScript, which also isn't Java in case you're confused).
And characterizing "higher level" languages as the article does (abstracting memory mangement and other "low-level" concerns) is just wrong- I may have missed a reference in the article somewhere, but the only languages I see mentioned at all that would be "low level" by that definition are C and C++ (excluding the MS "managed" C++ on .NET variant). The real differences and benefits of dynamic languages (duck typing, incremental execution/not requiring somewhat more complex complication and deployment cycles) aren't touched on at all.
Very sloppy job, overall. At least make sure you've got someone with some rational credentials checking this stuff-
In addition, without checking any references, it is clear that the research used as base for this article has a very time sensitive context. I doubt the results of the research are relevant as of the last couple of months.
Python is absolutely NOT a Java variant. It is written in C and therefore eventually runs in C albeit virtually. There is NO Java involved in the standard distribution of Python.
And this statement:
However, dynamic languages are not a panacea. "They could create code that's difficult to read, that's not so structured and that's difficult to maintain," Hilwa said. "But they tend to be more productive, so you end up with a lot less code and write code more quickly."
is not believable. Without any experience in a programming language one could clearly see that it is contradictory. "...difficult to read, that's not so structured and that's difficult to maintain" does not at all equate to a language that is "productive" and can that you can "write code more quickly"
For those who are familiar with dynamic languages know that they are the easiest to read of all languages, often even when programs are written poorly. Being high level languages, they don't have to be structured, but all of the languages listed in the article are quite well structured.
Not to mention that non-dynamic languages can *definitely* create code that's hard to read.
Compare:
Python:
for i in range(5):
if ((i==2) or (i==3)):
print "i=", i
C:
for (int i=0;i<6;i++) {if (i==2||i==3) {printf("i=%d",i);}}
Which do you think is "...difficult to read, that's not so structured and that's difficult to maintain"?
With all due respect, Mr. Adhikari clearly has no idea what he is writing about, and in this article, obviously just made things up where he needed content.
For example:
"Java and its variants like Perl, Ajax, Python and Ruby, which effectively generate Java code, are unnecessarily low-level languages" ??
Excuse me? Perl is a variant of Java?
Ajax is a language?
The Tower of Techno-Babel: What Languages Do Devs Love Now?
Posted by: Richard Adhikari April 28, 2009 04:00 AMIT developers are moving toward higher-level languages that make their work simpler in order to keep up with business needs. That simplicity is found in lingos such as Java, C Sharp, Visual Basic and .Net. However, even those languages are sometimes not simple enough for the Web 2.0 world, spurring developers to also turn to dynamic languages such as PHP and Ruby, which can provide a faster return on development efforts. Simplicity equals speed in application development, and that speed is being driven by the move to Web 2.0.
That viewpoint is as follows (hopefully, I'll do better this time): Ajax, as per Wikipedia, is a collection of "development techniques" (to my mind, a "meta-language") that allow web programmers to access other programs asynchronously. It used to require JavaScript (and thus, in that sense, to focus on object-oriented coding); now you can also use VBScript and other "programming-language code". Perl was originally a pastiche of straight-line/'functional" and object-oriented commands (Wikipedia claims it is "high-level", but based on the latest examples cited there, I tend to disagree). From what I heard last year at a Sun developer event, from frequent use in relation to the Web, it has tended to focus more on object-oriented programming. Ruby is primarily an object-oriented language based on Perl and Smalltalk, using the "principle of least surprise" (when you program, you should expect what you get). Again, in the real world, from what I hear, the result is typically object-oriented code. Python, like Perl, is a pastiche of object-oriented and other approaches, this time with the emphasis on "readability", but again, according to my observations, its object-oriented statements are now used more frequently than the others.
The salient point about them all, from my point of view as a post-grad at Cornell when DOD was first creating TinMan, is their basic similarity in real-world use to each other and to Java. A more correct statement of what I was trying to say in my comment would be: whether or not their practitioners believe this, these languages and "development techniques" have far more in common with each other than with C or MODEL 204 User Language (sorry, but that's the best example I know of a high-level language). They are primarily not straight-line; they are primarily used to produce object classes; and despite differences in things like inheritance, overall their object-oriented approach is not really that not far from the Java approach (again, for Ajax substitute JavaScript in that generalization, with prototypes close analogs of object classes). I define high-level languages as those that focus on 4GL, drag-and-drop WYSIWYG, or built-in extensive use of high-level components.
For example, in MODEL 204 User Language (more or less), to handle a ERP situation, you might say:
LIST1 := FIND ALL RECORDS WITH FACTORY=Boston AND QUANTITY<=5
FOR EACH RECORD IN LIST1 ORDERQUANTITY = 10
To handle the same situation via Ajax, Perl, Python, Ruby, or Java, a programmer would typically define and/or reference many object classes to handle the underlying Web architecture (client? JSP? CGI?), the browser interface, and translating the data-handling to SQL and back.
In the real world, I assert, the result of much Ajax, Perl, Python, Ruby -- and Java -- development that I hear about is now typically generation of object-oriented code that does not incorporate 4GL, WYSIWYG, drag-and-drop, and thereby unnecessarily wastes the programmer's time. Thankfully, vendors of Java toolsets have finally made some strides towards drag-and-drop programming and high-level interface-driven and data-manipulation commands; but I also feel it is not a good sign that commenters still don't understand how from a macro point of view, I can see some of Perl, etc. as "variants" of the Java approach, or the result often as low-level object-oriented code of the same ilk as Java code.
Here's an analogy: suppose I said of today's multifunction printers (and their software), that they are variants of a Xerox copier, and that they effectively produce Xeroxes. Strictly speaking, that's incorrect. In the real world, however, aren't the similarities more striking than the differences?
Wayne Kernochan
President, Infostructure Associates
Perl predates Java by 7-8 years, and couldn't be much farther away than anything from being characterized as "effectively generating Java code". Ajax isn't even a language (although it implies JavaScript, which also isn't Java in case you're confused).
And characterizing "higher level" languages as the article does (abstracting memory mangement and other "low-level" concerns) is just wrong- I may have missed a reference in the article somewhere, but the only languages I see mentioned at all that would be "low level" by that definition are C and C++ (excluding the MS "managed" C++ on .NET variant). The real differences and benefits of dynamic languages (duck typing, incremental execution/not requiring somewhat more complex complication and deployment cycles) aren't touched on at all.
Very sloppy job, overall. At least make sure you've got someone with some rational credentials checking this stuff-
In addition, without checking any references, it is clear that the research used as base for this article has a very time sensitive context. I doubt the results of the research are relevant as of the last couple of months.
Python is absolutely NOT a Java variant. It is written in C and therefore eventually runs in C albeit virtually. There is NO Java involved in the standard distribution of Python.
And this statement:
However, dynamic languages are not a panacea. "They could create code that's difficult to read, that's not so structured and that's difficult to maintain," Hilwa said. "But they tend to be more productive, so you end up with a lot less code and write code more quickly."
is not believable. Without any experience in a programming language one could clearly see that it is contradictory. "...difficult to read, that's not so structured and that's difficult to maintain" does not at all equate to a language that is "productive" and can that you can "write code more quickly"
For those who are familiar with dynamic languages know that they are the easiest to read of all languages, often even when programs are written poorly. Being high level languages, they don't have to be structured, but all of the languages listed in the article are quite well structured.
Not to mention that non-dynamic languages can *definitely* create code that's hard to read.
Compare:
Python:
for i in range(5):
if ((i==2) or (i==3)):
print "i=", i
C:
for (int i=0;i<6;i++) {if (i==2||i==3) {printf("i=%d",i);}}
Which do you think is "...difficult to read, that's not so structured and that's difficult to maintain"?
For example:
"Java and its variants like Perl, Ajax, Python and Ruby, which effectively generate Java code, are unnecessarily low-level languages" ??
Excuse me? Perl is a variant of Java?
Ajax is a language?
Where does he get this stuff?