Computer programming is the art of writing software, instructions for computers to follow. At the base level, as understood by the computer, these instructions are written in machine code, or binary, pure numbers, quite difficult for humans to read and write. At a slightly higher level, these codes correspond to assembly language, short mnemonics for individual computer operations, that still correspond one to one with what the machine actually does. This is still unstructured, terse, and difficult to read or write in. Most programming is done in higher level, compiled languages, or even interpreted that look like a cross between English and Algebra, and allow various abstractions depending on the language, such as encapsulation, function calls, data hiding, and more, to enable people reading and writing programs to deal with the vast quantity of information that the computer actually handles. Respectively, a compiler program translates these languages to machine code to be executed directly, or a separate interpreter program itself takes these statements and executes them as an intermediary.
Submissions should not include compilers for specific languages, which must be submitted elsewhere to proper subcategories for the source languages involved. Systems for generating separate compiler components (lexers/parsers, code generators or transformation tools) or cross-compilers must be submitted to their respective subcategories under /Compilers.
Resources for the development of software agents
Category for compilers, and the theory and practice of creating them. This category does not include compilers for specific languages, which are found elsewhere in subcategories for the source languages involved. Systems for generating separate compiler components (lexers/parsers, code generators or transformation tools) or cross-compilers are found in their respective subcategories under /Compilers.
Submissions should not include compilers for specific languages, which must be submitted elsewhere to proper subcategories for the source languages involved. Systems for generating separate compiler components (lexers/parsers, code generators or transformation tools) or cross-compilers must be submitted to their respective subcategories under /Compilers.
Sites for formal and informal conferences, meetings, trade shows, and workshops, and associated events taht are related to computer programming.
Computer programming related conferences and events are listed first by topic. If your site relates to an event which focusses on a specific Programming sub-topic or language, you should navigate to the most specific category for that topic first. If there is a specific Conferences sub-category for that topic/language, then suggest your site there. If not, then suggest it to the main category for that topic/language. Only sites for more general programming conferences, that span more than one topic and/or language will be considered for listing here.
This category is dedicated to resources related to the development of databases and database applications. For information about database software in general, refer to
Software Development Tools are usable, professional grade, and often professionally developed, programs and libraries, which aid programmers in the software development process. Development tools may encompass different software programming languages and platforms, but have in common prewritten usable code that can help software developers create software programs. Tools for specific programming languages are listed in related programming language categories in Computers/Programming/Languages.
Please, submit programming language specific tools to the appropriate programming language category in Programming Languages.

If your site is not specifically geared towards this topic, please submit it to the proper category.

Submitting to the wrong category will delay and/or prevent your site from being listed in the Open Directory.

Submission Tips:

  1. When writing the site''s title please ensure it is the same as that of the organization.
  2. When writing the site''s description, please tell what the site offers in a clear and concise statement with no hype or promotional language.
