Bonsoir à tous,
comme je sais qu’il y a des pointures en programmation sur ce forum, j’aurai aimer avoir votre avis concernant smalltalk. Est-il adapté à un novice (juste un peu de pascal il y a très longtemps ) ? En fleurtant sur le net, je suis tombé sur un article où l’auteur met en avant le fait que l’on peut se passer de certains concepts au début comme celui d’objet et quelques autres. Par contre point de vue documentation, il n’y a pas foule !
. Le sujet étant très récurrent sur le 1er langage de programmation, je le poste dans PC histoire de ne pas “polluer” celui destiné à la programmation “pure et dure”.
Que souhaites-tu coder ?
Je ne connais pas smaltalk donc je ne peux pas t’en parler mais je vais te parer d’un langage que je connais (au cas, ça peut tjrs être bon à prendre)
Moi j’ai commencé la programmation d’algorithme bidon (trier une liste, trouver un circuit hamiltonien, dessiner des fractales) en langage CaML qui est très bien car on peut compiler des petits bouts de code assez facilement si on a un bon IDE (lincaml) qui est utile pour les test
Pour la syntaxe il rale en expliquant assez proprement où ça va pas quand ça va pas et sinon ca ressemble à du pseudo code en anglais (mis à part deux trois petits trucs)
Du coup pour coder de l’algorithmique je trouve ça assez simple à mettre en oeuvre
Si t’es intéressé tu peux me contacter par MP et je te file des cours de CaML
La bêbête : http://jean.mouric.pagesperso-orange.fr/
Je veux simplement me mettre à la programmation pour faire des choses très basiques (du genre que tu décris) mais rien de cibler en particulier (cela viendra sûrement par la suite ). Acquérir de bonnes habitudes (la rigueur en autre même si c’set à la mode en ce moment mais pour autre chose ) et faire un peu turbiner mon cortex qui a tendance à se ramollir avec l’âge (et surtout l’inaction intellectuelle
).
Je ne veux pas quelque chose de trop “maouss costaud” au départ style C, Java … et même python, mais je ne dis pas un jour quand les enfants auront grandi ( le dernier, 2 ans et tonique, il va m’avoir à l’usure le saligot
). Bref, simple si possible
PS : je vais aller quérir des informations sur Caml sur Wikipédia et je ne dis pas non pour les docs, je te contacterai au moment opportun par MP. Merci.
Sinon tu peux très bien faire de l’informatique sans ordinateur et sans langage de programmation
Et pour donner l’en-tête d’un de mes livres d’info “L’informatique n’est pas plus la science des ordinateurs que l’astronomie n’est celle des télescopes.” Dijkstra (ca fait toujours classe de citer des gens comme ça je trouve ^^)
J’ai commencé l’algorithmique (enfin, apprendre des algorithmes, pas demontrer tout de manière rigoureuse mais savoir que ça marche) vers ma 6e-5e
Après je dis pas que j’ai fait des trucs phénomenaux. Juste j’ai regardé de droite à gauche et de gauche à droite ce que des gens très intelligents ont reussi à faire mais c’est surtout l’algo en lui même qui m’intéresser (pas son application).
Mais je t’assure que c’est tout aussi fun =D
J’ai fait mon premier vrai programme en première année (et à partir de là j’ai pu mettre en pratique tout ce que j’avais pu apprendre depuis un temps, et comprendre pas mal d’astuce grâce au package mathématiques acqui en cours de route)
Lors de mon bref passage en fac (2nd année de deug à l’époque), on nous faisait étudier smalltalk (et ceux qui avaient fait la première année de deug avaient étudié CamL). Sur le coup, je n’ai pas compris le choix du langage. En fait, smalltalk est un très bon langage pour apprendre la programmation orientée objet.
Un article qui te dit que SmallTalk est bien pour commencer la programmation … J’ai comme un doute ! pour celui qui ne connait rien aux objets, au moins la il n’aura pas le choix, tout est objet !
Les versions les plus récentes de SmallTalk, s’appellent : Java !
Pour apprendre une multitude de concept, Java est un excellent langage. Par la suite tu apprendras Python, et tu auras l’impression de sortir de prison
[quote=“debianhadic”]Un article qui te dit que SmallTalk est bien pour commencer la programmation … J’ai comme un doute ! pour celui qui ne connait rien aux objets, au moins la il n’aura pas le choix, tout est objet !
Les versions les plus récentes de SmallTalk, s’appellent : Java ![/quote]
Quel troll poillus tu fais ! On dirait moi
et on perd la rigueur avec.
Soit dis en passant, j’ai beaucoup de mal avec la syntaxe de SmallTalk, mais aussi avec son environnement de développement. Choisir un premier langage c’est comme choisir sa première copine : on a des étoiles pleins les yeux en imaginant toutes ce qu’on pourrait faire avec et puis finalement le manque d’expérience nous oblige à ne faire que des petits trucs tout simple.
Sur ce je déplace en programmation, on a les droit de troller là bas aussi.
Pourquoi pas python? Je ne suis pas programmeur, mais je l’ai trouvé simple, surtout la syntaxe en fait.
Sinon je te conseillerai bien lua. Il est très rapide à apprendre, et reste très simple contrairement à python qui arrive avec sa multitude de bibliothèques (et versions…)
Pour débuter, python est très bien, il n’y a que peu de contraintes, et le langage est assez naturel.
Voilà le lien où l’auteur décrit Smalltalk comme un bon langage pour débuter et orienté objet (sur ce coup j’avais mal lu )
commentcamarche.net/faq/457- … el-langage
Il est vrai que l’on parle aussi de python et en bien mais c’est sa cohorte de bibliothèques (comme d’autres d’ailleurs) qui me révulse, mais pourquoi pas. A voir (en plus la doc gratuite est à foison ) comme Caml (avec l’aide de Tristan ).
Merci de vos avis non trollesses.
Et pourquoi donc ? Tu n’es pas obligé de les utiliser ces bibliothèques tu sais…
Au contraire ça te laisse plus de choix : tu peux les utiliser si tu veux, ou bien réinventer la roue à chaque fois si tu préfères. Avoir beaucoup de bibliothèques disponibles ne peut être qu’un avantage, jamais un inconvénient.
Le seul truc vraiment chiant avec Python c’est que tu développes pour une version donnée du runtime, dès que tu changes de version il y a plein de petites incompatibilités très pénibles. Mais il suffit d’utiliser le bon shebang pour forcer l’utilisation d’une version particulière et être tranquille (#!/usr/bin/python3.1 par exemple et non pas juste #!/usr/bin/python3).
Et encore, ça reste gérable je trouve… Bon j’ai jamais fait de gros projets, mais pour l’instant j’arrive à faire tourner mes scripts avec python 2 ou python 3, faut juste utiliser une syntaxe qui passe partout.
Et ce souci de numéro de version, c’est vrai pour tous les langages je suppose.
Pour 2.x vers 3.x, il n’y a rien à dire. Par contre entre 2.x et 2.y c’est problématique.
Pour 2.x vers 3.x, il n’y a rien à dire. Par contre entre 2.x et 2.y c’est problématique.[/quote]
Je dois avoir manqué quelque chose parce que je ne comprend pas. Il y a eu des problèmes de rétrocompatibilité de 2.x à une 2.y ?
Par exemple, pour le passage de python 2.5 à 2.6 (ce n’est pas exhaustif), il y a un nouveau mot clef ajouté, l’API des string à changée (la gestion des erreurs). Ce n’est pas grand chose, mais c’est immense face aux autres.
Perl par exemple tu prend un script pour 5.000 en 94 s’exécutera de la même façon aujourd’hui ! Évidement ne parlons pas des langages normalisés comme C, C++ ou ADA. Du code Java de 95 (Java 1.0 ou 1.1 je ne sais plus) s’exécutera toujours aussi bien en Java 1.7 (la dernière version sortie).
C’est ça qu’on appelle la compatibilité
Après quand perl 6 arrivera des scripts perl5 ne s’exécuteront pas sur perl6, mais c’est normal.
Plutôt la rétrocompatibilité
Je travaille pas mal avec python, sans être un gros connaisseur, tout ce que j’ai compris c’est que Guido van Rossum voulait corriger des erreurs de langages qui l’auraient bloqué tôt ou tard.
En gros, pour le débutant, cela fait 3 différences fondamentales :
- la fonction print(),
- la fonction input(),
- la division qui devient plus naturelle.
Ayant enseigné les deux versions, j’ai pu observé que les problèmes ne se situent jamais dans le langage ou sa syntaxe, mais plutôt dans l’élaboration de l’algorithme.
Bien sûr que ce n’est pas très gênant… pour des utilisateurs simples ou pour des programmes relativement petit. En entreprise ça augmente le coup de l’upgrade de python parce que revalider une application ça a un coût (dont le prix varie avec la taille du code et le niveau de validation).
C’est aussi assez gênant quand tu distribue ton application. Si j’ai un navigateur web en python 2.5 qui est assez gros est qui utilise with comme identifiant, je vais bloquer tout mes utilisateurs à la version 2.5. Jusqu’à ce que je fasse une mise à jour.
[quote]En gros, pour le débutant, cela fait 3 différences fondamentales :
- la fonction print(),
- la fonction input(),
- la division qui devient plus naturelle.[/quote]
Là tu parle de python 3, là ils peuvent se permettre de casser la compatibilité personne ne leur en tiendra rigueur.
Je comprend mieux maintenant. Comme quoi le C a vraiment du bon. Il est temps que je regarde sérieusement au perl. Il est souvent dit qu’il est obsolète (enfin c’est un informaticien qui m’avait sorti ça), mais à t’en entendre parler Michel, on dirait au contraire que ça vaut le coup!
Il est normalisé. Ce n’est pas le seul. ADA et C++ le sont aussi. Java tente de gérer proprement son évolution (avec des réussite et des moins réussites on va dire). Perl a la philosophie de la rétro compatibilité mais rien de vraiment standard et il existe relativement peu d’implémentations de perl (contrairement à python), il faut le voir, je pense, un peu comme latex. Il n’est pas normalisé (au contraire d’OpenDocument) mais la compatibilité est excellente.
python a pleins de qualité et perl des défauts. J’ai mes propres goûts aussi. Mais je suis persuadé que perl mérite une meilleure image que celle qu’il a. Perl a vraiment une dose de fun, je trouve. Quand je m’en sert c’est avec plaisir et je m’éclate a en découvrir plus avec ce langage. Python est bien moins fun, mais a un outillage agréable, il est aussi plus populaire que perl.
Enfin tout ça pour dire que je suis un enthousiaste de perl, même si j’essaie d’être assez objectif, je ne le suis pas tant que ça.
Perl c’est bien. Je m’y suis mis y’a pas longtemps mais franchement j’adore. J’ai déjà migré mon script fix-aptitude-dependencies depuis Bash vers Perl ce qui m’a permis de simplifier énormément une partie des algos, je ne regrette pas du tout.
Et justement ces incompatibilités de Python entre versions mineures (oui j’avais oublié de préciser que c’est ça qui me gêne… entre versions majeures les incompatibilités c’est normal bien sûr) font que dès que j’aurai le courage de m’y remettre je migrerai HotspotLoginManager vers Perl (les problèmes liés à Python m’ont un peu dégoûté de ce projet pour le moment ).
+1 sur tous les points…