Fact-checked by Grok 2 weeks ago

Hungarian notation

Hungarian notation is a symbolic prefixing convention for naming identifiers in computer programming, where variables, functions, and other elements are given names that incorporate abbreviations indicating their intended purpose, logical type, or physical data type, facilitating code readability and error detection in collaborative or large-scale development. Developed by Hungarian-born engineer Charles Simonyi during his time at Xerox Palo Alto Research Center (PARC) in 1972, the notation originated as a method to impose a rudimentary typing system on untyped or assembly languages, first applied in a simulator for the ILLIAC IV supercomputer written in PDP-10 machine code and later in the Bravo text editor using the typeless BCPL language. Simonyi, who defected from Hungary at age 17 and joined Xerox after working at Denmark's Regnecentralen, designed the prefixes to encode domain-specific information, such as "CP" for character pointer or "PC" for piece table, to make type mismatches visually apparent and aid debugging in complex systems. When Simonyi moved to in 1981, he brought the convention to the Applications Division, where it became known internally as "Apps Hungarian," emphasizing semantic or logical types over strict physical data types to convey the variable's role in the application's domain—for instance, "cch" for character count or "doc" for document object—enhancing maintainability in projects like and Excel. A variant called "Systems Hungarian" emerged later in 's Systems Division for low-level code, focusing on physical types like "i" for or "p" for pointer, but this was critiqued by Simonyi as a dilution of the original intent, which prioritized making "wrong code look wrong" through meaningful abstractions rather than compiler-enforced types. Widely adopted in early Windows development and Win32 programming, Hungarian notation uses lowercase prefixes for types (e.g., szText for a , hwndWindow for a window ) and additional modifiers like "m_" for member variables or "fn" for functions, though modern guidelines from and other frameworks discourage its use in favor of self-documenting names and strong typing in languages like C#. Despite its prominence in legacy codebases, the notation has sparked debate: proponents value its role in preventing subtle errors in untyped environments, while critics argue it becomes obsolete and error-prone when types change during refactoring, leading to its decline in contemporary .

Background

Definition and Purpose

Hungarian notation is a used in to prefix identifiers—such as variables and functions—with tags that indicate their underlying type, intended purpose, or other semantic attributes. This approach embeds directly into the name, enabling developers to discern essential properties of the identifier at a glance, thereby improving code comprehension and reducing the during maintenance or review. The primary purpose of Hungarian notation is to facilitate rapid inference of variable characteristics without needing to reference separate declarations, which is particularly beneficial in expansive codebases where context can be obscured. By making type mismatches or misuse visually apparent, it aims to "make wrong code look wrong," helping to mitigate programming errors and enhance overall code reliability in collaborative environments. At its core, Hungarian notation follows specific principles for prefix usage: lowercase letters are used to denote both basic data types and higher-level purposes or scopes (e.g., i for integer, sz for string, m for class member, p for pointer). This convention is most commonly applied to identifiers in procedural and object-oriented programming languages, where explicit type information aids in navigating complex structures without relying solely on integrated development environment tools. The notation was invented by Charles Simonyi during the early 1970s while working at Xerox PARC, with further refinements occurring after he joined Microsoft, where it gained widespread adoption in software development practices.

Historical Development

