Become a fan of Slashdot on Facebook

 



Forgot your password?
typodupeerror
×
Java Programming Perl Python Stats

TIOBE's Language-Popularity Index Sees A New Top 10 Language: Assembly (tiobe.com) 348

TIOBE's "Programming Community Index" measures the popularity of languages by the number of skilled engineers, courses, and third-party vendors. Their July report indicates that Assembly has become one of the 10 most popular languages: It might come as surprise that the lowest level programming language that exists has re-entered the TIOBE index top 10. Why would anyone write code at such a low level, being far less productive if compared to using any other programming language and being vulnerable to all kinds of programming mistakes? The only reasonable explanation for this is that the number of very small devices that are only able to run assembly code is increasing. Even your toothbrush or coffee machine are running assembly code nowadays. Another reason for adoption is performance. If performance is key, nobody can beat assembly code.
The report also noted that CFML (ColdFusion) jumped from #102 to #66, Maple from #94 to #74, and Tcl from #65 to #48. But Java still remains the #1 most-popular language, with C and C++ still holding the #2 and #3 positions. Over the last five years, C# and Python have risen into the #4 and #5 spots (made possible by PHP's drop to the #6 position) while JavaScript now holds the #7 position (up from #9 in 2011). Visual Basic .NET came in at #8, and Perl at #9.
This discussion has been archived. No new comments can be posted.

TIOBE's Language-Popularity Index Sees A New Top 10 Language: Assembly

