Programmer

Réponses à toutes vos questions de la 2nde à la Terminale toutes séries
alexis6
Membre Relatif
Messages: 273
Enregistré le: 13 Oct 2014, 13:32

Programmer

par alexis6 » 27 Mar 2015, 01:24

Bonsoir,

Je suis en Ts actuellement. J'ai vraiment du mal à faire de la programmation, en fait je n'ai jamais vraiment trop aimé ça. Je trouve pas ça très naturel. Voire tout à fait déstabilisant parfois. Mais comme je compte faire des études scientifiques, il faut bien s'y mettre un jour. Malgré mes réticences, je suis sûr qu'un jour je trouverai ça super utile...

En attendant, connaîtriez-vous des sites, des ouvrages concernant la programmation en général? Et sinon que recommandez-vous comme langage pour commencer?

Merci d'avance pour toute suggestion!
La modestie s'apprend par la répétition de l'échec.



Avatar de l’utilisateur
mathelot
Habitué(e)
Messages: 13687
Enregistré le: 08 Juin 2006, 08:55

par mathelot » 27 Mar 2015, 08:23

bonjour,
les gens programment en Python et en Java. Perso, j'ai appris le C et C++ en autodidacte,
ce sont des langages qui facilitent la maintenance en encapsulant les routines,
mais qui sont un peu lourds du fait du concept de "classes" , lors de la première
écriture. Il y a le "site du zéro" où l'on peut apprendre HTML et CSS tout seul.

Avatar de l’utilisateur
chombier
Membre Irrationnel
Messages: 1313
Enregistré le: 19 Juil 2012, 19:35

par chombier » 27 Mar 2015, 08:28

alexis6 a écrit:Bonsoir,

Je suis en Ts actuellement. J'ai vraiment du mal à faire de la programmation, en fait je n'ai jamais vraiment trop aimé ça. Je trouve pas ça très naturel. Voire tout à fait déstabilisant parfois. Mais comme je compte faire des études scientifiques, il faut bien s'y mettre un jour. Malgré mes réticences, je suis sûr qu'un jour je trouverai ça super utile...

En attendant, connaîtriez-vous des sites, des ouvrages concernant la programmation en général? Et sinon que recommandez-vous comme langage pour commencer?

Merci d'avance pour toute suggestion!

Je ne peux que conseille mon livre de chevet en la matière : "Structure et interprétation des programmes informatiques" de Harold Abelson et Gerald Jay Sussman, du MIT.

il est malheureusement assez difficile à trouver, de nos jours.

Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6610
Enregistré le: 22 Nov 2007, 13:00

par fatal_error » 27 Mar 2015, 08:37

salut,

pour commencer, surtout si t'aimes pas trop programmer, je te déconseilles le C et C++ qui exigent bcp de rigueur et d'effort pour parvenir à un minimum de rendu.

Je te déconseille également java parce que c'est une usine à gaz. IDE, téléchargement de la planète, doc illisible.. toolchain de fou.

il te faut choisir un langage, simple, où tu puisses faire des trucs rapidement, et où c'est facile de débugger (tu passeras la majorité de ton temps à débugger, donc il faut qu'en cherchant sur le net tu puisses assez facilement trouver une question similaire à la tienne). En ce sens, il te reste php, javascript, python( pour les plus classiques)

je te conseillerais python (même si je n'en ai que très peu fait et fais plutot du javascript)
la vie est une fête :)

Shew
Membre Irrationnel
Messages: 1394
Enregistré le: 02 Jan 2011, 15:39

par Shew » 27 Mar 2015, 08:51

alexis6 a écrit:Bonsoir,

Je suis en Ts actuellement. J'ai vraiment du mal à faire de la programmation, en fait je n'ai jamais vraiment trop aimé ça. Je trouve pas ça très naturel. Voire tout à fait déstabilisant parfois. Mais comme je compte faire des études scientifiques, il faut bien s'y mettre un jour. Malgré mes réticences, je suis sûr qu'un jour je trouverai ça super utile...

En attendant, connaîtriez-vous des sites, des ouvrages concernant la programmation en général? Et sinon que recommandez-vous comme langage pour commencer?

Merci d'avance pour toute suggestion!