Hungarian notation originated in the 1970s at Xerox Palo Alto Research Center (PARC), where Charles Simonyi, a Hungarian-born programmer, developed it as a naming convention to encode semantic information about variables. It was first applied in 1972 to a simulator for the ILLIAC IV supercomputer written in PDP-10 machine code, and later during the creation of the Bravo word processor using the typeless BCPL language. Simonyi, who had been introduced to computing in Hungary before defecting and studying at the University of California, Berkeley, applied the approach in his work on graphical user interfaces and early software systems, aiming to make code more readable and maintainable in team environments by prefixing identifiers with tags indicating their purpose or "kind" rather than just low-level types. This initial form, later termed "Apps Hungarian," focused on higher-level semantics to facilitate collaboration on complex projects like Bravo, which was released in 1975 as one of the first WYSIWYG editors. In 1981, Simonyi joined , bringing Hungarian notation with him and integrating it into the development of major applications such as Excel and Word to manage large-scale codebases and frequent refactoring by diverse teams. At , the convention gained prominence in the Applications Division during the , where it helped enforce consistency in variable usage across the burgeoning suite, allowing developers to quickly discern intended behaviors without relying solely on documentation or comments. Its influence extended to the early naming in the OS division, where a variant emphasizing low-level data types—known as "Systems Hungarian"—emerged as an adaptation for C-based programming, diverging from Simonyi's original semantic intent but becoming widespread in Win32 development. By the 1990s, Hungarian notation was formalized in Microsoft's internal style guides and coding standards, particularly for Windows programming, where it was documented as a recommended practice to indicate variable types and scopes in large projects. However, its prominence began to wane in the post-2000 era as integrated development environments () like advanced with features such as real-time type checking, IntelliSense, and refactoring tools that rendered type prefixes redundant for error detection and navigation. Despite this decline, the convention persists in legacy Microsoft codebases and some older Windows , serving as a historical artifact in practices.

Variants

Systems Hungarian

Systems Hungarian employs prefixes to indicate the intrinsic data types and physical attributes of variables, such as basic machine-level types including integers ('i'), zero-terminated strings ('sz'), pointers ('p'), and arrays (e.g., 'rgb'). This approach emphasizes low-level, hardware-oriented properties to enhance precision in code that mimics behavior within higher-level programming environments. The variant is inherently type-centric, facilitating the detection of type mismatches during refactoring and maintenance by embedding type information directly in variable names. For instance, prefixes can indicate physical types, such as 'dw' for double word (32-bit unsigned ). This structure supports quick visual of , particularly in languages without compile-time type enforcement. Historically, emerged in Microsoft's Systems Division in the as an adaptation of the original notation for low-level Windows in and C++, aligning with needs for managing bit-level details, pointers, and structures. In usage scenarios, Systems Hungarian proves advantageous in C/C++ contexts lacking strong static typing, such as legacy development, where it aids in tracking physical properties like buffer sizes or pointer indirections essential to systems-level operations. Common prefix conventions in Systems Hungarian include the following representative examples:
PrefixDescriptionExample Variable
iInteger (often an index or counter)iLength
szZero-terminated stringszPath
pPointerpData
rgbArray of RGB color valuesrgbPalette
dwDouble word (32-bit unsigned integer)dwFlags
wWord (16-bit unsigned integer)wPort
These prefixes prioritize machine-representable types over semantic meaning, enabling developers to maintain consistency in environments where low-level accuracy is paramount.

Applications Hungarian

Applications , also known as Apps Hungarian, is a variant of Hungarian notation where prefixes denote the abstract or semantic of a , rather than its underlying . This intent-centric approach allows developers to encode higher-level information about how a variable is used, such as indicating it represents a , index, or coordinate, promoting better and in . For instance, a variable tracking the number of items might be prefixed with c (for count), resulting in cItems, while a could use fn to become fnCallback. A key characteristic of Applications Hungarian is its resilience to changes in the physical implementation details. If the data type of a variable is refactored—for example, switching from an to a floating-point number for a point coordinate—the semantic prefix remains unchanged, avoiding the need to rename variables across the and preserving the conveyed intent. This makes it particularly suitable for managing evolving software projects where types may shift without altering the logical meaning. Common prefixes include pt for a point in space, hw for a hardware-related entity like a window handle (hwnd), max for a maximum value such as maxWidth, and doc for a object like docActive. Guidelines emphasize avoiding type-specific prefixes, focusing instead on purpose to enhance maintainability. Developed by at during the 1980s and 1990s, Applications Hungarian emerged within the applications division to handle the complexity of large-scale programs like those in the Office suite. It was employed in the development of early versions of Word and Excel, where semantic naming helped teams collaborate on intricate, object-oriented codebases by making variable roles immediately apparent without relying on type declarations. In usage scenarios, it proves effective in high-level languages such as C++ for Windows applications, C#, and , particularly for design where clear intent aids and refactoring in team environments. Unlike Systems Hungarian, which prefixes based on concrete types, Applications Hungarian prioritizes semantic abstraction for long-term code evolution. To illustrate, consider a simple code snippet in using Applications Hungarian:
cpp
void DrawPoint(ptOrigin, ptTarget) {
    // ptOrigin and ptTarget indicate points, regardless of whether they use [int](/page/INT) or [float](/page/Float) coordinates
    Line(ptOrigin.x, ptOrigin.y, ptTarget.x, ptTarget.y);
}
Here, the pt prefix conveys that these are point structures, facilitating quick understanding of their role in drawing operations. Such conventions were integral to Microsoft's application development practices, enabling efficient navigation through thousands of lines of code in tools like .

Connection to Sigils

Sigils are marks prefixed to names in certain programming languages to indicate their type or category directly within the syntax. For instance, in , the ($) denotes scalars, the (@) denotes arrays, and the (%) denotes hashes. Hungarian notation and sigils share the core similarity of embedding compact, visual cues into identifiers to enable rapid type or role inference by readers, reducing the need to consult separate declarations. Hungarian notation achieves this through a voluntary , whereas sigils integrate the mechanism as a core syntactic feature of the language. Historically, Hungarian notation originated in the 1970s with Charles Simonyi's work at Xerox PARC, predating the adoption of sigils in modern scripting languages such as , released in 1987 by . While no direct influence from Hungarian notation on Perl's sigils is documented—the latter drawing inspiration from tools like and scripting—the conceptual overlap is acknowledged in Perl's design rationale, where additional sigil variants are likened to a form of Hungarian notation. Similar parallels appear in (1995), whose instance variable sigils (@ and @@) extend Perl's model, reflecting a broader evolution in type-indicating syntax during the late and . The approaches differ fundamentally: Hungarian notation employs optional, prefix-based alphabetic abbreviations embedded in the identifier, allowing flexibility across languages but dependent on consistent application. In contrast, sigils are mandatory, non-alphabetic symbols enforced by the language parser, typically prefixed but independent of naming style, providing compile-time or runtime type enforcement without altering the base identifier. Examples of overlap occur in languages influenced by Perl, such as PHP, where all variables require a prefix to denote their status, effectively mimicking a universal scalar sigil despite dynamic typing. In JavaScript, the symbol, while optional and permissible as an identifier character per the ECMAScript standard, is conventionally used for variables representing globals, jQuery objects, or special utilities, echoing Hungarian notation's goal of role-based distinction.

Comparison to Other Naming Conventions

Hungarian notation, which embeds type or purpose information as prefixes in variable names (e.g., strName for a variable), contrasts with descriptive naming conventions that prioritize self-explanatory identifiers without such , such as userName in camelCase or user_name in snake_case. Descriptive approaches, common in languages like and , rely on full words to convey meaning, often combined with casing styles like camelCase (lowercase first word, capitalized subsequent words) or snake_case (lowercase words separated by underscores), avoiding prefixes altogether to enhance readability through context. Kebab-case (hyphen-separated lowercase, e.g., user-name), while less common in code due to language syntax restrictions, follows a similar descriptive in configuration files or URLs. The primary trade-off lies in Hungarian's brevity for quick type identification versus the verbosity of descriptive names, which reduce cognitive load by embedding intent directly but may require IDE support for type inference. Hungarian adds explicit metadata via prefixes, useful in environments lacking strong type checking, whereas descriptive conventions depend on surrounding code context or tools like autocompletion, potentially leading to longer names but greater flexibility for refactoring. This contrast highlights Hungarian's role as a visual cue in untyped or weakly typed code, opposed to descriptive styles that leverage modern compilers and editors to enforce types implicitly. Historically, Hungarian notation proliferated in the 1980s within environments for C-based Windows development, but by the 2010s, shifts toward descriptive naming emerged in languages like (favoring snake_case since PEP 8 in 2001) and (as per MDN guidelines), driven by advanced that provide type information on hover or completion. 's own guidelines now explicitly discourage Hungarian in favor of descriptive conventions, reflecting broader industry evolution from prefix-heavy styles to context-reliant ones in type-safe ecosystems. Specific examples illustrate these differences: the coding style rejects Hungarian outright, opting for descriptive names with underscores (e.g., max_size) and deeming type prefixes redundant given checks. Similarly, , C++ creator, advises against Hungarian in C++, recommending descriptive identifiers without type encoding to align with the language's strong typing. In contrast, legacy C codebases, such as early Windows APIs, retain Hungarian for compatibility, where descriptive alternatives might disrupt existing patterns. Hungarian suits legacy C environments with weak typing and limited tools, preserving quick type cues without refactoring costs, while descriptive conventions like snake_case or camelCase are preferred in agile, type-safe settings such as or modern projects, where and static analysis minimize the need for prefixes.

