Metafor: Translating Natural Language to Code
vivin writes "Computer programming is second nature to most of the Slashdot crowd. However, this is not true for the vast majority of people. Formal programming languages are not as expressive or flexible as natural languages. This becomes more evident when we try to translate user requirements into actual code. Researchers at MIT have come up with a program that bridges this gap. It's not so much a tool that turns English into code, as it is a program that translates requirements (in English) to code. When Metafor analyzes English, nouns phrases become objects, verbs become functions, and adjectives become object attributes (or properties). In addition to helping programmers visualize their program better, I think it also promotes writing concise (and therefore) requirements and descriptions. Metafor doesn't handle run-on sentences (or bad English) that well." Update For for the dupe. Not going well. Appreciate all the hate mail. Really encourages improvement.
Well, I doubt something like this would be used to write the next version of Gimp, but I can see its use in helping people to convey what they want a computer to do. Few people need to write programs and I don't know whether I'd want people who don't
understand computers to actually write them. But it would help when someone wants to make something like a 3D scene in Blender. It reminds me a lot of that episode of STTNG (Schizims) where Riker, Troy and Worf are telling the computer to replicate an alien room that they were in.
Of this, I think...
The Army reading list
While this is a cute concept, I don't think you'll be seeing computer programmers disappearing any time soon. The natural language bent was the original point of high level languages. Early languages like COBOL, SNOBOL, and BASIC were all designed to abstract programming to a level of natural language. Save for BASIC's success as a beginner's language, none of them accomplished their goal. In fact, the "natural language" design of COBOL only served to complicate the language and cause a variety of errors due to missing periods, improper spacing, and other common typing mistakes.
;-)
It wasn't long before it was reul languages actually broke away from English and relied more heavily on easily-parsable, special characters to define structure. We can see the results of this in today's C/C++, Java, LISP, PERL (bleh), and Python languages. This new interface does nothing but try to perform some of the structural thinking done by the programmer. (Although I have my doubts as to its current real world ability.)
So the question that then comes to bear is, "Who would use this natural language interface?" Sadly, the answer is most likely "programmers". But why would a programmer use this interface if he has to be trained in computer logic in the first place? It would seem like an unnecessary level of abstraction that would only serve to hinder a programmer's natural abilities.
Of course, there is the documentation issue. Supposedly this interface will be useful for producing requirements in addition to code. But who produces the requirements? Not the programmer. That's usually the job of the business analyst, someone who may not even have experience with coding logic. And for code documentation, nothing quite beats the JavaDoc style documentation that has become popular in the last few years.
I think that research like this is interesting, but I doubt it will have many uses until AI and voice recognition improves to a level similar to that seen in Star Trek. Only about 300 more years and counting.
Javascript + Nintendo DSi = DSiCade
*cough* cobol *cough*
can it translate back into English?
It was called Cobol - 30 feet of printed code on a line printer to display a single line of text.
Verbs translated to functions?? Nouns to variables??
int jerk_at_counter, hottie_in_accountancy, dork_at_it;
kill(boss);
send(intern,hell);
Yeah, that will work...
how long until
Now all we need is a tool that will take a user's brain and turn it into solid requirements.
It is quite simple
Haiku should not be funny
Try a Senryu
Forget it being a tool for this crowd then!
"Make it possible for programmers to write programs in English, and you will find that programmers can not write in English."
t er .html
http://www.murphys-laws.com/murphy/murphy-compu
This is still in the developers section. Time to post the highest moded comments and score me some karma points!
How well would Metafor handle English like "nouns phrases become objects"?
Yeah, I know my neighbor with an IQ of 7 would rather be writing code that parses XML work orders and turns them into statistical graphs than watching NASCAR. It's just that complicated Java syntax kicks his ass so he's kicking back with a 6 pack of Black Label waiting for this technology to come out.
I'm Rick James with mod points biatch!
Typing english into a translator at google does not spew out perfect Chinese. Likewise, a machine english-to-code translator will never be as good as the real thing.
It's all about interpretation.
I'm sure we've all experimented with header files that define an english-like syntax for our code. We've dumped it for a reason - it's not as efficient.
Hiding what's going on "under the hood" is never a good thing. Good code, like good food, depends on good ingredients, and the knowledge of how to combine them.
Crap food, on the other hand, can be produced by anyone with a stove and delusions of cooking ability.
I don't mean to sound pessimistic, but remember who comes up with functional specs; managers. As a consequence, this poor program may well come up with a framework that matches exactly what was requested, but once it's put together, the suits will say "it doesn't do this". When it's pointed out that that wasn't in the spec, the inevitable response will be "but it was implied; it should be obvious that we'd need it to do that." This is just a core dump waiting to happen.
What they should also do is allow me click a picture and have it translate into code, or let me click an animated picture and have that translate into code. Say I want to create a backround for a video game, if I could just point and click my way through the interface creation then even I could be a game designer. So why not start with open source game design and develop tools to allow hobby programmers like me to make games for the masses, as a result you'd gain games for linux and finally Linux will be able to dominate. Or we can keep re-inventing the wheel and treating programming like a science when its really just an art. The fact that a computer science major has to learn calculus and all this math is the main reason I didnt major in computer science. When you treat something like a science instead of an art, you make it less attractive. In the end this is why we have a shortage of good programmers. The next group of programming geniuses might never become programmers because they can't handle the calculus, and guess what? 99% of programmers never use any of that useless math.
Computer programming is second nature to most of the Slashdot crowd.
Maybe back in 1998, but haughty sniping is second nature to most of the Slashdot crowd now.
I'm sure if something lke this will be able to succeed until we see some big advances in AI and computers that are as tollerant of ambiguity as humans are. Programming languages grew out of a neccesity to have something that was easy to remember (by virtue of its similarities to english), yet still precise enough for the computer to interpret. At a certain point you still need to define a vocabulary with consistent semantics to be applied to programming concepts. Whether or not that vocabulary is very rich and sounds almost like spoken english, it all goes out the window when a phrase is used by the speaker in a different meaning than the system had in mind. There is a good reason that mathematics has its own language. In fact, any specialised are has its own jargon, even its not technical. General purpose English is just too vague to use in some domains. AI problems always seem to be perpetualy 'a decade' in the future.
One of the things that really bothers me about Linux is the pervasiveness of languages like C that make no attempt to model higher thought and instead force the developer to constantly re-learn old unusable APIs and shove ancient hacks that are unreadable just to get drivers working. Objects in code need their a[tt]ributes to mirror real-word equivalents, otherwise reading the code is impossible because no one else can make sense of all the confusing acronyms and variable names.
I actually think that .NET is the right step for us. Mono is really the first sensible language (Java doesn't count; it's not free) that has any mindshare for Linux, and let's face it the Linux world needs it. Until writing software for Linux can just be a simple translation of designs in our heads to GUI design and implementation, Linux will lag behind the rest of the world because of how long it takes to write software for it.
Slashdot: Where people pretend to be twice as smart as they really are by behaving like children.
This has already been around since 1997 I believe, and it's already popular.
Sounds like a speech-to-COBOL processor.
http://alternatives.rzero.com/
It's a lot like simple English for me and that fact that Larry Wall is a linguist helps.
Plus all the cool and naughty operators and functions like tie, bind, die, etc
I wish that people spoke mathematically rather than poor and ambiguous languages that can now (supposedly) turn into (ambiguous) code. Can one really rely on translated 'code' like this. That's like sending an E-mail from speech-to-text recognition without proof-reading.
My Linux - (L)ove (I)s (N)ever (U)tterly eXPensive
Sometimes the buffer is re-used without being wiped, causing dupes like this.
I doubt this will have much of an impact on programmers' work, but, the natural language parsing into a declarative structure is *really* fascinating.
I'll bet this work will ultimately lead to effective verbal control of computers, as in the sort of Sci-Fi situation where you might say "Computer, play KidA by Radiohead, and get me the NY Times".
Good, interesting stuff, I hope they keep working on it.
lorem ipsum, dolor sit amet
That's for sure.
I think it also promotes writing concise (and therefore) requirements and descriptions.
Indeed. "and therefore..." what?
Want to improve your Karma? Instead of "Post Anonymously", try the "Post Humously" option.
How hard is it to change rules of treating the sentences? Can Metaphor learn Chinese, for example?
In theory there is no difference between theory and practice. In practice there is. - Yogi Berra
"Computer programming is second nature to most of the Slashdot crowd."
Not first nature?
Here is the traditional "Hello World" progam in COBOL (for the youngsters out there who never had to program in it).
Only 20 lines.
"Make another racing game with better physics."
...
"Make another wrestling game."
"Make another racing game with better physics."
"Make another baseball game with better physics."
"Make another racing game with better physics."
"Make another wrestling game."
This is cool, but not super useful. To make it useful you have to write requirements like so
there are 10 users
each user has a name and a phone number
etc.
Requirements like the following wont get you anywhere:
The program should search the internet for the page most relevant to the search term and return the url.
Never have I see someone write requirements so specific and complete as the first example. Anyone who is going to do that might as well write the code anyway since it is easier than taking the random code and turning it into the real deal.
Very cool, not very useful. Not until we develop a real AI at least.
The GeekNights podcast is going strong. Listen!
Really, what's it got against Bad English? Okay, so it was Top 40 glurge, but no worse than other "supergroup" bands at the time.
I only post comments when someone on the internet is wrong.
Formal programming languages are not as expressive or flexible as natural languages.
I think you meant to say the formal programming languages aren't as ambiguous. Good luck translating the "y'know what I mean?" "ya get what Ah'm sayin'?" "ya hear me?" fuzziness.
Formal programming languages are the natural languages for programming. But for decades non-programmers have said that programming languages are too hard to use, rather than admit that their own thinking is insufficiently logical and precise to do a good job of describing requirements. If the thinking is precise, we don't need programmers -- we are programmers.
Sounds like The Last One from back in Feb 1981.
if (publishedArticles.getSubjects.contains(newArticle .subject))
{
publishedArticles.add(newArticle);
}
else
{
newArticle = submittedArticles.getFirst();
}
From Dijkstra's timeless "How do we tell truths that might hurt?":
Projects promoting programming in "natural language" are intrinsically doomed to fail.
He said that 30 years ago. People still don't listen.
A message from the system administrator: 'I've upped my priority. Now up yours.'
Shiver Me Timbers and Poke Me Other Eye Out! How would it handle this!?
For OOPing, silly.
waiting...
waiting...
waiting...
Stupid computer doesn't do anything I tell it
Do not try to read the dupe, thats impossible. Instead, only try to realize the truth
What truth?
There is no dupe
The main task of a programmer is not to code, it is to obtain or create consistent requirements.
Athletic Scholarships to universities make as much sense as academic scholarships to sports teams.
And how about computer programming's version of ebonics, scottish and everything other dialect with a latin character set? Perl moves like a pyroclastic flow.
nouns become objects, verbs become functions
Congratulations!!!
You've invented Smalltalk!
Welcome to 1980!
While the logic of the researchers' interpreter tackles only about 20 percent of the problem of full natural language programming, it achieves about 80 percent of the perceived rewards.
Ah, this old thing again.
The hard part about programming isn't turning basic English text in to half-assed code. If it were, then Google have built their company on just-out-of-college scripters and Visual Basic.
[Liu says] "Many subjects immediately identified the simplistic interpretation of the interpreter, and wanted the opportunity to rephrase their original wording to fix the error."
Yes, regular English is insufficient for programming. If a tool like this becomes popular, you'll need still need a special class of people to figure out what is needed and to figure out how to phrase the desire in the precise way that makes this guy's interpreter actually do what they want.
In other words, he hasn't invented a way to eliminate programming or programmers. He's figured out a way to make a programming language that is slightly easier to learn at first. But because it's removed from what computers actually do, much harder to use for anything serious. The hard part about programming isn't the month you spend learning Java syntax, it's the many years you spend learning to write code well.
Their theory appears to be that this will make programming easier to learn. I wish them the best of luck in that goal, but having seen over the years a number of graphical and natural-language programming tools vanish without a trace, I'm not holding my breath.
It says nouns are objects, and adjectives are properties, which makes sense. Verbs are functions, so what are adverbs? Also, how are articles expressed? They're technically adjectives, but they don't work that well as a property (semantically anyway).
Thinkin' Lincoln - a web comic of presidential proportions
Now that I've seen that, I suddenly have to wrestle with the fundamental insanity of having FOND MEMORIES about COBOL.
Why couldn't you have just left well enough alone, so I could keep happily despising it?
Next thing you know, I'll be pining away for OS/390 JCL.
Microsoft cheerleader, blue flag waving, you got a problem with that?
Why not pick a language with a million and a half less contradictions.
I can't think of a worse language to use... except maybe Czechoslovakian.
The beauty of English is in its nuances and shades of meaning. For programming, that's a nightmare.
What does this button do...
If Metafor cannot handle bad spelling or grammer, then maybe using MS Word to do it for you will help. This is ment to be a joke, and not insightful.
Ahem. How is this news? In fact, we (AI students) had to write a NLP (Natural Language Parser) in Prolog as an assignment in our first year. Granted, it did not make "objects", but what it did do was group NP's, VP's, adjectives etc etc in a tree-like structure. I am very confident that it could be rewritten to do most of the things that are claimed here. It even had (rough) support for so-called garden path sentences, and breadth/depth-first search. A lot of research is conducted here in Utrecht (The Netherlands) to have good NLP's. Ofcourse, syntax isn't the hardest part, trying to get good semantics is a lot more troublesome, although I know of more than enough people who would like to spank me for saying this.
I know its still a programming language, but its pretty close to just out right writing what you want it to do. Here is my favorite Applescript. Does resizing of photos to a specific size, or in later in posts, they have it asking size and place to save the duplicate. LINK
-----BEGIN PGP SIGNATURE-----
12345
-----END PGP SIGNATURE-----
Javascript + Nintendo DSi = DSiCade
It is the only natural language that can be used as a programming language. Check this article out
Any "natural language" translator I've ever seen (and most of the one code-language to another converters) is only useful for the simplest of applications.
Reality is that English (or any other language, with the possible exception of Esperanto) is too ambiguous to possibly make a computer do what you want it to do.
The other reality is that most programmers (whose articles I edit), have lousy language skills.
S
A related, but much more useful, system has already been proposed by Knuth.
notice we dont see any actual working application, just a few screenshots and a PDF that would take all of a couple of hours to make in photoshop
still iam sure someone will have a nice gold star on their resume for the amount of interest it generated, shame they couldnt actually do more than than theory (which is all academics seem to be good at)
This has been tried before, not successfully.
make it so that programmers can write in english and you will find that programmers can't write english.
What I've noticed a lot of times is that Engineers can't write documentation and requirements worth crap. Ok, so I shouldn't make such a blanket statement. Some engineers can write well, but most can't. I think this will do two things:
a) Help computer engineers describe their program's requirements better so others can follow them better.
b) Help beginning computer programmers make the connection between a natural language description of their program and the program itself. For example, this can help them understand concepts of OOP programming (nouns->objects, verbs->functions, adjectives->properties).
It's not true that programmers don't always write requirements. One of the classes I had to take in college dealt with the Software Engineering/Development Lifecycle. One of the things we had to do was to create a requirements specification for our program. We had to write it in a concise manner so as to map it to actual parts of our code. From the requirements document, we went to a UML software (Rational Rose) and from there, to the (skeleton) code. That's what this software does, except it encourages us to write proper descriptions in the beginning itself, and then maps that to skeleton code.
Vivin Suresh Paliath
http://vivin.net
I like
Yes, this is not a new concept. And yes, it's been on every science fiction writer's radarscope since the concept of a calculating machine was considered.
And it's still science fiction because:
- Language is situational, societal, and emotional
- Most people doing this sort of work communicate in English. So they assume English is a good place to start from. Unfortunately, it's one seriously illogical language to start from.
There have been attempts to create 'natural language' programming languages. And in the main they HAVE been successful. Sure, they are inefficient. But so is human communication.
Every psuedo-code compiler / interpreter that I've ever seen (since the 1970's) has simply been a programming language. Sure, maybe they're a little nicer to look at, but they will always fail the Turing test.
Want TRUE natural language programming ?
Develop a computer that works linguistically, not logically.
The trick is to not have morons write the requirements OR code the actual software..
Its amazing how much this helps.
Firstly, people for whom programming is too complicated should not code at all. We need less programmers building better code, not more programmers adding to the crap heap that the software legacy is as of today.
Secondly, I think that what is needed is the other way around : automated analysis of code and production of natural language reports that designers could browse more easily than the code itself looking for bugs or designing extensions and additionnal feature. They would then intervene directly on the code itself.
Sort of a souped up version of Knuth's literate programming, only with a much more radical transformation of the code for its vizualisation, bringing up the essential and critical aspects.
Think of how a reasonably complicated mathematical proof, say within the formal set theory, would look like in a math paper or book meant to be read. Compare with how it would be coded in a theorem prover. Different. Yet the former can be automatically generated from the later.
I wonder how would the natural language converter would deal with words like "computationalized".
Natural languages like English, on the other hand, are universally accessible, said Liu. "Natural language is so semantically rich and flexible that if it could be computationalized as a programming language, maybe everyone could write programs," he said.
No, your children are not the special ones. Nor are your pets.
"a program that translates requirements (in English) to code" Why not write requirements in code. Once you write requirements in code there is no need for writing the actual code. Therefore eliminating the translator, problem solved. Also as the added bonus you can eliminate the programmer since the code has been written as requirement have been done.
- Type the following into Metafor: "Requirements: Create a class that has a function satisfy that takes a String containing an arbitrary boolean expression and returns a Map with keys as boolean variables and values as Booleans. The map must be able to assign values to the arbitrary boolean expression that makes it true, or the function must return a null. Furthermore, the function must run in polynomial time with respect to the number of distinct boolean variables in the given expression."
- Either a) Metafor finds it or b) Metafor crashes, citing the impossibility of such code.
- Submit proof to peer-review journals.
- Profit?!?
Obviously there will always be limits to this kind of meta-programming, so the only purpose of it is to make programming easier. However I can't see how spewing code from requirements is going to make any coder's life easier, considering it'll probably have bugs or run really slowly, and in the end not save any time at all for the coder who'll eventually have to rewrite it. This is natural-language programming we're talking about here, which invites ambiguity, and the last thing we need in software development is more ambiguity.Once we get programming software that will work by natural lanugage, we'll just have to type: "Create programming software that'll work by reading my mind."
Then, as we're working at our computers, any software we need will instantly be created. We'll never have to buy software again!
If someone says he and his monkey have nothing to hide, they almost certainly do.
The key to high quality software is controlling the complexity in the inter-function domain; the ordering of and the relationships between functions.
Converting natural language to software does NOT address this problem. Natural languages are not expressive or fluent at rigiourously addressing complexity issues. Rather, formal methods address this problem; even weak formal methods such as state machines produce enourmous benefits to code quality, since they force the author to consider all possible outcomes from all function calls and at the same time, by rigiously, logically and consistently exposing the behaviour of the program, permit far easier code modification by later authors.
--
Toby
Update For for the dupe. Not going well. Appreciate all the hate mail. Really encourages improvement
Nothing else seems to encourage any improvement here. Michael is still here.
Wishing I was a millionaire since 1969.
First of all dupe.
Second of all, when I was tutoring students on how to write their program assignments I used to take the assignment and tell them that all the nouns in the specification were meant to be objects and all the verbs were methods. The students did not know what a noun and a verb were and I would end up underlining them for them.
Finally, people can barely write clear understandable English:
"...writing concise (and therefore) requirements and descriptions"? I guess the submitter meant "and therefore better" or some other qualifier (which Metafor would try to turn into a property of the object "requirements").
Both Slashdot and users of Metafor need to have editors go over all input submitted to them.
While not the same thing exactly, Softwire allows developers to drag and drop objects and connect them through input/output nodes to create applications.
Actually, the notion that someone can writge programs using a "programming language like English" has been around for a good long time (in fact, that was the original idea behind COBOL --- self-documenting, written in English).
The difficulty is that the trick isn't writing down something in English, C, or Algol, it's figuring out what you wanted to write about. What this tool apparently does is the good old "the nouns are objects, and the verbs are methods" object oriented analysis, and then fills in a code template.
Kinda cool, but it takes MIT's press machine to make it into a big story.
Techniques such as these lose luster when it comes time to actually using them - the learning curves are too steep for the average user.
"nouns phrases become objects, verbs become functions, and adjectives become object attributes (or properties)"
OK, I didn't looked for classes in specifications that way since... well, never.
When I was told OO programming, first thing my teachers told me was to get rid of this way of finding my classes. Analysis is a complicated matter, maybe this tool can help but I doubt it will provide serious specifications analysis so as to translate them into good class/sequence/whatever diagrams.
if your goal is to work for NASA then you need calculus, but 99% of programmers arent working for NASA just like 99% of nurses arent doing brain surgery. Unless you are going to be a rocket scientist why do you need training in rocket science?
Writing HTML is not programming. Drawing a stick figure with a smiley face is not art.
You are trying to imply that an artist should be able to write the next vector raytracing engine for HalfLife 3 with no knowledge of calculus. I claim BS. This is like giving the typical slashdotter with no art experience a contract to make a painting styled after a Rembrandt. "Its real simple! you just dip the paint brush in the paint, and drag across the paper"
In game development, there is a need for REAL programmers, REAL artists, and REAL musicians. Some people can pull off being two of these well enough, or even all three, but generally this is not the case.
Computer science is a science, mainly by the definition of "Methodological activity, discipline, or study".
Games are a work of art as much as a program. If you swap the personnel of the art department with the gaming engine department, the game will look like Duke Nukem Forever, and, uh... never mind.
Personally, the best programmers I know have graduated with degrees in electrical or computer engineering, not ComSci. ComSci folks seem to be too focused in the software realm. Yeah, this seems stereotypical, but based on observation. YMMV.
- Strydre
For for the dupe. Not going well. Appreciate all the hate mail. Really encourages improvement.
K
Slashdot editors have been lazy as shit for at LEAST the past 6 years. Yeah, tell me the negative comments are the reason it's not getting better. Have you been receiving hate mail for the last 6 years? If so why didn't you tell us and if not why haven't you improved.
I'm glad I only visit this shithole once a week anymore.
This program will allow you to program Pac Man in OOP languages (as in the example) but not much else.
SQL with Select, Insert, Sort, et. al. is already pretty English-like.
Help end the use of Sigs. Tomorrow
Is this perhaps an extreme example of building code from language, which is perhaps notoriously sloppy? I just gave my son an old copy of Code Complete so that he could learn to go from what he wants to do to code, all while developing documented code. He is in the introductory C++ programming class. He has a professor asking him to draw flow charts.
Update For for the dupe. Not going well. Appreciate all the hate mail. Really encourages improvement.
Unless you have an '*' next to your name, you don't pay for slashdot other than the electricity to run your box. Don't give me the "but the ads are there" tripe either. I know most of you either use Adblock or ignore them anyway.
The source is available. Start your own site.
Update For for the dupe. Not going well. Appreciate all the hate mail. Really encourages improvement.
Welcome to the world of being an internet celebrity. You'll find the tissues next to the crying bloggers and emo kids section.
"Quoting famous computer scientists out of context is the root of all evil (or at least most of it) in programming." - K
It doesn't seem like any other method is actually "encouraging improvement"...
Update For for the dupe. Not going well. Appreciate all the hate mail. Really encourages improvement.
Ah, yes! Duping words next to each other, that is the new fad. Because duping articles is so yesterday's news
Open Source Java Web Forum with LDAP authentication
I've never been one to complain about dupes. I figure I already get way more than I pay for from this site (which is zero). But if people are frustrated about dupes, maybe it's because it's an exceedingly simple problem to solve, and the Slashdot editors give every appearance of not bothering to lift a finger to solve it.
Patrick Doyle
I mod down every jackass who puts his moderation policy in his sig. Oh, wait a sec....
I prefer the format used by Cooking for Engineers.
Computer Go: Writing Software to Play the Ancient Game of Go
I would definately be skeptical with such technologies. SQL was an attempt to make database queries close to natural language. In my opinion, SQL is the most difficult language to do complex tasks with. True that it may be, SQL was originally designed for queries not stored procedures and such. The fact is that need was there and SQL had to try and support it.
The inherit problem with using a natural language, or something similar to a natural language for programming is that computers need exacting commands. While natural languages are more expressive, formal programming laguages are precise.
Which is the whole reason why there are often bugs. Computers are not smart, they can not guess what a user wants. They can only do exactly what a user specifies, whether it's right or wrong.
I mean, look at all the misunderstandings that occur between people. (Most) humans have a very sophisticated brain with a portion devoted to language. And still, we get things wrong very often when understanding others.
My point is I don't think there will be a replacement anytime soon for formal programming laguages. I know that is not what this tool is trying to do, but I think it's value is novel at best. There is a long way to go before someone can speak into a microphone and a computer can make the assumptions necessary to peform a task with a reasonable degree of success.
Formal programming languages are not as expressive or flexible as natural languages.
Because I want my program to be interpreted in a flexible manner. As a coder, most of my time is spent dealing with the unintended consequences of hard and fast rules. Dealing with the unintended consequences of English as well is something you couldn't pay me to do.
My Journal
Since when did every artist have to draw realistic artwork? Some artists draw anime, some artists draw comics, and some artists do draw stick figures and it is art to a lot of people. Unless you are going to program the space shuttle or the new unmanned probe, you don't need calculus. I've never used calculus in any of my code, not even once. Sure if you need to do realistic modeling of physics for your rocket, you'll need calculus, but unless you are going to be a rocket scientist why should we require all programmers get the training and education of a rocket scientist and then expect to be able to say "Well we need millions of programmers!". You cannot have millions of rocket scientists, you can have millions of good programmers. Do we really need a new game engine for every game? Can we reuse one good engine made by one rocket scientist over and over again? In art you'd reuse, in science you'd keep reinventing the wheel over and over again. Which is more efficient? Open source is art, and in art you don't need to re-invent the wheel, its all about the expression of the code not the calculus, not the science, the expression. If you are working for the government on some top secret mission critical project or if you are working for NASA then I can understand why you'd need calculus and math. If you are going to get a degree in calculus and math just so you can sit in a cube and write simple C programs all day, you wasted your time learning bullshit you'll never use, and the school has filtered out millions of coders who may be able to write great code for portable mp3 players or great applications for windows but who may not have the skill level to write the code for the new smart bomb or unmanned drone technology. Just because I cannot write code for advanced robotics or aerospace does not mean I cannot write basic applications, and thats what most people need. Most of us are using basic applications and most applications which are profitable don't require any calculus or math at all to write. Look at the code to Enlightenment, theres no calculus in it. Look at the code to Gnutella, no calculus, so tell me how a calculus programmer is more valueable to the economy than an artist programmer when most of the good programmers arent made by the calculus programmers? Napster was designed by an artist, not a NASA scientist. When was the last time a NASA scientist designed anything for the masses?
Well, nothing else seems to improve their editing style, grammar or general editing skills, so I really don't see why they don't expect hate mail.
It certainly would help if there was some transparency in their processes.
well yes , but microsoft will say that OSL(oven secure languish) 1.0 is an inept standard and that they will not include in kitchen robot 7.0 perhaps of OSL 2 meets their standards for kitchen securety and ease of use they might incorporate that.
until then they will use their own version of OSL
that uses metric
When a Harvard natural language parser was given the phrase "Time flies like an arrow," in the 1960s it identified the following five parse trees in reponse.
1) Time proceeds as quickly as an arrow proceeds.
2) Measure the speed of flies in the same way that you measure the speed of an arrow.
3) Measure the speed of flies in the same way that an arrow measures the speed of flies.
4) Measure the speed of flies that resemble an arrow.
5) Flies of a particular kind, i.e. time-flies, are fond of an arrow.
I would guess the source code for those five different interpretations would be, well, different. (The fifth one is my favorite.)
Education is the silver bullet.
Perhaps you would like some leavening (like baking powder) to make it fluffy and perhaps a tasty liquid to hold it all together?
Hooptie
"Heavens, it appears that my weewee has been stricken with rigor mortis!" -- Stewie Griffin
The point is, unless you're going to program the robot or house or whatever yourself, it's going to be a problem to set up a standardized system that a program can understand. Sure, you can add in set after set of "dialects" for a machine to interpret, but in the end there'll always be someone who sees english different, and will put in something invalid. Closest I've seen is COBOL, and...well...we all know about COBOL don't we?
Plus you forgot to mark your eggs for garbage collection once you were done with them.
Update For for the dupe. Not going well. Appreciate all the hate mail. Really encourages improvement.
/. years ago.
Taco, you asshole, you've been duping stories for years. You've known about them and yet you've done nothing to fix the problem. Don't pull this sentimental BS about not "encouraging" improvement. If the fact that if Slashdot is your creation, and is your job, isn't enough "encouragement" for you to fix the problem of dupes, I don't think anything will be. From all appearances, it looks like you've given up on
-------
"Every artist is a cannibal, every poet is a thief."
Coding is a talent, designing is a skill. You cannot teach the talent but you can teach people to properly design programs. What we need to do is simplify the designing of programs. Visual basic attempted to do this but we can take it further. This does not mean just because you can design a program in english that it will be a better program than a well designed and well coded program.
Computer:
"All...your...base...are...belong...to...us."
All in a day's work! Who needs lunch!
What Would Sutekh Do?
What's the insight two moderators have found here?!?
This really reminds me of Frontpage. We all know that webdesign with Frontpage leads to unmaintainable and unlogical HTML code. I have a slight feeling that this will not be different with creating code from a natural language. I'm afraid that this will lead to a lot of unmaintainable and (most important) unsecure code.
you mispelled "mom's basement" :-)
Incorrect - it's the first post, it just happens to be a dupe.
Intron: the portion of DNA which expresses nothing useful.
And when you find your bowl upside-down in a 12x6 pan in the oven, filled with crushed eggshells, a teaspoon, 4 cup measures, and an undentifiable sludge, then it's time to open up the debugger and try again, with slightly stricter requirements.
No, but it might discourage deterioration.
You know where you are? You're in the $PATH, baby. You're gonna get executed!
Sweet, you just invented XML.
"I have never won a debate with an ignorant person." -Ali ibn Abi Talib
Above code is overly redundand.
;'s rather use another glymph to indicate that the default line break behaviour does not hold, something like a \, perhaps.
Drop the curly bits as the scope information is already present in the (SHOCK HORROR !) spacing. Get rid of the
Wait, what have we here ? Another piece of beatifull Python code !
This seems pretty far fetched for a number of reasons when thinking about real enterprise level applications, but I used to think the same thing about code generators.
After years of improvements, code generators are now a VERY important part of my development. Now code generators can never build an application for you (well at least not one that I'd want to put my name on), but there are a number out there now which can dramatically reduce development time. I don't think I've ever just taken and used any generated code, but building templates to generate code can save TONS of repetitive coding and only leaving a little cleanup and adding more advanced business intelligance than the generator can.
I'd hope eventually, the type of technology described in this article would act like a next generation code generator. Allow developers to build up templates (preferablly in XML) to direct it in how to act. Again, this system wouldn't really be used to build real applications without programmers, but could be a great productivity tool by allowing us to avoid even more tedious work and consintrate on business logic more than typing out 20,000 lines of basic structure.
"reality has a well-known liberal bias" - Steven Colbert
Except that you're reading it literally like a human might. Each "command" is really just a function that knows how to properly implment the action. e.g. If you have a function:
breakEggs(&bowl)
You would expect it to break the eggs into the bowl and discard the shells. Same thing here. It's just a meta-description.
Javascript + Nintendo DSi = DSiCade
For for the dupe
Department of redundancy department?
nice try but like most examples trying to explain OOP, they pick an easy subject.
Often time I find that real OOP problems aren't so straightforward.
love is just extroverted narcissism
Drop the curly bits as the scope information is already present in the (SHOCK HORROR !) spacing.
;'s rather use another glymph to indicate that the default line break behaviour does not hold, something like a \, perhaps.
We did that in the days of COBOL. It sucked.
Get rid of the
Or perhaps we could leave it as is? Alternatively, don't allow mid-instruction breaks. Modern computers can *scroll* horizontally, so there should be little issue with just requiring everything on one line.
Wait, what have we here ? Another piece of beatifull Python code !
Not another one of you people. Go away, will you? You're an annoyance to those of us who are getting things done.
Javascript + Nintendo DSi = DSiCade
"Update For for the dupe. Not going well. Appreciate all the hate mail. Really encourages improvement."
/. anymore, and wouldn't be familiar with what's been posted).
At LWE in January, 2001, at a conference on Slashcode, someone asked us at Newsforge how our site had so few dupes compared to Slashdot. There were two reasons:
1) We had a smaller audience of people to see the dupes we did accidently post.
2) We searched our archives before posting any story. We searched by story URL, by story keyword. We also generally skimmed the site when we weren't working to be aware of what was being posted.
Clearly, #1 is something Slashdot doesn't have working in its immediate favour, but #2 is something that shouldn't be too hard. Zonk, Timothy, Cliff, Simonker, etc, don't post dupes nearly as frequently as CmdrTaco. Hemos doesn't post often, but he also seems to be pretty dupey (understandable as he's not really associated with
The worst example is something like the PSP dupe story: Taco didn't even check out the games section, which had that story right at the top! A simple search for "PSP" and "Browser" would've shown it even if he never reads sections.
CmdrTaco doesn't read his own site. What does this tell you about how he feels about it?
I don't read Kuro5hin much anymore for the same reason. Complaining about dupes will just drive him further away, even though he still has to work on it by contract.
--
Internet Explorer (n): Another bug -- that is, a feature that can't be turned off -- in Windows.
Dude, I was replying to someone who was suggesting using the natural language interface for cooking programs.
Javascript + Nintendo DSi = DSiCade
Its possible to construct perfectly correct use cases for an elevator which strands everybody on the roof.
Its also possible to construct use cases which don't make any sense (by not requiring the holes in the floors.)
MSBPodcast.com The opinions expressed here are my own. If you don't like 'em... Think up your own stuff.
See the screen shot in the article and you will know what I mean! ;-)
Python is so close to executable pseudo-brain-code that the 20% analysis leading to 80% benefit (claimed in the article) is almost superfluous.
BTW, using semicolons to terminate lines is perfectly legal in Python. It doesn't care if they are there or not, but using them makes it easier if you are also writing Perl and Java at the same time. In fact, I always semicolon my Python.
*evil cackle*
Is this a sigs-optional kind of place? 'Cause I am totally down with that if you know what I mean.
It really bugs me that /. editors treat dupes as a sort of charming fact of life, as if dupes are among those imperfections that make life worth living. Dupes suck, if for no other reason, because they fork discussion, confuse the archive and make searches less precise.
/. crowd is able to code by second nature. How f-ing hard is it to have a dupe checker (even a simple on like what FortKnox is proposing). Why is it that a website that proclaims itself the bastion of all things FOSS has languished in mediocrity while thousands of competent coders are practically begging to write this feature into the site's backend? Of course, nothing will come of this, except more shoulder-shrugging and gee whiz, golly nonsense. I'm not trying to flame, but this sort of unprofessional, "friendly fuckup" attitude is what holds the public image of FOSS back.
It's especially annoying when the dupe article proclaims that the
If I remember correctly, it's the cause of most suicides in Seattle. http://en.wikipedia.org/wiki/COBOL
The stated goal of Metafor is to state requirements, not specs or algorithms. In the case of cooking, an requirement might be:
"The recipe is intended for amateurs; it must be designed so that it will produce good results even if the the oven is 30 degrees too hot or too cool."
The recipe you give above would meet the requirement by an adjustment of the ratio of solids to liquids, and carefully chosen temperature and cooking time.
It's not clear that there would be any utility in stating this requirement in an object-oriented form. The requirement cuts right across the details of the recipe design and implementation.
Haughty sniping is first nature to most of the Slashdot crowd.
Best Slashdot Co
Would adding spelling/grammar flames to the dupe ones help? Anyone who thinks so should feel free to add them in a reply to this comment.
In addition to helping programmers visualize their program better, I think it also promotes writing concise (and therefore) requirements and descriptions.
Nope!.
We don't need a way to transform natural language to program... we need a way to take a program code and produce natural langauge.
I don't know any developer that actually likes writing documentation.
Bet this
From a research standpoint, this is very interesting and all, but from a pure pragmatic standpoint this seems like a bad idea: By adding in an extra level of 'abstraction', you include an extra level where errors can crop up.
How about devoting all that cool research into writing better compiler AI, and improve debugging and code optimazation?
HA! I just wasted some of your bandwidth with a frivolous sig!
It's called Forth. Created in the 1960s. It's still chugging away.
Most of my clients can't even express their requirements in plain english :P
We need the algorithm that removes the buzzwords and replaces inapropriate jargon in middle management speak to translate it into plain english. This would be the DWIM (do what I mean) pre-filter for client requirements.
But not all code is written for business apps. What about scientists who understand logic fairly well, but who have difficulty in C or C++? (There are a surprising number of such people.)
Would you prevent a mother with no medical training to put a band-aid on her son's skinned knee? Sure, a trained doctor would know more about exactly how much (if any!) antibiotics to apply to the wound before applying the bandage, but surely you agree that the mother should be forced to pay his fees for this fairly trivial service?
I agree that this might not be for everyone or every project, and this particular instantiation might not even be for anyone or any project, but surely you must understand the importance of allowing the casual/hobbyist programmer to increase the tools in his toolbox!
Ben Hocking
Need a professional organizer?
reminds me of Chef.
There are attempts to program in a spoken language: for instance Lojban. It's an artificial, logical language to be spoken, but in which no ambiguosity can occur. It's easily parsed by a computer. So why not learn it, speak it, program in it?
(I must admit that I think the language is too artificial to be spoken but I haven't even worked through the tutorial. There are actually people who can speak it fluently!)
Tha-tha-tha-tha-that's all folks!
msg db "Hello, World!",0
main: push msg
call puts
push 0
call exit
What you would have is another piece of useless crap python code that can't be worked on or used by other people without unwarrented problems. Curly braces or some other block container is required for a programming language to not suck. This allows simple scripts and other programs to alter indentation so everyone can code in their own style, and then indent it correctly for the project. man indent, and then stop trying to push the dumbest language ever made on everyone. Ruby and pike have everything python has, without the retarded whitespace bugs.
Actually it can serve two purposes. One is to bridge the gap in learning a new language. This would be an excellent tool to use for intro to programming.
2) later stages I can see this tool helping design programs. Its not different from UML.
In fact maybe a natural language to UML tool would be useful as well.
3) Tools like this help manage complexity. Of course you lose information when you work at higher levels of abstraction. But, its no different then losing information when working with C++ instead of machine code.
4) I see design tools like this a benefit to the programming world
Keep up the good work.
No, an url checker isn't needed. They need to actually do their fucking jobs. Hell, I just read the site, and I know when a story is a dupe, as do hundreds of other readers. For a few of these guys, their ONLY JOB is to maintain the site. If they can't recognize when a story is a duplicate, they aren't doing their job. It shouldn't require an URL checker. These guys should get off their lazy asses. The problem is that some of us just keep coming back, giving them more pageviews, etc. If people got really sick of it and just came to /. less, maybe management would wake up and can these guys posting the stories. Sure, I know they started it, but that doesn't mean they're inherently more competent than anybody else.
I don't respond to AC's.
Read who I was replying to. He got modded down to -1 for adding a troll at the end of his otherwise perfectly acceptable post.
Javascript + Nintendo DSi = DSiCade
First, the tool must have a microsope built in.
Next, search algorithm for finding brain.
Recognition software to distinguish between brain and dust speck. (Hint: Dust speck is much larger)
Now to turn it into solid requirements...
Okay, I give up!!
Wow, you are a brave man.
You are trying to explain object oriented coding to novices in a community that
1) has 500 000 people who are sure they are the foremost coder in the world.
2) loves to criticise.
Anyway, I appreciate that you stuck your neck out and tried to do something productive.
The Internet is full. Go Away!!!
Try Esperanto or Lojban.
Slow down, cowboy! It has been 4 hours since you last posted. You must wait another few hours.
The use of special purpose languages is nothing new. They're used in mathematics, chemistry, music etc. ... pretty much anywhere where it is easier to use a special purpose language to express concepts than with a natural language. Sure there is a learning curve, but that is often the least of the hurdles in doing a reasonable job.
Take for example music: For the musically illiterate like myself, a music score means nothing. Yet, to someone who can read music it means a lot. I guess you could potentially write music in English: "Make a high pitches sound for a bit, then a lower pitched sound and then a highher pitched sound....". Reading that would be hell and it is imprecise as to what it means. The hard part to being competent at music is not how to read the score.
Likewise, computer languages are the least barrier to effective programming. What matters more are the concepts and being able to express them effectively. Sure, some languages are easier to use than others (eg. python might be simpler than C and just about everything is simpler then Brainfuck), but programming in a natural language would be damn difficult. We already have some simple programming languages like VBscripting and spread sheets for "soft tasks" like customising spreadsheets and wordporcessors etc.
Engineering is the art of compromise.
I plant this flag in commemoration of this day for future generations. I am proud to be posting to this historical thread in which CmdrTaco busts a vessel.
Sounds like someone has a case of the Mondays. ;) Seriously, you appear to be speaking from your experience as someone who has to support idiots (AKA the general population). OTOH, I'm speaking from my experience in the sciences where the amount of time spent writing code is frequently larger than the amount of time spent running the code. In many instances (not all) bloat is less of a problem than time wasted tracking down the reasons behind a segfault. That's one reason why many scientists "code" in Mathematica and/or MATLAB. Again, I'm not saying that this particular solution is any good, just arguing for the value in making programming easier at the expense of making the programs less efficient in space/time.
Give a mother a band-aid, and everything's a boo-boo. I still remember that time when I had my legs and arms separated from my body - blood was spurting everywhere! - and my mother was trying to fix it with a band-aid (well, four band-aids). Luckily, I finally convinced her that this was a job for a surgeon.
Ben Hocking
Need a professional organizer?
I'm sure to get a story posted on /. in no time - just submit a dupe!
[guinness]
BRILLIANT!
[/guinness]
you published the source code.
My new blog
Now thats a good idea.
.net. It sure as hell shouldn't used in system critical applications, but how cool is it that an engineer, or scientist, or whoever can pick up a laguage and make it do things he needs done without having to learn another level of abstration himself (because he alreadys knows one, english). Different tools for different jobs.
Wrap poloymorphic objects around machine hardware calls. For doing stuff. Then abstarct those object calls to a natural language syntax.
vaccum(minutes, startX, startY, stopX, stopY)
abstarct further to:
Vaccum the basement.
(where basement containes the parameters for the vaccum object).
Since vaccum will always do the same thing (just in different directions for different times), why not abstarct further? Theres only so many points of data entry of most simple tasks, so I say abstract the hell of out em.
Mix natrual laguage and code. No reason not too.
VB.net is an example. It's a natural language interpreter for
AHAHAHA! Yeah, humans read things literally, while computers have complex semantic rules and use context to understand.
The more the "functions" are programmed to assume, the more useless they are as general-purpose functions. you've got a breakEggs() function that assumes a bowl, garbage for the shells, etc etc. That's not the "breakEggs" I need on devil's night, so we're back to square one: having people learn to program properly.
I believe it's called "The Last One's Law of Program Generators":
"A program generator generates programs that are more buggy than the program generator."
-- I have monkeys in my pants.
It really bugs me that /. editors treat dupes as a sort of charming fact of life, as if dupes are among those imperfections that make life worth living. Dupes suck, if for no other reason, because they fork discussion, confuse the archive and make searches less precise.
If you watch television, you'll notice after a while that shows frequently show several times during the week so that people with differing schedules get a chance to watch the show.
It's a "dupe", and really only gets annoying when you have a Tivo recording every Star Trek episode. Why is it so horrible to dupe every so often, and give everybody a chance to consider the minutae?
It's not as though media needs to be a normalized database, people...
I have no problem with your religion until you decide it's reason to deprive others of the truth.
That's not the "breakEggs" I need on devil's night, so we're back to square one: having people learn to program properly.
What the hell are you talking about? The language is designed to encapsulate recipe semantics. That's it. If you need something other than cracking the shell, dropping the egg into the container, and disposing of the shell, then you need a different function. (But what else would you need for cooking and baking?!?)
Javascript + Nintendo DSi = DSiCade
Joder, ahora solo tengo que aprender ingles :D
-Woof woof woof!
No, the average Joe wants a computer to be able to do what he says, when he says it, not when he can figure out how to make some program do it or go to school for years to do it himself.
--
Computer, google natural language voice recognition, please, and open the first five results.
For all of you professional and amateur programmers out there who can actually accomplish something using code, kudos for you -- but that's not what natural language processing will be used for.
.txt files, Word .doc files, Excel files, whatever.
I envision natural language processing to be useful for all kinds of consumer and commercial devices that may be somewhat complicated to operate. The natural language interface allows someone without programming experience to execute somewhat complicated queries and functions without the aid of a programmer. It will also allow even professional programmers to do certain things very quickly.
Those posters that cited Star Trek TNG in relation to this are absolutely spot-on.
Let's take an example. Say you wanted to move all documents on your hard drive that haven't been modified in 6 months to "C:\docs\old" or for your diehard *nux junkies, "/home/gondola/docs/old".
Because of your natural habits to be disorganized or forget where things are over time, or because of accidental writes to the wrong directories, you have documents in several locations on your hard drive, under \download, \My Documents, whatever.
So you type a natural language program that reads, "Move all office documents that have not been modified in six months to \docs\old" (or you speak it).
The program runs and moves the documents in a matter of milliseconds, and you're back at the prompt, or the GUI emits a tone to indicate the process is complete, perhaps with a textual or graphic representation of the task performed, with the number of files moved, and the changes logged.
What if you did this manually, or tried to write a script to do it?
You can't just type "mv *.doc \docs\old" or "rename *.doc \docs\old". The documents can be
Let's say you wanted to sort all of your mp3s by artist, album, and title, creating directories for each artist, and directories for each album underneath that? Depending on the number of mp3s you have, you could spend hours doing that.
With a natural language processor, (and a hook that allows your OS to read mp3 file tags, or look up the info online based on the mp3 fingerprint) your computer could do it in a matter of seconds. Without you having to know any programming -- because really, for "simple" things like this that you do once, are you going to sit down and write a program to do it?
"Move all mp3s to \mp3 and sort them into directories according to artist and album."
"Name all mp3s as track number dot space title."
Now, it's possible that there may be mp3s being used by commercial applications. Obviously you would have certain definitions and defaults set up that you could override if necessary. For example, moving all mp3s would imply "all mp3s that are not part of an installed application", and all office documents would imply "all office documents that are not part of an installed application," ie, it would not move documents under \Program Files\MS Word\" which would include all of your templates and etc.
I can really picture this as being the next big thing in human interface for computers. It would make some things so much easier, one-off tasks that you normally have to do manually, file by file.
"Agents" (and no, not like Agent Smith) are things that have been written about in SciFi for quite some time, and I believe that our need for organization and assistance in day-to-day activities has come to the point where developing these agents is going to be worth the effort, and it will improve productivity.
They won't have personality yet, except for whatever audio feedback mey be programmed into your agent.
I see progression like so;
-First Agents created. They do simple Operating System tasks, like file management.
"Move all documents not edited in six months to \docs\old"
-Agents begin to do redundant tasks like monitoring web sites for specific key words, executing simple
As the homeless guy living in a tent behind your house, just let me say... THANK YOU!
I think this would be a good tool for building the structure of your code.
On a side note we don't want to have a computer program being able to convert plain english to code for a couple of reasons. The most important is that I wouldn't have a job anymore. And of course if computers start writing code from plain english it's only a matter of time before they become self-aware and before you know it SkyNet is launching nukes.
InputExceptionError: line 8: unexpected adverb - "therefore"
Please tell me the word with which you were planning to follow "therefore" wasn't "clear."
sig not ready: (A)bort, (R)etry, (F)ail.
Not going well. Appreciate all the hate mail. Really encourages improvement. /. crowd are fuckheads... what else is new...
Update For for the dupe. Not going well. Appreciate all the hate mail. Really encourages improvement.
Awww, to FUCKING bad...you got a job to do and you NOW get paid to do it right? Anyone else would have been fired already..how many fucking times do you see other major sites duping as much as the crew here. Go whine to your momma taco and get off the site if you fucking can't handle it...Really encourages improvement??? Are you serious? If anything, it's gotten worse in the last month alone, where is this improvement we are supposed to be encouraging? Why don't you bite the fucking bullet, pony up and get some REAL code to run this site instead of the cob job script you call slashcode.
How many people do you know who can express themselves with precision in English? How many Slashdot posts have no speling errors, typos, or grammatical errors?
include $sig;
1;
For this to be useful, English words need to be defined more narrowly than they are in regular usage, and "English" written for this "natural language processor" will become a new language that just happens to use English words.
I just RTFA, this looks interesting and probably useful, but seems hyped way beyond its usefulness.
Here's a rather realistic quote:
"At the same time, interpreting natural language is an extremely difficult artificial intelligence problem that is likely to take a decade or more to solve fully."
One problem is that a program that interprets natural language will surely fail the Turing Test at a point much sooner than a person would. Eliza (the very crude Freudian shrink program) demonstrates much more about the gullibility of people than about language understanding.
You don't have to read a lot in the area to see that context and a deep understanding of ordinary human knowledge and environment is neccesary for any reasonable success. An old example that can easily trip up computer understanding is:
Time flies like an arrow. Fruit flies like a banana.
The real breakthrough, if it happens, will be the (Vinge-style) Singularity when machines actally become intelligent and conscious, and "artificial intelligence" will mean something more than the computer-equivalent of a waltzing bear.
Tag lost or not installed.
FOR FOR THE DUPE!
FOR FOR THE DUPE!
I can just see Mel Gibson, face painted, rallying the troops before the siege.
FOR FOR THE DUPE!
It's not that people don't know a language like C that keeps them from being able to program. Most people can't think well enough to describe how to do even the most simple of tasks. Making them talk about complex business processes in a systematic way will make their brains explode like in the movie scanners.
Programmers have the aptitude and training to produce the logic needed to allow complex systems to work well. We will have jobs forever.
Via AdBlock
http://adblock.mozdev.org/
Sure a tool would be easy to implement. They should, maybe, but then this article may not have gotten re-posted. And to be frank, I think its good it got duped.
;)
A little redundancy can be very worthwhile, and its not like someone is forcing your eyelids open until you read the article again if you already saw it.
The point of course is that if it weren't reposted, I'd have missed this article (And I do read the main page compulsively). Its interesting news, and since I and a lot of others don't read the 'developers' section all too often(at the risk of sounding dumb, I admit that I only really understand a small fraction of the articles that go up in that section), its easy to miss some cool news.
If the Editor missed it the first time, than lots and lots of other slashdotters surely did; Especially nice to dupe it then if it never appeared on the main page (such as this one).
I think that this is reflected in the comments; Original post had 50 or so, this one is closer to 375, in a much shorter time period. there are a insightful comments from people who clearly didn't see the original post. Thats more people getting ideas and having responses. Awesome, rock and roll.
I guess it could be nice just to at least acknowledge initially its a duplicate post, like check right after submitting with a 'Hey these URLs are also Here, would you like to reference this older post?', which would make sure to get all the content; In this case, the first post of this article had several links that this one did not, and getting that content some limelight while we are duping is worth it.
To those of you who are meticulous readers, and never miss a single post; We have to see the same ads everyday from slashdot, seeing an article twice is no great tragedy. While you're spamming your senses anyway, it might as well be with something interesting. We are all benefitting from the extra comments, anyhow, so really its good for all of us.
About your pageload theory: I just think thats unfair. They get our pageloads either way, and harbor us no ill will to actually want to incite frustration. I hope.
Just my two cents.
-l
One problem with translating NL is that it can be very ambiguous. Consider the subject of this post. Who has the telescope? Me? or the man on the hill? Now, it would be quite a mess to realize your requirements, code or whatever artifact you're trying to express can have multiple interpretations. Then you go into damage control and cleanup.....not pretty.
What do they think about Lojban (http://www.lojban.org) as a formal intermediarz language for translations?
But seriously. For AI. Surely you would get a speed increase if you could instruct a robot with natural language and rather than the robot translating that language to functions and variables etc. it would just treat it as code!
Obviously, it makes sense for Speech recognition etc..
Anyway, I like the sound of it.
Have Kylie stripped washed and brought to my tent
"It looks like you want to strip-wash Kylie. Now readying strip-washer, copper surfacer, and metal shearer. Thank you for using Metafor."
i'd hit it so hard, if you pulled me out you'd be the king of britain [bash.org]
"Formal programming languages are not as expressive or flexible as natural languages."
Notice that this is so, at least in part, because they were designed to be so. People argue, fume, fight, and even kill each other over disagreements as to the meaning of things someone said. A program, on the other hand, has a meaning on which all knowledgable people and all CPUs can agree.
You can drive nails with a cinder block or a tractor wheel, but most folk use a hammer because it pares away all sorts of unwanted properties presented by other objects. I really don't want to program in a language that winds up with me spending ten years in court arguing with the computer over whether my program means this or that.
Why are people always trying to take the edge off my tools???
Often, when used judiciously, mid-instruction breaks make long instructions easier to read and allow the entire line to be displayed at once. Keeping your code's width at less than 80 characters is nice, too. Yeah, it's kind of an arbitrary number enforced by console widths, but (a) some people still use the console. (b) most code has many short lines and a few very long ones (conditionals, loops, insane bit arithmetic and what have you); having lines stretch horizontally for a really long time makes you move your eyes far away from the rest of the code to read it. Most code I've seen that breaks long lines and comments at 70-80 characters looks about right in terms of the tradeoff of having enough space on a line to say your piece and still not having a few lines that disrupt the reading of the code. And that way, if you have a huge monitor, the horizontal space can be used to display multiple source files without having to scroll any of them horizontally.
Which would be perfectly good logic if we weren't talking about a language for describing recipes. :-) Being a "meta-language" that's targetted at semi-programmers, it would make most sense if the syntax was as simplistic as possible. Part of that is that the instructions should be crafted such that long lines shouldn't happen. Just like BASIC. ;-)
Javascript + Nintendo DSi = DSiCade
Just an idea, if we want slashdot's bottom line to see the effect of dupes: use firefox's adblock to block all the ads until a dupe checker is running (whether via a software module, or just competent editors).
If adblock isn't enough, perhaps someone could mangle the ads so they show ads for other new sites instead, giving them revenue slashdot would otherwise be getting.
My brain turns hemp into software.
Your example is attractively simple, but I fear that's largely because because your specification is incomplete.
:-)
You didn't list your measuring devices as equiptment.
You didn't specify that the eggshells should be thrown out; does your language assume automatic garbage collection? If so, how does it tell what can be thrown out, and what should be saved for future recipes?
You didn't specify what kind of flour should be used. Should it be "All purpose" flour, "bread flour", or even "whole grain" flour? Where should the flour come from? I've seen one excellent cook deliberately vary his Danish recipes to account for the variations in gluten content in the local flour here. The flour he had in Denmark wasn't the same kind as he found in North America, because the climate, growing season, and strains of wheat aren't exactly the same, and the flour reflects the nature of the wheat it was made from.
What size of eggs are required? Two small eggs would probably do a poor job of absorbing 4 cups of flour, but it takes domain knowlege in cooking to make this guess.
How thoroughly should the contents be mixed? Should it be mixed "lightly", "throughly", or "just enough to absorb all the liquid into the flour", "until the mixture is slightly lumpy", or what?
How quickly should the contents be poured into the pan? Should it be all dumped in one corner, or should the bowl be moved around during pouring? Do the contents need to be spread into the corners of the pan, or should they be left exactly as they fell? Again, domain knowledge in cooking is required to make an educated guess.
Last but not least, what is the end product of this recipe supposed to be? With 4 cups of flour, two eggs, and some vanilla, mixed, and shoved in an oven for 15 minutes, I just can't picture what this is supposed to become, other than a hot lump of floury goo. There's no sugar, so it's not a cake, and no yeast, so it's not a bread. There's a lot of flour, and a small amount of liquid, but the directions say the mixture can be "poured" once successfully mixed, which implies that the mixture somehow becomes more fluid than solid. I confess, I don't understand how...or what's being made... or why...
Other than that, it's a fine specification language for the layman.
--
AC
Duplication on occasion is not the end of the world and it certainly doesn't deserve all the energy given to it.
Taco's entirely right.
You people don't like Slashdot? Stop whining about it and leave. You're just clogging up the discussion for the rest of us. You're not wanted here.
Patent Pending since 2001
You'll prolly think I'm an ed... but when you demand that ppl eat shit off the floor for you. It's just that what goes around comes around.
I'm not sucking somebodies dick because "They're a paying customer..." Fucking whiners.
I've been thinking similar thoughts for years, but never cared to write my own esoteric programming dialect. Somebody else already has.
For those who never studied it, Latin is a beautiful language for expressing temporal relationships. It has an unusually crisp flavor that seems to desire order and strict logic. There were good reasons why it was the technical language of choice for several centuries.
Thanks for the link.
By what metric? I've had a number of people tell me the same thing about English. As a native speaker of English, I've found Arabic much more daunting simply for the number of sounds that don't even approach anything in English, let alone the very complex grammar. Chinese by comparison was quite simple, with a grammar much closer to what I'd grown up with, and sounds I could at least approximate enough to be understood.
The problem with anyone saying "Language X is difficult" is that it has everything to do with where you're coming from. If you speak Samoan, then Mâori and possibly even Tagalog won't be too much of a stretch, as the languages are related. Coming from English and learning Mâori is a completely different ballgame.
By way of example, let's look at some simple sentences. "I am going to the store" in English works out to wö qù shângdiàn, literally "I go store" in Chinese. But try the same thing in Japanese, and it could come out umpteen different ways depending on who you're talking to. If you're amongst friends, you could say mise ni iku, lit. "store to go", with the subject of "I" only implied (implied subjects can make interpreting Japanese into English a real bitch, especially if you just missed the beginning of the conversation :). If you're talking to your boss, you might say watashi wa o-mise ni ikimasu, lit. "I (topic) (honorific)-store to go."
I'll be the first to admit this is a lame-ass example, but nonetheless, I hope it at least illuminates my main point -- what's difficult to learn depends on what you already know. :D
Cheers,
"What in the name of Fats Waller is that?"
"A four-foot prune."
How about switching the slashdot posting policy to be more like a newspaper. Maybe it is already something like this. (Haven't used slash myself)
You would have a number of articles queued for a single day's news. That day's newspaper, so to say, would be published at a given time that is the same for each day. If you want to trickle them out gradually, or publish the whole paper at a different time each day, that's fine too.
The merits of this would be:
You can see a list of all stories for a certain day. You can print them out and proofread on hardcopy. (Yes a revolutionary concept but it works better than online).
You can catch dupes within the same day's newspaper really easily
You can easily remember which day a story was published, and even when you see a dupe think "doh, that was in yesterday's paper!" and can it.
Reduces the constant, unendinr hysterical chaos that must be a major feature of slasdot operations.
Makes it easier to hire a real journalist or editor and give them a task like "edit the day's stories and give the final okay before we put this edition to bed".
Index stories and threads by day
More things to sell your advertisers, equivalent to one full page ad (say one story) paid by a manufacturer (as long as you say it is a paid ad). For example IBM might pay you to put in a story related to IBM once a week. Plenty of stories possible there, and they pay you to write it even.
What do you think?
How is it off-topic to discuss the dupe? There is a reference to the fact that the story is a dupe in the fucking summary - you dumbass.
In addition to helping programmers visualize their program better, I think it also promotes writing concise (and therefore) requirements and descriptions. Metafor doesn't handle run-on sentences (or bad English) that well
Does this mean there's going to be less software programming offshoring to 3rd world countries?
How the hell am I supposed to express Dijkstra's algorithm, or Lamport's concurrent programming algorithm in natural language? I can express them in mathematics and logic, which is also nearer to how a comptuer works. I think an interpreter that understands and translates mathematical symbols to computer languages, or computer languages that are more similar to them will be more useful than higher level languages.
Anyway, isn't that what's fun to code? Hell, I prefer understanding graphs and routing algorithms than making the cashier's system anytime.
I don't doubt it's not useful for some systems, but it doesn't sound like fun, ergo, I'm not interested.