Macro (computer science)
A macro in computer science is a rule or pattern that specifies how a certain input sequence should be mapped to a replacement output sequence according to a defined procedure. The mapping process that instantiates a macro use into a specific sequence is known as macro expansion. A facility for writing macros may be provided as part of a software application or as a part of a programming language. In the former case, macros are used to make tasks using the application less repetitive. In the latter case, they are a tool that allows a programmer to enable code reuse or to design domain-specific languages. Macros are used to make a sequence of computing instructions available to the programmer as a single program statement, making the programming task less tedious and less error-prone. Macros allow positional or keyword parameters that dictate what the conditional assembler program generates and have been used to create entire programs or program suites according to such variables as operating system, platform or other factors.
The term derives from "macro instruction", such expansions were used in generating assembly language code. Keyboard macros and mouse macros allow short sequences of keystrokes and mouse actions to transform into other more time-consuming, sequences of keystrokes and mouse actions. In this way used or repetitive sequences of keystrokes and mouse movements can be automated. Separate programs for creating these macros are called macro recorders. During the 1980s, macro programs – SmartKey SuperKey, KeyWorks, Prokey – were popular, first as a means to automatically format screenplays for a variety of user input tasks; these programs were based on the TSR mode of operation and applied to all keyboard input, no matter in which context it occurred. They have to some extent fallen into obsolescence following the advent of mouse-driven user interface and the availability of keyboard and mouse macros in applications such as word processors and spreadsheets, making it possible to create application-sensitive keyboard macros.
Keyboard macros have in more recent times come to life as a method of exploiting the economy of massively multiplayer online role-playing games. By tirelessly performing a boring, but low risk action, a player running a macro can earn a large amount of the game's currency or resources; this effect is larger when a macro-using player operates multiple accounts or operates the accounts for a large amount of time each day. As this money is generated without human intervention, it can upset the economy of the game. For this reason, use of macros is a violation of the TOS or EULA of most MMORPGs, administrators of MMORPGs fight a continual war to identify and punish macro users. Keyboard and mouse macros that are created using an application's built-in macro features are sometimes called application macros, they are created by letting the application record the actions. An underlying macro programming language, most a scripting language, with direct access to the features of the application may exist.
The programmers' text editor, follows this idea to a conclusion. In effect, most of the editor is made of macros. Emacs was devised as a set of macros in the editing language TECO. Another programmers' text editor, Vim has full implementation of macros, it can record into a register what a person types on the keyboard and it can be replayed or edited just like VBA macros for Microsoft Office. Vim has a scripting language called Vimscript to create macros. Visual Basic for Applications is a programming language included in Microsoft Office from Office 97 through Office 2019. However, its function has evolved from and replaced the macro languages that were included in some of these applications. VBA executes when documents are opened; this makes it easy to write computer viruses in VBA known as macro viruses. In the mid-to-late 1990s, this became one of the most common types of computer virus. However, during the late 1990s and to date, Microsoft has been updating their programs. In addition, current anti-virus programs counteract such attacks.
A parameterized macro is a macro, able to insert given objects into its expansion. This gives the macro some of the power of a function; as a simple example, in the C programming language, this is a typical macro, not a parameterized macro: #define PI 3.14159 This causes the string "PI" to be replaced with "3.14159" wherever it occurs. It will always be replaced by this string, the resulting string cannot be modified in any way. An example of a parameterized macro, on the other hand, is this: #define pred What this macro expands to depends on what argument x is passed to it. Here are some possible expansions: pred → pred → pred → Parameterized macros are a useful source-level mechanism for performing in-line expansion, but in languages such as C where they use simple textual substitution, they have a number of severe disadvantages over other mechanisms for performing in-line expansion, such as inline functions; the parameterized macros used in languages such
Graphical user interface
The graphical user interface is a form of user interface that allows users to interact with electronic devices through graphical icons and visual indicators such as secondary notation, instead of text-based user interfaces, typed command labels or text navigation. GUIs were introduced in reaction to the perceived steep learning curve of command-line interfaces, which require commands to be typed on a computer keyboard; the actions in a GUI are performed through direct manipulation of the graphical elements. Beyond computers, GUIs are used in many handheld mobile devices such as MP3 players, portable media players, gaming devices and smaller household and industrial controls; the term GUI tends not to be applied to other lower-display resolution types of interfaces, such as video games, or not including flat screens, like volumetric displays because the term is restricted to the scope of two-dimensional display screens able to describe generic information, in the tradition of the computer science research at the Xerox Palo Alto Research Center.
Designing the visual composition and temporal behavior of a GUI is an important part of software application programming in the area of human–computer interaction. Its goal is to enhance the efficiency and ease of use for the underlying logical design of a stored program, a design discipline named usability. Methods of user-centered design are used to ensure that the visual language introduced in the design is well-tailored to the tasks; the visible graphical interface features of an application are sometimes referred to as chrome or GUI. Users interact with information by manipulating visual widgets that allow for interactions appropriate to the kind of data they hold; the widgets of a well-designed interface are selected to support the actions necessary to achieve the goals of users. A model–view–controller allows flexible structures in which the interface is independent from and indirectly linked to application functions, so the GUI can be customized easily; this allows users to select or design a different skin at will, eases the designer's work to change the interface as user needs evolve.
Good user interface design relates to users more, to system architecture less. Large widgets, such as windows provide a frame or container for the main presentation content such as a web page, email message or drawing. Smaller ones act as a user-input tool. A GUI may be designed for the requirements of a vertical market as application-specific graphical user interfaces. Examples include automated teller machines, point of sale touchscreens at restaurants, self-service checkouts used in a retail store, airline self-ticketing and check-in, information kiosks in a public space, like a train station or a museum, monitors or control screens in an embedded industrial application which employ a real-time operating system. By the 1980s, cell phones and handheld game systems employed application specific touchscreen GUIs. Newer automobiles use GUIs in their navigation systems and multimedia centers, or navigation multimedia center combinations. Sample graphical desktop environments A GUI uses a combination of technologies and devices to provide a platform that users can interact with, for the tasks of gathering and producing information.
A series of elements conforming a visual language have evolved to represent information stored in computers. This makes it easier for people with few computer skills to use computer software; the most common combination of such elements in GUIs is the windows, menus, pointer paradigm in personal computers. The WIMP style of interaction uses a virtual input device to represent the position of a pointing device, most a mouse, presents information organized in windows and represented with icons. Available commands are compiled together in menus, actions are performed making gestures with the pointing device. A window manager facilitates the interactions between windows and the windowing system; the windowing system handles hardware devices such as pointing devices, graphics hardware, positioning of the pointer. In personal computers, all these elements are modeled through a desktop metaphor to produce a simulation called a desktop environment in which the display represents a desktop, on which documents and folders of documents can be placed.
Window managers and other software combine to simulate the desktop environment with varying degrees of realism. Smaller mobile devices such as personal digital assistants and smartphones use the WIMP elements with different unifying metaphors, due to constraints in space and available input devices. Applications for which WIMP is not well suited may use newer interaction techniques, collectively termed post-WIMP user interfaces; as of 2011, some touchscreen-based operating systems such as Apple's iOS and Android use the class of GUIs named post-WIMP. These support styles of interaction using more than one finger in contact with a display, which allows actions such as pinching and rotating, which are unsupported by one pointer and mouse. Human interface devices, for the efficient interaction with a GUI include a computer keyboard used together with keyboard shortcuts, pointing devices for the cursor control: mouse, pointing stick, trackball, virtual keyboards, head-up displays. There are actions performed by programs that affect the GUI.
For example, there are components like inotify or D-Bus to facilitate communication between computer programs. Ivan Sutherland developed Sketchpad in 1963 held as the first graphical co
A context menu is a menu in a graphical user interface that appears upon user interaction, such as a right-click mouse operation. A context menu offers a limited set of choices that are available in the current state, or context, of the operating system or application to which the menu belongs; the available choices are actions related to the selected object. From a technical point of view, such a context menu is a graphical control element. Context menus first appeared in the Smalltalk environment on the Xerox Alto computer, where they were called pop-up menus. Microsoft Office v3.0 introduced the context menu for copy and paste functionality in 1990. Borland demonstrated extensive use of the context menu in 1991 at the Second Paradox Conference in Phoenix Arizona. Lotus 1-2-3/G for OS/2 v1.0 added additional formatting options in 1991. Borland Quattro Pro for Windows v1.0 introduced the Properties context menu option in 1992. Context menus are opened via various forms of user interaction that target a region of the GUI that supports context menus.
The specific form of user interaction and the means by which a region is targeted vary: On a computer running Microsoft Windows, macOS, or Unix running the X Window System, clicking the secondary mouse button opens a context menu for the region, under the mouse pointer. On systems that support one-button mice, context menus are opened by pressing and holding the primary mouse button or by pressing a keyboard/mouse button combination. A keyboard alternative for macOS is to enable Mouse keys in Universal Access. Depending on whether a laptop or compact or extended keyboard type is used, the shortcut is Function+Ctrl+5 or Ctrl+5 or Function+Ctrl+i. On systems with a multi-touch interface such as MacBook or Surface, the context menu can be opened by pressing or tapping with two fingers instead of just one. Windows mouse click behavior is such that the context menu doesn't open while the mouse button is pressed, but only opens the menu when the button is released, so the user has to click again to select a context menu item.
This behavior differs from that of macOS and most free software GUIs. In Microsoft Windows, pressing the Application key or Shift+F10 opens a context menu for the region that has focus. Context menus are sometimes hierarchically organized, allowing navigation through different levels of the menu structure; the implementations differ: Microsoft Word was one of the first applications to only show sub-entries of some menu entries after clicking an arrow icon on the context menu, otherwise executing an action associated with the parent entry. This makes it possible to repeat an action with the parameters of the previous execution, to better separate options from actions; the following window managers provide context menu functionality: 9wm IceWM—middleclick and rightclick context menus on desktop, menubar. Titlebars, titleicon olwm openbox sawfish Context menus have received some criticism from usability analysts when improperly used, as some applications make certain features only available in context menus, which may confuse experienced users.
Context menus open in a fixed position under the pointer, but when the pointer is near a screen edge the menu will be displaced - thus reducing consistency and impeding use of muscle memory. If the context menu is being triggered by keyboard, such as by using Shift + F10, the context menu appears near the focused widget instead of the position of the pointer, to save recognition efforts. Microsoft's guidelines call for always using the term context menu, explicitly deprecate shortcut menu. Pie menu Screen hotspot Menu key
Windows 8 is a personal computer operating system, produced by Microsoft as part of the Windows NT family of operating systems. The operating system was released to manufacturing on August 1, 2012, with general availability on October 26, 2012. Windows 8 introduced major changes to the operating system's platform and user interface to improve its user experience on tablets, where Windows was now competing with mobile operating systems, including Android and iOS. In particular, these changes included a touch-optimized Windows shell based on Microsoft's "Metro" design language, the Start screen, a new platform for developing "apps" with an emphasis on touchscreen input, integration with online services, Windows Store, an online store for downloading and purchasing new software. Windows 8 added support for USB 3.0, Advanced Format hard drives, near field communications, cloud computing. Additional security features were introduced, such as built-in antivirus software, integration with Microsoft SmartScreen phishing filtering service and support for UEFI Secure Boot on supported devices with UEFI firmware, to prevent malware from infecting the boot process.
Windows 8 was released to a mixed critical reception. Although reaction towards its performance improvements, security enhancements, improved support for touchscreen devices was positive, the new user interface of the operating system was criticized for being confusing and difficult to learn when used with a keyboard and mouse instead of a touchscreen. Despite these shortcomings, 60 million Windows 8 licenses were sold through January 2013, a number that included both upgrades and sales to OEMs for new PCs. On October 17, 2013, Microsoft released Windows 8.1. It addressed some aspects of Windows 8 that were criticized by reviewers and early adopters and incorporated additional improvements to various aspects of the operating system. Windows 8 was succeeded by Windows 10 in July 2015. Microsoft stopped providing support and updates for Windows 8 RTM on January 12, 2016, per Microsoft lifecycle policies regarding service packs, Windows 8.1 must be installed to maintain support and receive further updates.
Windows 8 development started before Windows 7 had shipped in 2009. At the Consumer Electronics Show in January 2011, it was announced that the next version of Windows would add support for ARM system-on-chips alongside the existing x86 processors produced by vendors AMD and Intel. Windows division president Steven Sinofsky demonstrated an early build of the port on prototype devices, while Microsoft CEO Steve Ballmer announced the company's goal for Windows to be "everywhere on every kind of device without compromise." Details began to surface about a new application framework for Windows 8 codenamed "Jupiter", which would be used to make "immersive" applications using XAML that could be distributed via a new packaging system and a rumored application store. Three milestone releases of Windows 8 leaked to the general public. Milestone 1, Build 7850, was leaked on April 12, 2011, it was the first build where the text of a window was written centered instead of aligned to the left. It was probably the first appearance of the Metro-style font, its wallpaper had the text shhh... let's not leak our hard work.
However, its detailed build number reveals that the build was created on September 22, 2010. The leaked copy was Enterprise edition; the OS still reads as "Windows 7". Milestone 2, Build 7955, was leaked on April 25, 2011; the traditional Blue Screen of Death was replaced by a new black screen, although this was scrapped. This build introduced a new ribbon in Windows Explorer. Build 7959, with minor changes but the first 64-bit version was leaked on May 1, 2011; the "Windows 7" logo was temporarily replaced with text displaying "Microsoft Confidential". On June 17, 2011, build 7989 64-bit edition was leaked, it introduced a new boot screen featuring the same fish as the default Windows 7 Beta wallpaper, scrapped, the circling dots as featured in the final. It had the text Welcome below them, although this was scrapped. On June 1, 2011, Microsoft unveiled Windows 8's new user interface, as well as additional features at both Computex Taipei and the D9: All Things Digital conference in California; the "Building Windows 8" blog launched on August 15, 2011, featuring details surrounding Windows 8's features and its development process.
Microsoft unveiled more Windows 8 features and improvements on the first day of the Build conference on September 13, 2011. Microsoft released the first public beta build of Windows Developer Preview at the event. A Samsung tablet running the build was distributed to conference attendees; the build was released for download in the day in standard 32-bit and 64-bit versions, plus a special 64-bit version which included SDKs and developer tools for developing Metro-style apps. The Windows Store was not available in this build. According to Microsoft, there were about 535,000 downloads of the developer preview within the first 12 hours of its release. Set to expire on March 11, 2012, in February 2012 the Developer Preview's expiry date was changed to January 15, 2013. On February 19, 2012, Microsoft unveiled a new logo to be adopted for Windows 8. Designed by Pentagram partner Paula Scher, the Windows logo was changed to resemble a set of four window panes. Additionally, the entire logo is now rend
Computing is any activity that uses computers. It includes developing hardware and software, using computers to manage and process information and entertain. Computing is a critically important, integral component of modern industrial technology. Major computing disciplines include computer engineering, software engineering, computer science, information systems, information technology; the ACM Computing Curricula 2005 defined "computing" as follows: "In a general way, we can define computing to mean any goal-oriented activity requiring, benefiting from, or creating computers. Thus, computing includes designing and building hardware and software systems for a wide range of purposes; the list is endless, the possibilities are vast." and it defines five sub-disciplines of the computing field: computer science, computer engineering, information systems, information technology, software engineering. However, Computing Curricula 2005 recognizes that the meaning of "computing" depends on the context: Computing has other meanings that are more specific, based on the context in which the term is used.
For example, an information systems specialist will view computing somewhat differently from a software engineer. Regardless of the context, doing computing well can be complicated and difficult; because society needs people to do computing well, we must think of computing not only as a profession but as a discipline. The term "computing" has sometimes been narrowly defined, as in a 1989 ACM report on Computing as a Discipline: The discipline of computing is the systematic study of algorithmic processes that describe and transform information: their theory, design, efficiency and application; the fundamental question underlying all computing is "What can be automated?" The term "computing" is synonymous with counting and calculating. In earlier times, it was used in reference to the action performed by mechanical computing machines, before that, to human computers; the history of computing is longer than the history of computing hardware and modern computing technology and includes the history of methods intended for pen and paper or for chalk and slate, with or without the aid of tables.
Computing is intimately tied to the representation of numbers. But long before abstractions like the number arose, there were mathematical concepts to serve the purposes of civilization; these concepts include one-to-one correspondence, comparison to a standard, the 3-4-5 right triangle. The earliest known tool for use in computation was the abacus, it was thought to have been invented in Babylon circa 2400 BC, its original style of usage was by lines drawn in sand with pebbles. Abaci, of a more modern design, are still used as calculation tools today; this was the first known calculation aid - preceding Greek methods by 2,000 years. The first recorded idea of using digital electronics for computing was the 1931 paper "The Use of Thyratrons for High Speed Automatic Counting of Physical Phenomena" by C. E. Wynn-Williams. Claude Shannon's 1938 paper "A Symbolic Analysis of Relay and Switching Circuits" introduced the idea of using electronics for Boolean algebraic operations. A computer is a machine that manipulates data according to a set of instructions called a computer program.
The program has an executable form. The same program in its human-readable source code form, enables a programmer to study and develop a sequence of steps known as an algorithm; because the instructions can be carried out in different types of computers, a single set of source instructions converts to machine instructions according to the central processing unit type. The execution process carries out the instructions in a computer program. Instructions express, they trigger sequences of simple actions on the executing machine. Those actions produce effects according to the semantics of the instructions. Computer software or just "software", is a collection of computer programs and related data that provides the instructions for telling a computer what to do and how to do it. Software refers to one or more computer programs and data held in the storage of the computer for some purposes. In other words, software is a set of programs, procedures and its documentation concerned with the operation of a data processing system.
Program software performs the function of the program it implements, either by directly providing instructions to the computer hardware or by serving as input to another piece of software. The term was coined to contrast with the old term hardware. In contrast to hardware, software is intangible. Software is sometimes used in a more narrow sense, meaning application software only. Application software known as an "application" or an "app", is a computer software designed to help the user to perform specific tasks. Examples include enterprise software, accounting software, office suites, graphics software and media players. Many application programs deal principally with documents. Apps may be published separately; some users need never install one. Application software is contrasted with system software and middleware, which manage and integrate a computer's capabilities, but
In computing, a hyperlink, or a link, is a reference to data that the reader can directly follow either by clicking or tapping. A hyperlink points to a specific element within a document. Hypertext is text with hyperlinks; the text, linked from is called anchor text. A software system, used for viewing and creating hypertext is a hypertext system, to create a hyperlink is to hyperlink. A user following hyperlinks is said to browse the hypertext; the document containing a hyperlink is known as its source document. For example, in an online reference work such as Wikipedia, or Google, many words and terms in the text are hyperlinked to definitions of those terms. Hyperlinks are used to implement reference mechanisms such as tables of contents, bibliographies, indexes and glossaries. In some hypertext hyperlinks can be bidirectional: they can be followed in two directions, so both ends act as anchors and as targets. More complex arrangements exist, such as many-to-many links; the effect of following a hyperlink may vary with the hypertext system and may sometimes depend on the link itself.
Another possibility is transclusion, for which the link target is a document fragment that replaces the link anchor within the source document. Not only persons browsing the document follow hyperlinks; these hyperlinks may be followed automatically by programs. A program that traverses the hypertext, following each hyperlink and gathering all the retrieved documents is known as a Web spider or crawler. An inline link displays remote content without the need for embedding the content; the remote content may be accessed without the user selecting the link. An inline link may display a modified version of the content; the full content is usually available on demand, as is the case with print publishing software – e.g. with an external link. This allows for smaller file sizes and quicker response to changes when the full linked content is not needed, as is the case when rearranging a page layout. An anchor hyperlink is a link bound to a portion of a document—generally text, though not necessarily. For instance, it may be a hot area in an image, a designated irregular part of an image.
One way to define it is by a list of coordinates. For example, a political map of Africa may have each country hyperlinked to further information about that country. A separate invisible hot area interface allows for swapping skins or labels within the linked hot areas without repetitive embedding of links in the various skin elements. A fat link or a "multi-tailed link" is a hyperlink. Tim Berners-Lee saw the possibility of using hyperlinks to link any information to any other information over the Internet. Hyperlinks were therefore integral to the creation of the World Wide Web. Web pages are written in the hypertext mark-up language HTML; this is what a hyperlink to the home page of the W3C organization could look like in HTML code: This HTML code consists of several tags: The hyperlink starts with an anchor opening tag <a, includes a hyperlink reference href="http://www.w3.org" to the URL for the page. The URL is followed by >. The words that follow identify; these words are underlined and colored.
The anchor closing tag terminates the hyperlink code. Webgraph is a graph, formed from web pages as hyperlinks, as directed edges; the W3C Recommendation called XLink describes hyperlinks that offer a far greater degree of functionality than those offered in HTML. These extended links can be multidirectional, linking from and between XML documents, it can describe simple links, which are unidirectional and therefore offer no more functionality than hyperlinks in HTML. While wikis may use HTML-type hyperlinks, the use of wiki markup, a set of lightweight markup languages for wikis, provides simplified syntax for linking pages within wiki environments—in other words, for creating wikilinks; the syntax and appearance of wikilinks may vary. Ward Cunningham's original wiki software, the WikiWikiWeb used CamelCase for this purpose. CamelCase was used in the early version of Wikipedia and is still used in some wikis, such as TiddlyWiki, PmWiki. A common markup syntax is the use of double square brackets around the term to be wikilinked.
For example, the input "" is converted by wiki software using this markup syntax to a link to a zebras article. Hyperlinks used in wikis are classified as follows: Internal wikilinks or intrawiki links lead to pages within the same wiki website. Interwiki links are simplified markup hyperlinks that lead to pages of other wikis that are associated with the first. External links lead to other webpages. Wikilinks are visibly distinct from other text, if an internal wikilink leads to a page th
Jeff Atwood is an American software developer, author and entrepreneur. He writes the computer programming blog Coding Horror, he co-founded the computer programming question-and-answer website Stack Overflow and co-founded Stack Exchange, which extends Stack Overflow's question-and-answer model to subjects other than programming. Atwood's most recent project as of 2012 is the development of Discourse, an open source Internet discussion platform. Atwood started a programming blog, Coding Horror, in 2004; as a result, he met Joel Spolsky, among others. In 2008, together with Spolsky, Atwood founded Stack Overflow, a programming question-and-answer website; the site became popular, was followed by Server Fault for system administrators, Super User for general computer-related questions becoming the Stack Exchange network which includes many Q&A websites about topics decided on by the community. From 2008 to 2014, Atwood and Spolsky published a weekly podcast covering the progress on Stack Exchange and a wide range of software development issues.
Jeff Atwood was a keynote presenter at the 2008 Canadian University Software Engineering Conference. In February 2012, Atwood left Stack Exchange. On February 5, 2013, Atwood announced Civilized Discourse Construction Kit, Inc.. Its flagship product is an open source. Atwood and others developed it out of their frustration with current bulletin board software that hadn't seemed to evolve since 1990, he launched a mechanical keyboard called CODE in 2013. The ASP. NET 2.0 Anthology: 101 Essential Tips, Tricks & Hacks, by Scott Allen, Jeff Atwood, Wyatt Barnett, Jon Galloway and Phil Haack. ISBN 978-0980285819 Effective Programming: More Than Writing Code. ISBN 9781478300540 Profile on his Coding Horror blog