wikipedia-client 1.4.0 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7eef68a91af8a59530e3a7a06412a08acf99b477
4
- data.tar.gz: 596966793e291ab83932c917875a477ce190fc2d
3
+ metadata.gz: a004902819ad84ccbc3ca0abb7253ccf811d2df3
4
+ data.tar.gz: f41e4764b27e5707e7ba315cae7eaa51dd69ae47
5
5
  SHA512:
6
- metadata.gz: c359c00403193503828c22a2f8f7732efa8a4ce000358a0ab410dfe8831de6ba81f45d8d7bd824a5de1f6978fc400cee79ad81ed7be7264d84826bd8470ca019
7
- data.tar.gz: b27b765f451cf19e55e2f71192fd9ca9d788b32d77b531a6246891bf45de63541c67f777e701184df7191d398fe7e86bc2499d6fd44577f00d5cd334b3dde814
6
+ metadata.gz: 94ca09a3b557ca17b39ad0288dbadf60fcc970eb52b8bb3def90ce5815b3a0aa3fd0ab228f409c39a257988d235bc98b303d5b19de1198235aaaf2fb32adfcb9
7
+ data.tar.gz: 4e2b577bf5ed9825712e917937468ceb6dce2caaf42a58734a96d8d1aa41cd2bdda4e0e526cbe442418983ee5a4c336a2b6ec736780cd978fef677e3a1f38d0f
@@ -0,0 +1,3 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.2.2
@@ -1,4 +1,4 @@
1
- Copyright (c) 2008 [name of plugin creator]
1
+ Copyright (c) 2008 Cyril David, Ken Pratt, Mike Haugland
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
@@ -1,5 +1,7 @@
1
1
  h1. Wikipedia
2
2
 
3
+ !https://travis-ci.org/kenpratt/wikipedia-client.svg?branch=master!:https://travis-ci.org/kenpratt/wikipedia-client
4
+
3
5
  Allows you to get wikipedia content through their API. This uses the
4
6
  alpha API, not the deprecated query.php API type
5
7
 
@@ -22,6 +24,14 @@ page.title
22
24
 
23
25
  => 'Getting Things Done'
24
26
 
27
+ page.fullurl
28
+
29
+ => 'http://en.wikipedia.org/wiki/Getting_Things_Done'
30
+
31
+ page.text
32
+
33
+ => 'Getting Things Done is a time-management method...'
34
+
25
35
  page.content
26
36
 
27
37
  => # all the wiki markup appears here...
@@ -88,14 +98,48 @@ page.raw_data
88
98
  "title"=>"Getting Things Done", "touched"=>"2010-03-10T00:04:09Z",
89
99
  "lastrevid"=>348481810, "counter"=>0, "length"=>7891}}}}</code></pre>
90
100
 
91
- h2. Running specs
101
+ h2. Contributing
102
+
103
+ h3. Getting the code, and running the tests
92
104
 
93
- if you have rspec >= 1.1.3 installed just type in
105
+ <pre><code>git clone git@github.com:kenpratt/wikipedia-client.git
106
+ cd wikipedia-client
107
+ gem install bundler
108
+ bundle exec rake spec</code></pre>
94
109
 
95
- rake spec
110
+ h3. Pushing a new release of the Gem
111
+
112
+ Edit <code>lib/wikipedia/version.rb</code>, changing <code>VERSION</code>.
113
+
114
+ Edit <code>wikipedia-client.gemspec</code>, changing <code>s.date</code> to today's date.
115
+
116
+ Build the gem: <code>bundle exec gem build wikipedia-client.gemspec</code>
117
+
118
+ Commit the changes: <code>git commit -a -m 'Version bump to 1.4.0' && git push</code>
119
+
120
+ Publish the resurt to RubyGems: <code>bundle exec gem push wikipedia-client-1.4.0.gem</code>
96
121
 
97
122
  h2. Thanks!
98
123
 
99
124
  Copyright (c) 2008 [Cyril David], released under the MIT license
100
125
 
101
126
  Adopted by Ken Pratt (ken@kenpratt.net) in 2010/03
127
+
128
+ h3. Contributors
129
+
130
+ Aishwarya Subramanian <aishwarya923@gmail.com>
131
+ Bryce <brycedneal@gmail.com>
132
+ cdr-data <b_rhettbarber@yahoo.com>
133
+ Christian Hellsten <christian.hellsten@gmail.com>
134
+ Christopher Quackenbush <christopher@quackenbush.me>
135
+ Cyril David
136
+ Francesco Serra <afnecors@gmail.com>
137
+ ivobenedito <ivobenedito@gmail.com>
138
+ Justin Harrison <justin@matthin.com>
139
+ Ken Pratt <ken@kenpratt.net>
140
+ Manu Manu <manuisfunny@gmail.com>
141
+ Mike Haugland <mike.haugland@bravenet.com>
142
+ Pietro F. Menna <pietromenna@yahoo.com>
143
+ Sophie Rapoport <sfrapoport@gmail.com>
144
+ tsukasaoishi <tsukasa.oishi@gmail.com>
145
+ V <thevalentino@gmail.com>
@@ -16,10 +16,15 @@ module Wikipedia
16
16
  def self.find( page, options = {} )
17
17
  client.find( page, options )
18
18
  end
19
+
19
20
  def self.find_image( title, options = {} )
20
21
  client.find_image( title, options )
21
22
  end
22
23
 
24
+ def self.find_random( options = {} )
25
+ client.find_random( options )
26
+ end
27
+
23
28
  def self.Configure(&block)
24
29
  Configuration.instance.instance_eval(&block)
25
30
  end
@@ -23,13 +23,21 @@ module Wikipedia
23
23
  Page.new( request_image( title, options ) )
24
24
  end
25
25
 
26
+ def find_random( options = {} )
27
+ require 'json'
28
+ data = JSON::load( request_random( options ) )
29
+ title = data["query"]["pages"].values[0]["title"]
30
+ find( title, options )
31
+ end
32
+
26
33
  # http://en.wikipedia.org/w/api.php?action=query&format=json&prop=revisions%7Clinks%7Cimages%7Ccategories&rvprop=content&titles=Flower%20(video%20game)
27
34
  def request_page( title, options = {} )
28
35
  request( {
29
36
  :action => "query",
30
- :prop => %w{ revisions links extlinks images categories coordinates templates },
37
+ :prop => %w{ info revisions links extlinks images categories coordinates templates extracts },
31
38
  :rvprop => "content",
32
39
  :inprop => "url",
40
+ :explaintext => "",
33
41
  :titles => title
34
42
  }.merge( options ) )
35
43
  end
@@ -44,6 +52,16 @@ module Wikipedia
44
52
  }.merge( options ) )
45
53
  end
46
54
 
55
+ # http://en.wikipedia.org/w/api.php?action=query&generator=random&grnnamespace=0&prop=info
56
+ def request_random( options = {} )
57
+ request( {
58
+ :action => "query",
59
+ :generator => "random",
60
+ :grnnamespace => "0",
61
+ :prop => "info"
62
+ }.merge( options ) )
63
+ end
64
+
47
65
  def request( options )
48
66
  require 'open-uri'
49
67
  URI.parse( url_for( options ) ).read( "User-Agent" => Configuration[:user_agent] )
@@ -40,6 +40,10 @@ module Wikipedia
40
40
  page['editurl']
41
41
  end
42
42
 
43
+ def text
44
+ page['extract']
45
+ end
46
+
43
47
  def categories
44
48
  page['categories'].map {|c| c['title'] } if page['categories']
45
49
  end
@@ -83,7 +87,7 @@ module Wikipedia
83
87
  def image_metadata
84
88
  unless @cached_image_metadata
85
89
  if list = images
86
- filtered = list.select {|i| i =~ /:.+\.(jpg|jpeg|png|gif)$/i && !i.include?("LinkFA-star") }
90
+ filtered = list.select {|i| i =~ /:.+\.(jpg|jpeg|png|gif|svg)$/i && !i.include?("LinkFA-star") }
87
91
  @cached_image_metadata = filtered.map {|title| Wikipedia.find_image(title) }
88
92
  end
89
93
  end
@@ -1,3 +1,3 @@
1
1
  module Wikipedia
2
- VERSION = "1.4.0"
2
+ VERSION = "1.5.0"
3
3
  end
