6 Languages You Wish the Boss Let You Use
Esther Schindler writes "Several weeks ago, Lynn Greiner's article on the state of the scripting universe was slashdotted. Several people raised their eyebrows at the (to them) obvious omissions, since the article only covered PHP, Perl, Python, Ruby, Tcl and JavaScript. As I wrote at the time, Lynn chose those languages because hers was a follow-up to an article from three years back. However, it was a fair point. While CIO has covered several in depth, those five dynamic languages are not the only ones developers use. In 6 Scripting Languages Your Developers Wish You'd Let Them Use, CIO looks at several (including Groovy, Scala, Lua, F#, Clojure and Boo) which deserve more attention for business software development, even if your shop is dedicated to Java or .NET. Each language gets a formal definition and then a quote or two from a developer who explains why it inspires passion."
Your programming skills should not be tied to the language you use.
---
ECHELON is a government program to find words like bomb, jihad, plutonium, assassinate, and anarchy.
Oh, you meant programming. Well, fuck it. =P
Right on! A good programmer will learn any programming language in a fortnight. But sadly average programers don't.
yIDoghQo'
Smivs on the intertubes!
Klingon, Swedish Chef, Elvish (can't pronounce Dwarvish), Pirate, Porn Star Dialogue, and Latin.
"As God is my witness, I thought turkeys could fly." A. Carlson
donotwant developers programming
Sounds like the corporate policies I've gotten used to.
scsh and BeanShell are both scripting languages that are pretty cool, the first uses Scheme and the second uses Java.
Be smooth, mother your forehead?
Smivs on the intertubes!
I remember when ADA was going to be the next big thing. Then it was SmallTalk. I actually used Modual-2 back in the day. C? was never going to take off. It was too big and slow for micro computers and not high level enough for minicomputers. The only people that would ever really find use for it where those few people that used Unix.
Before that it was PL-1 and Simula. I left out the fourth generation languages that where going to let everybody write their own programs. Oh and programing by making flow charts... Or was it Hypercard that was the future...
Well you get the idea. Most where really good programing languages but there seems to be a limited number of languages that reach critical mass. I remember Comal which was a great little language on the old 8 bit machines but it only became popular in Europe.
Oh well we will see what happens this time.
See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
Say you like creating programs and not maintaining them (e.g. doing boring minor "enhancements"), so you want to create a program, and then outsource the support to India (for example), so that you can go on with creating other programs.
How do you do that in LISP?
I don't like Java, but seems all these "outsource" programmers love it. So it makes some sense to write the program in English, and get the programmers to "compile it" to Java, C# or some other buzzword compliant language of the day.
I think the term "scripting language" has drifted so far from it's original meaning (whatever that was) that it is now an entirely new term. Best I can gather, for some time now the term has been used to indicate a new language that the writer believes, either consciously or subconsciously, is inferior to their own language of choice.
Lots of reason it could be inferior; it's just some hackers toy project, nobody uses it, it has weird syntax, whitespace is significant, or the reference implementation doesn't have a separate "compilation" step.
Basically, the people using these scripting languages (most of whom think of them as real languages) are off getting work done and having fun, which makes the people who don't use them jealous.
That's my theory, anyway.
p.s. scala positively rocks and is ready for prime-time while clojure looks promising if you're into that sort of thing!
OK. With you now.
Smivs on the intertubes!
Your programming skills should not be tied to the language you use.
A more important skill is recognizing what languages, platforms, etc. to avoid, and convincing your manager that whatever he has read about the "Silver Bullet" stuff is incorrect.
So, it is not a questions of what your programming skill are, I assume that any good programmer will get the job done in a reasonable amount of time, regardless of the language. Provided, that the language is suited to the task!
So it is not just a question of: PHP, Perl, Python ... and anything else that starts with "P".
How about SNOBOL, JCL, FORTRAN, COBOL, Pascal (oh, erase that, it starts with "P")?
A "no Perl" strategy is asinine. As is also "no COBOL."
It all depends one what you need to produce. And what rat-tail the code has.
Schroedinger's Brexit: The UK is both in and out of the EU at the same time!
If you can't write it in a .BAT file, it can't be done.
damn programing languages, I was hoping for l337
-Ours is the wisdom of Solomon, the magic of Merlyn, the fall of Icaris.
HAI //outputs 1-10
CAN HAS STDIO?
I HAS A VAR
IM IN YR LOOP
UP VAR!!1
IZ VAR BIGGER THAN 10? KTHX
VISIBLE VAR
IM OUTTA YR LOOP
KTHXBYE
Yeah, and apparently you have to stop using .NET to use F#... even though, you know, it's a .net language. Summary and article are both jacked.
You are using English. Please learn the difference between loose and lose; they're, there, and their; your and you're.
English, instead of Buzzwordish.
Yeah but with Scala you get all of that plus you get one big thing that Groovy lacks, performance.
I used to be the enemy of strong typing and did all of my development in obj-c and python. Then I discovered that there are languages with much more powerful and easy to use type systems than C++/Java. Now I have seen the light!
"Six Languages You Wish The Yo-Yo Who Got Fired Before You Had Never Used"?
We could start with "Incomprehensible" and "I'm Just Learning This" and go on from there.
Subject speaks for itself.
Furthermore, I wish my job was to sit around all day and learn only new stuff each day../
I used to have that job, writing for a magazine. I was really excited about it at first, but I quickly realized that to write intelligently about a technology you have to get to know it by using it in the real world, which simply takes time. I found that I simply couldn't get to know some new piece of hardware of software well enough to write anything decent about it before my article deadlines, and I felt I was getting dumber every day. So I went back into the programming and sysadmin world and now I feel like I know what I'm doing again (at least with the technologies I use regularly).
I think Lynn Greiner may be in the same boat. She asks:
CIO.com: What effect has the growing prevalence of Ajax had on the adoption of the various languages? Are people adapting the techniques to languages other than JavaScript?
The question doesn't really make sense. If you know what Ajax is, you know it's specific to the web browser/web server model. It solves the problem of the web server not knowing the full state of the browser. Rather than having the server regenerate an entire page and try to preserve client-side changes to that page, Ajax is simply a standard to let the browser get data from the server without reloading the entire page. Maybe it sort of makes sense if you use a client/server model with some other language (like tcl/tk), but then you have access to TCP/IP libraries and the command line. Ajax is only necessary because browsers can't just let a client open arbitrary TCP streams and run arbitrary commands. If it could, there would be a million different ways to do the same thing easily (think wget | grep | cut | sed | ...).
The people she interviewed seemed to agree with me:
Boyd:... The techniques of Ajax are really only applicable inside the browser.
Dice: Ajax is entirely a JavaScript phenomenon
Holden: Since Ajax is simply asynchronous network calls, it is not affecting the adoption of any specific language beyond more JavaScript usage in webpages.
Lam: Ajax is popular because browsers are popular. JavaScript's popularity is directly tied to the fact that it's deployed on virtually all browsers today.
Pall: Ajax is a very specific technology that allows webpages to rise above mediocre user-interfaces and become true applications using JavaScript.
I think Lam's comments are the most interesting. JavaScript isn't a horrible language, and it should get credit for helping people realize that useful things could be done in interpreted languages, but aren't we all really itching for a better language on the browser. Too bad the W3C moves at a sails pace and Microsoft and Mozilla disagree on things simply to disagree with each other half the time.
Your programming skills should not be tied to the language you use.
Sure, and good driving skills should not be tied to the car you drive, but I suspect you'd probably prefer driving a Porsche over a Reliant Robin.
I think the problem is "you can only use..." and not what the tool is.
Scala is a statically typed language with support for functional programming with anonymous functions and closures as well as type inference. It is not, however a dynamic language like Groovy. Nor did the designers ever intend it to be.
Well it's not so much that AJAX is a web only thing, it's just that outside the restrictions of the browser's Javascript environment, i.e. in any general purpose programming language with networking libraries, it's just nothing special... just another use of networking. It's special in the web world because anything requiring that you make a request was just impossible until the ability to do so was added to the main browsers' Javascript APIs, and because the application is narrowly defined to showing HTML pages.
Tcl -- haven't needed
Be thankful; having had to support a financial application written entirely in Tcl (yeah, don't ask) I am grateful I will never have to touch a line of Tcl code again. It was awesome getting paged when code that had been in production for two years would error out with a syntax error (not preprocessed, and obviously someone didn't test it thoroughly). I still have bald patches on my arms from that job.
I Am My Own Worst Enemy
Is that it's not like other languages, you still write Java with dynamic typing.
Clojure is also dynamically typed, and it's a lot faster than Groovy.
'cause then I could be a developer again...
Fifty watts per channel, baby cakes.
Boo is 0.8.2 - If you wish your boss would let you use this, you're fired.
I once created an in-house fork of Boo for file processing. It worked reasonably well as a stopgap solution, and I wasn't fired at the end of it.
I could understand a more generic Functional Lang like Hask,OCaml,Erlang but F#?
Haskell, OCaml and Erlang don't have access to the .NET libraries. F# does, so you get the benefits of a statically typed functional language with the extensive .NET APIs.
Groovy - JVM Java scripting for when Java is too hard for you? Wow. You're fired.
Groovy is a superset of Java functionality, not a subset. You can do everything in Groovy that you can in Java, but there are a lot of things in Groovy that Java lacks, most notably closures.
So if anything, I'd contend that Groovy is harder to learn than Java.
Clojure - Functional syntax on the JVM. Why would I use this and for what when there's no support?
The mailing list is quite active, so I assume you're talking about a paid support contract or something? Can you even get that kind of support with, say, Scala or Ruby? Would you even want to?
Lua... Chances your developer wants to use it inappropriately = 99%
Uh, hire better developers?
I mean, really, if you're working with morons, then sure, you might not want them to use a language they can screw things up too badly in. But it's probably better to just hire competent programmers in the first place.
Python is strongly-typed. Do you mean dynamic typing?
Intercal!
I wasn't sure what I was getting into when I had asked a programmer to replace our crummy Jython interface with Groovy. Ten minutes after I had asked him to do it he says he's done. He shows me a clean interface complete with the functionality for saving files, copying and pasting, search and replace, and a handy output section. I had even asked him to integrate it with the rest of our program, but a simple 'import com.ourcompany.ourproduct.package' in the groovy console already had that solved. Now development has sped up slightly as we even do some development in the groovy console so that small tweaks and changes don't mean we have to wait for a re-compile.
I am one boss who welcomes groovy.
How could they forget URBI? It's LUA for robots, people!
These seem to be the languages you wish your boss let you use if you're a corporate guy who's already in a shotgun wedding with JVM or .NET (and it is CIO Magazine, so this makes sense). And then for some reason Lua, which is a neat language, but if it's good for your problem domain you're already using it - and it seems out of place with the others listed.
My boss lets us use Python for most things (hell, he loves it, even though he's not a programmer, since he likes how fast and easy it makes dev and maintenance), and I don't see any reason at all to even contemplate switching to one of these. Not that they look bad, but since we're not already shackled to the JVM or .NET I just don't see a compelling draw.
Scala *does* look cool.
We use Lua at work. Your comment about being misused certainly resonates with me. That's one 'feature' that will be up against the wall when the revolution comes (or the rewrite, which will probably occur first)
Wow that's probably the most ignorant comment I've read this year on this site. Congrats to you.
Slashdot is proof that Sturgeon's Law applies to mankind.
Sorry, but what is their definition of a scripting language? F#, for one, is a full-fledged functional language, with full access to the .NET framework. You can write stand-alone applications in it just as easily as in C#. And yes, people actually do that.
How'bout that?
Catalin Braescu
Ofaly.com
I love Lua. I'm glad it was mentioned because I think it's one of the most underused languages I've had the chance to work with.
I had a GPS daemon I needed to write for an MDT (Mobile Data Terminal) Windows CE environment, and the CE API is just a complete shocker. In the end I managed to compile a branch of Lua called LuaX (has wince libraries) which comes with a bunch of awesome modules. A few of the modules did exactly what I needed (serial port and network sockets). One simple script handled everything I needed. I'm not saying it was the only solution, but I found it to work quite well, and the libraries were all there for me.
There's even a project called Kepler to use Lua for server-side scripting (similar to PHP).
Homonyms are fun!
You're driving your car, but they're riding their bikes there.
As a CTO and the guy who's money is at stake, this is complete crap.
Yes, a good programmer can pick up the syntax of any language. But syntax hasn't been the key to a language since K&R's White Book. The main issues is the API that goes with it. When I hire Java coders I want them to use Collections, not 1.1-era Vectors. I want them to use a FilterInputStream, not bring the whole thing into a byte array and then munge it.
Every language has paradigms, coding styles, best practice and APIs that must be learned through use, not osmosis. If you don't have this knowledge you'll reinvent the wheel, and you'll inevitably do a poor job. Look back at when you switched from C to Java, or whatever - you'll find this self evident.
Following on from that, I need to hire people with these skills and know I can replace them if they leave. 150,000 lines of beautifully written X is no good if I can't find anyone that speaks X, not matter how perfect it's structure.
In short, the Boss is right.
Intercal
Brainfuck
Whitespace
Robotwar
Loglan
Proto-Indo-European
Google F# bad
Although it used to be worse:
Google F#
Happy moony
I fully agree. The most profound education I ever got was from Donald Knuth's Art of Programming where he wrote that.
I know I've lost in this argument over nomenclature, the same as Stallman lost over the once honorable word "hacker", but "scripting language" denigrates what should be considered as interpreted computer languages.
My own picks:
Lisp (any flavor)[1]
Icon (RIP Dr. Ralph Griswold)
Unix Shell (ksh and beyond, but particularly zsh)[2]
[1] I've been paid on several occasions to write Lisp code and oh man, what a rush! All hail Dr. John McCarthy, inventor of the only language over half a century old that people still love and use.
[2] We're supposed to do everything in Perl in the project I'm now on, but I sometimes slightly bend the rules and sneak straight Unix shell stuffs in and zsh when I need to do something a little more complex.
At least one imperative programming language (Prolog/etc)
Pretty sure you meant to say "declarative" or "logic" rather than imperative. :)
Tweet, tweet.
The problem you describe is hardly inherent in Tcl. It's a result of inadequate testing and failure to use the available tools. There are very good IDEs, syntax checkers, and other tools for Tcl. There are even byte-compilers (used mainly for obfuscation - Tcl parsing is fast enough that there isn't much of a speed advantage to compilation.)
"Obscene" language is the universal language of all programmers, especially while debugging.
--
make install -not war
What it boils down to is: your company has invested heavily in tools [A] and [B]. The cost to change to anything else in midstream is high. Meanwhile, your competitor has selected [C] and [D] because 1) they entered the market later, when these tools were more mature, 2) their management had more insight into the problem domain and selected [C] and [D], or 3) they were simply lucky.
Time goes by. [C] and [D] provide a measurable competitive advantage over [A] and [B]. Your company goes out of business. Your competitor takes over the market.
The smarter move would have been to keep the cost of change down and, when conditions dictate,make the move to the better option. Often, management doesn't like IT departments worrying themselves over such details. Its better to stay focused on the plan than continually be fiddling with it. Management will take care of strategy issues and, when it comes time to make the switch its easier for them to get a new software shop up and running with [C] and [D] in a green field location, like Bangalore, than it is to have the current shop go through the throws of a revolution in culture. Just close the current [A], [B] shop down.
Have gnu, will travel.
I can't see C++ being functional. There might be a library to add functional programming - but the language itself: no.
And yes, C++ is pointer driven - especially with the very low level implementation of arrays. And no, vector is feature of the STL library not the C++ language.
I'm not sure why you would think that. Do you have any relevant experience or knowledge?
Often wrong but never in doubt.
I am Jack9.
Everyone knows me.
What it boils down to is: your company has invested heavily in tools [A] and [B].
I see it as a language is more than it's features. Business is heavily invested in process. The processes that aggregate into a positive cashflow tend to flourish regardless of the fear of competition and usually in spite of it! New languages are expensive in almost every area and you can expect developers to know something about the business. Those that don't probably wish they could use the "new" languages because they dont understand the problems with adoption. Those that endanger their business (because of a lack of understanding), are deserving of termination. Maybe I just think the "I use cuting edge technologies and work around the problems because I'm good" mentality is more often irresponsible than rewarding (I'd love to see some indication that Groovy is decent). This does not lead to always using the same technology, but few of the languages mentioned are really worth using.
Often wrong but never in doubt.
I am Jack9.
Everyone knows me.
Ada is still a de facto standard in a lot of aerospace applications and various other stuff that has a strong institutional desire for design-by-contract. SmallTalk was kind of shoved into C to make Objective-C, which is the standard language for much of OS X app programming (and iPhone app programming).
10 PRINT CHR$(205.5+RND(1)); : GOTO 10
I'll second that. Lua is very much JavaScript done right - quite similar semantics in many places, but without the weird dynamic scoping for select identifiers (e.g. "this"), and without the curly braces Java-lookalike rebranding. The result is very simple, concise and clear syntax. And very well thought-out extensibility for when you want to embed it.
Lua's gained quite a following in the games dev community - a lot of high-profile projects have used it for being the glue that holds everything together (e.g. interfaces with engine, audio system, UI/HUD etc)
http://en.wikipedia.org/wiki/Lua_programming_language#Games
Also interesting, (and something I didn't know prior to reading the wiki page) is the number of new non-games apps, like Adobe's Lightroom (for example) that use it.
Baka Drew
Learning the language was easy enough. Ok, the STL was not in existence at the time - but that would be learning the library.
Of course learning all the little titbits to the point of hating K&R took far longer. Note that the stuff I hate about C++ come mostly from the C heritage.
After that I switched to Ada. And that too took only a fortnight for the language - that's including funky stuff like representation clauses.
Martin
On the other hand: with the aid of a library you can teach any language any trick. You can make for example C object orientated (Gtk and CORBA spring to my mind). Does that make C an object orientated language? Or would C become an object orientated language if Gtk was added to the upcoming C 200x [1] standard?
By your rationale the answer would be: Yes! Scary thought...
Martin
[1] I boldly assume that ISO finished before 2010.
I've worked with well over 30 languages in the last 20 or so years, covering the entire gamut you describe and not once have I ever seen Prolog referred to as imperative.
Prolog is a declarative language (making it a cousin of functional languages) based on the resolution of horn clauses.
Imperative languages are based upon the idea of destructive update of state, echoing the Von Neumann architecture of the machine upon which they likely run.
In other words, on a diagram of programming language paradigms they are most likely polar opposites.
I'd consider the minimum for a really good programmer to include at least a project or two's worth of exposure to:
At least one assembly language or pseudo-asm. At least one mid-level pointer-driven language (C/C++/etc) At least one statically typed functional language (ML/Haskell/etc) At least one dynamically typed functional language (Lisp/Scheme/etc) At least one dynamically typed OO language (Smalltalk/Python/ruby/etc) At least one higher-level statically typed OO language (Java/Ada/C#/etc)
That still leaves some holes that could be tricky to pick up, and ideally you'd know: At least one stack-based language (Forth/Postscript/etc) At least one imperative programming language (Prolog/etc) At least one DBC-centered language (Eiffel/Sather/etc) At least one concurrency-oriented language (erlang, etc)
But you can have a long and successful career as a top-shelf programmer without really needing that latter group.
And yes, those monikers are a bit arbitrary; you can do full OO in Lisp, functional programming in Python, etc. So you can get away with a lot fewer languages than there are on the list, as long as you learn the different programming models. It tends to be a little easier to learn a model with a language that's been used that way traditionally.
I'm sure I'm missing some areas, too.
Andy Warhol got it right / Everybody gets the limelight
Andy Warhol got it wrong / Fifteen minutes is too long.
you have a good point there. Sure one language is as good as another, but transferability, ramp up of new hires, etc. All of those are cost driven factors you don't want to dick around with just for a few extra features that save you 10 lines of code for one, in one out of every 10 projects. If a college graduate with a year of on the job experience can come in and pick up by reading your code comments then you're already saving time and money that way.
Speak for yourself.
Okay, I'll admit I am a lousy programmer and never liked any of my programming courses (except maybe forth and assembly), but then again, I became an enterprise admin/manager so it's all good.
The one high level language that makes sense to me is Eiffel. I never understood why it hasn't taken off. I mean, I suck at programming and I picked it up in days.
[RIAA] says its concern is artists. That's true, in just the sense that a cattle rancher is concerned about its cattle.
I really wish my boss let me use Pig Latin. Itway ouldway akemay orkway oremay unfay.
It is by the juice of the coffee bean that thoughts acquire speed, the teeth acquire stains. The stains become a warning
First: I spoke about good programmers not average.
Second: C++ is in indeed the exception which break the rule. C++ is indeed incredibly difficult to learn in full.
The real danger is that anyone can pick up the basics in no time.
Why did they only have 6 when they listed REBOL at the very end as a seventh? Did they just forget a header and then miscount?
Anyone who says they learned C++ in a fortnight is lying.
A fun read: http://yosefk.com/c++fqa/index.html. Mentioned are points (some subtle, some not) which illustrate dark corners of the language and some of its complexities.