Le Farfadet Spatial
Salut à tous !
Foromus, sans vouloir polémiquer, tu devrais aérer et structurer un peu plus tes interventions, ce serait plus facile à lire.
Quelques remarques : tout d'abord, il n'y a pas que Python. Ensuite, tu parles beaucoup de tes habitudes, encore une fois il est certain qu'en changeant de langage, il faut changer d'habitude. Cela dit, oui, il est préférable d'avoir une motivation particulière lorsque l'on veut se lancer dans la programmation, d'ailleurs cela me semblait être indiqué dans le message de départ.
Concernant le type des variables, il faut tout de même garder en tête plusieurs choses. Tout d'abord, jusqu'aux années quatre-vingt-dix, à peu près, sur les ordinateurs de bureau, on gérait la pénurie. Aujourd'hui, on gère l'abondance : la pénurie ne se gère pas du tout comme l'abondance. De plus, faire des économies de bouts de chandelles n'est pas la marque d'un fin gestionnaire. Il ne faut pas oublier que le bogue de l'an 2000, c'était d'abord une affaire de variables trop justes pour pouvoir supporter le changement de millénaire : il ne faut pas oublier qu'un programme va évoluer. Par exemple, coder un entier sur un seul octet signifie qu'il sera compris entre -128 et 127, ce qui est très juste. D'autant qu'un système 8 bits gérera mieux les variables 8 bits, un système 16 bits les variables 16 bits et ainsi de suite -- notamment en ce qui concerne les caches, dans lesquels on peut facilement perdre de la place à vouloir à tout prix créer des variables extrêmement justes, c'est le problème d'alignement des variables. En clair, une bonne gestion de la mémoire, ce n'est pas réduire à tout prix la taille des variables, au risque de rendre le programme incapable d'évoluer (voir incapable de traiter les cas que l'on veut traiter), au mépris des performances, parfois en entrainant une perte de mémoire. Une bonne gestion de la mémoire, c'est de prendre du recul et de faire attention à ses structures de données, c'est-à-dire analyser son problème en amont.
Sinon, depuis que je suis inscrit à ce forum, j'ai vu de l'ordre d'une fois par mois apparaître un message demandant quel langage choisir pour débuter la programmation. Si ce fil de discussion a été créé, c'est à la demande des utilisateurs et aussi parce que ceux qui répondaient en avait assez de répéter sans arrêt la même chose. D'ailleurs, il a atteint pour l'heure cinq pages, ce qui le place au-dessus de la moyenne des fils de discussion. Après, si tu le trouves inutile, le mieux, c'est encore que tu ne le consultes pas.
À bientôt.
Le Farfadet Spatial
ffw137
Bonjour à tous, je trouve ce sujet très intéressant et notamment ce que Foromus et le Farfadet Spatial échange. J'adore programmer à titre personnel depuis une trentaine d'année et je suis très très loin d'être un expert, je suis passé également par le TRS-80, ZX-80 et toute la série avec l'upgrade chaque année.
Maintenant au niveau des langages, je pense que l'on est tous un peu sectaire et on a tendance à défendre celui que l'on utilise le plus. J'ai programmé en ZXBasic, QBasic, Turbo Basic et VB et j'ai aimé fortement ces langages sauf quand il fallait avoir de la vitesse et l'accès rapide au hardware, donc je me suis marié avec mon second meilleur ami: l'assembleur qui lui n'est pas sympa et à rarement de beau IDE graphique pour créer sa fenêtre avec le bouton qui affiche bonjour mais quand on sait le faire, le programme ne pèse rien et va à la vitesse d'une bombe.
Ensuite j'ai découvert Turbo Pascal, Turbo C et Turbo Prolog très complémentaires, j'ai programmé assez bien mais mon cœur à virer vers Blaise et c'est naturellement que j'ai opté pour Delphi (Lazarus est très bon sous linux).
Maintenant j'en ai un peu marre de passer des heures à convertir une bibliothèque du C/C++ (qui représente une énorme parie des codes sources ) vers le pascal, je me suis replonger dans le C/C++.
Donc je pense qu'il faut savoir gouter à tout, maintenant je suis pour l'apprentissage pas à pas en mode console pour apprendre les bases et les dissocier de l'interface graphique mais celle-ci doit rapidement être vue pour apprendre les bases d'un bon dialogue utilisateur/programme.
Combien de programmeurs talentueux font des interfaces de m... car ils n'ont aucune idée de l'ergonomie "normale", pas la leur car ils vont trouver ultra important une fonction sur laquelle ils auront passer des heures et occulter une autre qui sera pourtant fortement demandée mais peu maniable et provoquera l'abandon de leur programme.
Pour l'éditeur on prend ce qu'on aime et pas nécessairement avec Emacs/Vim sans pluggin dirait certains selon qui le fait de taper du code avec une aide quelconque est une hérésie et empêche d'apprendre toutes les arcanes d'un langage, je leur rétorquerai, que j'ai passé mon temps à programmer des ordinateurs 24 bits (oui 24 bits!) en porte NAND (plusieurs milliers en composant non discret) en entrant des séquences octales avec pression d'un bouton dans chaque adresse pendant des heures donc ils peuvent aller se recoucher, de plus la complétion automatique m'a souvent fait découvrir des choses que je ne connaissais pas avant et m'a enfin fait lire la documentation un peu plus complètement.
Maintenant, je suis un programmeur "bord.elle...hic", je n'utilise pas UML, j'ai ouvert un livre, j'ai commencé à lire et je n'y ai vu aucun exemple pratique appliqué à des cas réels, juste du code exemple sans aucun contexte et qui ne permet pas de réellement l'utiliser mais je persévèrerai et j'y arriverai un jour.
Par contre, j'adore toujours l'assembleur et ma passion est la rétro-ingénierie des firmwares de décodeurs satellites par pour le piratage mais pour savoir comment cela fonctionne et là, malheureusement, j'ai pu voir les dégâts engendrés par la programmation objet mal utilisée, des tonnes de tables de saut indirects pointant sur des autres tables qui pointaient sur du code qui appelaient également des méthodes indirectes via des pointeurs de pointeurs tout cela rend vraiment triste quand on voit de précieuses ressources mémoires (en général 2 Mo de flash et 8 Mo de RAM à partager avec la vidéo, l'audio et le système) ainsi dilapidées.
La programmation objet est géniale pour développer, maintenir mais on doit ensuite replonger dans le code assembleur pour l'optimiser et bien utiliser les options des compilateurs sinon on a un programme lent! J'ai vu du code tourner deux fois moins vite sans problème à cause de cela mais tout est une question d'équilibre.
Donc pour moi, il faut connaître un peu de tous les langages, donc en tester un grand nombre, développer des interfaces graphiques convenables également et une ligne de commande utilisable aussi mais surtout optimiser ses programmes.
Je suis venu à Ubuntu dans cet esprit et quand j'aurai du temps libre réaliser un programme permettant le désassemblage des firmwares satellites un peu comme IDA PRO, j'en ai fait une partie avant sous delphi/win (la partie transformant l'assembleur MIPS en code C) mais maintenant je suis entrain de voir Ajunta et GTK+ et j'espère aider cette communauté et partager mes expériences.
Désolé pour la longueur.
😉
Le Farfadet Spatial
Salut à tous !
Tout d'abord, merci pour ton intervention Ffw137.
Quelques remarques :
ffw137 a écritl'assembleur qui lui n'est pas sympa et à rarement de beau IDE graphique pour créer sa fenêtre avec le bouton qui affiche bonjour mais quand on sait le faire, le programme ne pèse rien et va à la vitesse d'une bombe.
Ce n'est plus tout à fait vrai : depuis les années 80, les choses ont bien changé. Désormais, les processeurs sont superscalaires et multi-cœurs, ce qui implique des architectures intrinsèquement parallèles et une forte utilisation du principe de pipeline. En conséquence, les optimisations adaptées à de telles architectures sont difficilement réalisables par un être humain. De plus, un code en assembleur est par essence non-portable.
De nos jours, une utilisation raisonnée de l'assembleur est d'y avoir recours pour l'accès fin au matériel et pour certaines applications embarquées.
Combien de programmeurs talentueux font des interfaces de m... car ils n'ont aucune idée de l'ergonomie "normale", pas la leur car ils vont trouver ultra important une fonction sur laquelle ils auront passer des heures et occulter une autre qui sera pourtant fortement demandée mais peu maniable et provoquera l'abandon de leur programme.
Il est généralement préférable de détacher l'interface graphique du programme, car il s'agit de deux choses différentes. Le code est l'affaire du programmeur, l'interface de l'ergonomiste. Les bibliothèques tels que Qt ou Gtk+ permettent de faciliter une telle distinction.
Pour l'éditeur on prend ce qu'on aime et pas nécessairement avec Emacs/Vim sans pluggin dirait certains selon qui le fait de taper du code avec une aide quelconque est une hérésie et empêche d'apprendre toutes les arcanes d'un langage, je leur rétorquerai, que j'ai passé mon temps à programmer des ordinateurs 24 bits (oui 24 bits!) en porte NAND (plusieurs milliers en composant non discret) en entrant des séquences octales avec pression d'un bouton dans chaque adresse pendant des heures donc ils peuvent aller se recoucher, de plus la complétion automatique m'a souvent fait découvrir des choses que je ne connaissais pas avant et m'a enfin fait lire la documentation un peu plus complètement.
En réalité, tant Emacs que Vim fournissent de nombreuses aides aux programmeurs, notamment ils possèdent tous les deux la complétion automatique. Ce sont loin d'être de simples éditeurs de textes, ce sont des environnements de travail très complets. Pour ma part, après avoir testé en profondeur de nombreux environnements de développements intégrés, je suis revenu à Emacs, non pas parce que c'est une hérésie d'avoir de l'aide au développement, mais justement parce que les outils offerts par Emacs me permettent d'être plus productif avec Emacs qu'avec aucun des environnements de développements intégrés aujourd'hui disponibles.
j'ai pu voir les dégâts engendrés par la programmation objet mal utilisée, des tonnes de tables de saut indirects pointant sur des autres tables qui pointaient sur du code qui appelaient également des méthodes indirectes via des pointeurs de pointeurs tout cela rend vraiment triste quand on voit de précieuses ressources mémoires (en général 2 Mo de flash et 8 Mo de RAM à partager avec la vidéo, l'audio et le système) ainsi dilapidées.
Il ne faut pas oublier l'importance du compilateur dans ce processus et aussi des options de compilations, de quand remontent tes expériences et avec quels compilateurs ? Cela dit, oui, il est bon de programmer en réfléchissant aux conséquences que cela à sur l'utilisation des ressources.
on doit ensuite replonger dans le code assembleur pour l'optimiser et bien utiliser les options des compilateurs sinon on a un programme lent!
C'est très vite dit. Les optimisations, il faut savoir où et comment les faire : la mise au point d'algorithmes et de structures de données performantes permet aisément de gagner un facteur 1000 -- de plus, c'est portable et maintenable --, l'utilisation intelligente du compilateur un facteur 100. Les petites optimisations de sioux permettent au mieux de faire gagner un facteur 10, peuvent rendre le code incorrect et sont difficiles à maintenir. Il peut arriver d'en avoir besoin, mais c'est loin d'être un passage obligé, c'est même plutôt quelque chose de dangereux.
À bientôt.
Le Farfadet Spatial
ffw137
Merci pour cette réponse! 😉
Pour Emacs, comme je l'ai précisé cela est sans les pluggins mais bien un Emacs tout nu mais je l'apprend aussi en parallèle avec anjuta ainsi que vim, maintenant pour un premier venu qui a programmé sous windows, il est un fait qu'il faut qu'il s'habitue à l'ergonomie de Emacs ou Vim. Existe-t-il un bon site qui répertorie les pluggins de Emacs et leurs fonctions.
Maintenant pour mes expériences de programmation, tu as surement vu que j'aime les systèmes embarqués des décodeurs qui sont en général des mono core avec beaucoup de hardware spécialisés autour comme les SC2000 / SC2005, maintenant pour l'optimisation, il est un fait que je me concentre sur une seule plateforme et ce n'est pas maintenable avec plusieurs.
Pour les dernières compilations: j'ai eu affaire au couple diab/psos, gcc/système proprio de ALi donc des systèmes destinés à de l'embarqué donc je ne peux juger avec les avancées actuelles.
Maintenant, je suis d'accord pour une bonne organisation des données et une bonne analyse en amont mais parfois je vois de l'utilisation de l'objet pour tout et n'importe quoi, la moindre variable devient un objet avec une tonne de méthodes sous le couvert de la facilité de maintenance et la réutilisation mais bon cela est juste mon impression.
Maintenant, quand je vois la tonne de fichier généré par anjuta, c'est vrai que ça fait peur également!
Allez je vais me mettre plus à Emacs alors! Pour les interfaces, j'utilise quand même glade en couple avec Emacs ou bien je dois utiliser autre chose?
PS: Existe-t-il un pluggin emacs pour afficher l'arborescence des fichiers d'un projet si oui je suis satisfait.
Merci pour ce post!
Le Farfadet Spatial
Salut à tous !
ffw137 a écritExiste-t-il un bon site qui répertorie les pluggins de Emacs et leurs fonctions.
Un excellent livre pour découvrir Emacs :
Introduction à GNU Emacs
Debra CAMERON, Bill ROSENBLATT et Eric S. Raymond
O'Reilly
Dans la documentation, il y a une section dédiée à Emacs avec des liens intéressants :
http://doc.ubuntu-fr.org/emacs
Tout cela devrait te donner de bons points de départs.
PS: Existe-t-il un pluggin emacs pour afficher l'arborescence des fichiers d'un projet si oui je suis satisfait.
Oui, il est possible de naviguer dans l'arborescence d'un projet par l'intermédiaire de Emacs. Tu devrais trouver ce qu'il te faut avec les éléments que je t'ai donnés.
pour un premier venu qui a programmé sous windows, il est un fait qu'il faut qu'il s'habitue à l'ergonomie de Emacs ou Vim.
Oui, c'est certain : il faut changer ses habitudes, ce qui demande toujours du temps.
À bientôt.
Le Farfadet Spatial
Onclebenz
quand j'ai débuter j'ai choisi le c++,tout mes automatisme et mes reflexs viennent de la.
Avec le temps je me suis mis à la programmation php/web et je ne le regrette pas.Tres vite tout devient instinctif et on est pas vraiment perdu.
Aujourd'hui je m interresse , et pour cause je suis sous linux , au shell (tres puissant , le plus rapide? apres l 'assembeur?)
mon conseil si ça n'a pas été deja fait, choisis un language qui est tres utilisé et ou tu beneficiera d'une aide massive donc facile.
ah oui! si je peux par contre te conseiller d'eviter un language , ce serait le java (pas le javascript attention c 'est different)
++
Le Farfadet Spatial
Salut à tous !
Onclebenz a écritshell (tres puissant , le plus rapide? apres l 'assembeur?)
Encore une fois, l'assembleur n'est plus le garant des meilleures performances, au contraire. De toute façon, les commandes shell étant interprétées, les performances sont de toute façon moins bonnes qu'avec un langage compilé.
Cela dit, il est bon d'apprendre à maîtriser les commandes Unix, cela permet de mieux maîtriser son système et permet d'automatiser très efficacement quantité de tâches.
À bientôt.
Le Farfadet Spatial
doudou1408
Bonjour tout le monde
Je fait une bref présentation de moi , Lycéen de 17 ans , qui vient tout juste de (re)passer sous Linux ( Mint 9 ) , et qui désire plus tard , devenir programmeur informatique
L'informatique reste une passion pour moi et je suis très touche à tout , arrivant à environ 1 an de la fin du lycée et étant tombé sur ce sujet , après lecture , j'ai encore un doute sur le langage a prendre pour débuter
je re-précise que je voudrais en faire mon métier plus tard , et pourquoi pas , un petit plus dans mon CV 😉
C'est donc pour cela que je vous demande conseil , en m'orientant sur un choix possible , car d'après ce que j'ai lu Python est très attractif pour un débutant , assez mis en valeur ( tout comme içi ) mais j'ai découvert également sur ce sujet , que OCaml était très bien pour débuter ...
Vous l'aurez deviné , j'hésité donc entre Python et OCaml pour commençer , et faire de petits trucs sympas , en effet , la satisfaction de faire seul quelques programmes ajoute a la motivation.
Merci de prendre un peu de votre temps 😉
tshirtman
J'ai pas essayé OCaml, mais il semble beaucoup moins répandus que Python donc l'aide sera peut être plus difficile à trouver, et les bibliothèques moins variées sans doute (un point fort de Python). Mais bon, c'est peut être un très bon langage 🙂.
Le Farfadet Spatial
Salut à tous !
doudou1408 a écritVous l'aurez deviné , j'hésité donc entre Python et OCaml pour commençer , et faire de petits trucs sympas , en effet , la satisfaction de faire seul quelques programmes ajoute a la motivation.
OCaml est peu utilisé dans l'industrie. En revanche, je lui trouve de très grandes vertus pédagogiques : il permet de se concentrer sur l'algorithmique et les structures de données, permet d'éviter les problèmes de typage, est très rigoureux. De plus, il est très performant et mélange les paradigmes fonctionnel, impératif et objet. Bref, il est vraiment bien pour découvrir la programmation de manière très rigoureuse et le livre que j'ai donné en référence est vraiment très bien.
Avec Python, en effet, les bibliothèques sont plus nombreuses et on peut avoir avec plus rapidement une approche ludique : il sera beaucoup plus attractif de prime abord.
Tu souhaites faire de l'informatique ton métier, c'est entendu, mais, plus particulièrement, quelles sont les applications qui t'attirent le plus à l'heure actuelle ?
À bientôt.
Le Farfadet Spatial
doudou1408
A vrai dire je m'attendais pas à cette question et je n'ai pas une réponse précise à te fournir.
J'pourrait juste dire , que j'aimerai déja créer quelques scripts sympas ou petits jeux pour moi afin de cultiver cette motivation.
Les applications serait je pense , plus tourné vers le web , je ne suis pas naïf créer des clients de messagerie instantanées ou autre est complexe , mais c'est un exemple aussi futile soit-il pour tenter d'expliquer au mieux ce que j'aimerai faire
Le Farfadet Spatial
Salut à tous !
doudou1408 a écritLes applications serait je pense , plus tourné vers le web , je ne suis pas naïf créer des clients de messagerie instantanées ou autre est complexe , mais c'est un exemple aussi futile soit-il pour tenter d'expliquer au mieux ce que j'aimerai faire
Si tes premières applications vont être des applications web, alors, sans hésiter : choisit Python.
À bientôt.
Le Farfadet Spatial
helly
Petite question : vu que le programmeur doit faire un code le plus portable possible, pourquoi ne code t'on pas en trigraphes ?
grim7reaper
Parce que les environnements ne supportant pas les caractères codés par les (di|tri)graphes n'existent quasiment plus et sont voués à disparaître.
Ça t'as marquée cette découverte 🙂.
helly
C'est vrai que ça m'a marquée, je sais 😛
Et justement je me posais des questions dessus 😉
Et tu as des noms de ces environnements? j'ai pas réussi à en trouver…
grim7reaper
Non, je n'en connais pas.
Nanashi
Bonjour à toutes et tous!
Mon premier post sur ce forum (moment d'émotion!), je viens de lire l'intégralité du fil (mes yeux brûlent un peu...). Je suis intéressé par la programmation pour des raisons personnelles et professionnelles, d'une part parce-que je trouve ça amusant et que c'est un excellent exercice cérébral, d'autre part parce que ça peut me servir pour le boulot...
Si j'ai tout bien suivi (on peut rêver), Python a l'air à la fois assez répandu et bien supporté sur différentes plateformes, et assez adapté au domaine scientifique. Je compte passer sous Ubuntu bientôt, mais pas mal de PC des labos sont sous Windows et donc il me faut un langage compatible avec les deux sans trop de galères. Je vais commencer ma thèse en chimie à la rentrée prochaine, et j'aurai très probablement un minimum de modélisation à faire au cours de ladite thèse... Je ne suis pas mathématicien, aussi je n'aurai sans doute pas de matrices 1000*1000 à exécuter, je n'ai pas besoin d'un langage ultra haute performance de calcul de porc, et je ne souhaite pas me cantonner à une utilisation uniquement scientifique, mais également un peu ludique. Il nous manque souvent des programmes, qui n'existent tout simplement pas, pour des applications scientifiques qui nous simplifieraient la vie, et ma foi, si je pouvais dépanner un peu... Ça arrangerait pas mal de monde! Et qui sait, une fois à l'aise, je pourrai peut-être apporter ma pierre à l'édifice du Libre.
Aussi, ce serait sympa si quelqu'un pouvait confirmer (ou infirmer) mon choix à priori, et me conseiller un bon bouquin pour commencer (je ne susi pas fan de la lecture sur écran, aussi je suis prêt à acheter un livre papier). Si j'ai bien suivi, encore une fois, j'ai cru comprendre que le livre de Tarek Ziadé "Programmation Python - Conception et Optimisation 2è édition" était bien pour les débutants et accompagnait jusqu'à un niveau correct.
http://www.chapitre.com/CHAPITRE/fr/BOOK/ziade-tarek/programmation-python-conception-et-optimisation-2e-edition,22260259.aspx
Désolé pour la longueur du post, et merci de m'avoir lu!
tshirtman
Bonjour,
Si tu as lus le fil en entier, alors tu as déjà mon avis sur les aspects généraux du langage, qui me semblent convenir tout à fait à ton besoin 😉, pour l'aspect plus biochimie, je n'y connais pas grand chose, mais je sais qu'on a des bibliothèques assez spécialisées dans le domaine, et elles semblent de bonne qualité. En particulier biopython et pymol pourront t'intéresser, mais aussi mayavi2, MMTK… et d'autres sans doute, l'écosystème python est assez riche 😉
Sinon j'ai le bouquin dont tu parles sur le bureau, et en effet, il part bien de la base, et aborde tout de même des concepts avancés sur la fin, tout en étant assez clairement écrit, j'ai du mal a juger car je l'ai lus sans doute un peu tard dans mon apprentissage, mais certaines choses m'ont beaucoup apporté à la relecture, et je gagnerait peut être à le recompulser… 🙂 mais je suis moins apte à conseiller les livres, je suis plus adepte de la lecture sur écran justement ^^.
En espérant que python répondra bien à tes attentes 🙂
Nanashi
Bonsoir tshirtman, et merci beaucoup pour ta réponse!
Je pense donc que j'ai à peu près compris ce que j'ai lu, je suis content! J'ai fait un peu de C++ à la fac, c'était très drôle, et un brin ésotérique, j'espère que le Python sera un peu moins coton... Juste une petite rectif': je suis chimiste, pas biochimiste... Il y a aussi des biblis? Je ne suis pas du tout dans l'organique, je suis chimiste minéral (métaux, oxydes, céramiques, cristallographie etc...) et j'aurai plus que probablement de la physique dans le tas, physique des plasmas et autres joyeusetés... Je m'en réfère à ton expérience! Il y a des trucs utilisables dans les biblis?
Merci bien! 😃
tshirtman
Arf, toutes mes confuses 😛
Je me rends compte que j'ai en effet surtout entendu parlé de chimie organique et biologie dans le monde python, et pas franchement de chimie minérale et physique, je cherche un peu mais pour l'instant rien :/
http://wiki.python.org/moin/NumericAndScientific , peut être verra tu mieux que moi quelque chose correspondant à ton besoin…
pour le reste, si ça peut te rassurer, oui python est moins "coton" que le C++ ^^.