salut

Je suis intéréssé par la programmation et j'aurais voulu saoir si il y avait un langage a me recommander pour bien commencer
Salut,

excellente initiative, et on ne peut que t'encourager 🙂

NVClock est écrit en C ; il faudra maîtriser les bases de ce langage.
Ensuite tout dépend des fonctionnalités que tu souhaites ajouter à ce programme :
- modifier l'interface associée : auquel cas il faudra jeter un coup d'oeil à la bibliothèque GTK ;
- toucher aux « fondements » : il va falloir, je pense, des notions de programmation X.

Un premier pas, si tu souhaites un livre : « Programmer en langage C », de Claude Delannoy.
Sans compter les nombreux tutoriaux que tu trouveras sur le net ; entre autres :
http://c.developpez.com/cours/
Nvclock ne possède pas d'interface graphique tout se fait par le terminal
donc vous coneillez plus le C (sans dénigrer le python)
Pour la simplicité et la concision de sa syntaxe, la beauté de la récursivité, la classe d'un langage fonctionnel, le langage le plus agréable du monde : Caml.
Il y a bien une interface (je rajoute d'ailleurs que tu as le choix entre une interface GTK et une QT [pour ce dernier cas, c'est C++, mais visiblement l'interface n'est pas ta priorité 😉]) : tu peux le vérifier dans les sources, c'est indiqué dans le fichier README.


ÉDIT : si tu n'as pas de notion particulière programmation, se faire la main avec C n'est pas une mauvaise chose (bien des apprentis développeurs ont débuté avec C, même si moi c'est avec ma calculatrice programmable :-D). Tu peux aussi jouer au début avec des langages interprétés (Python a été évoqué, Perl aussi, voir bash).
Si j'étais méchant (non, très méchant), je te pousserais à ADA (l'avantage c'est que tu pourras te vanter de faire rouler des TGV avec :hammer:).
voyez vous une objection si commence les deux langage,les resumé de la FNAC sur
"Programmer en langage C" de Claude Delannoy et "Apprendre à programmer avec Python" de Gérard Swinnen
sont très alléchant

pour etre franc je ne sais pas lequel choisir de peur de rater quelque chose
si un prof d'informatique pouvez donner son avis
Sans hésiter, le « Delannoy » : M. Delannoy est un auteur réputé programmé d'ouvrages didactiques consacrés à la programmation (j'ai appris Java et la programmation objet avec son livre « Programmer en Java ») : les livres sont épais (quoiqu'il y ait des éditions de poche), pas donnés (~ 35 €, mais ces livres valent ce qu'ils valent 🙂), mais tu n'es pas obligé de tout lire d'un coup. C'est très bien fait pour les débutants !

(je ne suis pas prof' d'info. [pas encore ? :lol:], mais il est souvent cité par les prof. concernés).
une autre question qui me fait honte
j'ai une équivalence bac littéraire faut-il revoir un peu les math?
Tu n'as pas absolument pas à avoir honte de cela, au contraire !
Pour les maths ? Non, pas spécialement (un peu d'arithmétique néanmoins, au pire [et encore !] de l'algèbre linéaire pour les cas de force majeure :lol:)... Sauf si tu as démissionné au moment des divisions à virgule :hammer: !
Apprendre à programmer avec Python
L'ancienne version du livre est dispos en libre, tu peux le télécharger dans le lien que j'ai donné plus haut pour te faire une idée.
http://python.developpez.com/cours/TutoSwinnen/ et tu trouveras aussi pas mal de bouquins en suivant lelien de Pikachu.
:roll: bien que les arabes aient fait avancer les math en inventant le zéro
moi je tourne autour
Je ne partage pas vraiment les recommandations précédentes (Python? le C en direct?).

Java est sans doute le choix d'entrée le plus cohérent, notamment parce que le langage est sans doute moins permissif, plus structuré que le C (bonjour la redéfinition des types, la gestion permissive des pointeurs, les conditions de portabilité malloc(sizeof(integer)), le code imbuvable ...) tout en étant fort bien documenté.