Aujourd'hui le langage le plus usuel pour débuter en programmation serait python, dans un cadre strictement universitaire, l'apprendre serait l'ideal . Sortie de ce contexte le langage qui me vient naturellement en tête c'est le basic, limité, il permet d'apprendre en toute simplicité les bases de la programmation . Cependant, comme je le disais on est vite limité par ses capacités, il resterait donc le visual basic qui comble certaines lacunes . Mais ce qui me semblerait l'idéal pour moi, ce serait le pascal, qui associe puissance et simplicité .

Monsieur23
Habitué(e)
Messages: 3966
Enregistré le: 01 Oct 2006, 18:24

par Monsieur23 » 27 Mar 2015, 09:29

Aloha,

alexis6 a écrit:Bonsoir,

Je suis en Ts actuellement. J'ai vraiment du mal à faire de la programmation, en fait je n'ai jamais vraiment trop aimé ça. Je trouve pas ça très naturel. Voire tout à fait déstabilisant parfois. Mais comme je compte faire des études scientifiques, il faut bien s'y mettre un jour. Malgré mes réticences, je suis sûr qu'un jour je trouverai ça super utile...

En attendant, connaîtriez-vous des sites, des ouvrages concernant la programmation en général? Et sinon que recommandez-vous comme langage pour commencer?

Merci d'avance pour toute suggestion!


Je suis peut-être un détraqué, mais je conseillerai plutôt un langage fonctionnel, typé, genre OCaml ou Haskell pour commencer (surtout si tu ne veux pas devenir "codeur", mais plutôt connaître la programmation dans un but scientifique)
« Je ne suis pas un numéro, je suis un homme libre ! »

Robic
Membre Irrationnel
Messages: 1084
Enregistré le: 03 Mai 2013, 12:00

par Robic » 27 Mar 2015, 13:04

