Assembly Language is Number 8
smist08.wordpress.com
smist08.wordpress.com
No, they use a nonsensical method to produce some numbers that get them attention.
For example, this month’s list sees C go down from a score of 16.21% to 10.72%, so it dropped a third in score, in one month time. Assembly more than doubled from 1.17% to 2.52%, Fortran almost tripled from 0.4% to 1.19%.
You don’t even have to see the numbers to question the methodology (https://www.tiobe.com/tiobe-index/programming-languages-defi...). Part of the score is determined by the number of hits for the programming language’s name on various Amazon sites and eBay, and they only exclude IMDb.com and Imgur.com because they do not give a result count on searches, Instagram because it doesn’t have a search field, and a few sites because they judge them to be porn sites.
The change numbers you refer to are over the last year, not the last month.
>The search query that is used is "<language> programming"
Google trends, if anything, shows a slight decline for that search term.
Where would you even start?
Start by looking at the assembly generated for something you understand and learn to read assembly from that. For example, this is an absolute function:
https://godbolt.org/z/356P1j56W
Try taking out that -O3 and see what happens. Just edit it out and hit return. Oh, you may have to Google sxtb but I think you might be able to guess what it means. You'll probably end up looking up instructions in the ISA manual. I do that all the time, even for instructions I 'know'. This is the A64 manpage for sxtb.
https://developer.arm.com/documentation/dui0801/g/A64-Genera...
I read a thousand times more assembly than I write, and I write assembly. BTW, Godbolt should be taught in 61C type courses. I just checked and it isn't.
Other compilers should have similar options -- this is what Godbolt is doing under the hood.
If you are asking or explaining something on StackExchange, Godbolt is the standard. You can document implementation decisions with Godbolt links in source code (LLVM 13 has 8 of them). You can share them on the Discord LLVM channels or in github reviews.
You can examine how the assembly changes by release and optimization level with Godbolt. You compare GCC vs LLVM vs Intel vs ... You can look at how other targets work, arm64 vs x86_64 vs ....
Or, pull out an emulator & go with a system where people may've been more prone to develop in assembly (eg 6502 & then try make a rom that'll run in an NES emulator)
For the most part once you learn one assembly language you've learnt them all. After load/store/registers/arithmetic/jumps the rest is just details (ofc, if you're programming assembly beyond a hobby, the devil is in the details for performance)
The 6502 chip is used in the NES, Atari, Commodore, Apple II and other popular vintage machines and is still used in embedded applications including medical implants (i.e. pacemakers)
I started working through this book on making games for the NES and found its explanation of the code samples enlightening. Once I get my bearings I plan to start programming my old Apple IIe.
discussed earlier this month:
ARM32 or MIPS are good first picks imo.
Nowadays I re-learn with different motivation: to write old school console (NES, Sega, etc) games: https://www.assemblytutorial.com/. C doesn't fit those architectures well, so you have to learn assembly.
"Some projects provide Java assemblers to enable writing Java bytecode by hand. Assembly code may be also generated by machine, for example by a compiler targeting a Java virtual machine. Notable Java assemblers include:
Jasmin, takes text descriptions for Java classes, written in a simple assembly-like syntax using Java virtual machine instruction set and generates a Java class file
Jamaica, a macro assembly language for the Java virtual machine. Java syntax is used for class or interface definition. Method bodies are specified using bytecode instructions.
Krakatau Bytecode Tools, currently contains three tools: a decompiler and disassembler for Java classfiles and an assembler to create classfiles.
Lilac, an assembler and disassembler for the Java virtual machine"
You expect Groovy, Kotlin, Scala, Clojure to run on WebAssembly soon?
However, all of them seem to be common enough I've heard of them before looking at the JVM wikipedia page, and it seems like Google is committed to Kotlin for Android going forward.
And all of them except Scala seem to have originated after the timeframe mentioned above.
I don't have a strong contrary opinion to yours; I just don't see where yours is coming from.
Ray Sefarth Introduction to 64 Bit Intel Assembly Language Programming for Linux was what we used in my architecture class. I thought it was good coming from only knowing Java at the time.
That class alone laid the world flat for me in regards to the "totality" of software development. Literally everything comes down to the 1's and 0's running through millions of transistors or whatever they are in the CPU. You are literally sending electric pulses through a rock and getting it to talk :)
Besides which have you ever tried to do anything non-trivial like reading or writing database records, complex file structures in assembly? It's slow to do, tedious and very error-prone.