Usage

Code Examples

Hungarian notation is illustrated through variable naming prefixes that encode type or purpose information, making code more self-documenting. In Systems Hungarian, commonly used in programming for Windows development, prefixes denote the underlying . For instance, 'i' indicates an integer, 'sz' a (char*), and 'hwnd' a window handle. A basic example in demonstrates Systems Hungarian in a simple function to process a counter and :
c
#include <stdio.h>

void PrintInfo(int iCounter, char* szName) {
    printf("Counter: %d, Name: %s\n", iCounter, szName);
}

int main() {
    int iCount = 5;
    char* szMessage = "Hello, World!";
    PrintInfo(iCount, szMessage);
    return 0;
}
Here, 'iCounter' and 'iCount' signal integers, while 'szName' and 'szMessage' denote strings, aiding quick type identification during code review. In Applications Hungarian, prevalent in C++ for object-oriented contexts, prefixes convey the variable's intended use rather than just its physical type, such as 'pt' for a point object or 'fn' for a function pointer. This variant, as originally conceived by Charles Simonyi, emphasizes semantic meaning to prevent misuse. An advanced C++ example shows this in a graphics routine:
cpp
#include <iostream>

class CPoint {
public:
    int x, y;
};

void DrawLine([CPoint](/page/cpp) ptStart, [CPoint](/page/cpp) ptEnd, void (*fnCallback)(int)) {
    // Draw logic here
    std::cout << "Drawing from (" << ptStart.x << "," << ptStart.y << ") to (" 
              << ptEnd.x << "," << ptEnd.y << ")\n";
    if (fnCallback) fnCallback(1);
}

int main() {
    [CPoint](/page/cpp) ptOrigin = {0, 0};
    [CPoint](/page/cpp) ptTarget = {100, 50};
    void (*fnNotify)(int) = [](int status) { std::cout << "Status: " << status << "\n"; };
    DrawLine(ptOrigin, ptTarget, fnNotify);
    return 0;
}
The 'pt' prefix for CPoint instances highlights their role as positions, while 'fnCallback' indicates a callable function, facilitating abstraction in larger systems. Adaptations of Hungarian notation appear in other languages, though less rigidly enforced. In Visual Basic, prefixes like 'str' for strings and 'int' for integers were standard in early Microsoft guidelines. A snippet in Visual Basic 6:
vb
Sub DisplayGreeting(intAge As Integer, strUserName As String)
    MsgBox "Hello, " & strUserName & "! You are " & intAge & " years old."
End Sub

' Usage
Dim intUserAge As Integer
Dim strName As String
intUserAge = 30
strName = "Alice"
DisplayGreeting intUserAge, strName
In , where dynamic typing predominates, optional use of prefixes like 's' for strings can still clarify intent in team environments:
javascript
function logMessage(sText, iLevel) {
    console.log("Level " + iLevel + ": " + sText);
}

// Usage
var sGreeting = "[Welcome](/page/Welcome)";
var iPriority = [1](/page/1);
logMessage(sGreeting, iPriority);
These examples show how prefixes persist across languages to enhance without altering core syntax. Hungarian notation aids error detection by visually flagging type mismatches during refactoring or editing. Consider a C function expecting a string but receiving an integer due to a copy-paste error:
c
void ProcessString(char* szInput) {
    // Assume strlen(szInput) - but if iValue passed, it crashes
    printf("Length: %lu\n", strlen(szInput));
}

// Incorrect call
int iValue = 42;
ProcessString(iValue);  // Prefix 'i' vs 'sz' reveals mismatch at a glance
The 'i' prefix on 'iValue' immediately signals incompatibility with 'szInput', preventing runtime errors that might otherwise go unnoticed in unprefixed code. Best practices in applying notation include integrating prefixes with camelCase or PascalCase for readability and limiting them to avoid clutter, such as using them only for local variables in performance-critical codebases. For example, combining Systems with descriptive names in C++:
c
// Balanced use: prefix for type, rest for purpose
void UpdateUserProfile(char* szFirstName, char* szLastName, int iUserId) {
    // Implementation
    printf("Updating user %d: %s %s\n", iUserId, szFirstName, szLastName);
}
This approach maintains brevity while combining type hints with semantic clarity, often alongside tools like static analyzers for enforcement.

Implementation Practices

Adopting Hungarian notation in software development projects requires selecting the appropriate variant based on the project's abstraction level. For low-level systems programming, such as Win32 API development in C or C++, Systems Hungarian is recommended, where prefixes encode the physical data type to support memory management and pointer handling; examples include "dw" for DWORD and "h" for handle. Applications Hungarian, focusing on semantic intent rather than type, suits higher-level application code to emphasize variable purpose over storage details. Projects must standardize a prefix list tailored to the language and framework, drawing from established conventions like those in Microsoft Win32 documentation, to ensure uniformity across codebases. Tools and automation facilitate enforcement and maintenance of Hungarian notation. Integrated Development Environments (IDEs) like offer refactoring capabilities that allow batch renaming of variables while preserving or applying prefixes, aiding compliance during code evolution. In JavaScript and projects, linters such as can be extended with plugins like eslint-plugin-ui5, which includes rules to enforce Hungarian-style prefixes for type indication in dynamically typed contexts. Similarly, eslint-plugin-budapestian provides rules for a variant emphasizing scope and casing alongside prefixes. Common pitfalls in implementation include over-prefixing, which can result in excessively long and unreadable variable names, reducing code clarity despite the notation's intent. Another frequent issue arises during migration from non-Hungarian codebases, where inconsistent application of prefixes leads to errors if types change without updating names, potentially misleading developers about variable characteristics. Integrating Hungarian notation into teams involves establishing comprehensive style guides that define prefix usage, variant selection, and exceptions to promote . For large teams, training sessions should cover prefix meanings and refactoring techniques to minimize adoption friction and ensure adherence, particularly in systems where the notation persists. Since the 2000s, adaptations have emerged in statically typed languages like , where hybrid approaches combine lightweight Hungarian prefixes with type hints to reinforce intent without relying solely on dynamic assumptions, enhancing in mixed-type environments.

Evaluation

Advantages

Hungarian notation enhances code by embedding information about a variable's type or intended purpose directly in its name, allowing developers to quickly discern its role without consulting declarations or . This immediate recognition reduces during code reviews and navigation, particularly in lengthy codebases where context switching is frequent. The convention aids error prevention by making incompatible operations visually apparent, such as attempting to add a row index to a byte count, thereby catching potential bugs during manual editing or refactoring without requiring full recompilation. In environments with weak type checking, like early implementations, this visual cue helps avoid runtime errors that might otherwise go unnoticed until execution. For team collaboration, Hungarian notation proved valuable in large-scale projects during the pre-IDE era, standardizing naming practices to improve communication and code maintainability across distributed teams. It was particularly effective in Microsoft's Applications Division, where it supported the development of complex software like Excel, scaling successfully to teams of thousands of developers over decades. In Applications Hungarian, prefixes focus on semantic intent rather than base types, preserving the variable's purpose even as underlying implementations evolve. Conversely, Systems Hungarian provides precision for low-level details, such as distinguishing pointers from arrays or handles, which is crucial in where such distinctions prevent subtle errors.

