The origin of software macros

Updated on 23-Apr-2020

The concept of software macros dates back to the 1950s when assembly language programming was used to create software programs. The purpose of software macros is to reduce lengthy coding by creating predefined building blocks with a specific set of instructions as a single chunk of code or program. You can plugin the same macro in several software applications without having to repeat lengthy code. Let's delve into the origins of software macros.

Origin

The term 'macro' has existed since the conception of programming languages ​​and it is used to automate common tasks. Macros were initially developed using the IBM 705 computer for the Dow Chemical Corporation and Air Material Command. In 1963, Timothy Hart proposed the addition of macros to LISP 1.5 in AI Memo 57. A macro instruction coded as per the framework of the target assembly language will be processed by a macro compiler. The macro language was followed by Macro Assemblers in the late 1950s. Programmers wrote a macro library for every target machine but not the complete assembly language program. The arrival of VBA and the ability to create macros from within Microsoft Office set new benchmarks in the software development arena starting from the late 1990's.

Keyboard and mouse macros

A keyboard macro combines a sequence of tedious keystrokes into one simple program and it dates back to early 80s. You can club usually used key stokes into one single macro unit. You can also automate frequently used mouse commands into single macro. It is possible to build macros using various third-party tools. Some of the recorders available during the early 1980s are SmartKey, SuperKey, KeyWorks and Prokey. In the last few years, keyboard macros have been the primary source of exploitation when it comes to the Massively Multiplayer Online Role Playing Games (MMORPGs). The usage of macros in online gaming enabled users to earn plenty of points illegally.

Nowadays, keyboard and mouse macros are created using the integrated macro module included with the relevant Integrated Development Environment aka IDE. We still remember how we worked with macros from within Visual Basic 6 in the early 2000s. Text editors such as Emacs and Vim were developed using macros. Emacs was used along with TECO followed by LISP. The Vim editor provided the capability to record keyboard actions. You could also create macros using Vimscript and Visual Basic for Applications (VBA) included with Office 97 through Office 2019.

Visual Basic for Applications the

purpose of VBA was to enable developers to build user-defined functions including automation of processes and was primarily used with Microsoft Excel. It could also access the Windows API and other functionalities via Dynamic Link Library (DLL). VBA originally expanded the capabilities of WordBasic, which was application-specific macro programming languages. You can manage various aspects of the host application in addition to manipulation of user interface features like Menus and Toolbars. 

Microsoft has included VBA with Microsoft Office, Office for Mac OS X, Microsoft MapPoint and Microsoft Visio. Some other notable applications with VBA that are not developed by Microsoft are CorelDraw, LibreOffice, AutoCAD, and WordPerfect among others. The problem with VBA is that hackers made use of the system to create computer viruses and malwares. However, the macros virus issue has been slowly addressed by the manufacturers during the development phase of the anti-virus programs.

Emacs

Emacs, also called Editor Macros, is a text editor with over 10000 built-in commands and was developed using macros. The first edition of the Emacs was released in 1976 by Carl Mikkelsen, David A. Moon and Guy L. Steele Jr for the TECO Editor drawing inspiration from TECMAC and TMACS. The GNU Emacs, which is the ported version of Emacs was developed by Richard Stallman. In 1991, XEmacs was carved out from GNU Emacs. As a developer, you can make use of the integrated commands to create macros. Emacs is being developed based on LISP programming language, which offers a deep extension capability. You will be able to write new commands for the editor. You can develop macros for the management of email, files, RSS feeds and much more.

Vim

Vim was developed by Bram Moolenaar for the Amiga computer in 1988. The first release Vim v1.14 was released in 1991. Vim was originally named as Vi IMitation but was modified to Vi IMproved in 1993. Vim was developed by drawing inspiration from Stevie Developed by Tim Thompson for the Atari ST in 1987.

Early LISP macros before

the arrival of macros, LISP featured FEXPRs, which is the function-specific operator. The inputs are syntactic forms of the arguments instead of the computed arguments. The FEXPRs was implemented at the same level as EVAL. Timothy Hart announced the addition of macros in 1963 to LISP 1.5 in AI Memo 57: MACRO Definitions for LISP.

Anaphoric macros

An Anaphoric macro deliberately captures the relevant form supplied to the macro. The term Anaphor means an expression that refers to another. The Anaphoric macro was introduced in Paul Graham's On Lisp.

Hygienic macro

Hygienic macros are macros that are assured not to cause the accidental capture of identifiers. These macros are a programmatic solution to the capture issue integrated with the macro expander. The term hygienic was drafted in the 1986 paper authored by Kohlbecker and Wand in the form of KFFD algorithm. The Syntactic closures evolved as an alternative by Bawden and Rees in 1988. Dybvig introduced the syntax-case macro system in 1993. The languages ​​that provide support for hygienic macro mechanism are Scheme, Racket, Nemerle, Dylan, Elixir, Nim, Rust, Haxe , Mary2, Julia and Raku. Some of the competing implementations of hygienic macros are syntax-rules, syntax-case, explicit renaming and syntactic closures. 

Parameterized macro

The purpose of the Parameterized macro is to insert the specified objects into its expansion <#define pred (x) ((x) -1)> You can pass any value to the argument 'x'. The parameterized macros are mainly used in C, LISP, PL / I and Scheme. The computer typesetting system TeX makes extensive use of macros. MacroML is used to reconcile static typing and macro systems. Some of the other macro scripting languages ​​are troff, nroff, CMS EXEC, EXEC 2, CLIST, REXX and SCRIPT.

Alternatives to Macros

Macros are aggressively used by Microsoft Excel users to perform complex mathematical operations. Even though you can create macros from within Excel, the complete dependency of Excel will be harmful in the long run. The best alternative is to make use of open-source platforms such as Python, PHP and R that can be used to perform any complex tasks. This includes aggregate, reshape, pivot, graph and plot including the ability to import and export data into databases. You can also make use of lists and arrays to create packages instead of buggy DLLs and COMs. Moreover, consoles such as PyCharm and RStudio stand out of the crowd with powerful IDE when compared with Visual Studio. If you are not interested to work with any of these solutions, you can try exclusive Robotic process automation software available on the market. 

Tools for Macros Development

You can create macros using third-party software programs such as Macro Express ( https://dgit.in/macroexp ), Macro Recorder ( https://dgit.in/macrorec ), Macro Recorder ( https: / /dgit.in/macrorecor ), AutoHotkey ( https://dgit.in/autohotkey ), Quick Macros ( https://dgit.in/quickmacros ), Macro Toolworks ( https://dgit.in/macrotool ), AutoIt ( https://dgit.in/autoit ), Auto Mouse Clicker ( https://dgit.in/automouseclicker ), EasyClicks ( https://dgit.in/easyclicks ), Pulover's Macro Creator ( https: // dgit. in / puloversmacro ) and ShortKeys (https://dgit.in/shortkeys ). 

Conclusion

With the help of Macros, programmers will be able to avoid repetitive coding completely. The effective use of Macros will enable developers not only to reap rich dividends but also to increase productivity. With the rapid growth of technology, the development of macros has been simplified to a large extent with plenty of tools.

Connect On :