
Can we stop the language bashing please ? - jacquesm
http://www.jacquesmattheij.com/stop-the-language-bashing-please
======
nostrademons
Things from PHP that I want in Django and Rails:

\- "Just write an HTML file" deployment. I want to be able to dump an HTML
file into a directory to get started, with none of this skeleton directory
stuff. Then I could incrementally refactor that file into a template, pull its
logic into views and models, customize the paths with a urls.py, and build my
app up with baby steps instead of jumping into MVC land immediately.

\- Tight integration with webservers. This FCGI/SCGI standalone stuff is a
pain, particularly if I also want to serve static files. I want to start with
something transparent like PHP's Apache module and then go to
FCGI/SCGI/proxying only if I get big enough to add a separate appserver.

\- User comments on the documentation. They're occasionally misleading, but
usually explain some necessary corner cases.

Things from Java I want in Python:

\- A fast JIT compiler.

\- JavaDoc. Yes, it's superior to docstrings, mostly because there's a
standardized documentation generator for Java and basically all Java projects
use it. When I look at a Python project, I have no idea what documentation
format they're going to use.

Things from Erlang I want in every language:

\- Message-passing concurrency. It's time to ditch threads.

\- "Let it crash" mentality. It's virtually impossible to enumerate the ways
which your program may fail, so let it die and focus on what you should do to
recover from the failure. Then use a supervisor process to make that happen.

Things from Python I want in every language:

\- Whitespace-significant syntax. Controversial I know, but I find this
drastically reduces clutter in code.

\- Doctests. I don't think Python goes far enough; its philosophy is that
doctests are documentation and unittests are tests. But with a couple simple
extensions, doctests could be tests too, and much more concise, readable, easy
tests than the xUnit framework provides.

There're a bunch more I could come up with, but this is already a long post...

~~~
jules
I would like syntax highlighting for my doctests.

~~~
andreyf
With the >>>'s color dependent on whether the test passes.

------
pvg
I honestly hope people don't stop language bashing or really anything-bashing.
Strident advocacy can be insightful, amusing and food for thought. Done well,
it's also more interesting to read than measured bloodless arguments carefully
constructed to conform to the Interplanetary Disagreement Protocol version
7.A. I'm always perplexed that in the face of the avalanche of writing about
'passionate users', there are many who put tremendous value on technical
communication that's as dull as robotically possible.

~~~
jacquesm
There are plenty of ways to show your disagreement and juvenile rants only
serve to vent the spleen, nobody is going to come away from an exchange like
that with a changed mind, in fact they might start to associate the tool of
choice of the 'ranter' with the ranters behaviour.

Real Programmers (TM) can do their work in _any_ environment, they will have
their preferences but for the most part they'll be language agnostic because
they have learned over the years that the tool is less important than he or
she that wields it.

I realize this goes against the grain here, PG is very strongly of the opinion
that the tools matter a great deal, but I've seen mediocre people with great
tools fail miserably and I've seen people with nothing but edlin and an
assembler written in BASIC (of all things) make a small fortune by building
some very elegant stuff.

The more interesting fact about this bashing is that the closer the languages
are to each other the more fanatical the bashing.

A python programmer will not get nearly as excited about some perceived
shortcoming in COBOL as they'll get about one in perl or php because those
languages are being used in the same 'domain' that python is used in (for the
record, Python advocates are amongst the ones doing the best job for their
language of all the ones named here).

~~~
pvg
I think the assumption that all writing is or should be an attempt to change
someone's mind is misplaced. Despite the contortions to equate it to high art
or some form of self-actualization, programming is mostly work and work, along
with its rewards, involves a fair amount of frustration. Writing and reading
about those experiences can be quite interesting and informative and the
spleen vented also serves as good reminder not to take oneself (and one's
tools) excessively seriously. Tastes vary but I know I'd rather read, say, a
chapter in the _Unix Haters Handbook_ than yet another wide-eyed post about
the inimitable ecstasy of being within 12 feet of a Rails app.

~~~
jacquesm
> Unix Haters Handbook

I'm going to have to look that one up.

You have to be thoroughly familiar with something in order to properly hate
it.

~~~
pvg
It's a classic. The web site is here

<http://www.art.net/~hopkins/Don/unix-haters/handbook.html>

and includes the text of the chapter 'The X Window Disaster'.

First hit when googling for the book name itself is a pdf of the whole thing
(of indeterminable legality).

