We should all just decide on JavaScript and solve the interesting problems instead

Our endless bickering over the merits of different languages and paradigms isn’t all that productive, nor is it very interesting. You’re not a Ruby/C#/Java/Elixir developer, you’re a goddamn problem solver. Remove the programming language from your LinkedIn/Twitter bio, that’s not who you are.

All the things that make other languages and platforms more or less sexy are 90 % community and culture. All the loudmouths in the developer community hype things that aren’t “enterprise”. So only 10 % of the sexiness is the actual language*. And the goods news are that we humans can change culture, that’s what we do best when we really want to.

* except for Ruby of course, it is so beautiful. But I digress…

The time is right

We’re now at the stage when JavaScript is hugely popular and a lot of innovation is taking place in that community. Also, it’s a pretty open language, i.e. it’s not owned by Oracle, Microsoft or IBM. We have the chance of running the same language on the front-end and the back-end. Heck, you can even use it as an officially supported language to write FirefoxOS, Ubuntu Touch and Windows 8 desktop/phone apps.

Easier to find developers, easier to find a job

When the language barrier is removed, you can choose look for the things that matter in potential recruits and employers. Like cultural fits/misfits and interesting problem domains. You know, the hard stuff. It’s not automatically good just because it mentions “Scala”, “F#” or “Objective C” (or “agile”, “XP” or “kanban” for that matter).

It’s a pretty good language

Yeah, I don’t love JavaScript. It’s decent. To me, as a Swede, JavaScript feels like English. I don’t love it, but it’s the de facto business language in many parts of the world. Even though I could probably express myself much more poetically and succinctly in Swedish, the benefits of talking the same language as millions and millions of other people far outweighs that.

“The downsides?” you ask

Sure, there are no silver bullets, just a bunch of trade-offs. Here are a few:

You can’t easily talk about every problem in one language

Whenever I try to explain the small cultural differences between Australia and Sweden, like the concepts of “lagom”, “fika” and “allemansrätten”, I struggle with coming up with English words that do them justice. But most of us don’t need to understand those tiny concepts, they only affect 9 million out of the 7 billion people of this world.

Much in the same way, most developers I meet to aren’t solving very exotic technical problems. They’re solving business problems, like:

  • understanding what is the most important next step for you
  • figuring what your customers might need
  • deciding on what you need to say no to in order to survive as a business

I think that for the most of us, JavaScript is good enough to solve these problems.

JavaScript is becoming fragmented

Now that CoffeeScript is a real language (and ClojureScript is trying to become one), that adds a few weird jazzy chords and beats my “one language to rule them all” tune. But maybe having JavaScript as a common platform is almost as good as having it as the only language.

What about multi-core? Parallelism? Concurrency?

I don’t know yet, we’re still not sure how to approach this problem. Some people use Clojure, Java or Erlang to run all cores at full utilisation. Some just throw a bunch of cloud servers at it. Some find that all the latency comes from the database calls anyway.

A bit of non-blocking here and callbacks there doesn’t make this problem go away. But it is certainly not beyond the realms of possibility that we could solve this problem with JavaScript.

As always, the pendulum keeps swinging

Like so many other things, fads in IT go in 10-20-30 year cycles. In the 90′s we all hoped for Java, then the polyglot/NoSQL movement came along. We might be ready for another round of badmouthing the language and platform fragmentation. I just hope that we get together and solve the hard problems instead of declaring our geeky love for things that don’t really matter.

 

