back to article Behold, the world's most popular programming language – and it is...wait, er, YAML?!?

The world's most popular programming language, according to devops biz Datree.io at least, it not Java, JavaScript, nor Python. Rather, it's YAML, a recursive acronym for "YAML Ain't Markup Language." That's stretching the definition of "programming language" given that YAML, a superset of JSON with little tolerance for tabs, …

  1. Anonymous Coward
    Anonymous Coward

    "Everything is becoming YAML-fied," he said. "Git is the new gateway between development and production. Everything is going from a committer into production. And all of those tools are being configured using YAML."

    Well, the moment that everything goes to some new buzzword, that's a sure sign that the end is near and it's likely to be irrelevant in the near future.

  2. Glen 1 Bronze badge

    I keep hearing about this "internet" thing. It'll never catch on...

  3. bombastic bob Silver badge
    WTF?

    everything YAML-fied? [just, no]

    Well the last 10+ years of software development has gone the way of "the bandwagon" so it's no surprise that something like *THIS* has become "the new bandwagon"

    Meanwhile, REAL development is done on REAL operating systems with REAL tools using REAL languages and no "bandwagon". See TIOBE index which has been very accurate for a very, very long time.

    /me points out that Micro-shaft tries to get everyone on THEIR bandwagon every couple of years, and then re-invents it into something else "new, shiny" and apparently abandons devs in their wake...

    I can think of a bunch of stuff - windows scripting host, ".Not", C-pound, ActiveX, Silverlight, WinRT, UWP, yotta yotta yotta moving targets all. VB was *especially* a 'moving target' from 1.0. And when nobody (but a few) jumps on the bandwagon, they move on to "yet another new, shiny" over, and over, and over, and over, and over. "Here's the new version / replacement technology, get hot patching your stuff to use it, more work for YOU, no backward compatibility, you're welcome, 'new, shiny'"

    I'd put YAML in the same category as all of THAT. *NOT* using it, adopting it, or even making it an option. I don't like JSON either. XML is tolerable, if it's not over-complicated [like the standard makes it - CDATA? Really?].

  4. Glen 1 Bronze badge

    Re: everything YAML-fied? [just, no]

    JSON > XML

  5. Long John Brass Silver badge
    IT Angle

    Re: everything YAML-fied? [just, no]

    Remember back in the day when "expert" systems and 4-GLs would render programmers obsolete?

    Hahaha good times :)

    Oh no I've run over by the hype-train! Never mind here comes the Magic Bus :/

  6. chivo243 Silver badge

    @Glen 1

    I heard some kid talking about personal mobile phones, pffft, has to be a fad...

  7. Potemkine! Silver badge

    Re: everything YAML-fied? [just, no]

    VB was *especially* a 'moving target' from 1.0.

    VB isn't and never was a programing language! I even wonder if it can be consider a language...

  8. Anonymous Coward
    Anonymous Coward

    > some new buzzword

    I was using YAML twelve years ago, and it wasn't new back then.

  9. Anonymous Coward
    Anonymous Coward

    Re: everything YAML-fied? [just, no]

    > *NOT* using it, adopting it, or even making it an option. I don't like JSON either. XML is tolerable

    In other words, XML is the only one you are more or less familiar with.

    I get that. I had the same reticence when a FOSS project I was working on moved its over-the-wire serialisation to something called JSON back in the day when everyone, myself included, were drooling over XML which, to be fair, was itself a significant improvement over the previous state of affairs. Anyway, I wasn't happy about it, especially since the JSON parser itself had to be written from scratch (in C, without malloc). I was so glad that we didn't take the easy route of going with what we liked when I saw the results. Today the protocol is orders of magnitude more expressive but it's still using the same parser and serialiser and remains, as far as I am aware, fully backwards compatible.

    Horses for courses, even if it means getting out of your comfort zone.

  10. Potemkine! Silver badge
    Trollface

    Re: everything YAML-fied? [just, no]

    VB isn't and never was a programing language! I even wonder if it can be consider a language...

    2 thumbs up & 13 thumbs down

    For the moment, 2 real developers and 13 believing they are, still counting....

  11. Anonymous Coward
    Anonymous Coward

    RedNotebook

    I came across YAML recently, while investigating the RedNotebook journal application, which uses it to store its monthly data files. I was able to convert an old home-brewed journal database that had been started in MS Access and later converted to Libre Office Base, into RedNotebook files using Python YAML bindings.

  12. Anonymous Coward
    Anonymous Coward

    Re: RedNotebook

    > I was able to convert an old home-brewed journal database that had been started in MS Access and later converted to Libre Office Base, into RedNotebook files using Python YAML bindings.

    Yep, YAML is extremely expressive while terse and easy to use (until you get into the subject of custom tags anyway) and well suited for loosely structured data.

  13. Thoguht Silver badge
    Facepalm

    HTML-only calculator?

    Yeah, right. Tens of thousands of lines of HTML to just display pre-canned screens depending on a few characters of input? It's as much a calculator as a dictionary is a novel.

  14. Glen 1 Bronze badge

    Re: HTML-only calculator?

    A look up table is how many ALUs operate. I'll allow it.

  15. bombastic bob Silver badge
    Meh

    Re: HTML-only calculator?

    ALUs are supposed to be efficient, so they do things efficiently [and if that means a lookup table, sure, whatever works].

    shoehorning a "programming language" into doing something because you can, maybe something for bragging rights in an online forum, but no REAL WORLD usefulness. I can't imagine the bandwidth requirement for downloading such an abomination... and I doubt it's pure HTML, it would probably have at least SOME javascript in it [that doesn't make it any better, probably makes it WORSE]

    in any case, I'm sure YAML is similarly "unfit for purpose" and shouldn't be called "popular" nor "a programming language".

  16. Glen 1 Bronze badge

    Re: HTML-only calculator?

    YAML is just a way of representing markup in a way that you don't have to worry about matching closing brackets/braces.

    It *is* fit for the purpose of being a markup language (Yet Another Markup Language). Shoe horning it into other purposes, or calling it a programming language is stretching things beyond reasonable-ness.

    Just because YOU haven't heard of it, doesn't make it useless. There's more on heaven and earth etc

  17. T. F. M. Reader Silver badge

    No and yes [Was: HTML-only calculator?]

    @Glen 1: YAML is just a way of representing markup in a way that you don't have to worry about matching closing brackets/braces.

    But you do have to worry about whitespace, right? That's progress all right.

    [Aside: before anyone says editors support proper indentation so whitespace is easy - editors also highlight unmatched brackets/braces/parentheses.]

    NB: this is not to knock YAML at all (see below). But relying on whitespace instead of visible grouping symbols is not a core advantage.

    And now to the positive part. To this old-timer programs and data are one and the same, configuration is data and thus an integral part of the program, and just about any project will use a number of languages and tools, each used where it's best fit for the purpose. With this mindset I am perfectly willing to consider YAML and JSON and their ilk "programming languages" that are used for describing data in arguably better ways (for readability, serialization, portability, etc.) than what is available in "real" programming languages that are in turn much better suited for describing procedures and algorithms. It looks perfectly natural to me to describe data in JSON and algorithms in python. Or whatever.

    YAML, JSON, python, C, bash, and F# are all tools of the trade, and if a SW engineer writes N lines of python and M>>N lines of YAML (feel free to count files rather than lines, or whatever measure you deem most appropriate) as a part of his project then he does more YAML than python, and that's perfectly fine with me.

    A possibly enlightening example is Google's protobuf that is also a portable serializaton format, can easily be used for configuration, looks a bit similar to JSON (at a stretch), and is compiled into "real" data structures - classes with methods and everything else - in a multitude of programming languages that you can look at as (quite human-readable, albeit less so than the original protobuf) code in your favourite programming language. Once you look at how it works you may be more open to the idea that writing such stuff is programming.

  18. Michael H.F. Wilkinson Silver badge

    Re: No and yes [Was: HTML-only calculator?]

    The border between a mark-up language and a programming language can be vague. Maybe a sensible definition of what is a programming language or not is whether it is Turing complete. If it does not allow you to write loops, I doubt it is.

    Curiously, in this sense, LaTeX is a programming language, as the ifthen package provides quite neat while and for loops, and the calc package sufficient numerical manipulation to be Turing complete. I would not want to implement anything other than LaTeX docs, packages, or class files with these features, however.

  19. Crypto Monad

    Re: No and yes [Was: HTML-only calculator?]

    LISP is a programming language, and LISP is written in S-expressions; YAML is comparable to S-expressions.

    Sadly, there are a bunch of programming languages which are indeed programmed in YAML. Two examples are Ansible and OpenStack Mistral. They are both excellent examples of Greenspun's Tenth Rule.

    But that doesn't make YAML itself a programming language.

  20. PerlyKing
    FAIL

    Miss the point much?

    @Glen 1 - "It *is* fit for the purpose of being a markup language (Yet Another Markup Language)"

    Er - as the third line of the yaml.org home page (and the article itself) states:

    YAML: YAML Ain't Markup Language

    The next paragraph explains:

    What It Is: YAML is a human friendly data serialization standard for all programming languages.

    My personal opinion is that it is more human-friendly than machine-friendly, as I always get tied up in knots when I try to use it. I find JSON easier to understand.

  21. steelpillow Silver badge
    Boffin

    HTML-only calculator? I don't think so

    Looking at the calc code (y'all did that before sounding off about it, right?), it comprises 21,351 lines, of which all but 15 are HTML. The remainder are CSS, there is no active javascript. So yes, it's just one giant boilerplate lookup table. But something active has to be in there to select which boilerplate, and that uses the CSS display property. This is the core feature that makes it "look" smart even though it isn't really. So the calculator is not in fact written in pure HTML, it is written in HTML+CSS, with the smarts all being in the CSS.

    CSS does have some more sophisticated semi-programmatic features, such as the var () function, so it it possible that the code could be much reduced. But AFAIK that could only shrink the amount of boilerplate and bury it deeper, CSS cannot provide true programmability.

  22. Reaps

    Re: Miss the point much?

    "What It Is: YAML is a human friendly data serialization standard for all programming languages."

    Who ever wrote that was taking the piss...

  23. disgustedoftunbridgewells Silver badge

    Re: HTML-only calculator?

    It is pure html, it does, etc:

    a href='#1' 1 /a

    at #1 it does:

    a href='#1*' * /a

    etc

  24. disgustedoftunbridgewells Silver badge

    Re: HTML-only calculator? I don't think so

    Anchor links are a HTML feature, not CSS.

    It doesn't require CSS at all.

  25. Fuzz

    Re: HTML-only calculator? I don't think so

    The CSS is only for appearance, it makes a bunch of links look like a picture of a calculator.

    Each button is a link which takes you to an index on the page. You can scroll up and down the individual screens.

    I'm just annoyed that every signle screen has the same spelling mistake.

  26. Alister Silver badge

    Re: Miss the point much?

    @PerlyKing

    Just because yaml.org have tried to rewrite history doesn't make it true.

    When it was first introduced, YAML was indeed Yet Another Markup Language, and not the pretentious self referential bollocks they are now claiming in an effort to make it a look like legitimate programming language.

  27. Dominic Shields

    Re: HTML-only calculator?

    I thought it a particularly nice touch that only single digits are allowed, like maybe that is trying to tell us something?

  28. Japhy Ryder

    Re: HTML-only calculator?

    23 lines of HTML, actually, plus 77 of CSS3 and a single line JSON config. Life w/o JavaScript. Refreshing. https://gist.github.com/tsironis/1622077

  29. Anonymous Coward
    Anonymous Coward

    Re: HTML-only calculator? I don't think so

    > The CSS is only for appearance, it makes a bunch of links look like a picture of a calculator.

    You could ditch the CSS *completely*, and the fundamental technique would still work in pure HTML (e.g. creating the calculators using monospace ("tt"-formatted) ASCII art would still preserve the illusion).

    Not that this makes it clever or "proves" anything meaningful about HTML, obviously.

    Quite the opposite- the red herring of CSS cleverness (and people's assumption that something smart was going on) seems to have obfuscated the fact that... yeah, it really *is* that obvious and simple a trick- just a load of static HTML pre-calculated to cover every case with the appropriate intra-document links. Duh!

    Nothing in there that couldn't be done in a "choose your own adventure" book. (#) Any intelligence or programmability was in the process used to *create* the HTML, and by the user (unwittingly) following the links.

    Also makes bleeding obvious why it can only handle single digits and single-step calculations! The number of combinations to pre-calculate (and the length of the document) would quickly grow to ludicrous- and unworkable- numbers otherwise, and I guess the whole thing could be compared to a state machine.

    (#) Albeit that "Single-Digit Calculator" would be the most boring "choose your own adventure" ever.

  30. JLV Silver badge

    Re: No and yes [Was: HTML-only calculator?]

    Ansible is configuration management software. Not a full-on programming language.

    In the context of config management, I’d take a declarative approach, as allowed by YAML, over programmatic configuration any day.

    YMMV, but I’ve sweated out both Chef and Ansible and Ansible just maps way more closely and naturally to a BASH command you’d be typing in manually.

    This is just about my perceived ease of writing, not things like scaling, speed or idempotence.

  31. steelpillow Silver badge

    Re: HTML-only calculator? I don't think so

    "The CSS is only for appearance, it makes a bunch of links look like a picture of a calculator."

    Wrong. You evidently didn't try cutting out the CSS between the <style> tags and seeing how the pure HTML actually renders. Try it now. Then eat your words. The key is whether or not the shit is *displayed*, and that is in the CSS attributes.

  32. Glen 1 Bronze badge

    Re: No and yes [Was: HTML-only calculator?]

    >But you do have to worry about whitespace, right? That's progress all right.

    I shall be more specific:

    The white space you have to worry about is on the same line as the markup, not somewhere further down the page where it's easy to confuse the nesting level.

    The resulting errors tell you *something* is wrong, but the computer doesn't know what you mean, so places the error message where it runs out of pairs which might be nowhere near where the missing/extra brace is.

    See also: "statement expected", "unexpected statement", "file is not valid JSON"

    Unless you're a super human who has never had to play hunt the missing/extra brace?

  33. Michael Wojcik Silver badge

    Re: No and yes [Was: HTML-only calculator?]

    Maybe a sensible definition of what is a programming language or not is whether it is Turing complete.

    Turing-completeness is certainly often appealed to when attempting to define "programming language" (or at least when arguing over whether some specific language is or isn't one). And it might be sensible to look to it if you want a formal definition of a programming language.

    Many people, however, will be far more interested in practical arguments for whether some language should be considered a programming language. And a great many things are Turing-complete without even vaguely resembling programming languages.

    Untyped lambda calculus is Turing-complete. Now, to some, ULC might look something like a bare-bones functional programming language, but it's not what most practicing programmers would consider a practical example of one.

    The esoteric language Unlambda has no lambda (abstraction) operator; it makes do with the S and K combinators. That's a very alien sort of programming language. But it's Turing-complete.

    XSLT is Turing-complete. The video game Dwarf Fortress is Turing-complete. Rule 110 is Turing-complete: a TC machine which can be specified in its entirety by a couple of sentences and the decimal number 110.

    If it does not allow you to write loops, I doubt it is.

    You doubt it is Turing-complete, or you doubt it's a programming language?

    "Write loops" is under-specified. Many TC languages provide "loops" solely by recursion. YAML has a reference mechanism; I haven't looked to see if circular references are specifically disallowed, but if not that's a trivial recursion mechanism. And for that matter YAML may well have a simpler iteration mechanism - I've never looked at the YAML spec.

    Minimally, I believe you can't have a TC language if it doesn't offer an unbounded iteration mechanism of some sort. That might appear as primitive abstraction and application operations (e.g. lambda calculus) or a simple conditional branch (e.g. subtract-and-branch-if-zero) or perhaps something else. But yes, you could lump those all into "some way to write loops", provided your understanding of "loop" is sufficiently broad.

  34. Alister Silver badge

    The world's most popular programming language, according to devops biz Datree.io at least, it not Java, JavaScript, nor Python. Rather, it's YAML

    <Cough> Bollocks </cough>

    Oh, I'm sorry, did I type that out loud?

  35. SVV Silver badge

    Come on now, if world famous devops biz Datree.io says it's so, how can we mere mortals dare to doubt it?

    Next you'll be telling me that bullish.it were wrong to tell me that the next big language trend was INTERCAL!

  36. JLV Silver badge

    Had you ever heard of devops biz Datree.io before?

    No? well now you have.

    Cynical, moi?

  37. cookieMonster

    Go, a scripting language??

    Nope !!

    It's a compiled language.

  38. theModge

    Re: Go, a scripting language??

    I thought that as I scrolled past: you can compile it for quite a few different platforms now, a scripting language it is not.

  39. sed gawk

    Re: Go, a scripting language??

    @cookieMonster

    Compiled vs Interpreted is not the correct axis to split languages when determining scripting vs programming.

    Scripting languages talk to the software, Programming languages talk to the hardware.

  40. Glen 1 Bronze badge

    Re: Go, a scripting language??

    >Scripting languages talk to the software, Programming languages talk to the hardware.

    I like that comparison, but it starts to fall down if you use an operating system....

    Se also: RPython

  41. sed gawk

    Re: Go, a scripting language??

    @glen1 I don't see what an operating system has to do with it.

    So if you can address memory and produce/consume exact binaries you can talk to hardware.

    So python with FFI can meet this definition. C natively meets it, Java with JNI meets it, Go/Cgo meets it.

    RPython seems like a translator from python to C, not sure if you cite this for or against.

  42. eldakka Silver badge
    WTF?

    If YAML is a programming language, then so is my httpd.conf, or my .csv I use to script installations of middleware software. Or the .ini-like file I use to dynamically build the runtime environment of all the various Java appservers my organisation runs.

  43. Adam 1 Silver badge

    And apparently the most popular language is markdown, with all those readme.md source code files all over GitHub.

  44. J27

    Disappointed

    Article title should be "Datree.io doesn't know what a programming language is.". I've never heard of this website before and now I think it's run by idiots.

  45. jh27

    Re: Disappointed

    You *think* it is run by idiots, or you *know*?

  46. Jusme
    Meh

    Makes me pine for the days of XML...

    yaml, bastard sibling of python. Love-children of the scented chip-fat smoking brigade.

    They're the the sort of "languages" I'd invent as a kid to solve a particular problem. Full of inconsistencies and hacks to make them more generally useful. Unfortunately they'll probably take over the world by sheer weight of numbers.

    Now please vacate my lawn, it's getting dark.

  47. Charlie Clark Silver badge

    Re: Makes me pine for the days of XML...

    Which problems did XML actually solve? And which ones did it create?

  48. Orv Silver badge

    Re: Makes me pine for the days of XML...

    XML proved handily that it's possible to make something verbose and inefficient for computers without actually making it human-readable.

  49. John Gamble
    Boffin

    Re: Makes me pine for the days of XML...

    "Which problems did XML actually solve? And which ones did it create?"

    I like a good cynical comment as much as the next guy, but XML is the go-to structure for highly complex formats that have to be communicated between systems, and it works exceedingly well for that, provided the data definition was designed well in the first place. Which, yes, is dependent upon the skills of the designer (not necessarily a coder, although it helps).

    So it creates no more problems than that found in most computing standards..

    For small configuration files that were slightly more complex than an INI file, XML certainly looked like too much, but I feel that was overreaction (it's not hard to simplify the tagging), and in any event it became irrelevant when JSON appeared on the scene.

    YAML, the format that isn't terribly readable, and fragile to boot, just wasn't a good idea.

  50. Ken Hagan Gold badge

    Re: Makes me pine for the days of XML...

    "XML is the go-to structure for highly complex formats that have to be communicated between systems, and it works exceedingly well for that, provided the data definition was designed well in the first place."

    Glurk! The effort that you spent shoe-horning your highly complex data definition into an XML format could have been spent with a parser generator, yielding a much more readable language that solves your particular problem (in an easily extensible way, since we can all read grammars, right?). XML is an attempt to create a format that can represent all such complex data formats at once. It is, therefore, always overkill and always less readable (both by humans and by machines) than a properly designed language.

Page:

POST COMMENT House rules

Not a member of The Register? Create a new account here.

  • Enter your comment

  • Add an icon

Anonymous cowards cannot choose their icon

Biting the hand that feeds IT © 1998–2018