Talk:Comparison of multi-paradigm programming languages

The current title of this page is "Multi-paradigm programming languages".

In English, at least US English, hyphenating a word after the prefix "multi" is unnecessary, except when the subject word starts with the letter "i", or is a proper noun starting with a capital letter. (I am not a grammarian or English instructor. I am a part-time newspaper reporter.)

See a similar case: Multi-platform to Multiplatform.

There was a discussion of this issue, maybe here: Wikipedia talk:Manual_of_Style

Thus, it seems reasonable to change the page name accordingly, to "Multiparadigm programming language".

Is this the correct or best place to post such requests, or is there some more suitable location?

Thank you.


 * I'm not a native English speaker so I can't help with this. I think you are right, the best place to set a policy for this issue is at the Manual of Style. I haven't find any discussion about this. Also note that there are currently a lot of pages [|with the prefix "Multi-"], so this requires some work. Best regards. --surueña 13:11, 6 October 2005 (UTC)

How come Groovy is missing ?

 * Either because you did not add it or because Groovy is not a Multiparadigm programming language. --Krischik T 07:14, 25 March 2009 (UTC)

How is ECMAScript functional?
The only quasi-functional feature I can think of is support for anonymous and higher order functions, which alone I do not believe warrant claiming it borrows from the functional paradigm. Tarcieri 01:09, 2 July 2007 (UTC)

Scala supports imperative programming too
Should we bump it into the next level?

How is Ruby concurrent?
Ruby adds concurrency to a slight degree with DRb. While DRb is bundled with core Ruby I would not actually consider it part of the language. Contrast with Erlang where concurrency is an intrinsic part of the language. DRb in Ruby would compare more with Erlang's OTP (i.e. a standard bundled library) Tarcieri 01:09, 2 July 2007 (UTC)

Correctness and Usefulness
I am a little concerned about both the correctness and usefulness of the language comparison in this article. There is no definition of "paradigm" in this context and no complete list of paradigms to choose from. Instead, the concept of a paradigm is ad-hoc, sometimes erroneous (e.g. generics) and mostly misleading. Consequently, the categorisation is almost random. For example, OCaml is currently listed as "two paradigm", yet it supports functional, imperative, object-oriented, modular and generic (which is not template meta-programming, BTW). Is modular a paradigm (it has a completely different meaning in languages like Lisp)? Are eager and lazy evaluation two separate paradigms? Are dynamic and static typing paradigms? Is parametric polymorphism a paradigm?

The categorization is a joke really. I could name some examples, but i don't want to push any single language here. I would find it much more helpful, to just explain the origin of the word, its use and illustrate this with some language examples and citations. The word multiparadigm is far too vague, to be used as a language-sorting spec.

a few suggestions
Maybe saying C++ implements 4 paradigms is going too far... if so, then C would implement at least 3 (imperative, functional and template with macros). I think that a language is not functional if it not implements at least a few of those features: higher order functions (ok in C and C++ via function pointers), tail recursion, currying, lazy evaluation and maybe some others.

Concurrent and distributed should be not considered full paradigms, because they're normally implemented as library facilities in all programming languages, whatever the (main) paradigm.

Erlang presence's lacking in this article.

--85.59.39.220 14:51, 20 January 2006 (UTC)


 * C++ implements 1 paradigm: the imperative. It doesn't implement functional. Object orientation is not a paradigm, it's a way to group data and functions, it's not about execution order of the statements. The generics of C++ are in reality a macro kind of templates, and that's a textual conversion. Ada has some true kind of generics, but C++ templates are defined so badly that they might/might not be implemented with parse phase type-check. C++ is not truly generic. Said: Rursus ☺ ★ 09:34, 2 June 2007 (UTC)


 * (Besides: I hate each and every programming language - this is not specifically a C++ question. Said: Rursus ☺ ★ 09:37, 2 June 2007 (UTC))

C++ and functional
I have wondered about that as well. I think the C++ language advocates have gone to far here. But then there alwas go wild about there templates wich are a language of there own.

