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.
Klingon.
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
Hab SoSlI' Quch!
In 6 Scripting Languages Your Developers Wish You'd Let Them Use, CIO looks at several (including Groovy, Scala, Lua, F#, Clojure and Boo)
Well, it's news to me that Scala & F# are scripting languages. Don't you have to compile them? I think scripting languages are technically those that control programs. They're often (though not always) interpreted or at rarely semi-compiled.
Furthermore, I wish my job was to sit around all day and learn only new stuff each day but at some point I have to produce something in a language that is well supported and deliver it to a customer. Unfortunate but these languages are investigated in my free time (don't even get me started on how I think companies should let employees invest their time).
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.
For I am still to find the first solution to a problem, that can't easily be translated to LISP
C++
Lua
Javascript
Python
Ocaml
PHP
--------------
Ability to create class defintions
on the fly, add data members and functions
Create anonymous functions, bind
variables to them and the pass them arround
Parsing library on top of regular expressions
such that matched text is easily extracted
and becomes part of the 'languages' native
data structures
Native JSON support.
Lua, PHP and to a degree Java script all
satisfy the above. Also probably Python.
However C++ and probably Ocaml add
the ability to deail efficiently with
OS, Databases, and large chuncks of data
(when those need to be manipulated in memory)
Not including Perl or Ruby -- because
the first one is on the wrong path,
and the other (Ruby) is not better than
the the ones I already listed.
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.
Of the others I mentioned, I have no opinion on.
"Thanks for all the money you paid to us. We've used it to buy off ISO among other things" -Microsoft
Rather than map everything in and out of relational tables, in and out of (x)HTML docs, in and out of DTOs, I'm using XQuery most of the time to just move directly from XML feeds to XHTML web pages or JSON formats.
It's pretty standard, but the boss still tends to think in terms of the Relational DB back end, three tiers, etc. that (s)he used in the 90s.
Look up XRX here http://en.wikibooks.org/wiki/XRX, or see Mark Logic, eXist (FOSS), or XQuery featres of IBM's DB2 and Oracle databases.
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!
Is that it's not like other languages, you still write Java with dynamic typing. Or of need to use static typing it's 100% compatible with Java.
With Groovy you can extend existing Java classes, or you can extend existing Groovy classes with Java.
Choosing the right tool for the job is in fact bloody difficult, with Groovy choosing the right tool has become way easier!
...to die in a fire
DIAF!!!
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
I wish mine would let me use C++ and Haskell instead of "scripting languages" sometimes. In our environment, the headaches of "all Perl and Ruby all the time" are huge.
English, instead of Buzzwordish.
"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.
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.
Our current tools are [A] and [B] for aspects (C), (D), (E), (F)...and anything else we need.
Everyone in the company knows [A] and [B] to different degrees. Primarily in relation to 3rd party libraries, methodologies (optimization, maintenance) and architectures (planning and abstractions).
[A] is slow in some respects for (D) and REALLY good at (F).
[B] is ok in (D) and good at (E), (F) and a number of others.
There are plenty of people in the workforce who know A,B or both to varying degrees.
Introduce Language [1]
[1] is really good at (F), (G), but there isn't a lot of data at what it's NOT good at.
Now why would we use that? In certain cases it's better than what we have but there's no support/market/libraries/practices for [1] so we skip it.
Boo is 0.8.2 - If you wish your boss would let you use this, you're fired.
F# - Not related to [A] or [B] unless [A] or [B] is ASP or C#, I could understand a more generic Functional Lang like Hask,OCaml,Erlang but F#? (educate me here)
Groovy - JVM Java scripting for when Java is too hard for you? Wow. You're fired.
Scala - yes. Finally, Advanced Java.*
Clojure - Functional syntax on the JVM. Why would I use this and for what when there's no support?
Lua - A very succint and efficient scripting language. Looking for performance in a scripting language is usually counter-intuitive and there's very few places it is advisably used, but it is handy when you're looking for performance for aspect (@). Chances your developer wants to use it inappropriately = 99%
Notice 3 of these are JVM languages, as if (rightfully?) dissatisfied with Java. Personally I can only see a reason for 2 of these languages to exist at all. For all of time there will be people interested in creating their own languages for various reasons (including simple compulsions) and few of them will really be justified beyond the joy of just working on something "new".
* No, I don't know Scala. I know some Lua from WoW. I may be biased based on my 20 odd years of experience.
Often wrong but never in doubt.
I am Jack9.
Everyone knows me.
1. *all* of C++, not just the basics. also third party libraries like boost
2. Objective C
'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.
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.
Hablo un poco espanol!
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.
Search for Common Lisp stories and weep.
http://wiki.alu.org/Success_Stories
Intercal
Brainfuck
Whitespace
Robotwar
Loglan
Proto-Indo-European
You people actually ask the boss which languages to use? Well there's your problem right there.
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.
"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.
Obscure languages are not easy to maintain and update when the only programmer who knew it was 'let go'. Much easier to stick to mainstream.
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.
See subject.
The summary mentions Boo, and 227 comments in this was still missing?
-AC
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.