This is a list of notable software and programming tools for the C++ programming language, including libraries, web frameworks, programming language implementations, compilers, integrated development environments (IDEs), and other related software development utilities. == Compilers and IDEs == AMD Optimizing C/C++ Compiler — proprietary fork of LLVM + Clang for Linux C++Builder — rapid application development (RAD) environment Clang – compiler front end for C, C++, and Objective-C, part of LLVM CLion — C++ IDE by JetBrains Code::Blocks — open-source cross-platform IDE that supports multiple compilers including GCC, Clang and Visual C++ CodeLite — cross-platform IDE for the C/C++ programming languages using the wxWidgets toolkit CodeSynthesis XSD – XML Data Binding compiler Dev-C++ — MinGW or TDM-GCC 64bit port of the GCC as its compiler GCC – GNU Compiler Collection Intel C++ Compiler – proprietary high-performance compiler by Intel KDevelop — IDE part of the KDE project and is based on KDE Frameworks and Qt, the C/C++ backend uses Clang. Microsoft Visual C++ – proprietary C++ compiler and IDE for Windows Oracle Developer Studio — Solaris, OpenSolaris, RHEL, and Oracle Linux operating systems. Qt Creator — part of the SDK for the Qt GUI application development framework and uses the Qt API SlickEdit — text editor and IDE Turbo C++ – legacy C++ IDE and compiler popular in the 1990s Understand — IDE that enables static code analysis through an array of visuals, documentation, and metric tools. Visual Studio — integrated development environment by Microsoft that supports C++ Visual Studio Code — integrated development environment by Microsoft that supports C++ Xcode — Apple IDE to develop macOS, iOS, iPadOS, watchOS, tvOS, and visionOS that supports C++ source code. == Debuggers == Allinea DDT – a graphical debugger dbx — a proprietary source-level debugger GNU Debugger – portable debugger that runs on many Unix-like systems Modular Debugger — a C/C++ source level debugger for Solaris and derivates Undo LiveRecorder — time travel debugger == Libraries == Active Template Library – template-based C++ classes developed by Microsoft Apache MXNet — deep learning framework Apache Xerces – parsing, validating, and serializing and manipulating XML. Asio — networking and low-level I/O library Bitpit — scientific computing and mesh manipulation library Boost — collection of peer-reviewed libraries Botan — cryptography library C++ AMP – easy way to write programs that compile and execute on data-parallel hardware, such as graphics cards and GPUs C++ Standard Library — standard library for the language C++/WinRT — library for Microsoft's Windows Runtime platform, designed to provide access to modern Windows APIs. C3D Toolkit — geometric modeling kernel Caffe — deep learning framework CAPD — library for rigorous numerics and dynamical systems Cassowary — constraint-solving toolkit that efficiently solves systems of linear equalities and inequalities Cinder — library for creative coding ClanLib — cross-platform game SDK CMU Sphinx — speech recognition system Crypto++ — cryptographic algorithms library Dlib — general-purpose cross-platform library Dune — partial differential equations using grid-based methods fastText — text representation and text classification library FLTK — GUI toolkit Geospatial Data Abstraction Library — geospatial data access library GDCM — image library General Polygon Clipper — polygon clipping library GiNaC — computer algebra system that uses Class Library for Numbers for implementing arbitrary-precision arithmetic GLFW — OpenGL and window management library HarfBuzz — text rendering and typesetting library High Efficiency Image File Format — digital container format for storing individual digital images and image sequences ITK — image analysis library Integrated Performance Primitives — domain-specific functions that are highly optimized for diverse Intel architectures Jackets library — GPU computing library JSBSim — open-source flight dynamics model JUCE — framework for audio applications KDE Frameworks — collection of libraries from the KDE project KFRlib — digital signal processing framework LEMON — library for optimization and graph problems LevelDB — key–value database library Libdash — MPEG-DASH streaming library libLAS — reading and writing geospatial data encoded in the ASPRS laser (LAS) file format libsigc++ — typesafe callbacks LibRaw — free and open-source software library for reading raw files from digital cameras libSBML — application programming interface (API) for the SBML (Systems Biology Markup Language) LIBSVM — sequential minimal optimization (SMO) algorithm for kernelized support vector machines Libx — DirectX .X files graphics library Loki — collection of design patterns LIVE555 — multimedia streaming library Metakit — embedded database library Microsoft Cognitive Toolkit — deep learning toolkit Microsoft Foundation Class Library — object-oriented library for developing desktop applications for Windows Microsoft SEAL — homomorphic encryption library mlpack — machine learning and AI library Mobile Robot Programming Toolkit — robotics research library Object Windows Library — Object Windows Library, superseded by VCL Open Cascade — CAD and 3D modeling library Open Asset Import Library — 3D model import library to provide a common API for different 3D asset file formats OpenCV – computer vision and machine learning library OpenFOAM — computational fluid dynamics toolkit OpenH264 — real-time encoding and decoding video streams in the H.264/MPEG-4 AVC format OpenImageIO — image processing library Open Inventor — higher layer of programming for OpenGL OpenNN — neural networks library OpenVDB — sparse volume data library openFrameworks — creative coding toolkit OpenRTM-aist — robotics middleware library Oracle Template Library — database access that supports IBM Db2 and Open Database Connectivity Orfeo toolbox — remote sensing image processing library OR-Tools — operations research and optimization library Parallel Augmented Maps — ordered sets, ordered maps, and augmented maps. Parallel Patterns Library — Microsoft library that provides features for multicore programming PhysX — physics simulation engine POCO C++ Libraries — general-purpose libraries for software development Poppler — PDF rendering library Protocol Buffers — data serialization library Qt — cross-platform widget toolkit QuantLib — quantitative finance library RocksDB — key–value database library ROOT — data analysis framework from CERN ROS — robotics middleware Scintilla — source code editing component SDL – Simple DirectMedia Layer, cross-platform development library for multimedia applications SFML – Simple and Fast Multimedia Library Shark – open-source machine learning library Shogun — machine learning toolbox Skia — 2D graphics library Snappy — compression library Sound Object Library — music and audio development Standard Template Library — library of containers and algorithms Stapl — parallel computing library SymbolicC++ — symbolic computation library TerraLib — GIS library Tesseract OCR — optical character recognition engine Threading Building Blocks — parallel computing library ThreadWeaver — concurrency framework Tiny-dnn — lightweight deep learning library TinyXML — lightweight XML parser Tkrzw — key–value databases VTD-XML — XML processing library wxWidgets — cross-platform GUI toolkit x265 — video encoding library for HEVC XGBoost — gradient boosting library Windows Template Library — Win32 development === Mathematical and numerical libraries === == Tools == Akonadi — a C++/Qt framework and storage service for personal information management BALL – framework and set of algorithms and data structures for molecular modelling and computational structural bioinformatics Boehm garbage collector – conservative garbage collector CEGUI — C++ GUI library ClanLib – video game SDK CMake — cross-platform build system for C++ projects Confidential Consortium Framework – blockchain infrastructure framework DaviX – WebDAV client Doxygen — documentation generator for C++ and other languages FLTK — Fast Light Toolkit, cross-platform GUI library Fox toolkit — C++ GUI toolkit GDB — GNU Project debugger, often used with C and C++ gtkmm — official C++ interface for the popular GUI library GTK HOOPS Visualize — 3D computer graphics HPX — partitioned global address space Parallel programming Runtime System JUCE — cross-platform C++ audio and GUI framework LessTif — free clone of Motif GUI toolkit MFC — Microsoft Foundation Class library Nana — modern C++ GUI toolkit PTK Toolkit — 2D rendering engine and SDK, and portability options. Qt — cross-platform C++ GUI toolkit Rogue Wave — C++ GUI toolkit TnFOX — C++ GUI toolkit Ultimate++ — cross-platform C++ GUI framework Valgrind — tool suite for debugging and profiling C/C++ programs wxWidgets — cross-platform C++ GUI toolkit x265 — encoder for creating digital video streams in the High Efficiency Vid
T Layout
The T-Layout is an architectural and design concept for web applications, specifically tailored to improve the user experience on mobile devices. It features a horizontally scrollable container divided into three distinct sections, each spanning the full width of the screen, and was developed to optimise space usage and streamline navigation. == Background == The T-Layout introduces horizontal scrolling as a complementary method to the conventional pop-up-based navigation system in mobile web applications. In this layout, the central section which is visible by default upon accessing the application, facilitates the main content of a URL address and is flanked by two "helper" sections. This approach minimises the need for extensive user movements, in order to reach navigation controls typically located at the top of the screen. It is aimed at enhancing the user experience on mobile devices by providing an easier way to access essential content such as the main navigation, e-commerce related screens, or user account related information, ensuring that those elements are readily accessible while requiring minimal user effort. The T-Layout was first implemented by E (e-streetwear.com) in their mobile web app layout, and it was inspired by the interfaces of well-tested native mobile apps like Instagram and Revolut. A study titled "Mobile Navigation and User Preferences Survey" indicated a preference among mobile app users for one-handed usage, primarily navigating with their thumb. These insights led to the T-Layout Experiment, which compared the efficiency of using swipe gestures to access navigational elements against reaching traditional navigation controls. == Development history == It was first released as the mobile layout of E in early 2023. It was originally developed based on six principles: user-centric functionality, lightweight filesize, HTML and CSS implementation with minimal or no use of JavaScript required, suitable both for browser and server-rendering architectures, intuitive design, and improved SEO. The development of the T-Layout was driven by the necessity for more ergonomic and user-friendly interfaces in mobile web applications. Its design, reminiscent of the letter 'T', emerged as a solution to several usability challenges mobile device users face, emphasising ease of access and efficient screen space utilisation. In July 2023, E formalised the concept and its technical specifications, introducing it to the web design and development community. In October 2023 the "Mobile Navigation and User Preferences Survey" was conducted, establishing that the vast majority of individuals prefer to use mobile applications by holding the phone in a one-handed grip, utilising only the thumb for gestures when possible. The subsequent "T-Layout Experiment", designed to measure the time in seconds and the distance (user effort) in pixels, required to access navigational elements by traditionally tapping on fixed-positioned controls compared to swiping anywhere on the screen. The results proved that swipe gestures require less time and much less effort. == Styling and features == The main characteristic of the T-Layout is its horizontal scrolling feature, which can improve navigation efficiency while preserving the functionality of traditionally structured user interfaces. Its Implementation can be achieved with a combination of HTML and styling with CSS as well as precompiled Scss and Sass, CSS-in-JS, and styled JSX. It can be either a purely HTML/CSS solution but JavaScript can be utilised as well to add more specific functionalities, while It can be implemented to both existing and new applications. Its application in server-side rendering architectures will ensure that all its underlying principles apply. Although principally each section in the layout has a distinct role and facilitates specific types of content, the T-Layout as a concept is versatile, and it is adaptable allowing modifications in the layout or how it's implemented to cater to the specific needs of different applications.
Argument technology
Argument technology is a sub-field of collective intelligence and artificial intelligence that focuses on applying computational techniques to the creation, identification, analysis, navigation, evaluation and visualisation of arguments and debates. In the 1980s and 1990s, philosophical theories of arguments in general, and argumentation theory in particular, were leveraged to handle key computational challenges, such as modeling non-monotonic and defeasible reasoning and designing robust coordination protocols for multi-agent systems. At the same time, mechanisms for computing semantics of Argumentation frameworks were introduced as a way of providing a calculus of opposition for computing what it is reasonable to believe in the context of conflicting arguments. With these foundations in place, the area was kick-started by a workshop held in the Scottish Highlands in 2000, the result of which was a book coauthored by philosophers of argument, rhetoricians, legal scholars and AI researchers. Since then, the area has been supported by various dedicated events such as the International Workshop on Computational Models of Natural Argument (CMNA) which has run annually since 2001; the International Workshop on Argument in Multi Agent Systems (ArgMAS) annually since 2004; the Workshop on Argument Mining, annually since 2014, and the Conference on Computational Models of Argument (COMMA), biennially since 2006. Since 2010, the field has also had its own journal, Argument & Computation, which was published by Taylor & Francis until 2016 and since then by IOS Press. One of the challenges that argument technology faced was a lack of standardisation in the representation and underlying conception of argument in machine readable terms. Many different software tools for manual argument analysis, in particular, developed idiosyncratic and ad hoc ways of representing arguments which reflected differing underlying ways of conceiving of argumentative structure. This lack of standardisation also meant that there was no interchange between tools or between research projects, and little re-use of data resources that were often expensive to create. To tackle this problem, the Argument Interchange Format set out to establish a common standard that captured the minimal common features of argumentation which could then be extended in different settings. Since about 2018, argument technology has been growing rapidly, with, for example, IBM's Grand Challenge, Project Debater, results for which were published in Nature in March 2021; German research funder, DFG's nationwide research programme on Robust Argumentation Machines, RATIO, begun in 2019; and UK nationwide deployment of The Evidence Toolkit by the BBC in 2019. A 2021 video narrated by Stephen Fry provides a summary of the societal motivations for work in argument technology. Argument technology has applications in a variety of domains, including education, healthcare, policy making, political science, intelligence analysis and risk management and has a variety of sub-fields, methodologies and technologies. == Technologies == === Argument assistant === An argument assistant is a software tool which support users when writing arguments. Argument assistants can help users compose content, review content from one other, including in dialogical contexts. In addition to Web services, such functionalities can be provided through the plugin architectures of word processor software or those of Web browsers. Internet forums, for instance, can be greatly enhanced by such software tools and services. === Argument blogging === ArguBlogging is software which allows its users to select portions of hypertext on webpages in their Web browsers and to agree or disagree with the selected content, posting their arguments to their blogs with linked argument data. It is implemented as a bookmarklet, adding functionality to Web browsers and interoperating with blogging platforms such as Blogger and Tumblr. === Argument mapping === Argument maps are visual, diagrammatic representations of arguments. Such visual diagrams facilitate diagrammatic reasoning and promote one's ability to grasp and to make sense of information rapidly and readily. Argument maps can provide structured, semi-formal frameworks for representing arguments using interactive visual language. One avenue of research and development is the design of online platforms to leverage collective intelligence to populate such maps and to integrate data, optimize and assess arguments. === Argument mining === Argument mining, or argumentation mining, is a research area within the natural language processing field. The goal of argument mining is the automatic extraction and identification of argumentative structures from natural language text with the aid of computer programs. === Argument search === An argument search engine is a search engine that is given a topic as a user query and returns a list of arguments for and against the topic or about that topic. Such engines could be used to support informed decision-making or to help debaters prepare for debates. === Automated argumentative essay scoring === The goal of automated argumentative essay scoring systems is to assist students in improving their writing skills by measuring the quality of their argumentative content. === Debate technology === Debate technology focuses on human-machine interaction and in particular providing systems that support, monitor and engage in debate. One of the most high-profile examples of debating technology is IBM's Project Debater which combines scripted communication with very large-scale processing of news articles to identify and construct arguments on the fly in a competitive debating setting. Debating technology also encompasses tools aimed at providing insight into debates, typically using techniques from data science. These analytics have been developed in both academic and commercial settings. === Decision support system === Argument technology can reduce both individual and group biases and facilitate more accurate decisions. Argument-based decision support systems do so by helping users to distinguish between claims and the evidence supporting them, and express their confidence in and evaluate the strength of evidence of competing claims. They have been used to improve predictions of housing market trends, risk analysis, ethical and legal decision making. ==== Ethical decision support system ==== An ethical decision support system is a decision support system which supports users in moral reasoning and decision-making. ==== Legal decision support system ==== A legal decision support system is a decision support system which supports users in legal reasoning and decision-making. === Explainable artificial intelligence === An explainable or transparent artificial intelligence system is an artificial intelligence system whose actions can be easily understood by humans. === Intelligent tutoring system === An intelligent tutoring system is a computer system that aims to provide immediate and customized instruction or feedback to learners, usually without requiring intervention from a human teacher. The intersection of argument technology and intelligent tutoring systems includes computer systems which aim to provide instruction in: critical thinking, argumentation, ethics, law, mathematics, and philosophy. === Legal expert system === A legal expert system is a domain-specific expert system that uses artificial intelligence to emulate the decision-making abilities of a human expert in the field of law. === Machine ethics === Machine ethics is a part of the ethics of artificial intelligence concerned with the moral behavior of artificially intelligent beings. As humans argue with respect to morality and moral behavior, argument can be envisioned as a component of machine ethics systems and moral reasoning components. === Proof assistant === In computer science and mathematical logic, a proof assistant or interactive theorem prover is a software tool to assist with the development of formal proofs by human-machine collaboration. This involves some sort of interactive proof editor, or other interface, with which a human can guide the search for proofs, the details of which are stored in, and some steps provided by, a computer. === Ethical considerations === Ethical considerations of argument technology include privacy, transparency, societal concerns, and diversity in representation. These factors cut across different levels such as technology, user interface design, user, service context, and society. There is concern about unethical misuse for "generating arguments on controversial topics with specific stances and deploying them on social platforms". Another issue may concern the design of conclusion-making algorithms, such as e.g. enabling such to conclude that certain key data is needed instead of only making lists of best-fit conclusions or enabling the generation of multi
Data processing unit
A data processing unit (DPU) is a programmable computer processor that tightly integrates a general-purpose CPU with network interface hardware. They are also occasionally called "IPUs" (infrastructure processing unit) or "SmartNICs". They can be used in place of traditional NICs to relieve the main CPU of complex networking responsibilities and other "infrastructural" duties; although their features vary, they may be used to perform encryption/decryption, serve as a firewall, handle TCP/IP, process HTTP requests, or even function as a hypervisor or storage controller. These devices can be attractive to cloud computing providers whose servers might otherwise spend a significant amount of CPU time on these tasks, cutting into the cycles they can provide to guests. They see use in other kinds of data center environments as well due to their improved power consumption efficiency for routine networking tasks compared to general-purpose CPUs.
Adaptive neuro fuzzy inference system
An adaptive neuro-fuzzy inference system or adaptive network-based fuzzy inference system (ANFIS) is a kind of artificial neural network that is based on Takagi–Sugeno fuzzy inference system, a class of fuzzy models introduced by Tomohiro Takagi and Michio Sugeno for system identification and control. The technique was developed in the early 1990s. Since it integrates both neural networks and fuzzy logic principles, it has potential to capture the benefits of both in a single framework. Its inference system corresponds to a set of fuzzy IF–THEN rules that have learning capability to approximate nonlinear functions. Hence, ANFIS is considered to be a universal estimator. For using the ANFIS in a more efficient and optimal way, one can use the best parameters obtained by genetic algorithm. It has uses in intelligent situational aware energy management system. == ANFIS architecture == It is possible to identify two parts in the network structure, namely premise and consequence parts. In more details, the architecture is composed by five layers. The first layer takes the input values and determines the membership functions belonging to them. It is commonly called fuzzification layer. The membership degrees of each function are computed by using the premise parameter set, namely {a,b,c}. The second layer is responsible of generating the firing strengths for the rules. Due to its task, the second layer is denoted as "rule layer". The role of the third layer is to normalize the computed firing strengths, by dividing each value for the total firing strength. The fourth layer takes as input the normalized values and the consequence parameter set {p,q,r}. The values returned by this layer are the defuzzificated ones and those values are passed to the last layer to return the final output. === Fuzzification layer === The first layer of an ANFIS network describes the difference to a vanilla neural network. Neural networks in general are operating with a data pre-processing step, in which the features are converted into normalized values between 0 and 1. An ANFIS neural network doesn't need a sigmoid function, but it's doing the preprocessing step by converting numeric values into fuzzy values. Here is an example: Suppose, the network gets as input the distance between two points in the 2d space. The distance is measured in pixels and it can have values from 0 up to 500 pixels. Converting the numerical values into fuzzy numbers is done with the membership function which consists of semantic descriptions like near, middle and far. Each possible linguistic value is given by an individual neuron. The neuron “near” fires with a value from 0 until 1, if the distance is located within the category "near". While the neuron “middle” fires, if the distance in that category. The input value “distance in pixels” is split into three different neurons for near, middle and far.
Graphics software
In computer graphics, graphics software refers to a program or collection of programs that enable a person to manipulate images or models visually on a computer. Computer graphics can be classified into two distinct categories: raster graphics and vector graphics, with further 2D and 3D variants. Many graphics programs focus exclusively on either vector or raster graphics, but there are a few that operate on both. It is simple to convert from vector graphics to raster graphics, but going the other way is harder. Some software attempts to do this. In addition to static graphics, there are animation and video editing software. Different types of software are often designed to edit different types of graphics such as video, photos, and vector-based drawings. The exact sources of graphics may vary for different tasks, but most can read and write files. Most graphics programs have the ability to import and export one or more graphics file formats, including those formats written for a particular computer graphics program. Such programs include, but are not limited to: GIMP, Adobe Photoshop, CorelDRAW, Microsoft Publisher, Picasa, etc. The use of a swatch is a palette of active colours that are selected and rearranged by the preference of the user. A swatch may be used in a program or be part of the universal palette on an operating system. It is used to change the colour of a text or image and in video editing. Vector graphics animation can be described as a series of mathematical transformations that are applied in sequence to one or more shapes in a scene. Raster graphics animation works in a similar fashion to film-based animation, where a series of still images produces the illusion of continuous movement. == History == SuperPaint was one of the earliest graphics software applications, first conceptualized in 1972 and achieving its first stable image in 1973 Fauve Matisse (later Macromedia xRes) was a pioneering program of the early 1990s, notably introducing layers in customer software. Currently Adobe Photoshop is one of the most used and best-known graphics programs in the Americas, having created more custom hardware solutions in the early 1990s, but was initially subject to various litigation. GIMP is a popular open-source alternative to Adobe Photoshop.
Argumentation theory
Argumentation theory is the interdisciplinary study of how conclusions can be supported or undermined by premises through logical reasoning. With historical origins in logic, dialectic, and rhetoric, argumentation theory includes the arts and sciences of civil debate, dialogue, conversation, and persuasion. It studies rules of inference, logic, and procedural rules in both artificial and real-world settings. Argumentation includes various forms of dialogue such as deliberation and negotiation which are concerned with collaborative decision-making procedures. It also encompasses eristic dialogue, the branch of social debate in which victory over an opponent is the primary goal, and didactic dialogue used for teaching. This discipline also studies the means by which people can express and rationally resolve or at least manage their disagreements. Argumentation is a daily occurrence, such as in public debate, science, and law. For example in law, in courts by the judge, the parties and the prosecutor, in presenting and testing the validity of evidences. Also, argumentation scholars study the post hoc rationalizations by which organizational actors try to justify decisions they have made irrationally. Argumentation is one of four rhetorical modes (also known as modes of discourse), along with exposition, description, and narration. == Key components of argumentation == Some key components of argumentation are: Understanding and identifying arguments, either explicit or implied, and the goals of the participants in the different types of dialogue. Identifying the premises from which conclusions are derived. Establishing the "burden of proof" – determining who made the initial claim and is thus responsible for providing evidence why their position merits acceptance. For the one carrying the "burden of proof", the advocate, to marshal evidence for their position in order to convince or force the opponent's acceptance. The method by which this is accomplished is producing valid, sound, and cogent arguments, devoid of weaknesses, and not easily attacked. In a debate, fulfillment of the burden of proof creates a burden of rejoinder. One must try to identify faulty reasoning in the opponent's argument, to attack the reasons/premises of the argument, to provide counterexamples if possible, to identify any fallacies, and to show why a valid conclusion cannot be derived from the reasons provided for their argument. For example, consider the following exchange, illustrating the No true Scotsman fallacy: Argument: "No Scotsman puts sugar on his porridge." Reply: "But my friend Angus, who is a Scotsman, likes sugar with his porridge." Rebuttal: "Well perhaps, but no true Scotsman puts sugar on his porridge." In this dialogue, the proposer first offers a premise, the premise is challenged by the interlocutor, and so the proposer offers a modification of the premise, which is designed only to evade the challenge provided. == Internal structure of arguments == Typically an argument has an internal structure, comprising the following: a set of assumptions or premises, a method of reasoning or deduction, and a conclusion or point. An argument has one or more premises and one conclusion. Often classical logic is used as the method of reasoning so that the conclusion follows logically from the assumptions or support. One challenge is that if the set of assumptions is inconsistent then anything can follow logically from inconsistency. Therefore, it is common to insist that the set of assumptions be consistent. It is also good practice to require the set of assumptions to be the minimal set, with respect to set inclusion, necessary to infer the consequent. Such arguments are called MINCON arguments, short for minimal consistent. Such argumentation has been applied to the fields of law and medicine. A non-classical approach to argumentation investigates abstract arguments, where 'argument' is considered a primitive term, so no internal structure of arguments is taken into account. == Types of dialogue == In its most common form, argumentation involves an individual and an interlocutor or opponent engaged in dialogue, each contending differing positions and trying to persuade each other, but there are various types of dialogue: Persuasion dialogue aims to resolve conflicting points of view of different positions. Negotiation aims to resolve conflicts of interests by cooperation and dealmaking. Inquiry aims to resolve general ignorance by the growth of knowledge. Deliberation aims to resolve a need to take action by reaching a decision. Information seeking aims to reduce one party's ignorance by requesting information from another party that is in a position to know something. Eristic aims to resolve a situation of antagonism through verbal fighting. == Argumentation and the grounds of knowledge == Argumentation theory had its origins in foundationalism, a theory of knowledge (epistemology) in the field of philosophy. It sought to find the grounds for claims in the forms (logic) and materials (factual laws) of a universal system of knowledge. The dialectical method was made famous by Plato and his use of Socrates critically questioning various characters and historical figures. But argument scholars gradually rejected Aristotle's systematic philosophy and the idealism in Plato and Kant. They questioned and ultimately discarded the idea that argument premises take their soundness from formal philosophical systems. The field thus broadened. One of the original contributors to this trend was the philosopher Chaïm Perelman, who together with Lucie Olbrechts-Tyteca introduced the French term la nouvelle rhetorique in 1958 to describe an approach to argument which is not reduced to application of formal rules of inference. Perelman's view of argumentation is much closer to a juridical one, in which rules for presenting evidence and rebuttals play an important role. Karl R. Wallace's seminal essay, "The Substance of Rhetoric: Good Reasons" in the Quarterly Journal of Speech (1963) 44, led many scholars to study "marketplace argumentation" – the ordinary arguments of ordinary people. The seminal essay on marketplace argumentation is Ray Lynn Anderson's and C. David Mortensen's "Logic and Marketplace Argumentation" Quarterly Journal of Speech 53 (1967): 143–150. This line of thinking led to a natural alliance with late developments in the sociology of knowledge. Some scholars drew connections with recent developments in philosophy, namely the pragmatism of John Dewey and Richard Rorty. Rorty has called this shift in emphasis "the linguistic turn". In this new hybrid approach argumentation is used with or without empirical evidence to establish convincing conclusions about issues which are moral, scientific, epistemic, or of a nature in which science alone cannot answer. Out of pragmatism and many intellectual developments in the humanities and social sciences, "non-philosophical" argumentation theories grew which located the formal and material grounds of arguments in particular intellectual fields. These theories include informal logic, social epistemology, ethnomethodology, speech acts, the sociology of knowledge, the sociology of science, and social psychology. These new theories are not non-logical or anti-logical. They find logical coherence in most communities of discourse. These theories are thus often labeled "sociological" in that they focus on the social grounds of knowledge. == Kinds of argumentation == === Conversational argumentation === The study of naturally occurring conversation arose from the field of sociolinguistics. It is usually called conversation analysis (CA). Inspired by ethnomethodology, it was developed in the late 1960s and early 1970s principally by the sociologist Harvey Sacks and, among others, his close associates Emanuel Schegloff and Gail Jefferson. Sacks died early in his career, but his work was championed by others in his field, and CA has now become an established force in sociology, anthropology, linguistics, speech-communication and psychology. It is particularly influential in interactional sociolinguistics, discourse analysis and discursive psychology, as well as being a coherent discipline in its own right. Recently CA techniques of sequential analysis have been employed by phoneticians to explore the fine phonetic details of speech. Empirical studies and theoretical formulations by Sally Jackson and Scott Jacobs, and several generations of their students, have described argumentation as a form of managing conversational disagreement within communication contexts and systems that naturally prefer agreement. === Mathematical argumentation === The basis of mathematical truth has been the subject of long debate. Frege in particular sought to demonstrate (see Gottlob Frege, The Foundations of Arithmetic, 1884, and Begriffsschrift, 1879) that arithmetical truths can be derived from purely logical axioms and therefore are, in th