Bestand:Algol&Fortran Family By Skippppp.svg

Pagina-inhoud wordt niet ondersteund in andere talen.
Uit Wikipedia, de vrije encyclopedie

Oorspronkelijk bestand(SVG-bestand, nominaal 688 × 741 pixels, bestandsgrootte: 80 kB)


Beschrijving

Beschrijving
English: A timeline and family tree of the Algol, Fortran, and COBOL programming language families.
Datum
Bron Shazz, Borkowsk, User:Qwertyus
Auteur Skippppp,Shazz,Borkowsk, User:Qwertyus
Andere versies https://commons.wikimedia.org/w/index.php?title=File:Algol%26Fortran_family-by-Borkowski.svg

Tikz source code

% Note: Run processed DVI file with dvisvgm and option --no-fonts, or short -n
\documentclass[tikz]{standalone}
\usetikzlibrary{calc}
\usepackage{xcolor}

\colorlet{bg1}{blue!10}

\begin{document}
\begin{tikzpicture}[scale=0.35, thick]

% Used to rescale the later decades.
\ExplSyntaxOn
\long\def\y#1#2{
	\str_case_e:nnF {#1#2} {
		{00} {100}
		{02} {101}
		{03} {101}
		{08} {104}
		{10} {105}
		{11} {106}
		{12} {107}
	}{#1#2}
}

% Fancy tikz to find the midpoint of 2 anchors.
\long\def\findmid#1#2#3{
	($(#2)!#1!(#3)$)
}
\ExplSyntaxOff

% Background colours 
\fill[bg1]   (-27, \y51) rectangle (25, \y60);
\fill[white] (-27, \y60) rectangle (25, \y70);
\fill[bg1]   (-27, \y70) rectangle (25, \y80);
\fill[white] (-27, \y80) rectangle (25, \y90);
\fill[bg1]   (-27, \y90) rectangle (25, \y00);
\fill[white] (-27, \y00) rectangle (25, \y10);
\fill[bg1]   (-27, \y10) rectangle (25, \y12);

% Dates
\node[anchor=south west, opacity=0.5] at (-27, \y51) {\large 1950's};
\foreach \date in {60, 70, ..., 90} {
	\node[anchor=south west, opacity=0.5] at (-27, \expandafter\y\date) {\large 19\date's};
}
\node[anchor=south west, opacity=0.5] at (-27, \y00) {\large 2000's};
\node[anchor=south west, opacity=0.5] at (-27, \y10) {\large 2010's};

% Nodes with linebreaks should have center alignment
\tikzset{every path/.append style={align=center}}

% All the nodes. 
% I have tried to make it somewhat organised, but it's still a mess.
\node (speedcoding) at (-10, \y53) {Speedcoding (1953)};
\node (fortran 1)   at (-10, \y55) {Fortran (1955)};
\node (flowmatic)   at ( 20, \y55) {\textsc{flow-matic}\\(1955)};
\node (algol 58)    at ( 00, \y58) {Algol (1958)};
\node (cobol 60)    at ( 20, \y60) {\textsc{cobol}\\(1960)};
\node (fortran 2)   at (-15, \y58) {Fortran II};
\node (algol 60)    at ( 00, \y60) {Algol 60};
\node (simula 62)   at ( 10, \y62) {Simula\\(1962)};
\node (cpl)         at ( 05, \y63) {\textsc{cpl}\\(1963)};
\node (basic)       at (-20, \y64) {\textsc{basic}\\(1964)};
\node (fortran 4)   at (-15, \y66) {Fortran IV\\(1966)};
\node (bcpl)        at ( 05, \y66) {\textsc{bcpl}\\(1966)};
\node (simula 67)   at ( 10, \y67) {Simula 67};
\node (algol 68)    at ( 00, \y68) {Algol 68};
\node (pascal)      at (-05, \y70) {Pascal\\(1970)};
\node (smalltalk)   at ( 15, \y72) {Smalltalk\\(1972)};
\node (c72)         at ( 05, \y72) {C\\(1972)};
\node (fortran 77)  at (-15, \y77) {Fortran 77};
\node (modula 2)    at (-10, \y78) {Modula-2\\(1978)};
\node (modula 3)    at (-10, \y88) {Modula-3\\(1988)};
\node (ada 83)      at ( 00, \y83) {Ada\\(1983)};
\node (cpp83)       at ( 10, \y83) {C++\\(1983)};
\node (cobol 85)    at ( 20, \y95) {\textsc{cobol} 85};
\node (c89)         at ( 05, \y89) {C 89};
\node (fortran 90)  at (-15, \y90) {Fortran 90};
\node (vba)         at (-20, \y91) {Visual Basic\\(1991)};
\node (fortran 95)  at (-15, \y95) {Fortran 95};
\node (ada 95)      at ( 00, \y95) {Ada 95};
\node (delphi)      at (-05, \y95) {Delphi\\(1995)};
\node (cpp98)       at ( 10, \y98) {C++98};
\node (c99)         at ( 05, \y99) {C 99};
\node (cobol 02)    at ( 20, \y02) {\textsc{cobol} 2002};
\node (fortran 03)  at (-15, \y03) {Fortran 03};
\node (fortran 08)  at (-15, \y08) {Fortran 08};
\node (c11)         at ( 05, \y11) {C 11};
\node (cpp11)       at ( 10, \y11) {C++ 11};

% Add 0.5 because there is no good way to route connections otherwise
\node (pl 1) at (-10, \y64+0.5) {\textsc{pl/i} (1964)};

% All the connections should have rounded corners.
\tikzset{every path/.append style={rounded corners}}

% The PL/I mess
\draw (fortran 2) -| \findmid{0.2}{pl 1.south}{pl 1.south west}; 
\draw (algol 58)  -| \findmid{0.2}{pl 1.south}{pl 1.south east};
\draw (cobol 60)       |- (10.4, \y64+0.5)
      ( 9.6, \y64+0.5) -- ( 5.4, \y64+0.5)
      ( 4.6, \y64+0.5) -- ( 0.4, \y64+0.5)
      (-0.4, \y64+0.5) -- (-4.6, \y64+0.5)
      (-5.4, \y64+0.5) -- (pl 1.east);

% The obvious tree branches
\draw (speedcoding)
   -- (fortran 1)
   -| (fortran 2)
   -- (fortran 4)
   -- (fortran 77)
   -- (fortran 90)
   -- (fortran 95)
   -- (fortran 03)
   -- (fortran 08);
       
\draw (fortran 1)
   -| (algol 58)
   -- (algol 60)
   -| (cpl)
   -- (bcpl)
   -- (c72)
   -- (c89)
   -- (c99)
   -- (c11);
       
\draw (algol 60)
   -| (simula 62)
   -- (simula 67)
   -- (cpp83)
   -- (cpp98)
   -- (cpp11);
       
\draw (fortran 2)
   -| (basic) 
   -- (vba);
     
\draw (algol 60)
   -| (pascal)
   -| (modula 2)
   -- (modula 3);
     
\draw (algol 60)
   -| (algol 68)
   -- (ada 83)
   -- (ada 95);
       
\draw (flowmatic)
   -- (cobol 60)
   -- (cobol 85)
   -- (cobol 02);
       
\draw (pascal)    -- (delphi);
\draw (simula 67) -| (smalltalk);

% Random cross-connections.
\draw (c72) -| \findmid{0.5}{c72}{cpp83} |- (cpp83);
\draw (c89) -| \findmid{0.5}{c89}{cpp98} |- (cpp98);
\draw (c99) -| \findmid{0.5}{c99}{cpp11} |- (cpp11);
\draw (algol 68) -| \findmid{0.5}{algol 68}{c72} |- (c72);
\draw (cpp98) |- (cobol 02);
\draw (smalltalk) |- (cobol 02);

\end{tikzpicture}
\end{document}

Licentie

Ik, de auteursrechthebbende van dit werk, maak het hierbij onder de volgende licentie beschikbaar:
w:nl:Creative Commons
naamsvermelding Gelijk delen
Dit bestand is gelicenseerd onder de Creative Commons Naamsvermelding-GelijkDelen 4.0 Internationaal licentie.
De gebruiker mag:
  • Delen – het werk kopiëren, verspreiden en doorgeven
  • Remixen – afgeleide werken maken
Onder de volgende voorwaarden:
  • naamsvermelding – U moet op een gepaste manier aan naamsvermelding doen, een link naar de licentie geven, en aangeven of er wijzigingen in het werk zijn aangebracht. U mag dit op elke redelijke manier doen, maar niet zodanig dat de indruk wordt gewekt dat de licentiegever instemt met uw werk of uw gebruik van zijn werk.
  • Gelijk delen – Als u het werk heeft geremixt, veranderd, of erop heeft voortgebouwd, moet u het gewijzigde materiaal verspreiden onder dezelfde licentie als het oorspronkelijke werk, of een daarmee compatibele licentie.

Bijschriften

Beschrijf in één regel wat dit bestand voorstelt
Genealogy tree of programming languages - Algol & Fortran family

Items getoond in dit bestand

beeldt af

image/svg+xml

Bestandsgeschiedenis

Klik op een datum/tijd om het bestand te zien zoals het destijds was.

Datum/tijdMiniatuurAfmetingenGebruikerOpmerking
huidige versie10 mei 2024 04:05Miniatuurafbeelding voor de versie van 10 mei 2024 04:05688 × 741 (80 kB)Speravirupdate after typo fix by User:ReadOnlyAccount in edit 872821271]]
6 mrt 2024 23:50Miniatuurafbeelding voor de versie van 6 mrt 2024 23:50645 × 695 (80 kB)SkipppppUploaded own work with UploadWizard

Geen enkele pagina gebruikt dit bestand.

Globaal bestandsgebruik

De volgende andere wiki's gebruiken dit bestand:

  • Gebruikt op en.wikipedia.org

Metadata