Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!

 



Forgot your password?
typodupeerror
×
Programming Java

2017: The Year in Programming Languages (infoworld.com) 117

InfoWorld writes that 2017 "presented a mixed bag of improvements to both long-established and newer programming languages." An anonymous reader quotes their report: Developers followed a soap opera over Java, with major disagreements over a modularization plan for standard Java and, in a surprising twist, Oracle washing its hands of the Java EE enterprise variant. Microsoft's TypeScript, meanwhile, has increased in popularity by making life easier for developers looking for an alternative to JavaScript. Microsoft also launched Q#, a language for quantum computing...

In web development, developers received a lot of help building with JavaScript itself or with JavaScript alternatives. Among the tools released in 2017 were: Google's Angular 5 JavaScript framework, released in November, featuring a build optimizer and supports progressive web apps and use of Material Design components... And React, the JavaScript UI library from Facebook, went to Version 16 in September, featuring a rewriting of the React core to boost responsiveness for complex applications...

TypeScript was not the only JavaScript alternative making waves this year. For web developers who would rather use Google's Go (Golang) language instead of JavaScript, the beta Joy compiler introduced in December promises to allow cross-compilation. Another language that offers compilation to JavaScript -- although it began on the JVM -- is Kotlin, which has experienced rising fortunes this year. It was boosted considerably by Google endorsing it in May for building Android applications, which has been chiefly the domain of Java...

2017 also saw the release of the long-awaited C++ 17.

Another 2017 memory: Eric Raymond admitting that he hates C++, and predicting that Go (but not Rust) will eventually replace C -- if not a new language like Cx.
This discussion has been archived. No new comments can be posted.

2017: The Year in Programming Languages

