Java Is So 90s
An anonymous reader writes "Some of you may recall last year's Java vs. LAMP Slashdot
flamewar. The fight has now "brewed" (couldn't resist) into the mainstream press at
BusinessWeek." From the article: "Yared says developers far and wide are creating a new generation of Internet-based applications with LAMP and related technologies rather than with Java. Can it possibly be that Java -- once the hippest of hip software -- has become a legacy technology, as old and out of style as IBM's (IBM) mainframe computers and SAP's corporate applications? Mounting evidence points to yes. Reports by Evans Data Corp., which does annual surveys of the activities of software developers, show Java use is slipping as LAMP and Microsoft's .NET technology gain traction."
The second sentence from the original article posted on /. Started as: "Not to start another PHP vs. Java flame war..."
And now begins the second flame war started by said article.
Gentlemen and nerds, prepare your flamethrowers and ectopacks (respectively)...
Begin!
When will I see a constructive article comparing and contrasting the two and inviting a civil conversation and an acknowledgement that there are fans on both sides?
Come on, it's not like this is a religious argument or (possibly worse) a Star Wars vrs. Star Trek argument.
My work here is dung.
...they mean Linux Apache Middleware PostgreSQL.
And when they say middleware, they mean Ruby!
The Army reading list
Here's my take. For most web sites, use PHP. If you need enterprise level stuff, use Java but don't let anyone tell you that PHP is not scalable, that is simply not true. Don't go to .NET - nothing you can really get on .NET then you can't get with Java. Enough said. Flame On.
Bradley Holt
Do a job search right now. Count the number of Java developer positions needed.
.NET never really lived up to the hype and is slowly dying away.
Now search for PHP
Then Perl
Then Python.
Now take out about 70% of the Perl and 40% of the Python jobs, as it is most likely to be used as part of admin scripting, not web applications.
Last time I checked,
What I have noticed about the Java world, though, is that most companies are shying away from Websphere, Weblogic and other expensive application servers and switching to Tomcat and JBoss. Most APIs in use are the freely available ones (Struts, JSF, Facelets, Spring, Hibernate, etc...). So companies are finding its easier to go a cheap route with Java than to try and move to the LAMP way of doing things.
Good quote, too many chars. Seriously, the slashdot 120 char limit sucks!
Oh, please.
Java is still in incredibly heavy use in larger-scale systems and internal applications. It doesn't need to be "hip", "trendy", or "LAMP". It just needs to do a job, do it well, and be maintainable. It does that (and more), has still proven fairly easy to scale from small projects to very large, and is still a decent (though not terrific) language.
It also plays well with many other solutions, by virtue of numerous scripting languages which target Java bytecodes, as well as native code integration if you simply cannot get by without some piece of C code (although, there goes easy portability - one of the major benefits).
These articles are just a joke. That they would even use the term "hip" shows that this is far from a serious study.
It's a strange world -- let's keep it that way
Can someone explain to me how .NET is so fundamentally different from Java that it could escape Java's fate?
.NET (C# really) just a Java rip-off?
.NET more attractive?
Isn't
I mean really, not long after MS dropped Java, C# "popped up"
It's clear that C# is only a repackaging of Java, why should its fate be any different?
What makes
I don't know the meaning of the word 'don't' - J
The big issue here is speed of development and ease of use. Java is a bitch to learn, it requires a compiler, and it has a syntax that's byzantine as hell. Compare that to an interpreted language like Python or Ruby that has a very spare syntax, is interpreted, and are quite easy to learn.
That isn't to say that Java doesn't have its place, just as an IBM mainframe has its place, but the vast majority of tasks don't require a mainframe. For doing something like simple text process, Java's syntax just gets in the way - why build a massive application in Java when you can bang out a much simpler and easier system in Perl, Python, PHP, or Ruby?
Look at Ruby on Rails - the idea that you can create a simple but powerful framework that does an excellent job of getting out of your way is nothing short of revolutionary. Struts provides many of the same benefits, but has nowhere near the elegance of Ruby and nowhere near the simplicity.
It's all about the KISS principle, and syntactically and practically Java is just too complex - it's like trying to dust a room with a jackhammer.
J2EE is a subset of Java, not the whole thing. Any conclusions drawn about J2EE's problems are not problems which spread to J2SE or J2ME. I work in J2SE every day, I think J2EE is overly complex with very little payoff, so I use other solutions where it would be.
J2EE is dying, long live Java
You haven't checked jakarta.apache.org lately, have you? One of the most active open-source communities out there! Perhaps actual applications using Java aren't as prolific, but the building blocks for them are very much out there, widely used, and actively worked on.
It's a strange world -- let's keep it that way
I do think that Java is an outdated language that always seemed unfriendly to users and caused a lot of extra cost/headache to my customers when every software company we supported seemed to attempt to create a Java app to access their software engines.
.NET program can see the applications run quite fast.
How can you call it an "outdated" language? what is an outdated language? Ada is an outdated language, BASIC may be another.
I like Java (as a language) a lot, I have used it for enterprise level applications (supply chain management software) and currently I am using it to make market based simulations.
The wrong thing about Java is the Virtual machine implementation. You can blame Sun for that. If Java is slow, grabs lots of memory and all that it is because of the virtual machine, not because of the language. A language is just a BNF diagram specification which describes the syntax of the program, and all of its reserved words.
What Java needs is a better (less memory and faster) implementation of the libraries it has and the virtual machine to run the programs. As an example, almost everyone who has used C# or any other
Ubuntu is an African word meaning 'I can't configure Debian'
Here's a tip. Programming languages and platforms aren't sexy. They are tools. Use .NET if that's the tool that best fits what you need to do, or what your employer requires. Or use Java. Or use COBOL, if that's what fits. Under no circumstances should one use the above standard, which is about on the same level as some twelve year old girl deciding whose pictures are going to adorn her wall.
The world's burning. Moped Jesus spotted on I50. Details at 11.
What I don't get is why it's always characterized as "LAMP vs. Java". To be correct it should either be "Perl/PHP/Python vs. Java" or "LAMP vs. LAMJ", because many Java systems are already built around Linux, Apache and MySQL.
Eric
Invisible Fence Guide
The fight has now "brewed" (couldn't resist) into the mainstream press at BusinessWeek.
The author means "percolated," right? "Brewed into the mainstream press" makes absolutely no sense.
Then why is it that Java is the most used language on Sourceforge, an open source development site?
Java pulled a ton of fast ones around "standardization", plenty of ugly playing from Sun there. I remember loving how they submitted themselves as the independent custodian of the standard, which didn't fly.
.net go. Liked the lanuage, think the delivery was confused as Microsoft was putting it out there. People didn't seem really comfortable trying to run with it safely.
That said, when I was looking around for a nice messaging product, a bunch of java products popped up, but nothing on the LAMP stack looked that good. I'm thinking of things like ActiveMQ here. Or workflow applications
Ironically, for some things Java is also now very performant, while new hot things like Ruby on Rails still suffer a bit. How times have changed, and inevitably Ruby on Rails will get is act (and garbage collector) together performance wise as well.
I'm just curious to see where C# and
Perl significantly so, as it is from 1987 compared to Pyhton from 1990 and Java from 1991. Perl was probably the first significant "web application" programming language, so hearing it mentioned as a new breed of languages is kind of weird.
Perl was always a programmers tool, and never had the mainstream hype that surrounded Java from the start, so I kind understand why a journalist could get it mixed up.
I have to agree. Whenever I used to propose that C may be the best solution for a programming task, I would hear "But isn't C out of date?" from a host of "Hooray for Java and XML!" types. When I explained that different languages have different strengths and weaknesses they didn't seem to get it. They were all convinced some new "bleeding edge" technology would come along and solve every problem. It was like watching them eat soup with a fork, trying to explain a spoon to them, and getting the reply "Sure, THIS fork is bad, but wait for the NEXT fork! It will work just fine for soup!"
Wow, that was the most disjointed thing I have posted yet! I was about to delete it, but it is so confusing, I just can't. Enjoy.
Boys from the City. Not yet caught by the Whirlwind of Progress. Feed soda pop to the thirsty pigs.
not by a long shot.
My clients are very large financial instituions and I don't know one of them who is reducing mainframe capacity. In fact, almost all of them are increasing capacity.
Most managers find it troubling that their mainframe-centric data centers continue to be well managed, predictable facilities while their Open Systems (UNIX, Wintel, Linux) data centers are a mess. Horribly erratic power and space consumption and many other woes that make management and planning a nightmare. Blade servers have not solved these problems - in fact, they have intensified them (powering and cooling 1000+ W/sq' is much more difficult than 50-100 W/sq').
While style is subjective, age is not. There's nothing old about the new systems IBM recently announced. Also, if being in style leads to huge cost overruns or getting fired, many of might choose to be a little less stylish.
I'm a Python guy, and I think the advantages of Python, Ruby, and (do people still program in?) Perl, and (cough) PHP, are clear.
That said: I envy the Java guys their component research.
If you want to do anything really cool with components, you pretty much have to use Java. It's not because it's a better language. (It's not.) It's not because it's elegant. (It's not.) It's just because Java is where the people are. That's where just about all the component people are.
Java is hideous, Java is complicated, Java is large, Java is unwieldly, and there's nothing more unpleasant than waiting for a Java app to load. Than waiting for Eclipse to load. (shudder.) But you can't beat their components research.
Just about every single component project I know of, is just copying technique from the Java people. And usually far behind.
(off-mic:) Isn't Perl a fable, these days?
Pick a language based on what is "hip". Actually, any technology - it doesn't have to just be a language.
(Digression: "hip"? Who says "hip" any more? It's so 1960s...)
LISP? ;)
> > Languages don't cause bad programs to be written --
> > bad programmers do!
>
> Nonsense. Languages can be specifcally designed to
> encourage and assist programmers in achieving
> different outcomes. PHP - being poorly designed -
> encourages poor practices and certainly does not
> enforce or even encourage secure code. Hence why
> it is an absolute disaster in practice.
I don't think it's really fair to claim that a language which is designed for those who are more familar with strings.h to be the cause of faulty, or buggy pages. The fault is that of the programmers for not doing their home work.
That said, there are some improvements in later versions. This whole article is comparing one type of programming language with a totally different type and thus partly an unfair question as it will slant towards the more popular language paradigm rather than discussing the merits of either.
Why UNIX?
Ahem...
It should be truly wonderful, as-long-as-all-your-customers-use-the-same-version -of-the-VM-on-the-same-OS-unless-you-are-insane-en ough-to-figure-out-how-a-lot-of-different-virtual- machines-crap-out-on-your-code cross-platform
I like Java, but it's only cross platform in theory. You have to have good architecture to make it behave properly cross platform. Sure, it's easier than doing cross-platform in C/C++, but the customer doesn't care that its the VM's fault.
I feel java is one of the more flexible languages that i've worked in.
Swing components are plenty flexible. It's not hard to add checkboxes to trees, have spanning columns in tables etc...
Where do you feel java lacks flexibility?
The only thing i feel is that it's not ideal for quick and dirty tasks. I write little perl scripts all the time to accomplish one of tasks that would take 5x the time in java. But for real software development that's more or less a non-issue.
I think being hip and trendy hurt Java more than it helped. People tried to use java where it wasn't appropiate. Java applets for web buttons that could be done in CSS really hurt it a lot (I can't even tell you how many websites were doing that at one point). The Java buzz is cooling off finally. It's finding its place. Java is nestled in the ranks of C and C++. You'd probably use Java in the same places you might consider C or C++. That doesn't mean Java is going away. It means people are getting their acts together and seeing Java for what it is. Not as a way to make cute navigation buttons. But as a way to make serious applications such as Sphinx4.
If an officer ever threatens to taze you, say you have a pacemaker.
I teach AP Comp Sci and have been programming in Java, perl, PHP, and others for years. Even did my penance with VB!! I love java and hate java. here's why:
love:
object serialization
sockets
everything is an object
i/o
syntax
ability to pass objects and arrays as data types
consistency
threading
hate:
verbosity!!!
dogmatic approach -> there is one way to do anything
swing
overall, i'd say for alot of things, java is powerful enough and useful enough to do most programming projects. without starting a linux flamewar, i see java like linux on the desktop in some ways. it does 98% of what 98% of people need. however, there is no substitute for the remaining 2%. java's security model is limiting as is it's speed. i teach economics as well, and like in econ, there is a trade-off to everything. java trades speed and security for portability and simplicity.
it tried to be everything to everyone. reminds me of the old SNL bit about a desert topping and a floor wax.
however, as c/c++ brings enormous problems and difficulty which java solves, python has OO design and clarity and speed of development like java, yet is far more extendable. (think UI's)
had python the corporate backing of java it'd be more prevalent, which I'd like to see that happen in the near future, especially with the AP test. but, any language still boils down to the best tool for the job. and for many things, java is really good.
My problem? I was perfectly gruntled, until some numbnuts came by and dissed me.
After C/C++, Java ended a long nightmare of preprocessor abuse, ridiculous "APIs" (collections of warring header files with no-vowels function names that were never the same from computer to computer), especially GUI APIs (never failed to amaze me how someone could call Swing "stupid" and then go back to coding Win32 or Motif... Apple guys I can forgive :)... And then there was all the fun of the endless futility of "expecting" programmers to always get their own memory management right. That one really burns me.
;)
C/C++ never took the rap for billions upon billions of dollars in lost productivity because of all the bizarre failure modes of memory allocation failures (hey, there's garbage on the screen... or, hey... it's Tuesday, the full moon is out and the app segfaulted again... coincidence?) or having some clever sixteen year old shove 80k up your 256 byte buffer. You can't tell me wrestling with the garbage collector isn't an improvement on this, because it's ridiculous.
Java of course is within spitting distance of C++ already in one or two benchmarks, but in reality nobody cared either way because you got things in trade that made it a good deal even when it was still quite slow. Not sure what "consistency of the output code" means, but...
You got it right about LAMP. The problems were often that the higher level systems (well, PHP anyway) were great for making websites, but didn't enforce enough rules to be a good idea for projects above a certain size. Still and all, a great many companies in the 90's said "OK, we need 8-way oracle boxes with hot swap CPUs and a 50 disk RAID and Oracle and Weblogic, and... now, what are we going to build exactly?" Most of these places could and should have just used PHP on a few pentiums and saved themselves time and money and headaches. On the other hand, I saw plenty of places coast on a slick of Perl and human blood well past the point where they needed real "enterprise" (hate that word) software development.
It seems like Java was only ever a victim of its own success. No one ever wrote a shitty applet or misused the VM in some way, where the whole language didn't get blamed as a result. Basically, it's another tool in the toolbox, and though it drives C/C++ guys to conniptions, it's the right choice to replace many applications programming tasks right now. Not that I wouldn't throw a party to meet its succeesor.
Unlike many big languages past, Java is probably never going away. No one seems to have realized it yet, but as the VM-first-mover it's the ultimate langauge standard. I bet you people will be porting the Java VM long after we're dead.
Tired of Political Trolls? Opt Out!
I can't take this seriously after Java has recently taken over from C++ as the most popular language on sourceforge:
http://www.osnews.com/story.php?news_id=12778
Java is a popular and versatile language. Software development involves far more than the very restricted aspects covered by LAMP.
Is this good engineering? Too many of the newbs out of school
have one language under their belt, so everything is solved using it,
even when it shouldn't be. Just my 2 cents
-- Programming with boost is like building a house with lego. It's a cool but I wouldn't want to live in it
It's funny. Every time there's an article about Java, someone posts a comment like this, and every time I respond by pointing out that at my company, we build enterprise scale Java applications - usually developing on Windows, and then moving (in the test/live environments) to HP/UX or Solaris, and not beginning to do some on Linux. In the 4 years I've been involved in these projects, we've had a grand total of 1 bug that related to different JVMs.
Doesn't prove that incompatibility doesn't happen, but does demonstate that cross-platform is entirely possible.
I, for one, developed quite a bit for linux-apache-mysql-java. Right now, I'm developing for linux-apache-jboss-mysql-java. What is it with people not being able to compare apples to apples? Java is a language first and foremost. Secondly, it's a set of frameworks, starting from EJBS (IMO, an abomination) to things like Hibernate, to Struts, to whatever else. Comparing these things simply makes no sense.
Yes, Java can equal C++ in terms of performance, if you ignore JIT startup lag, ignore the bloated memory footprint, and ignore the insanem performance losses when the garbage collector kicks in.
Other than that, in a bubble of pre-JIT'd code with only a single data point, Java Rules.
If you need web hosting, you could do worse than here
Yes, Java can equal C++ in terms of performance, if you ignore JIT startup lag, ignore the bloated memory footprint, and ignore the insanem performance losses when the garbage collector kicks in.
No.
There is no JIT startup lag in modern VMs - the JIT is not called at startup - it is a background thread.
There is no bloated memory footprint. Java applications (as in J2ME) can run in only a few hundred kilobytes. The simplest standard Java apps can run in only a few MB, which on machines with 256MB or greater is totally insignificant. Server-side apps can securely share the same VM, so can take up even less memory.
There are no performance losses when the garbage collector kicks in on modern VMs, as the garbage collection can run in the background. As proof of this, Java can now be used for real-time applications (such as in aeronautics) where any garbage-collection delay would be disastrous.
Other than that, you are correct.
Absolutely! The Java apps we have (over 100 thousand lines, so not small), have been deployed on customer equipment running on Windows, Mac, Netware, Solaris and AIX. Other than some bad coding on our part relating to file paths the only problems we've had is look & feel issues where the screen didn't look or work right on some environments. Yes, running on many platforms does require a great deal more testing (our QA department has machines piled on machines) so the write-once-test-everywhere statement is true. But if the choice is to expect a customer to buy a new machine to use your software or let your software run on their existing machines, the price is well justified by the sales.
Reporters always make something out to be the end of the world or something drastic.
...or X is still around even though we wrote it off.
.NET. Whatever. I don't need to relearn logic everytime the technology changes, so just tell me what language we are using.
Gets eyeballs on stories. It's either Java dominates everything or Java does nothing. While the truth lies somewhere between those two extremes. But the truth in these type of stories makes for horrible reporting.
You'll also find that stories follow the following pattern: X is doing great, X stumbles/fails, X returns to glory
Next year they'll have an article about how Java is still being used all over the place.
Java can co-exist with other technologies. I programmed in Java. I program currently in
Except for ending slavery, the Nazis, communism, & securing American independence, war has never solved anything.
This is just stupid. People are wasting their energy arguing over completely different technologies designed for different purposes, with different strengths and weaknesses. If you think any one toolset is the right solution for every problem, you don't know enough about the all the options to have a valid opinion.
I've used most of the technologies people have mentioned here, some extensively. None of them are clearly all-around better than the others in all ways, and the statistics concerning toolset use are meaningless because technical merits are rarely the deciding factor in what tools or libraries a particular project ends up using. It's usually either the project team deciding to use what they're comfortable with (i.e. the I've-got-a-hammer-so-this-project-must-be-a-nail approach), or imposed top-down by management who were sold on the merits of one solution by a salesperson/article/more technically-savvy friend, etc.
Hell, the closest thing to an all-around great-for-most-anything tool for building web application was NeXT's old Objective-C based WebObjects which, despite the fact that Apple let it die a painful death, was years ahead of anything else on the market, and even now after not being developed or supported for several years, is still ahead of many solutions in some respects. But I'm not about to recommend to one of my clients that they should use it, even though I might think it's technically a better solution than something else. These decisions, even when made intelligently (which is rarely), are not, and should not be, made in a vacuum.
A background thread doesn't help you the first time you access the application. It still has to JIT before the code can execute.
No, this is not true. What happens is that the code starts up as interpreted so that the program can proceed without any JIT at all. Then, in the background, the performance profiling starts and time-critical sections of the code are translated. This is the way that the Hotspot optimiser works on modern VMs, and it is very effective in reducing start-up times.
These discussions always get me.
On one side you have a bunch of people who have never seen the kind of problems java solves so well.
These people for some reason think it's a horrible thing and must die. This has never made sense to me. I dislike a lot of crap that fits other people's needs and I don't really feel the need to rant against them at every opportunity. What kind of inadequacy drives this crap?
On the other side, you have a bunch of people who need it as is to get their daily jobs done. They are scratching their heads trying to understand why there is even a discussion going on.
If you are on a project with one developer and it's a web project, Java probably isn't for you. In fact, if you are on ANY project where you are the sole developer, don't bother unless you just like Java's syntax or you have worked in groups before and prefer the consistency and clear code that Java offers.
If you are writing a tiny app meant to run on a PC, dump java and write it in C/C++. The VM issues are kind of annoying that.
If you are writing a large client/server app, creating your own protocols, working with a group of 5-50 people, interested in long-term reusable clean code AND willing to spend the extra design time required to make such code, you might consider Java.
Honestly, I think most of the people complaining are trying to use "Java" to write some web app on their home computer and wondering why it's so hard. Like "Why does driving a backhoe have to be so much harder than riding my bicycle?!?!?" This is really for the hard jobs! If you don't have a hard job, if you are making a web app or something, Use your bicycle. PHP works fine.
Java makes a lot of the traditionally difficult issues much simpler, but these little apps typically don't even HAVE difficult issues, so yeah, Java may be a little cumbersome for them. Why did they even choose it in the first place.
My job became immensely easier and more fun by switching from C++ to Java. If you hate java, it may not be the tool for you! Backhoes are not great for tours around the lake, learn C++, VB, PHP, or whatever gets you off and enjoy. Just don't put down that funky looking, fuel guzzling backhoe unless you've tried digging a hole for a pool with your bicycle!
LAMP may "take over", which would be a shame because it looks like what PERL would be if it was a web language.
Like candy, it is fast and easy. Like candy, if you use it for your meals it will make you fat and rot your teeth.
LAMP looks a quick and dirty approach for sites, that is easy enough to use to be seductive which will lead to a huge base of hard to maintain code the way PERL did.
I hate the articles that proclaim one technology dead because another supplants ONE USAGE of that technology. Web frameworks for Java are cumbersome and a pain in the ass. However, Java is really good for things and can work nicely side-by-side with AJAX, Flash, PHP or whatever other front-end technology you want to use.
The fact is, programming a stateful, multithreaded application on Java is extremely easy, and in certain circumstances, a stateful application with multithreaded capabilities comes in very handy. I'm thinking things like artificial intelligence applications, messaging, delayed database writes, etc.
I have programmed sites that are PHP, with a Java multithreaded application used to handle certain transactions or self-organization of graph structures.
I thought this whole Web 2.0 thing was about open interoperability?
I've never seen any serious developper that could tell me he was able to make Java code flawlessly run on every plateform.
Quite a straw man there. Very few real "developpers" will claim to make *anything* run "flawlessly" on even one "plateform". Come back and share your opinion once you're able to write a "flawless" English sentence.
With a parochial attitude, it's easy to introduce an unintended platform dependency. But with a little care about platform issues (especially where access the filesystem is concerned), Java runs smoothly across OSX/Windows/Linux/Solaris/OS400/Mainframes.
-=Maggie Leber=-
Most programmers are NOT 'good'.
Eclipse! Amazing IDE! Handles refactorings, remote revision control, builds & deployment, Javadoc tooltips and it 'knows' Java well. You'll never get compile-time errors and very few run-time errors.
You think eclipse is good? You should try IntelliJ IDEA. It is what Eclipse tries to be.
So they will be able to do some of the work after the web service has responded to the client. This is a benefit for single threaded hardware.
Wtf. Can you name a piece of "single threaded hardware" that provides "web services" (I assume you're talking about SOAP and the ilk?).
Whenever I start solving a problem in Java, as its complexity increases, I can tackle this yb developing objects/components/frameworks/libraries to abstract a lot of the complexity away -- effectively creating a new "language" (my APIs) with which to solve the problem in. Java lends itself well to this sort of OOP solution development.
When I used to do simple JavaScripts, or simple ASP pages, or simple Perl scripts, a lot of my solutions also started very simple. Many of these languages did not lend themselves well to objects, so you end up creating a lot of functions and passing data around and doing strange things with the standar data types -- but they also offered a richer syntax which allowed you to more easily accomplish these things without needing to hide anything. Still, I would eventually reach the point where I wanted to start wrapping things up more (JavaScript, now ECMAScript, supports Objects, Perl added OO support, etc.).
My point is that these "LAMP" languages make it very easy to write not-too-complex programs rapidly. However, my personal feeling is that once you start to make that more and more complex, the problems become easier to manage in bite-size chunks with OOP concepts like encapsulation. Since Java naturally urges you to start out OO, evolving the OO is simple. BUt to start with a non-OO programa nd evolve it to OO can be... trying.
"joys of Perl".... that makes me shudder. I learned how to program with Perl. Took me forever to unlearn the "Perl" way and start programming the "right" way. ;)
The Perl Way is to let you do what you want. That you chose to code poorly (or didn't know any better) isn't a reflection on Perl, unless you believe Perl should have forced you to program a certain way.
Larry Wall is a linguist and he wrote Perl.
Linguist Larry Wall wrote Perl.
Larry Wall, a linguist, wrote Perl.
A linguist wrote Perl; his name is Larry Wall.
My God, it's Full of Source!
OUTSIDE_IP=$(dig +short my.ip @outsideip.net)