~~~
jacquesm
Thanks for spoiling my productivity ;)

~~~
pvg
In the middle of a conversation about, among other things, not taking things
too seriously, someone downvotes a comment of obviously lighthearted intent
(comes with a convenient emoticon!). Sometimes I suspect there's a secret HN
Cabal dedicated to the smushing of any hint of levity.

------
djcapelis
Can we stop the bashing of bashing please?

Bashing serves a useful function. Not all bashing is productive, but just
focusing on positive aspects of every language without any critical thought
doesn't work. I would agree if you wanted to change your call for more balance
and less comments that contain _just_ bashing.

Critical thought and critical analysis requires criticism, it isn't pretty,
but that's how things work sometimes.

As a reference, this is some of the more well-written criticism I've seen on
languages and its existence makes the Internet a better place:
<http://yosefk.com/c++fqa/> (And I say this being rather fond of C++ actually.
I disagree with a few of the points made, but I can't deny this is a very
nicely laid out critique that bashes C++ in such a comprehensive way it's
nothing short of an excellent read.)

~~~
axod
The point is, it doesn't really matter. Can you imagine a forum on poetry
forever debating which is the better language french/german/english?

~~~
djcapelis
Did you read the FQA I linked?

That type of thing does actually matter, allows people to avoid, or think
twice about using certain language features and imparts a vast amount of
wisdom to anyone wondering about some of the dark sides of C++'s design. C++
made some very interesting headway in terms of language design and we can all
learn from the areas where things didn't work out quite as intended.

Since some people (maybe not you) actually make _new_ languages and rely on
this type of discuss to help them create better languages in the future, it's
absolutely vital that such criticism continues.

Can you imagine a world where we were all stuck with COBOL, ALGOL and ADA
because no one bothered to write any criticism outlining the areas where these
languages weren't sufficient? Are you really claiming that everything from
[http://www.cs.utexas.edu/users/EWD/transcriptions/EWD06xx/EW...](http://www.cs.utexas.edu/users/EWD/transcriptions/EWD06xx/EWD660.html)
to <http://www.pbm.com/~lindahl/real.programmers.html> is all useless nonsense
that helps no one?

~~~
axod
Creating a programming language isn't hard. It's not rocket science. It's just
a mechanism for us to express ideas and to execute machine language on a CPU.

Good programmers can decide for themselves what to use, what is ugly, what is
crap.

Just like a poet steers clear of ambiguous 'bug prone' words.

~~~
djcapelis
Creating _a_ programming language isn't hard. Creating a _good_ programming
language continues to be a large challenge that benefits from learning where
other languages failed.

I'm not frankly even sure what you're arguing anymore. You're way out there if
you think that language design is all completely irrelevant to anyone.

And frankly, as a programmer, I value my colleague's opinions on different
languages so I don't have to go running off to investigate every new
harebrained language myself.

~~~
axod
Is creating new programming languages a worthwhile thing though? Are we as
programmers restricted unreasonably by programming languages?

I don't think we are. Perhaps some feel so if they don't have enough
programming experience and aptitude.

~~~
djcapelis
Perhaps if you'd read more criticism of existing languages you'd be able to
more clearly see the needs for new languages to address certain issues and new
technology challenges.

I think many programmers would have told you they didn't feel unreasonably
restricted by COBOL, ALGOL, ADA or FORTRAN as well, but I sure am glad
different people felt annoyed enough with those languages to write some new
ones.

~~~
axod
Point is, if they hadn't created new languages, we'd still have all we have
today. It'd just be in those languages.

Some people will always whine and moan about any language, but in every case
there's a work around for any dislike they have. If they're a good programmer
they'll be able to work out a solution. It's like a builder moaning that he
can't always build on perfectly flat stable ground.

What 'new technology challenges' do you mean? The fact that _suddenly_ in the
last few months we've been able to switch to 'realtime' web! Which is a
marvelous technological achievement never before seen in computing?

It's all buzz words and bs.

~~~
djcapelis
You really don't think there's been any progress in programming languages in
the last 30 years?

I think there has, and I think there will continue to be progress. The area
that seems most likely and is getting the most attention right now is
concurrency, an area that many existing mainstays handle fairly poorly. We may
not need a whole new language to address these deficiencies, but certainly
different language design concepts, principles and frameworks may need to be
incorporated into future versions of languages to provide their continued
usage in the new manycore environment we seem to be kicking and screaming our
way into.

Certainly I can and have written multithreaded code in C, C++ and many
existing languages, yet I can see the value in exploring ways to make that
easier.

Can't you?

~~~
axod
I don't think there's been much to speak of no. Probably the most useful work
has gone into runtime optimizations, JIT etc

I heartily strongly disagree about concurrency. Concurrency is handled badly
by most languages because it's a horrible thing to run more than 1 thread per
CPU. But I won't start another rant on that.

>> " the new manycore environment we seem to be kicking and screaming our way
into."

Again, I don't buy the koolaid. We were using multi cores 10 years ago and
warning that we'd all have hundred core CPUs.

I too have written multithreaded code, and decided the solution was to stop
writing multithreaded code.

~~~
jacquesm
> I too have written multithreaded code, and decided the solution was to stop
> writing multithreaded code.

Not too long ago on some thread here I said I thought that writing solid multi
threaded code was hard and I got reamed for it.

I think I have above average experience in C and writing an operating system
kernel has given me a good amount of insight in to how difficult it really is.

Anybody that thinks writing a multi-threaded program is a walk in the park
hasn't done enough of it yet (or at least, not enough debugging, especially
under high load you can have the weirdest problems if you aren't very very
careful).