--Krischik T 14:14, 9 February 2006 (UTC)


 * Update: the C++ main page names functional as part of the boost lib. Boost is not even part of the (ISO) standart library for C++. That does not count - i correct the entry.
 * --Krischik T 14:30, 9 February 2006 (UTC)


 * The ability to program functionally is inherent in C++. While the Boost library supplies some of the common tools available in a functional programming language, the ability for functional programming is inherent in C++. In fact both D and C++ is heavily undervalued here. They both have facilities for generic multi-paradigm programming, which means that most paradigms can be used in them. They simple falls outside an enumeration of paradigms. 13:07, 19 October 2007 (UTC) —Preceding unsigned comment added by Carewolf (talk • contribs)

Concurrent and distributed
You are wrong here: Ada implements the concurrent and distributed paradigms as first class language feature and not thrue a library. So it is correct to have them on the page.

Question is:

--Krischik T 14:14, 9 February 2006 (UTC) ::Standard library inclusion counts for built-in support, external libraries does not. 188.57.101.218 (talk) 19:54, 28 April 2013 (UTC)
 * 1) Do all those who list them actualy support them as language feature or do they just have a library for support.
 * 2) And should (standart) library for support count or not? In former case I could upgrate Ada to include array programming ;-).

Common Lisp
Is it really correct to say that Common Lisp only supports the functional and object oriented paradigms? Common Lisp supports imperative programming just as well as languages like Python or Ruby. I would think it should (at least) be listed as supporting functional, imperative, and object oriented.

--66.115.232.200 22:04, 24 February 2006 (UTC)


 * Maybe. But defining functions in C doesn't make C a functional PL, since it cannot do sibcall optimizations well (and that's a design flaw). Depends not on whether Common Lisp allows imperative code, but whether a fully imperative program written in Common Lisp is stable. A fully functional program in C will soon make a stack overflow and hang. Said: Rursus ☺ ★ 09:24, 2 June 2007 (UTC)


 * There is nothing to suggest that imperative Common Lisp is any less stable than C. Many examples of large (non-object oriented) bodies of code which relies on the updating of persistent variables is available on line. In particular I cite P. Norvig `Paradigms of Artificial Intelligence' for examples of this.


 * Common Lisp supports imperative programming out of the box, and in an natural, easy way. There are primitives in Common Lisp for grouping commands (lists) and executing them from the first to the last (prog1, progn, etc); Common Lisp has setf to set the value of variables; "loop", "do", "dotimes", etc for iteration. It has if and case too, and a more general if, called "cond". How would it not support imperative programming? Now, Scheme is really different since (as far as I know) there is no support for iterative constructs, encouraging you to use recursion. But Common Lisp *does* support imperative programming. Or what is it that would be necessary to do imperative programming that you don't find in Common Lisp? -- w-g, 28 Sept 2007

I think the same holds for Dylan, but would argue that it doesn't hold for scheme as it lacks basic looping constructs and expects you to roll your own from functional tail-calling.

The 3 lisps (Scheme, Dylan, and CL)also deserve to be classified as supporting symbolic computation, see Touretzky's book: http://www.cs.cmu.edu/~dst/LispBook/index.html or how to design programs: http://www.htdp.org/2003-09-26/Book/curriculum-Z-H-1.html They should also be classified as supporting meta-programming i.e. writing code that writes code, see Graham's `On Lisp' or simply google for the language name + macros.Jekyll 18:53, 23 June 2007 (UTC)


 * This is really important, as it is one of the features that make the Lisps so different. Metaprogramming in Common Lisp and Scheme is wy more natural than in C++, for example. This really should be included as one mor paradigm (supported fully by Lisp and Scheme, and I'm not sure about other languages -- certainly not C++, where it's too hard to be "natural") -- w-g, 28 Sept 2007

Also, Lisp macros are easier to use and more powerful than C++ templates, so there should be a distinction here. C++ should be listed as supporting "parametric polymorphism", becuase that's the only easy thing you can do with its templates. The heavy metaprogramming in C++ that people like so much is not natural or easy; it's kind of weird. Read the source of any boost library if you don't believe me. Compare to any Lisp macro. -- w-g, 28 Sept 2007

PHP
Object Oriented? Funny, considering not only that www.php.net doesn't define php that way, but that it also stated specifically that PHP isn't one... conio.h • talk 11:24, 8 August 2006 (UTC)


 * I believe www.php.net is right and Wikipedia wrong in this matter. Said: Rursus ☺ ★ 14:54, 2 June 2007 (UTC)