J'approuve tout ce qui a été dit. Étant moi même dans une recherche de langage pouvant me permettre de réaliser certains projets, j'en ai essayé plusieurs, et je trouve que le langage Python (que je suis en train d'apprendre) est une bonne idée pour démarrer.

Je ne recommande pas le C++ (surtout pas ! c'est pire qu'une usine à gaz : un combinat métallurgique), ou alors juste le C de base et encore, ni le Java (c'est une sorte de C++ dont je peine à voir les différences, peut-être moins fouillis) : ces langages sont très utilisés dans le milieu professionnel, mais je crois qu'il faut déjà une expérience dans un langage plus simple pour s'y lancer.

Le grand avantage que je vois au Python, c'est qu'il est assez facile de réaliser des petits programmes graphiques, et ça c'est motivant !

MABYA
Membre Relatif
Messages: 401
Enregistré le: 13 Mar 2015, 15:37

par MABYA » 27 Mar 2015, 13:40

Le langage le plus simple pour débutant est le BASIC, j'ai débuté par ce langage qui m'a bien fait maîtriser les petits prgms, simple et facile...
Il doit exister des basics assez évolués mais pour les prgms un peu plus longs il faut passer à autre chose, je suis assez facilement passé au C grâce à l'intermédiaire de TBC de Borland (je ne sais pas s'il existe toujours)...
Après un programme de base, qui pourra te faire aimer la programmation parce que tu maîtriseras, il faut passer au C et puis après au C++ qui est une extension du C.
Moi c'était pour des raisons professionnels et s'il n'y avait pas eu le basic, j'aurais été rebuté par la programmation, de nos jours pour une carrière scientifique ou technique c'est indispensable.
La programmation (on dit le développement) est analogue à la construction d'une machine, il y a des engrenages, des courroies, des outils de sélection (oui ou non, plus grand ou plus petit...) etc... finalement au bout d'un certain temps c'est prenant et dans la réalité, ça rend d'immenses services.
Je ne connais pas Python mais je préconiserais Basic et après C, Java...
J'ai eu en main un très bon bouquin qui date de 1963 "le basic illustré" de Donald ALCOCK ABC des langages édité MASSON, c'est de l'antiquité, je ne sais si ça existe encore mais ça apprenait bien les bases, j'ai toujours ce livre que je pourrais éventuellement te faire parvenir... mais comment faire ?

Shew
Membre Irrationnel
Messages: 1394
Enregistré le: 02 Jan 2011, 15:39

par Shew » 27 Mar 2015, 13:58

Robic, pour pallier au fait que la plupart des distributions de basic tournaient sur du dos (MS ou PC), certains ont mis au point des versions pour windows/linux qui reprennent dans les grandes lignes les structures du langage basic . Il existe donc QB64 qui emule le QB d'origine ou bien free basic .

Robic
Membre Irrationnel
Messages: 1084
Enregistré le: 03 Mai 2013, 12:00

par Robic » 27 Mar 2015, 14:01

Ah, je ne connaissais pas ! Le Quick Basic, je m'en souviens : il était livré avec MS-DOS et tout le monde pouvait programmer, c'était une des activités usuelles quand on avait un ordinateur...

Je viens de regarder un peu le site de QB64, il y a des exemples de programme, ça me rappelle le « bon vieux temps » (des GOSUB, des NEXT i...)

Du coup je rejoins MABYA, le Basic est un langage à conseiller pour débuter, du moins dans une de ces versions rénovées, pas dans les nouvelles.

Avatar de l’utilisateur
chan79
Modérateur
Messages: 10330
Enregistré le: 04 Mar 2007, 20:39

par chan79 » 27 Mar 2015, 14:41

Je suis en train de regarder Python.
Ca va tout seul, ... au moins au début. On n'est pas dépaysé si on a fait un peu de Basic. Il m'arrive encore de programmer en GWBASIC mais il ne faut pas le répéter :zen:. Pour de petites choses, ça fait l'affaire.
Pour Python, j'utilise cette doc . Je viens juste de commencer, il y a peut-être mieux. Les exercices commencent à la page 34.

takezo
Membre Relatif
Messages: 107
Enregistré le: 26 Fév 2015, 17:05

par takezo » 27 Mar 2015, 15:20

Cette doc est celle par laquelle tous les sites conseillent de commencer...
Python est souvent injustement décrié...
Il est utilisé par la suite OpenOffice, pa

takezo
Membre Relatif
Messages: 107
Enregistré le: 26 Fév 2015, 17:05

par takezo » 27 Mar 2015, 15:39

Cette doc est celle par laquelle tous les sites conseillent de commencer...
Python est souvent injustement décrié...
Il est utilisé par la suite OpenOffice, par The Gimp (où on peut ajouter des scripts)..
J'ai - il y a un temps certain - programmé avec le Basic Locomotive du CPC 6128, avec le Basic de l'Amiga, le TurboBasic de Borland, un peu avec C et C++, mais je reste à Python où j'ai encore beaucoup de choses à apprendre.
Récemment pour quelqu'un j'ai écrit le même programme en FreeBasic et en Python..
Donc FreeBasic, c'est intéressant, mais autant commencer directement avec Python...
Un peu déroutant au départ pour qui a déjà programmé : l'absence d'instructions de fin de blocs :
EndWhile, EndIf, Next...
Tout est basé sur l'indentation, alors un dérapage est vite arrivé...

Deux défauts entre autres :
l'absence de compilateur intégré
sa lenteur par rapport à C, C++, VisualBasic

Une découverte récente (pour moi), via le module nommé "decimal" : on peut gérer les nombres avec plusieurs milliers de décimale (je croyais que les délais seraient prohibitifs). Je ne sais pas si un autre langage le permet (sans réécrire de routines)
Le module "fractions", outre les calculs de fractions (évidemment), offre le calcul du PGCD...
Un certain nombre de routines Python sont écrites en C...

Avatar de l’utilisateur
chombier
Membre Irrationnel
Messages: 1313
Enregistré le: 19 Juil 2012, 19:35

par chombier » 27 Mar 2015, 16:10

Personnellement, je déconseille python pour beaucoup de raisons (voir par exemple ici : http://www.maths-forum.com/comparaison-grands-nombre-fonction-ln-163958_2.php)

Une autre raison, je trouve atroce le fait que écrire "a=0", soit selon les cas
- la déclaration d'une variable "a" et de son initialisation
- la modification d'une variable "a" déjà existante

Ce qui fait que si quelque part on écrit "ab=12" au lieu de "a=12", aucun problème pour python qui crée une variable parasite "ab" et il va falloir cavaler pour comprendre pourquoi "a" n'a pas la valeur attendue.

Donc, pas de déclaration des variables et une portée des variables très étrange. Au point que python v3 a ajouté un mot clef apres moult réflexions (Le fameux PEP-3104 : https://www.python.org/dev/peps/pep-3104/)

EDIT : les exemple du lien que je viens de donner sont bien plus parlants que les miens !!

Exemple :

Ce programme fonctionne bien
Code: Tout sélectionner
def factorial(n):
  if n < 2:
    return 1
  return n * factorial(n - 1)
print(factoria


Il affiche 17, comme attendu. En revanche, celui ci est refusé par python à l'éxécution :

Code: Tout sélectionner
def toast():
    x = 7
    def f1():
        x = x + 10
    f1()
    print(x)
toast()


Python s'y perds et n'y arrive pas ! Il se mélange dans les "x". Il veut absolument que le "x" de gauche de "x = x + 10" soit local à la fonction f1 (il considère cette affectation comme une déclaration implicite).

Le problème a été pris au sérieux, et depuis la version 3, il existe un moyen de faire comprendre à python ce qu'on veut qu'il comprenne :

Code: Tout sélectionner
def toast():
    x = 7

    def f1():
        nonlocal x;
        x = x + 10

    f1();
    print(x)

toast()


Cela fonctionne, mais il a fallu dé-déclarer "x" (!!!)

Pour rappel, en 1980, le langage pascal n'avait aucun problème avec ce genre de programmes:

Code: Tout sélectionner
Procedure toast();
    var x : integer;

    Procedure g();
    begin
        x := x + 10;
    end;

Begin
    x := 7;
    g();
    writeln('x = ', x);
end;

begin
  toast();
end.


A l'heure actuelle, je pense que je conseillerais scheme (l'implémentation drracket est gratuite, libre de droits et open source) ou pascal.

MABYA
Membre Relatif
Messages: 401
Enregistré le: 13 Mar 2015, 15:37

par MABYA » 27 Mar 2015, 16:19

Gênant ça l'absence d'instructions de fin de blocs type Endwhile, Endif. Le visual basic compile certes mais séquentiellement alors que C (et d'ailleurs le petit TBC de Borland) compilent en bloc, ce qui est beaucoup plus rapide et agréable.

Avatar de l’utilisateur
chombier
Membre Irrationnel
Messages: 1313
Enregistré le: 19 Juil 2012, 19:35

par chombier » 27 Mar 2015, 16:21

Monsieur23 a écrit:Aloha,



Je suis peut-être un détraqué, mais je conseillerai plutôt un langage fonctionnel, typé, genre OCaml ou Haskell pour commencer (surtout si tu ne veux pas devenir "codeur", mais plutôt connaître la programmation dans un but scientifique)

Entièrement d'accord, j'ajouterais mon petit chouchou : scheme et son implémentation, drracket (http://racket-lang.org/)

Avatar de l’utilisateur
chombier
Membre Irrationnel
Messages: 1313
Enregistré le: 19 Juil 2012, 19:35

par chombier » 27 Mar 2015, 16:29

MABYA a écrit:Gênant ça l'absence d'instructions de fin de blocs type Endwhile, Endif. Le visual basic compile certes mais séquentiellement alors que C (et d'ailleurs le petit TBC de Borland) compilent en bloc, ce qui est beaucoup plus rapide et agréable.

Le C est vraiment un langage pour experts, sinon on est vite perdu. Et puis, même si je n'aime pas le C++, il a quand supprimé certaines limites du C, dans lequel il n'y a rien de dynamique au niveau de l'allocation mémoire, même pas les chaines de caractères.

Code: Tout sélectionner
#include

int main(int argc, char *argv[])
{
  char a[] = "taratata"; // a est un tableau à 9 éléments
  char c[24] = ""; // 24 éléments maximum, soit une chaîne de 23 caractères
  char e = 'X';

  strcat(c, a); /* tout va bien */
  strcat(c, a); /* tout va toujours bien */
  strcat(c, a); /* catastrophe */
}


Catastrophe : on a écrit '\0' en c[25], on a donc, selon les implémentations :
- modifié la valeur de la variable e
- modifié le dernier caractère du tableau a
- modifié tout autre chose, la pile d'appel par exemple.

Le comportement du programme à partir d'ici est impossible à prévoir sans regarder le code assembleur géneré par le compilateur.

Dans les livres, on aurait écrit "char c[1024];" en s'assurant (ou en priant pour) que la chaîne c ne dépasse jamais 1023 caractères...

Sans oublier la blague : ces quatre expressions sont rigoureusement identiques :
a[2]
*(a+2)
*(2+a)
2[a]
Ceux qui ne me croient pas, vérifiez le !!!

Source du dernier exemple : http://en.wikipedia.org/wiki/C_Traps_and_Pitfalls

Robic
Membre Irrationnel
Messages: 1084
Enregistré le: 03 Mai 2013, 12:00

par Robic » 27 Mar 2015, 20:43

chan79 a écrit:Pour Python, j'utilise cette doc . Je viens juste de commencer, il y a peut-être mieux. Les exercices commencent à la page 34.

C'est la doc que j'utilise depuis le week-end dernier et j'avance bien. Les exercices sont un plus car ils sont corrigés à la fin (mais pas tous). Ce que j'apprécie, c'est qu'il a choisi délibérément de parler d'interface graphique en début de cours, avant même de parler de la notion d'objet : ça permet de s'amuser tôt, c'est motivant.

Chombier : tes objections sur le langage Python me semblent concerner les programmeurs avancés. Là on est dans un contexte d'apprentissage de la programmation.

MABYA a écrit:Gênant ça l'absence d'instructions de fin de blocs type Endwhile, Endif.

Ben non : les fins de bloc sont clairement identifiées.

Le visual basic compile certes mais séquentiellement alors que C (et d'ailleurs le petit TBC de Borland) compilent en bloc, ce qui est beaucoup plus rapide et agréable.

Et le Python ne se compile pas, c'est un langage interprété (ce qui est plutôt avantageux pour l'initiation).

Avatar de l’utilisateur
chombier
Membre Irrationnel
Messages: 1313
Enregistré le: 19 Juil 2012, 19:35

par chombier » 27 Mar 2015, 20:52

Robic a écrit:Chombier : tes objections sur le langage Python me semblent concerner les programmeurs avancés. Là on est dans un contexte d'apprentissage de la programmation.


Certaines, oui. En revanche le fait que les déclarations de variables soient automatiques me parait très peu formateur. On écrit a=37 au milieu d'une fonction de 20 lignes, et hop, il y a une variable a qui est créée.

Si on veut faire des fonctions imbriquées (ce qui me parait assez important, c'est une question d'encapsulation et de visibilité), on va vite s'arracher les cheveux avec les "nonlocal").

Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6610
Enregistré le: 22 Nov 2007, 13:00

par fatal_error » 27 Mar 2015, 21:08

donc déjà
1) non C++ n'est pas une extension du C. et d'ailleurs on récupère des codeurs C qui font n'importe quoi en C++...
2) non C c'est pas fait pour experts. C c'est fait pour des systèmes qui exigent de bonnes performances. ca veut pas dire que ya que des gurus qui peuvent faire du C (même si ya qu'un guru qui va exploiter pleinement les capacités du langage).
3) non faire beaucoup de fonctions imbriquées, c'est bad practice. pour raisons de mémoire, mais aussi pour raison de segmentation de code et tout simplement de tests.
4) http://stackoverflow.com/questions/4020419/why-arent-python-nested-functions-called-closures explique que les lectures de variable outer scope sont possibles, c'est lécriture sur variable qui n'est pas possible (la modification l'est)
5) le python n'exige pas une compilation de l'utilisateur*. (ca veut pas dire que rien n'est compilé (voir les .pyc qui sont générés)
6) pas mal de langages permettent la définition de variable à la volée. et ca marche pas mal quand on développe pas n'importe comment. C'est ptet pas génial pour quelqu'un qui débute, certes. Après c'est assez subjectif et dépendant des besoins.
7) quand à True + True, au delà de la stupidité d'écrire ca, les casts à la volée peuvent se révéler assez agréables... ou bien assez désastreux il s'agit juste de pas faire n'importe quoi..
la vie est une fête :)

 

Retourner vers ✎✎ Lycée

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 52 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite