Slashdot Mirror


Douglas Crockford Envisions A Post-JavaScript World (infoworld.com)

JavaScript developer (and JSON proponent) Douglas Crockford recently described "a theoretical post-JavaScript World," according to InfoWorld. Crockford "believes the web development staple needs a successor that can fix multiple programming nuances." An anonymous reader summarizes their report: Despite its status as the world's most popular language, Crockford told an audience at the Oracle Code conference, "It would be sad if JavaScript turns out to be the last language." He complained that JavaScript has two different ways of declaring variables -- let and var -- as well as two different "bottom variables" with no value -- both null and undefined. "There's an argument among language designers, should we have bottom values at all? But there's nobody who thinks you should have two of them."

According to InfoWorld, Crockford "also presented a scenario with JavaScript being turned into a purely functional programming language by getting rid of 'impurities' like date, the delete operation, math.random and object.assign. Afterward, he stressed replacing JavaScript rather than adding functional capabilities to it... The next language also should be better able to deal with multiple cores. Most languages have followed the sequential model of Fortran, executing one operation after another, he said. 'That's not how the world works anymore. We now have lots of cores available to us, which all want to be running at the same time.'"

In other news, Crockford also proposed ending the "spaces vs. tabs" debate by simply eliminating tabs altogether.

300 comments

  1. tabs4lyf by fuo · · Score: 5, Insightful
    Crockford also proposed ending the "spaces vs. tabs" debate by simply eliminating tabs altogether.

    You go to hell and you die.

    1. Re:tabs4lyf by Anonymous Coward · · Score: 3, Insightful

      After 33 years of working as a programmer, I think you're wrong. Junior devs just don't grok tabs. They interchange tabs and the wrong number of spaces and even worse, mix them. I gave-up long ago on tabs and just started using spaces. That's the only way you can work well with people not smart enough to understand tabs.

    2. Re: tabs4lyf by Anonymous Coward · · Score: 0

      Grok is the right term. They think that because it looks right in their editor that it must be right. Spaces always work. Tabs are just too complicated of a concept for the younger guys.

    3. Re:tabs4lyf by Actually,+I+do+RTFA · · Score: 3, Insightful

      Yeah, that's like me "proposing an end to emacs/vi war" by suggesting everyone uninstall emacs*. It bakes in the side you want to win.

      *I flipped a coin. No way was I going to reveal a real preference on such a hotly contested issue.

      --
      Your ad here. Ask me how!
    4. Re:tabs4lyf by Anonymous Coward · · Score: 0

      In that order?

    5. Re: tabs4lyf by Anonymous Coward · · Score: 2, Insightful

      If a dev can't grok that, you've got bigger problems to worry about.

    6. Re:tabs4lyf by Anonymous Coward · · Score: 0

      There's a debate because there's a choice. The arguments are emotional straw-grasping with the only empirical evidence showing that the existence of the choice (and by extension the nerds who stick with their choice above all others for no concrete reason other than tribalism) does nothing but sow confusion.

      The only thing that needs to die is the tab stop.

    7. Re:tabs4lyf by Jamu · · Score: 1

      I agree. If I use tabs for indention I don't care about the number of spaces they're equivalent to. The setting is also tied to the editor, and not the code, so if you look at my code on your editor, the code will have your favored indentation length.

      --
      Who ordered that?
    8. Re:tabs4lyf by Anonymous Coward · · Score: 3, Insightful

      spaces for spaces
      tabs for indentation

    9. Re: tabs4lyf by Anonymous Coward · · Score: 0

      Hell yeah bro. Thank god us sweetest bros are here. We few who understand tabs. Anyway yeah, spaces all the way. Fuck those inferiors.

    10. Re: tabs4lyf by Anonymous Coward · · Score: 0

      Extend Python: three spaces mean the end of an If block. Four spaces, the end of a case statement. Seven to end a for-loop. Six will end both an If and for (like twig). And eight is a syntax error five lines above.

    11. Re:tabs4lyf by Anonymous Coward · · Score: 0

      What's his proposition for the "1-space vs 2-spaces vs 4-spaces vs..." debate?

    12. Re: tabs4lyf by Anonymous Coward · · Score: 0

      I would seriously leave the profession if I was forced to use spaces.

    13. Re: tabs4lyf by Anonymous Coward · · Score: 0

      8 spaces in an error in the next file. You amateur.

    14. Re: tabs4lyf by CockMonster · · Score: 1

      Do what everyone else does and change your editor to insert spaces when you press tab. Of course this means you cannot edit tsv files anymore

    15. Re: tabs4lyf by dilvish_the_damned · · Score: 2

      You might want a white space between your case statement and loop end, I suggest a tab for clarity.

      --
      I think you underestimate just how much I just dont care.
    16. Re:tabs4lyf by Waffle+Iron · · Score: 2, Informative

      The problem is that if you look at the code in any tool other than your favorite editor, it's probably displayed with 8 spaces per tab, which is annoying and stupid.

      Tabs should be completely eliminated. They are a obsolete vestige left over from mechanical teletypes. If people want to adjust the apparent indent amount while they edit code, then text editors should be enhanced with a feature to scale any leading spaces on each line to arbitrary widths. There's no need to hard-code text files with special invisible magic characters just for that purpose.

    17. Re: tabs4lyf by ColdWetDog · · Score: 4, Funny

      Nine for mortal man doomed to die.

      --
      Faster! Faster! Faster would be better!
    18. Re:tabs4lyf by Anonymous Coward · · Score: 1

      Use tabs.

    19. Re: tabs4lyf by Anonymous Coward · · Score: 0

      It's much more than having the editor do the switch for me. For instance, sometimes I need to quickly navigate the whitespace with the arrow keys. In which case, spaces are infuriating.

    20. Re:tabs4lyf by Anonymous Coward · · Score: 0

      It's not people who don't understand tabs, it is text editors. You can get everyone to agree to set their tab size to four characters. But even then, when a tab is already one a tab margin, should it jump to the next tab margin or stay on the current one? That messes up everything, especially if you need to align multiple lines of comments (perhaps after variable definitions).

    21. Re:tabs4lyf by colinrichardday · · Score: 1

      *I flipped a coin. No way was I going to reveal a real preference on such a hotly contested issue.

      Oh, come on! Skeletal integrity is so overrated.

    22. Re:tabs4lyf by multi+io · · Score: 1

      I agree. If I use tabs for indention I don't care about the number of spaces they're equivalent to. The setting is also tied to the editor, and not the code, so if you look at my code on your editor, the code will have your favored indentation length.

      Chances are it'll look like crap on anything but your tab width, unless you never do any daring stuff like breaking long parameter lists into multiple lines or some such.

    23. Re: tabs4lyf by orlanz · · Score: 1

      That's because you used a devil coin!! You toss that coin into a volcano right now, you hear!?

      I am actually an emacs fan... See now that's bravery... :ducks and runs:

    24. Re:tabs4lyf by TechyImmigrant · · Score: 0

      After 33 years of working as a programmer, I think you're wrong. Junior devs just don't grok tabs. They interchange tabs and the wrong number of spaces and even worse, mix them. I gave-up long ago on tabs and just started using spaces. That's the only way you can work well with people not smart enough to understand tabs.

      Spaces required by a coding standard are also easier to automate the checking of. Just look for tabs an tag the file as wrong if there are any.
      Tabs certainly saved a few bytes when saving a few bytes mattered, but these days they do not. Editors these days are mostly very good at making spaces behave like tabs when editing. The reasons for using tabs have gone away.

      --
      I should use this sig to advertise my book ISBN-13 : 978-1501515132.
    25. Re:tabs4lyf by epyT-R · · Score: 1

      If your junior 'devs' don't understand the fucking tab key, then wtf are they doing writing code for you? This explains why so much of today's software is badly executed... bloated buggy messes.

    26. Re:tabs4lyf by epyT-R · · Score: 1

      hit tab key once vs hammer space bar, possibly missing a space.. I vote for the former.

    27. Re:tabs4lyf by phantomfive · · Score: 1

      The right way to do it is tabs to the point of indent, and spaces thereafter.

      --
      "First they came for the slanderers and i said nothing."
    28. Re:tabs4lyf by multi+io · · Score: 1

      The right way to do it is tabs to the point of indent, and spaces thereafter.

      Yeah, and how do you do that reliably and automatically? Does your editor know what constitutes the indent in every language that you're using?

    29. Re: tabs4lyf by Anonymous Coward · · Score: 0

      Uh. Maybe you should stop using MSWord to write your code. "Tab stops" in code editing environment? I don't recall ever seeing that in any editor I've used.

    30. Re:tabs4lyf by phantomfive · · Score: 1

      Emacs can do it in a lot of languages.

      --
      "First they came for the slanderers and i said nothing."
    31. Re:tabs4lyf by Anonymous Coward · · Score: 0

      Long-time Visual Studio user here. I'll Ctrl-A,Alt-E,V,T the shit out of your code. Literally. The shit. I'm sure other text editors have a similar command.

    32. Re:tabs4lyf by TechyImmigrant · · Score: 1

      hit tab key once vs hammer space bar, possibly missing a space.. I vote for the former.

      There's nothing wrong with the tab key, it's the tab character in files that will lead to the destruction of polite society. I trust that you can tell the difference. Either way it looks bad. Either you didn't know, which is really bad, or you are pretending not to know in order to hold a contrary position which is worse.

      --
      I should use this sig to advertise my book ISBN-13 : 978-1501515132.
    33. Re:tabs4lyf by epyT-R · · Score: 1

      define 'polite society'

    34. Re:tabs4lyf by Anonymous Coward · · Score: 0

      What kind of coin has Scott McNealy's face on the heads side?

    35. Re:tabs4lyf by Anonymous Coward · · Score: 0

      Meh, sounds reasonable. Tabs annoy the crap out of me (esp in make and Python - I mean seriously guys, wtf?), and vi and emacs are both bloody awful editors for entirely different reasons. Get rid of tabs, vi and emacs and the world would be a better place all round.

    36. Re:tabs4lyf by TechyImmigrant · · Score: 1

      define 'polite society'

      One in which there are no more invisible indentation errors.

      --
      I should use this sig to advertise my book ISBN-13 : 978-1501515132.
    37. Re:tabs4lyf by Anonymous Coward · · Score: 0

      Agreed.

      Ending a debate by forcing the rival side to agree with you is far from civil.

    38. Re:tabs4lyf by Anonymous Coward · · Score: 1

      Every single IDE I have ever used lets me adjust how many spaces a tab is worth, which lets me see anyone's code the way I like to see it. Unless, of course, that person rudely used spaces and hence forced me to see it their way, whether I like it or not.

      I don't care how old tabs are, nor what their intent was, I like them quite a lot. And I am far from alone in this. Therefore, tabs should not be completely eliminated.

      You state your opinion as if it is some sort of objective truth that stands apart from preference. Ridiculous. Many people like tabs, so they will stick around, whether you like them or not.

    39. Re: tabs4lyf by bigjocker · · Score: 2

      One for the dark lord in his dark thong

      --
      Life isn't like a box of chocolates. It's more like a jar of jalapenos. What you do today, might burn your ass tomorrow.
    40. Re:tabs4lyf by Anonymous Coward · · Score: 0

      I don't want to work (and will not work) with a programmer who can not use tabs. I refuse merges with spaces and if someone is too daft to understand that I want tabs in my code bases then they don't deserve to work for me.

      You might say I'm an ass hole. I just want one standard for indenting code and everyone on earth has a tab key installed on their keyboard.

    41. Re:tabs4lyf by Anonymous Coward · · Score: 0

      Right? I'd fire someone on the spot if they tried to argue that their code would be submitted with spaces. The standard for my repos is tabs. Deal with it or there's the door.

    42. Re: tabs4lyf by Anonymous Coward · · Score: 1

      This. Sounds like a good test for the initial trial period most new employees go through: if they're still not using tabs correctly at the end of that time then you don't want them writing code for you anyway.

    43. Re:tabs4lyf by The_Noid · · Score: 1

      Yes! Lets change all editors to add a feature so that people can change a setting to make indentations show in the size they want, instead of just using the feature any decent editor already has that allows people to show indentations in the size they want.

      If you're changing all editors you should just implement Elastic Tabstops (http://www.nickgravgaard.com/elastic-tabstops/), since that's the best way to indent code.

    44. Re:tabs4lyf by TheRaven64 · · Score: 1

      Tab is a character that means 'indent one level to the next tabulator'. It doesn't mean 'advance n spaces'. The width is not encoded by the character, so devs can freely select anything from one to eight spaces, depending on their preferences.

      --
      I am TheRaven on Soylent News
    45. Re:tabs4lyf by TheRaven64 · · Score: 1

      I have my editor set up to display tabs, so I get a nice coloured shape for the indent level on the left. Spaces to the left aren't coloured, so I get a stronger visual clue for indentation than alignment. You can't do this if you're using the same character for indentation and alignment.

      --
      I am TheRaven on Soylent News
    46. Re:tabs4lyf by AntiSol · · Score: 1

      Aah, it's been a while since I had a good old tabs v spaces debate.

      Spaces required by a coding standard are also easier to automate the checking of


      if (preg_match('/^\ \ +/',$line)) {
              $ok = False;
              $errors[] = "Space indenting on line $linenumber of '$filename'. Check your editor's indentation settings.";
      }

      Yup, that was pretty complicated.

      Tabs certainly saved a few bytes when saving a few bytes mattered, but these days they do not.

      While this is true, file size has never been a primary reason why I use tabs.

      The reasons for using tabs have gone away.

      Nope. They're actually more relevant now that we have such abundance of portable devices. I use tabs for 2 main reasons:
      1. user preference: I might like a tab to equal 4 spaces but my colleague might like 8 or 42 or 32767 or 0. I don't care what he uses and vice-versa because we both just use tabs and configure our editors to the tab width we like.

      As a subset of this reason, I can configure different tab widths on different devices. So when I'm coding on a device with a small screen, which I do fairly often, I can configure a smaller tab width (I use 2 rather than my regular 4) to get better mileage out of my limited screen real estate. Now I can move the file back and forth between my desktop and my portable and the tab width automatically adjusts itself.

      2. I'd rather press tab 3 times than space 8 times.

      Editors these days are mostly very good at making spaces behave like tabs when editing.

      Keyword: mostly. Not all. Even really primitive editors like windows notepad support tab properly.

    47. Re:tabs4lyf by Anonymous Coward · · Score: 0

      This description is unhelpful for people who don't have and can't install visual studio. But I presume you're talking about having the editor automatically convert space indenting to tabs?

    48. Re:tabs4lyf by Anonymous Coward · · Score: 0

      Not true at all, both sides do have legitimate advantages and disadvantages.

      It's just that tabs have more advantages and fewer disadvantages.

    49. Re:tabs4lyf by Anonymous Coward · · Score: 0

      Every single IDE I have ever used lets me adjust how many spaces a tab is worth, which lets me see anyone's code the way I like to see it. Unless, of course, that person rudely used spaces and hence forced me to see it their way, whether I like it or not.

      This

    50. Re:tabs4lyf by Anonymous Coward · · Score: 0

      I honestly don't bother.

      VisualStudio has an "Automatic Format" feature that "just works". It may not be ideal, but I have more important things to worry about (like does the software work well? Is the design any good?) than what the source code looks like.

    51. Re:tabs4lyf by Anonymous Coward · · Score: 0

      If your indentation is invisible, then your editor is broken.

    52. Re:tabs4lyf by munch117 · · Score: 1

      Why would you care? You can make your editor show whatever indent you like. Just tell it to display leading spaces double-wide or half-wide or whatever you want.

      Your current editor may not have that feature, but it could have. As long as the format stored on disk uses spaces, then it is trivial to infer which indent was used. Emacs (and many other editors I'm sure) can do that part already. So even if spaces are used on disk, your editor UI could display it to you exactly as if tabs were used.

      But it doesn't work the other way around: If tabs are stored on disk, then the information is just not there. You can't reliably guess the indent the previous author used. That's why the files stored on disk need to use spaces.

    53. Re:tabs4lyf by Junta · · Score: 1

      Even really primitive editors like windows notepad support tab properly.

      Well there's that, and there's also not exactly a non destructive 'divide the leading spaces by two' or 'multiply leading spaces by two' to get the changeable tab visualization. Even if there were, the best way is tab indent for code level, then space indent for visual indent on continuations past the code block level.

      --
      XML is like violence. If it doesn't solve the problem, use more.
    54. Re:tabs4lyf by Junta · · Score: 1

      There is this infestation of 'Junior' (cheap and you get what you pay for) developers in the industry. I'm not saying 'Junior' as in starting out their career and with some guidance they will get better, I'm saying people over a decade into their career and still hopeless, and therefore cheap and persistently cheap.

      Too much management thinks that picking the right process means they can get decent result out of whatever people they feel like, under insane collaboration constraints like 12 hour offset in time zone within a team.

      Unrelated rant is unrelated...

      --
      XML is like violence. If it doesn't solve the problem, use more.
    55. Re:tabs4lyf by angel'o'sphere · · Score: 1

      Which tools except editors do you use to "look at code"?

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    56. Re:tabs4lyf by Junta · · Score: 1

      I assume you mean with only spaces. A proper tab centric style can have spaces after tabbing to the code block level (for visual alignment of continuation)

      --
      XML is like violence. If it doesn't solve the problem, use more.
    57. Re: tabs4lyf by Junta · · Score: 1

      Changing tabstop depending on situation is the primary reason I think tabs are useful.

      --
      XML is like violence. If it doesn't solve the problem, use more.
    58. Re:tabs4lyf by angel'o'sphere · · Score: 1

      Erm, I don't get it.
      What is the difference between "indentation" and "alignment"?

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    59. Re:tabs4lyf by Junta · · Score: 1

      text editors should be enhanced with a feature to scale any leading spaces on each line to arbitrary widths

      Nice idea, but will fall apart with the convention of tab indentation to indicate code block, then spaces to visually align continuation.

      --
      XML is like violence. If it doesn't solve the problem, use more.
    60. Re:tabs4lyf by AmiMoJo · · Score: 1

      That's why spaces-to-tabs and code beautification are essential features of any editor.

      You get a single "why did you commit every file in the repo with no visible changes?!" and form then on it's pretty much invisible maintenance when you edit individual lines.

      Or just don't let anyone else work on your code, that's the easiest option.

      --
      const int one = 65536; (Silvermoon, Texture.cs)
      SJW, n: "Someone I don't like, and by the way I'm a fuckwit" - AC
    61. Re:tabs4lyf by AmiMoJo · · Score: 1

      The great thing about tabs is that you can set them to whatever width you like and the indented code looks fine. No arguing, everyone can have their own preferred setting, even if it is wrong.

      Coding conventions can facilitate this. People say you need spaces to make stuff align, but you don't.

      if (
          condition1 ||
          condition 2
      )

      Looks good with any tab setting, everyone is happy.

      --
      const int one = 65536; (Silvermoon, Texture.cs)
      SJW, n: "Someone I don't like, and by the way I'm a fuckwit" - AC
    62. Re: tabs4lyf by murdocj · · Score: 1

      in fortran i used to space over 8 instead of 7 just to make sure i missed column 6 (continuation card)

    63. Re: tabs4lyf by murdocj · · Score: 1

      you don't have a "tab == x spaces" in your dev environment?

      by the way, there's NOTHING wrong with leading tabs... as long as you ALWAYS use tabs. Convenient thing is that if I like 2 space indentation and you like 4 space indentation, we can both have what we want, as long as no one is converting leading tabs to spaces.

    64. Re:tabs4lyf by Anonymous Coward · · Score: 0

      Enjoy your time as a petty dictator.

    65. Re:tabs4lyf by angel'o'sphere · · Score: 1

      Did you accidentally substitute "space" for "tab" and vice versa in your post?
      Your post makes no sense.
      It is actually just the opposite way.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    66. Re:tabs4lyf by Waffle+Iron · · Score: 1

      "grep", "less", text viewers in file manager programs... the list goes on and on.

      Lately, one of the most important is web browsers, since so many people are moving development work flow to "the cloud". There are code review tools, code verifier tools, version control system interfaces, etc. Unless the developers of these tools take pains to allow for flexible formatting (which is rare), tabs will probably display with their 8-space default.

      Just look at github, for example. Code with tabbed indents displays with 8 spaces.

    67. Re:tabs4lyf by Waffle+Iron · · Score: 1

      No arguing

      Lol. Most of the comments on this article are arguing about tabs.

    68. Re:tabs4lyf by TheRaven64 · · Score: 1

      Indentation conveys information about the scoping depth, alignment is aesthetic. All lines in a block will have the same indentation, but wrapped lines may have some additional spaces at the start to align them with something from the same expression (e.g. aligning all arguments in a function call).

      --
      I am TheRaven on Soylent News
    69. Re: tabs4lyf by Anonymous Coward · · Score: 0

      Its better then what we have now.

      The atom editor for a while would destructively alter tabs to spaces on *open*

      Filed a bug ticket, it was expected behaviour. What the fuck. The tools can't even be trusted

    70. Re: tabs4lyf by Anonymous Coward · · Score: 0

      I came here to post this. Hi fuck yourself. Lol. I like my tabs equal to 4 spaces. Swift has let and var. And null and undefined have purpose. Maybe we should just get rid of all other languages and only use JavaScript.

    71. Re:tabs4lyf by TechyImmigrant · · Score: 1

      There you go again.

      --
      I should use this sig to advertise my book ISBN-13 : 978-1501515132.
    72. Re:tabs4lyf by Jamu · · Score: 1

      The tab-width makes no difference to my code. Tabs are there purely for indentation and nothing else. The spaces are there to space, not align.

      --
      Who ordered that?
    73. Re: tabs4lyf by Anonymous Coward · · Score: 0

      What kind of incompetent mollusks are you hiring?

    74. Re: tabs4lyf by Anonymous Coward · · Score: 0

      Ewww. Opening paren not symmetric with last paren. Logical or operator doesn't span both of the affected lines. Yuck.

    75. Re: tabs4lyf by gnasher719 · · Score: 1

      by the way, there's NOTHING wrong with leading tabs... as long as you ALWAYS use tabs. Convenient thing is that if I like 2 space indentation and you like 4 space indentation, we can both have what we want, as long as no one is converting leading tabs to spaces.

      No, that doesn't work. Indentation isn't used only for the nesting level. It's also used for the indentation of second and further lines of multi-line statements.

    76. Re: tabs4lyf by murdocj · · Score: 2

      as I said, if the leading space on line is tabs, you are fine, including multi-line statements. I know, I've done it. And if you want to see two spaces per tab and I want to see 4 spaces per tab, we both can get what we want. Trust me, it works fine. Just requires people to pay attention to what the group wants, rather than insisting on going their own way, no matter what.

    77. Re:tabs4lyf by Anonymous Coward · · Score: 0

      I'm not sure I understand why. Wouldn't tab be more useful for Python, since 1 tab = 1 logical indentation, instead of n spaces = 1 logical indentation, where n depends on the preferred coding style of whoever's in charge of the repo?

    78. Re:tabs4lyf by tender-matser · · Score: 1

      debuggers?

    79. Re:tabs4lyf by TechyImmigrant · · Score: 1

      :set expandtab :retab

      Problem over.

      --
      I should use this sig to advertise my book ISBN-13 : 978-1501515132.
    80. Re:tabs4lyf by Anonymous Coward · · Score: 0

      GP here. I didn't mean that they didn't understand them at all. I specifically used the word grok which my dictionary defines as "to understand intuitively or by empathy, to establish rapport with." It's not that they don't use them correctly most of the time. It's that they sometimes screw-up like when, for example, using nano to do a quick and dirty edit to a file before committing changes rather than waiting on IntelliJ to load. Also, some of my coworkers are more web designer than web developer so they get it wrong. I agree with you about "bloated buggy messes," but not for this reason.

    81. Re:tabs4lyf by AntiSol · · Score: 1

      I'll just copy-paste the part of my post you completely ignored while you were breaking the VCS:

      Nope. They're actually more relevant now that we have such abundance of portable devices. I use tabs for 2 main reasons:
      1. user preference: I might like a tab to equal 4 spaces but my colleague might like 8 or 42 or 32767 or 0. I don't care what he uses and vice-versa because we both just use tabs and configure our editors to the tab width we like.

      As a subset of this reason, I can configure different tab widths on different devices. So when I'm coding on a device with a small screen, which I do fairly often, I can configure a smaller tab width (I use 2 rather than my regular 4) to get better mileage out of my limited screen real estate. Now I can move the file back and forth between my desktop and my portable and the tab width automatically adjusts itself.

    82. Re:tabs4lyf by trenobus · · Score: 1

      Crockford is half-right. We need to get rid of spaces too. I understand that linear text is a very versatile way to express programs, but it really lacks expressive power. Basically almost all of its expressive power comes from the syntax of the language you're using. Maybe that's a small part of why we have so many languages. Imagine if code were written in something like HTML, and when you edit it, your CSS (or CSS-like) settings determine how it looks. In fact you might have different CSS settings to emphasize different things in the code, with some parts being visible only in certain views. Imagine tools which could analyze the code in some way, perhaps involving external data such as a run profile, or a repository history, and generate a new view.

      I understand that this would require a lot of tooling. I also think that any approach that doesn't work for all popular languages is not going anywhere. But there are a lot of concepts which are common across programming languages. Obviously one of the tools that would be needed is one that takes a linear text file in some language, and uses knowledge of that language to produce a marked-up output. We already have editors which understand something about specific languages, but they need to also understand the markup. For compilation, I think it should be possible to have a tool to strip out the markup, which works for any language.

      Jupyter Notebooks are an interesting development in programming expressiveness. But their focus seems to be more on expressing the integration of the program code and the results of running the program. I actually think that's a great way to present scientific results. But when it comes down to code blocks in a notebook, it's back to linear text. It's ironic really, since the linear text actually is embedded in markup.

      Look, I know it took the prokaryotes a long time (~1 billion years) to evolve into eukaryotes, but it was worth it, wasn't it? And what I'm proposing is not nearly as difficult.

    83. Re:tabs4lyf by TechyImmigrant · · Score: 1

      I'll just copy-paste the part of my post you completely ignored while you were breaking the VCS:

      Nope. They're actually more relevant now that we have such abundance of portable devices. I use tabs for 2 main reasons:
      1. user preference: I might like a tab to equal 4 spaces but my colleague might like 8 or 42 or 32767 or 0. I don't care what he uses and vice-versa because we both just use tabs and configure our editors to the tab width we like.

      As a subset of this reason, I can configure different tab widths on different devices. So when I'm coding on a device with a small screen, which I do fairly often, I can configure a smaller tab width (I use 2 rather than my regular 4) to get better mileage out of my limited screen real estate. Now I can move the file back and forth between my desktop and my portable and the tab width automatically adjusts itself.

      Working with hundreds of other engineers on the same body of code generally requires that you all choose the same thing. The 'same thing' when you use tabs also involves everyone choosing the same tab width. There is no such parameter you need to agree on if you just enforce the use of spaces. I've worked on multi engineer projects for 25 years and every last one of those projects mandated no tabs for exactly that reason. If you are working on small things, then have fun with it, but at some point you have to work with others.

      --
      I should use this sig to advertise my book ISBN-13 : 978-1501515132.
    84. Re:tabs4lyf by AntiSol · · Score: 1

      generally requires that you all choose the same thing

      Yep, and it's simple: tabs. And that way everyone can have their preferred indentation width and everything is being used as intended, and we can all live together in peace and harmony. It's really nice!

      The 'same thing' when you use tabs also involves everyone choosing the same tab width.

      No, it really doesn't.

      There is no such parameter you need to agree on if you just enforce the use of spaces.

      Wrong. With spaces you'll need to agree on indentation width. Either that or you'll end up with inconsistent indentation and because spaces are in use it'll be harder to automatically fix with something like :retab because the editor will have a hard time making sense of it. With tabs the width is irrelevant and can be up to each individual / device. The way nature intended.

      I've worked on multi engineer projects for 25 years and every last one of those projects mandated no tabs

      So what you're saying is that you've never actually worked with tabs on a multi-engineer project. You sound like someone who is super-qualified to tell me about the pitfalls of tabs in an environment like that.

      If you are working on small things, then have fun with it, but at some point you have to work with others.

      Yep, and in all the time I've been working on multi-engineer projects I've never had tabs cause a real problem. Sure, every now and then a junior dev might screw up a file because he doesn't understand the tab settings in his IDE, but you can easily revert the commit and teach him how tabs work, it's really not complicated. And this is also a problem you'll have if you use spaces. OTOH I have seen more than a few projects in "mandate spaces" shops with inconsistent indentation due to devs not changing their tab width (or, more fun, insisting on using their preferred tab width in defiance of the style guide).

    85. Re:tabs4lyf by brantondaveperson · · Score: 1

      If the whitespace debate appears so complex that your Junior devs can successfully write software, but can't understand the nuances of how you approach tabs / vs. spaces, I'd almost, respectfully, suggest that you might be over-thinking it slightly.

      Two spaces. Get over it. Write good code.

    86. Re:tabs4lyf by UnknownSoldier · · Score: 1

      > People say you need spaces to make stuff align, but you don't.

      Incorrect.

      /**/ if( foo ) { ... }
      else if( bar ) { ... }

      I shouldn't need the /**/ to align indentation but using a tab breaks the correct indentation.

    87. Re:tabs4lyf by Anonymous Coward · · Score: 0

      I think he's suggesting that the editor be more intelligent than the author. unfortunately, that may be true

    88. Re: tabs4lyf by Anonymous Coward · · Score: 0

      We took a vote, 3 was the average favorite. Everyone is bitching and team unity has improved.

    89. Re:tabs4lyf by syntotic · · Score: 1

      Hey! I just got a multi-programmable hunched mouse to have tab under my finger and some guy wants to eliminate tabs altogether? I would consider adding half-tabs, though. More whitespace, it seems useful.

    90. Re: tabs4lyf by Anonymous Coward · · Score: 0

      My parser omits whitespace, it can much less count it... I had to revert to AI to parse python. Bu. :|

    91. Re: tabs4lyf by Anonymous Coward · · Score: 0

      It is called "Tabs to indent, spaces to align" and it is great. Nobody seems to understand it though. The big problem is if you use tabs to align because then it goes wrong when somebody changes the tab size...

    92. Re: tabs4lyf by Anonymous Coward · · Score: 0

      ... And it looks like this http://slashdot.org/comments.pl?sid=9600919&cid=52815801

    93. Re:tabs4lyf by Anonymous Coward · · Score: 0

      Spaces required by a coding standard are also easier to automate the checking of

      I've worked on multi engineer projects for 25 years

      You have 25 years experience and you don't know how to regex?

    94. Re:tabs4lyf by munch117 · · Score: 1

      Did you accidentally substitute "space" for "tab" and vice versa in your post?

      No I did not.

      Your post makes no sense.

      I'm sorry I didn't log in sooner to notice your reply; by now the discussion is long gone and I'm not going to take the time to explain.

  2. End it by eliminating spaces by Anonymous Coward · · Score: 1

    Who in his right mind wants to use spaces for indentation. That's just bs.

    1. Re:End it by eliminating spaces by WarJolt · · Score: 0

      Most people on github.

    2. Re:End it by eliminating spaces by Anonymous Coward · · Score: 0

      Why would anyone not want that?

      The only "reason" I can think of to not want to use spaces is because you're too dumb to understand that editors can interpret the tab key to mean "insert enough spaces to reach the next tab stop".

    3. Re:End it by eliminating spaces by Chris+Mattern · · Score: 4, Funny

      Wellyoucan'teliminatedspacesbecausethey'dstillbeneeded.Soifyouwanttoeliminatejustonethingit'dhavetobetabs.

    4. Re:End it by eliminating spaces by Anonymous Coward · · Score: 1

      That's not possible if the tab stop isn't an integer number of spaces away.

    5. Re:End it by eliminating spaces by thegarbz · · Score: 3, Funny

      Is that German?

    6. Re:End it by eliminating spaces by Richard_at_work · · Score: 2

      Its not Welsh, too many vowels...

    7. Re:End it by eliminating spaces by slapout · · Score: 1

      No, it's the original Klingon.

      --
      Coder's Stone: The programming language quick ref for iPad
    8. Re:End it by eliminating spaces by timq · · Score: 1

      You misspelled "Vogon".

  3. Tabs v. Spaces by shellster_dude · · Score: 1, Insightful

    I really don't care which one someone prefers, what I can't stand is not having a standard translation between the two. I wish IDE's, programming languages, and text editors would just pick an arbitrary value like 4 spaces = 1 tab and stick to it. Then, we could let people use whichever they choose.

    1. Re:Tabs v. Spaces by Anonymous Coward · · Score: 1

      I agree, provided the arbitrary value is eight spaces per tab.

    2. Re:Tabs v. Spaces by helga+the+viking · · Score: 2

      But you can use a regular expression to replace tabs with spaces or the opposite way around? That's what i do anyway, generally i don't see tabs, spaces or positioning of curly braces as issues at all. People have their arguments but its not worth mentioning as its easily solved with one command in say vim or whatever powerful ide does regex. Even better yes please to an entire ecosystem of languages. Its one of the fundamental flaws of software engineering. We bend the spoon because we don't have time to make a soup ladel. Stuff that should be competed out of existence [bent spoons] gets band-aided and adopted by everyone.

    3. Re:Tabs v. Spaces by Anonymous Coward · · Score: 1

      I had a visually impaired colleague, who needed to use a large font to be able to read the code. Because of that, 4 spaces per tab (my preferred setting) would cause too much indentation in his editor.
      So yeah, just because 4 spaces per tab works for you and me, doesn't mean it should be hard coded to that value for everyone.

    4. Re: Tabs v. Spaces by Anonymous Coward · · Score: 0

      Not if you use a proportional font. Although 4 spaces would be close in your example above (you use 8 spaces).

    5. Re:Tabs v. Spaces by Dutch+Gun · · Score: 2

      Even better yes please to an entire ecosystem of languages. Its one of the fundamental flaws of software engineering.

      At work, I write game and engine code in C++, some platform-specific Mac stuff in Objective-C, tools in C#, all managed by a build system written in Java, customized with Python, and Bash and Powershell scripts, with a web interface in Javascript. And that's just the languages I've interacted with myself.

      Domain-specific or specialty languages work great in other industries, so don't blame it on "software engineering". This is problem for web developers.

      --
      Irony: Agile development has too much intertia to be abandoned now.
    6. Re: Tabs v. Spaces by Anonymous Coward · · Score: 0

      Obviously we all code in a mono spaced font. I used 4 spaces in my example, and Shitdot formatted it like crap; even adding an extra line.

    7. Re: Tabs v. Spaces by Anonymous Coward · · Score: 0

      The unit to describe tabs should be pixels, 2 pixel feet of them to be exact, that's 24.

    8. Re: Tabs v. Spaces by OrangeTide · · Score: 1

      What do you mean it lines up?

      Also, why does your curly brace get its own line?

      As for columns, I really only need 72 columns for my printer or typewriter so the margins work out nicely. Having 80 columns on my CRT gives me some space to hold rulers and other information.

      Why have two 100 column windows on your widescreen desktop when you can have three or four 80 column?

      --
      “Common sense is not so common.” — Voltaire
    9. Re:Tabs v. Spaces by AntiSol · · Score: 2

      But you can use a regular expression to replace tabs with spaces or the opposite way around?


      user@host:~/code $ git log --stat

      commit: 10048
      user: tabluvr
      message: replace idiotic spaces with tabs
      files changes: 10000
      lines changed: 1000000

      commit: 10047
      user: spaces4eva
      message: fix broken tab formatting by replacing with spaces
      files changes: 10000
      lines changed: 1000000

      commit: 10046
      user: tabluvr
      message: fix mangled indentation from previous commit
      files changes: 10000
      lines changed: 1000000

      commit: 10045
      user: spaces4eva
      message: replace tabs with spaces
      files changes: 10000
      lines changed: 1000000

      (more)

    10. Re:Tabs v. Spaces by angel'o'sphere · · Score: 1

      That is not insightfull, but ignorant.
      In every IDE and that includes "low level editors" like vi/vim you can decide in the settings how many spaces are "displayed" for one tab.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    11. Re:Tabs v. Spaces by shellster_dude · · Score: 1

      Except that editors (I've look at you vim) still fuck it up in terms of lining up the tabs and spaces equally. In addition, my point was on standardization. Alice chooses eight because she's a web dev, Bob chooses 4 because he's a sane programmer, and Allen over in the corner chooses 2 because he thinks that whitespace is an abomination. None of that fixes the problem.

    12. Re:Tabs v. Spaces by gnasher719 · · Score: 1

      I really don't care which one someone prefers, what I can't stand is not having a standard translation between the two. I wish IDE's, programming languages, and text editors would just pick an arbitrary value like 4 spaces = 1 tab and stick to it. Then, we could let people use whichever they choose.

      Here's what Xcode does: You have several settings. One whether you prefer tabs or spaces in your source code. Two how many spaces does a tab equal. Three how much indentation. And four what pressing tab does.

      Now the practical reality is: If you don't pick tab = 4 spaces and indent = 4 spaces then you're off my team. I'm not talking to you. The last point, what pressing tab does exactly (indenting or inserting a tab character) is up to you. The first point, whether tab or spaces are preferred, make basically no difference - except if two people with different settings edit a file, you will have gratiutious changes. Select all, copy, paste will change everything to your preferences, and then you are in diff hell. So the whole team _must_ agree on one setting.

    13. Re:Tabs v. Spaces by angel'o'sphere · · Score: 1

      I don't get it.
      You use tabs. Set the tab width you want in your editor, and thats it.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  4. Why on Earth? by Anonymous Coward · · Score: 4, Interesting

    >also presented a scenario with JavaScript being turned into a purely functional programming language by getting rid of 'impurities' like date, the delete operation, math.random and object.assign.

    Getting rid of those things does not make JS a functional programming language.

    Also, writing in purely functional languages just fucking sucks, they aren't and won't ever be a multi-core-coding panacea, and if highly-parallel-performance computing is your concern for the future, being ignorant to how parallel processing environments work by "letting the compiler decide" isn't going to make things better.

    1. Re:Why on Earth? by Anonymous Coward · · Score: 0

      Getting rid of those things does not make JS a functional programming language.

      Given a recent talk that I saw Crockford give, I'm pretty sure that

      a) Crockford is an opinionated jackass, and
      b) he's only got a superficial level of understanding of the nuances of programming languages.

      He sure as hell doesn't know what a monad is. (To be fair, there are lots of people that don't understand monads, but unlike most, he pretends he does.)

    2. Re: Why on Earth? by Anonymous Coward · · Score: 0

      So are you going to tell us what a monad is then?

    3. Re: Why on Earth? by Anonymous Coward · · Score: 0

      Singular of gonad?

    4. Re: Why on Earth? by SharpFang · · Score: 1

      My gonads are so massive they reached singularity and turned into monad.

      --
      45 5F E1 04 22 CA 29 C4 93 3F 95 05 2B 79 2A B2
    5. Re:Why on Earth? by Anonymous Coward · · Score: 0

      Do you understand the meaning of "also"? There was this scenario of further tweaking JS which as you point out doesn't make it a functional language, and another scenario to create a functional JS.

    6. Re: Why on Earth? by Anonymous Coward · · Score: 0

      Here you go: Monads and Gonads.

  5. It's impossible to track single page app... by Anonymous Coward · · Score: 0

    usage with JavaScript. You can track the hashChange event, but that means you have to use the anchor # hack. The design of the language and features is just a disaster.

    1. Re: It's impossible to track single page app... by Anonymous Coward · · Score: 0

      And security was added on after the fact rather than designed in, like Microsoft does, so many things require hacks to do.

    2. Re:It's impossible to track single page app... by Anonymous Coward · · Score: 0

      then don't use it, your code sucks, do it another way, abstract

    3. Re: It's impossible to track single page app... by Anonymous Coward · · Score: 0

      and that has nothing to do with JavaScript and everything how browsers work. Put in your favorite language as a replacement and you will still have the same issue.

    4. Re: It's impossible to track single page app... by Anonymous Coward · · Score: 0

      "Microsoft designed in security"

      Not sure if serious.

  6. Lots of cores? by Anonymous Coward · · Score: 1

    Make it easy to use all cores? The last thing I want is for a web page to be able to hog all the cores on my machine.

    1. Re:Lots of cores? by Tablizer · · Score: 1

      Make it easy to use all cores? The last thing I want is for a web page to be able to hog all the cores on my machine.

      Ad and eye-candy shovers would indeed try to use up every bit of it to make 4D dancing puppies drinking the new new Coke or whatnot. They won't optimize it because the problem is yours, not theirs.

    2. Re: Lots of cores? by Anonymous Coward · · Score: 0

      Bingo.
      You get slices of one core. Those other slices and cores are for me to open other pages and do other things.

  7. Don't live in sin by Anonymous Coward · · Score: 0

    Tabs for indentation, spaces for alignment, unless you will conform to my preference for indentation width, which I am not going to tell you.

    1. Re:Don't live in sin by swilver · · Score: 1

      ...and don't forget to check if you did it right by changing the tab size setting in your IDE to several values before saving!

  8. Multi core programming is too much work by rsilvergun · · Score: 1

    for the kinds of simple data driven apps JavaScript is used for. The current single threaded model + callbacks works just fine for the most part, and promises solve most of the syntax nightmares (e.g. the Pyramid of Doom). I don't need to play Quake 5 written in JavaScript. That's what C's for.

    As for the rest of his complaints, well, it's mostly there for backwards compat. Don't use it if you don't want to.

    --
    Hi! I make Firefox Plug-ins. Check 'em out @ https://addons.mozilla.org/en-US/firefox/addon/youtube-mp3-podcaster/
    1. Re:Multi core programming is too much work by Anonymous Coward · · Score: 0

      There is no way a parallel and concurrent ready future Javascript would offer threads directly for the untold masses of foot-shooters. It will be something more abstract with things like green threads and coroutines under the hood. Not that I know anything about modern Javascript.. =)

    2. Re:Multi core programming is too much work by tepples · · Score: 1

      I don't need to play Quake 5 written in JavaScript. That's what C's for.

      Until you find that a program written in C was compiled for an instruction set and operating system other than that of your computer. Then what do you do?

    3. Re: Multi core programming is too much work by pchasco · · Score: 1

      JavaScript already supports multi threading via web workers. It functions a bit like .NETs threadpool, only with even more restrictions to prevent common issues with memory sharing and calls to non thread safe APIs.

    4. Re: Multi core programming is too much work by Anonymous Coward · · Score: 0

      And mozilla has recently added SharedArrayBuffer to firefox to get around the issues of shared memory, surely introducing a whole lot of new concurrency issues. Sharing memory currently requires constant postmessages between workers to something like a single worker that reads and writes to its own space .. not easy at all.

    5. Re:Multi core programming is too much work by angel'o'sphere · · Score: 1

      He buys a new computer, facepalm. Oh, an old one .....
      That was easy ;D

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    6. Re: Multi core programming is too much work by Zero__Kelvin · · Score: 1

      Duh ... Recompile?

      --
      Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
    7. Re:Multi core programming is too much work by tepples · · Score: 1

      I imagine that most people cannot afford to buy a new computer for each application that someone wants to run.

    8. Re:Multi core programming is too much work by Anonymous Coward · · Score: 0

      Then what do you do?

      Recompile it with a new instruction set target.

      If it still can't run because of the code being written to non-standard compliance... then that's an entirely different issue.

    9. Re:Multi core programming is too much work by SharpFang · · Score: 1

      Usually then, you do without.

      Regardless, the new computer will be cheaper than whatever would be needed to run the equivalent code in Javascript.

      --
      45 5F E1 04 22 CA 29 C4 93 3F 95 05 2B 79 2A B2
    10. Re:Multi core programming is too much work by tepples · · Score: 1

      the new computer will be cheaper than whatever would be needed to run the equivalent code in Javascript.

      Not necessarily. In many such cases, "whatever would be needed to run the equivalent code in Javascript" is the computer you already own and therefore $0.

    11. Re:Multi core programming is too much work by tepples · · Score: 1

      Recompile it with a new instruction set target.

      If you have access to only the binary, and only the publisher has access to the C source code, how feasible is it to recompile the binary from x86, x86-64, ARM, or AArch64 object code to the object code of your preferred instruction set?

  9. We don't need a new language by Uranium+Willy · · Score: 5, Interesting

    We need a standardised virtual machine that languages can be compiled to run on, that way the language of choice is more free to change. And Web browsers developers can deal with a simpler virtual machine language to translate.

    1. Re:We don't need a new language by robmv · · Score: 5, Informative
    2. Re:We don't need a new language by Alain+Williams · · Score: 1

      How about Parrot ? It is the Perl 6 VM, a Javascript implementation is in the works, several other languages are also being developed.

    3. Re:We don't need a new language by OxbowSEO · · Score: 1

      What do you mean by a 'standardized virtual machine'?

    4. Re:We don't need a new language by Gravis+Zero · · Score: 5, Insightful

      We need a standardised virtual machine that languages can be compiled to run on

      NO!!! What we need is for people stop using scripting to turn web pages into applications when 99.99% of the time I JUST WANT TO READ THE GODDAMNED WORDS ON THE PAGE!

      --
      Anons need not reply. Questions end with a question mark.
    5. Re:We don't need a new language by Anonymous Coward · · Score: 0

      I JUST WANT TO READ THE GODDAMNED WORDS ON THE PAGE!

      Use Reader Mode in Firefox for easier reading. Enter Reader Mode by clicking the book icon in the location bar and read on.

    6. Re:We don't need a new language by Anonymous Coward · · Score: 0

      That would be PostScript. Originally it was designed to run desktop GUI's. Windows could be any shape, not just rectangular or squares. They could be circular, oval, concave, any shape. But the CPU speeds back then and licensing back then made it too expensive.

      Problem now, is that with mobile devices, they are resorting to security-through-obscurity. Suppose you want to write a JavaScript webpage that allows someone to randomly choose images within a directory. On a desktop it is easy, you can just scan the directory and load the images with the right names and extensions. On a mobile device, you are *NOT ALLOWED* to read through a directory.

      To support multi-core systems, you would need to make your web page like a scene-graph (OpenSceneGraph, blender shader nodes with the Cycles renderer). Each widget would have it's own thread and could send messages to each other. Maybe have a timer you select how fast it would run.

    7. Re: We don't need a new language by pchasco · · Score: 1

      Some would JavaScript is already the web browser's VM. There's no reason why a VM has to execute bytecode. Why not javascript as "bytecode?" If the coder never sees it then what difference does it make? There is no shortage of languages that compile to JavaScript if you want something more your flavor: CoffeeScript, TypeScript, python, haxe, dart, kotlin, etc. many of these are statically compiled with type checking, etc. Insofar as web assembly, it's a waste of time. Reinventing the wheel. Java, .NET CLR are already perfectly well suited for this task. Maybe Java's history of vulnerabilities nixes it from the list, but .NET is secure and already has a sandboxed version for the web, Silverlight (which Microsoft unceremoniously dropped).

    8. Re:We don't need a new language by Tablizer · · Score: 2

      NO!!! What we need is for people stop using scripting to turn web pages into applications when 99.99% of the time I JUST WANT TO READ THE GODDAMNED WORDS ON THE PAGE!

      Much of it is marketing me-to-ism as people have to copy the UI fads of other sites to look "with it". A focus on logic, simplicity, and practicality of UI's and pages has been shot in the head point blank.

    9. Re:We don't need a new language by Tablizer · · Score: 1

      Correction: me-too

    10. Re:We don't need a new language by Anonymous Coward · · Score: 0

      Agree, i'm really sick of the abuse of scripting on today webpages

    11. Re:We don't need a new language by Gravis+Zero · · Score: 1

      Almost everything with UI can be done properly using CSS3. The only thing missing are animation actions and then it would be complete.

      --
      Anons need not reply. Questions end with a question mark.
    12. Re:We don't need a new language by Tablizer · · Score: 1

      I find CSS gets one about 80% of what one needs, but one has to use programming to get the rest, unless you live with half-ass stuff. (Or maybe there is a magic CSS trick I cannot find.) Plus, different browsers and browser versions implement CSS differently. Web UI's are a fucking illogical mess. Job security is the only reason I think of why people tolerate it.

    13. Re:We don't need a new language by Anonymous Coward · · Score: 0

      Take your pick. There's the JVM, .Net Framework, DOM API, WebAssembly, x86, ARM, etc... Companies want their offerings to be more distinctive than others. You can't stand out when everyone has the same thing. We won't get a standard standard. HTML5 isn't even standardly implemented and whatever happened to XForms (dynamic forms without Javascript) and all the other alternative web standards that have fallen by the wade-side? As the death of Betamax and Plan 9 (the OS) taught us, being the best option isn't good enough.

    14. Re:We don't need a new language by munch117 · · Score: 2

      The next thing missing are animation actions

      FTFY. If you go down that road, it'll never stop. There's always going to be one more feature that's missing, and with new features comes bugs, and with bugs come security holes.

      At the end of the day, you need something that's Turing-equivalent, so you can recombine known features in new and interesting ways. I just hope CSS doesn't end up being that Turing-equivalent something.

    15. Re:We don't need a new language by thegarbz · · Score: 1

      We could do that, but then how will we feed you advertisements?

    16. Re:We don't need a new language by Xyrus · · Score: 1

      Developing technology to turn the web into a platform for applications is a bit like developing the technology to turn books into a platform for building rockets.

      --
      ~X~
    17. Re:We don't need a new language by phantomfive · · Score: 1

      I find CSS gets one about 80% of what one needs, but one has to use programming to get the rest, unless you live with half-ass stuff. (Or maybe there is a magic CSS trick I cannot find.)

      What kinds of stuff can't you find in CSS?

      --
      "First they came for the slanderers and i said nothing."
    18. Re:We don't need a new language by Anonymous Coward · · Score: 0

      We already have such a standardized VM, its called JavaScript and it's in every browser. Dart complies to JS and the code runs faster than most of the bad JS that people write. Elm complies to JS too.

      Crockford is talking about a "theoretical post-JavaScript world". If you want to improve JavaScript that will happen slowly and is limited. Look at how well Perl 6.0 fixed Perl. The project highlighted all the problems in Perl 5, added layers of complexity in the compiler and has taken an eternity. The result is not a new improved Perl but the near extinction of Perl. Look at how well Python 3 has replaced Python 2. JS with all its flaws is unfortunately good enough, already in every browser and it is widely known because it's taught in programming classes, everybody plays around with it and there's lots of code and documentation on the net. It's just to big to be ignored and any competition would need massive advantages over JS, while compiling to JS to run on todays PCs, phones and tablets.

      You want to replace JS with a new language first think about what happened to Google's Dart. If Dart was significantly better than JS then that would give Google and Chrome an edge over everybody else allowing them to take over the Web. So everybody had an interest in conspiring to make sure that didn't happen. If it wasn't significantly better then everybody else could just pretend it didn't exist. Google ended up making Dart compile into JS but its considered Google's and so hardly anybody outside of a few Google teams use it. Elm, anybody heard of Elm recently? Google has had more success with Go for new stuff on the cloud, because of its simplicity and basic concurrency, but C# and Java are still the most popular programming languages for server stuff. Swift is of course a hot language but only because Apple is pushing it as the replacement for Objective C for iOS applications, it's not much used elsewhere.

      Even though Crockford is heavily involved in JavaScript's development, his Post-JavaScript Worlds are going to remain purely hypothetical.

    19. Re:We don't need a new language by Waccoon · · Score: 1

      Is there any way to upvote a post higher than 5?

    20. Re:We don't need a new language by Anonymous Coward · · Score: 0

      Text...

    21. Re:We don't need a new language by Tablizer · · Score: 1

      Off the top of my head I cannot name any, but it's often "situational" things, like if a section is here, and another section is there, and the screen is between x and y pixels wide, CSS acts oddly.

    22. Re:We don't need a new language by Tenebrousedge · · Score: 1

      I just hope CSS doesn't end up being that Turing-equivalent something

      This link comes with a side of schadenfreude and some quiet sobbing.

      --
      Those who advocate genocide deserve every protection afforded by law, and none afforded by common human decency.
    23. Re:We don't need a new language by UnknownSoldier · · Score: 1

      > What kinds of stuff can't you find in CSS?

      Sticky headers where clicking on a link DOESN'T hide the scrolled amount under the sticky header.

    24. Re:We don't need a new language by Anonymous Coward · · Score: 0

      Vote your post up instead :)

  10. Elm? by Anonymous Coward · · Score: 0

    Isn't Elm a purely functional language that is used for web development?

  11. even 4 is too much by lucm · · Score: 4, Funny

    yaml uses 2 spaces for indents.

    Maybe tab should be 1 space, then everyone would be happy.

    --
    lucm, indeed.
  12. Wasn't ECMAScript going to change fundamentally? by Anonymous Coward · · Score: 0

    I may be wrong but I thought I saw a talk years ago where ECMAScript was going to go down a similar path as Racket to allow multiple languages running on a sort of javascript byte code.

  13. hindsight is 20/20... years by lucm · · Score: 1

    why don't you go 20 years in the past and fix it?

    --
    lucm, indeed.
    1. Re:hindsight is 20/20... years by DontBeAMoran · · Score: 1

      And while you're there, send me a message telling me to buy a shitload of those "bitcoins thingies".

      --
      #DeleteFacebook
    2. Re: hindsight is 20/20... years by Anonymous Coward · · Score: 0

      Message to self, how many to buy on what day, and how many to sell on what day

    3. Re:hindsight is 20/20... years by Anonymous Coward · · Score: 0

      Slashdot had their first article about bitcoin in July 2010. Fortunately I read it, didn't listen to the trolls here and mined a good amount. ;-)

    4. Re: hindsight is 20/20... years by Anonymous Coward · · Score: 0

      Zombies don't take bitcoins. You are sol.

  14. No thanks by Anonymous Coward · · Score: 1

    Lets let websites spin every single CPU core, access USB devices and store files and shit on our systems. Lets let sites give carte blanch access to helplessly complex and insecure GPUs and driver stacks. A few bitcoin mining shaders while you browse never hurt anyone. This is in addition to websites now getting to open random sockets to wherever the fuck they want and know yer physical location and keep hot Mic open forever if you ever allowed it in the past.

    This all sounds really great. People can't even fucking secure the browser stacks they have now but fuck it MORE MORE.. MORE..... Internet users are not fucked enough as it is.

    1. Re:No thanks by tepples · · Score: 2

      Would you prefer that applications that actually need those features instead be native applications that are specific to an operating system other than the one you use?

    2. Re:No thanks by WaffleMonster · · Score: 4, Insightful

      Would you prefer that applications that actually need those features instead be native applications that are specific to an operating system other than the one you use?

      Absolutely I prefer it. Native applications provide a much better experience vs. attempting to turn document viewers into general purpose operating systems.

      There are a million different solutions to software portability. Our choices are far from shove everything into the browser or going without.

      Putting everyone at unnecessary risk in pursuit of the goal of transforming document viewers into operating systems is as foolish as it is counterproductive.

    3. Re:No thanks by Anonymous Coward · · Score: 1

      Hell yes! You get better speed, security (yes, you have more control over application security than browser security), stability, usability, and recoverability. And as a programmer, they're easier to design too.

    4. Re:No thanks by JohnFen · · Score: 1

      Yes

    5. Re:No thanks by tepples · · Score: 1

      There are a million different solutions to software portability.

      And the publisher of a proprietary native application can prove unable or unwilling to use any of said "million different solutions to software portability." For example, the application's publisher may have only a Mac to test on, not a Windows PC, a GNU/Linux PC, an iPad, or an Android tablet. Or the the application's publisher may wish to promote the sale of more Mac computers, believing that his or her application is worth the $650 that it would cost to buy a license for the application, a Mac mini on which to run it, and a KVM switch to switch back and forth between the application on the Mac and whatever other applications the user is already using on the user's other (non-Mac) computer. Case in point: Not all games on Steam are ported to macOS and Linux.

    6. Re:No thanks by tepples · · Score: 1

      Would you prefer that applications that actually need those features instead be native applications that are specific to an operating system other than the one you use?

      Yes

      How many PCs do you use regularly? Is any of them a Mac with a retail Windows license installed into Boot Camp, Parallels, or VirtualBox

    7. Re:No thanks by JohnFen · · Score: 1

      Why is that an important question?

      If your point is that native applications aren't very portable, then I agree -- that is the major downside. However, native applications are superior in every other respect. Personally, I find the difference so stark that the lack of portability is a price I'm willing to pay.

    8. Re:No thanks by Anonymous Coward · · Score: 0

      Putting everyone at unnecessary risk in pursuit of the goal of transforming document viewers into operating systems is as foolish as it is counterproductive.

      Apparently, the EMacs developers didn't get that message. Maybe they had the wrong extensions installed?

  15. We don't need another language for that... by Anonymous Coward · · Score: 0

    The best way to handle programming for multicore is to have all operations be blocking and let the app do other things while waiting for the blocking call to complete.

    With this model of programming you don't have to worry about nested call backs and callback hell.

    It's going to take brains and fore thought on the part of language designers, but the concept is super simple when you think about it. You just need to have a graph of the program flow and while waiting on a blocking operation to complete, you jump to a new non-state dependent entrance point in the graph and begin execution of all non-blocking calls from there until you reach another blocking point.

    Once a blocking call completes another thread picks up from there and runs the remainder of that code path.

    All you have to do is make it seamless from the perspective of the programmer. The language would be executing something non stop and each independent code path could be running on its own thread and the programmer wouldn't even need to know or think about it.

    We have garbage collected languages now, I think the next big step will be non-blocking thread collected languages.

    1. Re: We don't need another language for that... by Anonymous Coward · · Score: 0

      Lol. Someone read a summary of something not about con true to and is now dicked in the eye. See that makes the same logical sense as what you have written.

    2. Re:We don't need another language for that... by Anonymous Coward · · Score: 0

      It's going to take brains and fore thought on the part of language designers, but the concept is super simple when you think about it. You just need to have a graph of the program flow and while waiting on a blocking operation to complete, you jump to a new non-state dependent entrance point in the graph and begin execution of all non-blocking calls from there until you reach another blocking point.

      Sounds like just a simple matter of language design. ;)

      It sounds like a neat idea, and I'm thinking how it might look in practice.

      There may be some additional complexity on the coder's part for them to establish a graph of program flow so that the compiler knows to generate code that synchronizes where some thread depends on the state changes from another thread. From a programmers's point of view this just may look like a procedural / functional coding hybrid.

    3. Re:We don't need another language for that... by tepples · · Score: 1

      Every I/O blocks, and when the program hits an I/O, the interpreter switches to another thread. Where have I heard that one before? Oh yeah: Python threading and the GIL.

  16. Missing the point by Anonymous Coward · · Score: 1

    1) "Impurities" like date and math.random are what let's people do useful stuff with Javascript.
    2) Javascript is difficult to use due to it's haphazard "design" but that doesn't mean that we need to get rid of it... Google and Microsoft will just start forking the successor too and recreate the same mess we have today.
    3) People that code with spaces are either a bit out of their gourd or people that use tabs in an IDE written by people that think that they have to convert tabs to spaces because they are out of their gourd. Real programmers use 1 tab per indent level and use the setting in their text editor to set the width to be what is comfortable to them. And all those people out their that think that spaces are the one true religion need to cleanup a few million lines of respaced by an IDE spew to help them readjust to mainstream society.

    1. Re:Missing the point by lenski · · Score: 1

      Fits real well for tools that don't have your particular preferences baked in...

      Every time I need to use whatever editor happens to be available on whatever platform I need to maintain on whatever day I maintain it, those damn tab settings screw over formatting.

    2. Re:Missing the point by BronsCon · · Score: 2

      And every time I have to edit code written by some dickface who uses 2 or 8 (as examples) spaces, I want to invent a way to murder someone with a Git commit. My preference is 4; if yours is something else, you set yours to something else. For the times when you have to use an editor in which you can't figure out how to change the tab with, well, either figure it our or deal with it.

      What your argument boils down to is "I can't have my way all the time unless I force my way on everyone, so I'm going to be a dick and force my way on everyone, because I'm a dickish dick."

      --
      APK quotes people (including myself) without context and should not be trusted. Just thought you should know.
  17. Already Here by Anonymous Coward · · Score: 0

    I already live in this world thanks to uMatrix.

    Yeah a lot of shitty websites break, if a site won't run without globally enabling js, then I don't need it.

  18. Lol, really? by JustAnotherOldGuy · · Score: 1

    I'd like to have some of the same medication that Douglas Crockford is on, but in a smaller dose.

    --
    Just cruising through this digital world at 33 1/3 rpm...
  19. Javascript really sucks by Snotnose · · Score: 5, Interesting

    In the last 40 years I've used lots of languages from BASIC to Z80 assembly, 8080 assembly, 8086 assembly, 68k, C, awk, sed, sh, perl, C++, TCL/Tk, ADA, Python, Java, Javascript. Some I really liked (assembly, C), some I used with trepidation (C++, perl), some I actively hated (TCL/Tk, ADA).

    But the one and only language that I felt was actually working against me was javascript. Damned script would pass all my tests, then fail on someone else's machine because they chose different options when installing, or had a different version, or just reasons. Note my scripts wouldn't actually fail, as in an error message. No, they just gave the wrong damned results.

    I fucking hate Javascript with a passion and wish it would die by the end of the year.

    1. Re:Javascript really sucks by Anonymous Coward · · Score: 0

      Damned script would pass all my tests, then fail on someone else's machine because they chose different options when installing, or had a different version, or just reasons.

      When I dabbled with Javascript almost 20 years ago, the only way of producing something that worked was to program defensively against the whole environment.

    2. Re:Javascript really sucks by Anonymous Coward · · Score: 0

      You sure you were using Javascript?

      What exactly did you have to install, and where would you install it? Where did the other users install it?

      What options do you have when "installing" javascript? Again, where do you install it? Like, was the an installer or something?

       

    3. Re:Javascript really sucks by SendBot · · Score: 3, Insightful

      As a dev who primarily works in JS, I'm extremely curious to hear about this! When I talk about limitations of JS, I point out the shortcomings (lack of native 64-bit integer support, or anything other than its singular "number" type is a big one), their workarounds, then conclude by saying it will probably be addressed in the future. The ecmascript standards are very well specified, and compatibility is well mapped out.

      Are you talking about node.js by chance? I'm confused about what was "installed" and what options were available. Normally js runs in a browser, and there's not much in the way of options when installing those. Are you talking about the language itself, or the environment such as npm modules?

      I like to criticize c# myself, but I think the complaints more accurately pertain to the .net framework.

      Please share some details, because I love to know about JS caveats and pitfalls and share them with others. Without this information, they sound like pebkac issues.

      Wishing for JS to die out is for wusses. Why not be proactive about killing it off with a better alternative for browser providers to implement? What would you suggest? Samsung has a lot invested in their Tizen OS, and they're not about to abandon that any time soon.

    4. Re:Javascript really sucks by Raenex · · Score: 1

      Could be he's talking about client-side scripting and the DOM and not the language proper.

    5. Re:Javascript really sucks by BlackPignouf · · Score: 2

      +1
      I can learn a new language relatively fast. Any language, except for JS.
      This clusterfuck of a language would rather return something than throw an error. Bugs appear apparently out of nowhere, because some data has been passed in the wrong format for the last 10 functions.

      As an example :
          '1' + 0.1 is '10.1'
      but
          '1' - 0.1 is 0.9

      Then comes a JS 'expert' telling you "It's perfectly normal! It's been described in ECMAScript clusterfuck Specification"

      Just for fun :

          Array(16).join("lol" - 2) + " Batman!";

    6. Re:Javascript really sucks by SendBot · · Score: 1

      Yeah, testing for browser compatibility is such a hassle, and it's better than it's ever been, but sucks how IE's (non-edge) js engine is so slow!

      I think you're right though. OP would say the same thing about Java if he had to deal with same bullshit I ran into during the visual j++ years when MS was in full embrace-and-extend mode. I probably still have the binaries they're not legally allowed to distribute in case of compatibility emergency.

    7. Re:Javascript really sucks by Anonymous Coward · · Score: 1

      Since ES6 came along, I don't feel so bad about JS anymore. They've taken something ugly and made it doable.

    8. Re:Javascript really sucks by Anonymous Coward · · Score: 0

      "As a dev who primarily works in JS"

      You may well do, but the vast majority of JS development is client side JS in a web browser.

      The install base is highly fragmented, leading to woes from the parent poster. I agree with them entirely, however, there is no hope that JS is going anywhere: there's simply too much code already written.

      If you want to know what all the fuss is about, sit down with a text editor and write a simple HTMl page with some in-line javascript. Open it in your favourite browser, and try to do a few things with JS, growing more complex as you go. Now open the exact same script in a different browser and see how you go.

      Summaries like this only scratch the surface of how fucked it all is...

    9. Re:Javascript really sucks by UnknownSoldier · · Score: 1

      > Please share some details, because I love to know about JS caveats and pitfalls and share them with others.

      Math.tan( Math.PI/2 )

      Returns broken 16331239353195370, instead of correct NaN

      console.log( 123456789 << 5 );

      Returns broken -344350048 instead of correct 3950617248

      Don't even get me started on the retarded ASI (Automatic Semi-colon Insertion). As Douglas Crockford said @34:31

      "Why am I betting my career on this piece of crap"

      For more Javashit shennagins see Wat

    10. Re:Javascript really sucks by tender-matser · · Score: 1

      Math.tan( Math.PI/2 )

      Returns broken 16331239353195370, instead of correct NaN

      That's how floating point doubles work in any language. And besides, why should that be NaN? 1/0 is Infinity, not NaN.

      console.log( 123456789 << 5 );

      Returns broken -344350048 instead of correct 3950617248

      That's how 2s complement 32 bit integers work in any language. Is there some standard that says that "big" signed integers should be surreptitiously changed into unsigned ones? Or that javascript should use 64bit longs?

      Don't even get me started on the retarded ASI (Automatic Semi-colon Insertion).

      I'll get you started, go on.

    11. Re:Javascript really sucks by Anonymous Coward · · Score: 0

      lack of native 64-bit integer support .... will probably be addressed in the future

      Damn, what I would give for a piece of your optimism. From where I sit, javascript will never have 64-bit integers.

    12. Re:Javascript really sucks by UnknownSoldier · · Score: 2

      > why should that be NaN? 1/0 is Infinity, not NaN.

      Incorrect. You need to go back to school and review what divide by zero actually means.

      a/b = c
      a = b*c

      However when a != 0, and b =0,

      a/0 = c

      There is NO value of c that produces a.

      a = 0*c (impossible)

      Furthermore, mathematicians define division by zero as undefined because x/0 has TWO simultaneous values: +inf and -inf, depending on which side you approach x from: the negative side of zero, or the positive side of zero. The mathematical set of Reals is NOT closed under division by zero -- it produces a singularity.

      0/0 is "indeterminate" which naturally maps into NaN.

      console.log( 0/0 );
      NaN
      console.log( isNaN(0/0) );
      true

      All is good and fine so far.

      However Javascript uses the broken IEEE 754 definition of x/0 = Infinity. This is is retarded because is broken math

      Proof:

      1/0 = +inf (assume retarded definition of divide by zero is valid)
      0*(1/0) = 0*inf
      (0/0)*1 = 0
      undefined *1 = 0
      NaN = 0
      WTF

      Note: NaN is NOT equal to ANY value, including itself.

      console.log( NaN === NaN );
      false
      console.log( NaN == NaN );
      false

      > Is there some standard that says that "big" signed integers should be surreptitiously changed into unsigned ones?

      Your mistake is assuming Javascript has integers in the first place. Javascript does NOT have signed integers. All values are 64-bit floating point values.

      4.3.20 Number value

      primitive value corresponding to a double-precision 64-bit binary format IEEE 754-2008 value

      and

      6.1.6The Number Type

      The Number type has exactly 18437736874454810627 (that is, 264-253+3) values, representing the double-precision 64-bit format IEEE 754-2008 values as specified in the IEEE Standard for Binary Floating-Point Arithmetic, ...

      One of the reasons Javashit is such a crappy language because it has no uint32_t nor uint64_t. This leads to subtle over-flow bugs that are difficult or impossible to work around.

      But what do you expect from a language designed in 10 days.

    13. Re:Javascript really sucks by tender-matser · · Score: 1

      Incorrect. You need to go back to school and review what divide by zero actually means.

      However Javascript uses the broken IEEE 754 definition of x/0 = Infinity. This is is retarded because is broken math

      Thanks for proving my point. In other words, javascript is buggy because it's using industry standard floating point, instead of some "ideal" real numbers (which couldn't be represented on any actual or theoretical computer, anyway).

      Your mistake is assuming Javascript has integers in the first place. Javascript does NOT have signed integers. All values are 64-bit floating point values.

      Yes it has. The bitwise operators first convert their operands to a 32bit signed integers, and then return a 32bit signed integer. Look here and here. This is similar to how arithmetic ops first convert their arguments to double, string ops first convert them to strings, etc -- the way that all typeless/dynamic languages work.

      If we're down to sending each back to school, I'll give you a smart student question that will earn you extra points: why isn't javascript using 64bit signed integers there?

      But what do you expect from a language designed in 10 days.

      I'll expect to use IEEE 754 floating point and 2s complement integers like everybody else.

    14. Re:Javascript really sucks by tender-matser · · Score: 1

      1/0 = +inf (assume retarded definition of divide by zero is valid)
      0*(1/0) = 0*inf
      (0/0)*1 = 0

      BTW, look at what you did there. Infinity is not a number, so multiplying it has no meaning. Your whole "proof" is bogus.

    15. Re:Javascript really sucks by Bent+Spoke · · Score: 1

      Writing maintainable javascript (still) requires a defensive approach. Using abstractions just bite. But the big disconnect occurs when calling a function with the wrong number or type of arguments.

      In real life, I embed javascript (http://jsish.org) in C into high-end industrial devices, albeit mostly for diagnostics and testing purposes.

      The only reason this flies is because Jsi has been extended to support type-checking of function calls. Standard Js itself is just too hard to maintain.

      (Disclaimer: I am the author of Jsi)

    16. Re:Javascript really sucks by UnknownSoldier · · Score: 1

      Uh, Hello McFly.

      1/0 = x
      (0/0) * 1 = 0 * x
      undefined * 1= 0*x

      Q. Which _value_ of x solves this equation???

      A. There is _no_ value -- the only correct answer is: x = NaN.

    17. Re:Javascript really sucks by UnknownSoldier · · Score: 1

      >> Don't even get me started on the retarded ASI (Automatic Semi-colon Insertion).
      > I'll get you started, go on.

      The problems with JavaShit's Automatic Semi-Colon Insertion (ASI) are two-fold.

      1. Whitespace (form) should NEVER break functionality -- yet in Javascript it DOES.

      function foo( x )
      {
          return
              1 - x;
      }

      This returns `undefined` due to JavaShit's retarded ASI policy.

      Maybe you'll make the excuse that is a "toy" example. OK, here are more practical examples:

      function vec2_add( v, s )
      {
          return
          {
              x: v.x + s,
              y: v.y + s
          };
      }
       
      // or
       
      function swap32( x )
      {
          return
                ((x >> 24) & 0x000000FF)
              | ((x >> 8) & 0x0000FF00)
              | ((x << 8) & 0x00FF0000)
              | ((x << 24) & 0xFF000000)
      ;
      }

      This is BROKEN in JavaShit -- unlike every other C-like language where this _works._

      NOTE: /.'s ecode is broken -- the ampersands should be lined up vertically.

      Instead, I have to use K&R style or add a _dummy value_ to work around Javascript's retarded ASI design.

      function vec2_add( v, s )
      {
          return { // stupid Javascript Kludge to work around broken ASI
              x: v.x + s,
              y: v.y + s
          };
      }
       
      function swap32( x )
      {
          return 0 // stupid Javascript Kludge to work around broken ASI
              | ((x >> 24) & 0x000000FF)
              | ((x >> 8) & 0x0000FF00)
              | ((x << 8) & 0x00FF0000)
              | ((x << 24) & 0xFF000000)
      ;
      }

      WHY do we even use whitespace in the first place?

      For _human_ readability.

      Youdon'treadnorwritesentenceswithnowhitespace.Codeisnodifferent.

      Yet Javascript INSISTS that an extra newline _fundamentally_ changes the semantics.
      Who was the idiot that designed this crap and thought it was a good idea???

      To be continued.

    18. Re:Javascript really sucks by UnknownSoldier · · Score: 1

      >> Don't even get me started on the retarded ASI (Automatic Semi-colon Insertion).
      > I'll get you started, go on.

      Part 2 -- due /.'s shitty ecode line length is too short warning.

      2. JavaShit's ASI is _also_ the reason there is no native line continuation or multi-line string.

      For example, anyone who has written WebGL shader code needs to do dumb shit like run-time string concatenation in order to work around JavaShit's broken-by-design.

      var frag =
          "attribute vec3 vVertex;\n"+
          "\n"+
          "uniform mat4 mProjection;\n"+
          "uniform mat4 mModelView;\n"+
          "\n"+
          "void main()\n"+
          "{\n"+
              "gl_Position = mProjection * mModelView * vec4( vVertex, 1.0 );\n"+
          "}\n"
      ;

      Instead of the cleaner multi-line string that any _good_ language would provide:

      "
          attribute vec3 vVertex;
       
          uniform mat4 mProjection;
          uniform mat4 mModelView;
       
          void main()
          {
              gl_Position = mProjection * mModelView * vec4( vVertex, 1.0 );
          }
      "

      It is not quite as bad as Python's idiotic indentation, but it is still a dumb design. Language design should NOT dictate programming style.

      Unless it is broken. Like Javascript.

    19. Re:Javascript really sucks by UnknownSoldier · · Score: 1

      I see you're a fan of Wat :-)

      You're probably familiar with JavaShit's retarded == equality operator.

      Hey retard Javascript Designer, "==" doesn't always work.
      I know, let's add "===" as a kludge!
      *facepalm*

      When a language requires a stupid hack ..

      "use strict"

      ... just to make it some-what type safe, you know it was designed by an moron who learnt NOTHING about programming languages from the past 30 years back in 1995.

      More JavaShit broken-by-design:

      if( 0 == "0" ) console.log( "equal" ); // True!? WTF!
      if( 1 == "1" ) console.log( "equal" ); // True!? WTF!

      for( var x in [5,6,7,8]) console.log( x + 1 );

      *facepalm*

      Produces 01, 11, 21, 31 instead of the expected 6,7,8,9.
      Hint: for( var x in [5,6,7,8]) console.log( typeof x );

      var s = '9223372036854775808', n = parseInt(s); console.log( n ); // FAYUL 9223372036854776000

    20. Re:Javascript really sucks by Anonymous Coward · · Score: 0

      Sounds like it's inspired by the PHP school of design.

  20. In other news... by GbrDead · · Score: 1

    We have been living in the PostScript world for quite some time.

  21. PHP World? by TheOuterLinux · · Score: 1

    Since PHP has started supporting encryption out of the box, what about advancing that until a better language comes along?

    1. Re:PHP World? by Anonymous Coward · · Score: 0

      I'd be cool with client-side PHP. If you deep-six 90% of the bullshit included in the standard library and strip it down to what amounts to an interpreted version of a bastardized combination of C and Perl, it would make a fantastic client-side language that would make Javascript immediately irrelevant. And only those who have hitched their only cart to the JS horse would give a shit. But the plebs that have done exactly that have probably reached critical mass by now, and we're basically fucked.

      TL;DR: I would be totally okay with PHP5, minus some of its standard library that doesn't apply to this scenario, as the client-side language embedded into browsers.

  22. Comma-separated vs. tab-separated by tepples · · Score: 5, Interesting

    Tabs should be completely eliminated. They are a obsolete vestige left over from mechanical teletypes.

    "Completely" is a strong word. I can understand using spaces for indentation, but if you "completely" eliminate tabs, you break compatibility with POSIX Make. Furthermore, if you "completely" eliminate tabs, then what format for delimited flat files? In my experience, tab-separated values format is more efficient than comma-separated values format because a value is far more likely to need escaping because it contains a comma than because it contains a tab.

    1. Re:Comma-separated vs. tab-separated by Waffle+Iron · · Score: 1

      I really meant eliminated from source code. If you want to store tabular data, maybe tabs would be OK. However, ASCII '\x1E' (record separator) would seem to be even more appropriate.

      The use of tabs in POSIX make was an epic failure. Instead of using visually indistinguishable spaces and tabs to mean two separate things, they should use some visible character for the current leading space use, and use any number of leading spaces instead of tabs.

    2. Re:Comma-separated vs. tab-separated by angel'o'sphere · · Score: 1

      No, the record separator is used to separate records, aka lines.
      As "replacement" for tabs you would use FS, the field separator, one char in ASCII behind or before the record separator.
      Well, considering that you could have line feeds in a field, take the "line above" figurative.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    3. Re:Comma-separated vs. tab-separated by phantomfive · · Score: 4, Funny

      The solution is easy. The tab character is ascii 0x09. We can remove it, and slide down all the other ascii characters to match and fill in the hole. For example, ascii 'A' would go from 0x41 to 0x40. People can just rewrite their software to handle the new character set, and then the world is cleaner and easier. And don't talk to me about backwards compatibility that's how we get messy software to begin with, lazy people unwilling to refactor to keep things clean. All we need to do is refactor ascii: the benefit is that unicode being a subclass inherits the change automatically OOP is soo cool.

      --
      "First they came for the slanderers and i said nothing."
    4. Re:Comma-separated vs. tab-separated by djinn6 · · Score: 1

      if you "completely" eliminate tabs, you break compatibility with POSIX Make

      Syntactically important tabs is the worst part of Make. God help you if your editor shows tab and spaces in the same way. I for one would be glad when that "feature" is gone.

      In my experience, tab-separated values format is more efficient than comma-separated values format because a value is far more likely to need escaping because it contains a comma than because it contains a tab.

      If you want space-efficiency, compress them before writing to disk. You'd get far more savings that way.

    5. Re:Comma-separated vs. tab-separated by Anonymous Coward · · Score: 2, Funny

      The solution is easy. The tab character is ascii 0x09. We can remove it, and slide down all the other ascii characters to match and fill in the hole.

      Great, we even have an opening for a new ASCII character in 0x7F ! how about some kind of special character for programmers to help them manage indentation levels more easily, like a space but without having to press space n times! that way we also eliminate the debate about how many spaces is the correct level of indentation.

    6. Re:Comma-separated vs. tab-separated by angel'o'sphere · · Score: 1

      Har har har har!

      On a cloudy (but surprisingly warm) sunday, you made me laugh again (y).

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    7. Re:Comma-separated vs. tab-separated by maestroX · · Score: 1

      The solution is easy. The tab character is ascii 0x09. We can remove it, and slide down all the other ascii characters to match and fill in the hole.

      Better yet, I propose the 0x09 character to be the deprecation slot. That way, we can start putting \r into that position following punctuation and a yearly frequency analysis on Github's least used character for assigning a new character to this deprecation slot.

      Finally, we will end up with a clean slate of ASCII table ready to be populated by emoji icons; just imagine, instant recognition of malicious software, adult material and unwanted advertising. Computers *are* here to simplify our lives and binary logic unnecessary complicates our environment expecting every human to be a socially inept Borg drone awaiting input. If you look at babies (they are really not that scary), the root of every human, you can see the emoji's materializing intrinsically and emerging in its surroundings, nothing thru binary, REST or god forbid, XML requests. It would be natural.

      Ironically, sysadmins, programmers and alike would never devise such a system denouncing control and efficiency, whereas emoji based input would have given them great improvements; a pad with only a power button.

    8. Re:Comma-separated vs. tab-separated by tepples · · Score: 1

      For one thing, submission to Amazon Marketplace Web Service currently requires either tab-separated files or Microsoft® Excel® format, and I refuse on principle to generate Excel format.

      For another, a gzipped tab-separated file is still smaller than a gzipped comma-separated file because even though the additional escaping in a CSV file compresses, it doesn't compress away entirely. It's a similar phenomenon to how JavaScript compresses smaller if it's minified before gzip. Do you want exact byte counts of a decompressed tab-separated file, a decompressed comma-separated file, a gzipped tab-separated file, and a gzipped comma-separated file, from an actual table from my day job?

  23. Found the LUDDITE! by Anonymous Coward · · Score: 0

    ONLY apps can app apps, and the appiest apps are apped in AppScript, NOT LUDDITE programming languages!

    Apps!

  24. Unix philosophy by Anonymous Coward · · Score: 0

    I don't understand why the Web browser can't use whatever scripting languages I have installed. If I don't have installed the website tells me to install. There is no reason this has to be security concerns, the browser should not have all privileges to read and write or execute, essentially it sandboxes any code. Even if the website wants to compile code with GCC, it shouldn't matter so long as it sandboxes code, limits privileges.

    It follows the Unix and plan9 philosophies, piping data around, reusing code.

    1. Re:Unix philosophy by tepples · · Score: 1

      I don't understand why the Web browser can't use whatever scripting languages I have installed. If I don't have installed the website tells me to install.

      And when a particular language is available only for one proprietary web browser on one proprietary operating system, you're back to "Best viewed with Internet Explorer". Furthermore, the browser would need to heavily sandbox third-party installable languages in order to protect users from the sort of trojans that were common in the "codec pack" era, and sandboxing is patented.

    2. Re: Unix philosophy by Anonymous Coward · · Score: 0

      Currently every website is best viewed on some browser. Firefox and Microsofts proprietary javascript are not equal, their rendering engines are not the same. The worries you describe about destandardization already exist. Flash was here, shockwave, both becoming less popular, but will never die, Unity Web plugin. The biggest problem to the Unix way of Web, Is windows doesn't have python or perl or any languages installed.

      Also patent trolls is a bad reason to not do something the superior way.

    3. Re: Unix philosophy by tepples · · Score: 1

      The biggest problem to the Unix way of Web, Is windows doesn't have python or perl or any languages installed.

      Would you prefer a web application that works only in web browsers made for, say, the Solaris operating system because the language in which its client-side component is written is available only for Solaris? Solaris is a UNIX operating system.

      Also patent trolls is a bad reason to not do something the superior way.

      What should people do instead? Pay off every troll that makes a claim?

    4. Re: Unix philosophy by Anonymous Coward · · Score: 0

      If they want less users then it's their decision to stick with Solaris.

      Do whatever it takes to do things the superior way, or always have an inferior solution.

    5. Re: Unix philosophy by tepples · · Score: 1

      If they want less users then it's their decision to stick with Solaris.

      And this is why web application publishers stick with JavaScript or languages that transpile thereto instead of offering a web browser that supports installable third-party languages: JavaScript or languages that transpile thereto reach the most users.

    6. Re:Unix philosophy by Bent+Spoke · · Score: 1

      Perhaps you're not old enough to remember this, but browsers used to support Java and you could even embed languages like Tcl/Tk.
      Unfortunately, this lacked the one thing browsers are good at: universality.

  25. Multicore is a real issue by Anonymous Coward · · Score: 0

    Multicore is a real issue. There are things that aren't feasible with single core performance. The other stuff really doesn't matter.

    1. Re: Multicore is a real issue by pchasco · · Score: 1

      Web workers can be run concurrently if the individual's browser allows for it. The biggest limitation to web workers is that memory cannot be shared between workers. Data is always copied and sent via message between workers and the main thread, so there is some overhead. https://developer.mozilla.org/...

    2. Re: Multicore is a real issue by Anonymous Coward · · Score: 0

      Firefox has shared memory now. Others may or may not follow.

      https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer

    3. Re: Multicore is a real issue by Anonymous Coward · · Score: 0

      Thanks for putting that vision in my head. I can't imagine anything worse than the horror of multi-threaded code written by javascript 'developers' trying to execute anywhere. That abomination pretending to be a language written by people pretending to be developers needs to be killed off with a quickness before stuff like that starts happening.

  26. I got an idea by Anonymous Coward · · Score: 0

    It will be a unified platform, we'll call it "flash". It will be awesome.

    1. Re: I got an idea by Anonymous Coward · · Score: 0

      Sigh. If Adobe would have opened up the code, it probably would be a standard feature of all browsers. Instead, they just closed up shop. That was impressive thinking.

  27. There are only two camps by OrangeTide · · Score: 1

    I'm in the tabs but not spaces camp.

    --
    “Common sense is not so common.” — Voltaire
  28. null vs undefined by Anonymous Coward · · Score: 0

    I absolutely am in favor of having both null and undefined as "bottom variables," at least in the manner in which JavaScript tends to use them. null is a user-set "nothing" while "undefined" is a default for an unpopulated argument, unset variable or a function which returns nothing - distinct from the "nothing" of "null" a programmer might use in a return statement. I can think of several occasions offhand where having some combination of "undefined", "null", "false", "0" and "" makes sense to speed things up. If you want to pick at the type system pick at the type system, lack of strongly-typed variables absolutely has efficiency issues during execution, but realistically a couple extra bits for "null" and "undefined" on ANY variable type are well worth it.

  29. Worse is Better, well mostly... by ndykman · · Score: 1

    Many programming people are aware of Richard Gabriel's essays on why C and related languages became the dominant programming paradigm (
    https://www.jwz.org/doc/worse-...). In essence, sometimes those ugly compromises are just what people really want (or even need).

    Many have argued that JavaScript is a excellent example of this phenomenon, but there's one big difference. Everybody is trying to replace JavaScript. Some are bolting on new keywords to the language, others are pushing features and some have just started using TypeScript. Here's the thing. The history of C, the "worse" language in the article, had a long history of usage (still does), and C++, for better and worse, sought only to argument, not replace C. In the end, JavaScript is not worse, it is broken.

    We know that strictly typed object oriented languages do really well for UI based systems. The notion of hierarchy of control classes works. The Document Object Model even acknowledges that by suggesting it too fits that model (but really doesn't do that). If they really want to make an UI ecosystem, they will either continue to hack it together at an increasing expense, or they will get an ecosystem that does it better. Personally, I think the hacks will go on for a long time, because cross platform UI markup, programming frameworks and a new language for that all? Very difficult to do, and there is too much invested in the "Web way" to just steal what works from Microsoft, Apple, Android and so on.

    And, the thick client model is making inroads and maybe that will continue. Mobile apps are a thing, maybe desktop apps will gain traction as people realize you can still gain similar levels of control and data collection with those as web pages (sad, but that's how we pay for things now).

    In the end, language design is very hard. It's actually not hard to hack up a bad version of Scheme or Lisp (that's what JavaScript is). It is very hard to fix all the problems if your language is a success. A proper set of fundamental types matter. Lexical scoping matters. Proper typing and a effective type model matters. And that's not even talking about the core frameworks that a good language needs, because that's a whole new set of challenges. I just hope that if there is a JavaScript replacement, that they follow in the fine programming language tradition of just stealing what works and carefully replacing what doesn't. C++ stole from C, Java stole from C++, C# stole from Java (and Delphi). F# stole from Haskell, Haskell stole from OCaml which stole from ML and everybody steals from Scheme and Common LISP now. Just do it and don't be too clever about it.

    1. Re:Worse is Better, well mostly... by UnknownSoldier · · Score: 1

      > JavaScript is not worse, it is broken.

      /.oblg sarcasm. What do you mean ...

      "use strict";

      Isn't a hack? ;-)

      Oh you meant dumb shit like this ...

      if( 0 == "0" ) console.log( "equal" ); // True!? WTF!
      if( 1 == "1" ) console.log( "equal" ); // True!? WTF!
      for( var x in [5,6,7,8]) console.log( x + 1 ); // WTF 01, 11, 21, 31

      Yeah, JavaShit is fundamentally broken-by-design.

      Javascript _could_ be turned into something OK, if it:

      * Removed the idiotic ASI (Automatic Semi-colon Insertion) -- Doug Crockford of (Javascript: The Good Parts fame) @34:31 "Why am I betting my career on this piece of crap?"
      * Added a native unsigned 64-bit integer
      * Added multi-line strings
      * Added the ability for .js files to include other .js files
      * Standardized multithreading instead of blocking
      * Removed the broken '==' operator

      But instead people will add kludge upon kludge.

  30. UTF-PEACE by Anonymous Coward · · Score: 0

    I propose a new character encoding called UTF-PEACE which simply treats 4 spaces as the same thing as a tab.

  31. Fuck The Purists by Anonymous Coward · · Score: 0

    After over 2 decades of programming I'm sick of "functional", "OO", "parallel", "strongly typed", "loosely typed", "actor based", etc languages. Every single esoteric or pseudo-esoteric language out there is fucking dumb (this includes c++ and c#.) Nearly every type of programming has one thing or a very small subset of things which it excels at, while sucking or being at best cumbersome at everything else. The computer is a tool, programming languages are tools to use a tool. The language shouldn't force the programmer to do jack, if a programmer is bad they are going to be bad in any model or paradigm, the programming language should let someone write however they please at any moment. If that means they want to use actors, great, if it means they want strongly typed variables great (the linker will love that,) if that means they want weakly typed or untyped variabled great, if it means async or sync logic great. Every mainstream language out there takes a handful of concepts at best and settles for "well you can do that other way in our language with several dozen pages of bullshit wiring" when English is becoming the dominant natural language for a reason (and not because it is pretty.) Tools for people should allow for any style, they should encompass all styles, and they should be infinitely adaptable. Trying to use a language with a hundred or less keywords is just archaic, I want at least as many meaningful keywords as a toddler has to speak with.

    1. Re:Fuck The Purists by JustAnotherOldGuy · · Score: 1

      After over 2 decades of programming I'm sick of "functional", "OO", "parallel", "strongly typed", "loosely typed", "actor based", etc languages. Every single esoteric or pseudo-esoteric language out there is fucking dumb (this includes c++ and c#.)

      Thank you for saying what so many people here will not acknowledge or admit.

      --
      Just cruising through this digital world at 33 1/3 rpm...
    2. Re:Fuck The Purists by phantomfive · · Score: 1

      Tools for people should allow for any style, they should encompass all styles, and they should be infinitely adaptable

      "When someone says 'I want a programming language in which I need only say what I wish done,' give him a lollipop." --Alan Perlis

      Trying to use a language with a hundred or less keywords is just archaic, I want at least as many meaningful keywords as a toddler has to speak with.

      Languages like that tend to be difficult for a team to work with, because no one knows every area well. Also, do you know how hard it is to memorize a thousand vocabulary words? It's a pain.
      All the same, you might enjoy the Shakespeare programming language.

      --
      "First they came for the slanderers and i said nothing."
    3. Re:Fuck The Purists by angel'o'sphere · · Score: 1

      The Shakespeare language is actually very funny.

      But, I understand what you want to say. HyperCard was a superb programming environment/framework. But the xTalk languages, that includes AppleScript, are a pain in the ass to program with. AppleScript is incredible powerful, but learning all the quirks is completely impossible.

      For the guys who do not know about "Hypertalk" aka xTalk, as there are various variations of it, and don't know about AppleScript: those languages aim to be natural english language. Every application on macOS is scriptable, but "contributes" its own "dictionary".

      Scripts in those languages are super easy to read, as they literally are "plain english". But writing a script without google/stackoverflow is close to impossible. Unless you only work with those languages, obviously.

      This is a script to find and show a certain tab you have open in Safari:

      set question to display dialog ("Find Safari tab:") default answer ""
      set searchpat to text returned of question

      tell application "Safari"
      set winlist to every window
      set winmatchlist to {}
      set tabmatchlist to {}
      set tabnamematchlist to {}
      repeat with win in winlist
      set ok to true
      try
      set tablist to every tab of win
      on error errmsg
      --display dialog name of win as string
      set ok to false
      end try
      if ok then
      repeat with t in tablist
      if searchpat is in (name of t as string) then
      set end of winmatchlist to win
      set end of tabmatchlist to t
      set end of tabnamematchlist to (id of win as string) & "." & (index of t as string) & ". " & (name of t as string)
      --display dialog name of t as string
      else if searchpat is in (URL of t as string) then
      set end of winmatchlist to win
      set end of tabmatchlist to t
      set end of tabnamematchlist to (id of win as string) & "." & (index of t as string) & ". " & (name of t as string)
      --display

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    4. Re:Fuck The Purists by swilver · · Score: 1

      Je completely mee eens damit.

    5. Re:Fuck The Purists by Eravnrekaree · · Score: 1

      Agreed. 100%.

    6. Re:Fuck The Purists by phantomfive · · Score: 1

      That's a good point, Applescript is indeed a good example language in this context.

      --
      "First they came for the slanderers and i said nothing."
  32. The "next" language needs to be a CLR like runtime by Anonymous Coward · · Score: 0

    Stop with the "language" thinking and let people code in what they want. BTW, Javascript is loose enough to do that... you can code in Ruby via Opal, Scala , you can even BOOT FRIGGIN' LINUX in a browser... you could not easily do these things if javascript was not so "loose".

  33. Re: I got an idea [Flash] by Tablizer · · Score: 1

    If Adobe would have opened up the code, it probably would be a standard feature of all browsers. Instead, they just closed up shop.

    Agreed. Flash was mostly coordinate based and thus far more consistent and predictable across browser brands, OS settings, etc., something the HTML stack fails at badly.

    Designers loved Flash for that reason. Now they are stuck back at client-side auto-flow positioning, which makes UI and graphic designers prematurely grey.

  34. Crockford's Legacy: It's time for E! by MostAwesomeDude · · Score: 3, Interesting

    Okay, so this might be a bit of a ramble. Hi, I'm one of the developers of Monte https://monte.rtfd.org/, a new programming language based on E. E http://erights.org/ is a language from the 90s. Crockford worked on E. E's TermL mini-language became JSON. Another person who worked on E was Mark Miller. Miller's thesis project was formalizing and describing systems built with E. Crockford and Miller both are part of the committees that steer JS.

    Now, to bring it all together: Object capability security is a security discipline based on the principle of least authority and perfect encapsulation. It allows us to build secure distributed computations with pretty good security properties; wf-stringe can prove that certain data cannot be exfiltrated, that certain I/O cannot happen, and that certain computations are arbitrarily safe to evaluate. It's not perfect, but it's a massive improvement on the state of things.

    E and Monte, as well as a few other languages like Caja, Pony, and Waterken, are object-capability languages. Just like languages without manual memory management cannot misbehave in certain ways, these languages also promise that they cannot fail in certain desirable security-related ways.

    Crockford, Miller, and others have been deliberately steering JS towards more capability-safe constructions. The object model has been tightened up, and tools like weakmaps, promises, and "template strings" (we call them quasiliterals in the literature) have been added. However, JS is still defined by its weak points, and those points are weak indeed.

    Obviously, my bias is towards Monte. It's my preferred language and I want it to be popular. But, more importantly, I want the ideas that went into Monte to be popular. So, in that spirit, I'm going to give you a short list of questions. I want you to think, "How can I do that in my favorite language? Why would I want it?" Monte is meant to be the next Blub http://wiki.c2.com/?BlubParadox, the next language that is mediocre but built on a good foundation, and part of that is trying to see how Monte answers questions like:

    • The encapsulation problem: How do I produce an object which perfectly encapsulates a value; i.e. the object refers to a value but referring to the object is not sufficient to gain reference to the value?
    • The concurrency problem: How do I run two interacting plans of code at once?
    • The privacy problem: How do I prove, (in)formally, that a value cannot be exfiltrated from my program except through designated channels?
    • The confused deputy problem: What ambient authority is assigned to a "deputy", a program which can be fooled into misusing that authority?

    ...I've gotta stop writing blog posts on not-my-blog.

    --
    ~ C.
    1. Re:Crockford's Legacy: It's time for E! by michael_wojcik · · Score: 1

      rtfd.org sends a certificate that's not valid for that domain. Not an auspicious start.

      Of course, there's no reason whatsoever to use HTTPS for an uncontroversial information-only site. HTTPS-everywhere ideologues should at least get their certs right.

      Here's my quick take:

      - Object-capability is a good language feature; it doesn't give you everything that a true capability system (enforcing capabilities below the userland level) would, but it's still an improvement on the Von Neumann anything-is-anything free-for-all.

      - Built-in cryptographic primitives are bad. 99% of developers should never touch cryptography. Cryptographic primitives are useless when they're composed into insecure protocols. Cryptography should be part of protocols, which should not be part of the core language, because they change quickly and use cases vary widely.

      - Promise pipelining is probably good. It sounds good, in theory, but I haven't done any analysis of it. (Generally pipelines beat synchronization primitives, since there are so many ways to screw up the latter and they're hard for humans to reason about.)

      - The adjective "metamodern" is horrible. I might excuse it in a particularly insightful bit of poststructuralist theory, but not in the description of a programming language.

      - "Python-like syntax": I wouldn't call this a pro or a con, and I'm suspicious of holding it up as a language advantage. That's just asking to launch a syntax religious war. You have to choose some syntax, and either it will resemble a well-known language or it won't. Don't imagine that choice will win the approval of more than a fairly small minority of programmers, and it's unlikely to impress any significant number of computer scientists.

      - As for the actual syntax, I feel it suffers from the "hey, let's use ASCII punctuation characters for random purposes derived from various other languages" problem, as so many other languages do. (This is my main complaint about most of the ML family, such as OCaml, and I find it an irritant in C, and even more so in C++.) Few people are working over a 300 bps connection these days; your syntax can be clearer and more verbose. I've looked at the samples, and I really find the syntax quite grating. If I really wanted three kinds of quoting, I'd write everything in Bourne shell.

      - Contract features are good. More programmers should use them, and more languages should make that convenient. Interfaces and guards are hardly novel (most prominent OO languages have interfaces these days), but encouraging their use is a plus.

      - Dynamic compiling is just eval. While this sort of thing appeals to my CS side, my software-development side regards it as highly suspect, for maintenance reasons as much as for security. (Yes, I realize the capability environment eliminates a large class of vulnerabilities.) I don't know that I'd say this is a feature I'd cut if it were my language, but if I were running a Monte-using development team, I'd make the bar very high for allowing its use. I'm not at all convinced by the "mobile code" use case; I think that's been a huge problem for ECMAScript in browsers.

      Of course, the core issue is the same as with the vast majority of programming languages: opportunity costs and barriers to entry. I could easily use Monte for a personal project if I wanted. I couldn't use it for work without making a strong case to the rest of the development team and to management. I'd have to argue for it over the devils we know, and for it over all the other languages we don't currently use. I'd have to argue that it's worth the cost of having the development team learn it, and having future team members learn it, and having managers and high-level support people and others who have some stake in occasionally reading code learn it. I'd have to argue that the performance penalty is worth it; I might not care about that much (most of what I work on is I/O-bound and frequently waiting for work anyway), but it always eventually becomes

  35. Nit-picky grievances by Tony+Isaac · · Score: 1

    So...he doesn't like it that there are two ways to declare variables? He doesn't like tabs? He doesn't get out much, does he!

  36. evolution not revolution by ooloorie · · Score: 1

    Between languages like CoffeeScript and TypeScript and runtimes like WebAssembly, it looks like we have some pretty good ways of evolving gradually into a post-JavaScript world and are on our way there. No need to articulate grand visions.

    1. Re:evolution not revolution by Anonymous Coward · · Score: 0

      No need to articulate grand visions.

      That's how Crockford sells books to make money.

    2. Re:evolution not revolution by micahraleigh · · Score: 1

      This article seems to presuppose TypeScript and CoffeeScript are not getting adopted.

      Which seems sort of true to me.

      I wonder why? And if so, are we stuck with JavaScript?

  37. Not tab vs space but "Dual bottom variables" by Terje+Mathisen · · Score: 3, Interesting

    I've read all comments as of this time and nobody seems to have taken note of his suggestion about bottom vars:

    "There's an argument among language designers, should we have bottom values at all? But there's nobody who thinks you should have two of them."

    I would like to _strongly_ disagree, you _do_ need two different kinds:

        undefined (Not a Number/Not a Result) which traps if you try to use it, and none which means empty/ignore!

    In the Mill cpu architecture (http://millcomputing.com/) we have those two different kinds and they make coding both easier/more elegant/more compact, and at the same time faster and more secure!

    Another example:

    I am currently on the group that works on the 2018 revision of the IEEE 754 (i.e. floating point) standard. In the original '754 version the "Not a Number" (NaN) type was defined as a way to create a "sticky" error marker in a numeric calculation. I.e. if you accidentally try to calculate 0/0 or Inf/Inf the result will be undefined, the operation might trap or not depending upon how your language runtime is setup, but the result will always be a NaN. There are two kinds of NaNs, Signaling NaN and Quiet NaN, the only difference is that the next time a SNaN is taken as input to an operation it will trap and then be converted to the equivalent QNaN while a QNaN as input will just propagate to the output.

    It should be obvious that if your runtime initializes all FP variables to NaN, then any accidental use-before-load should be detected, right?

    The problem is that for the 2008 (current) revision of the standard, enough people wanted a totally different behavior when searching for the maximum value in an array, typically used to scale a matrix: They managed to define minNum(a,NaN)/maxNum(NaN,b) so as to ignore any quiet NaN val
    ues, always returning the other value. I.e. in those functions they got NaN to behave as None!

    The real problem, and the main reason these functions are going away is how the definition above interact with the SNaN/QNaN rules:

    maxNum(1.0, QNaN) -> 1.0
    maxNum(QNaN, 1.0) -> 1.0

    maxNum(1.0, SNaN) -> QNaN
    maxNum(SNaN, 1.0) -> QNaN

    So if you look for the maximum of 4 values, one of them a SNaN, the result will depend on the order of comparisons, i.e. if you do them pairwise you get this result:

    max(1.0, SNaN, 2.0, 3.0) -> maxNum(maxNum(1.0, SNaN), maxNum(2.0, 3.0)) -> maxNum(QNaN, 3.0) -> 3.0

    while taking alternate inputs results in

    maxNum(maxNum(1.0, 2.0), maxNum(SNaN, 3.0)) -> maxNum(2.0, QNaN) -> 2.0

    I.e. we would have been much better off here with a single bit pattern meaning None which would never propagate.

    --
    "almost all programming can be viewed as an exercise in caching"
    1. Re:Not tab vs space but "Dual bottom variables" by UnknownSoldier · · Score: 1

      > I am currently on the group that works on the 2018 revision of the IEEE 754

      When is the IEEE 754 group going to fix the broken 1/0 = Infinity definition?

    2. Re:Not tab vs space but "Dual bottom variables" by Terje+Mathisen · · Score: 1

      I hope we all agree that 1/0 should indeed return Inf?

      The problem areas are mostly related to single vs dual zeroes and infinities imho, what is your particular problem?

      Quoting from the standard:

      7.3 Division by zero 7.3.0 The divideByZero exception shall be signaled if and only if an exact infinite result is defined for an
      operation on finite operands. The default result of divideByZero shall be an (Infinity symbol) correctly signed according to
      the operation:
        For division, when the divisor is zero and the dividend is a finite non-zero number, the sign of the
      infinity is the exclusive OR of the operands’ signs (see 6.3).

      Terje

      --
      "almost all programming can be viewed as an exercise in caching"
    3. Re:Not tab vs space but "Dual bottom variables" by UnknownSoldier · · Score: 1

      > I hope we all agree that 1/0 should indeed return Inf?

      Absolutely not !

      > The problem areas are mostly related to single vs dual zeroes and infinities imho, what is your particular problem?

      The problem of 1/0 = +Infinity is that it is mathematically incorrect for TWO reasons:

      1. Division is the dual of multiplication, namely it is defined as:

      a/b = c
      a = b*c

      However when a != 0, such as 1, b =0, and using the broken IEEE re-definition of c=Inf, then this implies that 'a' is ...

      1 = 0*inf

      ... which is utterly stupid as this is impossible. Why is the IEEE754 standards hijacking mathematics to redefine basic concepts???

      2. Inspecting the limit of 1/x shows that:

      * When we approach `a` from the negative numbers we approach the limit of -Infinity.
      * When we approach `a` form the positive numbers we approach the limit of +Infinity.

      Divide by zero produces a singularity of BOTH positive Infinity and negative Infinity. Artificially limiting 1/x to Infinity is incorrect as it leaves out the other (half) answer out. The _whole_ point of even having NaN is to represent undefined or indeterminate values. Hijacking Infinity to be mean 1/0 is just that -- hijacking a basic mathematical concept. NaN is the only value that makes sense.

      BTW. You wouldn't happen to be THE Terje Mathisen of optimization fame by chance?!

    4. Re:Not tab vs space but "Dual bottom variables" by Terje+Mathisen · · Score: 1

      1. Division is the dual of multiplication, namely it is defined as:

              a/b = c
              a = b*c

      However when a != 0, such as 1, b =0, and using the broken IEEE re-definition of c=Inf, then this implies that 'a' is ...

              1 = 0*inf ... which is utterly stupid as this is impossible. Why is the IEEE754 standards hijacking mathematics to redefine basic concepts???

      First, 754 is very emphatically NOT mathematics, it is rather a (imho) very good attempt to make an internally consistent set of rules that allow you to perform real-life calculations with as good a precision as the storage format allows.

      The decision to define 1/0 as Inf (and 1/-0 as -Inf) follows directly from this: If the only thing you use such an Inf for is to scale another value (1/0 -> inf, x/inf -> 0), then you will end up with a true zero, which is the closest possible approximation to the real result (i.e. if the zero divisor was the truncated limit of something approaching but not quite becoming a true mathematical zero). If you try to use such an Inf for almost anything else, the result will indeed become a NaN, which is what you wanted anyway, right?

      I.e. 754 tries to retain as much potentially useful information as possible.

      Like I said there is a neverending split between those who work in polar coordinates and _know_ that there is only a single Inf, and those who use cartesian and absolutely require signed Inf. If you read some of the 754 history out there you will see that this has been a very sore spot all the way back to the original 8087. :-)

      BTW. You wouldn't happen to be THE Terje Mathisen of optimization fame by chance?!

      Guilty as charged, still trying to optimize code every week, and to teach the mindset needed to younger programmers. :-)

      I know that classic quote, "premature optimization is the root of all evil", but I still find it impossible to write any significant code at all before I have figured out an efficient way to solve any given problem. :-(

      Terje

      --
      "almost all programming can be viewed as an exercise in caching"
  38. JavaScript needs no successor, it must step down by rodia · · Score: 1
    The freedom to write programs that run pretty much everywhere via the web must not come with being forced to use one language, JavaScript, regardless of how "good" this language is. With asm.js and, hopefully very soon, WebAssembly, we have two compilation targets that should work for most programming languages. Implementing compilers will be quick once the WebAssembly-backend for LLVM really works with browsers. We can then use any langage we like to "script" our web apps:

    code in your fav lang --> AST --> LLVM representation --> WASM src --> |(interwebs) --> |(browser) --> WASM binary

    Diversity means freedom. And if we push it a little further, we could even end the "spaces vs tabs" and the "curlies vs. indentation blocks" and all the other endless AST representation discussions to rest:

    code in your fav lang syntax flavor --> code in your fav lang --> AST ...

    All it takes is Editors which support "syntax styles" to present the AST of a language, just like css presents HTML. Hell, in Atom you could probably even do this with an actual css. Oh, and it would take developers who understand that we actually code an AST, not spaces and tabs and curlies and stuff.

    P.S.: plz do not reply if you don't know what AST means :-)

  39. Quickly navigate whitespace by hackwrench · · Score: 1

    What? CTRL-Left Arrow/Right Arrow doesn't work in your editor?

    1. Re:Quickly navigate whitespace by andi75 · · Score: 1

      What arrow keys? I navigate using ctrl-f/b/n/p or the j/k/l/; keys

    2. Re:Quickly navigate whitespace by Anonymous Coward · · Score: 0

      I use sublime text 3, how do you use jkl to navigate? CTRL-f/b/n/p seems to be the same as the arrow keys, not sure how that is better or easier.

  40. Raging fuckmuppets suggesting both approaches by Anonymous Coward · · Score: 0

    Ignorant liberals who propose using both approaches are clueless cockwombles who should be banned from Earth.

    1. Re: Raging fuckmuppets suggesting both approaches by Anonymous Coward · · Score: 0

      I find your unusual derogatives intriguing and would like to subscribe to your newsletter.

  41. On his way out the door, And another thing! by Anonymous Coward · · Score: 0

    Emacs is a pile of crap!

  42. The sequential model of Fortran by TeknoHog · · Score: 1

    Most languages have followed the sequential model of Fortran, executing one operation after another, he said. 'That's not how the world works anymore. We now have lots of cores available to us, which all want to be running at the same time.'"

    That's pretty ironic, considering Fortran (at least F90 and up) has native parallel programming features. Namely vector/matrix math syntax, which decent compilers can turn into hardware-level parallelism.

    --
    Escher was the first MC and Giger invented the HR department.
  43. Not again by Anonymous Coward · · Score: 0

    Sounds like a slightly reworked version of the "x86 architecture is sooooo archaic! It needs to be replaced with something much more efficient and modern!" argument.

    Yes, JS/x86 are wart fests that many of us, including me, have howled about over the years. But good luck trying to replace them in the real world.

  44. Why wait? by buss_error · · Score: 1

    No Script and Ad Blocker Plus are on all the time on my system. Why aren't they on for yours?

    --
    Necessity is the plea for every infringement of human freedom. It is the argument of tyrants; it is the creed of slaves.
  45. merge typescript into ES8 by Anonymous Coward · · Score: 0

    I am a java programmer since the nineties, started to use javascript professionaly for the last 2 years. First: I like the concept of adding external DSL to javascript like Jsx from react.js for UI templating. Second: with the babel transpiler I can code against the latest ES standard and still run my code in completely outdated js runtimes. Third: typescript. It adds strong typing to javascript. It also gives you a nice conceptual solution for the undefined maddness in javascript with union types. Unfortunately typescript has its own transpiler iso using babel. IMO typescript should be remade in babel and put into the next ES standard.

    1. Re:merge typescript into ES8 by micahraleigh · · Score: 1

      Sounds viable, but then I wonder why typescript isn't getting adopted.

      I see several companies and frameworks (e.g. Angular 2.0) using typescript, but then devs and/or companies avoid those frameworks.

  46. Doesn't know Fortran by confused+one · · Score: 0

    Guy might know Javascript; but, he doesn't know Fortran very well. Fortran 90 or 95 added a lot of modern programming features, including pointers and dynamic data structures. Fortran 2003 added object oriented programming structures. It also improved interoperability with C and the like. Fortran 2008 explicitly added parallelism and multiprocessing capability. Fortran is not a dead language, is not the FORTRAN 77 people use as a reference when they try to make a point about "old languages". It is still used widely in engineering and science applications. That code running the simulation on the big supercomputer: good chance it's Fortran.

    1. Re:Doesn't know Fortran by BlackPignouf · · Score: 1

      That code running the simulation on the big supercomputer: good chance it's Fortran.

      Or Python. With each year passing, there are fewer reasons to use FORTRAN and many more to use Python. Even on supercomputers.

    2. Re:Doesn't know Fortran by Anonymous Coward · · Score: 0

      True. I'm working on code right now that directly links to fortran for some functionality and includes some blocks of what look suspiciously like the result of running code through f2c (or were written by someone who really like writing fortran but were forced to use c - I could go either way but for certain datatype macros they've included).

  47. Not soon enough by JohnFen · · Score: 1

    Javascript can't die soon enough for my taste.

  48. Crockford is a crock by Eravnrekaree · · Score: 1

    He is a bunch of senseless babble. The nul and undefined nonsense is basically what color to paint the shed nonsense, that has more to do with just changing something for the sake of change or for some spurious reason. They have some convoluted reason but its some highly obfuscated answer using complicated convoluted argumentation to hide its trite baselessness. Functional programming tends to turn into a mess and is not itself a "feature" because many procedural languages have a full set of functional features, functional languages do not offer something other languages do not, its more about what they do not have to fit some puristic idea of the functional cult zealots. the comments about let and define are more nitpicking rather than a real substantial issue. So there are two ways to define a variable. So what? The sky is not falling.

    Attempting to go functional leads to horrendous obfuscation and bizzarre code when you try to interact with the external environment. Thanks, but no thanks.

    There is no need to replace javascript and this itself is a waste of time and resources, because everyone who knows javascript would have to learn a completely new language, and they will waste time doing so rather than just getting stuff done. People like Crockford are talkers rather than doers who sit around talking about how they are going to make life difficult for others and coming up with crazy schemes to waste peoples time. They are like beauracrats who come up with senseless regulations, they contribute nothing but they enjoy the feeling of power of being able to obstruct productive people.

    the best thing we can do is ignore nonsense from these kinds of people.

  49. naive nativism by epine · · Score: 1

    Would you prefer that applications that actually need those features instead be native applications that are specific to an operating system other than the one you use?

    Ephemeral, trust-before-first-render, load-from-goshdarn-anywhere is a fine security model (almost) if all the application can do is move coloured pixels around on your screen (1% of these will still pretend to be your favourite financial institution).

    With the "native" applications (which could well be 100% portable flavour-of-the-day) I can audit my installation log to determine at all past points in time which applications could potentially have accessed or manipulated key system resources (such as my GPU, but this list could in theory be very long and fine grained), where they were obtained from (including the original authentication handshake), and other potentially incriminating metadata.

    So, yeah, there are many cases where I like the "native" security model 10,000% better than any hot-loaded trojan.js.

    Even if all computers ever built were 100.000,000% compatible, I would still prefer the "native" security model 99.99% of the time when real resources become involved.

    To put this in Tversky / Kahneman terms: the web security model is System 1 lizard brain, while the "native" security model is painful enough to (mostly) be System 2 belt-and-suspenders brain (or at least tighty-whitey and fungus-proof shower-sandal brain).

  50. FTFA: "... 'var' confuses JAVA programmers ... " by fygment · · Score: 1

    Did not know know of this implied criteria for language design which by extension means any new language must not confuse JAVA programmers.

    And the language certainly can't be functional ... because _that_ confuses Java programmers.

    Conclusion: we should all just use JAVA. ... no thank you.

    --
    "Consensus" in science is _always_ a political construct.
  51. I have a better idea. by Anonymous Coward · · Score: 0

    How about we eliminate client-side scripting entirely?

    Seriously. Right now I have a high-end 3-year-old gaming machine running Firefox with NoScript. I have a dozen windows minimized with maybe a hundred tabs I'm saving to look at later. Some are reference material, some are webcomics, some just interesting articles. My machine is otherwise idle, yet somehow one core is completely pegged even as I type. Some dumb-ass script is soaking a virtual CPU doing... nothing. Nothing at all. It's minimized and idle.

    Meanwhile, I have a FIFTEEN-year-old iMac next to me. It is running TenFourFox (G4 build of Firefox) with the setting "javascript.enabled" set to "false". I have maybe a dozen windows open with a hundred or so tabs. It is also serving as a router/NAT for all my other machines. It is sitting at only a couple percent CPU usage. I use THAT machine for my normal web surfing, not my gaming machine.

    Think about that. 12 years more advanced, running roughly the same load, the only difference is client-side scripting. Why the fuck did I spent thousands of dollars just so some marketing shithead can run arbitrary code on MY computer? I am constantly running into pages on my iMac where an article will fully render, but no images appear inline. Why? Some idiot thought it was a good idea to replace a simple image tag with a fancy client-side script that dynamically re-writes the page as it loads to insert the image tags after it has loaded. What the fuck do they need to run code on my machine just to make the page less functional for? And very recently I've come upon several pages that just show a blank white screen on my iMac. When I check out the source, the only thing it does is download a shit-ton of scripts, which I presume would dynamically render the page after the fact. I suspect this is the hyped "Angular", but I really don't care enough to find out.

    Fuck you, everybody who thinks they NEED to run code on MY machine. I sent an HTTP request to your server expecting an HTML page with static content in it. I did not sign up for running an entire fucking application on my computer, written by the lowest-denominator web monkey who only cares about himself, not my own safety and well-being. Give me back my HTML/CSS Web! I have never, ever seen any use of client-side scripting I actually needed. I've seen lots of fancy uses of it, but I could always think of a way to do the same thing with static HTML and a server request. Meanwhile, there are virtually no browser security exploits that work without client-side scripting. My iMac has been running for well over a decade without ever being compromised, I know from both the CPU monitor and the network monitor. Amazing how much safer the Web is when you refuse to run random code on your own machine.

    Web developers: Fuck you. Learn how to use the existing tools. You do not need to re-invent entire applications in JavaScript. You really can do your job with HTML and CSS. Yes, you can. You really can. Stop being lazy stupid asses and do it. I do not need a fancy-ass dynamic portal just to view a few articles or shop online. I don't need an entire software suite to browse cruises or air fares. I do not need ten megabytes of script just to look up an NPC in a game. I do not need three plug-ins and scripts from half a dozen places just to see a silly cat video, I was viewing video online back in 2001 just by clicking a link to an *.mpg file. And I sure as hell do not need to run a God damn carousel of rotating products in a page I opened in the background and have not even made visible yet.

    You are hurting us. Stop it. Just stop it.

  52. Recompiling if all you have is a binary by tepples · · Score: 1

    I don't need to play Quake 5 written in JavaScript. That's what C's for.

    Until you find that a program written in C was compiled for an instruction set and operating system other than that of your computer.

    Recompile?

    Good luck recompiling if all you received from the application's publisher was a binary compiled from source code that the application's publisher considers a trade secret. I figured that would be obvious because Quake is the title of a video game series. Or are you referring to Id Software's historic process of distributing its older engines as free software years later after engine licenses dry up?

  53. In all of my years coding it doesn't matter.... by Anonymous Coward · · Score: 0

    The language doesn't matter. Developers will find a way to fuck things up. A shitty developer is a shitty developer no matter what language they use. People just get thrown into a project and may or may not really know the language they are writing the code in. They just hack along as they go without really understanding the language. It is like a first year Spanish student trying to act as interpreter at a UN event. Results will vary.

  54. Just Say No To JavaScrip by littlewink · · Score: 1

    Sell yourself as a pure HTML/CSS page developer and convince your buyers that the increased security and throughput is worthwhile.

  55. Give Apple a monopoly by tepples · · Score: 1

    Personally, I find the difference so stark that the lack of portability is a price I'm willing to pay.

    A Mac with a Windows license is the only kind of computer that can (legally) run all current applications for popular desktop operating systems, particularly proprietary applications that are Mac-exclusive or Windows-exclusive. Yet if we were to recommend switching to a Mac as the universal workaround to the lack of portability of desktop computer applications, this would give Apple a monopoly on the desktop computer market. Can I put you on record as believing that granting Apple such a monopoly "is a price I'm willing to pay"? If not, what did I misunderstand?

    1. Re:Give Apple a monopoly by Kielistic · · Score: 1

      Any software important enough to justify people switching from Windows to Mac or vice-versa isn't going to run in a damn browser anyway so your point is moot. Native applications are never going away with JavaScript webapps to replace them- that's just asinine.

  56. Big deal.. by Anonymous Coward · · Score: 0

    Various Basic implementations had DIM and VAR, arrays could be undimensioned or contain zeros or even be dimensioned but undefined. This made no difference as the developers always stuck to the same conventions, this changeist author seems to have nothing better to write about.

    Long live Javascript.

  57. This douglas cuckford guy is FUCKING RETARDED by Anonymous Coward · · Score: 0

    I hope that anyone who uses spaces gets their hands chopped off, and never codes again.
    Especially people who say that we should completely remove tabs.

    Also there is nothing wrong with JavaScript, it is perfectly fine as is.