Valid XHTML     Valid CSS2    

Listing du fichier s1p1.php

 

00001     <?php
00002     #    (gH)   -_-  s1p1.php  ;  TimeStamp (unix) : 30 Novembre 2012 vers 08:59
00003     
00004     error_reporting
(E_ALL E_NOTICE E_STRICT) ;
00005     include("std.php"
) ;
00006     include("../xmlstd.php"
) ;
00007     include("scripts_inc.php"
) ;
00008     
00009     $numSerie 
;
00010     debutPageExoScr1
($numSerie) ;
00011     
00012     ## -------------------------------------------------------------------------------------------
00013     
00014     sdl
(3) ; echo cmt(' pour afficher toutes les solutions : wedrd01.php?solutions=1') ; sdl(3) ;
00015     
00016     ## -------------------------------------------------------------------------------------------
00017     
00018     debutSection
() ;
00019     
00020     $tableauDesRubriques 
= array() ;
00021     $idr 
;
00022     $idr
++; $tableauDesRubriques[$idr] = "Comparaison entre \"grands langages\" et langages de scripts" ;
00023     $idr
++; $tableauDesRubriques[$idr] = "Autres langages de scripts" ;
00024     $idr
++; $tableauDesRubriques[$idr] = "Le langage APL et ses dérivés : J et K" ;
00025     $idr
++; $tableauDesRubriques[$idr] = "Le langage SCALA" ;
00026     $idr
++; $tableauDesRubriques[$idr] = "Installation des interpréteurs et numéros de version " ;
00027     $idr
++; $tableauDesRubriques[$idr] = "Cartes de référence" ;
00028     $tdmCRLM 
= new tdm($tableauDesRubriques) ;
00029     $tdmCRLM
->titre() ;
00030     $tdmCRLM
->menu("oui","oui","nou") ;
00031     
00032     pvide
() ;
00033     
00034     p
() ;
00035      echo "Il est possible d'afficher toutes les solutions via "
.href("s1p$numSerie.php?solutions=1","?solutions=1","bouton_fin jaune_pastel nou").". " ;
00036     finp
() ;
00037     
00038     finSection
() ;
00039     
00040     debutSection
() ;
00041     $numExo 
;
00042     
00043     ## -------------------------------------------------------------------------------------------
00044     
00045     $tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; # Comparaison \"grands langages\" et langages de scripts
00046     
00047     ## -------------------------------------------------------------------------------------------
00048     
00049     blockquote
() ;
00050     
00051     blockquote
() ;
00052     
00053     p
("texte") ;
00054     echo "Y a-t-il vraiment des raisons profondes pour opposer les \"grands langages\" et les langages de scripts&nbsp;? " 
;
00055     echo " Peut-on faire l'impasse de certains grands langages&nbsp;? et de certains langages de scripts&nbsp;? " 
;
00056     finp
() ;
00057     
00058     finblockquote
() ;
00059     
00060     solution
($numExo,$numSerie) ;
00061     
00062     p
("texte") ;
00063     echo "La &laquo;guerre des langages de programmation&raquo; a existé dès l'apparition du premier langage de haut niveau " 
;
00064     echo " puisqu'il entrait en concurrence avec l'assembleur. Historiquement, les premiers langages ne visaient pas les " 
;
00065     echo " m&ecirc;mes buts&nbsp;: Fortran servait à réaliser des calculs scientifiques alors que Cobol était dédié aux " 
;
00066     echo " applications de gestion (APL restant peu connu à l'époque). C'est à partir du moment où C et Pascal ont été reconnus " 
;
00067     echo " comme langages généraux pouvant tout programmer que la rivalité est apparue. L'opposition avec les langages de scripts " 
;
00068     echo " n'a duré qu'une dizaine d'années&nbsp;: on reconnait aujourd'hui la complémentarité des approches, les langages de scripts " 
;
00069     echo " servant aux développements rapides, de petite taille ou de prototypage ou lorsque la vitesse d'exécution n'est pas le " 
;
00070     echo " critère de choix le plus important. " 
;
00071     finp
() ;
00072     
00073     
00074     p
("texte") ;
00075     echo "Des langages spécialisés comme Ada, Lisp ou Prolog ont gardé leurs adeptes (fanatiques&nbsp;? zélotes&nbsp;?)  " 
;
00076     echo " alors que certains langages n'ont jamais vraiment " 
;
00077     echo " été reconnus, parfois injustement, comme Logo, Forth, Modula, Oberon. Certains, considérés aujourd'hui comme "
.em("mythiques et fondateurs") ;
00078     echo " comme le fameux SmallTalk ou PL/1, ne sont plus vraiment utilisés. Enfin, les langages comme Miranda, Haskell, Camel " 
;
00079     echo " ou l'incontournable Basic (par exemple de VBA) restent toujours "
.em("à part").". " ;
00080     finp
() ;
00081     
00082     p
("texte") ;
00083     echo "Il nous semble qu'il n'est pas raisonnable aujourd'hui de faire l'impasse sur les grands langages que sont C, C++ et Java. " 
;
00084     echo " Toutefois, après un apprentissage de base de ces deux langages -- ce qui inclut : la programmation objet, " 
;
00085     echo " les expressions régulières, les itérateurs et les tableaux associatifs --, " 
;
00086     echo " il est certainement préférable de choisir puis d'approfondir et " 
;
00087     echo " de maitriser un seul de ces deux langages, plut&ocirc;t que de vouloir garder un niveau égal dans les deux langages. " 
;
00088     finp
() ;
00089     
00090     p
("texte") ;
00091     echo "On peut certainement appliquer la m&ecirc;me stratégie pour les langages de scripts. Il est assez facile d'en apprendre les rudiments " 
;
00092     echo " en une heure, quelque soit le langage, quitte à approfondir plus tard, afin de pouvoir revendiquer cela sur un CV, ou pour automatiser " 
;
00093     echo " les t&acirc;ches courantes. Par contre, choisir ensuite entre Perl, Python ou Ruby relève d'un choix personnel, voire d'une embauche " 
;
00094     echo " à la clé. Certains projets comme BioConductor fournissent des programmes C avec des interfaces nommées BioPerl, BioR, BioPython... " 
;
00095     echo " On voit ici comment la bioinformatique a résolu le problème du choix des langages de scripts&nbsp;: on les prend tous&nbsp;! "
.
00096     finp
() ;
00097     
00098     p
("texte") ;
00099     echo "Par contre on pourra certainement se dispenser d'approfondir Apl ou Rexx et, si on fait l'impasse sur les calculs statistiques (ce qui est " 
;
00100     echo " sans doute une grave erreur de culture), de maitriser le langage R -- mais pas d'en connaitre les bases." 
;
00101     finp
() ;
00102     
00103     finsolution
() ;
00104     
00105     finblockquote
() ;
00106     
00107     ## -------------------------------------------------------------------------------------------
00108     
00109     $tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; # Autres langages de scripts
00110     
00111     ## -------------------------------------------------------------------------------------------
00112     
00113     blockquote
() ;
00114     
00115     blockquote
() ;
00116     p
("texte") ;
00117     echo "A part ceux cités sur la "
.href("index.php","page principale")." de ce cours, " ;
00118     echo " y a-t-il d'autres langages de scripts&nbsp;? anciens&nbsp;? nouveaux&nbsp;? encore utilisés&nbsp;? " 
;
00119     finp
() ;
00120     finblockquote
() ;
00121     
00122     solution
($numExo,$numSerie) ;
00123     
00124     p
("texte") ;
00125     echo "Il y a  eu principalement EXEC (remplacé par REXX), APL, Logo m&ecirc;me si ces deux derniers langages ne sont pas toujours " 
;
00126     echo " considérés par tous les programmeurs comme des langages de scripts. " 
;
00127     echo " Mais surtout, il ne faut pas oublier, bien s&ucirc;r, les langages de scripts \"de bas niveau\" " 
;
00128     echo " dédiés au système d'exploitation, comme celui de Dos,  Bash ou équivalents (pour Linux). Si nous ne les présentons pas, c'est " 
;
00129     echo " principalement parce qu'ils ne sont pas "
.b("interopérables")." comme on dit, ce qui signifie qu'un script pour un OS ".s_span("x","gvert")." ne s'exécutera " ;
00130     echo " pas sur un OS "
.s_span("y","gvert")." alors qu'un script PERL, par exemple, n'est pas directement lié à l'OS (c'est l'interpréteur-programme qui est différent, " ;
00131     echo " pas le script). " 
;
00132     echo " APL, en tant que produit IBM est toujours " 
;
00133     echo " utilisé, de m&ecirc;me que les versions pour Windows et Linux, à cause de la puissance d'expression d'APL (voir exercice suivant) " 
;
00134     echo " alors que Logo semble avoir à peu près disparu." 
;
00135     finp
() ;
00136     
00137     p
("texte") ;
00138     echo " Les langages dédiés, présents en m&ecirc;me temps que le système d'exploitation sont forcément encore beaucoup utilisés (qui n'a jamais " 
;
00139     echo " écrit un fichier .BAT, .CMD ou .sh pour changer de répertoire avant de lancer une application&nbsp;?) ne serait-ce que parce qu'on peut " 
;
00140     echo " associer à leurs scripts des raccourcis-clavier, des icones... " 
;
00141     finp
() ;
00142     
00143     p
("texte") ;
00144     echo "Il serait vain de penser que les langages de scripts sont figés. Certains apparaissent, d'autres disparaissent. Il faut attendre l'usage " 
;
00145     echo " et la popularité, bref il faut du temps avant de découvrir si un langage "
.b("reste").". Donc, il faut peut-&ecirc;tre ne pas jeter " ;
00146     echo " trop vite des langages comme Rebol, Autoit, Lua, Groovy, Squeak..." 
;
00147     echo " ou encore "
.href("http://www.lemondeinformatique.fr/actualites/lire-10-langages-de-developpement-pour-secouer-la-it-1ere-partie-48206.html","Chapel, Zimbu","gbleuf nou") ;
00148     echo " qui \"datent\" des année 2010-2020..." 
;
00149     finp
() ;
00150     
00151     finsolution
() ;
00152     
00153     finblockquote
() ;
00154     
00155     ## -------------------------------------------------------------------------------------------
00156     
00157     $tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; # Le langage APL et ses dérivés : J et K
00158     
00159     ## -------------------------------------------------------------------------------------------
00160     
00161     blockquote
() ;
00162     
00163     blockquote
() ;
00164     p
("texte") ;
00165     echo "Pourquoi le langage APL est-il encore aujourd'hui (2012) très différent de tous les autres langages&nbsp;? " 
;
00166     echo " Que peut-on faire aujourd'hui avec APL&nbsp;? " 
;
00167     echo " Sans faire référence aux "
.em("Men in Black").", que sont J et K&nbsp;?" ;
00168     finp
() ;
00169     finblockquote
() ;
00170     
00171     solution
($numExo,$numSerie) ;
00172     
00173     p
("texte") ;
00174     echo "En fait, APL n'utilise pas des mots mais des symboles. Par exemple +/V calcule la somme des éléments du vecteur V et " 
;
00175     echo " +/,M calcule la somme des éléments d'une matrice (car ,M linéarise la matrice, c'est-à-dire en fait un vecteur). " 
;
00176     echo "De m&ecirc;me l'expression (&iota;N °.x &iota;N<-10) produit les tables de multiplications des nombres de 1 à 10. " 
;
00177     echo " C'est ce qui rend APL si cryptique mais aussi très concis car chaque symbole peut s'utiliser avec 0, 1 ou 2 arguments " 
;
00178     echo " qui est éventuellement le chainage d'autres symboles avec  0, 1 ou 2 arguments... " 
;
00179     echo " On pourra consulter mon "
.href("../tuteurs/tutapl.htm","tuteur APL")." pour plus de renseignements." ;
00180     finp
() ;
00181     
00182     p
("texte") ;
00183     echo "Il fallait au départ un clavier spécial pour utiliser APL. Sans doute trop précoce, il a continué à faire des fanatiques " 
;
00184     echo " et des adeptes, notamment pour les mathématiques, les statistiques, les études économiques. Avec Windows et X-Window, APL est devenu " 
;
00185     echo " plus facile à utiliser et son mode en session interactive permet d'écrire rapidement des interfaces... " 
;
00186     echo " Les langages J et K sont les successeurs d'APL, avec des notations qu'on peut écrire avec un clavier \"normal\". "  
;
00187     echo " Pour plus de renseignements, voir (dans cet ordre) la " 
;
00188     echo href
("http://en.wikipedia.org/wiki/APL_%28programming_language%29","page anglaise du wiki sur APL") ;
00189     echo  " puis la "
.href("http://fr.wikipedia.org/wiki/APL_%28langage%29","page française du wiki sur APL") ;
00190     echo " puis le document "
.href("http://www.afapl.asso.fr/AFAPL_2006_v2.pdf","APL vu du ciel","nou") ;
00191     echo " avant de passer au "
.href("http://en.wikipedia.org/wiki/J_%28programming_language%29","langage J") ;
00192     echo " et au "
.href("http://en.wikipedia.org/wiki/K_%28programming_language%29","langage K")." avec le fameux exemple " ;
00193     echo " suivant : " 
;
00194     finp
() ;
00195     
00196     pre_fichier
("demo_j.txt","cadrebleu") ;
00197     
00198     p
("texte") ;
00199     echo " qui fait ce que vous pensez ! " 
;
00200     finp
() ;
00201     
00202     p
("texte") ;
00203     echo "Vous pouvez tester APL sans l'installer via "  
;
00204     echo href
("http://tryapl.org/","tryapl.org").". " ;
00205     finp
() ;
00206     
00207     
00208     finsolution
() ;
00209     
00210     finblockquote
() ;
00211     
00212     ## -------------------------------------------------------------------------------------------
00213     
00214     $tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; # Le langage SCALA
00215     
00216     ## -------------------------------------------------------------------------------------------
00217     
00218     blockquote
() ;
00219     
00220     p
("texte") ;
00221     echo "Qu'est-ce que le langage SCALA&nbsp;? Pourquoi est-il un des rares langages à pouvoir se revendiquer " 
;
00222     echo " à la fois langage de scripts et \"grand langage\"&nbsp;? " 
;
00223     finp
() ;
00224     
00225     solution
($numExo,$numSerie) ;
00226     
00227     p
("texte") ;
00228     echo "SCALA est un langage à la fois objet, fonctionnel et multi-échelle (du prototype à l'application lourde), compatible et incluant " 
;
00229     echo " Java VM. " 
;
00230     echo " Il est compilable comme un grand langage, utilisable en interactif comme un langage de scripts... " 
;
00231     echo " Le site " 
;
00232     # echo href("http://www.siteduzero.com/tutoriel-3-320930-fonctionnalites-principales.html","fonctionnalités") ;
00233     echo 
href("http://openclassrooms.com/courses/apprenez-la-programmation-avec-scala/pourquoi-scala",em("open classrooms")) ;
00234     echo " présente assez bien quelques-unes des particularités de ce langage. " 
;
00235     echo " Le "
.href("http://www.scala-lang.org/","site officiel")." contient au " ;
00236     echo href
("http://www.scala-lang.org/node/25","noeud_25","nou")." un résumé des avantages de Scala. " ;
00237     echo " Enfin, la "
.href("http://en.wikipedia.org/wiki/Scala_%28programming_language%29","page anglaise du wiki") ;
00238     echo " (mais pas la page française) est assez explicite sur les styles " 
;
00239     echo " de programmation offerts par Scala." 
;
00240     finp
() ;
00241     
00242     
00243     finsolution
() ;
00244     
00245     finblockquote
() ;
00246     
00247     ## -------------------------------------------------------------------------------------------
00248     
00249     $numExo
++ ; $tdmCRLM->afficheRubrique("oui") ; # Installation des interpréteurs et numéros de version
00250     
00251     ## -------------------------------------------------------------------------------------------
00252     
00253     blockquote
() ;
00254     
00255     p
("texte") ;
00256     echo "Vérifiez que vous disposez bien des langages Awk, Rexx/Regina, Perl (version 5), Rhino, Php (au moins 5.3), Python (version 3.1), " 
;
00257     echo " Ruby (version 1.9), Tcl et Tk&nbsp;; " 
;
00258     echo " dans le cas contraire, installez les versions demandées. " 
;
00259     echo " Pour chaque langage, afficher le numéro de version et pour tous les langages sauf Awk, calculer 2 puissance 8 en mode interactif." 
;
00260     finp
() ;
00261     
00262     solution
($numExo,$numSerie) ;
00263     
00264     p
("texte") ;
00265     echo "L'installation des logiciels sous Linux se fait très simplement avec "
.b("sudo apt-get")."."  ;
00266     finp
() ;
00267     
00268     pre_fichier
("installations.txt","cadre") ;
00269     
00270     p
("texte") ;
00271     echo " Sous Windows, il faut recourir à des installeurs (.exe), par exemple sur le site d'Active State " 
;
00272     echo " pour Perl, Tcl/Tk et Python. Voici les adresses officielles que nous conseillons pour Windows&nbsp;:" 
;
00273     finp
() ;
00274     
00275     $langs 
"Awk Rexx Perl Php Javascript Tcl Python Ruby" ;
00276     $tlang 
preg_split("/\s+/",$langs) ;
00277     
00278     blockquote
() ;
00279     table
(1,5,"collapse") ;
00280       tr
() ;
00281           th
("C","jaune_pastel") ; echo s_nbsp(3)." Langage " .s_nbsp(3) ; finth() ;
00282           th
("L","bleu_pastel") ; echo s_nbsp(3)." Site (cliquer) " .s_nbsp(3) ; finth() ;
00283       fintr
() ;
00284       foreach ($tlang 
as $lang) {
00285         tr
() ;
00286           td
("L","bleu_pastel") ; echo s_nbsp(3).$lang.s_nbsp(3) ; fintd() ;
00287              $site 
"???" ;
00288              $adr  
"!!!" ;
00289              if ($lang
=="Awk")        { $site "gnuwin32"      $adr "http://gnuwin32.sourceforge.net/packages/gawk.htm" ; }
00290              if ($lang
=="Rexx")       { $site "sourceforge"   $adr "http://regina-rexx.sourceforge.net/" ; }
00291              if ($lang
=="Perl")       { $site "active state"  $adr "http://www.activestate.com/activeperl" ; }
00292              #if ($lang=="Php")        { $site = "zmws"          ; $adr = "http://www.zmws.com/" ; }
00293              if (
$lang=="Php")        { $site "zmws"          $adr "http://fr.wikipedia.org/wiki/Zazouminiwebserver" ; }
00294              if ($lang
=="Javascript") { $site "mozilla.org"   $adr "https://developer.mozilla.org/en-US/docs/Rhino" ; }
00295              if ($lang
=="Tcl")        { $site "active state"  $adr "http://www.activestate.com/activetcl" ; }
00296              if ($lang
=="Python")     { $site "active state " $adr "http://www.activestate.com/activepython" ; }
00297              if ($lang
=="Ruby")       { $site "ruby-lang "    $adr "http://www.ruby-lang.org/fr/downloads/" ; }
00298           td
("C","jaune_pastel") ; echo s_nbsp(3).href($adr,$site,"nou").s_nbsp(3) ; fintd() ;
00299         fintr
() ;
00300       } ; # fin pour
00301     fintable
() ;
00302     finblockquote
() ;
00303     
00304     
00305     p
("texte") ;
00306     echo "Pour les numéros de version, le paramètre -v ou --version est souvent implémenté&nbsp;:" 
;
00307     finp
() ;
00308     
00309     pre_fichier
("versions.txt","cadre") ;
00310     
00311     p
("texte") ;
00312     echo "Le calcul de 2 puissance 8 se fait soit par simple évaluation, soit par appel d'une fonction ou d'une méthode &nbsp;:" 
;
00313     finp
() ;
00314     
00315     pre_fichier
("puissances.txt","cadrebleu") ;
00316     
00317     finsolution
() ;
00318     
00319     finblockquote
() ;
00320     
00321     ## -------------------------------------------------------------------------------------------
00322     
00323     $tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; # Cartes de référence
00324     
00325     ## -------------------------------------------------------------------------------------------
00326     
00327     blockquote
() ;
00328     
00329     p
("texte") ;
00330     echo "Où trouver des cartes de référence pour chacun des langages de scripts cités&nbsp;? " 
;
00331     echo "Et des tableaux synoptiques de commande pour retrouver les syntaxes de base&nbsp;? " 
;
00332     finp
() ;
00333     
00334     solution
($numExo,$numSerie) ;
00335     
00336     
00337     p
("texte") ;
00338     echo "Il y a de nombreux sites qui fournissent des cartes de référence, plus ou moins détaillées. " 
;
00339     echo " Une tentative intéressante est " 
;
00340     echo href
("http://hyperpolyglot.org") ;
00341     echo " par exemple pour sa page "
.href("http://hyperpolyglot.org/scripting","scripting").",  " ;
00342     echo " mais il faut au moins un écran 27 pouces pour en profiter ! " 
;
00343     echo " Pour Perl et Php, il y a la fameuse page " 
;
00344     #echo href("http://antigreen.org/vadim/ProgLanguageComparison/perl2php.html","perl2php").". " ;
00345     echo 
href("http://www.cs.wcupa.edu/rkline/perl2php/","perl2php").". " ;
00346     echo "De nombreuses cartes de références sont aussi nommées " 
;
00347     echo href
("http://www.addedbytes.com/cheat-sheets/","cheat-sheets").", " ;
00348     echo " d'où le site "
.href("http://www.cheatography.com/","cheatography").". " ;
00349     echo  "Mais il y a aussi " 
# .href("http://refcards.com/subject/all","refcards.com").", " ;
00350     #echo href("http://devcheatsheet.com/","devcheatsheet.com") ;
00351     echo 
href("http://rosettacode.org/wiki/Category:Programming_Tasks","rosetta code","gbleuf nou").", " ;
00352     echo href
("http://refcardz.dzone.com/","refcardz")." , " ;
00353     echo href
("http://webdeveloper.econsultant.com/cheat-sheets/","econsultant cheat-sheets","gbleuf nou").", " ;
00354     echo " et "
.href("http://www.dzone.com/links/index.html","dzone")."... " ;
00355     
00356     finp
() ;
00357     
00358     finsolution
() ;
00359     
00360     finblockquote
() ;
00361     
00362     
00363     ## -------------------------------------------------------------------------------------------
00364     
00365     finPageExercices
($numSerie) ; # contient finSection() et finPage() ; la fonction est dans scripts_inc.php
00366     
00367     ?>

Pour ne pas voir les numéros de ligne, ajoutez &nl=non à la suite du nom du fichier.

 

 

retour gH    Retour à la page principale de   (gH)