981:). The exchange of messages may be carried out asynchronously, or may use a synchronous "rendezvous" style in which the sender blocks until the message is received. Asynchronous message passing may be reliable or unreliable (sometimes referred to as "send and pray"). Message-passing concurrency tends to be far easier to reason about than shared-memory concurrency, and is typically considered a more robust form of concurrent programming. A wide variety of mathematical theories to understand and analyze message-passing systems are available, including the
864:
2613:
669:
271:
47:
329:
230:
2397:
1014:, from the 19th and early 20th century, and some terms date to this period, such as semaphores. These arose to address the question of how to handle multiple trains on the same railroad system (avoiding collisions and maximizing efficiency) and how to handle multiple transmissions over a given set of wires (improving efficiency), such as via
1001:
Shared memory and message passing concurrency have different performance characteristics. Typically (although not always), the per-process memory overhead and task switching overhead is lower in a message passing system, but the overhead of message passing is greater than for a procedure call. These
844:
model. Sequential consistency is the property of a program that its execution produces the same results as a sequential program. Specifically, a program is sequentially consistent if "the results of any execution is the same as if the operations of all the processors were executed in some sequential
427:
overlapping, but execution need not happen at the same instant. The goal here is to model processes in the outside world that happen concurrently, such as multiple clients accessing a server at the same time. Structuring software systems as composed of multiple concurrent, communicating parts can be
651:, and execution will proceed to subtracting the withdrawal amount. However, since both processes perform their withdrawals, the total amount withdrawn will end up being more than the original balance. These sorts of problems with shared resources benefit from the use of concurrency control, or
439:, another process begins or resumes, and then later the original process is resumed. In this way, multiple processes are part-way through execution at a single instant, but only one process is being executed at that instant.
739:
High responsiveness for input/output—input/output-intensive programs mostly wait for input or output operations to complete. Concurrent programming allows the time that would be spent waiting to be used for another
522:: ensuring the correct sequencing of the interactions or communications between different computational executions, and coordinating access to resources that are shared among executions. Potential problems include
495:
are used as opposing pairs. A schedule in which tasks execute one at a time (serially, no parallelism), without interleaving (sequentially, no concurrency: no task begins until the prior task ends) is called a
2744:
1669:—general purpose functional, main design objectives are ease of programming, code clarity-readability, and automatic parallelization for performance on multicore hardware, and provably free of
733:
Increased program throughput—parallel execution of a concurrent program allows the number of tasks completed in a given time to increase proportionally to the number of processors according to
3491:
2650:
2714:
1162:(although message-passing models can and have been implemented on top of the underlying shared-memory model). Of the languages that use a message-passing concurrency model,
2663:
1425:
2813:
2434:
2748:
3484:
1416:—functional, concurrent, for bounded space and time environments where automata processes are described by synchronous channels patterns and message passing
423:) single processor, as only one computation can occur at any instant (during any single clock cycle). By contrast, concurrent computing consists of process
2522:
1185:
have seen industrial use at various times in the last 20 years. A non-exhaustive list of languages which use or provide concurrent programming facilities:
2643:
922:
2877:
2355:
1108:
3477:
3227:
3089:
2484:
3584:
3574:
3233:
3632:
3589:
3579:
3569:
2636:
2379:
2344:
2305:
1970:
1860:
690:
288:
243:
64:
2292:
3655:
3546:
3418:
3166:
2214:
1323:
743:
More appropriate program structure—some problems and problem domains are well-suited to representation as concurrent tasks or processes.
1801:
This is discounting parallelism internal to a processor core, such as pipelining or vectorized instructions. A one-core, one-processor
2886:
2517:
2507:
2427:
2281:
1731:
1576:
1507:
1402:
769:
2512:
2100:
1942:
910:
In some concurrent computing systems, communication between the concurrent components is hidden from the programmer (e.g., by using
894:
A number of different methods can be used to implement concurrent programs, such as implementing each computational execution as an
765:
716:
390:
372:
310:
257:
130:
339:
111:
2095:
Marlow, Simon (2013) Parallel and
Concurrent Programming in Haskell : Techniques for Multicore and Multithreaded Programming
1037:
Concurrency is pervasive in computing, occurring from low-level hardware on a single chip to worldwide networks. Examples follow.
3561:
3258:
2938:
2882:
2401:
1738:
Many other languages provide support for concurrency in the form of libraries, at levels roughly comparable with the above list.
195:
83:
3541:
3118:
2991:
2922:
2857:
2780:
2160:
1612:
1463:
534:. For example, consider the following algorithm to make withdrawals from a checking account represented by the shared resource
31:
3621:
3536:
3296:
3059:
2689:
2457:
1279:
1251:
1155:
1132:
1112:
930:
694:
292:
156:
68:
35:
2583:
90:
1998:
Lamport, Leslie (1 September 1979). "How to Make a
Multiprocessor Computer That Correctly Executes Multiprocess Programs".
487:
The word "sequential" is used as an antonym for both "concurrent" and "parallel"; when these are explicitly distinguished,
3650:
3551:
3074:
3064:
2842:
2617:
2420:
1704:
1633:
1545:
1364:
1358:
1348:
1174:
1163:
974:
800:
3458:
3438:
3368:
3311:
3273:
3263:
3223:
3148:
3084:
3054:
2981:
2970:
2867:
2847:
2822:
2785:
1698:
1689:
1660:
1586:
1572:
1522:
1519:—graphical, dataflow, functions are nodes in a graph, data is wires between the nodes; includes object-oriented language
1499:
1493:
1445:
1407:
1370:
1314:
1204:
1182:
1178:
978:
970:
2593:
2111:
1657:—for system programming, using message-passing with move semantics, shared immutable memory, and shared mutable memory.
1100:
At the network level, networked systems are generally concurrent by their nature, as they consist of separate devices.
845:
order, and the operations of each individual processor appear in this sequence in the order specified by its program".
3413:
3176:
3143:
3038:
3014:
2976:
2956:
2852:
2761:
2739:
2724:
2578:
2573:
1654:
1639:
1627:
1618:
1567:
1526:
1487:
1439:
1413:
1326:
1265:
1227:
1218:
1195:
1170:
1151:
1124:
926:
527:
431:
For example, concurrent processes can be executed on one core by interleaving the execution steps of each process via
97:
679:
354:
3610:
3360:
3346:
3253:
3213:
3138:
3044:
3024:
2891:
2770:
2704:
1645:
1597:
1530:
1189:
1015:
895:
804:
698:
683:
350:
281:
57:
3453:
3218:
3128:
3108:
3094:
2568:
2467:
2241:
1723:
1606:
1419:
1398:
1159:
1116:
990:
966:
942:
899:
786:
249:
79:
3433:
3393:
3336:
3268:
3006:
2837:
1336:
1319:
1287:(CnC)—Achieves implicit parallelism independent of memory model by explicitly defining flow of data and control
1269:
1068:
756:
were an early attempt to codify the rules of concurrent execution. Dataflow theory later built upon these, and
2407:
446:
be executed in parallel, for example, by assigning each process to a separate processor or processor core, or
198:
into subcomputations that may be executed concurrently. Pioneers in the field of concurrent computing include
3443:
3423:
3364:
3351:
3331:
3158:
2895:
2799:
2757:
2598:
1254:—supports concurrent computing using lock, yield, also since version 5.0 async and await keywords introduced
1072:
938:
412:
3403:
3378:
3372:
3316:
3278:
2966:
2961:
2913:
2808:
2709:
2681:
2672:
1782:
1777:
1757:
1663:—general purpose, designed to express common programming patterns in a concise, elegant, and type-safe way
1284:
1261:
914:), while in others it must be handled explicitly. Explicit communication can be divided into two classes:
841:
779:
652:
454:
1230:—domain specific, concurrent, based on actor model and .NET Common Language Runtime using a C-like syntax
772:(CSP) were developed to permit algebraic reasoning about systems composed of interacting components. The
3305:
3301:
3243:
3195:
2765:
2472:
1199:
1158:. Both of these languages fundamentally use a shared-memory concurrency model, with locking provided by
1120:
1064:
1044:
830:
757:
447:
1150:
Today, the most commonly used programming languages that have specific constructs for concurrency are
3529:
3500:
3448:
3428:
3388:
3049:
2918:
2905:
2659:
1459:
1136:
1054:
911:
420:
191:
403:
The concept of concurrent computing is frequently confused with the related but distinct concept of
3383:
3321:
3133:
3113:
3099:
2831:
2699:
2694:
2462:
2180:
1089:
531:
519:
507:
187:
435:
slices: only one process runs at a time, and if it does not complete during its time slice, it is
411:". In parallel computing, execution occurs at the same physical instant: for example, on separate
104:
3200:
3153:
3123:
3069:
2928:
2827:
2719:
2628:
2311:
2260:
2232:
2057:
2015:
1866:
1762:
1290:
1094:
849:
794:
404:
219:
2336:
2330:
2209:. The Morgan Kaufmann Series in Computer Architecture and Design (5 ed.). Morgan Kaufmann.
1554:—for system programming, by N. Wirth as a successor to Pascal with native support for coroutines
760:
were created to physically implement the ideas of dataflow theory. Beginning in the late 1970s,
734:
1560:—modern member of Algol family with extensive support for threads, mutexes, condition variables
945:) to coordinate between threads. A program that properly implements any of these is said to be
457:, and tasks need not always be executed concurrently. For example, given two tasks, T1 and T2:
183:
is one where a computation can advance without waiting for all other computations to complete.
3524:
3519:
3356:
3248:
3103:
3079:
3019:
2986:
2948:
2933:
2872:
2375:
2340:
2301:
2277:
2210:
2096:
1966:
1938:
1856:
1693:
1685:
1511:
1503:
1373:—real-time functional, for signal processing, compiler provides automatic parallelization via
1309:
1305:
826:
820:
203:
933:). This style of concurrent programming usually needs the use of some form of locking (e.g.,
428:
useful for tackling complexity, regardless of whether the parts can be executed in parallel.
3238:
3170:
3034:
2775:
2532:
2499:
2250:
2007:
1848:
1747:
1535:
1352:
1275:
1081:
1026:
934:
176:
168:
2357:
A pragmatic, historically oriented survey on the universality of synchronization primitives
1842:
1198:—concurrent, with threads and message passing, for system programming in early versions of
1169:
Many concurrent programming languages have been developed more as research languages (e.g.
3288:
3162:
3028:
2729:
2489:
2479:
1767:
1388:
994:
986:
958:
829:(also known as a memory model). The consistency model defines rules for how operations on
761:
502:
419:
machine, with the goal of speeding up computations—parallel computing is impossible on a (
416:
199:
3340:
2996:
2862:
2588:
1931:
1911:
1772:
1670:
1601:
1192:—general purpose, with native support for message passing and monitor based concurrency
837:
523:
1538:—Amstrad variant of BASIC contains EVERY and AFTER commands for concurrent subroutines
863:
179:—where there is a separate execution point or "thread of control" for each process. A
17:
3644:
3326:
2547:
2527:
2147:
2084:
1622:
1590:
1477:
1296:
1222:
946:
808:
643:. If line 3 in both operations executes before line 5 both operations will find that
2264:
2112:
https://juliacon.talkfunnel.com/2015/21-concurrent-and-parallel-programming-in-julia
1870:
3514:
2537:
2019:
1077:
790:
432:
207:
2073:
1609:—multiparadigm, supports shared-state and message-passing concurrency, and futures
453:
The exact timing of when tasks in a concurrent system are executed depends on the
3469:
1361:—dynamic and functional meta-programming aware language running on the Erlang VM.
3208:
2563:
1806:
1701:—built-in support for writing asynchronous and parallel code in a structured way
1681:
1675:
1330:
1300:
1208:
982:
773:
668:
270:
151:
46:
1293:—lazy, pure functional language operating concurrent processes on shared memory
479:
T1 and T2 may be executed simultaneously at the same instant of time (parallel
2124:
1852:
1713:—for developing telecommunication exchanges, uses asynchronous message passing
1582:
1455:
1451:
1342:
1011:
2369:
2148:
Documentation » The Python
Standard Library » Concurrent Execution
2033:
2011:
1752:
1666:
1563:
1541:
1483:
1049:
753:
147:
1894:
1025:
credited with being the first paper in this field, identifying and solving
797:, have also been developed to describe the behavior of concurrent systems.
2396:
2255:
2236:
1173:) rather than as languages for production use. However, languages such as
1886:
1557:
1551:
1214:
962:
825:
Concurrent programming languages and multiprocessor programs must have a
172:
2058:"Making reliable distributed systems in the presence of software errors"
2412:
1516:
1384:
1367:—uses synchronous or asynchronous message passing with no shared memory
1257:
1128:
1021:
The academic study of concurrent algorithms started in the 1960s, with
295: in this section. Unsourced material may be challenged and removed.
1401:—for system programming, with a concurrent programming model based on
1469:
1374:
2332:
Coordinated
Computing: Tools and Techniques for Distributed Software
1010:
Concurrent computing developed out of earlier work on railroads and
357:. Statements consisting only of original research should be removed.
1566:—for research, with channels as first-class values; predecessor of
1248:(C omega)—for research, extends C#, uses asynchronous communication
1239:
1710:
1649:
1473:
1448:—"concurrent programming primitives: Tasks, async-wait, Channels."
1245:
1233:
407:, although both can be described as "multiple processes executing
2207:
Computer
Organization and Design: The Hardware/Software Interface
1642:—uses asynchronous message passing between shared-nothing objects
2542:
1727:
1717:
1378:
1002:
differences are often overwhelmed by other performance factors.
3473:
2632:
2416:
1636:— uses thread-based parallelism and process-based parallelism
1630:
includes classes for threads, promises and channels by default
921:
Concurrent components communicate by altering the contents of
858:
662:
322:
264:
223:
40:
27:
Executing several computations during overlapping time periods
1898:
1615:—object-oriented, parallel, free of pointers, race conditions
776:
added the capability for reasoning about dynamic topologies.
1111:
are programming languages that use language constructs for
898:, or implementing the computational processes as a set of
2237:"Solution of a problem in concurrent programming control"
1436:
to logical variables, bag channels; is purely declarative
1410:—concurrent, and parallel functional programming language
1166:
is probably the most widely used in industry at present.
1726:—concurrency-extended subset of C language developed by
1472:—concurrent and distributed channel based, extension of
1831:
875:
518:
The main challenge in designing concurrent programs is
346:
1621:—essentially an executable implementation of Milner's
2371:
Synchronization
Algorithms and Concurrent Programming
1355:
mechanism based on the concepts of Design by
Contract
989:. Message passing can be efficiently implemented via
2038:
ACM Symposium on
Principles of Distributed Computing
1963:
Principles of
Concurrent and Distributed Programming
3560:
3507:
3402:
3287:
3189:
3005:
2947:
2904:
2807:
2798:
2738:
2680:
2671:
2556:
2498:
2450:
1805:may be capable of some parallelism, such as with a
500:. A set of tasks that can be scheduled serially is
71:. Unsourced material may be challenged and removed.
2085:https://en.cppreference.com/w/cpp/header/coroutine
1930:
1329:with explicit support for concurrent programming (
1985:
1889:(2012-01-11). "Concurrency is not Parallelism".
1600:—heavily concurrent, nondeterministic, based on
1496:—dataflow-based, communicates by message passing
729:The advantages of concurrent computing include:
2205:Patterson, David A.; Hennessy, John L. (2013).
2074:https://en.cppreference.com/w/cpp/header/thread
2329:Filman, Robert E.; Daniel P. Friedman (1984).
472:T1 and T2 may be executed alternately (serial
3485:
2644:
2428:
461:T1 may be executed and finished before T2 or
8:
2114:Concurrent and Parallel programming in Julia
1956:
1954:
1139:. Such languages are sometimes described as
164:with one completing before the next starts.
160:—during overlapping time periods—instead of
1104:Languages supporting concurrent programming
697:. Unsourced material may be challenged and
258:Learn how and when to remove these messages
3492:
3478:
3470:
2804:
2677:
2651:
2637:
2629:
2435:
2421:
2413:
1734:, built-in constructs for programmable I/O
1345:—uses promises for asynchronous operations
1211:, adds support for concurrency via futures
1145:concurrency-oriented programming languages
902:within a single operating system process.
2715:Programming in the large and in the small
2254:
1589:, which incorporates ideas from Milner's
717:Learn how and when to remove this message
391:Learn how and when to remove this message
373:Learn how and when to remove this message
311:Learn how and when to remove this message
167:This is a property of a system—whether a
131:Learn how and when to remove this message
34:. For a more theoretical discussion, see
2374:. Pearson / Prentice Hall. p. 433.
1022:
836:One of the first consistency models was
1895:http://talks.golang.org/2012/waza.slide
1821:
1794:
1548:variant extended to support parallelism
1242:—thread and coroutine support libraries
1221:with parallel primitives inspired from
1084:of jobs with concurrent use of a system
514:Coordinating access to shared resources
30:For the American computer company, see
1882:
1880:
2274:The Art of Multiprocessor Programming
1716:VHSIC Hardware Description Language (
957:Concurrent components communicate by
811:and applies them to memory accesses.
7:
2034:"PODC Influential Paper Award: 2002"
1844:The Origin of Concurrent Programming
1684:—concurrent, for teaching, built on
1339:—uses promises to preclude deadlocks
1278:—functional programming, similar to
833:occur and how results are produced.
695:adding citations to reliable sources
293:adding citations to reliable sources
69:adding citations to reliable sources
1442:—thread class or Runnable interface
1040:At the programming language level:
2408:Concurrent Systems Virtual Library
1893:, 11 January 2012. Retrieved from
1732:communicating sequential processes
1648:—for system programming, based on
1577:communicating sequential processes
789:, and mathematical models such as
770:Communicating Sequential Processes
186:Concurrent computing is a form of
25:
2335:. New York: McGraw-Hill. p.
1929:Schneider, Fred B. (1997-05-06).
1809:, but the processor alone is not.
1395:are part of Fortran 2008 standard
766:Calculus of Communicating Systems
239:This section has multiple issues.
3259:Partitioned global address space
2612:
2611:
2395:
1965:(2nd ed.). Addison-Wesley.
1841:Hansen, Per Brinch, ed. (2002).
1502:—concurrent, teaching, built on
1236:—Binary Modular DataFlow Machine
1109:Concurrent programming languages
993:, with or without shared memory
862:
667:
450:a computation across a network.
327:
269:
228:
45:
2161:"Typesafe Shared Mutable State"
1773:Race condition § Computing
1115:. These constructs may involve
1060:At the operating system level:
280:needs additional citations for
247:or discuss these issues on the
56:needs additional citations for
32:Concurrent Computer Corporation
3501:Types of programming languages
2618:Category: Concurrent computing
2000:IEEE Transactions on Computers
1141:concurrency-oriented languages
409:during the same period of time
36:Concurrency (computer science)
1:
2294:The Little Book of Semaphores
1986:Patterson & Hennessy 2013
1912:"Parallelism vs. Concurrency"
954:Message passing communication
906:Interaction and communication
801:Software transactional memory
3633:Programming paradigms navbox
2786:Uniform Function Call Syntax
1529:, for system programming in
1458:, in a browser environment,
1080:, which replaced sequential
3656:Operating system technology
3254:Parallel programming models
3228:Concurrent constraint logic
2579:Dining philosophers problem
1961:Ben-Ari, Mordechai (2006).
1327:system programming language
918:Shared memory communication
353:the claims made and adding
3672:
3347:Metalinguistic abstraction
3214:Automatic mutual exclusion
2468:Concurrent data structures
2354:Leppäjärvi, Jouni (2008).
2291:Downey, Allen B. (2005) .
2272:Herlihy, Maurice (2008) .
1531:Inferno (operating system)
1016:time-division multiplexing
925:locations (exemplified by
847:
818:
217:
194:an overall computation is
29:
3219:Choreographic programming
2607:
2584:Producer–consumer problem
2569:Cigarette smokers problem
2368:Taubenfeld, Gadi (2006).
2242:Communications of the ACM
1933:On Concurrent Programming
1899:http://vimeo.com/49718712
1853:10.1007/978-1-4757-3472-0
1829:Operating System Concepts
1299:—concurrent extension of
991:symmetric multiprocessing
785:Logics such as Lamport's
782:were introduced in 1987.
3269:Relativistic programming
1422:—actor-based concurrency
1069:cooperative multitasking
896:operating system process
645:balance >= withdrawal
540:
442:Concurrent computations
2599:Sleeping barber problem
2594:Readers–writers problem
2056:Armstrong, Joe (2003).
2012:10.1109/TC.1979.1675439
1575:—influenced heavily by
1073:preemptive multitasking
653:non-blocking algorithms
3279:Structured concurrency
2664:Comparison by language
2473:Concurrent hash tables
2402:Concurrent programming
1783:Transaction processing
1778:Structured concurrency
1758:Flow-based programming
1486:—concurrent, based on
1285:Concurrent Collections
842:sequential consistency
758:Dataflow architectures
80:"Concurrent computing"
18:Concurrent computation
3622:Programming languages
3244:Multitier programming
3060:Interface description
2660:Programming paradigms
2363:. University of Oulu.
2256:10.1145/365559.365617
1585:—a modern variant of
1200:Plan 9 from Bell Labs
1121:distributed computing
1065:Computer multitasking
780:Input/output automata
631:, and two concurrent
489:concurrent/sequential
3651:Concurrent computing
2444:Concurrent computing
2404:at Wikimedia Commons
1137:futures and promises
1055:Futures and promises
795:Actor event diagrams
752:Introduced in 1962,
691:improve this section
289:improve this article
144:Concurrent computing
65:improve this article
3384:Self-modifying code
2992:Probabilistic logic
2923:Functional reactive
2878:Expression-oriented
2832:Partial application
2463:Concurrency control
2300:. Green Tea Press.
2276:. Morgan Kaufmann.
1506:with features from
1428:—features distinct
959:exchanging messages
809:atomic transactions
532:resource starvation
520:concurrency control
508:concurrency control
506:, which simplifies
188:modular programming
3297:Attribute-oriented
3070:List comprehension
3015:Algebraic modeling
2828:Anonymous function
2720:Design by contract
2690:Jackson structures
2159:Blum, Ben (2012).
1763:Java ConcurrentMap
1291:Concurrent Haskell
874:. You can help by
850:Relaxed sequential
815:Consistency models
405:parallel computing
338:possibly contains
220:Parallel computing
3611:Computer language
3598:
3597:
3467:
3466:
3357:Program synthesis
3249:Organic computing
3185:
3184:
3090:Non-English-based
3065:Language-oriented
2843:Purely functional
2794:
2793:
2626:
2625:
2400:Media related to
2381:978-0-13-197259-9
2346:978-0-07-022439-1
2307:978-1-4414-1868-5
1972:978-0-321-31283-9
1862:978-1-4419-2986-0
1694:Per Brinch Hansen
1686:Concurrent Pascal
1512:Per Brinch Hansen
1504:Concurrent Pascal
1476:, implements the
1310:Per Brinch Hansen
1306:Concurrent Pascal
1067:, including both
892:
891:
827:consistency model
821:Consistency model
727:
726:
719:
401:
400:
393:
383:
382:
375:
340:original research
321:
320:
313:
262:
204:Per Brinch Hansen
181:concurrent system
150:in which several
141:
140:
133:
115:
16:(Redirected from
3663:
3637:
3631:
3626:
3620:
3615:
3609:
3494:
3487:
3480:
3471:
3369:by demonstration
3274:Service-oriented
3264:Process-oriented
3239:Macroprogramming
3224:Concurrent logic
3095:Page description
3085:Natural language
3055:Grammar-oriented
2982:Nondeterministic
2971:Constraint logic
2873:Point-free style
2868:Functional logic
2805:
2776:Immutable object
2695:Block-structured
2678:
2653:
2646:
2639:
2630:
2615:
2614:
2557:Classic problems
2533:Ambient calculus
2480:Concurrent users
2437:
2430:
2423:
2414:
2399:
2385:
2364:
2362:
2350:
2325:
2323:
2322:
2316:
2310:. Archived from
2299:
2287:
2268:
2258:
2220:
2216:978-0-12407886-4
2192:
2191:
2189:
2188:
2177:
2171:
2170:
2168:
2167:
2156:
2150:
2145:
2139:
2138:
2136:
2135:
2121:
2115:
2109:
2103:
2093:
2087:
2082:
2076:
2071:
2065:
2064:
2062:
2053:
2047:
2046:
2045:
2044:
2030:
2024:
2023:
1995:
1989:
1983:
1977:
1976:
1958:
1949:
1948:
1936:
1926:
1920:
1919:
1908:
1902:
1884:
1875:
1874:
1838:
1832:
1826:
1810:
1799:
1748:Asynchronous I/O
1536:Locomotive BASIC
1276:Concurrent Clean
1129:shared resources
1082:batch processing
1027:mutual exclusion
961:(exemplified by
887:
884:
866:
859:
722:
715:
711:
708:
702:
671:
663:
650:
646:
642:
638:
630:
623:
620:
617:
614:
611:
608:
605:
602:
599:
598:
595:
592:
589:
585:
582:
581:
578:
575:
572:
569:
566:
562:
559:
556:
553:
550:
547:
544:
537:
396:
389:
378:
371:
367:
364:
358:
355:inline citations
331:
330:
323:
316:
309:
305:
302:
296:
273:
265:
254:
232:
231:
224:
136:
129:
125:
122:
116:
114:
73:
49:
41:
21:
3671:
3670:
3666:
3665:
3664:
3662:
3661:
3660:
3641:
3640:
3635:
3629:
3624:
3618:
3613:
3607:
3604:
3599:
3594:
3556:
3547:Very high-level
3503:
3498:
3468:
3463:
3405:
3398:
3289:Metaprogramming
3283:
3199:
3194:
3181:
3163:Graph rewriting
3001:
2977:Inductive logic
2957:Abductive logic
2943:
2900:
2863:Dependent types
2811:
2790:
2762:Prototype-based
2742:
2740:Object-oriented
2734:
2730:Nested function
2725:Invariant-based
2667:
2657:
2627:
2622:
2603:
2552:
2500:Process calculi
2494:
2490:Linearizability
2446:
2441:
2392:
2382:
2367:
2360:
2353:
2347:
2328:
2320:
2318:
2314:
2308:
2297:
2290:
2284:
2271:
2233:Dijkstra, E. W.
2231:
2228:
2226:Further reading
2223:
2217:
2204:
2200:
2195:
2186:
2184:
2179:
2178:
2174:
2165:
2163:
2158:
2157:
2153:
2146:
2142:
2133:
2131:
2123:
2122:
2118:
2110:
2106:
2094:
2090:
2083:
2079:
2072:
2068:
2060:
2055:
2054:
2050:
2042:
2040:
2032:
2031:
2027:
1997:
1996:
1992:
1984:
1980:
1973:
1960:
1959:
1952:
1945:
1928:
1927:
1923:
1910:
1909:
1905:
1891:Waza conference
1885:
1878:
1863:
1840:
1839:
1835:
1827:
1823:
1819:
1814:
1813:
1800:
1796:
1791:
1768:Ptolemy Project
1744:
1720:)—IEEE STD-1076
1671:race conditions
1125:message passing
1117:multi-threading
1106:
1035:
1023:Dijkstra (1965)
1008:
995:cache coherence
987:process calculi
908:
888:
882:
879:
872:needs expansion
857:
852:
831:computer memory
823:
817:
807:the concept of
805:database theory
762:process calculi
750:
735:Gustafson's law
723:
712:
706:
703:
688:
672:
661:
648:
644:
640:
636:
635:make the calls
628:
625:
624:
621:
618:
615:
612:
609:
606:
603:
600:
596:
593:
590:
587:
586:
583:
579:
576:
573:
570:
567:
564:
563:
560:
557:
554:
551:
548:
545:
542:
535:
524:race conditions
516:
498:serial schedule
493:parallel/serial
417:multi-processor
397:
386:
385:
384:
379:
368:
362:
359:
344:
332:
328:
317:
306:
300:
297:
286:
274:
233:
229:
222:
216:
200:Edsger Dijkstra
137:
126:
120:
117:
74:
72:
62:
50:
39:
28:
23:
22:
15:
12:
11:
5:
3669:
3667:
3659:
3658:
3653:
3643:
3642:
3639:
3638:
3627:
3616:
3603:
3600:
3596:
3595:
3593:
3592:
3587:
3582:
3577:
3572:
3566:
3564:
3558:
3557:
3555:
3554:
3549:
3544:
3539:
3533:
3532:
3527:
3522:
3517:
3511:
3509:
3505:
3504:
3499:
3497:
3496:
3489:
3482:
3474:
3465:
3464:
3462:
3461:
3456:
3451:
3446:
3441:
3436:
3431:
3426:
3421:
3416:
3410:
3408:
3400:
3399:
3397:
3396:
3391:
3386:
3381:
3376:
3354:
3349:
3344:
3334:
3329:
3324:
3319:
3314:
3309:
3299:
3293:
3291:
3285:
3284:
3282:
3281:
3276:
3271:
3266:
3261:
3256:
3251:
3246:
3241:
3236:
3231:
3221:
3216:
3211:
3205:
3203:
3187:
3186:
3183:
3182:
3180:
3179:
3174:
3159:Transformation
3156:
3151:
3146:
3141:
3136:
3131:
3126:
3121:
3116:
3111:
3106:
3097:
3092:
3087:
3082:
3077:
3072:
3067:
3062:
3057:
3052:
3047:
3045:Differentiable
3042:
3032:
3025:Automata-based
3022:
3017:
3011:
3009:
3003:
3002:
3000:
2999:
2994:
2989:
2984:
2979:
2974:
2964:
2959:
2953:
2951:
2945:
2944:
2942:
2941:
2936:
2931:
2926:
2916:
2910:
2908:
2902:
2901:
2899:
2898:
2892:Function-level
2889:
2880:
2875:
2870:
2865:
2860:
2855:
2850:
2845:
2840:
2835:
2825:
2819:
2817:
2802:
2796:
2795:
2792:
2791:
2789:
2788:
2783:
2778:
2773:
2768:
2754:
2752:
2736:
2735:
2733:
2732:
2727:
2722:
2717:
2712:
2707:
2705:Non-structured
2702:
2697:
2692:
2686:
2684:
2675:
2669:
2668:
2658:
2656:
2655:
2648:
2641:
2633:
2624:
2623:
2621:
2620:
2608:
2605:
2604:
2602:
2601:
2596:
2591:
2589:Race condition
2586:
2581:
2576:
2571:
2566:
2560:
2558:
2554:
2553:
2551:
2550:
2545:
2540:
2535:
2530:
2525:
2520:
2515:
2510:
2504:
2502:
2496:
2495:
2493:
2492:
2487:
2482:
2477:
2476:
2475:
2465:
2460:
2454:
2452:
2448:
2447:
2442:
2440:
2439:
2432:
2425:
2417:
2411:
2410:
2405:
2391:
2390:External links
2388:
2387:
2386:
2380:
2365:
2351:
2345:
2326:
2306:
2288:
2283:978-0123705914
2282:
2269:
2227:
2224:
2222:
2221:
2215:
2201:
2199:
2196:
2194:
2193:
2172:
2151:
2140:
2129:docs.perl6.org
2116:
2104:
2088:
2077:
2066:
2048:
2025:
2006:(9): 690–691.
1990:
1988:, p. 503.
1978:
1971:
1950:
1943:
1921:
1903:
1876:
1861:
1833:
1820:
1818:
1815:
1812:
1811:
1793:
1792:
1790:
1787:
1786:
1785:
1780:
1775:
1770:
1765:
1760:
1755:
1750:
1743:
1740:
1736:
1735:
1721:
1714:
1708:
1702:
1696:
1679:
1673:
1664:
1658:
1652:
1643:
1637:
1631:
1625:
1616:
1610:
1604:
1602:Kleene algebra
1595:
1594:
1593:
1570:
1561:
1555:
1549:
1539:
1533:
1520:
1514:
1497:
1491:
1481:
1467:
1449:
1443:
1437:
1423:
1417:
1411:
1405:
1396:
1382:
1377:or a specific
1368:
1362:
1356:
1346:
1340:
1334:
1324:multi-paradigm
1317:
1312:
1303:
1294:
1288:
1282:
1273:
1255:
1249:
1243:
1237:
1231:
1225:
1217:—extension to
1212:
1207:—extension to
1202:
1193:
1119:, support for
1105:
1102:
1098:
1097:
1092:
1087:
1086:
1085:
1058:
1057:
1052:
1047:
1034:
1031:
1007:
1004:
999:
998:
985:, and various
955:
951:
950:
919:
907:
904:
890:
889:
869:
867:
856:
855:Implementation
853:
838:Leslie Lamport
819:Main article:
816:
813:
749:
746:
745:
744:
741:
737:
725:
724:
675:
673:
666:
660:
657:
541:
515:
512:
485:
484:
477:
470:
399:
398:
381:
380:
335:
333:
326:
319:
318:
277:
275:
268:
263:
237:
236:
234:
227:
215:
212:
139:
138:
53:
51:
44:
26:
24:
14:
13:
10:
9:
6:
4:
3:
2:
3668:
3657:
3654:
3652:
3649:
3648:
3646:
3634:
3628:
3623:
3617:
3612:
3606:
3605:
3601:
3591:
3588:
3586:
3583:
3581:
3578:
3576:
3573:
3571:
3568:
3567:
3565:
3563:
3559:
3553:
3550:
3548:
3545:
3543:
3540:
3538:
3535:
3534:
3531:
3528:
3526:
3523:
3521:
3518:
3516:
3513:
3512:
3510:
3506:
3502:
3495:
3490:
3488:
3483:
3481:
3476:
3475:
3472:
3460:
3457:
3455:
3452:
3450:
3447:
3445:
3442:
3440:
3437:
3435:
3432:
3430:
3429:Data-oriented
3427:
3425:
3422:
3420:
3417:
3415:
3412:
3411:
3409:
3407:
3401:
3395:
3392:
3390:
3387:
3385:
3382:
3380:
3377:
3374:
3370:
3366:
3362:
3358:
3355:
3353:
3350:
3348:
3345:
3342:
3338:
3335:
3333:
3330:
3328:
3327:Homoiconicity
3325:
3323:
3320:
3318:
3315:
3313:
3310:
3307:
3303:
3300:
3298:
3295:
3294:
3292:
3290:
3286:
3280:
3277:
3275:
3272:
3270:
3267:
3265:
3262:
3260:
3257:
3255:
3252:
3250:
3247:
3245:
3242:
3240:
3237:
3235:
3234:Concurrent OO
3232:
3229:
3225:
3222:
3220:
3217:
3215:
3212:
3210:
3207:
3206:
3204:
3202:
3197:
3192:
3188:
3178:
3175:
3172:
3168:
3164:
3160:
3157:
3155:
3152:
3150:
3147:
3145:
3142:
3140:
3137:
3135:
3132:
3130:
3129:Set-theoretic
3127:
3125:
3122:
3120:
3117:
3115:
3112:
3110:
3109:Probabilistic
3107:
3105:
3101:
3098:
3096:
3093:
3091:
3088:
3086:
3083:
3081:
3078:
3076:
3073:
3071:
3068:
3066:
3063:
3061:
3058:
3056:
3053:
3051:
3048:
3046:
3043:
3040:
3036:
3033:
3030:
3026:
3023:
3021:
3018:
3016:
3013:
3012:
3010:
3008:
3004:
2998:
2995:
2993:
2990:
2988:
2985:
2983:
2980:
2978:
2975:
2972:
2968:
2965:
2963:
2960:
2958:
2955:
2954:
2952:
2950:
2946:
2940:
2937:
2935:
2932:
2930:
2927:
2924:
2920:
2917:
2915:
2912:
2911:
2909:
2907:
2903:
2897:
2893:
2890:
2888:
2887:Concatenative
2884:
2881:
2879:
2876:
2874:
2871:
2869:
2866:
2864:
2861:
2859:
2856:
2854:
2851:
2849:
2846:
2844:
2841:
2839:
2836:
2833:
2829:
2826:
2824:
2821:
2820:
2818:
2815:
2810:
2806:
2803:
2801:
2797:
2787:
2784:
2782:
2779:
2777:
2774:
2772:
2769:
2767:
2763:
2759:
2756:
2755:
2753:
2750:
2746:
2741:
2737:
2731:
2728:
2726:
2723:
2721:
2718:
2716:
2713:
2711:
2708:
2706:
2703:
2701:
2698:
2696:
2693:
2691:
2688:
2687:
2685:
2683:
2679:
2676:
2674:
2670:
2665:
2661:
2654:
2649:
2647:
2642:
2640:
2635:
2634:
2631:
2619:
2610:
2609:
2606:
2600:
2597:
2595:
2592:
2590:
2587:
2585:
2582:
2580:
2577:
2575:
2572:
2570:
2567:
2565:
2562:
2561:
2559:
2555:
2549:
2548:Join-calculus
2546:
2544:
2541:
2539:
2536:
2534:
2531:
2529:
2526:
2524:
2521:
2519:
2516:
2514:
2511:
2509:
2506:
2505:
2503:
2501:
2497:
2491:
2488:
2486:
2485:Indeterminacy
2483:
2481:
2478:
2474:
2471:
2470:
2469:
2466:
2464:
2461:
2459:
2456:
2455:
2453:
2449:
2445:
2438:
2433:
2431:
2426:
2424:
2419:
2418:
2415:
2409:
2406:
2403:
2398:
2394:
2393:
2389:
2383:
2377:
2373:
2372:
2366:
2359:
2358:
2352:
2348:
2342:
2338:
2334:
2333:
2327:
2317:on 2016-03-04
2313:
2309:
2303:
2296:
2295:
2289:
2285:
2279:
2275:
2270:
2266:
2262:
2257:
2252:
2248:
2244:
2243:
2238:
2234:
2230:
2229:
2225:
2218:
2212:
2208:
2203:
2202:
2197:
2182:
2181:"Concurrency"
2176:
2173:
2162:
2155:
2152:
2149:
2144:
2141:
2130:
2126:
2125:"Concurrency"
2120:
2117:
2113:
2108:
2105:
2102:
2101:9781449335946
2098:
2092:
2089:
2086:
2081:
2078:
2075:
2070:
2067:
2059:
2052:
2049:
2039:
2035:
2029:
2026:
2021:
2017:
2013:
2009:
2005:
2001:
1994:
1991:
1987:
1982:
1979:
1974:
1968:
1964:
1957:
1955:
1951:
1946:
1944:9780387949420
1940:
1935:
1934:
1925:
1922:
1917:
1913:
1907:
1904:
1900:
1897:(slides) and
1896:
1892:
1888:
1883:
1881:
1877:
1872:
1868:
1864:
1858:
1854:
1850:
1846:
1845:
1837:
1834:
1830:
1825:
1822:
1816:
1808:
1804:
1798:
1795:
1788:
1784:
1781:
1779:
1776:
1774:
1771:
1769:
1766:
1764:
1761:
1759:
1756:
1754:
1751:
1749:
1746:
1745:
1741:
1739:
1733:
1729:
1725:
1722:
1719:
1715:
1712:
1709:
1707:—for research
1706:
1703:
1700:
1697:
1695:
1691:
1687:
1683:
1680:
1678:—for research
1677:
1674:
1672:
1668:
1665:
1662:
1659:
1656:
1653:
1651:
1647:
1644:
1641:
1638:
1635:
1632:
1629:
1626:
1624:
1620:
1617:
1614:
1611:
1608:
1605:
1603:
1599:
1596:
1592:
1588:
1584:
1581:
1580:
1578:
1574:
1571:
1569:
1565:
1562:
1559:
1556:
1553:
1550:
1547:
1543:
1540:
1537:
1534:
1532:
1528:
1525:—relative of
1524:
1521:
1518:
1515:
1513:
1509:
1505:
1501:
1498:
1495:
1492:
1489:
1485:
1482:
1479:
1478:join-calculus
1475:
1471:
1468:
1465:
1461:
1457:
1453:
1450:
1447:
1444:
1441:
1438:
1435:
1431:
1427:
1424:
1421:
1418:
1415:
1412:
1409:
1406:
1404:
1400:
1397:
1394:
1393:do concurrent
1390:
1386:
1383:
1380:
1379:work-stealing
1376:
1372:
1369:
1366:
1363:
1360:
1357:
1354:
1351:—through its
1350:
1347:
1344:
1341:
1338:
1335:
1332:
1328:
1325:
1321:
1318:
1316:
1313:
1311:
1307:
1304:
1302:
1298:
1297:Concurrent ML
1295:
1292:
1289:
1286:
1283:
1281:
1277:
1274:
1271:
1267:
1263:
1259:
1256:
1253:
1250:
1247:
1244:
1241:
1238:
1235:
1232:
1229:
1226:
1224:
1220:
1216:
1213:
1210:
1206:
1203:
1201:
1197:
1194:
1191:
1188:
1187:
1186:
1184:
1180:
1176:
1172:
1167:
1165:
1161:
1157:
1153:
1148:
1146:
1142:
1138:
1134:
1133:shared memory
1130:
1126:
1122:
1118:
1114:
1110:
1103:
1101:
1096:
1093:
1091:
1088:
1083:
1079:
1076:
1075:
1074:
1070:
1066:
1063:
1062:
1061:
1056:
1053:
1051:
1048:
1046:
1043:
1042:
1041:
1038:
1032:
1030:
1028:
1024:
1019:
1017:
1013:
1005:
1003:
996:
992:
988:
984:
980:
976:
972:
968:
964:
960:
956:
953:
952:
948:
944:
940:
936:
932:
928:
924:
923:shared memory
920:
917:
916:
915:
913:
905:
903:
901:
897:
886:
883:February 2014
877:
873:
870:This section
868:
865:
861:
860:
854:
851:
846:
843:
839:
834:
832:
828:
822:
814:
812:
810:
806:
803:borrows from
802:
798:
796:
792:
788:
783:
781:
777:
775:
771:
767:
763:
759:
755:
747:
742:
738:
736:
732:
731:
730:
721:
718:
710:
707:December 2006
700:
696:
692:
686:
685:
681:
676:This section
674:
670:
665:
664:
658:
656:
654:
647:evaluates to
641:withdraw(350)
637:withdraw(300)
634:
629:balance = 500
539:
533:
529:
525:
521:
513:
511:
509:
505:
504:
499:
494:
490:
482:
478:
475:
471:
468:
464:
460:
459:
458:
456:
451:
449:
445:
440:
438:
434:
429:
426:
422:
418:
414:
410:
406:
395:
392:
377:
374:
366:
363:December 2016
356:
352:
348:
342:
341:
336:This section
334:
325:
324:
315:
312:
304:
301:December 2016
294:
290:
284:
283:
278:This section
276:
272:
267:
266:
261:
259:
252:
251:
246:
245:
240:
235:
226:
225:
221:
213:
211:
209:
205:
201:
197:
193:
189:
184:
182:
178:
174:
170:
165:
163:
162:sequentially—
159:
158:
154:are executed
153:
149:
146:is a form of
145:
135:
132:
124:
121:February 2014
113:
110:
106:
103:
99:
96:
92:
89:
85:
82: –
81:
77:
76:Find sources:
70:
66:
60:
59:
54:This article
52:
48:
43:
42:
37:
33:
19:
3636:}}
3630:{{
3625:}}
3619:{{
3614:}}
3608:{{
3434:Event-driven
3190:
2838:Higher-order
2766:Object-based
2538:API-Calculus
2443:
2370:
2356:
2331:
2319:. Retrieved
2312:the original
2293:
2273:
2246:
2240:
2206:
2185:. Retrieved
2175:
2164:. Retrieved
2154:
2143:
2132:. Retrieved
2128:
2119:
2107:
2091:
2080:
2069:
2051:
2041:, retrieved
2037:
2028:
2003:
1999:
1993:
1981:
1962:
1937:. Springer.
1932:
1924:
1916:Haskell Wiki
1915:
1906:
1890:
1843:
1836:
1828:
1824:
1802:
1797:
1737:
1480:of processes
1433:
1429:
1392:
1168:
1149:
1144:
1140:
1107:
1099:
1078:Time-sharing
1059:
1039:
1036:
1020:
1009:
1000:
909:
893:
880:
876:adding to it
871:
835:
824:
799:
784:
778:
751:
728:
713:
704:
689:Please help
677:
632:
626:
517:
503:serializable
501:
497:
492:
488:
486:
480:
473:
466:
462:
452:
448:distributing
443:
441:
436:
433:time-sharing
430:
424:
408:
402:
387:
369:
360:
337:
307:
298:
287:Please help
282:verification
279:
255:
248:
242:
241:Please help
238:
214:Introduction
208:C.A.R. Hoare
185:
180:
166:
161:
157:concurrently
155:
152:computations
143:
142:
127:
118:
108:
101:
94:
87:
75:
63:Please help
58:verification
55:
3530:Interpreted
3444:Intentional
3424:Data-driven
3406:of concerns
3365:Inferential
3352:Multi-stage
3332:Interactive
3209:Actor-based
3196:distributed
3139:Stack-based
2939:Synchronous
2896:Value-level
2883:Applicative
2800:Declarative
2758:Class-based
2564:ABA problem
2458:Concurrency
1807:coprocessor
1730:, based on
1682:SuperPascal
1456:web workers
1331:actor model
1301:Standard ML
1264:dialect of
1209:Standard ML
1131:(including
1113:concurrency
983:actor model
947:thread-safe
483:concurrent)
476:concurrent)
469:sequential)
3645:Categories
3562:Generation
3542:High-level
3419:Components
3404:Separation
3379:Reflective
3373:by example
3317:Extensible
3191:Concurrent
3167:Production
3154:Templating
3134:Simulation
3119:Scientific
3039:Spacecraft
2967:Constraint
2962:Answer set
2914:Flow-based
2814:comparison
2809:Functional
2781:Persistent
2745:comparison
2710:Procedural
2682:Structured
2673:Imperative
2528:Ď€-calculus
2321:2009-11-21
2249:(9): 569.
2187:2022-12-15
2166:2012-11-14
2134:2017-12-24
2043:2009-08-24
1817:References
1646:Red/System
1623:Ď€-calculus
1591:Ď€-calculus
1452:JavaScript
1343:ECMAScript
1262:functional
1223:Ď€-calculus
1033:Prevalence
1012:telegraphy
939:semaphores
848:See also:
774:Ď€-calculus
768:(CCS) and
754:Petri nets
659:Advantages
594:withdrawal
577:withdrawal
555:withdrawal
463:vice versa
455:scheduling
413:processors
347:improve it
244:improve it
218:See also:
91:newspapers
3537:Low-level
3306:Inductive
3302:Automatic
3124:Scripting
2823:Recursive
1887:Pike, Rob
1753:Chu space
1667:SequenceL
1607:Oz-Mozart
1564:Newsqueak
1542:MultiLisp
1484:Join Java
1464:callbacks
1381:scheduler
1260:—modern,
1050:Coroutine
1018:(1870s).
678:does not
528:deadlocks
425:lifetimes
351:verifying
250:talk page
190:. In its
148:computing
3602:See also
3552:Esoteric
3525:Compiled
3520:Assembly
3459:Subjects
3449:Literate
3439:Features
3394:Template
3389:Symbolic
3361:Bayesian
3341:Hygienic
3201:parallel
3080:Modeling
3075:Low-code
3050:End-user
2987:Ontology
2919:Reactive
2906:Dataflow
2574:Deadlock
2265:19357737
2235:(1965).
1901:(video).
1871:44909506
1742:See also
1613:ParaSail
1558:Modula-3
1552:Modula-2
1490:language
1460:promises
1389:coarrays
1272:platform
1215:Ateji PX
1160:monitors
1147:(COPL).
943:monitors
764:such as
627:Suppose
546:withdraw
465:(serial
421:one-core
196:factored
192:paradigm
173:computer
3515:Machine
3414:Aspects
3322:Generic
3312:Dynamic
3171:Pattern
3149:Tactile
3114:Quantum
3104:filters
3035:Command
2934:Streams
2929:Signals
2700:Modular
2451:General
2198:Sources
2020:5679366
1803:machine
1583:occam-Ď€
1517:LabVIEW
1434:tellers
1408:Haskell
1385:Fortran
1280:Haskell
1268:on the
1258:Clojure
1090:Process
1045:Channel
1006:History
935:mutexes
912:futures
900:threads
699:removed
684:sources
633:threads
588:balance
571:balance
536:balance
345:Please
177:network
175:, or a
169:program
105:scholar
3585:Fourth
3575:Second
3177:Visual
3144:System
3029:Action
2853:Strict
2616:
2378:
2343:
2304:
2280:
2263:
2213:
2183:. 2022
2099:
2018:
1969:
1941:
1869:
1859:
1705:Unicon
1634:Python
1579:(CSP)
1546:Scheme
1470:JoCaml
1462:, and
1430:askers
1375:OpenMP
1365:Erlang
1359:Elixir
1349:Eiffel
1181:, and
1175:Erlang
1164:Erlang
1095:Thread
975:Erlang
791:traces
748:Models
613:return
601:return
530:, and
437:paused
206:, and
107:
100:
93:
86:
78:
3590:Fifth
3580:Third
3570:First
3508:Level
3454:Roles
3337:Macro
3100:Pipes
3020:Array
2997:Query
2949:Logic
2858:GADTs
2848:Total
2771:Agent
2523:LOTOS
2361:(PDF)
2315:(PDF)
2298:(PDF)
2261:S2CID
2061:(PDF)
2016:S2CID
1867:S2CID
1789:Notes
1711:TNSDL
1699:Swift
1690:Joyce
1661:Scala
1650:Rebol
1587:occam
1573:occam
1523:Limbo
1500:Joyce
1494:Joule
1474:OCaml
1454:—via
1446:Julia
1426:Janus
1371:FAUST
1353:SCOOP
1315:Curry
1234:BMDFM
1205:Alice
1183:occam
1179:Limbo
1135:) or
979:occam
971:Scala
941:, or
740:task.
616:false
574:>=
415:of a
112:JSTOR
98:books
3102:and
2749:list
2543:PEPA
2376:ISBN
2341:ISBN
2302:ISBN
2278:ISBN
2211:ISBN
2097:ISBN
2004:C-28
1967:ISBN
1939:ISBN
1857:ISBN
1728:XMOS
1718:VHDL
1688:and
1655:Rust
1640:Reia
1628:Raku
1619:Pict
1568:Alef
1527:Alef
1488:Java
1440:Java
1432:and
1414:Hume
1391:and
1308:—by
1270:Java
1266:Lisp
1228:Axum
1219:Java
1196:Alef
1171:Pict
1154:and
1152:Java
1071:and
977:and
929:and
927:Java
793:and
787:TLA+
682:any
680:cite
649:true
639:and
604:true
543:bool
491:and
84:news
3007:DSL
2518:ACP
2513:CCS
2508:CSP
2337:370
2251:doi
2008:doi
1849:doi
1692:by
1598:Orc
1510:by
1508:CSP
1403:CSP
1240:C++
1190:Ada
1143:or
963:MPI
878:.
840:'s
693:by
552:int
481:and
474:and
467:and
444:may
349:by
291:by
67:by
3647::
3371:,
3367:,
3363:,
3169:,
3165:,
2894:,
2885:,
2764:,
2760:,
2747:,
2339:.
2259:.
2245:.
2239:.
2127:.
2036:,
2014:.
2002:.
1953:^
1914:.
1879:^
1865:.
1855:.
1847:.
1724:XC
1676:SR
1420:Io
1399:Go
1252:C#
1246:Cω
1177:,
1156:C#
1127:,
1123:,
1029:.
973:,
969:,
967:Go
965:,
937:,
931:C#
655:.
591:-=
565:if
538::
526:,
510:.
253:.
210:.
202:,
171:,
3493:e
3486:t
3479:v
3375:)
3359:(
3343:)
3339:(
3308:)
3304:(
3230:)
3226:(
3198:,
3193:,
3173:)
3161:(
3041:)
3037:(
3031:)
3027:(
2973:)
2969:(
2925:)
2921:(
2834:)
2830:(
2816:)
2812:(
2751:)
2743:(
2666:)
2662:(
2652:e
2645:t
2638:v
2436:e
2429:t
2422:v
2384:.
2349:.
2324:.
2286:.
2267:.
2253::
2247:8
2219:.
2190:.
2169:.
2137:.
2063:.
2022:.
2010::
1975:.
1947:.
1918:.
1873:.
1851::
1544:—
1466:.
1387:—
1337:E
1333:)
1322:—
1320:D
997:.
949:.
885:)
881:(
720:)
714:(
709:)
705:(
701:.
687:.
622:}
619:;
610:}
607:;
597:;
584:{
580:)
568:(
561:{
558:)
549:(
394:)
388:(
376:)
370:(
365:)
361:(
343:.
314:)
308:(
303:)
299:(
285:.
260:)
256:(
134:)
128:(
123:)
119:(
109:·
102:·
95:·
88:·
61:.
38:.
20:)
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.