~~~
axod
Sure, but it's an avoidable problem.

Writing multithreaded code on a single core is like saying to the OS:

"I don't know what order I want my code to execute, here! You decide some
random pattern, and I'll write a ton of code to deal with your random
execution of my code."

~~~
jacquesm
> "I don't know what order I want my code to execute, here! You decide some
> random pattern, and I'll write a ton of code to deal with your random
> execution of my code."

Writing like that makes me jealous.

There is so much insight in that one line, it shows how much you've done
better than any long exposition ever could.

That level of brevity is something to aspire to, maybe one day...

------
michaelneale
better still, stop binding yourself to a language - there are no Python
programmers, or Java programmers - there are programmers that use the
respective language (at that time).

That kind of blunts any personal attack. There are however communities, so I
guess that is what people could attack, for better or worse. But its not
personal.

~~~
amitt
This is exactly the type of mentality we employ when trying to hire folks for
the FarmVille team. We tell our recruiters to put job descriptions out for
"Software Engineers" versus "Flash Developers" and "PHP Developers".

For us, it's rare to find someone with both PHP and Flash experience. Heck,
most of the senior devs have less than 2 years experience using both at the
same time. So, instead, we look for really smart programmers with solid
software engineering fundamentals since we figure that it's much easier to
teach a smart person a new language than try to teach someone core CS
concepts.

We've seen this work fairly well with several new hires. The language is, like
you said, just a medium and changes depending on the project. The real
challenge comes from understanding how to architect code in a way that's
flexible/scalable/maintainable.

~~~
michaelneale
Ideally people would have used/shown interest in a reasonable spectrum of
languages. And most tools in common use (common being the key word !) really
should only take an afternoon to learn enough to get something done, however
small. I am not sure why more interviews aren't done like that, but I guess
hard to scale.

------
bonsaitree
In short, no.

Granted, it's on the extreme end of high-noise/opinion scale, but "Bashing" is
a natural component of the many evolutionary pressures exerted on any form of
human memetic expression.

It's no different than literary or other forms of artistic criticism.

Be wary of ANY single idea or concrete instance of expression without a robust
spectrum of discussion surrounding its merits.

------
jcl
_Every language, including the most vile but still Turing complete abomination
(I'm looking at you, mumps) has something that we can all learn from and
something that is worth singling out for admiration._

The article might be more convincing if it didn't go out of its way to bash a
language. :)

~~~
jacquesm
Yes, there was some mention of my 'hypochrisy' and 'language bias' in the
comments.

I highly doubt those have as much experience as I do with mumps (long story)
so I'll just ignore them.

As I noted above you have to really know something before you can properly
hate it.

~~~
jcl
In which case, your request becomes "Can we stop the language bashing, unless
you _really_ know how bad the language is?"

Which, of course, is useless. You might as well write an article asking people
to stop writing uninformed articles. If someone writes, either he believes
himself to be adequately informed or he doesn't care that he is uninformed,
and in neither case will he be dissuaded by such advice.

~~~
jacquesm
No, but let's put the bar at basic familiarity and having programmed at least
one non-trivial piece.

