Dumbing Down Programming?
RunRevKev writes "The unveiling of Revolution 4.0 has sparked a debate on ZDNet about whether programming is being dumbed down. The new version of the software uses an English-syntax that requires 90 per cent less code than traditional languages. A descendant of Apple's Hypercard, Rev 4 is set to '...empower people who would never have attempted programming to create successful applications.' ZDNet reports that 'One might reasonably hope that this product inspires students in the appropriate way and gets them more interested in programming.'"
There's two major sides to this issue. One seems (note I said seems, not implying at all that it's unavoidable) to be that the more human readable and dummy proof the more overhead you pay when you design/implement a programming language. You might find the C/C++ crowd commonly accuse the Java or Ruby crowd of this overhead. Indeed, Java has a garbage collector designed to protect you from memory leaks and Ruby is an interpreted language that pays a mild additional overhead since it cannot be optimized upon compilation. But that's another debate altogether, it just is evident that the more you move away from actual machine language and assembly then more overhead you pay (generally).
The other side of this issue is that computers are our servants, not the other way around (and if anyone reading this is a bot or script, don't you forget that). I don't recall where I read it but this is the reason why the string is the most important data structure in computer programming. Because simply put, the string is the best way to communicate with the user. What follows from this logic is to screw the optimizers (or 'misers, if you will) and make the servant learn the language of the master--not the other way around. And isn't this how the most complex applications have progressed? Once requiring training and years of experience, now even a kindergartner can master a word processor. Computers and applications will forever be bending over backwards for the most important thing to us: us.
And yet if an implementation of a language incurs on average of 10% overhead, your hardware will catch up in a matter of months.
And yet if you run a data center the size of Google's and have several applications in said implementation running on hundreds of thousands of machines, a cycle here and a cycle there isn't so laughable to work toward saving. And isn't it the big players that ensure the lengthy life of a language and its implementations?
So it's a good debate with several sides. Personally, I love the fact that I can code a web application in Ruby, run some old C code off sourceforge in Java with JNI (sort of) and bust out a C++ application for manipulating ID3 tags across my entire music library. To those arguing against Rev4, I ask simply "why not?" I mean, you don't have to use it, it's a natural progression so let it happen. Maybe you'll find it useful for prototyping? Maybe you'll find it's a useful tool for some problems and your toolbox will grow? Who knows?
In the end, I would like to opine that the the chip makers are forcing us towards languages that make multi-threading more intuitive and useful. I mean they concentrate on threads communicating or even implementing APIs to help automate (by enabling what is appropriate to multithread) in loops and algorithms. That's going to be a large factor on whether a new language is adopted and survives.
My work here is dung.
PHP and VB have dumbed down programming too much. Managers love it because they can hire less skilled (and cheaper) employees; end users suffer with shitty programs.
Obviously, you can (and do) write shit software in any language, but at least other languages let you write well designed software.
People have been saying this since FORTRAN meant you didn't need to know assembly language to make use of a computer.
Let dumber people program and you end up with dumber programs. Way back in year 2000 I found that most of the Y2K bugs were actually from more recently written programs in dumbed down languages.
now we need to go OSS in diesel cars
You'll never find a programming language that frees you from the burden of clarifying your ideas.
It takes a man to suffer ignorance and smile
Be yourself no matter what they say
The big thing I notice in their "competitive comparisons" is that they strive to make Java, C#, C++, and PHP as verbose as possible when they're creating what looks like it should be optimal Rev code.
I wonder if they didn't compare themselves to Ruby or Python because they couldn't contrive examples that produce huge LOC differences?
Oh wow a proprietary software development system? It's a new world boys there are plenty of solutions out there and just because these guys have marketing dollars doesn't mean people will take them up on it.
Unless it is open, it will die.
Remember all those old proprietary platforms? They are all but dead. It is a new age, get used it.
The development of new languages and new ways of simplifying coding has been a part of the computer landscape since the whole thing began. You can argue that coding in Python is a form of "dumbed down" assembly. I wouldn't think of creating a webapp with assembly! Django has "dumbed down" much of the mundane parts I often have to create and dealing with forms and templating. But the one thing I have noticed is that no matter how easy "programming" gets there are still people that will just not "do it".
I still can't see the masses suddenly deciding that they're going to program applications now. Hell, most of the people I know think conditional formatting in excel is just too much effort. I can see this just being used by actual programmers for users but I dont think it will see in a swath of uber-uber-amateur programmers all of a sudden.
jaymz
You get what you want. Someone else gets what they want. What's to get bent out of shape over?
Dumbing down programming can only get you so far towards the democratisation of programming : the most dumbed down programming language still requires a user whose mind can express algorithms. And of all the people who can express algorithms and would want to, few are limited by the commonly used languages, that is, if you have a mind made for creating algorithms, learning to use a programming language will be fairly trivial.
You just got troll'd!
Ok stop acting like Luddites and embrace the new economy. Programming is currently complicated and requires costly developers to write and maintain. In order to increase efficency, lower payroll, and satisfy shareholder demand, languages like runrev should be embraced by business.
This innovation is no different than automation on the assembly line. The global economy has changed around you - it is time to recognize trends and retrain. Otherwise you may find yourself out of a job and career.
/snark
Whose idea was it to put light peach text on a white background?
Mind you I only skimmed a couple pages in the tutorial but it's just a programming language adding more words and more typing because it may do something like spell out add rather than using +. That may let idiots grasp programming a bit more than they would have before but programming as it is does not require a degree in rocket science. It just requires that you actually have enthusiasm for rather than thinking it's just a way to make lots of money.
Not everyone is a programmer just as not everyone is a mechanic, painter, etc. I don't think we have a lack of programmers but a lack of dirt cheap programmers and companies will do whatever they can to lower wages. Perhaps they'd be better off make better programs to earn more profits.
Natural languages are full of ambiguities, so these "natural language programming environments" always use a more formal syntax (and semantic) and only look superficially like a natural language. Until you can actually talk to a computer (and the computer can take all the context into account), programming in such a language irritates people to no end when they stumble upon one of the differences between the programming language and the natural language it imitates.
Programming is the act of understanding and structuring a problem. The coding that follows is practically trivial compared to that first step. There's certainly a need for more programmers, because more and more is automated and someone has to write that software, but please don't create the impression that you can eliminate thinking from programming. Fixing bad code costs more than writing good code.
Is it just me or does their language look just like AppleScript?
And how can you claim that:
set foo to bar on baz
is "less code" than
bar.foo = baz
? 90% less? Yea right.
Here is my suggestion for a recursive acronym name for the next dumbed down programming language: Imbecile Means Beginner's Easily Coded Interactive Language Environment
now we need to go OSS in diesel cars
Paul Graham wrote a very informative article about "news stories" like this one many years ago. And congrats to the company behind RunRev, it is not that often /. runs slashvertizements for costly commerical software no one has ever heard of.
Football Odds
With a language with so many keywords, there are almost no valid variable names left to be used. The list is way too long. Even scrolling through the list takes some time. To me it seems more than half of the keywords are used in less than 1% of the functions. Finding the right keyword for calling some function is going to take a long time. It seems to me that this is the wrong way to solve the programming problem. I strongly doubt whether the claims that this environment save you money are based on solid facts.
Ideally, a programmer should document each section of code by writing a block of comments explaining (1) why the code is used and (2) how the code works -- in plain English. However, given the intense pressure to produce code by an unreasonable deadline (imposed by brutal managers risking a bullet through their head), the first thing that is sacrificed is comments. Not writing comments saves several minutes per section of code and -- in total -- saves days of work over the course of the project. In other words, not writing comments means that an impossible deadline becomes slightly more possible.
A programming language that uses mostly English words and syntax is essentially an environment for self-documentating code: the holy grail of brutal managers everywhere. However, this self-documentation addresses only "how the code works". The programmer must still write comments explaining "why the code is used". Still, getting half of a loaf is better than getting nothing at all.
Please stop sending marketing fluff in as if it is news.
The related article and the supposed replies on it have been constructed as a media release for this companies programming product.
I could argue a number of points about this article and the underlying software.
But what is the point? To help market this product for a company that wants to do viral marketing?
No thank you.
If you agree: mark me up but please don't reply/add to this.
http://www.virtualschool.edu/mon/SoftwareEngineering/BrooksNoSilverBullet.html
If I have seen further it is by stealing the Intellectual Property of giants.
is it just me or does an ordinary 'easy' programming language like PHP, VB or python seem much easier to work with? the syntax of rev4 seems far too verbose, not nearly enough parenthesis.
also if you understand how the machine works is there any real need to program in 'plain english'? the syntax doesn't quite make sense to me like other languages would. for example it seems more logical to have a loop to move something along by a tiny amount and then wait a bit rather than telling it to move a thing from one side to the other "in 5 seconds". with plain english you also end up with stuff that has multiple equally valid meanings
i have nothing against making programming easier, just don't think this is the right way to go about it. a good IDE with syntax highlighting and prompting features like VB and a good set of libraries with decent error handling is better than any of this plain english stuff that introduces mostly redundant keywords for the sake of having plain english
The problem with such solutions is that they are usually inflexible in terms of the applications you can make and often produce lower performing applications (i.e. use more memory and processor time). I still remember corporate suits droning off in business magazines in the 90s how Rapid Application Development tools would soon make programmers obsolete leading to a wondrous wave of cheap microserfs. RAD tools only had staying power in things like GUI design tools. This "Revolution 4.0" just seems like a hyped up "web 2.0" version of the same thing.
The programming world seems to run in about a 30 year cycle. Java = Pascal reinvented (pointers are too hard) Java bytecodes = UCSD Pascal p-system reinvented picoJava hardware = Intel i432 reinvented Revolution 4.0 = COBOL reinvented - similar claims Those who fail to learn from history are doomed to repeat it.
I'm sorry, but I don't see what the fuss is about.
How is whatever Revolution is doing any different from
MULTIPLY HOURS-WORKED BY HOURLY-RATE GIVING GROSS-PAY
or
PERFORM WEEKLY-CALCULATIONS VARYING WEEK-NUMBER FROM 1 BY 1 UNTIL WEEK-NUMBER IS GREATER THAN 52
?
Face it, programming languages are designed for human consumption. Computers don't care whether you wrote it in COBOL or C++ or Revolution; they only know machine language, not programming language. The purpose of a programming language is to allow the programmer to express a set of instructions in a way that s/he and other programmers understands.
Today the real problem is in system design. While is some cases you create a special language to solve a special problem of a domain (domain specific languages DSL), in other places you use generators. Even though modern languages are all able to express component, class and object structures. In principle you can express modern OO designs in any language. If they have created a new language then they can most likely reduce the number of typed characters, but what they cannot reduce is the number of rules and definitions which make up the specification of the application.
Also most time in modern software design is spent for requirements engineering and development of the architecture. Followed by test planning and test implementation (if not done automatically from the specification). And only 1/3/ - 1/4 of the time (sometimes even less) is used for implementation. So honestly I do not believe their advertisements and I do not believe that their language is sooooo much easier to use than all the other languages available.
I, whilst not being a programmer, do dabble in programming and I find these "natural syntax" languages, such as AppleScript, to really be read-only languages (as opposed to something like perl that's write only)
Reading through the code for an AppleScript program, it's pretty easy to pick up what's happening even if you're not overly familiar with the language. What is difficult is to write it properly, as it's so close to English, yet it's still got quite a rigid and structured syntax, so you need to use the exact form for it to work.
Specialist Mac support for creative pros, Melbourne
When I went to the CS department at college, they informed me the C++ classes I took in junior college were no longer applicable to their CS degree, because they'd changed what was CS210-211 to ADA from C++. "Because we wanted students to spend less time debugging and more time writing code". Er...I'm no master coder, but in my experience, any project over 100 lines involves spending more time debugging than actually writing code. I thought that's just how it was.
I am all for languages that are easier to use. But coding should be hard. It is hard. And setting people up with the expectation that there's very little debugging involved, or that they can write killer apps in 45 minutes is crazy and counter-productive.
K.
It can't get dumber than this.
http://dilbert.com/2010-12-13
Never has software sucked so badly as today. We have "professional" programmers trying to implement business rules, what a mess.
I work in the nonprofit sector. The mailing list, volunteer, and client managers are just terrible. Someone take GiftWorks out back and just shoot that piece of junk. BlackBaud Raiser's Edge, who the fuck has $150,000 to just bring up a splash screen?
I long for the good old days of Paradox/DOS and dBaseIII. It was a snap for anyone with a triple digit IQ to write an app that would keep track of financial and inkind donations.
C#, Java, C, and the rest of them have ruined American business. They are horrible tools.
Does 'magic' still work?
Isn't SQL somewhat like that? I mean:
select color from hair where name = "Mike";
http://dilbert.com/2010-12-13
It alone moved me from a normal commercial software developer, to the forefront of scientific development in informatics, and made me so much a better programmer at normal programs, it’s not even funny.
Then again, I am one of the rare kind of people who still think that intelligence is cool, and being better because you worked to be better, should be rewarded. Instead of rewarding those who do worst, and dumbing everything down, just for the nature to create better idiots, and thereby creating a feedback loop straight to Idiocracy.
But maybe I will write the heart-lung-machine software then, while they write the VB and Access applications of the future. ^^
Any sufficiently advanced intelligence is indistinguishable from stupidity.
Is it really dumbing down or are the languages that we use more obtuse than necessary? The common syntaxes of the day are left over from language design when every bit mattered. If English-ish syntax is more clear, then why not use it?
Isn't it more about clarity of the language than about shortest code possible?
- Zav - Imagine a Beowulf cluster of insensitive clods...
I can imagine that a lot of people that aren't programmers looks at this language (and the examples) and thinks that it's easy to learn.
Sure, it is easy to read, but is it easy to write?
/* Shortest useful program ever. */ /* prerequisite: Someone else already did the heavy lifting. */
#include
int main(int c, char **v)
{
initializestuff();
for(;;) {
doforever();
}
}
There, I wrote an entire operating system in less than 10 lines!
Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
The real issue isn't how easy a languages command structure is, because memorizing function calls and syntax is easy. The real problem, IMHO, is people... People are not taught to think analytically and structurally. That is the problem. How can you code without analytical skills. When I learned programming 10 years ago I was taught to draw it out on paper.. Flow chart style. If the flow chart starts getting to big you need to split off a function, eventually creating a rough sketch of how your program will work. People with analytical skills can learn anything if explained how something works.
On another note, I don't want programming languages getting to the point where its like speaking english... Imagine the code... *shudder*
When I was a boy all we had were 1s, and we had to break those off of trees. If we wanted zeros we had to find a willow tree and bend the one around until both ends met....
Now get off my lawn!
Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
Look at the tutorials; for example the File I/O code. I concede that to the average person without any programming education, this may look simpler than its C++ or Python counterpart, but is this syntax really simpler? I think not! On contrary this bit would be easier to code, with a rather lower risk of time-consuming compile errors, in many traditional languages.
I've seen enough attempts to "dumb down" computer languages for people whose computer programming examination only asked: "Which of the following three is not a valid BASIC keyword: (a) PRINT (b) GOTO (c) TERMINATE?" (I kid you not -- when I was at university, this was the level of knowledge expected from bachelor's students in, if I remember correctly, veterinary medicine.) Generally these languages did not succeed in making computer programming easier; they only succeeded in making it look superficially easier. The threshold appears lower for the uninitiated, but after the first three days there is no advantage and you're stuck with a stupid syntax.
The real choice, as far as I can tell, is between a "minimalist" design of a language which provides only those features that a developer is expected to really need, and a "maximalist" design that provides the extra features a programmer might like to have to save him some time and make code look more elegant. The pair Java and C#, despite their similarities in syntax, exemplify the contrasting approaches very well. Personally, having seen how even professional programmers can mess up their exception handling and mismanage their dependencies, I am firmly minimalist. Never mind time saved in writing code, that barely matters. What matters is time saved in code reviewing and debugging, and that is nearly always easier in a minimalist language.
That said, I hope there would be a market for a good, simple language suitable for automation purposes: Something that is suitable for anything from writing macros in a text editor to controlling a complicated robot, for which people now usually reinvent the wheel -- generally producing something roughly triangular with an off-set axle.
This can be seen even in universities, there are CS majors with no education in ASSEMBLER or C during the whole studies, some haven't even used C++.
And money dictates here too. We are forced to study that horrible, disturbed nightmare that is Symbian for mobile development class, although I did manage to talk the lecturer into allowing one half of the course test to be for Android if one wanted it to.
I don't consider myself a good coder; my experience comes via a hobby from a simple c-like language which pretends to have objects. I've also seen some so, so much better coders, especially within in the demo scene, but even I can see that the level of a regular CS student is horrible. There are few rare gems out there, but the average is nasty. It'd be absurd to expect them to learn those languages to any decent level within the regular course times either.
The efficiency of one's code is hardly ever noted within courses. It's good if it works. There's probably just so huge need for 'bulk coders' and other 'it professionals' that they've had to dumb down most of the courses. There are only a few rare courses which really challenge you (logic programming being the usual cause), and they're not needed to get the papers.
It's infuriating having to drowse through such highest level education.
Simply put - though VB was "wildly successful" - but how many pieces of software built on it are still around *because they were built properly*? Most of those tools have been thrown aside because they were grossly inadequate in performance, architecture, design, etc.
I was a witness to countless fusterclucks and saw how many systems had to be re-done from scratch because some genius businessman believed what he read on the brochures only to realize that there was no such promise and now his hordes of customers were demanding delivery on the promises made. Needless to say, there were no shortage of *REAL* programmer jobs in those days :)
The problem was never with the language per-se, as I'm sure the problem won't be with Rev4. The problem was always with design, architecture, concepts, and implementation choices. As noted above by the xkcd reference, there's no substitute for clarity regardless of the tool you choose to implement your program.
I'm not knocking the tools themselves, I'm knocking the fact that they're billed as ways to "bring programming to the masses".
Just like not everyone should handle nuclear material or toxic substances or operate on a human body, not everyone should *program* computers. As such, the really big benefit I see for this kind of tool is as an end-user interface mechanism (or facilitator) - especially in conjunction with language recognition. There are some interesting ideas there that are definitely worth exploring...
a) Any system even fools can use - will be used only by fools.
b) I really liked these "up to"s... They tell so much.
http://opencm3.net, http://www.nongnu.org/gm2/
Is there a reason that it should not be dumbed down? Should it be kept difficult for some reason? If a person can adequately express their problem and how it should be solved to a computer, and the computer can take that expression and solve the programmer's problem, I don't see what the issue is.
Cory Doctorow talking about cloud computing makes as much sense as George W Bush talking about electrical engineering.
If English was a language easy to communicate clearly and unambiguously what we wish to do, we wouldn't need lawyers.
Phillip.
Property for sale in Nice, France
The best approach is to develop fast, identify bottlenecks and then require the user to upgrade their computer.... their IT infrastructure... Worldwide network and datacenters.
That's the economic history of programming.
Deleted
Even if you can bring programming to the masses, workaday programmers better hope that nothing those masses produce becomes important, because such things inevitably land on their desks when they need a tweak and the author has moved on. Maintainability is a quality that is difficult for even experienced programmers to put into their work. First timers rarely see the costs a year down the road of any implementation decisions, usually because they don't yet know there are multiple implementation possibilities.
What do you mean they cut the power? How can they cut the power, man? They're animals!
I was already well into programming when I bought a Sharp MZ-80k. While everyone else was shipping with a version BASIC, the Sharp shipped with Pascal. That probably shaped my good opinion of Modula-2.
Politics is the art of looking for trouble, finding it everywhere, diagnosing it incorrectly and applying the wrong fix.
I haven't actually seen this language, so I can't say for sure, but I would argue that many programming concepts are easier to express in actual code, or at least pseudocode, than in anything truly resembling English. Even when we talk to other programmers, we talk about concepts like strings and characters, which are ultimately the language of the machine, not us.
So, this could make it easier to learn to program, but this should not be seen as something in the same vein as Excel, Access, Filemaker, or anything of that nature. Those are tools that let non-programmers make a program, and non-DBAs make a database -- but they are both inferior for real programmers to use, and even when they aren't, they mean the programmer doesn't have to learn what's going on under the hood.
But as a programmer, you do need to know what's going on under the hood. When the abstraction breaks down, you need to know how and why. It's one thing to let the garbage collector handle memory management, but if you understand what it's doing, you can make little tweaks to make your program smaller and faster, while still letting the garbage collector do the heavy lifting.
In other words, read The Law of Leaky Abstractions. As Joel says:
The law of leaky abstractions means that whenever somebody comes up with a wizzy new code-generation tool that is supposed to make us all ever-so-efficient, you hear a lot of people saying "learn how to do it manually first, then use the wizzy tool to save time." Code generation tools which pretend to abstract out something, like all abstractions, leak, and the only way to deal with the leaks competently is to learn about how the abstractions work and what they are abstracting. So the abstractions save us time working, but they don't save us time learning.
So, in other words, the real question we should be asking is whether this tool is better than existing tools, like Python or Ruby. There have been other attempts at RAD which I think fall far short of that goal.
To answer the question "why not", you have to understand the damage that is done by allowing non-programmers to try to program. Think of the damage which is done with this simple Visual Basic command:
I mean, that's almost as bad as GOTO, probably worse, because that leads to silent errors. It leads to growing a codebase full of errors that happen all the time, of dead code, and of random Bad Things happening, all of which would at least make your app raise a noisy error during development (so you'd fix the problem). But no, you silently ignore them...
That isn't strictly VB's fault, but there seem to be so many crappy VB coders for whom this was the next logical step after Excel formulas. Since the actually decent coders tend to prefer things like C# (in the MS world, at least), I don't see much of a reason for VB to exist, and it seems to actually be causing more harm than good.
That's where I view every attempt at a "dumbed down" language -- if it doesn't improve things for actual programmers, it'll probably do more harm than good.
Don't thank God, thank a doctor!
The funny thing is, when I read the tutorial, they lost me on the "Getting Started" page.
As soon as they start with GUIs and toolbars with icons that you need to click, I don't understand what is happening anymore.
Please correct me if I got my facts wrong.
For what it's worth, Hypercard is what got me started programming. There were few other options available at the 10 year old level. The "open-source" nature of Hypercard where all the code that runs the stack is visible to the end user makes it easy to learn how someone is doing that sweet thing you've never seen.
More power to easy languages, and even more to an IDE that someone with a Kid Pix based computer background can pick up and run with.
Am I the only one seeing the irony of calling something "Revolution" and then adding version number 4.0 to it?
I think that about sums it up nicely...
ADD 30 TO AGE.
DISPLAY 'Missed me?'.
STOP RUN.
I am a programmer around long enough to literally hear bulldozers and chain-link fences clinking around big holes in the ground at the sight of the word "developer". (Insert more hallucinogenic curmudgeonly grumbling here.)
More on topic, I have no qualms admitting that "fast and easy" programming "solutions" might indeed be so, but still can't help but wonder what else is missing. What are the consequences of "fast and easy" programming?
Those words bring to mind news articles of car and train wrecks, where speed is always an aggravating factor, and attaining that speed never seems too difficult or too ambitious at the onset, prior to the accident.
A wreck is definitely not desirable if one aspires to Quality (in the ZAMM --Pirsig sense), for a wreck completely removes the moment of perception from the scene, by removing the perceiver (or more precisely, the motivating force (perhaps in the gravest cases, the life) of the perceiver).
I think, rather than pushing "fast and easy", a better pair of adjectives would be "strong and flexible" (like a rope, or a towel, say). The programming languages, environments and mindsets based on these fundamental metaphors admit guidance from a mentor (on the "other end" of the experience divide, pulling) quite readily.
The consequences may in the end result in "fast and easy" development of the program, of the programmer, of the mindset, anyway. It depends not only on the budding programmer, but also on the relationship between the teacher and the student (both of whom may be the same programmer, why not?).
Wah!, Without my complicated programming language how will people know I'm smarter than them?
Creativity is not limited to people who have the skills needed to bring their dreams to reality. Low level programming languages stop many creative people from bringing their ideas to the computer. High level languages like Revolution allow more people to create their own software, whether it is single-use utilities, applications for personal use only or commercial applications.
:-)
But this is always how technology develops: the pioneers have to do everything the hard way, then those of us who follow behind can use their tools to make things easier and easier. Of course the people who have invested in learning how to do things the hard way feel resentful of the newcomers who seem to be getting so much for free, but progress cannot be halted and when easier ways exist, why should we insist that people learn to do things in any way that is more difficult than the task requires. On that basis, programs should only be written in machine code, not this new-fangled assembler
This is an age old quest. There has been attempts at making programming English like for many decades ...
First there was COBOL: COmmon Business Oriented Language. Its syntax is very similar to English. It was sold as a way to make Managers able to write programs without the need of having a developer involved.
ADD 1 TO IDX.
SUBTRACT 1 FROM IDX.
MOVE X TO Y.
What happened instead is that a generation of developers learned COBOL and specialized in it, and managers were still managing.
Next, there was SQL: Structured Query Language. Despite the mathematical model behind relational databases, SQL was again sold as a way for managers to execute queries and get reports for themselves. That may have worked until the manager who ran a query on seven tables without any joins. That made everyone go again to "leave it to the programmers" mode again ...
2bits.com, Inc: Drupal, WordPress, and LAMP performance tuning.
They have a comparison to other languages, e.g. a single line of Rev code that they claim takes 69 lines of code in Java. (Fetching the last item on the second line of a csv file on yahoo.com somewhere).
I felt hurt and made this functionality in 5 lines of code in Java (13 if you count class, package, imports and function main declaration). And i've even spent one line extra to make the code more readable.
A handy method like SlurpURL is available in many libraries, which would have cut the first 3 lines into 1.
Given that java generally sucks on string manipulation, this is not bad.
public static void main(String[] args) throws Exception {
String text = "", s = "";
BufferedReader br = new BufferedReader( new InputStreamReader( new URL( "http://ichart.finance.yahoo.com/table.csv?s=RBS.L" ).openStream() ) );
while( (s=br.readLine()) != null ) text += (s + "\r\n");
String line2 = text.split( "\\n", 3 )[1];
System.out.println( line2.split( "," )[ line2.split( "," ).length-1]);
}
They said the same thing about COBOL.
-jcr
The only title of honor that a tyrant can grant is "Enemy of the State."
Sure. Dumb it down far enough and many of those writing software today will be able to do it.
Warning: this article may contain humor, sarcasm, parody, and perhaps even irony. Read at your own risk.
Heh - sidestepping the non-random causality of programming and reclusive...
To grow a field it helps to create a large base of people who at least "appreciate" it. Pick the exact timing you like, but suddenly we went from when growing up learning computers was "nerdy" to "connected".
Businesses are the art of getting midline people to handle some stuff that just burns hours, saving the power hitters to really churn out something. "Using 90% less code" seems to be the kind of thing that's made for this.
My first Journal Entry ever, in 8 years! http://slashdot.org/journal/365947/aphelion-scifi-fantasy-horror-poetry-webzine
This is just another Java competitor.
Don't worry about memory, it's hard, let Java do it for you.
Don't worry about sorting, let Java do it for you.
Don't worry about algorithms, those are hard, let Java do it for you.
Programming now a days, is nothing more than making a simple GUI, and some event driven programming, it's being deskilled, so any low paid moron can do it.
There is always embedded programming, which requires a lot more skill, but finding people who can actually program is getting harder and harder.
Can anyone post an example of this code?
Didn't we used to call it COBOL. :-)
"Wow Grace, now anyone will be able to program"
I remember reading almost all of these exact same marketing buzzwords and hype ten years ago. The only difference was that then the "amazing, revolutionary language" was called REBOL.
Exact same business plan, as far as I can tell. Exact same hyperbolic language. Enough so that I wonder if the same copywriter did a search/replace on the old pamphlets. It's yet another moderately OK high-level language, but that comes in three versions:
(1) Free (of cost), but fairly crippled
(2) Expensive
(3) "Enterprise", i.e. REALLY expensive.
And just like REBOL ten years ago, it promises "revolutionary" cross-platform support, while dropping or being slow to update the non-Windows versions.
The linked blog/review of the language seemed to have comments solely from paid-shills. The reviewer himself was interesting, but all the comment at foot read like almost certain astroturfuing.... gee, just like REBOL did back in the 1990s. When you actually look at the "amazingly readable and compact" code... well, it looks a lot like AppleScript and a few other similar approaches to syntax. But one thing I noticed in particular is that the "unbelievably short" code samples were about the same as the ones I'd use in Python, or Ruby, or Perl, or AWK. At least in length; Python feels more readable to me... once you give up the silly conceit that Rev syntax isn't syntax because it kinda-sorta-a-little-bit reads like English. Rev *is* shorter than Java or C++, but that's not exactly anything amazing.
Buy Text Processing in Python
From TFA: "I suppose that adds up, 90 per cent less code equates to ten times faster."
Really? I suppose you can write haiku ten times faster than stream-of-conscious recordings, too?
There's one thing that computer code and natural language text have in common: For both, confusing "writing" with "typing" is moronic.
I'm already appalled just by seeing all these stock happy face images. Also, never heard of it before. What is this for stuff, man.
Pascal was the second language I took a class in, and it basically only in that class I used Pascal. I wanted to take Modula but it wasn't taught where I went.
Falcan
Should there be a Law?
Seriously, this is slick. I don't mean the language (it appears I need to install a plugin to view samples, which is a bit silly - I just want to see the language). No, I mean the advertising. Post it to slashdot with a title the casts it in doubt; link to the web site that requires you to install the plugin... poof! instant installed client base.
For some reason there are those in the programming profession (usually the "we code to live" crowd who will slide easily into management as soon as possible) who cannot seem to get it into their thick skulls that "everybody wants to program a computer" is just about as true as "everybody wants to repair their own car." Non-programmers are that way because they are neither emotionally nor intellectually equipped by either nature or nurture to be a computer programmer (let alone a good one). Only 1% of the Earth's population are scientists or engineers. Making the tools employed by software engineers easier isn't going to make it (more) interesting or any easier for that 99% of the population who are not.
As far as making programming easier for programmers... Don't you get it? We like it hard. The harder the better. Most of us would be as happy as pigs in shit if our masters would let us program everything up in assembly language. If we could get away with it, every shell script would be written as one, big, fat, hairy regular expression. Real programmers don't want "easy," we want "control" and are more than happy to put up with the lack of ease having more control invariably entails. Programming languages that are more like human languages? That sounds like documentation to me. And you know how much programmers love writing documentation.
Computer programmers are not your typical breed of cat. To us, 200 milliseconds is a long time. Indeed, every day at work we manipulate space and time with hardly giving it a second thought. We are the poster children for OCD. We'd rather be "in the zone" struggling to craft an elegant solution to a very difficult problem than be in the real world struggling with very difficult people. We despise organized fun. We can't understand why "normal people" don't get the concept of indirection. We have working memories that rival those of Chimpanzees. To us, "average," "normal" and "easy" are swear words. And, truth be told, most of us would do what we do without pay if we could (and, judging by the number of open source programming projects on the Internet, a significant number of us can). We don't code to live, we live to code. We can't resist an intellectual challenge. If you want a programming project done quickly, just tell the programmer(s), "There's no way you can do that in a <pick-your-time-period>!" The best way to avoid a programmer at family gatherings? Give him or her a book of (mathematical) puzzles. You won't see him/her again until every puzzle in that book has been solved. Does any of this sound like (part of) a description of "your typical business person?"
Programming computers isn't difficult because the tools aren't close enough to English (or whatever human language you prefer). Programming computers is difficult because highly-structured problem solving is difficult. And its not really something they teach in school. Probably because its as hard to teach as are the problems it is most suited to solve. It may, indeed, be something you can't teach because the student either has "it" or doesn't. To do it well requires mental discipline, above-average intelligence, attention to detail, the willingness (indeed, insatiable desire) to continually learn new concepts and tools and, most of all, an insane amount of persistence. Most people don't have that particular constellation of traits. Making programming tools simpler will not turn these people into programmers any more than the advent of power tools and embedded, computerized control/diagnostic systems turned people who weren't auto mechanics into auto mechanics.
One "Aw, Shit!" is worth 100 "Ata boys!"
Its still programing like COBAL with some gui glued on.
The plugin they wanted you to install killed my backup dev server and had to wipe it.
I dont think its gonna catch on because of the overhead for end users.
Picutre this... "Wellcome to Slashdot install this plugin to view the site".
I dont think you would if youve never been to slashdot before
Wow Deja Vu.
I remember the xBase (dBase / Clipper etc) languages being touted as the programming solution for non programmers. Programmers would be out of jobs, everyone would be writing their own applications. My first programming job when I left University was writing business applications in Clipper.
Comment removed based on user account deletion
... which is to say, not at all.
The idea is not new, and something like this has been tried pretty much since the notion of a programming language higher-level than assembler was invented. Most of them die straight away. A few enjoy brief prominence, but then die anyway (e.g. dBase and dialects, and many other "4GL").
Very few survive and take over some niche, but by that time they've inevitably strayed from the original "can be understood by any random guy" design goal. One example of such is SQL - yes, originally, it was intended to be a language in which managers and like-minded non-techies could easily write queries for reports etc. Yeah, right... every time I'm explaining why you can't write WHERE after GROUP BY, and have to use HAVING instead, I chuckle to myself.
One of the astro-turf comments in TFA reads like this:
"Even though ‘90-per cent less code than traditional languages’ reads like a big claim, it is valid one.
If you have a string you want to extract the first 3 characters of the second word on the 5ths line from and display it in an alert box, how many lines of code would you need to write in traditional languages? In rev this is a one-liner.
answer char 1 to 3 of word 2 of line 5 of theString /* where theString is a variable that holds the content */"
Of course any competent programmer can do the same in just as little code. For java it would be something like this:
alert(theString.replaceFirst("(.*\n){4}\\s*\\S+\\s+","").substring(0,3));
or
alert(theString.split("\n")[4].trim().split(" +")[1].substring(0,3));
This is roughly the same amount of code. Not 90% less.
"Text processing" is apparently touted as one of the strong points of the language. Yet, I am sure old fashioned perl and regular expressions are likely more concise and powerful. As shown above, even java can compete.
How would this fare with real programming tasks? First order functions? List comprehension? Closures? A sound typesystem? You could go on forever.
These topics seem to be ignored. This is a VisualBasic clone, not an attempt at a language that you would create "real" programs in.
on off switches. Everything else is just some higher lever Abstraction!
Why can't someone attack a profession like Law or Medicine with a tool like this? Seriously? Imagine:
"Our new Suem 4.0 system makes it possible to practice law without passing difficult bar exams!"
Don't hire expensive lawyers to represent you in court when you can use Suem 4.0 to help you defend yourself! Defend yourself against Murder charges! Rape charges! or even Embezzlement! Now anyone can practice law!
"Our new Surge 4.0 system makes surgery possible with 90-per cent less precision!"
Why pay for expensive surgeons when you can operate on your own brain! Perform tumor excisions and Lobotomies in just minutes of training!
[signature]
thanks for catching & correcting.
So what if it's easier or dumber or whatever?
Most of us aren't out there revolutionizing the world with our leet skills - we're pulling numbers out of a database and shuffling them into some other database. It happens - we get paid.
If this language gets some of the shovelwork off my back and frees up time for me to solve some interesting problems, then I'm all in favor of it. If it provides a way for me to earn an income (or someone else to) then I'm all in favor of it.
If it gets a few more people interested in programming, I think the world can handle that. Just because there's a new language on the block doesn't mean that all the other languages are suddenly useless. After all, we still have stuff written in COBOL floating around.
The big picture guys will still hire programmers to do what we do because we can think about a task and break it down into it's component steps.
"My God...it's full of trolls!"
The problem I've found with some of the so-called "easier" languages is they tend to attract the lowest common denominator, and they tend to go quickly from "easy" to hard or nearly impossible for more complex tasks that are outside their parameters. This leads to a lot of people without proper education making "applications" which suck horribly, or that do a number of extremely nasty workarounds in order to do a given function
It's not a set rule, but I've seen enough horribly mangled pieces of "simple" programming to believe that it's fairly common.
++++++++++>[->++++++++++++>+++++++++++>++++++++++>+++>++++++++++>++++++++++---.>+++++.>+.>++.>--.>++.
there will be always lower layers with which people will need to work with, when the needs arise. it has never been different.
on top of that, every software develops its own characteristics and workings after they grow big enough. regardless of what level programming language they are written on.
the most blunt, straight example for this are the php 'scripts' of a few years ago. over years, they have developed and grown to such a level that they have become expertise areas in themselves, and in places like elance, rentacoder, those expertises are specifically being asked for, instead of being labeled as 'php developer'. you may see 'phpbb expert', 'oscommerce developer', 'drupal wiz' requests a lot more than straight 'php developer' requests and so on.
it seems that this doesnt change with platform, and always holds true.
Read radical news here
Learning only one language.
Isn't the best approach to develop fast, identify the bottlenecks and then rewrite those parts in a faster language, like Python C modules?
That would work except in cases where the platform's sandbox policy allows managed user programs (e.g. Python, Java, Lua, C#) but bans unmanaged modules (e.g. C, except for the subset of C++ that can run in the CLR). Java applets run in such an environment, and so do Xbox 360 games from smaller firms.
it's dumbed down.
I've been a hard core C/C++ programmer for years, but over the past few years I ended up working with 4GLs and "smart" frameworks. For the things they did well, they were great. You could spew out functionality at a much faster rate than with C/C++ or Java. But if you tried to do anything "out of the box", you tore your hair out trying to get around the limitations of the 4GL.
Most recently I took up functional programming with Erlang. It's taken me about 6 months to become truly proficient with the language, but it's very powerful for developing concurrent systems and services. Like any other language, it has it's limitations (for example, the ODBC interface casts 64-bit integers from the database to strings instead of true 64-bit integers. Integers are "unlimited" in Erlang, but when you have to send things over the wire the lack of true 64-bit integers is a real pain.)
I've worked with innumerable frameworks over my career. Each had certain tasks they were well-suited for. None was a generic "solves all problems" toolkit.
The one thing I did learn is that programming with "smart" frameworks and 4GL's is boring. Only the most technically-challenged programmers seem to stick with them, for the simple fact that there is nothing to make the job challenging or interesting when using such tools. They don't "dumb down" programming -- they just simplify their set of special cases and drive away the programmers who actually understand how machines work and how they process data. Unfortunately that also means that the teams of 4GL programmers are left helpless when they have to tackle an out-of-the-box problem, because they simply don't have the skills and experience to "bend" the tool to their will.
I do not fail; I succeed at finding out what does not work.
Obligatory Futurama:
Leela: "Uh, g- uh, getting back to the, uh, matter, uh-uh, if it please the court... Fry, there's nothing else here. You only wrote two pages of dialogue!"
Fry: "Well, it took an hour to write. I thought it would take an hour to read."
Comment of the year
I think there are two key advantages to revTalk.
1) It enables people who are not full-time programmers to undertake projects they normally wouldn't consider doing otherwise. It's possibly true that someone who knows a more traditional language could write something that executes faster or more efficiently, but if you reduce a five-hour process down to 10 minutes, you're still getting a significant boost in productivity, even if "real" programmer could write code that did the process in 3 minutes.
2) It is definitely more readable, and often shorter. As an example, there was a "readbility challenge" for coding a while back. The task was to write a routine that would determine all possible two-word anagrams given a starting word and a word list. See http://selfexplanatorycode.blogspot.com/
I can't post the code of the winning entry; Slashdot reports "Filter error: Please use fewer 'junk' characters. But you can find it here: http://www.reddit.com/r/sdcc1/comments/6wru4/leonardo/
--------
And here is the code in revTalk:
constant alphabet = "abcdefghijklmnopqrstuvwxyz"
on mouseUp
put "documenting" into sourceWord
put url "http://someserver.com/wordlist.txt" into wordList
repeat for each character c in alphabet
if c is not in sourceWord then filter wordList without ("*" & c & "*")
end repeat
put sortWord(sourceWord) into sourceWord
repeat for each line firstWord in wordList
repeat for each line secondWord in wordList
put firstWord & secondWord into testWord
if the length of testWord is the length of sourceWord then
if sortWord(testWord) is sourceWord then
put firstWord && secondWord & return after anagramList
end if
end if
end repeat
end repeat
put anagramList
end mouseUp
function sortWord theWord
repeat for each character c in theWord
put c & return after theSortedWord
end repeat
sort theSortedWord
replace return with empty in theSortedWord
return theSortedWord
end sortWord
It is shorter and (in my opinion) much more readable.
The problem with a programming language based on English is that now companies will have to train their programmers on English spelling.
An "English-like syntax" won't help. It's been tried, starting with COBOL-60. Things to look up: "The Last One", "ZoomRacks", "HyperCard". The programming language of HyperCard, HyperTalk, was amazingly similar to COBOL-60.
But that's not the right question. The question is, can programming be made easier by having the computer help the user more? Not with command completion or syntax coloring, but with something that has more of a clue about what the user is trying to do.
It's worth realizing that spreadsheets are the predominant "user programming" system. Within their domain, they're straightforward.
1 / 10 is not equal 0.1 any way
And there is no make_me_feel_good() or do_what_i_want()
Put "runrev" to the furnace
(1) Does it get the job done?
(2) What it completed on time?
(3) Was it within budget?
If the answer to these questions is "yes", then the tool did its job. And, in my experience, a "dumbed down" language often works better than other languages. C/C++ software often fails because of (2) and (3).
Sadly, Hypercard, Applescript, and Revolutions aren't "dumbed down", they are simply "dumb": they are just as complex as many other programming languages, they just use a syntax that gives the false appearance of being "easy". It seems easy because people looking at it think "hey, this is just like natural language, I can figure out what this does". That's a good hook to get people programming, but it gets them stuck with an inferior tool.
I'll just address a few things mentioned here. I'm a professional developer who's been using Rev for many years. Sorry for the anonymous account but I'm unwilling to create an account here just for a single response.
> I do wonder what the limits of this language are feature-wise.
> What type of applications could you NOT make with this language?
I can't think of much, there are few limits. When Rev was primarily for writing desktop applications, it could also be used on the web as a command-line CGI, but that's all. Now that the web plugin has been released it can replace PHP and similar languages (I have a whole web site built with their server-side product.) It's major strength is string manipulation, but it has all the elements and structures you'd expect of a robust programming language. Users have created commercial apps, utilities, web pages, CGIs, games, database programs (it's a good front end for SQL), shell front ends, you name it. Coding is very, very fast. It's no lie that it takes only half the time as other languages.
> [Self-documenting code] Where the naming and flow make it perfectly clear
> what the program is doing without any further explanations.
Couldn't agree more. Since the language flows and reads like English, it self documents better than any other language I have seen. I suppose it's all what you're used to, but when it reads like English it's pretty self-documenting.
>Dumbing down programming can only get you so far towards the democratisation of
>programming : the most dumbed down programming language still requires a user
>whose mind can express algorithms.
Yes, and well said. The Rev mailing list is full of programmers who have converted from other, more traditional languages. They now prefer Rev. Some of them have been coding from the punch card days (I know because there was recently a humorous discussion about that) and one developer even wrote a Rev app that simulates punch card programming. Pretty funny. We have Java, C++, PHP, Javascript, even some old assembly programmers who now embrace Rev. I'm a bit disturbed by the term "dumbing down". The language itself isn't dumbed down. It's just verbose. But that is part of its beauty as well. More typing? Sure, some. Less coding? Absolutely. You can read in an entire text file of any length into a variable with no repeat loops required (though you could write it that way if you wanted.) Less code.
>Mind you I only skimmed a couple pages in the tutorial but it's just a
>programming language adding more words and more typing because it may do
>something like spell out add rather than using +
Not exactly. You can use "+" if you want, it's in the language (and most of us do use it.) The difference is not that words are spelled out. The difference is that many whole *concepts* are spelled out. That's what makes it so fast to write. Where you need many lines of code in other languages, you only need one line in RevTalk. I have written string extractions in other languages, it's painful. In Rev, this works: get word 1 of "my dog has fleas". Someone mentioned flow -- this, to me, is good conceptual flow. It says exactly what I'm doing.
>the syntax of rev4 seems far too verbose, not nearly enough parenthesis.
LOL. You can add as many parentheses as you want and it will still work. The deal is, you don't have to. If you are happier with: get (word 1 of ("my dog has fleas")) that'll work too. Both these work fine:
if word 1 of myString = "my" or a = b then...
if (word 1 of mystring = "my") or (a = b) then...
>it appears I need to install a plugin to view samples, which is a bit silly - I
>just want to see the language
Everything is on the web site, and you don't need to install a plugin. Developer materials are here (the lessons are a new addition so aren't as complete yet as the other stuff): . Browse the extensive dictionary for a good insight into how the language works.
>The idea is not ne
and it takes both skill and talent to pull off a well-written application
In light of the recent article about achievements in games, http://games.slashdot.org/article.pl?sid=09/11/26/0628247, and the broader implications of those ideas, I'd like to point out:
Becoming good at programming, and writing good applications, is something that you can achieve if you put in enough effort.
Back when I just learned C, I had the "joy" of looking at undecipherable stack traces (with no symbols) every time my programs would segfault. At my current skill level, they probably would have been easy to figure out, but they weren't back then. Yet, I stuck to it and stubbornly printf-debugged my programs, eventually learning the patterns and principles that make for good C programs.
If you want to become a programmer, or a good programmer, or a better programmer, effort does pay off. Big time.
One interesting example of "dumbing down programming" is the RPGMaker series, particularly the VX and XP versions.
You can do basically all of your game eventing, scripting, resource editing, etc, a using user-friendly gui, no need to touch programming code. And you can do some fairly involved "eventing" logic, which is basically a very high level scripting language that you edit through user-friendly dialogue boxes.
But you can also start digging into the lower details. Actually, the core of the RPGMaker game engine is Ruby code, including an interpreter, which loads, interprets, etc the above resources. And that engine is very easy to extend, using custom Ruby coding. And in fact there is a huge number of custom scripts you can download from third parties to customize your games that way. Basically you can customize just about anything that way, except for the user-friendly editor that most people use.
If the language is english, suddenly you can bypass all those expensive, crotchety programmers.
And the thing is, even if the syntax is word-heavy rather than symbol-heavy, it's still not easier to learn!
Why not? Because you still need to understand the weird, contorted formal grammar of a programming language. How do you say widget.visible = true in English? "Set widget's visible to true"? "Set the visible of the widget to the value true"? "Set visible of window to true"?
Furthermore, you also need to know what you can and can't talk about. How do you come up with "Import the sha1sum function from the cryptography package" on your own? You need to read the standard library documentation (or at least the index) to know that this is a sensible thing to say.
One thing that using a word-heavy syntax might do is make it easier for new programmers to understand the meaning of what they're writing. Does = test for equality or does it assign? Which one was == again? It's easier to understand "if myvariable equals 10 then [...]" than "if myvariable == 10: ..." if you don't have a good memory for symbolic syntax. However, that's the easy part and the part you learn as one of the earliest things.
Being word-heavy is good for some things. I don't know that everyone agrees which things those are, nor that everyone agrees on the value of being good at those things. In fact, I think people disagree on those :)
I just had a look at their php/revtalk comparison. They claim 50% less code. Well, I'm not PHP expert (I don't even like PHP) but this really shows incompetence on their side. For example in PHP they do 2 loops, one for removing stopwords and the other for counting remaining words. In RevTalk they do just one loop doing both things, which of course you can do also in PHP. And they use 5 php lines just to tokenize the input string (tolower, trim, preg_replace...) when you could just condense it all (and doing it better) inside the "for" line (as they ~almost~ do in revtalk). And they stupidly keep using tolower even inside the loops, where all strings have already been lowered. And they use 3 lines to print the sample output (1 line to set a variable to the sample argument, 1 line to call the function, 1 line to print output) but you clearly could do it in just one line as they do in revtalk. So the real message here is that revtalk is for clueless people :-)
The article is advertising disguised as a question, kind of the opposite of "when did you stop beating your wife".
I suppose if you define "traditional languages" as C or assembly language, then you might save 90% of the code. Compared to other scripting languages, however, Revolution is a mess. The Revolution environment may help you get started programming, but it would almost certainly be a better and more effective environment if they dumped their awful scripting language.
I think it is appropriate for this topic to be a source
of discussion at ZDNet. Could we who read slashdot
please be spared this waste of time.
Thank you.
Dennis Allard
The problem with typing rm -rf * isn't that the user doesn't know what it means. The problem is that they believe that they want to remove the contents of all folders... but in some cases, later realise that is not what they should have done. Making the command easier to read won't get rid of those mistakes.
I've noted two things about this,
1) It builds on a language called hypertalk, apparently; this seems to be something like what you could imagine COBOL would look like if it had been designed today. Not that COBOL is a bad language as such, but as anybody knows who has ever had to maintain old COBOL programs, the fact that it is supposed to be sort of "human language" like is a hindrance rather than a help to understanding.
COBOL, as well as hypertalk it seems, have been designed on the false assumption that what makes programming hard is the weird looking programming languages; the real truth is that programming is hard because it involves analysing a task in every detail, so you can write the code that does it, and it always turns out that doing even simple things encompasses a lot more detail than one would have imagined.
2) Isn't this "90%" claim simply an iteration of the old one that used to accompany all the interface design tools? It wasn't true then, and it isn't now either of course. It is true that you can whip out a prototype in no time with such tools; but there is always so much more to design and programming than that. It's like Oracle Forms - you can easily make a simple application that allows you to input and retrieve data from a single table, but a real application will involve perhaps tens of tables with any number of triggers and constraints that have to work together; and of course, you don't just display the raw data on-screen, there will be name lookups, pictures etc etc. Programming is complicated because real life is.
The article asks if this sort of "ease of programming" will dumb down programming? I don't think it will get worse than it is. Bad programmers will produce crap, good one will produce good programs; and Darwin is our friend and benefactor here (that's Charles Darwin, not the OS, BTW).
YOU decide!
Seastead this.
I once built a custom vertical market cross-plattform desktop application in RunRev. The functions of the little app where speced to the last detail and the user interface was designed and drawn out down to the last pixel, Font requirements included. Coaxing the IDE into not sucking by adding 3rd party extensions and such was a bit of a hassle, but all in all the project went very well.
We used RunRev 2.x with various 3rd party extensions including a font-compiling plugin (which in the end didn't work) and a more IDE-like extension of the RunRev enviroment that eased coding.
The visual and object oriented style of building apps in stackware is pretty cool and can be insanely fast, fluent, concurrent and bugsafe. You get concurrent from the first minute on, because Stackware usually uses the DMI approach, which is pretty cool in itself. The way the runtime integrated with it's own DMI (Direct Manipulation Interface) and compiles it's current state into the deployable app is something one has to get used to, but it actually is OOP in its purest form, if you get the hang of it. This sort of developement is a direct descendant of the Smalltalk way of doing things and makes the Java/.Net way look like ancient weedy spagetti-basic.
Yet RunRev uses a PL called TransScript, something like a bizar resemblence of SQL and Lingo that tries to emulate english for dummies. An attempt which, of course, doesn't work. That's the biggest gripe I have about these commercial types of stackware. Building a new PL and throwing out the junk we've got from C and it's ancestors is a good thing, but putting in SQLs failiures of a end-user-interface language is bad and the results are usually accordingly. The one FOSS project that aimes in a stackware direction that I know of is Squeak and it uses Smalltalk, which probably is a way better to go.
Any way you look at it, stackware and visual development has a lot going for it if it is done right. .Net, [fill in generic Big-Fat-Appstack here] and whatnot up and down the street, to be honest. I'm not suprised they claim to have saved half a million in costs, and I actually believe it's true.
It actually kicks all other dev-methods imaged by Eclipse, Java,
My 2 cents.
We suffer more in our imagination than in reality. - Seneca
What a stupid idea we should be going in the other direction and programming in straight binary & hex like in the days of old when programmers where real men, who needs assemblers and all that kind of crap anyway! Lets make it astronomically hard to do the simplest thing and ensure we are excluding 99.9999% of the population from even looking at a computer.
so... are we supposed to overlook that percent is spelled "per cent" in an article about dumbing down?
If you make programming more accessible to people with limited knowledge in the field, you will end up with lots of barely working programs... Some of these programs will get used in situations where they really shouldn't, and are likely to have lots of bugs and/or security holes. You already see it, it's very easy for novices to write programs in visual basic or php, so you see lots of very sloppy programs out there with lots of security holes...
As someone who runs a webserver hosting sites for other people, a lot of these people upload very shoddily written php code that gets exploited. I had a spam outbreak a couple of days ago because someone managed to find a vulnerability in a php script that let them run arbitrary commands as the webserver user.
That said, i think computers should encourage users to learn by default, like they used to do in the days of BASIC being built in. Computer back then had a relatively simple programming language built in, and would come with big thick printed manuals encouraging you to learn about it...
Today you get thin paper instructions that barely cover how to unpack the box, and software that goes out of its way to hide the underlying system from the pretty interface.
http://spamdecoy.net - free throwaway anonymous email - avoid spam!
And 4gl is great for "business" logic. These argumants about dum
One thing that should be pointed out is that structural editors actually make "programming in natural language" comparatively trivial. For comparison, here's an implementation of insertion sort from such a system:
Let A be a set. Then a list of elements of A is defined by the following cases:
Let A be a set. Let x be an element of A. Then the singleton list with x is a list of elements of A defined as the list with x prepended to the empty list.
Let A be a totally ordered set. Let x be an element of A. Let xs be a list of elements of A. Then the list with x inserted into xs is a list of elements of A defined depending on xs as follows:
Let A be a totally ordered set. Let xs be a list of elements of A. Then insertion sort applied to xs is a list of elements of A defined depending on xs as follows:
language once, and the syntax turned out to be pretty similar to Rev4. Basically, one needs a simple way to control flow, a simple way to express logic, a simple way to manipulate data, and a simple way of interacting with the user.
A huge part of writing an effective language is anticipating how the writer *thinks* something should be stated before they've even tried to write it. If your target programmer is someone without formal programming training, you want to avoid anything that assumes an understanding of abstract programming concepts such as object orientation. Rev4's use of natural language "glue" and it's simple verb-object sentence structure follows pretty well the way a non-programmer would think.
As others have pointed out, however, just simplifying the language is not enough. To get a real boost in productivity, one needs to add a lot of *useful* abstractions to data manipulation and user interactions. That generally means lots of pre-built functions that do meaningful work (as the non-programmer would define it) for very little effort. This is essentially the same role that human vocabulary plays: by using a single word, we can express an entire concept. Give me a vocabulary with several thousand words and a simple sentence structure, and there's not a lot I can't convey.
I've only looked at Rev4 very briefly, but it does seems to have a pretty large and useful vocabulary. There are useful abstractions of data structures (looks a lot like hypercard, actually), useful abstractions of UI, and useful abstractions of string manipulation operations. I can easily imagine being pretty productive with this as my first programming language.
All these simplifications and abstractions, of course, come with a cost: extensibility. The more lower level a language is, the easier it is to get it to do things not envisioned by the language writer. I don't know this for sure, but I highly suspect that if the card-stack data abstraction won't cut it for your needs, then writing in Rev4 will be painful and frustrating.
There will always be a need for varying levels of programming languages. If a user needs something done that is so easy that it could be done by a non-programmer, then why hire a programmer to do it with a more capable language? It's not like programmers aren't busy enough. There's plenty of work for everyone.
"We receive as friendly that which agrees with, we resist with dislike that which opposes us" - Faraday
A language that reads like english? You have "invented" COBOL...
Weren't we there one before with 4 GLs? See Wikipedia
...richie - It is a good day to code.
What part of "The best approach" are you having trouble understanding? I never said this is how most people do it. The part about implementing in "as maintainable a fashion as possible" addresses your changing requirements concern, and the fact that you didn't tell management it will be done when it gets done and help them understand why they are clueless enough to believe that they can change requirements without delaying the release (in as politically correct a way as possible, of course) explains to me why you think that none of this can actually work in the real world. I guarantee you I have more than 20 years experience developing software, and the above comes from real world experience that you clearly have yet to figure out how to get.
Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
regardless of the language in use, programming still requires the ability to think logically to develop a solution to whatever problem the programmer is trying to solve.
"But, NONE of this deals with the real reason why not everybody can be a good programmer. A good programmer must be able to precisely articulate exactly what he/she wants to have the machine do. "
Sounds like a good reason to get their efforts free (open source) and pay them nothing.
Hi Folks,
I see many people here complaining about this language without even trying to understand it, most people here never ever used this, so how can they complain? I've been using Rev for about 5 or 6 years now, I run a single person consulting business here and I've delivered web applications, desktop applications for mac, windows and linux for many US Universities and foreign universities among other serious clients. I've done it all in Rev without ever reverting to an external (this is what we call C modules), I am able to do all my network, RDBMS, logic and gui needs in Rev alone and deliver native applications to the big three OSes out there (mac, win and linux), now with RevServer (our PHP like engine), I am also able to reuse the same business code in a webapp.
Revolution represents a hug advantage for me because I can really code faster in it, I am not pulling magic numbers from a hat here, I am saying from personal hands on experience for at least 5 years. Before Rev I've coded in C, DELPHI, VB, REBOL, RealBASIC and Scheme (could never deliver a scheme app). My code is as fast any other but was developed faster and cheaper for me, so it means that I can develop more software for less, which is great for someone in the consulting business. Let me summarize what I think are the great Rev strenghts:
The english like syntax is great, at first I found it too verbose but it grew on me. It is a great feature for those that are just comming into programming, for the seasoned coder, I think it is an acquired taste. We all can code with dot notations, OOP stuff, we are confortable with cryptic syntax such as i++; with all our tokens and semicolons but I regard those like stocolm syndrome, we've used hostile syntax for so long that now we think that if it is human readable and clear then it is bad for some esoteric reason that we can't really explain. This whole discussion about what code is bigger is actually irrelevant, the discussion should be what code is easier to write and maintain. Rev code is actually pleasant. I'd take something like "put char -1 of word 2 of line 5 of field "name" into mySweetVariable" over any split and dot notation or regex thing.
In Rev we avoid the write-compile-debug loop. With environments such as VB and Delphi, your standard workflow would be to code a little, build your application launch it attached to a debugger and check for bugs. This is tedious and time consuming. In Rev, like those graphic programs such as photoshop, we have a pointer tool that can be in interact mode or edit mode, if it is in interact mode you can click around your application just like a user using it, the edit mode you use to select controls to change properties or script, so with a flick of the mouse, not compilation needed, I can try my app from inside the environment. This is huge! It is like a lisp REPL or some other interactive mode in other languages but graphical, try as you build and yes, we have a debugger that works with those tools, we often just build standalones by the end of development process after all is tested. I can't stress how faster this make you code, you can experiment much more in interactive environments such as Rev than you would do if you're coding in C.
Another very important feature is the ability to deploy on Linux, Mac, Windows from the same code with no modification, it just builds standalones for all those systems. Imagine you're a VB developer or a C developer, you code mostly on windows for example, then a prospective client quotes for a simple macintosh desktop application, with VB you're simply lost, with C there's a whole lot of new APIs to learn if you don't use a cross platform GUI toolkit. With Rev, you just code normally and in the end checks the "build for Mac OS". (before the pedantry, you should have a mac and mac os knowledge before trying to deliver professional apps for that platform, but you get the idea.). Now with RevServer we can write webapps (we could before but was harder) and with RevWeb plugin we'll be able
-- Por mais que eu ande no vale das trevas e da morte, meu PowerMac G4 Não Travará!!!
Of the hype/panic induced by RoR marketing campaign few years ago. "The framework that obsoletes programmers, and lets anyone code web apps!". Yea well, we know how that went.
As for this particular effort, Revolution 4.0, I'm afraid guys you picked the wrong target to market to (computer geeks). We're not fooled by the verbose English syntax. It's still a pretty pedestrian scripting language from what can be seen in the examples.
I had very good higher math from highschool and from a college level math course years ago. But no programming background, training, etc.
Tried to lean Java as my first stab at programming. Let's just say, I learned enough to create endless exception errors (or seemingly so).
Then, back tracked a bit, taught myself JavaScript, for where I was knowledge-wise, it was the proper entrance point.
From there, taught myself C, and while I did that, I even ventured into learning a bit about assembly (which, in hindsight, helped broaden my understanding of what my C code was doing that the lowest levels). Then, re-visited Java with much better results and also learned some C++ (but I am still very much a fledgling C++ coder).
The problem, as I see it, isn't the need to dumb programming down, there are really two tracks (maybe more) here:
1. Programming for those that want to stay away from the lowest levels of computer processing and
2. Those who want to code as close to bare metal as possible for speed, etc.
Both are needed, in different situations. And, some in "1", as they gain more knowledge, will gravitate to "2".
It is really a matter of personal interest, what problems the programmer is trying to solve and that sort of thing.
From my own experience (briefly noted above), the basics, what is happening with the system when you code a particular thing, helped me really evaluate what I was trying to do with a particular function or piece of code, which I then used to improve past code I had written and improved my programs for new projects I tackled.
I've seen and written a variety of highly complex server applications in C and C++.
You just have to get it right. And memory errors aren't all that nasty to debug, not when you've got good tools like valgrind and/or purify.
for all the trolls here, I've used this for 5 yrs
So we're the trolls, because we dared to express our opinion. Your colleagues decided to post the article here for marketing purposes. Unlike you, we're not paid to propagate your unproven phony "90% less code" claims, so either take our feedback, or don't ask for it next time.
I haven't posted the article here, and trolls are those who express opinions without ever knowing anything about the subject. By the way, I haven't said anything about 90% less code.
Have you tried the product? Did you understand how to use it? Did you give it a fair trial? If don't then keep your opinions fair like "Hey, I doubt this true but I haven't tried."
Internet forums like slashdot are full of experts in subjects they didn't knew about 5 minutes before checking TFS. Now tell me, did you try the damn language? Did you ever used some xTalk language (hypercard, metacard, supercard, omo, rev)? If you did not and you claim anything is phony then you're being trollish, also, posting anon doesn't help to keep a nice civilized discussion.
Now, if you want to have a good talk, at least I am here to shed some clue to this environment that most here never heard of. Just ask and I will try my best to answer, and maybe you'll have a better knowledge base to evaluate and form opinions, even if negative.
-- Por mais que eu ande no vale das trevas e da morte, meu PowerMac G4 Não Travará!!!
"revTalk" is the language and "RunRev" is the company name
Model Masters
The focus on languages puts too much focus on the tool. There are many languages in the world but most people of whatever culture have little of importance to say.
PROGRAMMING is the production of a useful set of instructions for a machine to follow. That means you must ANALYZE the problem and realize that you must make decisions about every possible result of every possible path. That is the hard part of programming. Providing languages that aren't so hard help get folks to realize the crux of the issue isn't the programming, it is the THINKING. If programming classes didn't have to spend so much time on semicolons and proper indenting, they could spend more time on how to properly frame a problem statement in the first place.
"I have written in it...obviously not the new release but some sort of earlier version."
Can you list what version you used? I tried the new version and it seems extremely fast and responsive.
Also, I like the idea of coding once and deploying everywhere (most everywhere). RevTalk seems to be a rather useful tool for quite a few of the projects I am working on.
(I'm only posting this because I want it archived with this article.)
This reminds me of the paper "The Camel Has Two Humps," which details the author's theory that some people just aren't cut out for computer programming because they lack the ability to conceptualize in a machine-friendly manner.
This is a problem that is not best served by "dumbing down" computers to be useable by people who have no business programming them, in the same manner as television shows should not be dumbed down to be readily accessible to the visually-impaired.
Why is so little effort being spent making it easy for me to repair my own car with soft, clean, lego-like tools?
If you want to be a plumber, you have to be willing to occasionally shove your arm into a pile of s#it to solve a problem.
If you want to program computers, you have to be willing to occasionally shove your brain into a pile of mathematics to solve a problem.
I'll believe computer programming is "ready for the masses" when plumbing is "ready for the masses".
It's all about the tubes, people.
This reminds me of a programmer from the FreeDOS Project who argued to change/deprecate the behavior of the /Y ("Yes") option to the FreeDOS FORMAT command, so that it would instead display something like:
A:\> FORMAT /Y C:
... _
This command will erase the contents of your C: drive !!
Do you really REALLY want to do this ??
Type YES in all caps to format
I thought that was really dumbing down the command, coddling the user way too much. If you felt compelled to protect the user from themselves, I'd prefer the /Y option trigger a message and a 5-second countdown, press Ctrl-C to abort.
I haven't posted the article here, and trolls are those who express opinions without ever knowing anything about the subject. By the way, I haven't said anything about 90% less code.
Why does it matter what you *personally* said? The company behind the product has made outlandish claims, have shown very poor examples to prove them. The onus is on them to prove it, not on us to spend 5 years on a random product so we can verify the claims. The PHP/C# comparisons are insulting for anyone who has modest experience with either of these languages, and a Ruby comparison would completely destroy advantage.
If the creators of the language have so poor evidence about it being better, why are we expected to do better than them? All we see is an AppleScript knockoff, a hard to read, verbose language that no one likes that I've heard of. "English-like" doesn't automatically mean easy, unless it can literally interpret English into code. As long as it has rigid rules that must be learned and followed, it's not better, but harder to use than languages that use more concise notation. I refer again to AppleScript, which I've had the misfortune of working with at some point.
Have you tried the product? Did you understand how to use it? Did you give it a fair trial?
There's too much shit going on in the world, to give it all a "fair trial", my friend. Instead of killing the messenger, take the message and use it to improve your offering. You can start with improving the code examples section and putting it closer to the home page. Unless the emperor is, in fact, naked, and there's nothing to show.
No, you're trolls because you criticize it without even looking at it and kicking its tires. Some of the people posting here in defense of the product are doing so not because they are paid to do so but rather because, unlike you, we did download it and kick its tires... and we're happy customers.
I tried to use this language/RAD environment. Kept getting hit with show stopping bugs. There's a million of them. For starters, the plugin for web content apparently runs continuously as a process in the background. Don't know if they fixed that yet. Of if they will. Uninstallers and updaters didn't work (uninstaller corrupted my Windows registry for version 3.5). The memory management is awful, and leaks abound when using externals (for example, databases and browsers). The list goes on. And on. Right now this is a very pretty package, but it's not ready for the big leagues. The underlying code needs to be vetted. I'd recommend sticking with open source alternatives such as wxpython or Tcl/Tk if you want to avoid these issues. There is nothing more frustrating than having a show stopping bug and having to deal with a commercial vendor that won't give you the time day or treats you like a child. I think "opacity" is the word that describes them.
A big problem here is that there is a niche of programmers that wants/needs to create commercial applications, especially for entertainment and education needs, but the RAD tools have really gone to hell from the commercial vendors. I started out using Authorware in 1998, which was quite lovingly "discontinued," but was very stable. Then came Macromedia Director, which was god damned rock solid through MX 2004 (although essentially abandoned for Flash by Macromedia; they had like one engineer working on it at the time of the sale to Adobe). Adobe took Director and sent the code base to Bangalore, India, to a bunch of engineers who've made a complete mess out of things from what I can tell. I don't think its a coincidence that the CEO of Adobe is a graduate of the universities of India himself. Anyway, they're stuck at version 11.5, which is an unholy pile of junk (and it will cost you a cool grand, btw). Director, the program that built Macromedia, is essentially dead and along with it just about the only commercial programming alternative for the unwashed masses without computer science degrees.
The fact of the matter is that RunRev doesn't "dumb down" anything except the programmer. It's a complete struggle to use, but really only because it's not a stable programming environment. If it worked as advertised, we would be awash in RunRev apps. In my opinion, and it's just my opinion (as the owner of an Enterprise license from RunRev), Runtime Revolution is amateur night in the programming world. On the other hand, Tcl/Tk has a totally whacked syntax (upvar anyone?) but it is very fast and very very stable. Especially version 8.4 (you can get it from ActiveState for Windows). wxPython is probably the best choice, however, and you can create binary apps if commercial is your thing.
Is it just me, or is commercial development software in general becoming more buggy?
The Death Penalty: Killing people to show others that killing people is wrong.
Just for the exercise, using function composition:
class EString(f: (String) => Unit) {
def char(begin: Int) = new Object { def to(end: Int) = new EString(s => f(s.substring(begin-1,end))) }
def word(number: Int) = new EString(s => f(s.trim.split(" +")(number-1)))
def line(number: Int) = new EString(s => f(s.split("\n")(number-1)))
def of(s: String) = f(s)
}
def answer = new EString(println _)
val theString="1\n2\n3\n4\nabcd efgh ijkl\n6"
answer char 1 to 3 word 2 line 5 of theString
You can write revTalk in another language!
Now the revTalk critics are probably going to whine that they don't understand higher order functions. Then realize that you do actually learn something useful during these years at college. Sooner or later, you will find yourself in a situation where there is a need for something more advanced than extracting a word from a string.
You would not need to understand how the library is written to use it though.
A language like this will allow management types to do their own prototyping. This could mean less hassle for programmers, as the manager can flesh out a working prototype t use as a model for production apps.
I understand alot of old schoolers who are incredible at C++, Assembly, or any of the myriad of difficult languages would scoff at things being so easy, but learning programming might not seem like such a daunting task to younger kids and newcomers. Back in junior high school, I remember learning Basic, which was rather easy but didn't seem very robust. It encouraged me to expand my horizons outward, more and more, with Pascal and the like. I got reinterested in programming during college while taking a Visual Basic course, being amazed at what impressive things could be accomplished so easily since I was gone.
I supposed many older schoolers would see this the same way as retired players would see Major League Baseball allowing steroids. They didn't have to pay their dues learning a difficult and convoluted language while creating thousands of line of code to create something worthwhile. Just like how MLB players on steroids didn't have to lay the foundation of hard work to earn their stripes. The accomplishments would seem to come too easy. Thats the way life is nowadays, thats all I have to say about that. It happens in almost every facet of existence anymore, there are easier ways to do or learn anything invented everyday. The important thing to do is keep your chin up, all you old schoolers, because you will always be a repository of knowledge when it comes to things such as proper programming structure, redundancy elimination, and the like. Not to mention that you'll have a different perspective on error elimination, efficiency, and process improvement. Programming could become too easy, but they can't take your wisdom.