Disadvantages

One significant drawback of Hungarian notation, particularly the Systems variant, is the maintenance overhead it imposes during code evolution. When a variable's type changes—such as refactoring an counter to a identifier—the prefix must be manually updated across all references to maintain accuracy, a process prone to errors and time-consuming in large codebases. This can conflict with automated refactoring tools in modern integrated development environments (), which may not recognize or preserve semantic prefixes, leading to "lying" identifiers that mislead developers about the underlying type. The proliferation of prefixes often results in verbose variable names that reduce code readability, especially for longer identifiers or in dense code sections. For instance, a variable like strUserName or pfnCallbackFunc can obscure the core purpose amid the type indicators, making scanning and comprehension more difficult compared to descriptive, prefix-free names like userName or callbackFunction. Major style guides, such as Google's C++ conventions, explicitly discourage Hungarian notation for this reason, favoring names that prioritize intent over type encoding to enhance overall legibility. In strongly typed languages like C++ or , Hungarian notation provides limited value since the and already enforce and display type information at declaration sites, rendering type prefixes redundant. Similarly, in dynamically typed or type-inferred languages such as , where variables can hold multiple types at runtime and infer types contextually, the notation offers little benefit and may even introduce confusion by implying static typing that does not exist. Adopting Hungarian notation introduces a cognitive burden, particularly the need to learn and consistently apply an organization's custom prefix scheme, which can vary and lead to inconsistencies across teams or projects. Surveys of professional developers indicate a strong against its use, with recommendations to avoid it entirely to prevent such learning curves and promote standardized, intuitive naming. In IDE-heavy development environments, where features like IntelliSense provide instant type hover information, the notation is widely viewed as obsolete, adding unnecessary complexity without compensating advantages.

Modern Perspectives

In contemporary programming discourse, Hungarian notation continues to elicit divided opinions among influential figures. , its originator, has defended its use in interviews from the 2000s, emphasizing its role in encoding semantic intent beyond mere types to enhance code clarity in application development. advocated for "Apps Hungarian" in a essay, arguing that it helps developers "make wrong code look wrong" by prefixing variables with tags indicating their purpose, such as "sz" for zero-terminated strings, rather than physical types. Conversely, , creator of C++, explicitly criticized it in his C++ Style and Technique FAQ, stating, "No, I don't recommend '.' I regard it as a needless and misleading complication." dismissed it outright in the coding style guide, describing the practice of encoding types into names as "brain damaged" since compilers already handle type checking. Despite these criticisms, Hungarian notation persists in certain niches, particularly in legacy codebases. It lingers in older and C++ projects, where Microsoft's Win32 still reference it for variable prefixes to denote types and scopes, aiding maintenance in large, pre--era systems. In new projects, however, it is rare, with developers favoring descriptive, semantic naming that relies on features for type visibility. It finds limited niche application in some systems, where resource constraints and simple tools make quick type identification via prefixes valuable, though even here adoption is declining. Post-2020 developments have accelerated Hungarian notation's decline, driven by advances in AI-assisted coding tools and stronger in languages like and , which render type prefixes redundant as provide real-time type information and error detection. AI code generators, such as those integrated into , further emphasize over prefixed conventions, reducing the need for manual type encoding. Occasional revivals appear in architectures, where prefixes can clarify parameters across distributed teams, but such uses are exceptional and often hybridized with modern practices. The broader trend has shifted toward alternatives that prioritize semantic naming, where variable names convey intent directly (e.g., userCount instead of iCount), as recommended in .NET coding conventions. In dynamically typed languages like , type annotations via the typing module provide compile-time checks without altering names, aligning with PEP 8's guidance against type prefixes. Frameworks like promote convention-over-configuration, relying on descriptive names and component props for clarity rather than notations. Looking ahead, Hungarian notation is generally viewed as outdated in agile methodologies, which emphasize collaborative, readable code that evolves rapidly without refactoring burdens from prefix changes. While hybrids with tools could emerge for semantic hints in low-level code, its core principles are increasingly supplanted by language features and editor intelligence.