C'est un début efficace dans un langage structuré, permettant une approche objet.
Je me permets de faire objection face à cette remarque néanmoins justifiée.
La plupart des langages de programmation impérative comprennent « le minimum vital » pour débuter l'algorithmique (sans quoi ils n'auraient aucun intérêt, c'est presque une lapalissade) :
- gestion de variables (typées ou non), y compris tableaux ;
- structures conditionnelles (if-then-else) ;
- structures de boucles (for et while) ;
- récursivité ;
- sans oublier la possibilité d'afficher les résultats (y a pas de raison qu'on ne voit pas ce qui se passe :-D).
De ce point de vue, a priori tout langage satisfaisant ce minimum peut être utilisé pour débuter (C [sans toucher à l'allocation dynamique ni aux pointeurs et encore moins aux appels système], Java [en se limitant à la classe principale], Python y tutti quanti, même ADA, même bash et ses avatars ; quant à Logo, ça reste à discuter [les années 80, soupir :lol:]) ; le reste n'est que syntaxe.

On pourrait aussi discuter des spécificités liées à chaque langage pour de la programmation « plus poussée » ; je pourrais ainsi dire que Java --- de par sa nature de langage (preque) complètement orienté objet (le « presque » because of les types « reliquats » bool, int, float et double) --- pourrait être déroutant pour un débutant.
Je pourrais ajouter aussi que nombre d'ouvrages recommandent d'avoir des notions de programmation impérative avant de s'attaquer à Java (de part son objectitude) et en général à la P.O.O. (noter tous les conditionnels dans ce paragraphe). Et on pourrait exhumer ces supposés « défauts » dans tous les langages (même en ADA).

Ceci dit, le problème primordial reste de maîtriser les bases de l'algorithmique. Libre à chacun ensuite d'« exprimer » ce qu'il a assimilé dans le(s) langage(s) de son choix (même en ADA c'est permis :-D), et en fonction de ses besoins (la multitude de langages existants n'est pas due à une volonté occulte de pourrir la vie des développeurs, n'est-ce pas ?). Et pourquoi pas de passer à la programmation fonctionnelle (lisp et ses déclinaisons, caml...) et/ou objet (C++, plus souple que C tout de même, Java, OCaml, même Perl, Python ET ADA).

Ceci dit (bis), si l'objectif à moyen terme de rookie est de désosser NvClock, C. Et puis n'est-ce pas Le langage dédié pour UNIX (argument d'autorité à 2 balles) ?
Avant d'entamer la programmation, commencez par etudier les algorithmes, en commencant par les tris de base (tri par insertion, tri en bulle/par permutations, tri fusion, tri en tas, quick sort, etc.). Puis petit a petit les manipulation des structures de bases : les arbres, les graphes, b-tree, etc.

Les gens qui n'etudient pas les algos et qui disent programmer, je les compare volontiers a des gamins de CP qui se disent capables d'ecrire du proust. (comprenez "ridicules au possible")

Je ne recommande ni C++, ni Java, qui necessitent la comprehension du paradigme objet, et encore moins C qui est tres obscure pour les debutants (surtout a cause des pointeurs, qui en derouteront plus d'un), a mon tres humble avis. Et probablement pas bash. Je vous suggere un langage de haut niveau ou de presque-haut niveau pour commencer.

Mon experience personnel a ete de commencer avec pascal. C'etait il y'a 12 ans et on trouvait deja ca old school, mais ca a ete utile en terme de comprehension. Puis un langage lispien (scheme, en l'occurence) pour la manipulation de fonction, la comprenhesion des concepts tournant autour de la recursivite,..
objet (C++, plus souple que C tout de même, Java, OCaml, même Perl, Python ET ADA).
Et CLOS alors ? :p

Python est sans doute un bon candidat pour debuter.
Ma (toute) petite contribution à ce débat :
Pour commencer il sera plus simple d'apprendre Java : contrairement à C, la gestion de la mémoire est transparente.
la je suis un peu perdu :roll:
vous a tous des arguments (qui parfois m'échappent) intéréssant donc....
je ne sais pas quel langage je devrais étudier ou alors faire comme a recommander Anvil revenir a la source:
les math
Anvil ne parle pas de mathématiques mais d'algorithmie: comment concevoir, organiser et réaliser des séquences de traitements logiques pour résoudre un problème (sélectionner, trier, ....).

Anvil recommande un langage de haut niveau, le Pascal, pour commencer à maîtriser cette algorithmie en s'affranchissant de certaines contraintes propres aux langages qui peuvent obscurcir cette première finalité (les pointeurs en C par exemple, une certaine logique objet en Java ...).

Pour le Lisp (ou ses succédanés), il te faudra patienter (ah les tours de Hanoi en Lisp ...).

Tu as donc plusieurs avis. Le démarrage en Pascal est un choix habile (beau langage d'initiation, pédagogique, mais hélas, sans prolongement en environnement professionnel, les choix étant plutôt portés sur C, C++ -avec des risques!- Java) qui ne ferme aucune possibilité ultérieure.

Le point de vue de l'étude pragmatique de l'algorithmie est prépondérant: tu ne peux pas apprendre un langage informatique en partant des instructions commençant par a pour terminer par les instructions commençant par z. Fixe toi un créneau simple comme l'indique Anvil (les tris! les factorielles en récursif, les régressions linéaires en récursif ...).
Le démarrage en Pascal est un choix habile (beau langage d'initiation, pédagogique, mais hélas, sans prolongement en environnement professionnel, les choix étant plutôt portés sur C, C++ -avec des risques!- Java) qui ne ferme aucune possibilité ultérieure.
C'est pourquoi anvil, par la suite, cite Python.

Rookie jette un coup d'oeil sur les deux sites, donné plus haut, ils sont bourrés d'explications qui te permettront d'affiner ton choix.