Comments Filter:
  • I haven't seen an InfoWorld article for ages, and after reading their C++17 article, I remember why.

    C++ seems to now have enough momentum that I can actually use new features. It wasn't until 2003-4 that C99 support was sufficiently widespread that people didn't complain if I used C99 features, and C++ had a huge ABI change around that time in the *NIX world that broke everything. These days, I'm already using C++17 features (finally, the language has decent support for multiple return values and tagged

    • Then add the standardization of WebAssembly, C++17 is going to gain even more momentum in places we don't expect.
      • Re: (Score:2, Insightful)

        by Anonymous Coward

        Not only C++. With WebAssembly one can have a python, swift or go interpreter in the browser. WebAssembly will probably start reducing market share for Javascript which to me is a good thing as I've wasted uncountable hours nitpicking small syntax javascript errors that were causing problems.

        I still think C++ has lots of flaws that are totally unnecessary. For example designers insist on not making syntatical breaking changes in C++ which to me is senseless. They could come up with a common bytecode as swif

        • For the last 30 years programming languages have been stuck in spin cycle.

          In the late 80's early 90's, "4th generation" languages were eagerly anticipated, saving people from having to code the same shit over and over again Those that DID show up were a great disappointment because they were pretty much limited to building forms for data entry and reporting for databases. Reporting packages have made great headway, but they are all still rather obtuse.

          We are still spinning away with countless 3gls coming an

          • One thing has remained constant and that is C++. No reshuffling of syntax, but introductions of new syntax when library solutions do not go far enough. No fear of losing backwards compatibility either.
            • by sycodon ( 149926 )

              True, but it's still the equivalent of stick building a house with hammer and nails. They all are.

              The only thing that changes is the shape of the hammer and length of the nails.

        • It's not senseless. C++ programs are written for systems intended to last a long time. So no one really wants to have their program suddenly uncompilable. Sure, they have no problem if changes are made that makes other people's projects uncompilable, but not their own. So when you factor in the fact that everyone uses C++ in a way that suits them, that means no breaking changes to the syntax can be made.

          I would argue this would be C++'s strength for WebAssembly. Unlike with the Javascript, or even HTML s
          • Breaking changes will probably be easier after modules are finalised. In a more modern language, you can have breaking changes by sticking a version directive at the top of a file and using that to select the correct version of the parser. Unfortunately, C++ uses the traditional C compilation model where compilation units are split across a load of files, some of which might not be writeable by the programmer, so trying to upgrade everything at once to a new version is a problem. Once modules are here, t
        • Alright, imagine that you are a company that has invested billions of dollars into billions of lines of code. And now someone wants you to rewrite all that because all of a sudden the syntax is different to conform to some random notion of "looking neater". Not gonna happen... C++ has a specific niche: it lets you write performant software on a large scale, and it guarantees that your investment will not be worthless overnight. There are plenty of places in the world where languages that change on a yearly

        • No, this would not make C++ developers happy.

          There is not going to be a common bytecode. Most C++ programs are compiled to native code, for performance purposes. C++ is used for systems and embedded programming, and bytecode isn't suitable for either of those.

          Breaking source compatibility isn't going to happen, even with binary compatibility. Nobody's going to stand for having three incompatible versions with their own compilers. If you were in the industry, you'd realize that you don't write a pro

    • How are you using C++17?
      There is still a large amount of bugs in all major compilers.

      • I've not come across any C++17 bugs in clang / libc++. Perhaps you could list some of the major highlights from the 'large amount of bugs'.
      • All the major stuff has been working for me since clang 4. constexpr if, variant, optional, any, filesystem (some APIs are not up to date).

        In clang 5, I've used constructor type deduction.
    • Back in the day I remember using boost::variant for tagged unions and creating DECLARE_ASSIGN_N macros for every possible N to do pattern matching on a function that returns a tuple. Ah, the good old times.

    • Bugger! I haven't got round to learning 14 yet!

      • The main thing in 14 that was useful is auto parameters on lambdas. You can delete a bunch of copied-and-pasted code with them, where it's not quite enough to be worth a separate templated function, and with 11 you can't factor it out into a lambda because one of the parameters has a different type. The most fun new things in 17 are structured bindings (multiple return values can be decomposed from a pair / tuple), std::optional, std::variant, and std::any.
  • by Anonymous Coward

    Alas, 5 minutes with a fresh Windows 10 installation will prove otherwise. What trash.

    • by 0100010001010011 ( 652467 ) on Sunday December 31, 2017 @04:49AM (#55837837)

      It may be an unpopular opinion, but I actually like Enterprise. I have it at work and uh, found a box that fell off of a truck.

      The difference between Pro and Enterprise is night and day. For some reason "Pro" still has crap like Candy Crush in the menu. Enterprise comes bare bones. The released "Professional" is a slap in the face to professionals that just want a desktop OS.

      In a house with Ubuntu LTS, FreeBSD, and MacOS X I actually like Windows 10 Enterprise. It's like they actually designed it for *drum roll* desktop users. I don't see how they can claim "Pro" is targeted towards business users. Random junk games showing up in the Menu is not something I want on a business desktop. That should have stopped at Home.

      I printed out a keyboard shortcut cheat sheet and can do almost everything without the mouse. If you ignore the close and minimize widgets I can get by using Windows 10 like Awesome WM. UEFI boot doesn't feel tacked on. I don't go through driver hell every time I reinstall, it actually manages to find them or have them installed. (Windows 7 didn't have basic Intel gigabit ethernet drivers...).

      I put off upgrading for so long because of the flaming trash heap that was Windows 10 Home on my wife's computer. I also know quite a few others that did the same. Make the installer ask some basic computer questions ("What is an IP address") and give professional users a professional desktop and it might not have the reputation it does.

      • As far as I can see, Windows 10 Enterprise is a very different product to the Home/Pro editions. Windows 10 seems to have a few modest technical improvements under the hood, but the things that have stopped us moving to it are the usual objections to telemetry, forced updates, adware, etc. The Enterprise version seems to have useful controls over those, which isn't surprising since clearly no large corporate IT department is going to surrender control of their essential systems to Microsoft. It's just surpr

  • by Gravis Zero ( 934156 ) on Sunday December 31, 2017 @04:36AM (#55837827)

    Perhaps the most important change in 2017 was the deployment of WebAssembly. It's the most important because it's the final nail in the coffin for readable JavaScript. Already it's being exploited and wasting everyone's computing power to scrape up cryptopennies. JavaScript as we know it is now over and the age of exploitation is in motion.

    Congratulations everyone, JavaScript is now a complete noose around your neck just waiting to be pulled! ;)

    • Already it's being exploited and wasting everyone's computing power to scrape up cryptopennies

      By default uBlock Origin [mozilla.org] includes a block list to protect against resource abusing scripts, such as coin mining scripts. And, if you think the default block list is not enough, you can add additional block lists to uBlock Origin like the NoCoin [github.com] list. So protect yourself with uBlock Origin and browse happy.

      • If you have to keep an updated list of locations to block then it means it's a successful tactic and is earning them revenue.

        See, my problem isn't with cryptomining scripts, it's with all scripts because any of them can be malicious.

        • it's with all scripts because any of them can be malicious

          Then NoScript [mozilla.org] or uMatrix [mozilla.org] can help you. uBlock Origin's advanced mode is also very powerful if you want to stick with the one add-on (which is better for the sake of simplicity).

      • by sfcat ( 872532 )

        Already it's being exploited and wasting everyone's computing power to scrape up cryptopennies

        By default uBlock Origin [mozilla.org] includes a block list to protect against resource abusing scripts, such as coin mining scripts. And, if you think the default block list is not enough, you can add additional block lists to uBlock Origin like the NoCoin [github.com] list. So protect yourself with uBlock Origin and browse happy.

        Ah yes, because proxies don't exist in 2017...

    • by Thiez ( 1281866 ) on Sunday December 31, 2017 @10:12AM (#55838513)

      It's the most important because it's the final nail in the coffin for readable JavaScript.

      Clearly you haven't been reading minified JavaScript recently. JavaScript hasn't been readable for years, and the world didn't end.

      JavaScript as we know it is now over

      I'd love to hear how you "know it" today, because the JavaScript served by most websites might as well have been a big binary blob.

      Downthread you mention:

      You're missing the point, this about more than just advanced users.

      Surely that is a completely separate concern? Non-advanced users have never been able to read JavaScript. And when WebAssembly becomes more popular, the non-advanced users won't be able to read that, too. So from their perspective nothing changes.

      • Clearly you haven't been reading minified JavaScript recently.

        That's a fair point but you can still read it with a bit of effort. I've done it.

        JavaScript hasn't been readable for years, and the world didn't end.

        it did for me. :P

        Surely that is a completely separate concern? Non-advanced users have never been able to read JavaScript. And when WebAssembly becomes more popular, the non-advanced users won't be able to read that, too. So from their perspective nothing changes.

        I'm speaking to the point that they will be exploited for their processing power by WebAssembly. It wasn't until recently that it became a real option.

        • by Thiez ( 1281866 )

          If you can minimized JavaScript I'm sure you can learn to read WebAssembly (with a bit of effort).

          I'm speaking to the point that they will be exploited for their processing power by WebAssembly. It wasn't until recently that it became a real option.

          If it's the processing power you fear, I'm sure it's trivial for browsers to slow down WebAssembly execution so it matches that of comparable JavaScript code. If cryptocoin mining through WebAssembly/JavaScript becomes so widespread that average users really star

  • Gotta love it when language examples involve notations like |0

    • Gotta love it when language examples involve notations like |0

      Looks like your last character quantum teleported off somewhere. I suspect the notation is meant to be |0>

      • I suspect the notation is meant to be |0>

        Programming with emoticons . . . and interesting concept . . . kinda sorta like APL, with its cockamamie characters.

  • The article seems to contain a typo; I'm sure he meant cixl, not cx. Take it from Eric Raymond, this is the future of programming: cixl - a minimal, decently typed scripting language https://github.com/basic-gongf... [github.com]
    • by HiThere ( 15173 )

      It looks moderately interesting, but I'm not interested in a language that doesn't allow concurrent execution, and I didn't notice anything about how you handle Unicode. (utf8 is fine, even utf32 internally, but forget about utf16...except where required by foreign function calls.)

      The "scan the stack backwards" might solve the problem that caused polish notation to be disliked, but the explanation needs to be clearer.

      Also, you need to do something to make the name more searchable (though it sure is an impr

  • TypeScript was not the only JavaScript alternative making waves this year

    Straight from the wikipedia page:

    TypeScript is a free and open-source programming language developed and maintained by Microsoft. It is a strict syntactical superset of JavaScript

    I stopped reading after that because the author is not qualified to discuss the subject matter domain accurately. TypeScript has also been around at least since 2014 because I was using it back then.

  • Worked on COBOL. Some new, some 1972.
  • C++17 was mostly just an incremental improvement over C++14, which was an incremental improvement over C++11, and the most-anticipated feature -- Concepts -- didn't quite make it into 17. Still, the work of the committee is gradually evolving C++ into a much nicer language. Modern C++ code written according to the C++ core guidelines [github.com] is simpler, clearer, safer, more maintainable -- and often more efficient.

    Unfortunately, all of the old language features that are no longer recommended are still present, so

    • C++ is becoming obscenely complex, and hence a pain to manage and a pain to find bugs and a pain to avoid creating more bugs when adding code

      • C++ is becoming obscenely complex, and hence a pain to manage and a pain to find bugs and a pain to avoid creating more bugs when adding code

        You clearly have not actually worked with modern C++.

    • by HiThere ( 15173 )

      I would have said "unwieldy". But it already was unwieldy.

      It's probably true that if I invested sufficient time C++ would be a complete language. But even were I an expert it would take me a long time to program anything, because there are too many fiddly details.

      Let me modify that. C++ is certainly a complete language, but so is C and so is assembler. None of them make it easy to turn well defined ideas into code. I prefer C++ over C because of a very few choices made long ago, e.g. the inclusion of r

      • I might not be an expert (depending on your definition), but I'm a competent C++ programmer. It doesn't take me a long time to program anything, partly because I know how to avoid dealing with the fiddly details. I find it fairly easy to convert ideas to code (depending on the ideas, anyway).

        C++ is far more expressive than C. Technically, anything you can do in C++ you can do in C, but in some cases you'll need painstaking attention to detail and lots of more or less opaque code.

        If you're looking at

  • 10 types of javascript instead of one, just what the webz needed ....

Some people claim that the UNIX learning curve is steep, but at least you only have to climb it once.

Working...