IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Caml Discussion :

Calculs sur Grands entiers.


Sujet :

Caml

  1. #1
    Inactif
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 136
    Points : 25
    Points
    25
    Par défaut Calculs sur Grands entiers.
    Bonjour,

    peut-on me réexpliquer comment on fait 4294967295+2 en caml light s'il vous plait?
    Je croyais qu'il fallait faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #open "num";;
    Int (4294967295) +/ Int 2;;
    , mais ça ne marche pas, et si je remplace "Int" par "Big_int" ça marche encore moins...

  2. #2
    Membre éprouvé
    Avatar de Cacophrene
    Homme Profil pro
    Biologiste
    Inscrit en
    Janvier 2009
    Messages
    535
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Biologiste

    Informations forums :
    Inscription : Janvier 2009
    Messages : 535
    Points : 1 125
    Points
    1 125
    Par défaut
    Salut !

    Il faut d'abord utiliser #load "nums.cma" pour charger la bibliothèque dans le toplevel. Ensuite, tu peux ouvrir le module Num avec open Num;;

    La commande #open "fichier.ml" sert uniquement à charger un fichier contenant du code source.

    Résumé général des commandes qui commencent par un dièse :

    #load "lib.cma/file.cmo";; Charge une bibliothèque, un fichier compilé.
    #open "file.ml";; Charge des définitions à partir d'un fichier .ml.
    #quit;; Quitte le toplevel.
    et quelques autres inutiles ici.

    Cordialement,
    Cacophrène

    PS : je dis ça en me basant sur OCaml. Je présume que c'est pareil sous Caml-Light.

  3. #3
    Membre émérite
    Avatar de SpiceGuid
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 704
    Points : 2 990
    Points
    2 990
    Par défaut
    L'addition sur grand nombres c'est l'opérateur +/ comme tu l'as fait sauf que:
    • il faut parenthéser correctement
    • 4294967295 est trop grand pour être un int valide


    Code Caml Light : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    # #open "num";;
    # (num_of_string "4294967295") +/ (Int 2);;
    - : num = 4294967297

    @Cacophrene
    Les commandes top-level en Caml-Light sont ressemblantes mais pas identiques, d'ailleurs la plupart ne sont pas des commandes mais des fonctions → unit.

  4. #4
    Membre éprouvé
    Avatar de Cacophrene
    Homme Profil pro
    Biologiste
    Inscrit en
    Janvier 2009
    Messages
    535
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Biologiste

    Informations forums :
    Inscription : Janvier 2009
    Messages : 535
    Points : 1 125
    Points
    1 125
    Par défaut
    Salut !

    Citation Envoyé par SpiceGuid
    Les commandes top-level en Caml-Light sont ressemblantes mais pas identiques, d'ailleurs la plupart ne sont pas des commandes mais des fonctions → unit.
    OK c'est bon à savoir et ça confirme ce que je pense de caml-light.

    Cordialement,
    Cacophrène

  5. #5
    alex_pi
    Invité(e)
    Par défaut
    Vivement que les prépas passent à OCaml pour de bon... Ce sont bien les derniers à se servir du light !

  6. #6
    Membre émérite
    Avatar de SpiceGuid
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 704
    Points : 2 990
    Points
    2 990
    Par défaut
    Citation Envoyé par elishac
    et quand est-ce qu'on se sert de Big_int (ou de ratio) alors ?
    Pour seulement construire des valeurs tu ne dois utiliser que les types int, string et les fonctions coercions between numerical types.

    Code Caml-Light : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    # #open "num";;
    # (num_of_string "4294967295") +/ (num_of_int 2);;
    - : num = 4294967297

    On peut créer un num rationnel à l'aide de num_of_string :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    # num_of_string "-2/3";;
    - : num = -2/3
    Les constructeurs Int, Big_int et Ratio peuvent servir pour créer de nouvelles opérations.
    Par exemple une valeur absolue de type ratioratio :

    Code Caml-Light : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    let abs_ratio q =
      ratio_of_num (abs_num (Ratio q));;

    Mais si tu n'utilise que les opérations standards tu n'as pas besoin de Int, Big_int ou Ratio.

  7. #7
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Points : 2 467
    Points
    2 467
    Par défaut
    Citation Envoyé par alex_pi Voir le message
    Vivement que les prépas passent à OCaml pour de bon... Ce sont bien les derniers à se servir du light !
    Mais ce que je ne comprends pas, c'est pourquoi ne pas demander à son prof plutôt que venir ici ? J'ai volontairement esquivé la prépa, mais que ça ait été au secondaire ou à l'université (française) tous mes profs répondaient à mes question. C'est le genre de truc qu'il devrait enseigner non ?

    Timidité de la part d'elishac ? C'est de la timidité mal placé alors.

  8. #8
    alex_pi
    Invité(e)
    Par défaut
    Citation Envoyé par Garulfo Voir le message
    Mais ce que je ne comprends pas, c'est pourquoi ne pas demander à son prof plutôt que venir ici ?
    En même temps, c'est pas vraiment le choix du prof hein... C4est le programme qui est comme ça. Le choix se fait entre Pascal et CamlLight. Donc râler contre CamlLight revient à demander Pascal :p

  9. #9
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Points : 2 467
    Points
    2 467
    Par défaut
    Citation Envoyé par alex_pi Voir le message
    En même temps, c'est pas vraiment le choix du prof hein... C4est le programme qui est comme ça. Le choix se fait entre Pascal et CamlLight. Donc râler contre CamlLight revient à demander Pascal :p
    LOL ce n'est pas ce que je voulais dire.
    Il me semble que le prof est quand même capable de répondre à ce genre de question. Venir demander ici c'est plus long que de lui demander directement.

    En tout cas…

    Sinon j'ai toujours adoré Pascal et je l'enseignerais volontiers au dépend du C++ -_-

  10. #10
    Membre éprouvé
    Avatar de InOCamlWeTrust
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 036
    Points : 1 284
    Points
    1 284
    Par défaut
    Citation Envoyé par alex_pi Voir le message
    En même temps, c'est pas vraiment le choix du prof hein... C4est le programme qui est comme ça.
    Tant qu'on aura un certain abruti au ministère, que je ne nomerai pas et qui n'a toujours pas compris que l'informatique compte de plus en plus dans le travail quotidien d'un ingénieur, on ne passera pas à Caml Light.

    Pourquoi ?

    Parce que !

    Concernant le choix, je verrais bien l'apprentissage de Caml et de Fortran obligatoires, même en prépa.

  11. #11
    alex_pi
    Invité(e)
    Par défaut
    Citation Envoyé par InOCamlWeTrust Voir le message
    Concernant le choix, je verrais bien l'apprentissage de Caml et de Fortran obligatoires, même en prépa.
    De fortran ? Allez avoue, c'est juste pour troller

  12. #12
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Points : 2 467
    Points
    2 467
    Par défaut
    Citation Envoyé par alex_pi Voir le message
    De fortran ? Allez avoue, c'est juste pour troller
    Pour un ingénieur, ce n'est pas idiot d'apprendre Fortran. Certes le langage a pris un coup de vieux, mais il est toujours utilisé dans de très nombreuses applications dédiés au génie avec fort composante numérique.

  13. #13
    alex_pi
    Invité(e)
    Par défaut
    Citation Envoyé par Garulfo Voir le message
    Pour un ingénieur, ce n'est pas idiot d'apprendre Fortran. Certes le langage a pris un coup de vieux, mais il est toujours utilisé dans de très nombreuses applications dédiés au génie avec fort composante numérique.
    Alors déjà, je rappelle que le but de la prépa n'est pas de former des ingénieurs, mais de former des gens à être formé à être des ingénieurs

    Ensuite COBOL est lui même énormément utilisé, donc on le pousse aussi sur la pile ?
    Le choix d'un enseignement en prépa doit se faire pour ses vertus pédagogique, pas pour ses applications pratiques. Et honnêtement, de l'expérience des gens autour de moi, enseigner Fortran est un très bon moyen pour dégouter tout le monde de l'informatique et en particulier de la programmation.

  14. #14
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    Citation Envoyé par alex_pi Voir le message
    Le choix d'un enseignement en prépa doit se faire pour ses vertus pédagogique, pas pour ses applications pratiques.
    je doute que ce soit la raison du choix de caml light

  15. #15
    alex_pi
    Invité(e)
    Par défaut
    Citation Envoyé par gorgonite Voir le message
    je doute que ce soit la raison du choix de caml light
    Pourquoi pas ? Pourquoi un langage fonctionnel avec types algébriques n'est pas un choix pédagogique ? C'est clairement pas un choix poussé par des raisons industrielles pourtant

    C'est justement le fait qu'il soit très orienté "top-level", avec une boucle interactive potable (pas comme celle de base d'OCaml) qui en fait un choix "pédagogique". Après, je serais partisan de passer à OCaml, histoire de montrer aux élèves que ce n'est pas que un jouet, mais il faudrait d'abord être capable de proposer des solutions vraiment simples aux élèves, parce que pour beaucoup, l'informatique n'est pas un vrai choix, et les noyer sous des problèmes de compilation, de link, ou que sais-je, n'est peut être pas le meilleur moyen de débuter.

    Bon, on s'éloigne quand même sérieusement du sujet initiale là

  16. #16
    Membre émérite
    Avatar de SpiceGuid
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 704
    Points : 2 990
    Points
    2 990
    Par défaut
    Il faut garder à l'esprit que quelque soit le langage il fera forcément des dégoutés. Caml-Light dégoute nombre de débutants qui auraient pu trouver leur bonheur avec un langage à typage dynamique. OCaml dégoute bon nombre de programmeurs POO qui ne voient les choses que du mauvais côté (paradigme exotique, messages d'erreur abscons). Coq dégoute les mathématiciens. PHP dégoute les plus soigneux. Java dégoute les plus "agiles". Pascal dégoute les programmeurs C et vice-versa. En résume un langage peut être propre tout en étant dégoutant.

    Et même sans parler des dégoutés, il n'existe pas le mouton à 5 pattes qui :
    • permet une bonne approche algorithmique
    • permet toutes les opérations de bas niveau
      Citation Envoyé par Donald Knuth
      People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird.
    • offre de large débouchés sur le marché de l'emploi


    La règle d'or à mon avis c'est surtout de ne pas changer de langage à chaque année du cursus.

  17. #17
    Membre éprouvé
    Avatar de InOCamlWeTrust
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 036
    Points : 1 284
    Points
    1 284
    Par défaut
    C'est très joli ce que tu dis-là, alex_pi, mais honnêtement, lorsque l'on parle de Caml Light il faut comprendre Caml Light !

    1- Les élèves en prépa sont, sauf preuve contraire, de futurs ingénieurs. Les choses évoluant, les ingénieurs d'aujourd'hui, quelle que soit leur discipline, ne font que de l'informatique. Certains utilisent des logiciels de calcul de mécanique de fluides et font quelques applications numériques MATLAB que leur super environnement à [mettre montant avec six zéros] EUR ne peut pas faire. D'autres programment de tous petits drivers pour ports I2C tournant sur PICs, ou encore calculent des rayonnements électromagnétiques à l'aide de [mettre outil ou langage de calcul ici]. D'autres passent leur temps à faire des scripts de configuration réseau. Enfin, les derniers font les programmes utilisés par tout ce beau monde... ainsi que les outils nécessaires aux informaticiens pour programmer les logiciels utilisés par leur confrères hydroliciens, électroniciens, électriciens ou ingénieurs télécom !

    Compiler, linker, lire une doc en anglais, modifier un programme écrit par un inconnu, implanter un algorithme d'algèbre linéaire ou encore utiliser des mailleurs est devenue la principale composante du métier d'ingénieur. Plutôt qu'enseigner de la SI, les prépas feraient mieux de préparer les élèves à leur métier, celui de la vraie vie. Et ce choix ne devrait pas être arrêté par une personne détestant ouvertement et sans scrupules mathématiciens et informaticiens.

    2- Si Caml Light est toujours utilisé, c'est justement à cause de son côté merdique ! Il est ainsi plus facile de porter le discrédit sur une discipline (voir 1-) si on impose soi-même des outils et un langage complètement dépassés et inutilisables concrètement, et dont la dernière mise à jour doit dater de 2002, je crois.

    Imposer un langage fonctionnel, c'est très bien. Mais je pense qu'il serait également intéressant d'imposer un langage purement impératif (C ne l'est pas) comme FORTRAN 77 qui oblige le programmeur à ne penser qu'en impératif et à consciencieusement gérer sa mémoire, ses boucles et indices et ses Segfault.

  18. #18
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    832
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 832
    Points : 1 104
    Points
    1 104
    Par défaut
    InOCamlWeTrust : il y a visiblement des sous-entendus de ton post que je ne comprends pas (personne détestant ouvertement ... ?). Si tu veux expliquer pourquoi des gens veulent volontairement discréditer ce domaine, tu devrais être plus explicite.

    Ce que je peux dire par contre c'est que :

    - je ne pense pas que conserver Caml Light en prépa soit issu d'une stratégie volontaire, mais uniquement d'une sorte de paresse; la plupart des professeurs d'info en prépa sont avant tout des profs de maths, et ils utilisent pour la programmation les outils dont ils ont l'habitude. Le coût du changement vers Objective Caml (d'habitudes, d'outils dans les salles infos, des modifications syntaxiques dan sle poly, etc.) est supérieur aux bénéfices qu'ils en retireraient, puisque ils continueraient de toute façon à enseigner le sous-ensemble commun des deux langages

    - les élèves de prépa n'ont tout simplement pas le temps de s'investir dans l'info. Acquérir des bases dans un langage jouet, 4 heures par semaine, c'est acceptable, mais si tu espères leur faire véritablement apprendre à programmer, tu fonces vers de grandes désillusions. Ils n'ont surtout pas envie d'apprendre à gérer la mémoire ou des concepts bas niveau, et préfèrent un langage plus proche des mathématiques (à raison, à mon humble avis), qui leur demande moins d'efforts conceptuels.

  19. #19
    Membre éprouvé
    Avatar de Cacophrene
    Homme Profil pro
    Biologiste
    Inscrit en
    Janvier 2009
    Messages
    535
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Biologiste

    Informations forums :
    Inscription : Janvier 2009
    Messages : 535
    Points : 1 125
    Points
    1 125
    Par défaut
    Salut !

    Sans compter que, sauf erreur de ma part, les classes préparatoires, comme leur nom l'indique, préparent aux grandes écoles (CPGE), ou plutôt au concours des grandes écoles. Elles ont donc tout intérêt à faire faire beaucoup de maths/physique (MPSI), de physique/chimie (PCSI), etc. plutôt que beaucoup d'info, même si c'est la discipline qui prédomine dans la vraie vie quand on est ingénieur. Enfin, moi j'dis ça, j'dis rien.

    Cordialement,
    Cacophrène

  20. #20
    Membre éprouvé
    Avatar de InOCamlWeTrust
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 036
    Points : 1 284
    Points
    1 284
    Par défaut
    Pour les sous-entendus, c'en ne sont pas. La paresse, c'est celle de ne pas changer Caml Light par Objective Caml dans les textes de programmes. Comme vous le dites, passer de l'un à l'autre, même pour les profs, ce n'est vraiment pas la mer à boire. Je ne peux tout simplement pas donner de nom. Mais la personne en question oeuvre réellement dans cet esprit. SI vs Info. Dans son esprit, le choix est clair. D'ailleurs, il s'agit du l'instigateur de la filière PSI...

    A titre d'exemple, l'X et les ENS aimeraient, et réclament depuis longtemps, une filière maths/info. Mais les personnes citées ici n'en veulent pas et préfèrent condamner 80% des étudiants à calculer des matrices d'inertie et des codes de Gray... choses dont ils ne se serviront très probablement jamais étant donné l'évolution du métier.

Discussions similaires

  1. Réponses: 14
    Dernier message: 22/12/2009, 23h34
  2. Division sur de Grands entiers
    Par mawguai dans le forum Mathématiques
    Réponses: 4
    Dernier message: 06/06/2008, 21h08
  3. Réponses: 3
    Dernier message: 12/08/2007, 16h49
  4. calcul sur entiers
    Par jackk dans le forum C
    Réponses: 14
    Dernier message: 24/08/2006, 19h59
  5. Opération sur de grands entiers
    Par tutu dans le forum C
    Réponses: 16
    Dernier message: 24/05/2005, 08h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo