• Keine Ergebnisse gefunden

Literate programming zur dokumentation in der systemadministration

N/A
N/A
Protected

Academic year: 2022

Aktie "Literate programming zur dokumentation in der systemadministration"

Copied!
13
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

T"*!.3*!$5.)6.377"(6$G:.$I)C:7!(*3*")($

"($@!.$,'0*!73@7"("0*.3*")(

D%#A!"%,(%9 a8(O=$%9'%4$N$7$%!D%$28<%0 j3A=&$)$!KN9!C#9$4G23K$4:#44%04G23K$%0

J0#F%94#$)$44$93,%!YS MMeRS!V#%&%K%&<

($%44(%9h:#:#L=0#5H#%&%K%&<L<%

>O0*.31*¥! ̀#%!B^4$%(3<(#0#4$93$#80!A300!3=K!)20&#G2%!C%#4%!F80!b#$%93$%!@985 '93((#0'!O98K#$#%9%0!:#%!<#%!B8K$:39%%0$:#GA&=0'm!!J(K344%0<%W!&%4H39%!=0<!#0 j8&'%!F%94$)0<&#G2%!B^4$%(<8A=(%0$3$#80L!1(!¥#0H&#GA!3=K!<#%!c8&&%!<%9!̀8A=5 (%0$3$#80!48:82&!#0!<%9!B8K$:39%%0$:#GA&=0'!3&4!3=G2!<%9!!B^4$%(3<(#0#4$93$#80 H%$93G2$%$!<#%4%9!V%#$93'!3(!V%#4O#%&!%#0%9!j3A=&$)$!!<%9!J0#F%94#$)$!V#%&%K%&<!<#%

I0K89<%9=0'%0W!<#%!30!%#0%!B^4$%(3<(#0#4$93$#80!'%4$%&&$!:%9<%0W!:%&G2%!C%9A5 7%='%!<3KN9!7=9!6%9KN'=0'!4$%2%0!=0<!:#%!b#$%93$%!@98'93((#0'!2%&K%0!A300W!<#%5 4%0!I0K89<%9=0'%0!H%44%9!'%9%G2$!7=!:%9<%0L

F$N"(4J2.:(6

̀#%4%9!I=K43$7!48&&!<%0!V%$9#%H!F80!10K89(3$#8044^4$%(%0!H%$93G2$%0W!'%03=%9!<#%!̀85 A=(%0$3$#80!<%44%&H%0L!J(!<#%!̀8()0%!0#G2$!3=4=K%90!7=!&344%0W!H%4G29)0A%!#G2!(#G2 3=K!<%0!B^4$%(H%$9#%H!#0!J0#F%94#$)$%0W!#0!<%0%0!H%480<%9%9!¥30<&=0'4H%<39K!7=!H%4$%5 2%0!4G2%#0$L!1(!U%'%043$7!7=!̀%'%0239<!%$!3&L!ǹ%RYo!:#9<!<#%!B^4$%(3<(#0#4$93$#80!%#5 0%9!̀%7%0$93&%!7=!U9=0<%!'%&%'$!;j3A=&$)$W!j3G2H%9%#G2!8<%9!104$#$=$?!=0<!0#G2$!<#%!%#0%4 7%0$93&%0!¥8G24G2=&9%G2%07%0$9=(4L

̀%9!2#%9!'%7%#'$%!E0$:#GA&=0'45!=0<!̀8A=(%0$3$#8043043$7!KN9!<#%!B^4$%(3<(#0#4$93$#5 80!'%2$!3=K!%#0%!%$:3!RS!g329%!:)29%0<%!"93<#$#80!7=9NGA!=0<!:=9<%!%94$(3&4!YTTR!#0

%#0%9!̀#44%9$3$#80!F89'%4$%&&$!n-9TRoL!B%#$<%(!:#9<!#0!<%9!j3A=&$)$!7=4)$7&#G2!7=(!V%5

$9#%H!%#0%4!2%$%98'%0%0!r%$7:%9A4W!<34!(#$!9=0<!YTT!a&#%0$4!<#%!U9.,%089<0=0'!%#0%4 (#$$%&4$)0<#4G2%0!J0$%90%2(%04!23$W!3=G2!I0:%0<=0'448K$:39%!%0$:#GA%&$L!jN9!3&&!<#%5 4%!I=K'3H%0 !:#9<!<#%!2#%9 !F897=4$%&&%0<% !̀8A=(%0$3$#804(%$28<% !4%#$ !g329%0 !30'%5 :30<$L!q20%!%#0%!̀8A=(%0$3$#804<#47#O&#0!%94G2%#0$!=04!%#0%!48&G2%!I=K'3H%!0#G2$!(#$

<%9!0.$#'%0!EKK#7#%07!=0<!B#G2%92%#$!&.4H39L

(2)

H$,'0*!73@7"("0*.3*")($3($!"(!.$S3C:#*P*

HVF$I!.$%0*<W:0*3(@

̀#% ! I=K'3H%0 ! %#0%9 ! B^4$%(3<(#0#4$93$#80 ! 4#0< ! NH%9 ! <#% ! g329% ! <#%4%&H%0 ! '%H&#%H%0 n¥%̲̲W!BL!Yo?W!3H%9!:8!K9N2%9!0=9!:%0#'%!'98,%!B^4$%(%!8<%9!3=G2!0=9!%#07%&0%!̀#%04$%

H%$9%=$!:%9<%0!(=44$%0W!:#9<!%#0!I<(#0#4$93$89!2%=$%!(#$!%#0%9!6#%&732&!F%94G2#%<%0%9

¥39<:39%5@&3$$K89(%0W!V%$9#%H44^4$%(% !=0<!̀#%04$%0!A80K980$#%9$L!̀37=!A8(($!%#0%

r=$7%94G23K$W!<#%!7=(!"%#&!=(K30'9%#G2%!E9K329=0'%0!(#$!a8(O=$%90!=0<!<%9%0!6%95 :%0<=0'!H%4#$7%0!=0<!<%(%0$4O9%G2%0<!%#'%0%!6894$%&&=0'%0!<3F80!23H%0W!:#%!B^4$%5 (%!K=0A$#80#%9%0!48&&%0L!V%#<%4!23$!7=9!j8&'%W!<344!3&$H%:)29$%!6%9:3&$=0'4(%$28<%0 NH%9<3G2$!=0<!''KL!30'%O344$!:%9<%0!(N44%0L

1(!6%9'&%#G2!7=!%#0%(!J0$%90%2(%0W!:8!<#%!1"!'98,%0!E#0K&=44!3=K!U%4G2)K$4O987%44%

=0<!<3(#$!<%0!E9K8&'!<%4!J0$%90%2(%04!23$!;7=9!c8&&%!<%9!1"!4#%2%!H4O:L!nV3̲̲o?W!'%5 4$3&$%$!4#G2!<#%!B^4$%(3<(#0#4$93$#80!#0!%#0%9!j3A=&$)$!=0'&%#G2!4G2:#%9#'%9L!̀#%!j3G2H%5 9%#G2%!A.00%0!:%#$'%2%0<!3=$808(!3'#%9%0!;3=G2!K#0307#%&&?!=0<!(N44%0!4#G2!<%(7=K8&5 '%!0#G2$!7:30'4&)=K#'!30!<#%!¥39<5!=0<!B8K$:39%5B$30<39<4!23&$%0W!<#%!F80!%#0%9!B^4$%5 (3<(#0#4$93$#80!%939H%#$%$!:%9<%0L!̀%9!I<(#0#4$93$89!:#9<!7L!"L!0=9!3&4!E9KN&&=0'4'%2#&5 K%!'%4%2%0W!<%9!<#%!P%:%#&#'%0!CN04G2%!<%9!V%9%#G2%!7=!%9KN&&%0!23$W!=03H2)0'#'!F80 i:%GA(),#'A%#$W!D3G2H39A%#$!=0<!I=K:30<L!V%480<%94!<%=$&#G2!:#9<!<#%4!H%#!<%9!V%5 4G23KK=0'L!"98$7!%0$4O9%G2%0<%9!V%93$=0'!:%9<%0!U%9)$%!'%A3=K$W!<#%!4#G2!0#G2$!43=H%9

#0!<#%!F89230<%0%!r%$7:%9A#0K934$9=A$=9!%#0H#0<%0!&344%0!=0<!<%(7=K8&'%!0=9!%#0'%5 4G29)0A$!3<(#0#4$9#%9$!=0<!F%9:%0<%$!:%9<%0!A.00%0L!E#0!7:%#$%4!V%#4O#%&!#4$!E0$:#GA5

&=0'!F80!B8K$:39%W!820%!<344!<%9!I=K$93''%H%9!H%9%#$!#4$W!<#%!<3KN9!H%0.$#'$%0!D#$$%&!H%5 9%#$!7=!4$%&&%0L

I&4!j8&'%!23$!4#G2!0#G2$!0=9!30!<%9!2#%9!H%4O98G2%0%0!j3A=&$)$!#0!<%0!&%$7$%0!g329%0!%$:3

#(!V%9%#G2!(8H#&%9!U%9)$%!;b3O$8O4W!"3H&%$4?!=0<!̀9=GA%9!%#0%!6#%&732&!=0$%94G2#%<&#5 G2%9!¥%94$%&&%9!=0<!D8<%&&%!30'%43((%&$L!̀#%4!'#&$!%H%048!KN9!<#%!F%9:%0<%$%0!V%5

$9#%H44^4$%(%z ! %4 ! A8((%0 ! 3=K ! <%0 ! ̀%4A$8O4 ! F%94G2#%<%0% ! 6%94#80%0 ! F80 ! D#G9848K$

C#0<8:4!7=(!E#043$7!;y@!=0<!]W!3=G2!Z?W!%#07%&0%!V%9%#G2%!0=$7%0!%#0%!8<%9!(%29%9%

UrJtb#0=f5̀#4$9#H=$#80%0!8<%9!6%94#80%0!F80!D3G!qB!yL!̀%9!U98,$%#&!<%9!104$3&&3$#85 0%0!:#9<!7%0$93&!H%$9%=$W!KN9!<#%!NH9#'%0!F%94=G2%0!<#%!P%:%#&#'%0!r=$7%9!<#%4!#0!E#'%09%5 '#%L!

̀#%!I=K'3H%0W!<#%!<#%!B^4$%(3<(#0#4$93$#80!<%9!H%$93G2$%$%0!j3A=&$)$!7=!H%:)&$#'%0!23$W

&344%0!4#G2!3=4!B#G2$!<%9!r=$7%9!7=!K8&'%0<%(!9=<#(%0$)9%0!j=0A$#804(8<%&&!;4L!<37=

n¥%̲̲W!BL!RTZQRRRo?!7=43((%0K344%0!;3=K'%KN29$!#0!3H4$%#'%0<%9!c%#2%0K8&'%!<%9!¥)=5 K#'A%#$?m

  j%2&%9H%2%H=0'!H%#!¥39<5!=0<!B8K$:39%

  104$3&&3$#80!0%=%9!B^4$%(%

  B^4$%((303'%(%0$!;6%9:3&$=0'!F80!IGG8=0$4W!̀9=GA%99%G2$%0!=0<!B$893'%?

  B8K$:39%5̀%O&8^(%0$!;104$3&&3$#80!=0<!JO<3$%?

  V%4G23KK=0'!F80!¥39<5!=0<!B8K$:39%

(3)

  c%O393$=9!F80!¥39<:39%

  E0$489'=0'!F80!I&$4^4$%(%0!43($!̀%#0F%0$39#4#%9=0'   10F%0$39#4#%9=0'

  V%93$=0'!H%#!H%480<%9%0!I04G23KK=0'%0!=0<!@98P%A$%0   V%9%#$4$%&&=0'!4O%7#%&&%9!̀#%04$%!;H4O:L!EF3&=3$#804O&3$$K89(?

  E0$:#GA&=0'!F80!B8K$:39%

1(!¥#0$%9'9=0<!H%$9%#H$!<#%!j3A=&$)$!7=9!V%:)&$#'=0'!<#%4%9!I=K'3H%0!=L!3L!%#0%!c%#2%

F80!B%9F%90!;3&4!¥39<:39%!=0<!F#9$=3&#4#%9$?W!<#%!K8&'%0<%!̀#%04$%!H%9%#$!4$%&&%0m   6#9$=3&#4#%9=0'!F80!B^4$%(%0

  V3GA=O5B%9F#G%!KN9!B%9F%9

  a8(O=$#0'5B%9F%9!KN9!9%G2%0#0$%04#F%!I=K'3H%0

  (%29%9%!r%$7:%9A4O%#G2%9!;7=4)$7&#G2!7=(!Ì5B$893'%W!<%9!<=9G2!<34!¥8G25 4G2=&9%G2%07%0$9=(!30'%H8$%0!:#9<?

  (%29%9%!C%H4%9F%9!=0<!C#A#4

  6%94#80#%9=0'44%9F%9!;D%9G=9#3&W!U#$W!B=HF%94#80?

  10K89(3$#8044^4$%(%!;E#'%0%0$:#GA&=0'%0?!KN9!<34!@9NK=0'43($

  D80#$89#0'5@&3$$K89(!;pH%9:3G2=0'!F80!JB64W!B%9F%90W!̀#%04$%0W!I=,%0305 H#0<=0'%0?

  "98=H&%5"#GA%$5B^4$%(!(#$!30'%4G2&844%0%(!C#A#

I0'%4#G2$4 !<#%4%9 !F#%&K)&$#'%0 !I=K'3H%0 !4$%&&$ !%#0%!43G2'%9%G2$% !̀8A=(%0$3$#80!%#0%

'98,%!¥%93=4K89<%9=0'!<39L!I0<%9%!j3A=&$)$%0!23H%0!4#G2!<#%4%9!%0$:%<%9!'39!0#G2$!'%5 4$%&&$!=0<!H%$9%#H%0!O%94803&#0$%04#F%!=0<!K%2&%930K)&&#'%!|"=904G2=25!I<(#0#4$93$#80{

8<%9!4#%!A8(H#0#%9%0!(%29%9%!̀8A=(%0$3$#8044^4$%(%!=0<!5K89(%0m!b#4$%0!#0!"3H%&&%05 A3&A=&3$#80%0W ! C#A#4W ! qKK#G%5̀8A=(%0$%W ! 3H%9 ! 3=G2 ! I=4<9=GA% ! =0< ! r8$#77%$$%&L ! 1(

'N04$#'4$%0!j3&&!A300!3=K!c=0H88A4!8L!lL!7=9NGA!'%'9#KK%0!:%9<%0W!<#%!NH&#G2%!I9H%#$45 ')0'%!<8A=(%0$#%9%0!=0<!0%=%0!D#$39H%#$%90!<%9!B^4$%(3<(#0#4$93$#80!3&4!%#0KN29%0<%4 D3$%9#3&!<#%0%0!A.00%0L

HVH$N"(!$03126!.!12*!$I)C:7!(*3*")(

C%&G2%0 ! -9#$%9#%0 ! (=44 ! %#0% ! 43G2'%9%G2$% ! =0< ! %KK#7#%0$% ! ̀8A=(%0$3$#80 ! '%0N'%0>

r3G2!U3=4!#4$!<%9!NH%9'%89<0%$%!i:%GA!%#0%9!̀8A=(%0$3$#80!C#%<%9K#0<%0!=0<!r=$75 H39(3G2%0!F80!̀8A=(%0$%0!=0<!10K89(3$#80%0!nU3TSW!BL!RRoL!I=KH3=%0<!<393=K!(=44 4#%!K8&'%0<%!"%#&O987%44%!=0$%94$N$7%0m

  B#G2%94$%&&%0!<%4!&3=K%0<%0!V%$9#%H4!<=9G2!B$3$=4NH%9:3G2=0'!=0<!<#%!V%230<5

&=0'!F80!I=4032(%K)&&%0L!̀37=!'%2.9%0!j%2&%9H%2%H=0'!3=K!¥39<5!=0<!B8K$5 :39%4%#$%!48:#%!<#%!c%O393$=9!F80!¥39<:39%L

  I=4KN29%0 ! F80 ! c8=$#0%39H%#$%0 ! :#% ! B^4$%((303'%(%0$W ! V%4G23KK=0' ! F80

¥39<5!=0<!B8K$:39%W!<#%!104$3&&3$#80!0%=%9!B^4$%(%W!<34!B8K$:39%5̀%O&8^(%0$W

(4)

<#%!E0$489'=0'!F80!I&$4^4$%(%0!=0<!<%9%0!̀%#0F%0$39#4#%9=0'!48:#%!<#%!105 F%0$39#4#%9=0'!F89230<%0%9!¥39<5!=0<!B8K$:39%L

  I=K$93'439H%#$%0W!H4O:L!<#%!E0$:#GA&=0'!F80!B8K$:39%W!<34!V%9%#$4$%&&%0!4O%7#5

%&&%9!̀#%04$%!=0<!<#%!V%93$=0'!H%#!H%480<%9%0!I04G23KK=0'%0!=0<!@98P%A$%0L   V%$9#%H4&%0A=0'43=K'3H%0W!<#%!E94$%&&=0'!F80!B$3$#4$#A%0!8<%9!<#%!@&30=0'!4$935

$%'#4G2%9!10F%4$#$#80%0L

C%&G2%!K89(3&%0!I0K89<%9=0'%0!&%#$%0!4#G2!<393=4!3H>!C34!23$!4#G2!#0!<%9!@93f#4!H%5 :)29$>!10!<%9!j3G2&#$%93$=9!K#0<%0!4#G2!F#%&%!V%4G29%#H=0'%0W!M#!!%#07%&0%!"%#&3=K'3H%0

<%4!B^4$%((303'%(%0$4!7=!H%230<%&0!4#0<L!D%#4$!230<%&$!4#G2!<3H%#!=(!$%G20#4G2%!V%5 4G29%#H=0'%0!%#0%4!B^4$%(4!8<%9!̀#%04$%4W!%9')07$!<=9G2!%#0%!%0$4O9%G2%0<%!I0&%#$=0' 7=9!E#09#G2$=0'!;4#%2%!<37=!H4O:L!nIbT]oW!nV3TSoW!nV=TXoW!n-8RMoW!n@CRYoW!n@8RMo?L!E4 :#9<!P%<8G2!0#G2$!<393=K!%#0'%'30'%0W!:34!<%9!B^4$%(3<(#0#4$93$89!H%#(!3&&$)'&#G2%0 J('30'!3=K!:%&G2%!C%#4%!<8A=(%0$#%9%0!48&&$%L!E#0%!I=4032(%!4$%&&$!<%9!V%#$93'!F80 b30'4$80!KN9!<#%!JBEr1y!BO%G#3&!10$%9%4$!U98=O!K89!B^43<(#04!;b1BI?!<39L!E9!K89(=5

&#%9$!#0!nb3TMo!3=4!B#G2$!%#0%4!B^4$%(3<(#0#4$93$894!F#%9!E#'%04G23K$%0W!<#%!%#0%!'=$%

̀8A=(%0$3$#80!23H%0!48&&$%m

RL ;0!4:#m!B#%!%0$2)&$!<#%!H%0.$#'$%0!10K89(3$#80%0L

YL >11!00"O#!m!i:%GA!=0<!i#%&'9=OO%!<%9!̀8A=(%0$3$#80!4#0<!A&39!=0<!%#0<%=$#'z!

<#%!%#07%&0%0!E&%(%0$%!<%9!̀8A=(%0$3$#80!&344%0!4#G2!4G20%&&!3=KK#0<%0!=0<!

F%9:%0<%0L

ML >11:.3*!m!̀#%!F89230<%0%0!10K89(3$#80%0!4#0<!F8&&4$)0<#'W!A899%A$!

=0<!3A$=%&&L

XL >A3"#3O#!m!B#%!#4$!#0!P%<%9!B#$=3$#80!F%9KN'H39L

̀%9!6%9'&%#G2!<9%#%9!#0!<%9!I<(#0#4$93$#80!F%9H9%#$%$%9!̀8A=(%0$3$#804K89(%0!;@3O#%9W C%H5H34#%9$W!%#0K3G2%!"%f$<3$%#%0?!30230<!<#%4%9!-9#$%9#%0!KN29$!#20!7=!K8&'%0<%9!E(O5 K%2&=0'm

  E#0%!̀8A=(%0$3$#80!48&&$%!#0!<#'#$3&%9!j89(!F89&#%'%0!=0<!80&#0%!F%9KN'H39 4%#0L!B#%!#4$!<300!(#$!<%0!NH&#G2%0!C%9A7%='%0!;C%HH98:4%9?!7%#$5!=0<!89$4=05 3H2)0'#'!7=!%99%#G2%0!=0<!&)44$!4#G2!4G20%&&!3A$=3&#4#%9%0L!i=<%(!=0$%94$N$7%0 B=G2K=0A$#80%0!8<%9!C%9A7%='%!:#%!grep!<34!I=KK#0<%0!F80!10K89(3$#80%0L   jN9!<#%!V%39H%#$=0'!48&&$%0!(.'&#G24$!A%#0%!7=4)$7&#G2%0!C%9A7%='%!#04$3&&#%9$

:%9<%0!(N44%0W!H4O:L!%#0%!̀3$%0H30A!8<%9!%#0!4O%7#%&&%9!E<#$89L

  E#0K3G2%!"%f$<3$%#%0!4#0<!:%4%0$&#G2!%#0K3G2%9!(#$!6%94#804F%9:3&$=0'44^4$%5 (%0!7=!F%9:3&$%0!3&4!V#0)9K89(3$%L

  jN9!<%0!r8$K3&&!;"8$3&3=4K3&&!<%4!r%$7:%9A4!8<%9!<%9!B$98(F%9489'=0'?W!:%00 A%#0!i='9#KK!3=K!<#%!<#'#$3&%!̀8A=(%0$3$#80!(.'&#G2!#4$W!#4$!%#0%!'%<9=GA$%!j345 4=0'!4#00F8&&L!¥#%9H%#!(=44!P%<8G2!<393=K!'%3G2$%$!:%9<%0W!<344!%4!4#G2!=(!<#%

P%:%#&4!3A$=%&&%!j344=0'!230<%&$L

C#%!4$%2$!%4!=(!<34!8/01>&."&+@!$>!6894$%&&H39!#4$W!<344!<#%!6%939H%#$=0'!%#0%9!10K895 (3$#80!0#G2$!:#%!NH&#G2!#0!j89(!%#0%9!(30=%&&%0!3<(#0#4$93$#F%0!¥30<&=0'!%9K8&'$W!4805

<%90!<344!<34!̀8A=(%0$!4%&H4$!|3=4KN29H39{!#4$W!<#%!F897=0%2(%0<%0!l0<%9=0'%0!3&48

(5)

3=4!#2(!3H'%&%#$%$!=0<!=('%4%$7$!:%9<%0!A.00%0L!V=9'%44!K89(=&#%9$!<9%#!D!0&BU.#$1#B

*#!$W!3=4!<%0%0!%9!<#%!r8$:%0<#'A%#$!%#0%9!48&G2%0W!3=K!282%(!IH4$93A$#8040#F%3=!3'#%5 9%0<%0!=0<!4$30<39<#4#%9$%0!I<(#0#4$93$#80!3H&%#$%$L!̀37=!4$%&&$!%9!=L!3L!Cfengine!F89W

%#0!C%9A7%='W!<344!(#$!¥#&K%!%#0%9!<%A&393$#F%0!BO93G2%!B^45!$%(A80K#'=93$#80%0!3=$85 (3$#4#%9$!%#09#G2$%0!=0<!O9NK%0!A300!nV=9TXW!BL!eW!YMZW!YSZoL!E#0'%H%$$%$!#0!%#0%!<#'#$3&%

j89(!<%9!̀8A=(%0$3$#80!:N9<%0!48!H%4G29#%H%0%!-80K#'=93$#80%0!Q!-80K#'=93$#8045 a8<%!Q!<#%4%!'307!A80A9%$!$/01>&.!(3G2%0L

̀#%4%4!<#9%A$%!r%H%0%#030<%9!F80!̀8A=(%0$3$#80!=0<!a8<%!$9)'$!7=9!b.4=0'!%#0%4!:%#5

$%9%0!@98H&%(4!H%#W!<34!#04H%480<%9%!H%#!<%9!@K&%'%!%f$%90%9!̀8A=(%0$3$#80!3=K$9#$$m C#%!&)44$!4#G2!<#%!-804#4$%07!F80!a8<%!=0<!7='%2.9#'%9!̀8A=(%0$3$#80!4#G2%94$%&&%0>

q20%!%0$4O9%G2%0<%!U%'%0(3,032(%0!$%0<#%9$!̀8A=(%0$3$#80!<37=W!4G20%&&!7=!F%93&5

$%0!;4L!H4O:L!n-jT̲o?L!C%00!4#G2!0=0!48:82&!a8<%!3&4!3=G2!̀8A=(%0$3$#80!#(!4%&H%0

̀8A=(%0$!H%K#0<%0W!#4$!%4!:3294G2%#0&#G2%9W!<344!H%#<%!7=%#030<%9!A804#4$%0$!4#0<!=0<

'%(%#043(!7%#$032!'%OK&%'$!:%9<%0L

  j344$!(30!<#%!7=F89!H%4G29#%H%0%0!I0K89<%9=0'%0!7=43((%0W!<300!48&&$%!%#0%

̀8A=(%0$3$#80!KN9!<#%!B^4$%(3<(#0#4$93$#80!K8&'%0<%0!K89(3&%0!I0K89<%9=05 '%0!'%0N'%0m

  ̀34!I=4'30'4K89(3$!%9&3=H$!%#0%!-80F%9$#%9=0'!#0!%#0%!q0&#0%5c%O9)4%0$3$#80 48:#%!#0!%#0%!KN9!<%0!̀9=GA!'%%#'0%$%!j89(L

  ̀34!I=4'30'4K89(3$!0=$7$!%#0%!%#0K3G2%!I=47%#G20=0'44O93G2%!=0<!&)44$!4#G2 3&4!%#0K3G2%!"%f$<3$%#!4O%#G2%90L

  ̀#%!E94$%&&=0'!=0<!@K&%'%!%9K89<%9$!A%#0%!=(K30'9%#G2%0!104$3&&3$#80%0!:#%!̀35

$%0H30A%0W!C%H4%9F%9!%$GL

  ̀#%!|3=4KN29H39%¦!V%4G29%#H=0'!<%9!-80K#'=93$#80%0!H%K#0<%$!4#G2!%#0'%H%$$%$

#(!"%f$L

V#4 ! 3=K ! <#% ! 10$%'93$#80 ! <%9 ! -80K#'=93$#80%0 ! #0 ! <#% ! ̀8A=(%0$3$#80 ! %9KN&&%0 ! %#0K3G2%

"%f$<3$%#%0W!K89(3$#%9$!(#$!¥#&K%!F80!D39A=O5BO93G2%0!:#%!reST!8<%9!MarkdownW!<#%

%94$%0!<9%#!-9#$%9#%0L!B#%!A.00%0!(#$!-80F%9$%90!:#%!Docutils!8<%9!pandoc!#0!F%95 4G2#%<%0%!q0&#0%5!=0<!̀9=GAK89(3$%!NH%94%$7$!:%9<%0!=0<!H%0.$#'%0!KN9!<#%!V%39H%#5

$=0'!0=9!%#0%0!'%:.20&#G2%0!E<#$89L!C%9A7%='%!:#%!CfengineW!ChefW!Puppet!8<%9 Salt!A.00%0!B^4$%(5!8<%9!̀#%04$A80K#'=93$#80%0!3=4!%#0K3G2%0!"%f$<3$%#%0!%f$932#%5 9%0!=0<!4#%!3=$8(3$#4#%9$!#0!3<(#0#4$93$#F%!¥30<&=0'%0!NH%9KN29%0L

qKK%0!#4$!3H%9!08G2!<#%!j93'%W!:#%!4#G2!V%4G29%#H=0'%0!=0<!"%f$!48!A8(H#0#%9%0!&344%0W

<344!3=K!<%9!%#0%0!B%#$%!%#0%!&%4H39%!̀8A=(%0$3$#80!%0$4$%2$!=0<!3=K!<%9!30<%9%0!%#0

|3=4KN29H39%9{!"%f$L!EH%0!<#%4%!-8(H#03$#804(.'&#G2A%#$!H#%$%$!<34!m#0!.&0!2U.-'.&"B

"#$'L!E0$:89K%0!(#$!<%(!i#%&W!<#%!̀8A=(%0$3$#80!#(!c32(%0!<%9!B8K$:39%%0$:#GA&=0' 7= !F%9H%44%90W ! H#%$%$ !<#%4%9 ! I043$7 ! 3=G2 !689$%#&% !KN9 ! <#%! ̀8A=(%0$3$#80 !<%9 ! B^4$%5 (3<(#0#4$93$#80L

(6)

]$T"*!.3*!$5.)6.377"(6

]VF$I"!$oE!O!(<p8)##!$@!.$I)C:7!(*3*")($"($@!.$,)4*[3.!!(*["1C#:(6

̀8A=(%0$3$#80!#0!<%9!B8K$:39%%0$:#GA&=0'!&)44$!4#G2!#0!<#%!-3$%'89#%0 !!60!.$!=0<!#$B 0!.$!3=K$%#&%0L!Ef$%90%!̀8A=(%0$3$#80!=(K344$!3&&%!j89(%0!F80!10K89(3$#80%0W!<#%!7=5 4)$7&#G2!7=(![=%&&G8<%!%9K344$!:%9<%0m!6#4#80W!̀%4#'0W!I0K89<%9=0'%0!%$GL!D.'&#G2%

j89(%0!4#0<!@9843W!V#&<%9W!̀#3'93((%W!3H%9!3=G2!E#0$9)'%!#0!C#A#4!=0<!"#GA%$4^4$%(%L

̀#%!#0$%90%!̀8A=(%0$3$#80!H%4$%2$!3=4!<%0!-8((%0$39%0W!=(!<#%!E0$:#GA&%9!<%0![=%&&5 G8<%!%9')07%0L!D30!A.00$%!3H%9!3=G2!<%0![=%&&G8<%!4%&H4$!<37=!7)2&%0W!<%00!<34!$3$5 4)G2&#G2%!̀%4#'0!<%4!B8K$:39%4^4$%(4!%f#4$#%9$!0=9!#(!a8<%L

J03H2)0'#'!<3F80W!8H!4#%!%f$%90!8<%9!#0$%90!F89&#%'$W!48&&!<#%!̀8A=(%0$3$#80!<%0![=%&&5 G8<%!=0<!<#%!<3(#$!F%9H=0<%0%0!E0$:=9K4%0$4G2%#<=0'%0W!<#%!:)29%0<!<%4!E0$:#GA5

&=0'4O987%44%4!'%K3&&%0!4#0<W!=-""/$#1#!.>&.!(3G2%0L!i#%&!#4$W!<#%!C39$H39A%#$!;j%2&%95 H%2%H=0'W!I0O344=0'!=0<!C%#$%9%0$:#GA&=0'?!=0<!@89$3H#&#$)$!;pH%9$93'=0'!3=K!0%=%

¥39<5!=0<!B8K$:39%O&3$$K89(%0?!<%4!B^4$%(4!7=!'%:)29&%#4$%0!=0<!%4!<3(#$!7=A=0K$44#5 G2%9!7=!(3G2%0L!jN9!%#0%0!E0$:#GA&%9!H%<%=$%$!<#%4W!<344 !%9!;#(!1<%3&K3&&? !'%4=G2$%

[=%&&G8<%5IH4G20#$$%!4G20%&&!K#0<%0!=0<!#29%!j=0A$#804:%#4%!F%94$%2%0!A300!;I03&^5 4#%9H39A%#$?!48:#%!%9K89<%9&#G2%!l0<%9=0'%0!#((%9!A80K89(!7=!'%$98KK%0%0!̀%4#'0%0$5 4G2%#<=0'%0!#04H%480<%9%!3=K!<%9!I9G2#$%A$=9%H%0%!F890#(($L

̀#%!V%<%=$=0'!'=$%9!̀8A=(%0$3$#80!#4$!<%0!E0$:#GA&%90!H%:=44$W!%4!:#9<!3H%9!<%008G2

%2%9!03G2&)44#'!<8A=(%0$#%9$!;4L!H4O:L!n@aZeW!BL!YSSoW!nV9̲SW!BL!Re̲o?L!̀#%!U9N0<%!4#0<

F#%&K)&$#'!=0<!0#G2$!#((%9!4G239K!7=!H%0%00%0L!i=0)G24$!#4$!<34!BG29%#H%0!'=$%9!̀8A=5 (%0$3$#80!%#0% !304O9=G24F8&&% ! =0<!7%#$#0$%04#F%! ")$#'A%#$L !14$ !<34 ! "3&%0$ ! F89230<%0W (30'%&$!%4!8K$!30!<%9!08$:%0<#'%0!i%#$W!H%480<%94!#0!@234%0!<%9!j%2&%9H%2%H=0'L!E#0 :%#$%9%9!U9=0<!(3'!<%9!J0:#&&%0!F#%&%9!E0$:#GA&%9!4%#0!7=!<8A=(%0$#%9%0L!B%&H4$<8A=5 (%0$#%9%0<%9!a8<%!4%#!<8G2!3=49%#G2%0<!=0<!<%(!-=0<%!%#0!&3=KK)2#'%4!B^4$%(!:#G2$#5 '%9!3&4!%#0%!=(K344%0<%!̀8A=(%0$3$#80!;4#%2%!<37=!H4O:L!nD3T̲o!=0<!nDGTXo?L!̀#%

<%97%#$#'!O8O=&)9%0!;'#(!$2D!0@-<!$!F%94$%2%0!̀8A=(%0$3$#80!<%00!3=G2!3&4!08$:%0<#5 '%4W!3H%9!7=!(#0#(#%9%0<%4!pH%&W!<%9!(30!7=<%(!0#G2$!$93=%0!A300!nI(TYW!BL!ReSKoL

̀344!<%9!̀8A=(%0$3$#80!0#G2$!'%$93=$!:%9<%0!A300W!#4$!3&&%9<#0'4!%#0!c%4=&$3$!<%9!(305 '%&23K$%0!@K&%'%!<%94%&H%0L!E#0!:%4%0$&#G2%4!@98H&%(!#4$!<#%!K%2&%0<%!-804#4$%07!F80

;#04H%480<%9% ! %f$%90%9? ! ̀8A=(%0$3$#80 ! =0< ! 7='%2.9#'%0 ! [=%&&G8<%5V%9%#G2%0L ! q20%

3A$#F%!U%'%0(3,032(%0!:#9<!4#%!03G2!%#0#'%9!i%#$!<%9!C39$=0'!#((%9!4G2&%G2$%9L!̀34 23$!7=9!j8&'%W !<344 !H%#!C39$=0'439H%#$%0 !B$9=A$=9%0$4G2%#<=0'%0W !<#%!0#G2$!3=4 !<%(

a8<%!%94#G2$&#G2!4#0<W!0#G2$!H%9NGA4#G2$#'$!:%9<%0!A.00%0L!̀%9!6%9&=4$!<#%4%4!i=43$75 :#44%04!%94G2:%9$!<34!B^4$%(F%94$%2%0!=0<!<3(#$!<#%!C39$H39A%#$!03G223&$#'L

]VH$T"*!.3*!$5.)6.377"(6$3#0$"(*!6."!.!(@!.$>(03*G

I=G2!:%00!<%9![=%&&G8<%!:%#$'%2%0<!4%&H4$<8A=(%0$#%9%0<!#4$W!&344%0!4#G2!3&&%#0!4G280 3=4!4^0$3A$#4G2%0!U9N0<%0!0#G2$!3&&%!KN9!<#%!E0$:#GA&=0'!%9K89<%9&#G2%0!10K89(3$#80%0

#0!<#%4%9!j89(!3=4<9NGA%0z!%#0%!̀8A=(%0$3$#80!NH%9!<%0![=%&&G8<%!2#03=4!#4$!08$:%05

(7)

<#'L ! E#0 ! %94$%9 ! b.4=0'43043$7 ! H%4$%2$ ! <39#0W ! <#% ! "9%00=0' ! F80 ! ̀8A=(%0$3$#80 ! =0<

[=%&&G8<%!4G2&#G2$!3=K7=2%H%0!=0<!H%#<%4!7=43((%0!7=!F%9K344%0L!̀34W!:34!4#G2!'=$!#0

<%9!'%:)2&$%0!@98'93((#%94O93G2%!K89(=&#%9%0!&)44$W!:#9<!3&4![=%&&G8<%!K%4$'%23&$%0W 3&&%4!30<%9%!#0!j89(!F80!@9843W!V#&<%90!%$GL!̀%0A$!(30!<#%4%0!I043$7!08G2!%#0%0!BG29#$$

:%#$%9W!<300!:%9<%0!<#%!E9&)=$%9=0'%0!0#G2$!7=(![=%&&G8<%W!480<%90!<%9![=%&&G8<%!<%0 E9&)=$%9=0'%0!H%#'%KN'$z!<34!̀8A=(%0$!:#9<!<3(#$!7=(!O9#()9%0!D%<#=(L!I=4!<#%4%(

&344%0!4#G2!<300!%#0%!8<%9!(%29%9%![=%&&G8<%5̀3$%#%0!%f$932#%9%0!=0<!:%#$%9!F%939H%#5

$%0L

R̲ZX!4G2&='!-0=$2!(#$!4%#0%(!|b#$%93$%!@98'93((#0'{!%#0!48&G2%4!B^4$%(!F89L!E9!F%95 K8&'$%!<3(#$!<34!i#%&W!<#%!6%94$)0<&#G2A%#$!F80!@98'93((%0!7=!F%9H%44%90L!̀37=!%0$:39K

%9!%#0%!%#0K3G2%!I=47%#G20=0'44O93G2%!03(%04!WEBW!<#%!̀8A=(%0$3$#80!=0<![=%&&G8<%

#0!48'L!n@/$=%!%#0$%#&$L!g%<%9!a8<%!a2=0A!:#9<!(#$!%#0%0!H%480<%94!(39A#%9$%0!V%7%#G25 0%9!%#0'%&%#$%$!=0<!%0<%$W!:%00!%#0%!i%#&%!(#$!%#0%(!@!H%'#00$m

<<ein Bezeichner>>=

def meine_funktion():

...

@ Hier steht keine Code mehr.

r3G2 ! <%( !@! H%'#00$ ! %#0 ! ̀8G=(%0$3$#80 ! a2=0AL ! I=K ! <#%4% ! C%#4% ! A.00%0 ! H%&#%H#' a2=0A4!30%#030<%9!'%KN'$!:%9<%0W!=03H2)0'#'!<3F80W!8H!%4!4#G2!=(!̀8A=(%0$3$#80 8<%9![=%&&G8<%!230<%&$L!C#9<!%#0!a8<%!a2=0A!(#$!%#0%(!4G280!F%9'%H%0%0!V%7%#G20%9

%#0'%&%#$%$W!:%9<%0!4#%!H%#!<%9!Ef$93A$#80!;tangle?!'%(),!<%9!c%#2%0K8&'%!#29%4!I=K5

$9%$%04!#(!̀8A=(%0$!7=43((%0'%KN29$L

100%923&H!%#0%4!a8<%!a2=0A4!&344%0!4#G2!3=G2!30<%9%!a8<%!a2=0A4!9%K%9%07#%9%0m

<<ein weiterer Bezeichner>>=

def eine_weitere_funktion():

<<ein Bezeichner>>

for line in file:

...

@

<<ein Bezeichner>>! K=0'#%9$ ! 2#%9 ! 3&4 ! @&3$723&$%9 ! =0< ! :#9< ! H%# ! <%9 ! Ef$93A$#80

<=9G2!<%0!H%0300$%0!a8<%!a2=0A!%94%$7$L!C8!4#G2!<#%4%9!#(!̀8A=(%0$!H%K#0<%$W!#4$!=05

%92%H&#G2L!̀3(#$!H&%#H$!%4!<%(!E0$:#GA&%9!NH%9&344%0W!8H!%9!$8O5<8:0W!H8$$8(5=O!8<%9 3=K!30<%9%!I9$!4%#0!@98'93((!%0$:#9K$W!&84'%&.4$!F80!<%0!689'3H%0!<%9!F%9:%0<%$%0

@98'93((#%94O93G2%L

(8)

IHH#&<=0'!Rm!6%939H%#$=0'!%#0%9!CEV5̀3$%#L

J94O9N0'&#G2!23$$%!-0=$2!WEB!KN9!<#%!E0$:#GA&=0'!F80!@34G3&5@98'93((%0!%0$:89K%0

=0<!3&4!I=47%#G20=0'44O93G2%!KN9!<#%!̀8A=(%0$3$#8045a2=0A4!<34!F80!#2(!%0$:#GA%&$%

"%y5B^4$%(!F89'%4%2%0z!&%$7$%9%4W!:%#&!4%#0%9!I04#G2$!03G2!@98'93((%!3&4!-=04$!30'%5 4%2%0!:%9<%0!48&&$%0!=0<!<32%9!%#0%!30'%(%44%0%!̀394$%&&=0'!F%9<#%0%0L!c3(4%^!%0$:#5 GA%&$%!R̲Z̲!(#$ !noweb! %H%0K3&&4!%#0!C%9A7%='!KN9!<34!&#$%93$%!@98'93((#%9%0W!3&&%95

<#0'4!(#$!<%(!i#%&W!%#0%0!(.'&#G24$!%#0K3G2%0W!F80!@98'93((#%94O93G2%0!=03H2)0'#'%0 i='30'!7=(!b@!7=!H#%$%0L!r%H%0!"%y!=0$%94$N$7$ !noweb! 3=G2!b3"%yW!¥"Db!=0<

troff!3&4!V3GA%0<5j89(3$%L!̀#%4%!j&%f#H#&#$)$!:39!3=44G2&3''%H%0<!<3KN9W!<#%!&#$%93$%

B^4$%(3<(#0#4$93$#80!3=K!V34#4!F80!noweb!7=!%0$:#GA%&0L

̀#%!E0$:#GA&=0'!F80!B8K$:39% !(#$!¥#&K% !<#%4%4 !<8A=(%0$%07%0$9#%9$%0 !I043$7%4 !23$

:%#$9%#G2%0<%!I=4:#9A=0'%0L!̀3!̀8A=(%0$3$#80!=0<![=%&&G8<%!%0'!7=43((%0!4$%2%0W A300!#29%!-804#4$%07!7=%#030<%9!H%44%9!'%:329$!:%9<%0!n"2ZeW!BL!YTXoL!E#0!̀8A=(%0$

A300!7=<%(!(%29%9%![=%&&G8<%5̀3$%#%0!3=K0%2(%0W!:8<=9G2!%#0%!'%4G2&844%0%!̀395 4$%&&=0'!F80!#0!<%0!̀3$%#%0!F%9$%#&$%9!i=43((%02)0'%!(.'&#G2!#4$!ǹ%̲YW!BL!YToL!̀%9 E0$:#GA&%9!A300!:%#$%92#0!=03H2)0'#'!F80!<%9!'%:)2&$%0!@98'93((#%94O93G2% !4%#0%

U%<30A%0!=0<!pH%9&%'=0'%0!#0!<%9!#2(!30'%(%44%0!%94G2%#0%0<%0!c%#2%0K8&'%!3=45

<9NGA%0!n-0̲YW!BL!ReZoL

̀344!b#$%93$%!@98'93((#0'!K=0A$#80#%9$W!:=9<%!=0<!:#9<!30230<!F#%&%9!@98P%A$%!<%=$5

&#G2L!c3(4%^!OK&%'$!3=K!4%#0%9!C%H4#$%!nc3RXo!%#0%!b#4$%!F80!@%9480%0!=0<!@98P%A$%0W

<#%!08:%H!%#04%$7%0W!<39=0$%9!3=G2!<34!30!<%9!j3A=&$)$!%0$:#GA%&$%!relax!!nC8RXoL

^$T"*!.3*!$5.)6.377"(6$"($@!.$,'0*!73@7"("0*.3*")(

^VF$N.432.:(6!($7"*$T5$O!"$@!.$,)4*[3.!!(*["1C#:(6

̀#%!E0$:#GA&=0'!<%4!?&=/(0S0%#$,-."&0#-$%%7%0!"%!;j3A10K8z!4L!3=G2!nB"T̲o?!KN9!<#%!j35 A=&$)$!%9K8&'$%!&#$%93$!=0$%9!6%9:%0<=0'!F80!08:%HL!V%#!<%9!3H4G2&#%,%0<%0!V%:%9$=0' :#%4%0!<#%!E0$:#GA&%9!3=K!(%29%9%!@98H&%(%!2#0W!<#%4%4!689'%2%0!(#$!4#G2!H9#0'$m

  I&4 ! I=47%#G20=0'44O93G2% !KN9 ! <#% !̀8A=(%0$3$#80 !:=9<% !b3"%y !%#0'%4%$7$L

̀%9!I=K:30<!H%#!<%9!E#0'3H%!#4$!#(!6%9'&%#G2!7=!3&$%903$#F%0!I=47%#G20=0'45

(9)

4O93G2%0!:#%!Markdown!nU9TXo!8<%9!reStructuredText!=0F%92)&$0#4()5 ,#'!28G2L

  EH%048!:#%!WEB!4#%2$!noweb!F89W!<344!(#$!0=9!!#$!.!̀3$%#!'%39H%#$%$!:#9<W!=05 3H2)0'#'!F80!<%9!U9.,%!<%4!7=!%0$:#GA%&0<%0!B^4$%(4L!;I=G2!<#%!<9%#!U9=0<5 H3=4$%#0% ! KN9 ! <34 ! =(K30'9%#G2% ! B3$74^4$%( !!H%4$%2%0 ! P%:%#&4 ! 3=4 ! 0=9 ! %#0%9 [=%&&<3$%#m !tex.web! ;"%y5a8(O#&%9? !~YSTTT ! i%#&%0W !mf.web ;DE"I5 jqr"?!~YMTTT!=0<!!ibtex.web ;V1V"%y?!~RReTT!i%#&%0?L?!¥%=$#'%!E<#5

$89%0!23H%0!(#$!'98,%0!̀3$%#%0!A%#0%!BG2:#%9#'A%#$%0!=0<!2%&K%0!<%(!E0$5 :#GA&%9!=L3L!(#$!q=$&#0#0'5j=0A$#80%0!H%#!<%9!r3F#'3$#80L!B#%!H%2%994G2%0!<35 H%#!P%<8G2!0#G2$!<%0!J('30'!(#$!<%9!a8<%!a2=0A5r8$3$#80W!48!<344!2#%9!<=9G2

<#%!K%2&%0<%!J0$%94$N$7=0'!(#$!7=0%2(%0<%(!̀3$%#=(K30'!<%9!pH%9H&#GA!F%95

&89%0!'%2$L

  ̀#%!I9H%#$4$%#&=0'!#(!"%3(!:#9<!<=9G2!<#%!6%9:%0<=0'!0=9!%#0%9!̀3$%#!%95 4G2:%9$L ! I=G2 ! :%00 ! (8<%90% ! 6%94#804F%9:3&$=0'44^4$%(% ! &%#4$=0'4K)2#'%

D%9'%5D%G230#4(%0!H%4#$7%0W!#4$!<#%!C3294G2%#0&#G2A%#$!%#0%4!-80K&#A$4!H%#

0=9!%#0%9!̀3$%#!:%4%0$&#G2!2.2%9!3&4!H%#!%#0%9!6%9$%#&=0'!<%9!̀8A=(%0$3$#80 3=K!(%29%9%!̀3$%#%0L

  ̀34!F80!noweb! <=9G2'%KN29$%!B^0$3f!¥#'2&#'2$#0'!A300!H%4$%0K3&&4!3&4!9=<#5 (%0$)9!H%7%#G20%$!:%9<%0!=0<!#4$!3=4!2%=$#'%9!B#G2$!F.&&#'!=07=9%#G2%0<L   ̀#%!V%7%#G20%9!<%9!7=!%f$932#%9%0<%0!a8<%!a2=0A4!(N44%0!<%(!F%9:%0<%$%0

V=#&<5C%9A7%='!H%A300$!'%(3G2$ !:%9<%0W!H4O:L!#0!%#0%( !Makefile! 8<%9 B2%&&5BA9#O$L!¥#%9!A3(!%4!H%#!c%K3G$89#0'5D3,032(%0!#((%9!:#%<%9!7=!j%25

&%90W!:%#&!l0<%9=0'%0!F80!V%7%#G20%90!0#G2$!03G2'%KN29$!:=9<%0L

BG280!:)29%0<!<%9!E0$:#GA&=0'!F80!j3A10K8!:=9<%0!C%9A7%='%!7=9!V%230<&=0'!%#0#5 '%9!<#%4%9!@98H&%(%!'%4G29#%H%0m

  ̀%9 !includer! <%K#0#%9$!%#0%!%#0K3G2%!B^0$3fW!<#%!<34!i=43((%0KN'%0!F80

̀3$%#%0!%9&3=H$L!̀3(#$!&#%,!4#G2!<#%![=%&&<3$%#!#0!%#0%!¥3=O$5!=0<!(%29%9%!r%5 H%0<3$%#%0!3=K4O3&$%0L

  ̀%9!chunk-viewer!&#%K%9$!%#0%!pH%94#G2$!3&&%9!<%K#0#%9$%0!a8<%!a2=0A4!485 :#%!<%9!7='%2.9#'%0!c88$!a2=0A4!%#0%9!̀3$%#L

  ̀%9!highlighter!%94%$7$!<#%!B^0$3f!¥#'2&#'2$#0'5j=0A$#803&#$)$!F80!noweb

<=9G2!<#%!<%4!b3"%y5@3A%$4!listingsL

D#$!¥#&K%!<#%4%9!C%9A7%='%!A800$%!<34!@98P%A$!%9K8&'9%#G2!3H'%4G2&844%0!:%9<%0L!̀34 j3A=&$)$4#0K89(3$#8044^4$%(!#4$!4%#$!YTTZ!O98<=A$#F!#(!E#043$7L

^VH$>(-300:(6!($4J.$B!.[!(@:(6$A)($T5$"($@!.$,'0*!73@7"("0*.3*")(

̀#%!6%9:%0<=0'!<%4!includers!A300!7=!%#0%(!=0%9:N04G2$%0!r%H%0%KK%A$!KN29%0L

̀3!(%29%9%!̀3$%#%0!7=!%#0%9!U%43($<3$%#!7=43((%0'%K344$!:%9<%0W!H%4$%2$!<34!c#4#A8W

<344!%4!a8<%!a2=0A4!(#$!#<%0$#4G2%0!V%7%#G2%90!'#H$W!<#%!#023&$&#G2!P%<8G2!0#G2$4!(#$5

%#030<%9!7=!$=0!23H%0L!̀%9!tangle5@987%44!:N9<%!4#%!3&4!7=43((%0'%2.9#'!H%230<%&0

(10)

=0<!30%#030<%9!2)0'%0L!V%#!<%9!V%4G29%#H=0'!F80!-80K#'=93$#80%0W!<#%!3=K!(%29%9%0 B^4$%(%0!3A$#F!4%#0!48&&%0W!#4$!<#%4%4!c#4#A8!3=K'9=0<!#<%0$#4G2%9!-80K#'=93$#804<3$%#05 3(%0!H%480<%94!28G2L!I=4!<#%4%(!U9=0<!:=9<%!#(!689K%&<!<#%!6%9:%0<=0'!<%4!in- cluders!3=4'%4G2&844%0!=0<!10A&=4#80%0!F80!̀3$%#%0!7:%GA4!C#%<%9F%9:%0<=0'!F80 -80K#'=93$#804H3=4$%#0%0!30!<34!I<(#0#4$93$#804:%9A7%='!<%&%'#%9$L

jN9!<%0!E#043$7!F80!b@!#0!<%9!B^4$%(3<(#0#4$93$#80!%0$4G2#%<%0!:#9!=04W!%#0!̀8A=(%05

$3$#8044^4$%(!7=!4=G2%0W!<34!4$3$$!b3"%y!%#0%!%#0K3G2%9%!D39A=O5BO93G2%!F%9:%0<%$

=0<!<#%!6%939H%#$=0'!(%29%9%9!̀3$%#%0!#0A&L![=%9F%9:%#4%0!%9&3=H$L!̀#%!E9K329=0'%0 (#$!@^$280W!<#%!:)29%0<!<%9!E0$:#GA&=0'!F80!j3A10K8!'%(3G2$!:=9<%0W!KN29$%0!=04!7=

BO2#0f!;4L!nV9RXo?L!J94O9N0'&#G2!KN9!<#%!̀8A=(%0$3$#80!<%4!@^$2805!10$%9O9%$%94!=0<

4%#0%9!B$30<39<H#H&#8$2%A!%0$:#GA%&$W!=0$%94$N$7$!%4!<#%!̀8A=(%0$3$#80!H%&#%H#'%9!B^4$%5 (%!NH%9!(%29%9%!̀3$%#%0!2#0:%'!=0<!H%2%994G2$!=L!3L!<#%!I=4'3H%!F80!¥"Db!=0<!b35

"%yt@̀jL!̀#%!¥"Db5I=4'3H%!H#%$%$!3=,%9<%(!%#0%!B=G2K=0A$#80!=0<!%#0%0!10<%fL!I&4 D39A=O5BO93G2%!0=$7$!BO2#0f !reStructuredText! ;reST?W!%#0%!F%9%#0K3G2$%!I=45 7%#G20=0'44O93G2%W!<#%!3=G2!#0!<%9!9%#0%0!"%f$K89(!'=$!&%4H39!#4$L!pH%9!%#0%0!@&='#05 D%G230#4(=4!&344%0!4#G2!3=G2!IBa115U93K#A%0!%#0H%$$%0W!<#%!(#$!¥#&K%!F80!aafig!3=5

$8(3$#4G2!7=!V#&<<3$%#%0!A80F%9$#%9$!=0<!#0!<#%!I=4'3H%!%#0'%KN'$!:%9<%0L

̀3(#$!<#%!08:%H5B^0$3f!F80!BO2#0f!F%939H%#$%$!:%9<%0!A300W!#4$!%#0%!pH%94%$7=0'!<%9

<#%!a8<%!a2=0A!H%'9%07%0<%0!I=47%#G20=0'%0!#0!%#0% !reST5A80K89(%!B^0$3f!%9K895

<%9&#G2L!¥#%9KN9!:=9<%!<34!C%9A7%='!nw2rst!;4L!n"%TZo?!%0$:#GA%&$W!<34!7:#4G2%0!<%0 6%939H%#$=0'4O987%44 ! F80 !noweb5D39A=O ! 7=( ! ̀8A=(%0$ ! '%4G23&$%$ ! :#9<L ! ̀#% ! (#$

BO2#0f!(.'&#G2%0![=%9F%9:%#4%!4#0<!KN9!<#%!I9H%#$!(#$!(%29%9%0!̀3$%#%0!3=49%#G2%0<L

̀#%!a8<%!a2=0A4!2#0'%'%0!&344%0!4#G2!<=9G2!<%0!C%'K3&&!<%4!includers!0#G2$!NH%9

̀3$%#'9%07%0!2#0:%'!<%K#0#%9%0L!̀#%4%9!J(4$30<!(=44!H%#!<%9!E94$%&&=0'!<%9!̀8A=(%05

$3$#80!H%9NGA4#G2$#'$!:%9<%0W!%9!:#9<!3H%9!<=9G2!<#%!D.'&#G2A%#$%0!<%4!I<(#0#4$93$#8045 :%9A7%='4!3=4'%'&#G2%0L

J(!<#%!IH2)0'#'A%#$!F80!%#0%9!%f$%90%0!̀3$%#!7=!F%92#0<%90W!<#%!<#%!Ef$93A$#80!F80 a8<%!a2=0A4!H%4$#(($W!:=9<%!%#0 !build-script! 03G2!%#0%(!6894G2&3'!<%4!b^y5

@98P%A$4!;4L!<37=!3=G2!n"%T̲o?!%0$:89K%0L!10!P%<%9!̀3$%#!:#9<!<37=!%#0!a8<%!a2=0A!035 (%04 !build-script! <%K#0#%9$W!<%9!<#%!Ef$93A$#80!#0!j89(!%#0%4!B2%&&5BA9#O$4!H%5 4G29%#H$L!̀#%!%#'%0$&#G2%!Ef$93A$#80!:#9<!<=9G2!%#0!B2%&&5BA9#O$!30'%4$8,%0W!<34!<#%4%0

%#0'%H%$$%$%0!a8<%!a2=0A!3=4KN29$L!̀30A!<#%4%9!-8(H#03$#80!F80!B2%&&5BA9#O$%0!(=44

<%9!E0$:#GA&%9!<#%!noweb5̀3$%#!0#G2$!F%9&344%0W!:%00!%9!%#0%0!7=!%f$932#%9%0<%0!a8<%

a2=0A!&.4G2%0W!=(H%0%00%0!8<%9!2#07=KN'%0!:#&&L

^V]$,3#*$3#0$/!.CG!:6$G:.$>@7"("0*.3*")(

̀#%!1<%%!%#0%4 !&/%,j@.>&.!$! ̀8A=(%0$4!7=9!B^4$%(3<(#0#4$93$#80!&)44$!4#G2!(#$!¥#&K%

F80 ! -80K#'=93$#804(303'%(%0$5C%9A7%='%0 ! :#% !CfengineW !ChefW !Puppet! 8<%9 Salt!9%3&#4#%9%0L!129%!$%f$H34#%9$%0!-80K#'=93$#804H%4G29%#H=0'%0!A.00%0!<30A!b#$%93$%

@98'93((#0'!:#%!<%9![=%&&G8<%!%#0%4!@98'93((4!#0!<#%!̀8A=(%0$3$#80!%#0H%$$%0!:%95

<%0L

(11)

r3G2!<%(!B$=<#=(!F80!E9K329=0'4H%9#G2$%0!=0<!%#0%9!23&HP)29#'%0!"%4$O234%!(#$!Pup- pet!23H%0!:#9!=04!KN9 !Salt! %0$4G2#%<%0L !Salt! F%9:%0<%$!3&4!V%4G29%#H=0'44O93G2%

ʻIDb!;IHAN97=0'!KN9 !o!02;$-0@!.2D&.=/*2m&$'/&'!?W!%#0%!<%A&393$#F%!BO93G2%W!<#%

#(!6%9'&%#G2!7=9!U/**!02m&$'/&'!!4%29!%#0K3G2!4$9=A$=9#%9$!=0<!:%4%0$&#G2!&%#G2$%9!7=

%9&%90%0!#4$L!"98$7!<#%4%9!E#0K3G22%#$!&344%0!4#G2!<3(#$!3=G2!A8(O&#7#%9$%!-80K#'=93$#85 0%0!K89(=&#%9%0L!̀39NH%9!2#03=4!A.00%0!NH%9!:%#$%9%!48'L!:!$<!.!.!"%(O&3$%5BO93G2%0 :#%!g#0P3!8<%9!D3A8!F%939H%#$%0!:%9<%0W!(#$!<%9%0!¥#&K%!4#G2!-80<#$#803&3=4<9NGA%!=0<

BG2&%#K%0!K89(=&#%9%0!&344%0L

̀#%!-80K#'=93$#80!%#0%4!B^4$%(4!%9K8&'$!H%# !Salt! 3&4!i=4$30<4H%4G29%#H=0'!#0!j89(

48'L!)&(02)0&0!%L!I=4'30'4O=0A$!#4$!<#%!̀3$%#!top.slsW!#0!<%9!3&&%!7=!F%9:3&$%0<%0!B^45

$%(%!3=K'%&#4$%$!4#0<L!¥#%9!%#0!V%#4O#%&!(#$!0=9!%#0%(!B^4$%(!03(%04!atlasm

# top.sls base:

'atlas':

- core

- ssh.server - users.comet

atlas! 0=$7$!=L!3L!E#04$%&&=0'%0!3=4 !coreW!<#%!#0!<%9!̀3$%# !core.sls! '%03=%9!H%5 4G29#%H%0!4#0<L!̀#%!I=K'3H%!F80!core.sls!H%4$%2$!<39#0!K%4$7=&%'%0W!:%&G2%!B8K$:35 9%O3A%$%!3=K!%#0%(!B^4$%(!#04$3&&#%9$!4%#0!48&&$%0L!10!<#%4%(!V%#4O#%&!4#0<!<34!%#0%!B2%&&W

%#0!"%9(#03&(303'%9!=0<!%#0!j#&%(303'%9!03(%04 !rangerL!̀#%4%9!j#&%(303'%9!:#9<

3&&%9<#0'4!3=K!j9%%VB̀5B^4$%(%0!(#$!%#0%(!30<%9%0!@3A%$03(%0!#04$3&&#%9$!3&4!3=K!̀%5 H#305H34#%9$%0!B^4$%(%0L!J(!H%#!<%9!-80K#'=93$#80!3H%9!O&3$$K89(=03H2)0'#'!7=!4%#0W :#9<!2#%9!(#$!¥#&K%!F80!g#0P3!%#0%!639#3H&%!03(%04!ranger!3=K!<%0!O344%0<%0!@3A$%$5 03(%0!'%4%$7$!=0<!KN9!<#%!104$3&&3$#80!F%9:%0<%$m

# core.sls

{% if grains['os'] == 'FreeBSD' %}

{% set ranger = 'sysutils/py-ranger' %}

{% elif grains['os'] in ['Debian', 'Ubuntu'] %}

{% set ranger = 'ranger' %}

{% endif %}

core:

pkg:

- installed - names:

- bash - tmux

- {{ ranger }}

D#$ ! <%( ! V%K%2& !salt 'atlas' state.highstateW ! 3=4'%KN29$ ! 3=K ! <%( !)&(0 D&%0!.W!:#9<!<#%4%!-80K#'=93$#80!<300!3=K!<%(!B^4$%(!3=4'%98&&$L

(12)

@9#07#O#%&&!#4$!%4!(.'&#G2W!(#$!48&G2%0!i=4$30<4H%4G29%#H=0'%0!d=34#!3=K!-08OK<9=GA

%#0%!F8&&4$)0<#'%!B^4$%(&30<4G23K$!%#07=9#G2$%0L!̀30A!4%#0%9!3=K!c%(8$%5Ef%G=$#80!H35 4#%9%0<%0!I9G2#$%A$=9!#4$!Salt!3=,%9<%(!3=G2!4%29!'=$!KN9!<#%!I<!28G5I<(#0#4$93$#80 '%%#'0%$L!̀37=!%#0!V%#4O#%&m!J(!3=K!3&&%0!F%9:3&$%$%0!B^4$%(%!<%0!@3$G2!KN9!<#%!#0!<#%5 4%(!g329!H%A300$!'%:89<%0%!qO%0BBb5bNGA%!;3=G2 !p!&.0>(!!<2P/'! '%0300$?!%#07=5 4O#%&%0W!#4$!0=9!<%9!K8&'%0<%!V%K%2&!3=47=KN29%0m

salt '*' pkg.install openssl refresh=True

̀#%4%!A&%#0%0!V%#4O#%&%!48&&%0!<%(804$9#%9%0W!:#%!%#0K3G2!%#0%!-80K#'=93$#80!(#$!Salt H%4G29#%H%0!=0<!3=4'%98&&$!:%9<%0!A300L!I&4!D303'%(%0$:%9A7%='!#4$!Salt!4%29!&%#45

$=0'4K)2#'!=0<!%#0%!<%$3#&&#%9$%!E9&)=$%9=0'!<%9!-80K#'=93$#804(.'&#G2A%#$%0!:N9<%!<%0 c32(%0!4O9%0'%0L!C%#$%9KN29%0<%!10K89(3$#80%0!4#0<!3=K!<%9!C%H4#$%!<%4!@98P%A$4!7=

K#0<%0W!<#%!%#0%!=(K344%0<%!̀8A=(%0$3$#80!=0<!F#%&%!I0:%0<=0'4H%#4O#%&%!H#%$%$L

b$S3G"*

E#0%!=(K344%0<%!̀8A=(%0$3$#80!<%9!1"5B^4$%(%!#4$!30'%4#G2$4!<%9!6#%&K3&$!<%9!¥39<:35 9%W!V%$9#%H44^4$%(%!=0<!̀#%04$%!08$:%0<#'%9!<%00!P%L!̀#%4%9!V%#$93'!48&&!<%(804$9#%9%0W

<344!<37=!0#G2$!%#0%!6#%&732&!=0$%94G2#%<&#G2%9!C%9A7%='%!08$:%0<#'!#4$W!480<%90!KN9 F#%&%!<%9!7=!<8A=(%0$#%9%0<%0!I=K'3H%0!3=G2!%#0!A&344#4G2%4!"%f$<8A=(%0$!3=49%#G2$W 30'%9%#G2%9$!(#$!¥#&K%!<%4!b#$%93$%!@98'93((#0'5I043$7%4!=(!3=4KN29H39%!-80K#'=93$#5 804H%4G29%#H=0'%0L!̀#%!2#%9!H%4G29#%H%0%!689'%2%04:%#4%!A8(($!4%#$!7:%#!g329%0!KN9

<#%!6%9:3&$=0'!4)($&#G2%9!B%9F%9W!̀#%04$%!=0<!7%0$93&!F%9:3&$%$%9!UrJtb#0=f5̀%4A$8O4

%9K8&'9%#G2!7=(!E#043$7L

̀#%!&#$%93$%!B^4$%(3<(#0#4$93$#80!4$.,$!30!#29%!U9%07%0W!:%00!4$39A!K89(3&#4#%9$%!@985 7%44%!<8A=(%0$#%9$!:%9<%0!48&&%0L!E#0!V%#4O#%&!4#0<!"#GA%$4!%#0%4!¥%&O<%4A5B^4$%(4L

̀#%4%!3&4!"%f$<8A=(%0$!=(7=4%$7%0!=0<!03G27=23&$%0W!#4$!F8(!I=K:30<!2%9!=0F%92)&$5 0#4(),#'!=0<!'%2$!%#02%9!(#$!%#0%(!j=0A$#803&#$)$4F%9&=4$!;U%0%9#%9=0'!F80!V%9#G2$%0W r3G223&$%0!F80!I9H%#$47%#$%0!=0<!<%9%0!IH9%G2=0'!=4:L?L!̀%97%#$!:#9<!30!<%9!j3A=&$)$

08G2!%#0!%#'%04$)0<#'%4 !"#GA%$5B^4$%( !%#0'%4%$7$W!<34!3=G2!%#0!C#A#!H%#023&$%$L!̀#%

J(4$%&&=0'!3=K!<34!6%94#804F%9:3&$=0'44^4$%(!j844#&W!<#%!F89!%#0%(!g329!F89'%08(5 (%0!:=9<%W!H#%$%$!P%<8G2!<#%!D.'&#G2A%#$W!"#GA%$4!=0<!C#A#!43($![=%&&<3$%#%0!<%9!̀85 A=(%0$3$#80!#0!%#0%9!%#07#'%0!c%O84#$89^5̀3$%#!7=!F%9%#0%0L!̀3(#$!:)9%!<300!<%9!&%$7$%

BG29#$$!2#0!7=!%#0%9!|=(K344%0<%0{!̀8A=(%0$3$#80!'%$30L

T"*!.3*:.A!.G!"12("0

nIbT]o I<%&4$%#0W!"Lz!b=H308F#GW!VLm!b#0=f!BG20%&&A=94!KN9!I<(#0#4$93$89%0L!V%#P#0'!%$!3&Lm!

qËc%#&&^!YTT]L

nI(TYo I(H&%9W!BLm!I'#&%!D8<%&#0'm!EKK%G$#F%!@93G$#G%4!K89!%y$9%(%!@98'93((#0'!30<!$2%!J0#5 K#%<!@98G%44L!r%:!ʻ89Am!g820!C#&%^˜B804!YTTYL

nV3̲̲o V344W!bLz!a&%(%0$4W!@Lz!-37(30W!cLm!B8K$:39%!I9G2#$%G$=9%!#0!@93G$#G%L!c%3<#0'W!D344L!%$

3&Lm!I<<#4805C%4&%^!R̲̲̲L

(13)

nV3TSo V3=%9W!DL̀Lm!b#0=f!B%9F%95B#G2%92%#$L!YL!I=K&L!V%#P#0'!%$!3&L!m!qËc%#&&^!YTTSL nV9RXo V930<&W!UL!;YTRX?m!BO2#0f!$%3(m!BO2#0f!<8G=(%0$!'%0%93$89L!2$$Omtt4O2#0f5<8GL89't nV9̲So V988A4W!jL@Lm!"2%!D^$2#G3&!D30!D80$2L!V84$80!%$!3&L!m!I<<#4805C%4&%^!R̲̲SL nV=TXo V=9'%44W!DLm!@9#0G#O&%4!8K!r%$:89A!30<!B^4$%(!I<(#0#4$93$#80L!YL!I=K&L!"2%!I$9#=(W!

B8=$2%90!U3$%W!a2#G2%4$%9W!C%4$!B=44%f!@qR̲!ZB[W!E0'&30<!m!g820!C#&%^˜B804!YTTXL ǹ%RYo ̀%'%0239<W!"L¢z!-89KKW!DL¢z!BG2)K%9(%#%9W!JLm!E#0KN29=0'!%#0%4!03G223&$#'%0!1"5

B%9F#G%!D303'%(%0$4!30!<%9!j¥!V#%&%K%&<L!10m!V930<$5@88A!t!j&%%9!t!BO#$$3!t!C3$$%0H%9'!

n¥94'Lo!r3G223&$#'%4!B8K$:39%!D303'%(%0$L!BCD!YTRYL!V#%&%K%&<!;YTRY?W!BL!RYMQRMXL ǹ%̲Yo ̀%0%9$W!ELm!B8K$:39%5E0'#0%%9#0'L!V%9&#0!%$!3&L!m!BO9#0'%9!R̲̲YL

nU3TSo U3=4W!CLm!̀8A=(%0$3$#8045!=0<!q9<0=0'4&%29%m!"2%89#%!=0<!@93f#4!<%4!10K89(3$#80!c%5

$9#%F3&L!SL!NH%939HL!I=K&LW!V%9&#0W!¥%#<%&H%9'!m!BO9#0'%9!YTTSL

nU9RXo U9=H%9W!gL!;YTRX?m!D39A<8:0L!2$$Omtt<39#0'K#9%H3&&L0%$tO98P%G$4t(39A<8:0t

n¥%̲̲o ¥%'%9#0'W!¥5ULz!IH%GAW!BLz!r%=(3#9W!VLm!10$%9'9#%9$%4!D303'%(%0$!F%90%$7$%9!B^4$%(%m!

-807%O$%W!I9G2#$%A$=9%0!=0<!<%9%0!H%$9#%H&#G2%9!E#043$7L!¥%#<%&H%9'!m!<O=0A$!R̲̲̲L n-jT̲o -#0#9^W!gLcLz!j3#9(#G23%&W!jLm!E04=9#0'!a804#4$%0G^!H%$:%%0!̀%4#'04W!̀8G=(%0$3$#80W!

j89(3&!BO%G#K#G3$#804W!30<!1(O&%(%0$3$#804L!10m!b%:#4!t!@8%908(8!t!¥8K(%#4$%9!n¥94'Lo!

a8(O80%0$5V34%<!B8K$:39%!E0'#0%%9#0'L!V%9&#0!¥%#<%&H%9'm!BO9#0'%9!YTT̲L!BL!YXY5YeRL n-0̲Yo -0=$2W!̀LELm!b#$%93$%!@98'93((#0'!5!a%0$%9!K89!$2%!B$=<^!8K!b30'=3'%!10K89(3$#80W!

R̲̲YL

n-8RMo -8K&%9W!DLm!b#0=fm!̀34!=(K344%0<%!¥30<H=G2L!U3&#&%8!a8(O=$#0'!YTRML n-9TRo -9N&&W!gLm!b#$%93$%!B^4$%(3<(#0#4$93$#80L!DN04$%9m!b1"!YTTRL

nb3TMo b30'4$80W!DLaLm!̀8G=(%0$3$#80!C9#$#0'!K89!B^4$%(!I<(#0#4$93$894L!V%9A%&^m! JBEr1y!

I448G#3$#80!YTTML

nD3T̲o D39$#0W!cLaLm!a&%30!a8<%m!c%K3G$89#0'W!@3$$%904W!"%4$%0!=0<!"%G20#A%0!KN9!43=H%9%0!

a8<%L!¥%#<%&H%9'!%$!3&L!m!(#$O!YTT̲L

nDGTXo DGa800%&&W!BLm!a8<%!a8(O&%$%L!YL!I=K&L!c%<(80<W!C342#0'$80W!D#G9848K$!@9%44!YTTXL n@aZeo @39034W!̀L!bLz!a&%(%0$4W!@L!aLm!I!c3$#803&!̀%4#'0!@98G%44m!¥8:!30<!C2^!$8!j3A%!#$L!!

1EEE!"93043G$#804!80!B8K$:39%!E0'#0%%9#0'!RY!;R̲Ze?W!r9L!YW!BL!YSRQYSeL

n@CRYo @&.$0%9W!gLz!C%0<7%&W!BLm!b#0=fm!̀34!=(K344%0<%!¥30<H=G2L!SL!3A$L!I=K&LW!U3&#&%8!a8(5 O=$#0'!YTRYL

n@8RMo @8&&%#W!cL!@L!;YTRM?m!̀%H#30!]m!B^4$%(!I<(#0#4$93$#80!V%4$!@93G$#G%4L!V#9(#0'23(!5!

D=(H3#m!@3GA$L

nc3RXo c3(4%^W!rL!;YTRX?m!@98P%G$4!=4#0'!08:%HL!2$$Omtt:::LG4L$=K$4L%<=tÍ09t08:%Ht=4%94 nB"T̲o BO#$$3W!"Lz!"%,(%9W!DLm!10K89(3$#80%0!3=4!<%(!%-66!5!¥#&K%!8<%9!VN98A93$#%>!10m!¥R!

V<L!YTT̲W!J0#F%94#$)$!V#%&%K%&<W!r9L!YW!BL!R]!=0<m!

2$$OmttO=HL=0#5H#%&%K%&<L<%tO=H&#G3$#80tYeZTS]M n"%TZo "%,(%9W!DL!;YTTZ?m!0:Y94$L!2$$Omtt:::L:#:#L=0#5

H#%&%K%&<L<%t&%29H%9%#G2%t4$3$8%A8#0KtG8(%$t($%44(%9tB8K$:39%t0:Y94$

n"%T̲o "%,(%9W!DL!;YTT̲?m!b#$%93$%!@98'93((#0'!(#$!b^yL!

2$$Omtt:::L:#:#L=0#5H#%&%K%&<L<%t&%29H%9%#G2%t4$3$8%A8#0KtG8(%$t($%44(%9t!

̀8:0&83<4t&#$%93$%wO98'93((#0'w:#$2w&^fLO<K

n"2Zeo "2#(H&%H^W!¥Lm!EfO%9#%0G%4!8K!b#$%93$%!@98'93((#0'!=4#0'!G:%H!;3!F39#30$!8K!

-0=$2Ë4!CEV?L!"2%!a8(O=$%9!g8=903&!Y̲!;R̲Ze?!MW!BL!YTRQYRRL nC8RXo C8&KW!@L!;YTRX?m!c5O3GA3'%59%&3fL!

2$$Omtt:::L:#:#L=0#5H#%&%K%&<L<%t&%29H%9%#G2%t4$3$8%A8#0KtG8(%$t:8&KtcwO3GA3'%w9%&3f!

Referenzen

ÄHNLICHE DOKUMENTE

Consider a simple form of expressions built up from single digits using the operations of addition + and multiplication * , together with parentheses. We also

  Compound terms unify if their functors and components unify.. We also say

Given an encoding of expert problem- solving as a logic program, it compares the program’s behaviour during incremental execution with observed learner behaviour.. Any

Phase II: If the original problem is feasible, apply the simplex algorithm to the initial feasible tableau obtained from Phase I above.. Again, two outcomes

• Optimal substructure: optimal solutions of subproblems can be used to find the optimal solutions of the overall problem.. Example: Finding the shortest path in

~6.3 0 Abweichend von Ziffer 4 EVB-IT Dienstleistung räumt der Auftragnehmer dem Auftraggeber das aus- schließliche, dauerhafte, unbeschränkte, unwiderrufliche und übertragbare

The max operation takes two rendered images, and for every pair of pixels, one from each source image of the corresponding position and band, finds the maximum pixel value. The

ˆ In the previous example, if a generic function is called with an instance of class B and there is no class B method, a class A method could be