Java as a Multi-paradigm Language
If concurrent is a paradigm, Java was one of the first modern languages with built-in syntactical support for concurrency. Thus, Java would be Object-oriented and concurrent.


 * You are double wrong: Ada has concurrent as first class language feature since 1983 long before Java was conceived. Also Java threads are implemented as a library feature not a language feature. Look here Ada_Programming/Tasking to see the difference. Ada has keywords to define for all the important thread related work, Java uses a collection of library classes. Java - the Language - is pretty primitive. All of Java's strength is in the library and in the virtual machine. --Krischik T 14:32, 1 May 2007 (UTC)
 * Java supports concurrency as part of the language, and well documented in the Java Language Specification . The java.lang package is part of the language, and is supported from the bottom-up with a requirement for the jvm to support concurrency. Having keywords isn't a requirement for a feature/design of a language. Your claim that its not part of the language is as ridiculous as saying class Object isn't a part of Java (it too resides in java.lang, like other fundamental parts of Java). 128.200.69.122 02:23, 6 July 2007 (UTC)
 * Ok, Ada can be upgraded to 6 paradigms then. Ada has a standart library for array programming. Or Vector and Matrix programming - got standart library for that as well. Note where that will lead? Soon all languages will be 8+ paradigm because of some semi-standard-library somewhere. —Preceding unsigned comment added by 194.41.152.158 (talk) 08:03, 10 December 2008 (UTC)
 * Even if you insist on having a keyword to prove it, what about Java's "synchronized" block / method modifier? "synchronized" makes no sense in a single-threaded world. 109.239.78.197 (talk) 20:42, 12 September 2012 (UTC)

As of Java 1.5, wouldn't Java be a 4 paradigm language. See Generics_in_Java. —Preceding unsigned comment added by 206.47.254.12 (talk) 20:43, 5 March 2008 (UTC)

According to the definition of generic programming, Java can be 4 paradigm language, or the information in generic programming page should be changed.

Articles for deletion/Aurora (programming language)
It would be helpful to have more users participating in this discussion. Dpbsmith (talk) 03:27, 17 December 2006 (UTC)

Term confusion
The article seems to be confusing a term and a marketroidized interpretation of the term. Does PHP allow logic and functional programming? Has java a guaranteed sibcall optimization in order to avoid stack overflow when using two mutually calling functions iteratively? What's "multiparadigm" is defined whether a PL easily allows more than one programming, f.ex. functional (fully, not bogus), iterative (fully, not bogus), logic programming (fully, not bogus) and parallel programming. I'll soon make a list over the PL:s mentioned, that aren't multiparadigm. Said: Rursus ☺ ★ 08:07, 2 June 2007 (UTC)

More:
 * It allows, as described by Bjarne Stroustrup, "a program using more than one programming style".

Now, Stroustrup is not the right kind of "authority" to cite for computer science. Prefer a professor or some such! Stroustrup made an impractical C "improvement" with severe design flaws pissing people off to create, Java, Csharp and D. Non-multi-paradigm PL:s, in the article: The claims of the article are quite preposterous! Add more to the list of false claims yourselves! Said: Rursus ☺ ★ 08:23, 2 June 2007 (UTC)
 * APL - solely imperative
 * PHP - solely imperative/OO
 * Simula - solely imperative/OO, maybe also pseudo-concurrent with co-processes,
 * Perl - solely imperative/OO
 * Python - solely imperative/OO
 * ECMAscript - solely imperative/OO
 * C++ - solely imperative/OO
 * D - solely imperative/OO
 * (Ada - retracted by myself, a 2 paradigm language - if 2 is enough for "multi-" ...)

