Visiting the various boards, I get the sentiment that assembly language is only used in very specific cases, optimizing critical code, fine tuning sections of code and so forth and the bulk of code is coded  in some high level language.

It has also been said, that anything that can be programmed to run on a computer can be programmed in assembly language. Im refering to OOP, procedural programming, TOP and other paradigms. Why then is assembly language taking a backseat behind C/C++, JAVA and all the other high level languages?

What about the assemblers? aren't there many good quality assemblers out there? I have tryed quite a few of them and they all produce quality code. Each of them seems to have syntax/features I like and some I dislike. I have programmed in pure assembly (no HLL constructs like if endif etc) and also with all the bells and whistles that some of the assemblers come with. My observation on this issue is the more HLL the syntax, the shorter the developpment cycle (not surprising to me).

I'm just a computer enthusiast and have never produced a commercial program and so I consider my opinion as inferior in this topic, keep this in mind. Portability and interfacing with other languages has not been imortant to me since all I do is 100% windows.

Lets turn the tabe. How about creating an assembly language paradigm? What about creating a modular frame work/philosophy/methodology that can be easyly adapted to any of the predominant assemblers. I have seen it written, "if you want to do OOP why don't you code in C++?" Even though I'm not a huge fan of OOP, certain things do appeal to me from a organisational point of view, namely the association of code with data and function overloading for example. On the other hand one does not have to become enslaved by supporting all and everything OOP stands for and fully support and integrate with C++. The same goes for all other paradigms too.

What should be coded in asm and what should not be coded in asm?

What does RAD mean? A 20'000 line of code app in 2hrs or a 1000 line of code app in a weekend?

What about code reusability? If I have a sipmple file search utility program that parses file names based on a "FileNameinput" , how would one code it so that the parsing section could be used in a other program to parse commands in a assembler for instance? How much bloat would have to be added to make such a feat possible?

I'm fully ware that there are many ways to do anything and no one way is perfect in all situations, but I thought I would try to get a discussion going.

Looking foreward to hear your opinions.
Regards
Klod
Posted on 2010-08-15 02:00:33 by Klod
Rapid Application Development (RAD) is a catch-phrase, a marketing term which is typically used to describe Object-Oriented Programming (OOP), aka "modular programming", where the programmer creates their application from, primarily, pre-built (and pre-optimized) "object files" which each associate some functions and their immediately related data variables.

The term OOP generally makes people think of C++ and other "high level languages", although the programming paradigm certainly existed well before the first C compiler... only it had no official name, and no conventions.

The immediate future of ASM appears to be Object Oriented Assembly Language, which again, is NOT a particular language, but a programming paradigm. See "HLA", "ObjAsm", and "ATC" for some example OOPASM models, in descending order of "high level languishness". Note that OOPASM models typically support the COM convention, and thus are interoperable with C++, VB and other HLLs.

Note that there is work underway to create such a model for the NASM assembler, although this work is still in the embryonic stage, it will allow asm programmers to write cross-platform oopasm for the first time.

Posted on 2010-08-15 03:20:09 by Homer

I'm just a computer enthusiast and have never produced a commercial program and so I consider my opinion as inferior in this topic, keep this in mind. Portability and interfacing with other languages has not been imortant to me since all I do is 100% windows.


I've spent a major portion of my life developing commercial applications. I've written code for AIX, Linux, Solaris, Unix, and Windows. I view portability as something every programmer should be interested in. Think of how much bigger your market share can be if not confined to a single platform. Granted, there are some things that cannot be truly done in a portable manner. However, look at Firefox as an example of how a top-notch portable program is done.


What should be coded in asm and what should not be coded in asm?


Mostly for portability concerns among multiple operating systems and platforms you'll use C for native code. C++ is also very viable but various vendors implement subtle changes with regard to their interpretation of the standard which can cause issues when porting.

Personally, my use of asm code is two-fold: solve a problem that my compiler cannot provide proper optimization of (getting rare nowadays), or simply because I feel like coding in assembly. When being paid to write commercial applications you will rarely find assembly as a spec requirement. IMHO - Corporations not directly involved in the development of operating systems or tools should not be implementing such code anyways.

You will find many fine examples of products developed right here using pure assembly language simply because the authors prefer it. It is the love of the language - not a corporate decision - as to why the products exist in the first place.
Posted on 2010-08-15 11:13:40 by p1ranha