@@ -1 +1 @@
1
- {"query":{"pages":{"10018":{"pageid":10018,"ns":0,"title":"Edsger W. Dijkstra","revisions":[{"*":"{{Infobox_Scientist\n| name = Edsger Wybe Dijkstra\n| image = Edsger Wybe Dijkstra.jpg\n| image_width = 150px\n| caption = \n| birth_date = {{Birth date|1930|05|11}}\n| birth_place = [[Rotterdam]], [[Netherlands]]\n| death_date = {{death date and age|2002|8|6|1930|05|11}}\n| death_place = [[Nuenen]], [[Netherlands]]\n| residence = \n| citizenship =\n| nationality = \n| ethnicity =\n| field = [[Computer science]]\n| work_institutions = [[Centrum Wiskunde & Informatica|Mathematisch Centrum]]<br>[[Eindhoven University of Technology]]\n<br>[[University of Texas at Austin|The University of Texas at Austin]]\n| alma_mater = \n| doctoral_advisor = [[Adriaan van Wijngaarden]]\n| doctoral_students = [[Nico Habermann]]<\/br>[[Martin Rem]]<\/br>[[David Naumann]]<\/br>[[Cornelis Hemerik]]<\/br>[[Jan Tijmen Udding]]<\/br>[[Jan L. A. van de Snepscheut|Johannes van de Snepscheut]]<\/br>[[Antonetta van Gasteren]]\n| known_for = [[Dijkstra's algorithm]]<br>[[Structured programming]]<br>[[THE multiprogramming system]]<br>[[Semaphore (programming)|Semaphore]]\n| prizes = [[Turing Award]]<br>[[Association for Computing Machinery]]\n| footnotes = \n}}\n'''Edsger Wybe Dijkstra''' (May 11, 1930 \u2013 August 6, 2002; {{IPA-nl|\u02c8\u025btsx\u0259r \u02c8wib\u0259 \u02c8d\u025b\u026akstra|-|Dijkstra.ogg}}) was a [[Netherlands|Dutch]] [[computer science|computer scientist]]. He received the 1972 [[Turing Award]] for fundamental contributions to developing programming languages, and was the Schlumberger Centennial Chair of Computer Sciences at The [[University of Texas at Austin]] from 1984 until 2000.\n\nShortly before his death in 2002, he received the [[Association for Computing Machinery|ACM]] PODC Influential Paper Award in distributed computing for his work on [[self-stabilization]] of program computation. This annual award was renamed the [[Dijkstra Prize]] the following year, in his honour.\n\n==Life and work==\nBorn in [[Rotterdam, Netherlands]], Dijkstra studied [[theoretical physics]] at [[Leiden University]], but quickly realized he was more interested in computer science.\nOriginally employed by the [[Centrum Wiskunde & Informatica|Mathematisch Centrum]] in Amsterdam, he held a professorship at the [[Eindhoven University of Technology]], worked as a research fellow for [[Burroughs Corporation]] in the early 1970s, and later held the Schlumberger Centennial Chair in Computer Sciences at the [[University of Texas at Austin]], in the United States. He retired in 2000.\n\nAmong his contributions to computer science are the ''[[shortest path problem|shortest path]]-[[algorithm]]'', also known as ''[[Dijkstra's algorithm]]''; ''[[Reverse Polish Notation]]'' and related ''[[Shunting yard algorithm]]''; the [[THE multiprogramming system]], an important early example of structuring a system as a set of layers; ''[[Banker's algorithm]]''; and the [[Semaphore (programming)|semaphore]] construct for coordinating multiple processors and programs. Another concept due to Dijkstra in the field of distributed computing is that of [[self-stabilization]] &ndash; an alternative way to ensure the reliability of the system. Dijkstra's algorithm is used in SPF, [[Shortest Path First]], which is used in the routing protocol OSPF, [[Open Shortest Path First]].\n\nWhile he had programmed extensively in machine code in the 1950s, he was known for his low opinion of the [[GOTO]] statement in [[computer programming]], writing a paper in 1965, and culminating in the 1968 article \"[http:\/\/www.cs.utexas.edu\/users\/EWD\/transcriptions\/EWD02xx\/EWD215.html A Case against the GO TO Statement]\" (EWD215), regarded as a major step towards the widespread deprecation of the [[GOTO]] statement and its effective replacement by [[control structures|structured control constructs]], such as the [[while loop]]. This methodology was also called [[structured programming]], the title of his 1972 book, coauthored with [[C.A.R. Hoare]] and [[Ole-Johan Dahl]]. The March 1968 ACM letter's famous title, \"Go To Statement [[considered harmful|Considered Harmful]]\",<small><ref name=\"goto\">\n \"Go To Statement [[considered harmful|Considered Harmful]]\",\n ''Communications of the ACM'', Vol. 11, No. 3,\n March 1968, pp. 147-148.\n<\/ref><\/small> was not the work of Dijkstra, but of [[Niklaus Wirth]], then editor of ''[[Communications of the ACM]]''. Dijskra also strongly opposed the teaching of [[BASIC]],<ref>{{citation|title=How do we tell truths that might hurt?|date=18 June 1975|url=http:\/\/www.cs.virginia.edu\/~evans\/cs655-S00\/readings\/ewd498.html}}<\/ref> a language whose programs are typically GOTO-laden.\n\nDijkstra was known to be a fan of [[ALGOL|ALGOL 60]], and worked on the team that implemented the first [[compiler]] for that language. Dijkstra and [[Jaap Zonneveld]], who collaborated on the compiler, agreed not to shave until the project was completed.\n\nDijkstra wrote two important papers in 1968, devoted to the structure of a multiprogramming operating system called [[THE multiprogramming system|THE]], and to [[Co-operating Sequential Processes]].\n\nFrom the 1970s, Dijkstra's chief interest was [[formal verification]]. The prevailing opinion at the time was that one should first write a program and then provide a [[mathematical proof]] of [[correctness]]. Dijkstra objected noting that the resulting proofs are long and cumbersome, and that the proof gives no insight on how the program was developed. An alternative method is ''[[program derivation]]'', to \"develop proof and program hand in hand\". One starts with a mathematical ''specification'' of what a program is supposed to do and applies mathematical transformations to the specification until it is turned into a program that can be executed. The resulting program is then known to be ''correct by construction''. Much of Dijkstra's later work concerns ways to streamline mathematical argument. In a 2001 interview,<ref>http:\/\/video.google.com\/videoplay?docid=-6873628658308030363<\/ref> he stated a desire for \"elegance\", whereby the correct approach would be to process thoughts mentally, rather than attempt to render them until they are complete. The analogy he made was to contrast the compositional approaches of [[Wolfgang Amadeus Mozart|Mozart]] and [[Ludwig van Beethoven|Beethoven]].\n\nDijkstra was one of the early pioneers in the field of distributed computing. In particular, his paper \"Self-stabilizing Systems in Spite of Distributed Control\" started the sub-field of [[self-stabilization]].\n\nMany of his opinions on computer science and programming have become widespread. For example, he is famed for coining the popular programming phrase \"two or more, use a for,\" alluding to the rule of thumb that when you find yourself processing more than one instance of a data structure, it is time to consider encapsulating that logic inside a loop. He was the first to make the claim that programming is so inherently complex that, in order to manage it successfully, programmers need to harness every trick and abstraction possible. When expressing the abstract nature of computer science, he once said, \"computer science is no more about computers than astronomy is about telescopes.\" \n\nHe died in [[Nuenen]], [[Netherlands]] on August 6, 2002 after a long struggle with [[cancer]]. The following year, the ACM ([[Association for Computing Machinery]]) PODC Influential Paper Award in distributed computing was renamed the [[Dijkstra Prize]] in his honour.\n\n== EWDs and writing by hand ==\n{{Close paraphrase|section|date=April 2009}}\nDijkstra was known for his habit of carefully composing manuscripts with his fountain pen. The manuscripts are called EWDs, since Dijkstra numbered them with ''EWD'', his initials, as a prefix. According to Dijkstra himself, the EWDs started when he moved from the Mathematical Centre in Amsterdam to the Technological University (then TH) Eindhoven. After going to the TUE Dijkstra experienced a writer's block for more than a year. Looking closely at himself he realized that if he wrote about things they would appreciate at the MC in Amsterdam his colleagues in Eindhoven would not understand; if he wrote about things they would like in Eindhoven, his former colleagues in Amsterdam would look down on him. He then decided to write only for himself, and in this way the EWD's were born. Dijkstra would distribute photocopies of a new EWD among his colleagues; as many recipients photocopied and forwarded their copy, the EWDs spread throughout the international computer science community. The topics were computer science and mathematics, and included trip reports, letters, and speeches. More than 1300 EWDs have since been scanned, with a growing number transcribed to facilitate search, and are available online at the Dijkstra archive of the University of Texas.<ref>University of Texas [http:\/\/www.cs.utexas.edu\/users\/EWD\/ online EWD archive].<\/ref>\n\nOne of Dijkstra's sidelines was serving as [[Board of directors|Chairman of the Board]] of the fictional Mathematics Inc., a company that he imagined having [[commercialized]] the production of mathematical [[theorems]] in the same way that software companies had commercialized the production of computer programs. He invented a number of activities and challenges of Mathematics Inc. and documented them in several papers in the EWD series. The imaginary company had produced a proof of the [[Riemann Hypothesis]] but then had great difficulties collecting [[royalties]] from mathematicians who had proved results assuming the Riemann Hypothesis. The proof itself was a [[trade secret]] (EWD 475). Many of the company's proofs were rushed out the door and then much of the company's effort had to be spent on [[Software maintenance|maintenance]] (EWD 539). A more successful effort was the Standard Proof for [[Pythagoras' Theorem]], that replaced the more than 100 incompatible existing proofs (EWD427). Dijkstra described Mathematics Inc. as \"the most exciting and most miserable business ever conceived\" (EWD475). He claimed that by 1974 his fictional company was the world's leading mathematical industry with more than 75 percent of the world market (EWD443).<ref>\n{{cite book | last = Dijkstra | first = Edsger W. | title = Selected Writings on Computing: A Personal Perspective | publisher = Springer-Verlag | location = Berlin | year = 1982 | isbn = 9780387906522 }}\n<\/ref>\n\nHaving invented much of the technology of software, Dijkstra eschewed the use of computers in his own work for many decades. Almost all EWDs appearing after 1972 were hand-written. When lecturing, he would write proofs in chalk on a blackboard rather than using overhead foils, let alone Powerpoint slides. Even after he succumbed to his UT colleagues\u2019 encouragement and acquired a [[Macintosh]] computer, he used it only for e-mail and for browsing the World Wide Web.<ref name = \"UTx\">University of Texas, [http:\/\/www.utexas.edu\/faculty\/council\/2002-2003\/memorials\/Dijkstra\/dijkstra.html \"In Memoriam Edsger Wybe Dijkstra.\"]<\/ref>\n\n==Awards and honors==\nAmong Dijkstra's awards and honours are:<ref name = \"UTx\"\/>\n* Member of the [[Royal Netherlands Academy of Arts and Sciences]] (1971)\n* Distinguished Fellow of the [[British Computer Society]] (1971)\n* The [[Association for Computing Machinery]]'s A.M. [[ACM Turing Award|Turing Award]] (1972)\n* Foreign Honorary Member of the [[American Academy of Arts and Sciences]] (1975)\n* Doctor of Science [[Honoris Causa]] from the [[Queen's University Belfast]] (1976)\n* Computer Pioneer Charter Recipient from the [[IEEE Computer Society]] (1982)\n* Honorary doctorate from the [[Athens University of Economics & Business]], Greece (2001).\n\n==See also==\n* [[Dijkstra's algorithm]]\n* [[Smoothsort]]\n* [[Dining philosophers problem]]\n* \"[[The Cruelty of Really Teaching Computer Science]]\"\n* [[Semaphore (programming)|Semaphore]]\n\n==Footnotes==\n{{reflist}}\n==References==\n===Writings by E.W. Dijkstra===\n* {{cite journal |last=Dijkstra |first=E. W. |title=Letters to the editor: go to statement considered harmful |journal=[[Communications of the ACM]] |volume=11 |issue=3 |month=March |year=1968 |pages=147&ndash;148 |issn=0001-0782 |doi=10.1145\/362929.362947 }} (EWD215)\n\n* {{cite journal|url=http:\/\/www.cs.utexas.edu\/~EWD\/transcriptions\/EWD03xx\/EWD340.html\n|title=The Humble Programmer\n|last=Dijkstra |first=E. W.\n|journal=[[Communications of the ACM]]\n|volume=15\n|issue=10\n|year=1972\n|month=Aug\n|pages=859\u2013866|doi=10.1145\/355604.361591\n}} (EWD340) [http:\/\/www.cs.utexas.edu\/~EWD\/ewd03xx\/EWD340.PDF PDF], 1972 [[ACM Turing Award]] lecture\n\n* {{cite journal |last=Dijkstra |first=E. W. |title=How do we tell truths that might hurt? |url=http:\/\/www.cs.virginia.edu\/~evans\/cs655\/readings\/ewd498.html |journal=[[SIGPLAN|SIGPLAN Notice]] |volume=17 |issue=5 |month=May |year=1982 |pages=13&ndash;15 |issn=0362-1340 |doi=10.1145\/947923.947924 }} (EWD498)\n\n<!-- I found this copy of the above paper with a copyright notice in it at\nhttp:\/\/www.cs.utexas.edu\/users\/EWD\/ewd04xx\/EWD498.PDF, so I don't think that the set of quotes should be lifted from it. Bubba73 -->\n* [http:\/\/www.cs.utexas.edu\/users\/EWD\/transcriptions\/EWD11xx\/EWD1166.html ''From My Life'' (EWD1166)]\n* Dijkstra, E.W. (August 1975), ''Guarded commands, nondeterminacy and formal derivation of program''. ''[[Communications of the ACM]]'', 18(8):453\u2013457. [http:\/\/doi.acm.org\/10.1145\/360933.360975]\n* Dijkstra, E.W. (1976), ''A Discipline of Programming'', Prentice-Hall Series in Automatic Computation, ISBN 0-13-215871-X \u2014 A systematic introduction to a version of the guarded command language with many worked examples\n* ''Selected Writings on Computing: A Personal Perspective'', Texts and Monographs in Computer Science, Springer-Verlag, 1982, ISBN 0-387-90652-5\n* ''A Method of Programming'', E.W. Dijkstra, W.H.J. Feijen, J. Sterringa, Addison Wesley 1988, ISBN 0-201-17536-3\n* E. W. Dijkstra and [[Carel S. Scholten]] (1990). ''Predicate Calculus and Program Semantics''. Springer-Verlag ISBN 0-387-96957-8 \u2014 An abstract, formal treatment of [[Predicate transformer semantics]]\n*[[Ole-Johan Dahl|O.-J. Dahl]], [[Edsger W. Dijkstra]], [[C. A. R. Hoare]] ''Structured Programming'', Academic Press, London, 1972 ISBN 0-12-200550-3\n**this volume includes an expanded version of the ''Notes on Structured Programming'', including an extended example of using the structured approach to develop a backtracking algorithm to solve the [[Eight queens puzzle|8 Queens problem]].\n**[http:\/\/portal.acm.org\/citation.cfm?id=1243380&jmp=cit&coll=portal&dl=GUIDE&CFID=:\/\/www.acm.org\/publications\/&CFTOKEN=www.acm.org\/publications\/#CIT a pdf version of this book is available in the ACM Classic Books Series]\n**[http:\/\/s1.webstarts.com\/ACaseForAgentsEDUpaper\/uploads\/scimakelatex_2400_Dr__Douglas_C__Engelbart__Edsger_W__Dijkstra_Stephen_A__Dymarcik_II_Peter_Naur_.pdf]\n\n===Others about Dijkstra, eulogies===\n* [http:\/\/web.archive.org\/web\/20041206193322\/www.digidome.nl\/edsger_wybe_dijkstra.htm Biography] Digidome\n* [http:\/\/homepages.cwi.nl\/~apt\/ps\/dijkstra.pdf ''Edsger Wybe Dijkstra (1930\u20132002): A Portrait of a Genius''] ([[Portable Document Format|PDF]]) Obituary in ''[[Formal Aspects of Computing]]'' with a short biography\n* [http:\/\/www.cs.utexas.edu\/users\/EWD\/memorial\/gries.html ''How can we explain Edsger W. Dijkstra to those who didn't know him?''] by David Gries\n* [http:\/\/www.cs.utexas.edu\/users\/EWD\/memorial\/moore.html Dijkstra Eulogy] by J Strother Moore\n* [http:\/\/www.cs.rutgers.edu\/~szegedy\/dijkstra.html In Memoriam Edsger Wybe Dijkstra] by Mario Szegedy\n* [http:\/\/www.adeptis.ru\/vinci\/m_part7.html Photos of Edsger Dijkstra]\n* [http:\/\/www.cs.utexas.edu\/users\/EWD\/misc\/vanVlissingenInterview.html 1985 Interview with Edsger Dijkstra, which he considered the best of his life]\n\n==External links==\n{{wikiquote}}\n* [http:\/\/www.cbi.umn.edu\/oh\/display.phtml?id=320 Oral history interview with Edsger W. Dijkstra], [[Charles Babbage Institute]] University of Minnesota, Minneapolis. Dijkstra recounts his early education and training as a theoretical physicist and as a 'programmer'. Dijkstra describes his work developing software, and his activities at several early information processing conferences. Dijkstra discusses the development of [[ALGOL 60]], [[Dijkstra's algorithm]], [[THE multiprogramming system]]. Comments on such figures as [[Adriaan_van_Wijngaarden|Aad van Wijngaarden]], [[Gerrit Blaauw]], [[F.L. Bauer]], [[Peter Naur]], [[Tony Hoare]], [[Niklaus Wirth]], [[Alan Perlis]]. Compares the origins of computing science in Europe and America. Oral history interview 2001.\n* [http:\/\/www.cs.utexas.edu\/users\/EWD\/ E. W. Dijkstra Archive]\n* [http:\/\/www.cs.utexas.edu\/users\/EWD\/video-audio\/NoorderlichtVideo.html Noorderlicht: Discipline in Thought] Video interview, 2001-04-10\n**[http:\/\/noorderlicht.vpro.nl\/afleveringen\/3502225\/ original here], only in Dutch, bandwidth options\n<!-- * [[Luca Cardelli]]'s [http:\/\/www.luca.demon.co.uk\/Fonts\/Pc\/Dijkstra.zip Font of Dijkstra's Handwriting] -->\n* [http:\/\/www.speechpedia.org\/EdsgerDijkstra\/1996\/12\/08\/Edsger-Dijkstras-Convocation-Speech\/ Edsger Dijkstra's Convocation Speech]\n\n{{Turing award}}\n{{Software Engineering}}\n\n{{Persondata\n|NAME=Dijkstra, Edsger\n|ALTERNATIVE NAMES=\n|SHORT DESCRIPTION=Dutch mathematician\n|DATE OF BIRTH={{birth date|1930|5|11|mf=y}}\n|PLACE OF BIRTH=[[Rotterdam]]\n|DATE OF DEATH={{death date|2002|8|6|mf=y}}\n|PLACE OF DEATH=[[Nuenen]], [[Netherlands]]\n}}\n{{DEFAULTSORT:Dijkstra, Edsger}}\n[[Category:1930 births]]\n[[Category:2002 deaths]]\n[[Category:Computer pioneers]]\n[[Category:Dutch computer scientists]]\n[[Category:Dutch physicists]]\n[[Category:Eindhoven University of Technology faculty]]\n[[Category:Fellows of the Association for Computing Machinery]]\n[[Category:Fellows of the British Computer Society]]\n[[Category:Formal methods people]]\n[[Category:Leiden University alumni]]\n[[Category:Members of IFIP Working Group 2.1]]\n[[Category:People from Rotterdam]]\n[[Category:Programming language designers]]\n[[Category:Programming language researchers]]\n[[Category:Researchers in distributed computing]]\n[[Category:Software engineers]]\n[[Category:Software engineering researchers]]\n[[Category:Turing Award laureates]]\n[[Category:University of Texas at Austin faculty]]\n\n[[ast:Edsger Dijkstra]]\n[[bn:\u098f\u099f\u09cd\u200c\u09b8\u0996\u09be\u09b0 \u09a1\u09c7\u0987\u0995\u09cd\u200c\u09b8\u09cd\u099f\u09cd\u09b0\u09be]]\n[[bs:Edsger Dijkstra]]\n[[bg:\u0415\u0434\u0441\u0445\u0435\u0440 \u0414\u0435\u0439\u043a\u0441\u0442\u0440\u0430]]\n[[ca:Edsger Dijkstra]]\n[[cs:Edsger Dijkstra]]\n[[da:Edsger Dijkstra]]\n[[de:Edsger Wybe Dijkstra]]\n[[et:Edsger Wybe Dijkstra]]\n[[el:\u0388\u03bd\u03c4\u03c3\u03b3\u03ba\u03b5\u03c1 \u039d\u03c4\u03ac\u03b9\u03ba\u03c3\u03c4\u03c1\u03b1]]\n[[es:Edsger Dijkstra]]\n[[eo:Edsger Dijkstra]]\n[[fa:\u0627\u062f\u0633\u062e\u0631 \u062f\u06cc\u06a9\u0633\u062a\u0631\u0627]]\n[[fr:Edsger Dijkstra]]\n[[ga:Edsger Dijkstra]]\n[[ko:\uc5d0\uce20\ud5c8\ub974 \ub370\uc774\ud06c\uc2a4\ud2b8\ub77c]]\n[[hr:Edsger Dijkstra]]\n[[id:Edsger Dijkstra]]\n[[it:Edsger Dijkstra]]\n[[he:\u05d0\u05d3\u05e1\u05d7\u05e8 \u05d3\u05d9\u05d9\u05e7\u05e1\u05d8\u05e8\u05d4]]\n[[lb:Edsger W. Dijkstra]]\n[[hu:Edsger Wybe Dijkstra]]\n[[ml:\u0d0e\u0d21\u0d4d\u0d17\u0d7c \u0d21\u0d48\u0d15\u0d4d\u0d38\u0d4d\u0d1f\u0d4d\u0d30\u0d3e]]\n[[mr:\u090f\u0921\u094d\u0938\u0917\u0930 \u0921\u093f\u0915\u094d\u0938\u094d\u091f\u094d\u0930\u093e]]\n[[nl:Edsger Dijkstra]]\n[[ja:\u30a8\u30c9\u30ac\u30fc\u30fb\u30c0\u30a4\u30af\u30b9\u30c8\u30e9]]\n[[no:Edsger Dijkstra]]\n[[pl:Edsger Dijkstra]]\n[[pt:Edsger Dijkstra]]\n[[ro:Edsger Dijkstra]]\n[[ru:\u0414\u0435\u0439\u043a\u0441\u0442\u0440\u0430, \u042d\u0434\u0441\u0433\u0435\u0440 \u0412\u0438\u0431\u0435]]\n[[sk:Edsger Wybe Dijkstra]]\n[[sr:\u0415\u0434\u0441\u0445\u0435\u0440 \u0414\u0430\u0458\u043a\u0441\u0442\u0440\u0430]]\n[[fi:Edsger Dijkstra]]\n[[sv:Edsger Dijkstra]]\n[[tr:Edsger Dijkstra]]\n[[uk:\u0415\u0434\u0441\u0433\u0435\u0440 \u0414\u0435\u0439\u043a\u0441\u0442\u0440\u0430]]\n[[vi:Edsger Dijkstra]]\n[[zh:\u827e\u5179\u683c\u00b7\u8fea\u6770\u65af\u7279\u62c9]]"}],"links":[{"ns":0,"title":"ACM Turing Award"},{"ns":0,"title":"ALGOL"},{"ns":0,"title":"ALGOL 60"},{"ns":0,"title":"Adi Shamir"},{"ns":0,"title":"Adriaan van Wijngaarden"},{"ns":0,"title":"Agile software development"},{"ns":0,"title":"Alan Kay"},{"ns":0,"title":"Alan Perlis"},{"ns":0,"title":"Algorithm"},{"ns":0,"title":"Allen Newell"}],"images":[{"ns":6,"title":"File:Copyright-problem.svg"},{"ns":6,"title":"File:Dijkstra.ogg"},{"ns":6,"title":"File:Edsger Wybe Dijkstra.jpg"},{"ns":6,"title":"File:Speaker Icon.svg"},{"ns":6,"title":"File:Wikiquote-logo-en.svg"}],"categories":[{"ns":14,"title":"Category:1930 births"},{"ns":14,"title":"Category:2002 deaths"},{"ns":14,"title":"Category:All pages needing cleanup"},{"ns":14,"title":"Category:Articles needing cleanup from April 2009"},{"ns":14,"title":"Category:Articles with close paraphrasing from April 2009"},{"ns":14,"title":"Category:Computer pioneers"},{"ns":14,"title":"Category:Dutch computer scientists"},{"ns":14,"title":"Category:Dutch physicists"},{"ns":14,"title":"Category:Eindhoven University of Technology faculty"},{"ns":14,"title":"Category:Fellows of the Association for Computing Machinery"}]}}},"query-continue":{"links":{"plcontinue":"10018|0|American Academy of Arts and Sciences"},"categories":{"clcontinue":"10018|Fellows of the British Computer Society"}}}
1
+ {"query":{"pages":{"10018":{"pageid":10018,"ns":0,"title":"Edsger W. Dijkstra","fullurl":"http://en.wikipedia.org/wiki/Edsger_W._Dijkstra","revisions":[{"*":"{{Infobox_Scientist\n| name = Edsger Wybe Dijkstra\n| image = Edsger Wybe Dijkstra.jpg\n| image_width = 150px\n| caption = \n| birth_date = {{Birth date|1930|05|11}}\n| birth_place = [[Rotterdam]], [[Netherlands]]\n| death_date = {{death date and age|2002|8|6|1930|05|11}}\n| death_place = [[Nuenen]], [[Netherlands]]\n| residence = \n| citizenship =\n| nationality = \n| ethnicity =\n| field = [[Computer science]]\n| work_institutions = [[Centrum Wiskunde & Informatica|Mathematisch Centrum]]<br>[[Eindhoven University of Technology]]\n<br>[[University of Texas at Austin|The University of Texas at Austin]]\n| alma_mater = \n| doctoral_advisor = [[Adriaan van Wijngaarden]]\n| doctoral_students = [[Nico Habermann]]<\/br>[[Martin Rem]]<\/br>[[David Naumann]]<\/br>[[Cornelis Hemerik]]<\/br>[[Jan Tijmen Udding]]<\/br>[[Jan L. A. van de Snepscheut|Johannes van de Snepscheut]]<\/br>[[Antonetta van Gasteren]]\n| known_for = [[Dijkstra's algorithm]]<br>[[Structured programming]]<br>[[THE multiprogramming system]]<br>[[Semaphore (programming)|Semaphore]]\n| prizes = [[Turing Award]]<br>[[Association for Computing Machinery]]\n| footnotes = \n}}\n'''Edsger Wybe Dijkstra''' (May 11, 1930 \u2013 August 6, 2002; {{IPA-nl|\u02c8\u025btsx\u0259r \u02c8wib\u0259 \u02c8d\u025b\u026akstra|-|Dijkstra.ogg}}) was a [[Netherlands|Dutch]] [[computer science|computer scientist]]. He received the 1972 [[Turing Award]] for fundamental contributions to developing programming languages, and was the Schlumberger Centennial Chair of Computer Sciences at The [[University of Texas at Austin]] from 1984 until 2000.\n\nShortly before his death in 2002, he received the [[Association for Computing Machinery|ACM]] PODC Influential Paper Award in distributed computing for his work on [[self-stabilization]] of program computation. This annual award was renamed the [[Dijkstra Prize]] the following year, in his honour.\n\n==Life and work==\nBorn in [[Rotterdam, Netherlands]], Dijkstra studied [[theoretical physics]] at [[Leiden University]], but quickly realized he was more interested in computer science.\nOriginally employed by the [[Centrum Wiskunde & Informatica|Mathematisch Centrum]] in Amsterdam, he held a professorship at the [[Eindhoven University of Technology]], worked as a research fellow for [[Burroughs Corporation]] in the early 1970s, and later held the Schlumberger Centennial Chair in Computer Sciences at the [[University of Texas at Austin]], in the United States. He retired in 2000.\n\nAmong his contributions to computer science are the ''[[shortest path problem|shortest path]]-[[algorithm]]'', also known as ''[[Dijkstra's algorithm]]''; ''[[Reverse Polish Notation]]'' and related ''[[Shunting yard algorithm]]''; the [[THE multiprogramming system]], an important early example of structuring a system as a set of layers; ''[[Banker's algorithm]]''; and the [[Semaphore (programming)|semaphore]] construct for coordinating multiple processors and programs. Another concept due to Dijkstra in the field of distributed computing is that of [[self-stabilization]] &ndash; an alternative way to ensure the reliability of the system. Dijkstra's algorithm is used in SPF, [[Shortest Path First]], which is used in the routing protocol OSPF, [[Open Shortest Path First]].\n\nWhile he had programmed extensively in machine code in the 1950s, he was known for his low opinion of the [[GOTO]] statement in [[computer programming]], writing a paper in 1965, and culminating in the 1968 article \"[http:\/\/www.cs.utexas.edu\/users\/EWD\/transcriptions\/EWD02xx\/EWD215.html A Case against the GO TO Statement]\" (EWD215), regarded as a major step towards the widespread deprecation of the [[GOTO]] statement and its effective replacement by [[control structures|structured control constructs]], such as the [[while loop]]. This methodology was also called [[structured programming]], the title of his 1972 book, coauthored with [[C.A.R. Hoare]] and [[Ole-Johan Dahl]]. The March 1968 ACM letter's famous title, \"Go To Statement [[considered harmful|Considered Harmful]]\",<small><ref name=\"goto\">\n \"Go To Statement [[considered harmful|Considered Harmful]]\",\n ''Communications of the ACM'', Vol. 11, No. 3,\n March 1968, pp. 147-148.\n<\/ref><\/small> was not the work of Dijkstra, but of [[Niklaus Wirth]], then editor of ''[[Communications of the ACM]]''. Dijskra also strongly opposed the teaching of [[BASIC]],<ref>{{citation|title=How do we tell truths that might hurt?|date=18 June 1975|url=http:\/\/www.cs.virginia.edu\/~evans\/cs655-S00\/readings\/ewd498.html}}<\/ref> a language whose programs are typically GOTO-laden.\n\nDijkstra was known to be a fan of [[ALGOL|ALGOL 60]], and worked on the team that implemented the first [[compiler]] for that language. Dijkstra and [[Jaap Zonneveld]], who collaborated on the compiler, agreed not to shave until the project was completed.\n\nDijkstra wrote two important papers in 1968, devoted to the structure of a multiprogramming operating system called [[THE multiprogramming system|THE]], and to [[Co-operating Sequential Processes]].\n\nFrom the 1970s, Dijkstra's chief interest was [[formal verification]]. The prevailing opinion at the time was that one should first write a program and then provide a [[mathematical proof]] of [[correctness]]. Dijkstra objected noting that the resulting proofs are long and cumbersome, and that the proof gives no insight on how the program was developed. An alternative method is ''[[program derivation]]'', to \"develop proof and program hand in hand\". One starts with a mathematical ''specification'' of what a program is supposed to do and applies mathematical transformations to the specification until it is turned into a program that can be executed. The resulting program is then known to be ''correct by construction''. Much of Dijkstra's later work concerns ways to streamline mathematical argument. In a 2001 interview,<ref>http:\/\/video.google.com\/videoplay?docid=-6873628658308030363<\/ref> he stated a desire for \"elegance\", whereby the correct approach would be to process thoughts mentally, rather than attempt to render them until they are complete. The analogy he made was to contrast the compositional approaches of [[Wolfgang Amadeus Mozart|Mozart]] and [[Ludwig van Beethoven|Beethoven]].\n\nDijkstra was one of the early pioneers in the field of distributed computing. In particular, his paper \"Self-stabilizing Systems in Spite of Distributed Control\" started the sub-field of [[self-stabilization]].\n\nMany of his opinions on computer science and programming have become widespread. For example, he is famed for coining the popular programming phrase \"two or more, use a for,\" alluding to the rule of thumb that when you find yourself processing more than one instance of a data structure, it is time to consider encapsulating that logic inside a loop. He was the first to make the claim that programming is so inherently complex that, in order to manage it successfully, programmers need to harness every trick and abstraction possible. When expressing the abstract nature of computer science, he once said, \"computer science is no more about computers than astronomy is about telescopes.\" \n\nHe died in [[Nuenen]], [[Netherlands]] on August 6, 2002 after a long struggle with [[cancer]]. The following year, the ACM ([[Association for Computing Machinery]]) PODC Influential Paper Award in distributed computing was renamed the [[Dijkstra Prize]] in his honour.\n\n== EWDs and writing by hand ==\n{{Close paraphrase|section|date=April 2009}}\nDijkstra was known for his habit of carefully composing manuscripts with his fountain pen. The manuscripts are called EWDs, since Dijkstra numbered them with ''EWD'', his initials, as a prefix. According to Dijkstra himself, the EWDs started when he moved from the Mathematical Centre in Amsterdam to the Technological University (then TH) Eindhoven. After going to the TUE Dijkstra experienced a writer's block for more than a year. Looking closely at himself he realized that if he wrote about things they would appreciate at the MC in Amsterdam his colleagues in Eindhoven would not understand; if he wrote about things they would like in Eindhoven, his former colleagues in Amsterdam would look down on him. He then decided to write only for himself, and in this way the EWD's were born. Dijkstra would distribute photocopies of a new EWD among his colleagues; as many recipients photocopied and forwarded their copy, the EWDs spread throughout the international computer science community. The topics were computer science and mathematics, and included trip reports, letters, and speeches. More than 1300 EWDs have since been scanned, with a growing number transcribed to facilitate search, and are available online at the Dijkstra archive of the University of Texas.<ref>University of Texas [http:\/\/www.cs.utexas.edu\/users\/EWD\/ online EWD archive].<\/ref>\n\nOne of Dijkstra's sidelines was serving as [[Board of directors|Chairman of the Board]] of the fictional Mathematics Inc., a company that he imagined having [[commercialized]] the production of mathematical [[theorems]] in the same way that software companies had commercialized the production of computer programs. He invented a number of activities and challenges of Mathematics Inc. and documented them in several papers in the EWD series. The imaginary company had produced a proof of the [[Riemann Hypothesis]] but then had great difficulties collecting [[royalties]] from mathematicians who had proved results assuming the Riemann Hypothesis. The proof itself was a [[trade secret]] (EWD 475). Many of the company's proofs were rushed out the door and then much of the company's effort had to be spent on [[Software maintenance|maintenance]] (EWD 539). A more successful effort was the Standard Proof for [[Pythagoras' Theorem]], that replaced the more than 100 incompatible existing proofs (EWD427). Dijkstra described Mathematics Inc. as \"the most exciting and most miserable business ever conceived\" (EWD475). He claimed that by 1974 his fictional company was the world's leading mathematical industry with more than 75 percent of the world market (EWD443).<ref>\n{{cite book | last = Dijkstra | first = Edsger W. | title = Selected Writings on Computing: A Personal Perspective | publisher = Springer-Verlag | location = Berlin | year = 1982 | isbn = 9780387906522 }}\n<\/ref>\n\nHaving invented much of the technology of software, Dijkstra eschewed the use of computers in his own work for many decades. Almost all EWDs appearing after 1972 were hand-written. When lecturing, he would write proofs in chalk on a blackboard rather than using overhead foils, let alone Powerpoint slides. Even after he succumbed to his UT colleagues\u2019 encouragement and acquired a [[Macintosh]] computer, he used it only for e-mail and for browsing the World Wide Web.<ref name = \"UTx\">University of Texas, [http:\/\/www.utexas.edu\/faculty\/council\/2002-2003\/memorials\/Dijkstra\/dijkstra.html \"In Memoriam Edsger Wybe Dijkstra.\"]<\/ref>\n\n==Awards and honors==\nAmong Dijkstra's awards and honours are:<ref name = \"UTx\"\/>\n* Member of the [[Royal Netherlands Academy of Arts and Sciences]] (1971)\n* Distinguished Fellow of the [[British Computer Society]] (1971)\n* The [[Association for Computing Machinery]]'s A.M. [[ACM Turing Award|Turing Award]] (1972)\n* Foreign Honorary Member of the [[American Academy of Arts and Sciences]] (1975)\n* Doctor of Science [[Honoris Causa]] from the [[Queen's University Belfast]] (1976)\n* Computer Pioneer Charter Recipient from the [[IEEE Computer Society]] (1982)\n* Honorary doctorate from the [[Athens University of Economics & Business]], Greece (2001).\n\n==See also==\n* [[Dijkstra's algorithm]]\n* [[Smoothsort]]\n* [[Dining philosophers problem]]\n* \"[[The Cruelty of Really Teaching Computer Science]]\"\n* [[Semaphore (programming)|Semaphore]]\n\n==Footnotes==\n{{reflist}}\n==References==\n===Writings by E.W. Dijkstra===\n* {{cite journal |last=Dijkstra |first=E. W. |title=Letters to the editor: go to statement considered harmful |journal=[[Communications of the ACM]] |volume=11 |issue=3 |month=March |year=1968 |pages=147&ndash;148 |issn=0001-0782 |doi=10.1145\/362929.362947 }} (EWD215)\n\n* {{cite journal|url=http:\/\/www.cs.utexas.edu\/~EWD\/transcriptions\/EWD03xx\/EWD340.html\n|title=The Humble Programmer\n|last=Dijkstra |first=E. W.\n|journal=[[Communications of the ACM]]\n|volume=15\n|issue=10\n|year=1972\n|month=Aug\n|pages=859\u2013866|doi=10.1145\/355604.361591\n}} (EWD340) [http:\/\/www.cs.utexas.edu\/~EWD\/ewd03xx\/EWD340.PDF PDF], 1972 [[ACM Turing Award]] lecture\n\n* {{cite journal |last=Dijkstra |first=E. W. |title=How do we tell truths that might hurt? |url=http:\/\/www.cs.virginia.edu\/~evans\/cs655\/readings\/ewd498.html |journal=[[SIGPLAN|SIGPLAN Notice]] |volume=17 |issue=5 |month=May |year=1982 |pages=13&ndash;15 |issn=0362-1340 |doi=10.1145\/947923.947924 }} (EWD498)\n\n<!-- I found this copy of the above paper with a copyright notice in it at\nhttp:\/\/www.cs.utexas.edu\/users\/EWD\/ewd04xx\/EWD498.PDF, so I don't think that the set of quotes should be lifted from it. Bubba73 -->\n* [http:\/\/www.cs.utexas.edu\/users\/EWD\/transcriptions\/EWD11xx\/EWD1166.html ''From My Life'' (EWD1166)]\n* Dijkstra, E.W. (August 1975), ''Guarded commands, nondeterminacy and formal derivation of program''. ''[[Communications of the ACM]]'', 18(8):453\u2013457. [http:\/\/doi.acm.org\/10.1145\/360933.360975]\n* Dijkstra, E.W. (1976), ''A Discipline of Programming'', Prentice-Hall Series in Automatic Computation, ISBN 0-13-215871-X \u2014 A systematic introduction to a version of the guarded command language with many worked examples\n* ''Selected Writings on Computing: A Personal Perspective'', Texts and Monographs in Computer Science, Springer-Verlag, 1982, ISBN 0-387-90652-5\n* ''A Method of Programming'', E.W. Dijkstra, W.H.J. Feijen, J. Sterringa, Addison Wesley 1988, ISBN 0-201-17536-3\n* E. W. Dijkstra and [[Carel S. Scholten]] (1990). ''Predicate Calculus and Program Semantics''. Springer-Verlag ISBN 0-387-96957-8 \u2014 An abstract, formal treatment of [[Predicate transformer semantics]]\n*[[Ole-Johan Dahl|O.-J. Dahl]], [[Edsger W. Dijkstra]], [[C. A. R. Hoare]] ''Structured Programming'', Academic Press, London, 1972 ISBN 0-12-200550-3\n**this volume includes an expanded version of the ''Notes on Structured Programming'', including an extended example of using the structured approach to develop a backtracking algorithm to solve the [[Eight queens puzzle|8 Queens problem]].\n**[http:\/\/portal.acm.org\/citation.cfm?id=1243380&jmp=cit&coll=portal&dl=GUIDE&CFID=:\/\/www.acm.org\/publications\/&CFTOKEN=www.acm.org\/publications\/#CIT a pdf version of this book is available in the ACM Classic Books Series]\n**[http:\/\/s1.webstarts.com\/ACaseForAgentsEDUpaper\/uploads\/scimakelatex_2400_Dr__Douglas_C__Engelbart__Edsger_W__Dijkstra_Stephen_A__Dymarcik_II_Peter_Naur_.pdf]\n\n===Others about Dijkstra, eulogies===\n* [http:\/\/web.archive.org\/web\/20041206193322\/www.digidome.nl\/edsger_wybe_dijkstra.htm Biography] Digidome\n* [http:\/\/homepages.cwi.nl\/~apt\/ps\/dijkstra.pdf ''Edsger Wybe Dijkstra (1930\u20132002): A Portrait of a Genius''] ([[Portable Document Format|PDF]]) Obituary in ''[[Formal Aspects of Computing]]'' with a short biography\n* [http:\/\/www.cs.utexas.edu\/users\/EWD\/memorial\/gries.html ''How can we explain Edsger W. Dijkstra to those who didn't know him?''] by David Gries\n* [http:\/\/www.cs.utexas.edu\/users\/EWD\/memorial\/moore.html Dijkstra Eulogy] by J Strother Moore\n* [http:\/\/www.cs.rutgers.edu\/~szegedy\/dijkstra.html In Memoriam Edsger Wybe Dijkstra] by Mario Szegedy\n* [http:\/\/www.adeptis.ru\/vinci\/m_part7.html Photos of Edsger Dijkstra]\n* [http:\/\/www.cs.utexas.edu\/users\/EWD\/misc\/vanVlissingenInterview.html 1985 Interview with Edsger Dijkstra, which he considered the best of his life]\n\n==External links==\n{{wikiquote}}\n* [http:\/\/www.cbi.umn.edu\/oh\/display.phtml?id=320 Oral history interview with Edsger W. Dijkstra], [[Charles Babbage Institute]] University of Minnesota, Minneapolis. Dijkstra recounts his early education and training as a theoretical physicist and as a 'programmer'. Dijkstra describes his work developing software, and his activities at several early information processing conferences. Dijkstra discusses the development of [[ALGOL 60]], [[Dijkstra's algorithm]], [[THE multiprogramming system]]. Comments on such figures as [[Adriaan_van_Wijngaarden|Aad van Wijngaarden]], [[Gerrit Blaauw]], [[F.L. Bauer]], [[Peter Naur]], [[Tony Hoare]], [[Niklaus Wirth]], [[Alan Perlis]]. Compares the origins of computing science in Europe and America. Oral history interview 2001.\n* [http:\/\/www.cs.utexas.edu\/users\/EWD\/ E. W. Dijkstra Archive]\n* [http:\/\/www.cs.utexas.edu\/users\/EWD\/video-audio\/NoorderlichtVideo.html Noorderlicht: Discipline in Thought] Video interview, 2001-04-10\n**[http:\/\/noorderlicht.vpro.nl\/afleveringen\/3502225\/ original here], only in Dutch, bandwidth options\n<!-- * [[Luca Cardelli]]'s [http:\/\/www.luca.demon.co.uk\/Fonts\/Pc\/Dijkstra.zip Font of Dijkstra's Handwriting] -->\n* [http:\/\/www.speechpedia.org\/EdsgerDijkstra\/1996\/12\/08\/Edsger-Dijkstras-Convocation-Speech\/ Edsger Dijkstra's Convocation Speech]\n\n{{Turing award}}\n{{Software Engineering}}\n\n{{Persondata\n|NAME=Dijkstra, Edsger\n|ALTERNATIVE NAMES=\n|SHORT DESCRIPTION=Dutch mathematician\n|DATE OF BIRTH={{birth date|1930|5|11|mf=y}}\n|PLACE OF BIRTH=[[Rotterdam]]\n|DATE OF DEATH={{death date|2002|8|6|mf=y}}\n|PLACE OF DEATH=[[Nuenen]], [[Netherlands]]\n}}\n{{DEFAULTSORT:Dijkstra, Edsger}}\n[[Category:1930 births]]\n[[Category:2002 deaths]]\n[[Category:Computer pioneers]]\n[[Category:Dutch computer scientists]]\n[[Category:Dutch physicists]]\n[[Category:Eindhoven University of Technology faculty]]\n[[Category:Fellows of the Association for Computing Machinery]]\n[[Category:Fellows of the British Computer Society]]\n[[Category:Formal methods people]]\n[[Category:Leiden University alumni]]\n[[Category:Members of IFIP Working Group 2.1]]\n[[Category:People from Rotterdam]]\n[[Category:Programming language designers]]\n[[Category:Programming language researchers]]\n[[Category:Researchers in distributed computing]]\n[[Category:Software engineers]]\n[[Category:Software engineering researchers]]\n[[Category:Turing Award laureates]]\n[[Category:University of Texas at Austin faculty]]\n\n[[ast:Edsger Dijkstra]]\n[[bn:\u098f\u099f\u09cd\u200c\u09b8\u0996\u09be\u09b0 \u09a1\u09c7\u0987\u0995\u09cd\u200c\u09b8\u09cd\u099f\u09cd\u09b0\u09be]]\n[[bs:Edsger Dijkstra]]\n[[bg:\u0415\u0434\u0441\u0445\u0435\u0440 \u0414\u0435\u0439\u043a\u0441\u0442\u0440\u0430]]\n[[ca:Edsger Dijkstra]]\n[[cs:Edsger Dijkstra]]\n[[da:Edsger Dijkstra]]\n[[de:Edsger Wybe Dijkstra]]\n[[et:Edsger Wybe Dijkstra]]\n[[el:\u0388\u03bd\u03c4\u03c3\u03b3\u03ba\u03b5\u03c1 \u039d\u03c4\u03ac\u03b9\u03ba\u03c3\u03c4\u03c1\u03b1]]\n[[es:Edsger Dijkstra]]\n[[eo:Edsger Dijkstra]]\n[[fa:\u0627\u062f\u0633\u062e\u0631 \u062f\u06cc\u06a9\u0633\u062a\u0631\u0627]]\n[[fr:Edsger Dijkstra]]\n[[ga:Edsger Dijkstra]]\n[[ko:\uc5d0\uce20\ud5c8\ub974 \ub370\uc774\ud06c\uc2a4\ud2b8\ub77c]]\n[[hr:Edsger Dijkstra]]\n[[id:Edsger Dijkstra]]\n[[it:Edsger Dijkstra]]\n[[he:\u05d0\u05d3\u05e1\u05d7\u05e8 \u05d3\u05d9\u05d9\u05e7\u05e1\u05d8\u05e8\u05d4]]\n[[lb:Edsger W. Dijkstra]]\n[[hu:Edsger Wybe Dijkstra]]\n[[ml:\u0d0e\u0d21\u0d4d\u0d17\u0d7c \u0d21\u0d48\u0d15\u0d4d\u0d38\u0d4d\u0d1f\u0d4d\u0d30\u0d3e]]\n[[mr:\u090f\u0921\u094d\u0938\u0917\u0930 \u0921\u093f\u0915\u094d\u0938\u094d\u091f\u094d\u0930\u093e]]\n[[nl:Edsger Dijkstra]]\n[[ja:\u30a8\u30c9\u30ac\u30fc\u30fb\u30c0\u30a4\u30af\u30b9\u30c8\u30e9]]\n[[no:Edsger Dijkstra]]\n[[pl:Edsger Dijkstra]]\n[[pt:Edsger Dijkstra]]\n[[ro:Edsger Dijkstra]]\n[[ru:\u0414\u0435\u0439\u043a\u0441\u0442\u0440\u0430, \u042d\u0434\u0441\u0433\u0435\u0440 \u0412\u0438\u0431\u0435]]\n[[sk:Edsger Wybe Dijkstra]]\n[[sr:\u0415\u0434\u0441\u0445\u0435\u0440 \u0414\u0430\u0458\u043a\u0441\u0442\u0440\u0430]]\n[[fi:Edsger Dijkstra]]\n[[sv:Edsger Dijkstra]]\n[[tr:Edsger Dijkstra]]\n[[uk:\u0415\u0434\u0441\u0433\u0435\u0440 \u0414\u0435\u0439\u043a\u0441\u0442\u0440\u0430]]\n[[vi:Edsger Dijkstra]]\n[[zh:\u827e\u5179\u683c\u00b7\u8fea\u6770\u65af\u7279\u62c9]]"}],"links":[{"ns":0,"title":"ACM Turing Award"},{"ns":0,"title":"ALGOL"},{"ns":0,"title":"ALGOL 60"},{"ns":0,"title":"Adi Shamir"},{"ns":0,"title":"Adriaan van Wijngaarden"},{"ns":0,"title":"Agile software development"},{"ns":0,"title":"Alan Kay"},{"ns":0,"title":"Alan Perlis"},{"ns":0,"title":"Algorithm"},{"ns":0,"title":"Allen Newell"}],"images":[{"ns":6,"title":"File:Copyright-problem.svg"},{"ns":6,"title":"File:Dijkstra.ogg"},{"ns":6,"title":"File:Edsger Wybe Dijkstra.jpg"},{"ns":6,"title":"File:Speaker Icon.svg"},{"ns":6,"title":"File:Wikiquote-logo-en.svg"}],"categories":[{"ns":14,"title":"Category:1930 births"},{"ns":14,"title":"Category:2002 deaths"},{"ns":14,"title":"Category:All pages needing cleanup"},{"ns":14,"title":"Category:Articles needing cleanup from April 2009"},{"ns":14,"title":"Category:Articles with close paraphrasing from April 2009"},{"ns":14,"title":"Category:Computer pioneers"},{"ns":14,"title":"Category:Dutch computer scientists"},{"ns":14,"title":"Category:Dutch physicists"},{"ns":14,"title":"Category:Eindhoven University of Technology faculty"},{"ns":14,"title":"Category:Fellows of the Association for Computing Machinery"}],"extract":"Edsger Wybe Dijkstra (Dutch pronunciation: [\u02c8\u025btsx\u0259r \u02c8\u028bib\u0259 \u02c8d\u025bikstra] ( ); 11 May 1930 \u2013 6 August 2002) was a Dutch computer scientist. He received the 1972 Turing Award for fundamental contributions to developing programming languages, and was the Schlumberger Centennial Chair of Computer Sciences at The University of Texas at Austin from 1984 until 2000.\nShortly before his death in 2002, he received the ACM PODC Influential Paper Award in distributed computing for his work on self-stabilization of program computation. This annual award was renamed the Dijkstra Prize the following year, in his honor.\n\n\n== Life and work ==\nDijkstra was born in Rotterdam. His father was a chemist who was president of the Dutch Chemical Society; he taught chemistry at a secondary school and was later its superintendent. His mother was a mathematician, but never had a formal job. Dijkstra studied theoretical physics at Leiden University, but quickly realized he was more interested in computer science. Originally employed by the Mathematisch Centrum in Amsterdam, he held a professorship at the Eindhoven University of Technology, worked as a research fellow for Burroughs Corporation in the early 1980s, and later held the Schlumberger Centennial Chair in Computer Sciences at the University of Texas at Austin, in the United States. He retired in 2000.\nAmong his contributions to computer science are a shortest path algorithm, known as Dijkstra's algorithm; the Shunting yard algorithm; the THE multiprogramming system, an important early example of structuring a system as a set of layers; the Banker's algorithm; and the semaphore construct for coordinating multiple processors and programs. Another concept due to Dijkstra in the field of distributed computing is that of self-stabilization \u2013 an alternative way to ensure the reliability of the system. Dijkstra's algorithm is used in SPF, Shortest Path First, which is used in the routing protocols OSPF and IS-IS.\nWhile he had programmed extensively in machine code in the 1950s, he came to the conclusion that in high-level languages frequent use of the GOTO statement was usually symptomatic of poor structure. In 1968 he wrote a private paper \"A Case against the GO TO Statement\", which was then published as a letter in CACM. Editor Niklaus Wirth gave this letter the heading \"Go To Statement Considered Harmful\", which introduced the phrase \"considered harmful\" into computing. Dijkstra's thesis was that departures from linear control flow were clearer if allowed only in disciplined higher-level structures such as the if-then-else statement and the while loop. This methodology was developed into structured programming, the title of his 1972 book, coauthored with C.A.R. Hoare and Ole-Johan Dahl. Dijkstra also strongly opposed the teaching of BASIC.\nDijkstra was known to be a fan of ALGOL 60, and worked on the team that implemented the first compiler for that language. Dijkstra and Jaap Zonneveld, who collaborated on the compiler, agreed not to shave until the project was completed. It was one of the first compilers supporting recursion.\nDijkstra wrote two important papers in 1968, devoted to the structure of a multiprogramming operating system called THE, and to Cooperating Sequential Processes.\nFrom the 1970s, Dijkstra's chief interest was formal verification. The prevailing opinion at the time was that one should first write a program and then provide a mathematical proof of correctness. Dijkstra objected, noting that the resulting proofs are long and cumbersome and give no insight on how the program was developed. An alternative method is program derivation, to \"develop proof and program hand in hand\". One starts with a mathematical specification of what a program is supposed to do and applies mathematical transformations to the specification until it is turned into a program that can be executed. The resulting program is then known to be correct by construction. Much of Dijkstra's later work concerns ways to streamline mathematical argument. In a 2001 interview, he stated a desire for \"elegance\", whereby the correct approach would be to process thoughts mentally, rather than attempt to render them until they are complete. The analogy he made was to contrast the compositional approaches of Mozart and Beethoven.\nDijkstra was one of the early pioneers in the field of distributed computing. In particular, his paper \"Self-stabilizing Systems in Spite of Distributed Control\" started the sub-field of self-stabilization.\nMany of his opinions on computer science and programming have become widespread. For example, he coined the programming phrase \"two or more, use a for\",[citation needed] alluding to the rule of thumb that when you find yourself processing more than one instance of a data structure, it is time to consider encapsulating that logic inside a loop. He was the first to make the claim that programming is so inherently complex that, in order to manage it successfully, programmers need to harness every trick and abstraction possible. When expressing the abstract nature of computer science, he wrote\nThe job [of operating or using a computer] was actually beyond the electronic technology of the day, and, as a result, the question of how to get and keep the physical equipment more or less in working condition became in the early days the all-overriding concern. As a result, the topic became \u2014primarily in the USA\u2014 prematurely known as \"computer science\" \u2014which, actually is like referring to surgery as \"knife science\"\u2014 and it was firmly implanted in people's minds that computing science is about machines and their peripheral equipment. Quod non [Latin: \"Which is not true\"].\nHe died in Nuenen on 6 August 2002 after a long struggle with cancer. The following year, the ACM (Association for Computing Machinery) PODC Influential Paper Award in distributed computing was renamed the Dijkstra Prize in his honor.\n\n\n== EWDs and writing by hand ==\nDijkstra was known for his habit of carefully composing manuscripts with his fountain pen. The manuscripts are called EWDs, since Dijkstra numbered them with EWD, his initials, as a prefix. According to Dijkstra himself, the EWDs started when he moved from the Mathematical Centre in Amsterdam to the Eindhoven University of Technology (then Technische Hogeschool Eindhoven). After going to Eindhoven, Dijkstra experienced a writer's block for more than a year. Looking closely at himself he realized that if he wrote about things they would appreciate at the MC in Amsterdam his colleagues in Eindhoven would not understand; if he wrote about things they would like in Eindhoven, his former colleagues in Amsterdam would look down on him. He then decided to write only for himself, and in this way the EWDs were born. Dijkstra would distribute photocopies of a new EWD among his colleagues. Many recipients photocopied and forwarded their copies, so the EWDs spread throughout the international computer science community. The topics were computer science and mathematics, and included trip reports, letters, and speeches. More than 1300 EWDs have been scanned, with a growing number transcribed to facilitate search, and are available online at the Dijkstra archive of the University of Texas.\nOne of Dijkstra's sidelines was serving as chairman of the board of the fictional Mathematics Inc., a company that he imagined having commercialized the production of mathematical theorems in the same way that software companies had commercialized the production of computer programs. He invented a number of activities and challenges of Mathematics Inc. and documented them in several papers in the EWD series. The imaginary company had produced a proof of the Riemann Hypothesis but then had great difficulties collecting royalties from mathematicians who had proved results assuming the Riemann Hypothesis. The proof itself was a trade secret. Many of the company's proofs were rushed out the door and then much of the company's effort had to be spent on maintenance. A more successful effort was the Standard Proof for Pythagoras' Theorem, that replaced the more than 100 incompatible existing proofs. Dijkstra described Mathematics Inc. as \"the most exciting and most miserable business ever conceived\". EWD 443 (1974) describes his fictional company as having over 75 percent of the world's market share.\n\nDespite having invented much of the technology of software, Dijkstra eschewed the use of computers in his own work for many decades. Almost all EWDs appearing after 1972 were hand-written. When lecturing, he would write proofs in chalk on a blackboard rather than using overhead foils. Even after he acquired an Apple Macintosh computer, he used it only for email and for browsing the World Wide Web.\n\n\n== Awards and honors ==\nAmong Dijkstra's awards and honors are:\nMember of the Royal Netherlands Academy of Arts and Sciences (1971)\nDistinguished Fellow of the British Computer Society (1971)\nThe Association for Computing Machinery's A.M. Turing Award (1972)\nHarry H. Goode Memorial Award from the IEEE Computer Society (1974).\nForeign Honorary Member of the American Academy of Arts and Sciences (1975)\nDoctor of Science Honoris Causa from the Queen's University Belfast (1976)\nComputer Pioneer Charter Recipient from the IEEE Computer Society (1982)\nFellow of the Association for Computing Machinery (1994)\nHonorary doctorate from the Athens University of Economics & Business, Greece (2001).\nComp and Communications Prize (NEC Foundation), Japan (2002)\n\n\n== See also ==\nDijkstra's algorithm\nDining philosophers problem\nGuarded Command Language and Predicate transformer semantics\nSemaphore\nSmoothsort\nOn the Cruelty of Really Teaching Computer Science\n\n\n== References ==\n\n\n== External links ==\nE. W. Dijkstra Archive\nHow do we tell truths that might hurt? (1975) by Edsger W. Dijkstra\nAn Interview with Edsger W. Dijkstra OH 330 (2001) by Philip L. Frana\nEdsger Wybe Dijkstra (1930\u20132002): A Portrait of a Genius (2002) by Krzysztof R. Apt\nIn Memoriam Edsger Wybe Dijkstra (1930-2002) (2002) by Mario Szegedy\nEdsger Wybe Dijkstra (\u042d\u0434\u0441\u0433\u0435\u0440 \u0414\u0435\u0439\u043a\u0441\u0442\u0440\u0430), photos of Edsger Wybe Dijkstra"}}},"query-continue":{"links":{"plcontinue":"10018|0|American Academy of Arts and Sciences"},"categories":{"clcontinue":"10018|Fellows of the British Computer Society"}}}
@@ -27,6 +27,16 @@ describe Wikipedia::Client, ".find page (mocked)" do
27
27
  @page.title.should == 'Edsger W. Dijkstra'
28
28
  end
29
29
 
30
+ it "should return a page with the correct URL" do
31
+ @page = @client.find('Edsger_Dijkstra')
32
+ @page.fullurl.should == 'http://en.wikipedia.org/wiki/Edsger_W._Dijkstra'
33
+ end
34
+
35
+ it "should return a page with the correct plain text extract" do
36
+ @page = @client.find('Edsger_Dijkstra')
37
+ @page.text.should start_with 'Edsger Wybe Dijkstra (Dutch pronunciation: '
38
+ end
39
+
30
40
  it "should return a page with categories" do
31
41
  @page = @client.find('Edsger_Dijkstra')
32
42
  @page.categories.should == ["Category:1930 births", "Category:2002 deaths", "Category:All pages needing cleanup", "Category:Articles needing cleanup from April 2009", "Category:Articles with close paraphrasing from April 2009", "Category:Computer pioneers", "Category:Dutch computer scientists", "Category:Dutch physicists", "Category:Eindhoven University of Technology faculty", "Category:Fellows of the Association for Computing Machinery"]
@@ -103,7 +113,7 @@ describe Wikipedia::Client, ".find page (Edsger_Dijkstra)" do
103
113
  it "should collect the image urls" do
104
114
  @client.follow_redirects = true
105
115
  @page = @client.find('Edsger Dijkstra')