More: there's no reason to count some paradigms twice, f.ex. dataflow/concurrent, and imperative/object-oriented. Dataflow are the flows of data in a concurrent programming language, and object-oriented are the data typically used in imperative PLs. "Paradigms" are about manyfolds of views on what to regard as data vs. programs, such as the concurrent paradigm regarding processes (running programs) as entities (data). The multi-paradigm PL implements such manifolds seemlessly with explicit design decisions to fully enable a programmer to adher strictly to this or that paradigm. F.ex. being able to define functions in C doesn't make C a functional programming language, since functional programming is about making infinite loops (not stack overflows) by a function calling itself. Said: Rursus ☺ ★ 08:53, 2 June 2007 (UTC)


 * Seed for a rewrite: HERE!! Said: Rursus ☺ ★ 09:57, 2 June 2007 (UTC)


 * Although I agree that Stroustrup is not the final authority on the matter, I don't really think his imperfect effort is relevant here. (In the same vein one could also mention that his language has been wildly successful, but I doubt his definition of multi-paradigm support had anything to do with that.)


 * I do not agree that a language has to support more than two paradigms to be called multi-paradigm. I think that "two's enough" is the only useful approach for a list such as this, unless it were so that almost every programming language supported two paradigms. Obviously, if the list is too long, we might filter based on notability.


 * You are a bit zealous in your eagerness to combine imperative and OO programming. While it is possible to just use objects as your data structure in imperative programming, this is different than the puristic style supported by Java and C# (and, less puristically, C++). In these languages, modifying the program state (through use of global variables) is difficult or discouraged, while modifying object state is easy and preferred.


 * Your argument would work better for a language such as PHP, where imperative programming is the norm and objects are used mainly as data structures. Still, PHP arguably does support OO programming, even though most people don't make good use of that support. ("Arguably" because neither does the API.)


 * I don't know enough about concurrent/dataflow languages to comment on them.

&mdash;Leif Arne Storset 12:03, 6 June 2007 (UTC)
 * You're absolutely right, though, about C not being functional. It supports passing function pointers, but anonymous functions are impossible, and tail-recursion optimization is not mandated.


 * Perl fully supports functional paradigm. Look for a book called "High Order Perl" and, for example, at the implementation of monads in Perl. —213.148.171.34 17:48, 29 June 2007 (UTC)


 * OOP and imperative programming ARE NOT THE SAME. It seems like you're trying to push some odd language POV. DO NOT EDIT with claims of OOP and imperative falling into the same paradigm without reliable sources. The four major paradigms are functional, imperative, OO, and logical . 128.200.69.122 02:32, 6 July 2007 (UTC)

Start from Scratch
Ever so often I come here and see what happened. And always there is an inflations of paradigms by various language advocates lacking any prove. I think the lack of prove and accountability is the main problem here. I wonder if it was useful to just remove the whole page and start fresh.

I could envision that the new page would not be sorted by number of paradigms any more - that makes language advocates far to jealous. Instead I suggest to sort by language name - with a small article on how a language supports which paradigm.

My hope such little articles would prevent any quick adding of me-too entries. Authors would need to think about what they are writing. Also any false claims would be easily detected.

Ahh and, ★ would you please read Ada_Programming/Tasking and tell me what exactly is missing from a task type to qualify for processes (running programs) as entities (data). (Of course I am a language advocate as well - but at least I add references to my claims) --Krischik T 07:40, 25 March 2009 (UTC)

Could we reduce the clutter?
I think the warning at the bottom of the article is sufficient - whoever put in all those stupid "Citation required" tags really made a mess of the article.


 * yes and no. When I added them I was hoping that language advocates would add prove that there language is as cool as they claim it is. I was wrong - with a very few exceptions language advocates they leave it by unproven claims... --Krischik T 18:34, 17 July 2007 (UTC)

Windos PowerShell is not a Programming Language
I suggest to remove it,since its a CLI. --QuicksilverPhoenix (talk) 19:45, 24 January 2008 (UTC)
 * Wrong. Windows PowerShell is both, a command-line shell and a programming language.
 * "The goal of Monad [Windows PowerShell] is to provide a shell environment similar to the Korn, Bourne, or other shells on UNIX and Linux, and a rich programming language like Perl or Ruby, combined with the functionality of the Microsoft .NET Framework."
 * Ghettoblaster (talk) 19:18, 28 October 2008 (UTC)

Where is Prolog
I think Prolog is a programming language as well. Am I wrong? --Comptrol (talk) 15:54, 15 February 2008 (UTC)


 * but is it a Multiparadigm programming language? --Krischik T 07:12, 25 March 2009 (UTC)

Over Classification?
This article seems to be an exercise in over classification of what are, in many ways, fuzzy concepts. Since no one agrees 100% what qualifies as an OOP language, how do you classify a language that is only partly OO (by some particular definition)? Does this count as supporting 2.5 paradigms? Surely whether a given language supports a given paradigm (whatever that means exactly) is a matter of degree? It's not a yes/no question. So counting the supported paradigms and classify languages according to the number of paradigms seems like compounding the sin. Richard Dawkins has a term for what this article seems to be attempting - he calls it the 'Tyranny of the Discontinuous Mind' (i.e. searching for hard and fast boundaries where they don't actually exist in reality).