References

  1. [1]
    Windows Coding Conventions - Win32 apps | Microsoft Learn
    Nov 18, 2022 · Hungarian notation is the practice of adding prefixes to the names of variables, to give additional information about the variable. (The ...
  2. [2]
    [PDF] Oral History of Charles Simonyi
    Feb 6, 2008 · Booch: Unless you continue the Hungarian notation. Simonyi ... Simonyi: Well, my thesis wasn't-- I don't think it's a very good thesis ...
  3. [3]
    Programming, Hungarian style - WorldWideWords.org
    Mar 16, 1996 · Firstly, and most literally and mundanely, the notation had indeed been invented by a Hungarian. His name is Charles Simonyi. He was born in ...
  4. [4]
    Making Wrong Code Look Wrong - Joel on Software
    May 11, 2005 · Simonyi's original concept for Hungarian notation was called, inside Microsoft, Apps Hungarian, because it was used in the Applications Division ...
  5. [5]
    Coding Style Conventions - Win32 apps - Microsoft Learn
    Nov 4, 2020 · The "Hungarian" notation conventions are used. These have become a common coding practice in Win32 programming. They include variable prefix ...
  6. [6]
    General Naming Conventions - Framework Design Guidelines
    ❌ DO NOT use underscores, hyphens, or any other nonalphanumeric characters. ❌ DO NOT use Hungarian notation. ❌ AVOID using identifiers that conflict with ...
  7. [7]
    Hungarian Notation | Baeldung on Computer Science
    Mar 18, 2024 · Charles Simonyi from Microsoft invented the Hungarian notation. Hungarian notation was extensively used in Microsoft Windows code for a few ...
  8. [8]
    What's up with Hungarian Notation? - Fabulous adventures in coding
    Sep 12, 2003 · What Simonyi is saying here is that the point of Hungarian Notation is to extend the concept of “type” to encompass semantic information in ...
  9. [9]
    Charles Simonyi– 1986 - Programmers At Work - WordPress.com
    “Hungarian” is a twist on that phrase because these naming conventions are actually supposed to make the code more readable.
  10. [10]
    EDGE Digerati: The WYSIWYG - Charles Simonyi - Edge.org
    During the 1970s at Xerox PARC, Charles Simonyi led a team of programmers in the development of Bravo, the first WYSIWYG (what you see is what you get) ...<|control11|><|separator|>
  11. [11]
    Charles Simonyi is Returning to Microsoft - Thurrott.com
    Apr 18, 2017 · ... Hungarian notation” style of writing programming code, is returning to Microsoft. ... “When I first joined Microsoft in February 1981 I was ...
  12. [12]
    Hungarian Notation Postmortem: What Went Wrong? - SubMain
    Dec 12, 2017 · Charles Simonyi was an originator of two programs we?re all familiar with, Microsoft?s Word and Excel. The Hungarian notation method of naming ...
  13. [13]
    Anything You Can Do, I Can Do Meta | MIT Technology Review
    Jan 1, 2007 · Simonyi's system came to be known as Hungarian notation, both in homage to its creator's birthplace and because it made programs “look like they ...
  14. [14]
    Charles Simonyi | IT History Society
    Simonyi introduced the techniques of object-oriented programming that he had learned at Xerox to Microsoft. He developed the Hungarian notation convention for ...
  15. [15]
    perlintro - a brief introduction and overview of Perl - Perldoc Browser
    That denotes a variable, which is generally pronounced as "name". The dollar sign is called a "sigil", and indicates that "name" is a variable. Unlike many ...
  16. [16]
  17. [17]
    About Ruby
    Ruby is a language of careful balance. Its creator, Yukihiro “Matz” Matsumoto, blended parts of his favorite languages (Perl, Smalltalk, Eiffel, Ada, and Lisp)
  18. [18]
    PEP 8 – Style Guide for Python Code | peps.python.org
    ### Summary of Naming Conventions in PEP 8 (https://peps.python.org/pep-0008/)
  19. [19]
    Guidelines for writing JavaScript code examples - MDN Web Docs
    Aug 3, 2025 · Do not use the Hungarian notation naming convention. Do not prefix the variable name with its type. For example, write bought = car.buyer ...
  20. [20]
    Bjarne Stroustrup's C++ Glossary
    Oct 3, 2012 · Hungarian notation - a coding convention that encodes type information in variable names. Its main use is to compensate for lack of type ...
  21. [21]
    Visual Basic Naming Conventions - Microsoft Learn
    Sep 15, 2021 · When you name an element in your Visual Basic application, the first character of that name must be an alphabetic character or an underscore ...
  22. [22]
    CS 245: Hungarian Notation Quick Reference - CSE - IIT Kanpur
    Hungarian Notation Reference. You are requested to follow some standard naming convention for variables and functions, objects etc used in your programs ...Missing: original | Show results with:original
  23. [23]
    Hungarian Notation for C/C++ - brising.com
    For example, ppvs denotes a pointer to a pointer to an array of structs. The fourth group indicates the variable's type, where most of the prefixes are ...
  24. [24]
    docs/rules/hungarian-notation.md - eslint-plugin-ui5 - GitLab
    May 7, 2019 · This rule aims to enforce Hungarian notation. Since JavaScript is dynamically typed this rule makes it easier to see the expected type of a variable.
  25. [25]
    sverweij/eslint-plugin-budapestian: Lint rules for ... - GitHub
    This plugin supports a bastard variant of Hungarian notation where we write elements in PascalCase and prefix them with a scope: p for parameters. l for local ...
  26. [26]
  27. [27]
    Hungarian Notation for Fields in C# - NDepend Blog
    Apr 21, 2021 · Hungarian notation is not popular. However we all use it everyday with interfaces prefixed with I. Let's see how it can help with C# fields.
  28. [28]
    Hungarian Notation Is Clearly (Good|Bad) - Herb Sutter
    Jul 15, 2008 · The main trouble with Systems Hungarian comes from trying to embed information about a variable's type into the variable's name by prepending an ...Missing: evolution | Show results with:evolution
  29. [29]
    Google C++ Style Guide
    It is worth reiterating a few of the guidelines that you might forget if you are used to the prevalent Windows style: Do not use Hungarian notation (for example ...
  30. [30]
    [PDF] On the Naming of Methods: A Survey of Professional Developers
    that programmers should not use Hungarian notation while naming methods. “you should never use Hungarian notation, like boolIsValid() or. stringGetName ...Missing: disadvantages | Show results with:disadvantages
  31. [31]
    Bjarne Stroustrup's C++ Style and Technique FAQ
    Feb 26, 2022 · Which layout style is best for my code? How do you name variables? Do you recommend "Hungarian"? Should I use call-by-value or call-by-reference ...
  32. [32]
    Perfecting naming conventions - Embedded
    Jul 1, 2007 · In practice, Hungarian makes the code ugly. Clean names get mangled. szString means “String ” is zero-terminated. uiData flags an unsigned int .
  33. [33]
    The 7 Coding Styles That Are Dated | by Elye - A Dev By Grace
    Aug 17, 2020 · The use of Hungarian notation i.e. mMemberVariable vs localVariable . ... If modern IDE, such text-based distinction is no longer required.
  34. [34]
    .NET Coding Conventions - C# | Microsoft Learn
    Jan 18, 2025 · Instead, use the type to specify the type, and use the variable name to indicate the semantic information of the variable.Identifier names - rules and... · Display command-line · Secure coding guidelinesMissing: shift | Show results with:shift<|control11|><|separator|>
  35. [35]
    The Rise and Fall of Hungarian Notation: A Coding Evolution Story
    Jul 9, 2024 · They make the old-fashioned Hungarian notation unnecessary. Now, developers can count on their IDE to quickly pinpoint when types don't ...