106
- @page.image_urls.should == ["https://upload.wikimedia.org/wikipedia/commons/c/c9/Edsger_Dijkstra_1994.jpg", "https://upload.wikimedia.org/wikipedia/commons/d/d9/Edsger_Wybe_Dijkstra.jpg"]
116
+ @page.image_urls.should == ["https://upload.wikimedia.org/wikipedia/en/4/4a/Commons-logo.svg", "https://upload.wikimedia.org/wikipedia/commons/c/c9/Edsger_Dijkstra_1994.jpg", "https://upload.wikimedia.org/wikipedia/commons/d/d9/Edsger_Wybe_Dijkstra.jpg", "https://upload.wikimedia.org/wikipedia/en/4/48/Folder_Hexagonal_Icon.svg", "https://upload.wikimedia.org/wikipedia/commons/2/21/Speaker_Icon.svg", "https://upload.wikimedia.org/wikipedia/commons/f/fa/Wikiquote-logo.svg"]
107
117
  end
108
118
  end
109
119
 
@@ -125,3 +135,15 @@ describe Wikipedia::Client, ".find page (Rails) at jp" do
125
135
  @page.should_not be_redirect
126
136
  end
127
137
  end
138
+
139
+ describe Wikipedia::Client, ".find random page" do
140
+ before(:each) do
141
+ @client = Wikipedia::Client.new
142
+ end
143
+
144
+ it "should get random pages" do
145
+ @page1 = @client.find_random().title
146
+ @page2 = @client.find_random().title
147
+ @page1.should_not == @page2
148
+ end
149
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wikipedia-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cyril David
@@ -93,6 +93,7 @@ extra_rdoc_files:
93
93
  - README.textile
94
94
  files:
95
95
  - ".gitignore"
96
+ - ".travis.yml"
96
97
  - Gemfile
97
98
  - Gemfile.lock
98
99
  - MIT-LICENSE
@@ -169,7 +170,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
169
170
  version: '0'
170
171
  requirements: []
171
172
  rubyforge_project:
172
- rubygems_version: 2.4.5
173
+ rubygems_version: 2.4.6
173
174
  signing_key:
174
175
  specification_version: 3
175
176
  summary: Ruby client for the Wikipedia API