All the above said, doesn't Aspect-oriented programming count as a paradigm? What about Metaprogramming?


 * I wish you had signed that post, but you're correct - this article is vastly over-complicating things with it's classification of "paradigms". Especially so with the list of programming languages by number of paradigms.  I don't know nearly enough of the programming languages on this list to rewrite it though, and I expect almost everyone is in the same position (how many people know every language on this list well enough to edit it?).  I think wiping the entire list of languages by paradigm and writing the lead so that the article explains what a multi-paradigm approach is, and why so many modern languages use it (with a few examples from popular languages) would be a good idea.  --CalPaterson (talk) 16:00, 27 May 2008 (UTC)
 * I partly agree. Instead of "wiping the entire list of languages by paradigm" make sure that you add this material to Comparison of programming languages. Ghettoblaster (talk) 16:12, 27 May 2008 (UTC)

A minor suggestion: Haskell. A less minor suggestion: Add a table with languages as rows and paradigms as columns, so the "differences" between any two are easier to grasp. —Preceding unsigned comment added by 99.162.208.204 (talk) 14:38, 29 June 2008 (UTC)

I find the "number of paradigms" supported number useful, I sort by it. I suggest "Abstract Data types (ADT)" as a way of capturing the "not fully OO" distinction. The page on CLU (programming language) captures the distinction. Also, many of the columns in the comparison table should be generated from the infobox for each language. The infobox should list the paradigms supported by the language. Fewer "original research" or unsupported claims that way. rhyre (talk) 11:02, 1 November 2014 (UTC)

Merge with Programming paradigm?
I am not sure how to "officially" suggest a merger, but I think this topic should redirect to Programming paradigm. Since pretty much every general purpose language can be classified as "multiparadigm," the majority of this article amounts to trivia. The list of languages could be completely deleted or perhaps copied to Comparison of programming languages, as suggested above. Since the list is mostly unsourced, incomplete, and even controversial, I would go with deletion. Anyone agree? Disagree? Maghnus (talk) 03:15, 6 July 2008 (UTC)
 * I've added a merger proposal on your behalf. I agree that this article, stand alone, makes little sense with its current content. Diego (talk) 07:49, 7 July 2008 (UTC)


 * I second the notion to merge this with Programming paradigm. Just based off the information listed at Programming paradigm you can cleary understand what multi-paradigm is and a few examples are even listed. If their is a true need of a full descriptive list of paradigms, then we can create a new wiki called "List of programming paradigm". --Richard (talk) 05:24, 13 August 2008 (UTC)


 * I third the motion and believe both articles are in need of a rewrite, programming paradigm containing more valid substance although it too is somewhat confused and on shaky ground. This could be, of course, because raising some dubious programming 'styles' to paradigm status might be premature !! - 'Programming dogmas' might be another appropriate article with sections on polymorhpic dogmas, encapsulated dogmas et al.  —Preceding unsigned comment added by Kdakin (talk • contribs) 05:56, 31 March 2009 (UTC)


 * Yes this page is a mess all along. I am the only one who added any tags and the rest is an unfounded race for who got the most paradigms for his / her favourite language --Krischik T 07:15, 31 March 2009 (UTC)


 * I don't see why this had its own article in the first place, merge it.--Digipatd 02:52, 1 June 2009 (UTC)


 * Merge the concept, but keep this as a separate list, just as i did with List of object-oriented programming languages. Pcap ping  06:39, 27 August 2009 (UTC)
 * I see there is consensus above, so I'm going to do it. Pcap ping  06:41, 27 August 2009 (UTC)

Does Java really supports functional programming?
Sorry if this is a stupid question, but does Java really supports FP?

If so, someone should add that to the Java_(programming_language) page, since there it says it's only OO, structured and imperative.--189.29.141.31 (talk) 07:49, 2 September 2008 (UTC)


 * well try:

int f (int x) { return 1 + f(x); }


 * if it crashes with an stack overflow then the answer is NO. A functional language Tail recursion should be applied and the function should fail integer range overflow. Or run forever if integer range overflows are not supported. --Krischik T 15:11, 31 March 2009 (UTC)


 * Supporting tail recursion optimization is hardly a benchmark for whether a language supports FP or not. GCC supports tail recursion optimization for C, and you wouldn't claim that C supports FP, would you? -- DevSolar (talk) 07:18, 11 July 2011 (UTC)

