Two things, the statement is out of date by many years as among other things, binary viruses are rare these days as AV scanners that are written properly can detect the type of activity that a binary virus attempts to perform. Most of the risks today are hacking, trojans and rootkits and they are often written in scripting languages. If you know what to look for in a binary file, things like stack entry and exit and generally what compiler code looks like, you will get some idea of what they are written in.
> However writing assembly is inefficient as it takes multiple commands to perform tasks such as system calls, which would take 1 line in a language such as C.
Like most things, it depends on how much you know about it AND the range of libraries you have, C does no better with a system API call than anything else, you have to pass the same number of arguments and call the function. In MASM it looks like this.
invoke MessageBox,hWnd,"Text Message","Title",MB_OK
This can be done because MASM has a preprocessor that is far more powerful than C/C++, Pascal and Basic.
> My question is why? why not use a higher level language to interact with the OS API.
File size, speed, power, architecture, lack of limitations etc etc etc ....
Now one word of warning here, we have had to deal with people interested in writing viruses for many years and know a massive range of tricks they use to try and extract information that will help them but if we even get a sniff of this, the post will be deleted and the person who posts it will get arseholed out the door faster than Halleys Comet.