That still leaves lots of room for uninformed rants whilst cutting out the
majority of the noise.

------
Tichy
I actually like language comparisons. Since I can not be a master of all
languages myself, I find it interesting to see what features people value
about "their" language and what different languages have to offer.

Also, it is not just senseless bashing. If I invest in learning language X, of
course I have an interest in X becoming popular to protect my investment and
make it more valuable. Unless you can take that aspect magically away, I don't
see how language wars could realistically go away.

~~~
berntb
>>I actually like language comparisons.

Comparision != Bashing;

(And yes, there is some overlap. Please no long word definition "discussions",
either :-)

------
axod
People who routinely bash languages likely do so to cover up their own
inadequacies and insecurities about their own programming ability.

It's childish and boring.

------
zikzikzik
"in actual fact the criticism is uniformly negative, usually quite childish
and un-actionable, one step shy of a value statement about the users of those
languages.

It's just a good old hanging party in disguise."

The problem is, I FULLY agree with EVERY aspect of EVERY php bashing (ok,
almost), even though I use this language daily, and have been using it for
almost 10 years now. ( :S )

The point is, the original implication, that Perl or Python or Ruby or
whatever other languange fanatics fabricate or like these php bashing posts,
is completely false. If I had a blog, I could have hundreds of php bashing
posts, because over 10 years of php usage you encounter a number of mayor WTFs
(believe me ;) and you REALLY hate them.

I don't take it as a personal insult at all, and noone should. Ofc I'm not a
php-only programmer, but maybe noone should be? Maybe if someone is offended
by a bashing of his/her favorite language, it's time to reevaluate some
personal issues about self esteem? Or if someone is a somelang-only
programmer, then maybe a broadening of skillset (by other languages) is
advisable anyway?

------
Zak
Hacking is one of the few art forms where the medium is itself an example of
the art. It is natural for good artists to be passionate about their art; to
love and hate certain examples of it. Working constantly with those examples
is sure to amplify such feelings.

------
pierrefar
All good points.

As a PHP-only hacker (wouldn't say fan), I am always amused with the PHP
bashing. It's missing this or that. It does x wrong. Yet it only powers
Facebook. It is the only language where I can be up and coding in no time to
produce complex web apps quickly.

Language users always underestimate the second point: personal familiarity is
a great productivity boom that no other language can match. Better the devil
you know...

And a similar argument holds for databases, but it's a bit more complicated
for that one.

~~~
nostrademons
"As a PHP-only hacker...personal familiarity is a great productivity boom that
no other language can match. Better the devil you know..."

It's possible to become personally familiar with more than one language. Get
to know many devils. ;-)

Learning a new language always feels like a pain when you're doing it, because
everything's 10x slower than with your old language. But then you become
familiar with the new one, and can write two languages at full speed instead
of one, and the pain of learning it is quickly forgotten. Moreover, it gives
you perspective on both the old and the new that can be quite valuable.

Do this enough and eventually you realize that there're some languages that
are just _bad_. But it's very much worth examining their history and
understanding how they _became_ bad. Because I can guarantee that it wasn't
because their designers were stupid, and the same forces that make a language
go bad tend to make any software project go bad. If you're aware of them, you
might keep your software project from going bad, at least for a while.

~~~
pierrefar
I do learn other languages. Right now I'm focusing on the non-alphanumeric
soup we call Erlang. I can also (just) barely do some Python, and Node.js is
next on the list.

For PHP, it's best to think of it as an inconsistent wrapper around lots of
other libraries. In most instances, I know there is a function to do what I
want, and a quick lookup gets me the right syntax.

~~~
jacquesm
Cool! Learning clojure on this end, slow progress but one day I'll get it :)

How is Erlang working out for you?

~~~
pierrefar
I should have been more explicit in how it's going for me: slowly. Very very
slowly. I think it's a function of the amount of time I am dedicating to it
and the book is written in a very intense dump-everything-in-one-go kind of
way.

But I'm slowly getting there.

------
zitterbewegung
Why aren't programmers more pragmatic? I like lisp better than any other
language but if there is a better solution in another language then I will try
to either learn it or use it. Why can't programmers see that languages are
tools to be used and not fight if one tool is used over the other. You don't
necessarily see this with other craftspeople when they create things. I don't
see people arguing over hammers and if you did it sounds really stupid.