Windows PowerShell revisited
Pipeline? Really? A paradigm? I admit I don't know PowerShell, but I find it hard to believe that connecting one program's output to another program's input could really be called a "paradigm". I can pipe a C executable and a Perl script together. Does this make those two languages "supporting the pipeline paradigm", too? Is there more to this "pipelining" of PowerShell that sets it apart from that? Or is it an attempt to get PowerShell's "paradigm count" bumped? -- DevSolar (talk) 08:00, 7 July 2011 (UTC)

Procedural: as paradigm?, only Python?
Programming newb here. Procedural programming is discussed in these here-linked articles as a Programming paradigm, but it's not listed here. If it's mostly absent here because (confusingly) in this article it's considered a language type and not a paradigm, then it should be removed from Python (and Python moved to 3-paradigm?). Or if it is a paradigm, Python can't be the only language that qualifies. Thx, "alyosha" (talk) 19:29, 25 August 2012 (UTC)

Perl
According to Higher-Order Perl, Perl also supports Declarative Programming and other things, so why is it marked as "No"? It would also be a good source for citations, as it is a free (online available) book. --Athaba (talk) 09:42, 30 January 2013 (UTC)

I'm not clear the extent a language must support reflection to get a "Yes" in that column. Perl supports reflection for objects, but not for scalars, arrays or hashes. Does that count? --12.146.21.163 (talk) 18:53, 5 February 2014 (UTC)

Racket added
https://en.wikipedia.org/wiki/Racket_%28programming_language%29 Multi-paradigm: functional, procedural (imperative), modular, object-oriented, logic, reflective, meta-programming — Preceding unsigned comment added by BearnHeart (talk • contribs) 19:25, 31 March 2015 (UTC)

D has support for metaprogramming
D has support for metaprogramming via template metaprogramming and string mixins. Can we make the adequate changes to reflect this.

I have wrote up the following draft on my user page here

See http://dlang.org/template.html and http://dlang.org/mixin.html

Added these changes on 16th of November 2015 Machinistprogrammer (talk) 02:02, 16 November 2015 (UTC)

Is 'Design By Introspection' a programming paradigm?
Design By Introspection already mentioned on wikibooks here describes it as:

″one can design a templated class or struct in such a way that it inspects its template arguments at compile-time for different capabilities and then adapts to them. For example a composable allocator design can check if the parent allocator provides reallocation and efficiently delegate to it, or fallback to implementing reallocation with malloc and free, or not offer it at all. The benefit of doing this at compile-time is that the user of the said allocator can know if he should use reallocate, instead of getting mysterious run-time errors.″

The idea was first described here (page 44) by Andrei Alexandrescu.

Thoughts?

GoLang
How about adding Go_(programming_language) — Preceding unsigned comment added by Long.mindworker (talk • contribs) 16:37, 8 December 2015 (UTC)

Machinistprogrammer (talk) 06:21, 13 November 2015 (UTC)

I dunno. Go is imperative, reflective, and concurrent, but this page doesn't describe multi-paradigm well. For crying out loud, libraries and language extensions seem to qualify, but so many paradigms can be emulated by each other with proper design patterns. Mister Mormon (talk) 22:57, 4 February 2016 (UTC)

Don't several of the languages qualify as 'pipeline'?
F# and Elixir come to mind. Are idiomatic |> or composable. enough? — Preceding unsigned comment added by Mister Mormon (talk • contribs) 04:18, 20 February 2016 (UTC)

number of paradigms
What is counted as a paradigm? Only the once in the table? Or should we count also "other paradigms", which are not specified/linked?Anonym~dewiki (talk) 21:25, 25 October 2016 (UTC)

External links modified
Hello fellow Wikipedians,

I have just modified one external link on Comparison of multi-paradigm programming languages. Please take a moment to review my edit. If you have any questions, or need the bot to ignore the links, or the page altogether, please visit this simple FaQ for additional information. I made the following changes:
 * Added archive https://web.archive.org/web/20130119045517/http://doc.akka.io/docs/akka/snapshot/scala/dataflow.html to http://doc.akka.io/docs/akka/snapshot/scala/dataflow.html

When you have finished reviewing my changes, you may follow the instructions on the template below to fix any issues with the URLs.

Cheers.— InternetArchiveBot  (Report bug) 17:19, 11 August 2017 (UTC)