Comments Filter:
  • The only reasonable explanation for this is that the number of very small devices that are only able to run assembly code is increasing. Even your toothbrush or coffee machine are running assembly code nowadays.

    Wait, my toothbrush or coffee machine is capable of running assembly code? Normally, they only run bytecode that's been compiled from assembly code. I got my toothbrush for ten bucks with a charger, that's awesome! What's in there, an assembler or an interpreter? Either way, it must have a seriously overkill microcontroller.

    These ratings are based on search results. Pardon my skepticism. From what I can tell, more and more microcontrollers are being programmed in C these days.

    • Do you understand what 'programmed' in assembly means? Does not mean there is an assembler or interpreter on the device, only that the source code was written in assembler for some processor architecture, assembled to a binary image, and then programmed into ROM/FLASH/etc on the target device.

      'Programmed in C' does not mean your fancy toothbrush has to have GCC running on it to be able to do its thing any more than 'programmed in assembler' does.

      • Programs written in assembler do not need to be installed into rom or flash to run. Welcome to the 80s.
      • Thank you for shedding some useful light on this discussion. It is in danger of sliding off the rails. Education of "modern" coders seems to have omitted teaching programming history and the evolution of programming technology.
    • I prefer to do smaller Cs in Assembler. In real time systems it can be important to know EXACTLY how many cycles an set of instructions will take. You can also carefully craft a routine to have exactly the same run times no matter the branch it takes, which can be very important in areas where reliable timing is key (e.g. if you want to avoid that your encryption get broken by a timing attack, or when you're dealing with crap like the USB protocol which barfs the moment you're just a liiiiittle bit off).

    • If you want to know what this is all about read EEVblog #284 – Braun Toothbrush Teardown [eevblog.com] There is also a youtube video [youtube.com] worth watching. It talks about the microprocessor inside a toothbrush.

      And you thought you were joking.

  • Not convinced (Score:5, Informative)

    by LinuxInDallas ( 73952 ) on Saturday July 09, 2016 @06:43PM (#52480325)

    I've been involved in firmware development for implantable medical devices as well as other devices and it's simply not true that assembly has much use this day in age. Unless you are coding for one of the small memory footprint AVR or PIC devices you are not going to get better results working in assembly.

    • Nut even on those devices you need assembler to do some basic stuff. Writing the C library, writing the OS, writing interrupt handlers, making use of system level machine options (there's no "C" operation to control caching for instance).

      • Re:Not convinced (Score:5, Insightful)

        by gweihir ( 88907 ) on Saturday July 09, 2016 @09:02PM (#52480805)

        There are also some pretty stupid limitations in C, for example, no access to the "carry" bit. Usually it does not matter, but if it does, embedding assembler is the way to deal with that.

        • And optimizers are sometimes stupid. Ie, you do the equivalent of rotate and such and it doesn't figure out to replace with a single instruction. Don't always need it, but is handy for optimizing crypto type stuff.

        • There are also some pretty stupid limitations in C, for example, no access to the "carry" bit.

          This isnt a "stupid" limitation of C. Its just that the C abstract machine isnt low level in spite of the claims of modern C programmers.

          In 1980 if you said that C was a low level language you would have been laughed at. By 1990 C had become so popular that the collective wishful thinking of C programmers erroneously adopted the notion that C was low level.

          Now here we are today. C programmers are convinced that C is low level and cant imagine how anyone could have the knowledge to beat the compiler, be

    • Re:Not convinced (Score:5, Interesting)

      by Austerity Empowers ( 669817 ) on Saturday July 09, 2016 @07:23PM (#52480495)

      There are good reasons to work in assembly, particularly in systems programming. Or if you don't want to pay licensing fees for an OS, you may need to implement functions in assembly that are not possible in a high level language like C (manipulating machine state registers, implementing barriers, etc.).

      I have been using assembly for various architectures for my entire career and most of my teenage life, I don't see any reason why it would ever go away. Mostly the number of people doing high level development has increased so radically that it honestly surprises me that it makes #10. Optimization for performance is definitely not a reason I'd expect to see asm hit #10 - most companies don't spend enough time on their applications to get to the point where they can optimize intelligently, and writing something in assembly is not always or a performance enhancer.

      • Comment removed based on user account deletion
        • Funny, I never had trouble accessing registers using C

          Memory mapped registers? Sure, no problem. But you also have I/O mapped registers which require special instructions, as well as things like the arm machine state registers which have a family of instructions you need to use. Then there are things like memory and instruction barriers, they also require specific instructions that you cannot make C emit without a library call to an asm function. You have cache invalidates, semaphore mechanisms etc. All o

        • I never had trouble accessing registers using C

          Odds are you do not know all of the registers on your chip.

    • I've been involved in firmware development for implantable medical devices as well as other devices and it's simply not true that assembly has much use this day in age.

      I've been involved in firmware development for small devices. In my (probably limited compared to you) experience, the ability to read and understand assembly is just as important as it's always been in that space, even if not a single line of deployed code is written in assembly. If I was hiring someone, I would put that in the job requirements. For TIOBE's statistics-gathering purposes, that may well translate to "assembly programmer wanted".

  • by jfdavis668 ( 1414919 ) on Saturday July 09, 2016 @06:49PM (#52480349)
    They are machine dependent.
  • by slowdeath ( 2836529 ) on Saturday July 09, 2016 @06:49PM (#52480351)

    X86, ARM, AVR, IBM360, PDP8, or what? Just saying 'assembly' is not all that interesting. Processor architecture(s) would be interesting to know.

    • em6882. Is there even a C compiler for that chip? There are many low cost chips like that in the world., Probably an order of magnitude more than x86 or arm combined.
  • ... or are they mixing assembly up with web-assembly?
    That would explain a thing or two.

  • Ahem (Score:5, Insightful)

    by kackle ( 910159 ) on Saturday July 09, 2016 @07:05PM (#52480431)
    "Why would anyone write code at such a low level, being far less productive if compared to using any other programming language and being vulnerable to all kinds of programming mistakes?"

    A) Why don't you ask them and learn?

    B) I politely disagree that they are automatically "far less productive". I am an embedded programmer and have only used tiny amounts of assembly over the last decade. However, if I had more tiny projects, and my bosses weren't akin to cats chasing flashlight spots to where I could stick with the same processor for more than a year, I'd consider it for sure. Why? Because I never seem to get to just "code and go" anymore. As an example, last week I had to reinstall my multi-gigabyte Eclipse IDE for the SECOND time this past year (this time due to a debugger corruption). In such IDEs, all the higher libraries (and their paths) need to be in place, and compiled too (which doesn't always go perfectly). Whereas my former officemate would open any text editor (his was Corel Word Perfect(!)) to write his assembly, then compile on the command line, then upload the binary.

    I don't know how many hours I've spent learning and fixing IDEs. Then, a year to two later, the IDE changes again after the chip's OEM "upgraded" it! ...More productivity down the drain.
    • by lgw ( 121541 )

      That's not a problem with "compiled code". That's the problem that Eclipse blows goats for crack. Switch to IntelliJ (or the other language products by the same guys) - still takes a while to load, but at least it won't corrupt itself.

      Of course, Notepad++ is good enough for most simple C/C++ programs, or small bugfixes. Anyone recommend a decent Linux equivalent? And no, if I wanted VIM, I already have VIM, thanks.

    • I always write assembly because it's easier to read than Perl.
  • by Guy Harris ( 3803 ) <guy@alum.mit.edu> on Saturday July 09, 2016 @07:20PM (#52480483)

    Here's a electric toothbrush reference design [ti.com.cn] from Texas Instruments.

    Here's the MSP430G22x0 microcontroller used in the design [ti.com].

    Here's a list of software tools for that microcontroller [ti.com]. The list includes something called "GCC", which they say is an "Open Source Compiler for MSP Microcontrollers".

    Here's a page from Renesas about electric toothbrush designs [renesas.com].

    Here's a list of software tools for Renesas processors [renesas.com]; they list C compilers for the R8C and RL78 microcontrollers, as mentioned in the previous page.

    So don't assume all the code in your toothbrush was written in assembler language; some of it may have been written in C, although some of the low-level library routines might be written in assembler (or an asm in the C code).

    • And, yes, there are people who want to hack their toothbrushes [allaboutcircuits.com].

      (For more fun, try a Web search for "toothbrush microcontroller" - that's how I found all those links.)

    • According to TFA, the electric toothbrush reference design is also suitable for 'personal care items'.

      Never in a thousand years would I have thought such a stodgy outfit as TI would have ever created a reference design for a vibrator.

      Not to mention the sad state of affairs when said vibrator needs a microprocessor. Now you have no idea with the thing is really doing when you turn it on. This is a really fucking weird world.

      • by tepples ( 727027 )

        Without an MCU, how would an iBrator vary its rate in sync with the porno you're watching?

  • I wanted to take assembly language in college. The dean wanted to teach the course. But I was the only student who showed up for the class. One student doesn't prevent a class from being cancelled. Since this wasn't a required course for graduation, I couldn't take it as a special studies project.
    • by gweihir ( 88907 )

      That is tragic. While rarely used, it gives you a far better understanding of how things work. Seems most engineering students these days aim for being mediocre.

  • Explanation is bogus (Score:2, Interesting)

    by jrumney ( 197329 )

    The only reasonable explanation for this is that the number of very small devices that are only able to run assembly code is increasing.

    The smallest device I have written code for is a PIC with 512 bytes of RAM and 256 bytes of ROM. It had a C compiler. It is also lacking in connectivity for making trendy IoT devices. So what are all these devices that can only run assembly code?

    I think a more likely explanation is that fad languages come and go, and now that globalization has driven the value out of prog

  • Then there's also the popularity of retro computers and consoles. There is an increasing number of indie/amateur developers developing for these machines as a hobby.

    During the last few months I have been uploading my Z80 assembly code to GitHub myself (a game for MSX computers), and many other developers are doing the same.

  • My 300Euro coffee machine runs no code at all.
    Neither does my plastic tooth brush.

    And by the way: Assembly is not a language. 68k Assembly might be one assembly language. x86 another one. Both have not much in common.

  • by Xenna ( 37238 ) on Sunday July 10, 2016 @03:07AM (#52481713)

    Perhaps THOBE is mistaking the fact the NASA put up the full assembly code for the Apollo 11 guidance computer on Github and the interest in that (6000+ stars) for a revival of the language instead of a historical artefact.

    Check it out here and don't forget to start it, together we can confuse THOBE and make Assembly the #1 language of the world again! ;-)

    https://github.com/chrislgarry... [github.com]

  • by Casandro ( 751346 ) on Sunday July 10, 2016 @04:21AM (#52481849)

    First of all, many, if not most, computers run software so trivial on microcomputers so small, installing a compiler for them would just be _way_ more effort than to just code to program in C. Typical examples are the microcontrollers in electric toothbrushes or other smaller embedded systems. It's hard to get your software running on a 4 bit microcontroller as modern C makes assumptions like having your memory addressible at a byte level.

    Then there is another, in my opinion more important, point. Assembler is a great teaching aid. It shows you what the computer actually does. Understanding things like pointers is trivial in Assembler so you can learn a lot from it. Also in Assembler every control structure hurts, as you need to keep track of it yourself. This nudges you towards writing simpler code, away from thousands of nested if statements and functions with hundreds of lines. Those are desirable traits in all programming languages.

    No language is suitable for everything, but most languages have at least one are where they are really useful.

The only thing necessary for the triumph of evil is for good men to do nothing. - Edmund Burke

Working...