Eclipse Launches New Programming Language
An anonymous reader writes "Eclipse has launched a website for a new JVM language, called Xtend. It's built with Eclipse's Xtext and compiles directly to Java code, similar to what CoffeeScript does to Javascript. It's not just an announcement but it's already there and useable, including a very feature-rich Eclipse integration."
I like it. It looks like they've taken the power of C/C++ macros, wrapped it up in a clean simple syntax, and applied it to Java.
When I first started programming in Java, I was at a loss without my macros. The concept of macros and code expansion are so powerful, but often overlooked because they can be hideously difficult to debug and enhance.
I do not fail; I succeed at finding out what does not work.
Does it do anything that Groovy or Scala don't already?
The "You want performance? Fuck you, have more features instead!" of IDEs.
"We saw what you did with your classes, so we added some more classes to your classes to hide your classes because we have more class."
"We saw what you did with your syntax so we added some more syntax to your syntax to hide your syntax because we are more syntaxy."
"We saw that java still sucks so we added some more suckiness to java's suckiness to hide java's suckiness because our suckiness sucks less ... sort of ... maybe ..."
"... because our next step is to distract you from our new suckiness by adding more xml ..."
Seems like cool language. Much like Spring and the new JVM languages, it seems like this exists primarily to address shortcomings that Java has because it hasn't come out with new versions for so long.
Eclipse already writes a lot of Java for you, so this seems like a natural extension. Of course, this is a ridiculous state of affairs. When a most code in a language is boilerplate, it's time for a new version, that takes care of that for you. I mean could you imagine anyone releasing a Java-like language today that didn't have first class treatment of properties, didn't have syntax for applying a function to every member of a collection, and didn't have better type inference?
It's interesting that it compiles to Java, I don't think it'll be long before, it'll start to completely skip the Java phase.
Democracy Now! - your daily, uncensored, corporate-free
"but"? I think you meant "Also". :P
I read TFA and all I got was this lousy cookie
We are using Xtext (2.0) and its companion Xtend (2.0) to build domain specific languages. Together with Xbase, a part grammar for expressions, we can build new DSLs for various purposes in no time. And it is not such a code bloat as some people might think. When you develop applications with a wide range of models, these EMF-based tools are quite practical. Beside that, we evaluated ATL, QVT, and Xtend in various scenarios. Right now it looks like, that Xtend is very well suited to build generators to source code of other languages especially Java and Scala. It also made a good impression in model-to-model transformations.
I am sure Oracle wont be happy
http://saveie6.com/
Xtend is an example language developed with the Xtext language construction toolkit. It also now does double duty as a support language for that same toolkit. The dynamic dispatch and string template portions of the language make it ideal for model-to-model and model-to-text transformations (i.e. compiler construction) when developing Domain Specific Languages in Xtext.
Summary isn't 100% clear and I'm too lazy to actually read the article, but which statement is accurate:
"compiles 'directly' to Java byte-code"
"compiles to Java source code"
We are planning to use this language in our future projects. Now we are searching experienced Xtend-coders with a minimum of 3-5 years experience on Xtend-coding.
"To be honest, Java needs to die already. Everyone will be better off."
Except those that run a platform that lacks support (either no support or some outdated version).
I'm programming in this right now:
http://www.mono-project.com/Start
And the IDE is absolutely terrific:
http://monodevelop.com/
It is dangerous to be right when the government is wrong.
I'd agree about the java/j2ee, but Microsoft and it's C# need to die too. they serve no good purpose that can't be done better by other languages. I'd never want to give legitimacy, ability to sue, or power to Microsoft by using their tools
Garbage collection. Forget everything else, garbage collection is the reason that I as a _user_ would prefer that the apps I use are developed in mono or Java.
As a developer, as soon as Linq is available in C++ I'll start writing my apps in C++. C++ and Qt are no less portable than Java, but everything that is a tedious in C++ is a breeze in C#.
It is dangerous to be right when the government is wrong.
Seems like there is a new programming language every two weeks. As if the other several thousand in existence weren't enough.
Yeah, devs should work on inventing a better text editor instead.
Oh, wait, this is coming out of the people who maintain Eclipse. Maybe the joke isn't so funny after all! Can Eclipse enable line numbers on the fly yet? Or changing text size on the fly? How about simply line wrapping?
It is dangerous to be right when the government is wrong.
Scalability and performance are important.
---------
There is inferior bacteria on the interior of your posterior.
There is nothing magical about garbage collection that only the Java or .Net VM's are capable of implementing. GC has a long history, stretching back to languages like LISP and SmallTalk. Hell even C++ has had the Boehm GC available for nearly 20 years.
Syllable : It's an Operating System
http://www.eclipse.org/Xtext/xtend/#compilestojava
Though the example using a StringBuilder was ugly. Seems you should either generate readable code or efficient code.
.NET ain't lightweight, and "hundreds of times" better, by what standard? Some rather minor language improvements are essentially crippled by the fact that it's crossplatform capacity is very limited. For all the good Mono does, I might as well just bloody well code in C/C++ with a library like Qt.
The world's burning. Moped Jesus spotted on I50. Details at 11.
You do know that the Java runtime is an order of managitude smaller than the .NET runtime dont you (and that is not even considering that .NET also requires the bulk on Windows while Java does not). In short, your knowledge is severly out of date - you musta been drinking the Microsoft koolaid. Well, here is news for you, .NET will be superceded by another Microsoft product long before people stop using Java (especially in the Enterprise space).
Since when did that language become significant?
Also, bad analogy. CaffeeScript compiles to JavaScript source code. This new language from Eclipse compiles to Java bytecode (just like Groovy, Scala, +various other languages).
To have the .NET framework backwards compatible (like Java) you'll need to have all .NET frameworks installed which requires 4 GB. In what universe is that lightweight?
well, you'd have to kill actual people, like me to stop having more and more Java code around. You are welcome to come and try it.
You can't handle the truth.
I agree. With everything that's out there - C#, Java, C++, C, gcc, visual studio, there's plenty out there. Almost like the attempt to invent Esperanto.
Yes. Java was (and is) a lot faster than Smalltalk. Sorry, but that *is* significant.
Of the languages that you list, only Lisp is faster, or even nearly as fast as, Java. And Lisp is hard to wrap your mind around. (And here I'm assuming that you mean compiled Common Lisp.) Also, in the early years of Java, a free compiler was unusual. Having a language with a free compiler was a real win. That's much less a consideration now, but now that shape of the language landscape has a lot more inertia.
I think we've pushed this "anyone can grow up to be president" thing too far.
There's a big difference between "capable of having a garbage collector implemented" and "comes standard with a garbage collector built in". In the first case the language must be designed with the assumption that a garbage collector is likely to not be available. So don't count the Boehm GC, or even Ada's. (Ada had one before C++ did...but it wasn't required, so it was usually an extra cost option. So code couldn't assume that it would be present.)
No, there's nothing magical about having a garbage collector. But it eliminates a wide set of errors, and renders feasible languages that presume that objects will come and go. It also strongly encourages that pointers not be used. (Which means that some alternative approach must be adopted.)
It's not magical, but it's so useful that I hate using languages without it. (Even Vala has implemented a garbage collector as a part of the core language, and it translates all it's code into C for C to compile.)
I think we've pushed this "anyone can grow up to be president" thing too far.
I got the tutorial project created, but I don't see an option to compile/run it as Xtend?
A 21st century issue: the irony of technologies of abundance in the hands of those still thinking in terms of scarcity.
Do you work for Microsoft?
# cat
Damn, my RAM is full of llamas.
The thing is, C# has already macroing capability (and other lispy features) and Java is often dissed for the lack of it. This language seems to address that.
I don't care about type inference. My IDE does a good job. And I like static typing. But well, the language has closures and typed switches, so why not. But then the set/get feature.
First we got told that writing person.name = "John" is bad. Bad, bad, bad. I never understood why. Sure, getters and setters are very useful, beans and all, and it can take away some trouble, but if you really need a function that does more than change the value of field x, why call it setX()?
Anyway, that's the current practice: getX() and setX(), and sometimes they don't get x, or set x, but just pretend. Now Xtend translates person.name = "John" into a call to a setter. And that's even worse. In a previous job, I inherited C# code that had statements like db.open = true. Whaddya think that meant? Why, it opens the db connection, via the setter, of course! And indeed, assigning false... So now all this power of abuse has come full circle back to Javaland. What a mess.
what happened to having an industry standard language?
We'd all be programming in FORTRAN or COBOL if we stuck with that mentality.
my head wants to explode
I sympathize. There's more technology than you can shake a stick at. I just don't see any way out of this mess. Technology is always going to churn while chasing improvements.
Lets take C, wrap it in C, then wrap that in C and then wrap the whole thing in yet more C.
Can we please just program in C?
Hey KID! Yeah you, get the fuck off my lawn!
Just what we need....
---- Booth was a patriot ----
Are you fucking serious? Clicking the link and reading just a few lines at the top would have answered your question (and would have been much less work than typing this post).
AMEN.
Where's that mod point when I actually need it?
Free compilers have been common since the 1960s. Mainframe vendors gave them away, Unix came with them, there were shareware compilers for the first PCs (encouraged but not required to make donation) for all manner of languages, from assemblers and COBOL and FORTRAN (yes, capitalized originally). Never a lack of free compilers in my lifetime.
This is not compiling for me starting with the "static":
class Test2 {
static main(String[] args) {
println("hello");
}
}
Too bad they don't provide a simple hello world example anywhere that is easy to find.
A 21st century issue: the irony of technologies of abundance in the hands of those still thinking in terms of scarcity.
.NET runtime is lightweight? I wouldn't count windows, xbox, and wp7 as 'multiplatform.'
Hurrah - it's been weeks since the last new programming language!
This will be used to create another pointless layer of abstraction away from the real (non-eclipse) world. At the end of every day I am do glad I don't have to touch that POS for another 18 hours. Consider this: during development eclipse loads classes directly from class files, while applications operationally load from jar files. There is no way to tell eclipse to load its classes in exactly the same was as an operational system, and no way to know for sure which classes will be loaded.
Rubbish.
http://michaelsmith.id.au
Eclipse already has about seven programming languages built into it in the form of custom xml schemas misused as procedural scripting languages.
http://michaelsmith.id.au
I purposely look for native apps on whatever OS I'm using. they're a lot faster, use a lot less ram and have fewer pointless dependencies to manage. even on modern machines the difference is noticeable.
as far as memory management and pointer misuse goes, a badly written app will consume mass quantities of ram and/or crash regardless of what it's coded in. the only thing that changes is what the error box says before losing all my data.
Except none of that is actually true. I use vs2010 and Eclipse daily. They are both slow. Vs is better in some ways and eclipse is better in others. You ideologues need to learn to use the tools instead of sitting around bitching.
The soylentnews experiment has been a dismal failure.
You forgot the link for Esperanto.
#naabhaprzrag, #sverubfr-000, #agi-fcbafberq, negvpyr[pynff*=' negvpyr-ary-'] { qvfcynl: abar !vzcbegnag; }
No, it's not. No language that requires GC for its basic functionality can be a proper C replacement.
This has been out for a while. It shipped with the last major release of Eclipse. In June.
simple answer... no. And groovy is easier to read and code.
This is my sig. There are many like it but this one is mine.
Posted my experience here:
http://longpants2.posterous.com/first-experience-with-eclipses-java-killer-xt
I want to use it, but I can't understand why it's missing this *one* important feature???
You sound a little biased there. You apparently enjoy the fact that C# development allows development on some target platforms - Windows, Xbox, etc. C# doesn't work on non-Windows machines. People have tried to make it (i.e. Mono), but you can't run many C# apps on Mono.
Just because the U.S. is a republic does not mean it is not a democracy. Democracy/republic are not mutually exclusive.
Mainframes are, indeed, a very different market. I have no idea what mainframe vendors were doing. When I used a mainframe, I used whatever language the service bureau put on the machine. (The company would occasionally contract for a special language, but that's not something I had any control over.) What this meant to me was that on mainframes I used either Fortran or, occasionally, PL/1.
Microcomputers I could control, but I had to buy my own languages. Or use basic. I probably bought 30 compilers for various different computers I owned ranging from UCSD Pascal to Lifeboat C. When Java came out with a free compiler, it was a big win. Otherwise I wouldn't even have looked at it. (This was after the company had switched to MSWind95, so I was doing my programming in MSAccessBasic or in Eiffel, because I didn't want to buy another compiler at the time. Java was considerably better than MSAccessBasic...so when I didn't need smooth connection to printing reports from a database, I switched to doing a lot of programming in Java. Linux wasn't yet ready for prime time, and GCC on MSWind was ... difficult. (I also did some things in Squeak smalltalk, but not much. Couldn't lock down the GUI and it was too slow. [Actually, you could lock down the GUI, but only by converting a version of the program into a "locked GUI" version, and you better get everything right, because it's not only the data entry people who now can't change the GUI, neither can you! So keep a backup of every released version....and adding new data makes it a separate release.])
Now it's true that microcomputer compilers were pretty cheap. The prices I paid ranged from $20 to $200, and there was no relation at all between price and quality. Support, of course, was essentially non-existent. (Hold on to the phone for up to six hours waiting for someone who can understand what you're asking to take your call... YIKE! I didn't have that kind of time. If I couldn't solve the problem it usually meant either try something else, or do it in Basic, because the company could understand that Microsoft support was terrible.)
Free compilers were a TREMENDOUS win. They let me try something without going through accounting to justify the purchase. Or, more often, paying for it myself.
These days I don't use anything BUT Linux. Then I had one machine that was recycled because nobody wanted anything that slow to run MSWind on. (This is actually a bit after 1995, but I'm not sure of the exact data. It was before 2000, because that was the one that I read the license on and decided that I couldn't agree to those terms.)
OTOH, if I remember back to 1970, IBM would LICENSE compilers to you. And not cheaply. (I checked a couple of times.) And there was some reason that UC and LBL wouldn't use the compilers that CDC made for the CDC machines. Cost is a likely reason. (OTOH, they wrote their own compilers...so maybe it was just ego.)
I think we've pushed this "anyone can grow up to be president" thing too far.
I'm not an expert myself, but I've been told that for appropriate problems Common Lisp is as fast as C. I believe the person who told me. OTOH, I don't know either what problems you are considering, or what problems they were thinking of. But it seems quite likely that it depends on what you are doing.
(I've also heard some people claim that Java is faster than C. This can only even possibly be true when there's something strange going on, possibly with cache management. And that isn't something that one can count on. In my observation Java programs are often as slow as Python programs, but this seems to have something to do with the GUI.)
I think we've pushed this "anyone can grow up to be president" thing too far.
I'm not interested in some tweaks to syntax that save a few lines I type automatically (or that Eclipse could automatically generate) in Java already. The overhead of learning a new language at all, with its typos and brainos, is bigger than any productivity or accuracy benefit it brings.
What would be useful would be a language that deterministically compiles to a runnable logic graph, and back from flowchart to text, that's as straightforward to program lexically in as Java, which we already know. And that runs on the JVM. That would be a useful new language. It should allow more multiprocessing, which hasn't been at all tapped in today's multicore CPUs with correlated parallel IO streams and structured relations selecting among many object datastructures dominating the runtime environment. New CPUs are coming bundled with FPGA, and every CPU has a parallel MAC array ASIC it can orchestrate from disk, net and memory DBs. Something really new that's dataflow, which still uses the old lexical tools, would really go bang.
The rest is like the "perfect text editor" that most programmers dream of writing, that is surely no better than emacs - or rather, than Eclipse. Not worth the effort to create, or to learn, compared with what that effort could produce using the language/editor/IDE, but writing more executable code rather than more tools that get you only a little further.
--
make install -not war
Never happened to me, on either Ubuntu or Windows 7, for many projects for several years. Usually on 2-5 year old HW, with moderate RAM.
It sounds like it's probably your fault.
--
make install -not war
People have tried to make it (i.e. Mono), but you can't run many C# apps on Mono.
You can't run any C/C++ apps made for Windows on other platforms either.
(+1, Disagree)
The problem with languages with macros is that unlike, say, Smalltalk, you generally never know when macros might apply when and so change the meaning of what you are looking at unless you understand the *entire* program...
That seems to be more a problem of encapsulation, coupling and cohesion than anything else. Seriously, if a change in a macro is such that you do not know how it will affect a system, then either this is a macro version of a god object (does too much, or does something incoherently); or there is an abstraction leakage in the macro (the macro purposes, regardless of size, is not discrete); or the macro is poorly documented and people are using it wrong because of it.
What you described is exactly the same that happens if you make a change to the implementation of a class or component or procedure where the aforementioned artifact exhibits the same problems in encapsulation, coupling and/or cohesion. Don't delude yourself into thinking that this is an innate problem unique to macro systems.
People can shit-code crap that exhibits side-effects when subjected to supposedly internal changes. You gotta know your tools, but most importantly, you got to know how to code and design software.
Had to laugh though - you're using Java mainly to write static stuff ? Why not use C then ? I mean, I'm a proper C-head (no C++ for me thank you), but I can't help but wonder: if you prefer not to use objects in an OO language, why use an OO language at all ?
Religion is what happens when nature strikes and groupthink goes wrong.
The thing I hate most about javascript is it allows the coder to decide to be lazy with semicolons. Now, on purpose, someone has decided to include parenthesis as well?! IMHO "You can write hard to debug code" is not a feature. Give me a JIT language that is identical to C/C++, Pascal, or Fortran in syntax and features not a "looks and works kinda like language" and I'll stand at attention.
optional semicolons: bummer. ...bummer.
optional parenthesis: bummer.
resembles Java's syntax: resembles the syntax that resembles C++ but not really
operator overloading: why no link? This is the only thing I thought was interesting.
compiles to readable Java code: Another compiles to language to be JIT'd by the other language's JIT... language? That just hurts.
BTW, this is opinion not flame. If you like Java, that's cool.
Having to work for a living is the root of all evil.
Xtend is the love child of Java spending the night with Python, and it looks like Python took the walk of shame.
Maybe you spent too much if it was just for hobbyist use.
IBM had classic compilers and OS they just "threw out there" (no license, just included), you can even legally download (see left menu) them today and run on Hercules emulator on your PC. In the 1980s, there were ms-dos shareware IBM mainframe OS (evolved in Z/OS) and DOS (evolved into Z/VSE)environment emulations that had COBOL and 370 assembler, I wrote and ran there on my PC-AT and uploaded to 4381 when good (and later Amdahl). I did buy Turbo Pascal and Prolog but had free/shareware FORTRAN, C, Pascal, LISP compilers too (now somewhere in a rubbermaid tub on 5.25" disk). those wares are still on the web too.
By the early 90s, I was mainly on Unix workstations, and used GCC and gas (GNU assembler). So when I did run into Java at new job, I was not surprised to have free compiler (only peeve was that were was no source code)
I completely agree with your general sentiment, but dude, gedit? Seriously? Why not vim or emacs (or both, to avoid the ridiculous flame war)?
We were on service bureaus until sometime in the mid-1970's when the company switched to CP/M. At that point, and for most of the next decade, my professional programming was closely tied into databases and report generation. (When we went into CP/M, one of the main reasons was cost cutting. I maintained a 16 CPU system that ran 16 "independent" computers on top of the same disk drive. This was so that 16 external users could call in to access the database. When we switched to Unix, it was with the same database system on an Altos 386 micro-computer. I had to rewrite the database, because a lot of things changed. Some time in there the company switched to Macintoshes...then slowly switched to MSWind95. I think to save money. I didn't pay too much attention to that, as I was maintaining the Database system, and the computer I had in my office had been a Mac for quite awhile. Eventually the company decided that everyone except graphics had to switch to MSWind. Calling my activities "hobbyist" seems to be misunderstanding things. I had a computer at home that I used and bought things for. The term I used was "professional development".
Free Java compilers was a big win both at home and at work. It must have been around 1995 (a bit after, but before 1998) that I switched my computers at home AND at work to use MSWind95. I still *have* a MSWind95 computer at home, mainly because some work that my wife did can't be moved to another system. Fortunately it's becoming obsolescent, as nothing new has been created there in the last 9-10 years. But that was when I switched her to a Mac. On the Mac I kept tighter control, and everything that was created there is exportable, if sometimes with lack of precision. (Linux music score editing only became useable by her within the last year and a half. Graphics wasn't good enough until a "fairly recent" edition of Inkscape...though when bit-maps suffice, The Gimp has been used. Animation was the key that opened that door.)
If you call this "hobbyist", then either you don't understand the situation, or you mean something drastically different with that word than I do. I would have invested *MORE* money, but I don't like spending money on things that only last a short time, and the free (libre) versions became better than the alternatives. (Not saying there aren't commercial versions that are better in certain ways, but how many will allow me to work in a non-proprietary format? Well, compilers, of course. But compilers are only one piece of the environment. For that matter, I said that on the Mac system things could be moved? This often requires saving them in a different format than the format that they are saved to work in. As a result the Mac still has lots of files that *haven't* been moved, even though they can. Changing a Finale score to a portable form, e.g., means drastically decreasing it's usability by Finale. Which includes fine details of how the score is formatted on the page.)
I think we've pushed this "anyone can grow up to be president" thing too far.
I haven't used C or C++ in the last 10 years, so I'm a bit rusty. Java has a rich ecosystem, and although I use OO in my coding, I also like to bring in Functional Programming concepts where possible. So that means favoring immutablility, and marking methods as 'static' when they don't need to rely on any state from class instances.
D is not a language that requires GC for its basic functionality. It is built into the language, yes, but it is not required and can be turned off - either in whole or in part. In other words, you can write a program that has no GC, and you can also write a program that only uses GC in some classes or even some fields of a class.
Just because the U.S. is a republic does not mean it is not a democracy. Democracy/republic are not mutually exclusive.
Really type inference does NOT improve readability, someone taking a first look at the code will have to go all the way to the method declaration to know what the(hell) type of a variable.
If you have to go all the way to somewhere else, then one shouldn't have used type inference. It DOES improve readability in small methods.
But I really didn't like their flavour of switch, the ability of falling through, although requiring some additional care, is really the core feature of the switch, I use it quite often and it's just great because it allows a simple structure to represent multiple values taking to a single block of code, I really think that was unnecessary and mostly it will just be something "cool" that no one will use.
I've always thought the Java switch was severely hampered by it's way of matching to C's switch. It only works on convertible int values (and later Enums). There's so many places where switching on Objects and using .equals() would have made more readable and natural code.
The ability to fall through is not the core feature of switch. I say this in confidence because I'm sure this feature is used in less than 1% of cases ever written. (Sorry, no citations available, but I've been around the block and I'm just sure of this)
That being said, in my opinion, case block ends should NOT default to going to the next case block as they do in C/Java, although it would be nice to have the OPTION of doing so - and in either situation, the programmer must be explicit on what they intend (so you must ALWAYS have a break or a continue at the end of the case block). For example,
switch (value) { // compiler error, there is no break or continue case
case 0: print("zero"); break;
case 1: case 2: print("12"); continue case;
case 3: print("3");
case 4: print("4"); break;
}
Just because the U.S. is a republic does not mean it is not a democracy. Democracy/republic are not mutually exclusive.
Fascinating stuff! you just made me look up whether GNU/Linux softwares do musicxml, seems some do. Of course, my music composition tools for the 1970s to 1990s was a pencil, eraser and staff-ruled paper. but maybe now that I'm teaching my children we could try some free softwares to make the music lessons more interesting
Just because a language has a feature doesn't mean it should always be used. By your argument, Java shouldn't even have static methods/fields because it's an OO language.
Just because the U.S. is a republic does not mean it is not a democracy. Democracy/republic are not mutually exclusive.
Seriously, this smells so much of Scala it isn't even funny. I'm all for another great language on the JVM, but how is this different from Scala? A lot of the concepts are the same, and the syntax is likewise quite similar. Combine this with other Scala knock-offs like what JetBrains was doing and it's just sad.
People keep talking about how Oracle is killing Java, yet this NIH (Not Invented Here) syndrome that's plaguing the non-Java world is just as bad if not worse. Let's rally behind Scala, fix it up as you see fit, and get some great tooling behind it. That seems to be the biggest issue with Scala to date. IntelliJ is nice, but I like Eclipse, and that just sucks even with the recent push.
Who is John Galt?
Java? Fast? Yes. In comparsion with a decent Smalltalk VM? No. Lisp (scheme dialects included) wiped the foor with them.
I know tobacco is bad for you, so I smoke weed with crack.
Checkout Muse or MuseScore. (I think they're two names for the same program.)
Be warned that not all musicxml used by programs is compatible. I think this is bugs, but it was a problem the last time I tried to use it. And because of lack of features (and because I'm not a musician) I've decided that the next time I'm bounced in that direction I'll try going straight to lillypond. It lets me control the size of the note head and where the score line breaks. (Some score editing programs do one, some the other. I haven't found a Linux program that will let me do both.) I'm thinking of entering the basic score in Nted and then exporting the lillypond text which I'll then edit. But I may just just MuseScore. (N.B.: Several programs claim to import or export musicxml, but test each one, and then test the ones you want to use in combination. The last time I tried, I kept having problems with one program refusing to import the musicxml created by another. Then again, this was over a year ago, and just about everybody's rev'ed their versions since then.
I think we've pushed this "anyone can grow up to be president" thing too far.