~~~
RyanMcGreal
>I don't see people arguing over hammers

I don't think the analogy makes sense here. Unlike programming languages,
there's little operational difference between one brand of hammer and another.
Maybe brand X is known to last longer than brand Y, but they will still be
more or less identical in daily use (aim, swing, get thumb out of way).

~~~
jacquesm
Actually I know a carpenter that would probably murder you if you took away
his 'Estwing'.

So even in hammers there is apparently distinction enough to get people very
attached to their tools.

And don't get a woodworker started about their chisels either.

------
lacrossegm
You cannot fix something that you don't know is broken. Programming languages
can have flaws just like anything else. Unless someone points them out they'll
never be fixed.

The idea that there is a single perfect language for doing everything is a
myth. We need a variety of languages in our toolkit. They can be improved if
there is constructive criticism, someone to listen and innovate changes.

------
madd_o
Someone bashes php or Java, and, well I can understand that, but how dare you
bash language bashing!

Joking aside, bravo for the denunciation, there's no best language, there's no
worst language, they're tools in a box, the sooner we accept it the better.

~~~
davidw
They are not just 'tools in a box', though, that's a bad metaphor. Each
language is a more or less complete toolbox, although each one has things it's
better at. Still, most of us tend to grab the language(s) we know, first,
rather than look around for the 'perfect' language for each job, unless it's
going to be a very large project.

~~~
madd_o
Let's accept your argument, that each language is a complete toolbox. You'd
likely grab a different toolbox to fix different classes of problems.

For large problems it's common to bring several different toolboxes (think of
a primarily php site with a their public api scratched out in java).

The points among each language which contrast and define the 'things it's
better at' differentiate the tools and or toolboxes (however you prefer to
think of each).

Again, +1 for tearing down tearing down programming languages.

~~~
davidw
> Let's accept your argument, that each language is a complete toolbox.

You can write a web server with Tcl, Ruby, Python, Java, Erlang, C, or
whatever.

You can also create GUI's with all those languages.

Any major language is most likely capable (and has some libraries) for doing
common things.

> You'd likely grab a different toolbox to fix different classes of problems.

Like jacquesm says below, you would only do so once the cost of learning a new
language is less than the perceived gains from using that new language. Since
programmers are expensive, and jumping to something new and potentially
unknown has some potential pitfalls, this is often _not_ the case. I.e. it's
better for the Ruby guy to write a little web server in Ruby rather than
Erlang if that's what he needs, even though the Erlang one will kick the
stuffing out of it in performance tests, unless of course he _knows_ that
performance is absolutely critical (it isn't in many cases), and more
important than solving the "business logic" of the problem.

------
omouse
Language bashing = pointing out flaws in notation. If you think of programming
as math, then you need the best notation so that you can solve your problem
more easily.

It's unfortunate that language creation with custom syntax isn't easy.

------
yannis
Site seems broken down (shows me std Drupal help for can't connect to database
and points to install.php)

Something went wrong? Slashdot effect?

~~~
jacquesm
Not sure why you got voted down for that, Rob, the sysadmin chose _just_ that
moment to reboot the box and you caught it before the db was up again, so it
definitely was down for a moment.

It's funny, I rarely submit stuff from my own site to HN, of course that
coincides with switching the server to a different phase.

------
jpr
I'll stop bashing languages as soon as they stop being insultingly bad. For
many languages that would mean death. I'm okay with that.

------
nazgulnarsil
fuck german. umlauts? REALLY?!

------
simonw
Can we stop using the term "bashing"?

~~~
jacquesm
Apologies, non-native English writer/speaker here, what term would you prefer?

~~~
simonw
I'm trying to think of one. A better alternative might be "criticism", but
"Can we stop the language criticism please?" seems like an obviously wrong
question - without criticism, how do we know what's bad?

"Bashing" kind of suggests "criticism for the sake of being unpleasant". How
about "non-constructive criticism"?

I can't quite explain what it is about the term "bashing" that I find
annoying, but I think it's the assumption it seems to make that the criticism
in question isn't well reasoned.

~~~
jacquesm
Criticism is fine with me. But bashing goes one step further than criticism,
it implies something more than a simple and well reasoned pointing out of a
flaw.

If you can't explain it then I hope you'll forgive that I stick with the
bashing for now, it seems to cover the bases.

It's the only word I've seen used in that context that fits the bill as far as
I can see.