56 thoughts on “We should all just decide on JavaScript and solve the interesting problems instead

  1. wirrbel

    To use your language analogy: Today’s english might be tomorrow’s french and next year’s latin.

    I think you actually have a point when doing the silly curly braces vs. algol/pascal/ruby style blocs vs python-indentation langauge discussions or fighting over C# vs. Java flavor of statically typed C++ decendants. However I would then argue that we should specify criteria of language selection other than pure number of users alone.

    And then: Languages are an interesting “problem” since they are at the heart of what we do as programmers. In fact you cannot separate programming languages from the problem you are working with. There is only so much you can do with an API, at some point, you have to alter the language. This is why people are still impressed by Lisp/clojure since they allow the “definition” of new language features (Clojure async etc).

    A really interesting talk about related thoughts by Bret Victor http://vimeo.com/71278954 (Future of Programming)

    Reply
    1. peter Post author

      Thanks for you thoughtful comment.

      I believe that we don’t have enough influence to ignore the number of users of a language. Believing that we do only opens up for 10 more years of arguing over details. Time we could spend arguing how to solve poverty, climate change or where to store nuclear waste. Problem solving is never neutral, we have to pick our battles.

      And I disagree with the notion that languages are the heart of what we do. Languages are tools. Emotions and thoughts are at the heart of what we do. Nobody hires us to write in a programming language, even if they mention specific languages on the job boards. They hire us to solve a problem they have. The fact that we go along with solving the problem in that language is up to us, not a natural law.

      Yes, people are impressed by the capabilities of Lisps. But they are a very small minority. The rest of us are kind of happy with solving problems using the languages at hand. Lisp has been around for so long and still, in spite of the Clojure hype, hasn’t been able to become more popular than Matlab or Delphi. It’s interesting for sure, but not important enough in my opinon.

      Reply
    2. Lincoln

      I respectfully hope not :) http://ocpsoft.org/opensource/javascript-is-the-new-perl/

      JavaScript, technically speaking, has so many shortcomings that I think it might result in the most possible re-work, attempting to solve problems that are already solved very well elsewhere. (Yes, even node is repeating things that are done better elsewhere. The only real benefit of Node that comes to my mind is that it uses JavaScript, which is familiar for front end devs and re-uses that skillset.) Not to mention the inherent performance problems that you get with an interpreted language like JavaScript. It’s no where near the top of these lists. For most people, this type of performance doesn’t matter, but an order of magnitude is a big deal for big apps. JavaScript will have a hard time touching those:

      http://www.techempower.com/benchmarks/#section=data-r6&hw=i7&test=json

      Cheers :)

      Reply
      1. Lincoln

        In fact. If you want to stop wasting time solving language problems, then stop re-inventing things in each new language, and find a better way to bring languages together to use the best parts of each of them more effectively :) JavaScript would have to re-invent half the world to accomplish what you suggest we should strive for.

        Now, if I replace the word “javascript” in your blog with “Java” or the “JVM”, we might get somewhere :) in fact, we are!

        http://en.wikipedia.org/wiki/List_of_JVM_languages

        The JVM is turning into the melting pot of languages, providing an extremely inter-operative environment where language syntax can frequently be mixed, and services can certainly be shared.

        Re-writing everything in JavaScript makes little sense to me :)

        ~Lincoln

        Reply
    1. peter Post author

      I’m not trying to tell you anything, I’m hoping that you will join me.

      Edit: actually, I am telling you. But why is that a problem?

      Reply
  2. Theodore R. Smith (PHP Experts, Inc.)

    What I want:

    A language that has
    1. The same general syntax as PHP and JavaScript (they’re very similar),
    2. Medium typing (must declare variables’ datatypes, but conversion is done automagically),
    3. Static compilation is possible (possibly with only strongly typed code bases),
    4. Can be compiled into JavaScript, or, for instance, ASM.js.
    5. Can run client-side or server-side, with or without the need for an interpreter.

    I think #2 and #3 are the only things missing.

    Reply
      1. Michael Xavier

        I’m confused. Is the software development community’s purpose actually a giant contest to pick the “winning” language and then solve all problems in that language, regardless of fit? How is it a sensiible thing to choose tools by sheer mass of user base and not the problem? If we all coalesce around one language like javascript, how are we going to benefit from the monoculture it creates. I reject this idea. People who fight about languages from a tribal perspective are not being productive, granted. However, languages solve problems in different ways, and some languages cannot adequately solve some problems. Putting though and discussion into choosing programming language is a valuable, hygenic thing for a community to do. I’d rather do that than use whatever language other people are currently enamored in.

        Reply
        1. peter Post author

          Thanks for your comment, Michael.

          I believe that we can solve most of our problems in a pretty elegant way using JavaScript. The ones where we can’t are probably a small subset.

          I don’t think we’d have a monoculture just because we used the same language. There are english-speaking goths, punk-rockers, hare krishna, politicians, police officers and mass murderers. All potentially very different, but they at least have the possibility to explain their different world views to each other.

          Reply
  3. Pingback: We should all just decide on JavaScript and solve interesting problems instead | Rocketboom

  4. paul

    I consider myself an engineer, Software Architect actually, and I use a variety languages. I believe your statements reflect a very narrow view of enginnering. The use of multiple languages enables capabilities. It is not a hindrence. I wont try to convince you nor attempt to educate you but consider this; I have been an engineer for about twenty years and am proficient in perhaps a dozen languages. I can say definitively I am better at each of them because I know all of them. Try to do some research into why I might make such a statement, and try to consider why I’m not explaining myself in more detail. I am not providing more explaination and hoping you will do some research yourself precisely to help you.

    Reply
    1. peter Post author

      Thanks Paul, I do appreciate your feedback.

      The problem however is that you can’t quantify, nor can you explain how your proficiency in 12 languages makes you better at solving problems than someone else. How do you know that you are better at them? What does better mean to you? Is it important to be better at a language, or is that barking up the wrong tree?

      I am aware of no research showing we’d be better off in general if we knew more languages and paradigms, but I’d love to be proven wrong.

      Reply
  5. Joel Berman

    Unfortunately it IS very interesting to many people. We can bicker over byte order, white space, typing, probably even fixed versus variable width fonts. A programming language is a tool and tools are very personal to craftsmen. When we stop considering ourselves to at least be a little bit artist and craftsman, and decide all programming is just turning a crank, we will end the discussion.

    Turing provided the answer years ago, but I for one, like to talk about programming languages and tools.

    Reply
    1. peter Post author

      Agreed, and I am certainly one of those who think languages are interesting. But I also realise that other things are interesting too, but maybe more important.

      Why would programming languages be more interesting tools to discuss than, say, thought processes, team dynamics, marketing research, customer interviews, user experience design or our choice of laptop brands and operating systems for that matter? We have a wide array of tools that we can focus on, but we tend to choose the ones that we feel we can directly manipulate, criticise or understand, rather than the ones actually matter to the people who use what we make. We take the easy way out and trick ourselves to believe that has great value.

      I think we’d be better off if we took a step back, unburdened our limited brain power in one area to increase our understanding of what we do in others. The language being a given would mean more freedom to do so.

      Reply
  6. Pingback: We should all just decide on JavaScript and solve the interesting problems instead | Genteechristian

  7. Pingback: In the News: 2013-09-08 | Klaus' Korner

  8. Matt

    Shorter summary: “Yep, the d00ds at Netscape created the best language EVAR back when the needed something to make web pages blinky back in 1995!”

    Seriously – this is what any JS advertisement boils down to if it rests on the “run on both server and client” argument. JS is the only language that can say that because the incremental cost of deploying a *new* language to the zillions of client devices is so staggeringly high it’s unlikely to happen ever again.

    A parallel argument to this post might be, “mathematicians should stop creating new theories and just work on doing math problems for their clients”, except that all but the most hard-headed would recognize that such a statement completely confuses two entirely different ideas of “doing math”.

    Reply
    1. peter Post author

      Thanks for your comment Matt.

      First, you’re wrong, I don’t think JavaScript is the best language ever and I didn’t write that either.

      Completely agree with your 2nd paragraph.

      I do believe that 99 % of us can write stuff in JS and we can still have people working on new theories. They are not mutually exclusive. Plus, we’re not at the stage where new inventions won’t come in the JS field.

      Reply
  9. Erlend

    Have you ever written a website in C++? No? Neither have I, and the mere notion of doing that would seem silly to most programmers, in all but a few really special cases, like embedding a web service in a micro controller, or dealing with enormous amounts of traffic. The reason for that is that C++ isn’t very well suited to web development, it’s too clunky and verbose, has no garbage collector, and it’s strength – speed – is usually not that important because between your database query and the network latency the processing time of each request doesn’t really register (again, in all but a very few cases). My point is that languages DOES matter. They have different strengths and weaknesses, and we could have said 30 years ago that C++ does everything we need, and just left it at that, but thankfully we didn’t. Having a debate over “which language is better” is of course silly, but saying that everyone should just stfu and settle for using language X is just as dumb.

    Reply
    1. peter Post author

      Thanks for your comment Erlend,

      You say that my argument is “dumb”, but you offer not arguments to back this up other than that languages have “different strengths and weaknesses”. I do realise those differences exist, but I believe that for a pretty extreme majority of us, those differences do not really matter.

      Reply
  10. Duncan Bayne

    Erlend: funny you should ask, I’ve actually written a web-app in C, back in the late nineties. With the right set of libraries it’s not as bad as you’d fear, but much worse than you’d hope for :)

    In terms of deciding on a single language … have a read of this: Engelbart’s Violin. It’s a bit ranty, but informative. He quotes Erik Naggum at one point:

    Why are we even _thinking_ about home computer equipment when we wish to attract professional programmers? in _every_ field I know, the difference between the professional and the mass market is so large that Joe Blow wouldn’t believe the two could coexist. more often than not, you can’t even get the professional quality unless you sign a major agreement with the vendor — such is the investment on both sides of the table. the commitment for over-the-counter sales to some anonymous customer is _negligible_. consumers are protected by laws because of this, while professionals are protected by signed agreements they are expected to understand. the software industry should surely be no different. (except, of course, that software consumers are denied every consumer right they have had recognized in any other field.) …they don’t make poles long enough for me want to touch Microsoft products, and I don’t want any mass-marketed game-playing device or Windows appliance _near_ my desk or on my network. this is my _workbench_, dammit, it’s not a pretty box to impress people with graphics and sounds. when I work at this system up to 12 hours a day, I’m profoundly uninterested in what user interface a novice user would prefer.

    His point still stands. Javascript is a pretty good language when compared with its competitors, and a very reasonable compilation target (think CoffeeScript, ClojureScript) or runtime (BiwaScheme).

    But the environment is so immature. As an example, I’ve worked extensively with the filesystem APIs provided by Firefox, and they’re a significant step back from my C programming days in terms of stability, functionality and documentation. Plus, as you say, there are many areas that just aren’t adequately addressed by Javascript (e.g. parallelism).

    So I’d say Javascript is definitely worth knowing, and realistically it’s a go-to tool for a lot of problems. But … we used to be able to make programmable computers that were so much more programmable, several decades ago: Symbolics Lisp Machine demo Jan 2013. These machines were programmable from the hardware up, in the same language[1]. Everything was inspectable, debuggable, modifyable and documented[2]. If something malfunctioned or required extending, any user of the system could do it.

    This is what was possible in the early 1980s. When I was cutting my teeth on a little 8-bit micro, systems like the one in the video above were available, and being used. It’s retro but it’s not old – modern systems simply can’t do what is being done in that vido.

    Fast-forward to today. What do we have? A wobbly tower of crap built upon layer after layer of hacks. x86 architecture (descended from the winners of the microcomputer wars), C, POSIX (on all systems that matter), X / Cocoa, browser, Javascript. Edit, compile, test workflows. Complete inability to debug through layers (javascript app misbehaving & you want to step into the browser to see what’s going on? Sorry, no can do). Even systems touted as being innovative – e.g. iOS – are just adding or refining layers in the wobbly crap-tower. They still all have the same classes of problem, which are simply not solvable with existing architectures.

    Anyway, rant over. Just saying that accepting Javascript as a standard language is to sell ourselves incredibly short. There is so much potential in modern machines, it seems a shame to settle for something so mediocre.

    [1] Which doesn’t stop you using other languages on the system. They’d just be implemented as interpreters in the system language, or as compilers that target the system language. In either case you’re still left with something that can be inspected & modified at will.

    [2] Which means that ‘big media’ and others who want DRM and similar anti-features wouldn’t ship their stuff for such a system. You’d have to rely on emulation, or accept the tradeoff for your pro system and buy an iPad for movies.

    Reply
    1. peter Post author

      Thanks for your long comment, Duncan. I’ll try to answer what I think where the points you raised that require some answer from me :)

      First, I believe that the endless fiddling with our setups is as counter-productive as the battle of the languages. Sure, it can be fun and interesting, but I don’t see it as very valuable.

      Yes, the JavaScript experience is immature in many respects. For example, there’s nothing on the Node platform that comes close to the out-of-the-box experience for a Rails newbie when trying to put together a new product. But JavaScript is on the move and has a huge community behind it, so I believe it is only a question of time before that is overcome. And by trying to get more people to switch to it, I hope to make the tiniest of contributions to that.

      The Lisp Machine Thing sounds interesting, but I cannot imagine a future in where that would be a popular thing. Mainly because we don’t seem to like Lisp, unfortunately.

      Why is it selling ourselves short? Because the language is so atrocious, or because there are no Symbolics JS Machines? Could there be, is it just a question of determination?

      Reply
      1. Duncan Bayne

        Heresy, but: it’s not so important that it be Lisp. The important aspects of the system are:

        – programmed in an interpreted or JIT-compiled language, so no edit / compile / test loop
        – programmed in the same language (or languages built on top of it) all the way down to the silicon
        – at all levels, code can be interrupted / debugged / inspected / modified / extended by the user

        Such a system could be built on a variety of language. E.g., a while back there was a company building Java chips, that supported the JVM on hardware. I suspect a Python Machine would be very popular with hackers.

        Reply
        1. Tim Moore

          There’s no reason why a native JavaScript machine would be impossible, I suppose. People are already building microcontrollers that are scriptable via JavaScript. It’s not really the same thing, but I wouldn’t be too surprised to see it in the next few years.

          Reply
  11. Duncan Bayne

    So … following on from that: in terms of interesting problems, perhaps the most interesting to me is why, despite having supercomputer we can fit in our pockets, we still don’t own genuinely programmable general-purpose computers. That is perhaps the most interesting problem in computing today, but I suspect the money and industry clout to address the problem is beyond most people. What a pity that Jobs wasn’t more of a technologist.

    Reply
  12. Peter Huber

    Interessting that you talk about the “world” language english. have you ever thought about the billions of spanish and chinese…? In terms of number of people that are native speakers I guess those languages are comparable to or even out run english someday.
    Talking about Javascript – the real thing a productive developer should focus on is “productivity over all”. I mean not just this day, or just this project, I mean in the long term. One thing that enables us to be productive is a stable ecosystem of language, specs, libs, ide, tools…think about you do some projects in a row and each looks different on some or many ecos system aspects. How will this affect productivity in the maintenance phase of your projects? And I hope your projects are succesful and have a long maintenance phase. I say that javascript has big drive now and gains some momentum even on serverside, we see new “frameworks” each and every day, but currently we have nothing comparable in terms of stability to the JavaEE ecosystem right now. Imho this would be an importand step to make a Javascript based ecosystem a viable option for businesses, which have to decide upon other aspects than coolness when it comes to long term technology decisions…Another importand aspect in this story is that Java and JavaEE was a spec that was driven by just one leading party, sun and now oracle. I guess we need something like the JavascriptEE consortium that covers all the aspects and parties involved to bring javascript ecosystems to the next level.
    And speaking of interesting problems – jsut ask what languages a prefered in the machin learning community. I guess the response you’ll get will tell you that even python and R and Octave are sometimes better than javascript will ever be ;-)

    Reply
    1. peter Post author

      Yes, I have thought of “Chinese” (assuming you mean Mandarin) and Spanish. Although none of those languages are spoken by “billion”, I’d try to learn them in a heartbeat if I would need to work in those areas.

      You are right to point out that JS if far behind the JVM. But the JVM is owned by a corporate giant, which makes me mistrust it. Plus you can’t write Java everywhere as easily. So I don’t think any JVM language will gain the same momentum that we see is building up in the JS community now. Node is still not 1.0, and it will probably go through the same phase of early adopters -> rapid expansion -> enterprise uptake as many things before it.

      And yes, JS is not perfect. For some small subsets of programmers, it would be a horrible decision to use it. But for enough of us, it isn’t.

      Reply
      1. George

        Re: “But the JVM is owned by a corporate giant, which makes me mistrust it.”

        There are some mitigating factors (but I partially agree with you):
        (1.) Oracle doesn’t own the JVM (Hotspot) code any more than someone owns, say, the Linux kernel since both are licensed under the GPL v2. (Although Oracle never opened up the code for other JVMs, namely, JRocket and Java ME.)
        (2.) Other companies offer different JVM implementations for everything from mainframes to mobile: IBM, Azul Systems, Google (Dalvik), etc.
        (3.) Yes, Oracle owns some patents and the Java trademark, but they lost their patent case against Google so far (under appeal).
        (4.) Java Community Process – jcp.org
        (5.) Some “mistrust” could be valid in parts of the JavaScript world too: What’s to prevent some group or corporation behind a key project in the JavaScript world from going in a direction you don’t agree with – besides constraints similar to the ones I listed for Oracle? For example, if it’s true mostly Google employees work on V8 (I’m just guessing), couldn’t Google decide to change directions / fork like they did with WebKit? – http://arstechnica.com/information-technology/2013/04/does-webkit-face-a-troubled-future-now-that-google-is-gone/

        P.S. Liked your post: “Philosophy for the software engineer”

        Reply
        1. peter Post author

          Good points, thanks for sharing your thoughts.
          And I’m glad you liked the philosophy post. Something to ponder over x-mas, perhaps? I know I will…

          Reply
  13. jon

    I tell someone this phrase about once a week: “Give me someone who is good at problem solving, and I can teach them any developer language”. I consider myself platform agnostic. I know too many siloed developers that are not good problem solvers.

    Reply
    1. peter Post author

      I guess it is a maturity thing, in the beginning of your career the software development field seems so enormous (because it is) so that it makes you a bit calmer if you know what small subset of it you can identify with.

      Reply
  14. ubersoldat

    We should all stick with wood! Stop all that stone, concrete and metal non-sense. Yes, we can build higher with metal and concrete, but wood is everywhere, it’s cheap and anyone can work it. Plastic? Bah! That’s just some fad, wood toys for everyone!
    I guess you get the point. I always like to compare software engineering with already proven crafts, and no, JS is not the right tool for everything. Hell, is not even the right tool for what it was invented.
    Mind you, if tomorrow Google or Mozilla released a Python, Ruby or PHP engine which works on the browser, you can kiss goodbye JavaScript.

    Reply
  15. Anil

    Gosh, can’t believe people have so much hatred of javascript. I started my career as a C++ developer. And then moved to Java (application programming) and recently (since last 2 years). It got me a while to understand that unlike backend server side programming (where we have tonnes of languages to choose from), javascript is the only client side language that browsers understand. The concepts like function objects, closures, prototypes took a while. But once I mastered javascript, I really enjoyed front end programming.

    There may come a time when Google or Mozilla release a ruby/python engine, but till then there is absolutely no alternative to Javascript.

    Reply
  16. mamcx

    How old are you in this business? Because that is the kind of “argument” I hear about visual basic, C, fortran, java, c++.

    As a users of not-your-mainstream language (using fox when everybody say VB, delphi when must be C, python when must be PHP/Java, etc) I know, when I have used the other option (I have coded in VB, C, PHP, C#) that truly people is missing a LOT of fun.

    You say ” you’re a goddamn problem solver”. Ok, lets ride with that. If javascript is broken in so many ways, and we are trying to make js/html5/css to do things that are beyond his purpose, then of curse is problem worth solving. Maybe not for you or me, that are the users of the language, but exist a league of people that work on that. (Is good idea to think in the languages are interfaces. Maybe some people are used to dump-phones, but how dam better is to use something better, don’t you think?)

    In fact, after use more than a dozen of languages (starting with FoxPro DOS) I have developed a new appreciation in how *badly* a language could push things. For example, the way C/C++ is designed is faulty of millons of wasted dolars and security issues that are the plague for decades. The over-engineering of Java, the syntax problems of perl, the bad error messages of almost any language, the terrible multi-thread/concurrent/parallel support of most languages, the NULL, etc. Exist a myriad of litle and big problems that waste millons of dolars and hours of our times.

    Don’t bored you, as a problem solver, that you live each day with that kind of issues? And you response is” “Let’s accept that, is totally ok?”

    The solution start with the tools. Because the true is that what the tools let, is what the users do. The majority of the developers are not true geniuos, and certainly could be “happy” to use anything.

    The tools shape our minds and the way we create the solutions on them. And the worst of all? A lot of that little problems are solved problems, that are part of different languages or frameworks, but rarely, are in the top used languages.

    Is only until this decade that some ideas are coming mainstream (like CSP, or functional ideas), and are a boom in when used. And when you tool free you of do stupid things, and instead, properly push you in the right path, then, you can truly solve the business problems better, and have more free time to create new things (instead of micro-managing your language/ide/tools).

    JS is far from a *acceptable* solution. Is just that is the only one. Is so terrible, and you could test that, in how Apple/Google/Mozilla try harder and harder to workaround the limitations of it. How easy will the things be IF js were replaced! Damm, if VB will be a upgrade from that!

    Talking about the worst way of be a “problem solver”: Get stuck with only one way to do things, and that way, is not that good. Is just passable.

    Reply
  17. Charles McKnight

    While I understand your point, i.e., we should focus on the problem, I believe that you oversimplify the issues with choosing the path of a single language to solve all problems. While it is certainly possible to implement any application or system in just about any language, there are, as you note, trade-offs that must be taken into consideration. Too often, a decision is made about the language selection and that devolves into a series of (often) hostile debates over which libraries/frameworks to use. The end effect is, again as you note, that far too little emphasis is placed on understanding and solving for the problem at hand. The same holds true for any discussion that does not focus on the problem(s) to be solved. An excellent example would be the ongoing debates over native vs. web app discussions.

    I agree that every language has strengths and weaknesses, but I would argue that taking the position of “just write everything in Javascript” is, at best, an untenable one. You correctly note that Javascript has many warts and variants such as CoffeeScript and ClojureScript are introducing some degree of fragmentation at the language level although not at the bytecode level.

    A different approach might be to suggest the path followed by the GCC suite, where one can write the source code in a particular language that is translated to C and then compiled to an optimum backend target. Please do not read that statement as “translate to C” because I am merely using the GCC Suite as an example of an alternative way of thinking.

    The “best language” debate is decades old and the pursuit of the holy grail of “the one true programming language” is a quixotic quest for a non-existent treasure. Championing Javascript because it happens to be the most popular language today is on par with championing COBOL during its heyday as “the only language you’ll ever need to know.” If one focuses on solving for the problem and creating a solid solution, language selection becomes less of a religious issue and one based more on the important characteristics (performance, robustness, etc.). Experienced professional developers all realize that languages are just a set of syntax and semantics and can quickly learn any language. At this point, the real devil is selecting the appropriate libraries, using them in a consistent fashion, and following best practices with regard to coding and testing. That’s something that no language can enforce because it’s a people thing.

    To reiterate, I understand your point and agree that problem solving is far more important than language selection. That being said, it seems contradictory to me that you go on to pre-select a language based on popularity for one set of problems and present it as a solution to all problems.

    Regards,

    Charles

    Reply
    1. mamcx

      The point is, is not that simply as “languages are just a set of syntax and semantics and can quickly learn any language”. Not only is not that simply. Is complete UNTRUE.

      Syntax is more than cosmetic decoration, IS the interface. Say what is possible or not. Say if can do pointers or not. Say if is functional, array, imperative, OO, declarative. Surface the inner solutions and built-in libraries of that language (ej: map, print, GOTO, for, while, <-).

      If "the real devil is selecting the appropriate libraries, using them in a consistent fashion, and following best practices " apply to the libraries used in that language, then ALSO apply to the language itself (because is also a kind of library).

      Exist a big difference between do "SELECT Name FROM Table" than do it imperative way. The language also could do several things to improve the execution of it.

      Yes, I'm talking of the language as the whole package, not just the letters. However, the syntax is more than "sugar". Can be, like in LISP, data itself, or express, like in SQL, several things at once, or let, as in a imperative language, precise steps, or constrain, as in a typed language, how things are or not compatible.

      Reply
      1. Charles McKnight

        I’m not really following what you’re trying to say or how that you’re are attempting to refute my comments.

        Languages are demonstrably a collection syntax and semantics.

        Good developers demonstrably are able to quickly learn new languages, libraries, etc.

        Languages/Libraries/Paradigms are faddish, they come and go in popularity.

        Problem solving is not dependent upon language, library, or paradigm other than whether or not the required capabilities are available.

        A good design is created by knowing the strengths and weaknesses of the available tools, etc. and making a selection based on the trade-offs.

        Reply
  18. Carpenter

    We should all just decide on screwdrivers and solve the interesting problems instead.

    What’s that? You need to knock a nail in? Just use the handle. You need to saw a plank in half? Get scratching, you can easily hire anyone off the street to do it for you when your arm gets tired.

    Boy, I sure am glad that we’ve solved the boring problem of what tool to use, and opened up all sorts of more interesting problems like “how the hell do I achieve my goals with this badly-designed tool that is a very poor fit for my job.”

    Reply
    1. peter Post author

      The language of choice is only one of the many tools we have. I was merely suggesting that we go for one brand of screwdriver, one that can do pretty much the same thing as all other screwdrivers.

      Reply
  19. John Somedude

    I respectfully decline your request.

    Please keep your hipster WebDev opinions to yourself.
    Web Development does not contribute to the advancement of the larger field. – It is rather the embracing of the unimportant technical detail.

    HTML/HTTP/JavaScript are all a disgrace for our trade and symbolise our failing to provide humanity with adequate technology.

    Reply
    1. Duncan Bayne

      There’s nothing respectful about insulting someone using a psuedonym. If you’re going to post insults, at least have the intestinal fortitude to do so under your real name. Unless that is your real name, in which case you have my apologies & condolences.

      Reply
  20. peter Post author

    There is nothing respectful about telling someone to keep his/her opinions to his/herself.

    And as for “failing to provide humanity with adequate technology”, HTML/HTTP/JavaScript have made a huge impact on humanity.

    Reply
  21. Lena

    I read a lot of interesting posts here. Probably
    you spend a lot of time writing, i know how to save you a lot of
    work, there is an online tool that creates high quality, google friendly articles in seconds,
    just search in google – k2seotips unlimited content

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>