Thank you for your cooperation.
Wherever possible, please submit links on disassemblers to extant Open Directory categories on those disassemblers. Thank you.
This category is for resources and information related to the education of programming.
Please submit only sites dealing with Programming education to this category. Tutorials, help and FAQ are covered by an @linked cat.
Computers/Programming/FAQs, Help, and Tutorials is a category meant for websites that have non-specific content about programming OR content that spans multiple programming languages. The content of these websites is help/tutorial oriented, as one could guess from the category title. If you are looking for a website specifically focused on help for one programming language, see the FAQs, Help, and Tutorial section under that language. A list of languages can be found under Computers/Programming/Languages. Please see the category FAQ at Computers/Programming/FAQs,_Help,_and_Tutorials/faq.html for more information.
Please Take Note! While this category is for websites that deal with programming from a broad perspective, please first consider whether you website might be a better fit in a related category. For example, a website with tutorials about HTML, CSS, and Dreamweaver would do better in Computers/Internet/Web_Design_and_Development/FAQs,_Help,_and_Tutorials/, or one of its subcategories. Remember, it is in your best interest to submit to the correct category! Submitting to the correct category will speed up the time it takes for your website to get reviewed.
The games programming 'How To'.
Game development tools that aren''t related to programming, such as sprite editors, and level builders should be submitted to Games/Video_Games/Game_Design/Development_Tools_and_Software.
This category, with its subcategories, are for all aspects of Graphics Programming. Graphics Programming is the topic that has anything to do with programming pertaining to visual data. (Whether that visual data is displayed (on a monitor or some other device) is irrelevant.) In other words, a result of Graphics Programming is stuff that could be seen (but doesn't have to be).
Sites about the history of computer programming and programming languages.
Please omly submit links about only the history of computer programming. Sites providing general, tutorial, or reference information don not belong here. Submit them under the appropriate programming language, or to Programming Resources (or one of the linked categories) if the site covers more than one language. Sites about the history of a single language do not belong here. Instead they should be submitted under the appropriate programming language; to a History sub-category if there is one, or to the main category for the language if not. Submitting inappropriate sites here will only delay their review and potential listing by editors.
Resources for development of Internet applications.
Submit sites offering resources, help, and documentation about the Active Server Pages technology.

Sites for companies offering hosting for Active Server Pages-based applications will not be listed here and should be submitted to the appropriate letter category under Computers/Internet/Web_Design_and_Development/Hosted_Components_and_Services/.

In computer science, after basic hardware, language comes first, before operating systems, applications, or anything else. One needs a language first, even if only machine language, before one can write any software at all. There is a vast variety of programming languages, estimates run from 2,000 to 6,000. The situation is often likened to the many schisms of some religions, and sometimes disagreements and even fights occur among the faithful. Yet, all languages must adhere to the central unifying principles of computer science (even Intercal and Befunge), otherwise they couldn't work. On this page, languages are arranged in three groups and levels: 1) Top: issues spanning multiple unrelated languages. 2) Middle: types or classes of languages. 3) Bottom: specific languages, with their own directory category.
This category is for programming languages and topics directly related thereto. To this category, please submit only items pertaining to all languages in general. Submit links about specific languages to that language''s category.

Submit links about several languages to the nearest proper subcategory or to the Computers/Programming/Resources category. Submit new languages to the nearest proper category. Submit language collection and directory sites to the Directories subcategory. Be careful and take your time. If you submit something to a category where it does not belong, it may take a very long time before it displays in the directory.

The links here at true magazines or E-zines and are not just automated content distribution sites or information portals.
Please do not submit archive sites which poll articles from actual Magazine and E-zine sites.
This category holds links on memory management, which involves the primary storage allocation and deallocation in computer programming. Within this area, a primary concern is the automation of the processes involved in (de)allocation, freeing programmers from low level memory details. This is called garbage collection (GC or gc), or automatic or automated memory management or storage reclamation. This frees programmers from having to manually allocate and deallocate memory for various reasons (e.g., dynamic objects), aids programming productivity, and reduces errors. Almost all interpreted languages are garbage collected, use GC.
Metaprogramming (synonym: generative programming): a style of programming in which, in some way, a program writes or modifies some code in some language. Compilers and self-modifying programs are two examples of metaprograms.
Please, submit specific programming language source code generators in appropriate programming language category in Computers:Programming:Languages, disassemblers and decompilers to Computers:Programming:Disassemblers category, compilers and compiler generators to appropriate category in Computers:Programming:Compilers.
Programming methodologies is a complex field, with many methodologies, and names, and many goals and means to reach them: structured programming, programming by refinement, program analysis and verification, refactoring, and many more. Methodologies are developed to enhance one or more programming variable: programming, program speed, reliability, conformance to user/customer needs, reusability, code reuse and sharing, information hiding, etc. Some methodologies are more formal than others, some are embodied in formal tools, programs, etc. Many methodologies involve object-oriented programming. On this page, methodologies are arranged in three groups and levels: 1) Top: named methodologies. 2) Middle: types or classes of modeling languages used in development. 3) Bottom: specific modeling languages, with their own directory category.
For quicker placement in the directory please follow these Submission Tips:

Title: Name of Organization and/ or Article

Description: This describes the website and should note distinguishing features found on the site.

Information about writing operating systems, including tutorials and research projects. Sites with general information about particular operating systems are in Computers/Software/Operating_Systems.
This is a listing of programming related personal homepages, sorted by author last names. ONLY personal pages belong here. Please submit to the proper sub-category, determined by the first letter of the last name.
This is a listing of programming related personal homepages, sorted by author last names. ONLY personal pages belong here. Please submit to the proper sub-category, determined by the first letter of the last name.
Testing is a process used to help identifying the correctness, completeness and quality of developed computer software. It aims at identifying defects, where a defect is any variance between actual and expected results In general, software engineers distinguish software faults and software failures. In case of a failure, the software does not do what the user expects. A fault is a programming error that may or may not actually manifest as a failure. A fault can also be described as an error in the correctness of the semantic of a computer program. A fault will become a failure if the exact computation conditions are met, one of them being that the faulty portion of computer software executes on the CPU. A fault can also turn into a failure when the software is ported to a different hardware platform or a different compiler, or when the software gets extended. Software testing may be viewed as a sub-field of software quality assurance (SQA) but typically exists independently (and there may be no SQA areas in some companies). In SQA, software process specialists and auditors take a broader view on software and its development. They examine and change the software engineering process itself to reduce the amount of faults that end up in the code or deliver faster.
Please submit only sites to this category which do not match a subordinated category. Sites which match a subordinated category should be submitted there. The closer the submitted site is to its actual topic, the faster a submission will be processed.

Please submit sites dealing mainly with software quality assurance to the appropriate category which is linked as related.

Links and categories holder for sites about application programming in concrete operating systems (Win32, Unix, GNU/Linux, etc).
Sites about operation system programming must be placed to Computers/Programming/Operating_Systems category.
A thread is a context of execution within a program. Multithreaded programming deals with designing a program to have parts of it execute concurrently.