Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Quelles sont les idées et pratiques véritablement utiles en matière de programmation ?
Un professeur en fait une liste

Le , par Malick

23PARTAGES

7  1 
Daniel Lemire, un professeur et chercheur dont les travaux portent sur l'indexation, les bases de données et la recherche d'information, s'est prononcé sur les meilleures pratiques à adopter en matière de programmation. Dans un billet, l'expert avance que l'industrie du logiciel est probablement la plus dynamique et innovante qui soit au sein de toutes les entreprises. Au vu de la myriade d’idées autour de la programmation, il s’est interrogé sur les meilleures pratiques à adopter.

Voici sa liste sur des idées qui seraient, selon lui, vraiment utiles et importantes dans ce domaine :
  • une programmation structurée ;
  • Unix et sa philosophie correspondante ;
  • les transactions de base de données ;
  • les bases de données relationnelles ;
  • l'interface utilisateur ;
  • les tests de logiciel ;
  • les structures les plus élémentaires des données (la table de hachage, les arbres) et une poignée d'algorithmes de base à l'instar de Quicksort;
  • le chiffrement à clé publique et le hachage cryptographique ;
  • un langage de programmation de haut niveau ;
  • un contrôle des versions.

« Bien entendu, vous pouvez avancer que j'ai omis beaucoup de choses importantes. Peut-être que vous pensez que la programmation fonctionnelle et orientée objet est essentielle. Peut-être que vous pensez que je devrais inclure l'analyse de la complexité, JavaScript, XML. On peut avoir un débat sans fin ... mais j'essaie de le réduire à une liste sans controverse. En fait, je voudrais proposer des idées clés qui seront universellement reconnues comme étant utiles ».

En d’autres termes, essayez de vous mettre dans la situation où vous êtes en présence d’un « maître de la programmation logiciel » : qu’est-ce qu’il va sûrement recommander à un enfant qui voudrait devenir un développeur ? La liste est totalement ouverte à vos suggestions.

Source : blog de Daniel Lemire

Et vous :

Que pensez-vous des éléments de la liste de Daniel Lemire ? Voudriez vous en modifiez un ou plusieurs ? Lesquels et pourquoi ?
Si vous deviez compléter la liste, quelles pratiques considérez-vous comme indispensables en matière de programmation ?

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de pquoi
Futur Membre du Club https://www.developpez.com
Le 22/09/2015 à 12:51
Citation Envoyé par tp1024  Voir le message
Je crois qu'il veut dire, si je me base sur l'idée de génie qui fit le sucés de UNIX, d’après mes profs, c est qu'avec Unix, tout est vu/manipulable comme un fichier.
Le disque dur, une partition, la mémoire, un socket... tout est un fichier.

Moi je pense qu'il veut dire, si je me base sur mon ami Wikipedia:
« Voici la philosophie d'Unix :
Écrivez des programmes qui effectuent une seule chose et qui le font bien.
Écrivez des programmes qui collaborent.
Écrivez des programmes pour gérer des flux de texte [en pratique des flux d'octets], car c'est une interface universelle.
»
5  0 
Avatar de el_slapper
Expert éminent sénior https://www.developpez.com
Le 22/09/2015 à 13:49
une programmation structurée ;
==> En bref l'invention de la routine. Qui reste, pour moi, la plus grande avançée, et de moin, en termes de codage. Qu'on l'utilise sous forme de procédure, fonction, méthode, propriété, peu me chaut. L'important, c'est de centraliser les redondances dans des routines.

Unix et sa philosophie correspondante ;
==> "Tout est fichier". C'est assez puissant, comme concept. Fondamental, je ne sais pas, mais puissant et utile.

les transactions de base de données ;
==> Il y a d'autres manières de faire. Mais c'est fort utile.

les bases de données relationnelles ;
==> Pareil, utile, mais c'est une manière parmi d'autres.

l'interface utilisateur ;
==> il y a des gens qui n'en font jamais en 40 ans de carrière- mais c'est comme les poissons volants. En général, c'est une culture qui manque.

les tests de logiciel ;
==> C'est un métier complet(c'est devenu le mien). Il est important d'avoir un vernis.

les structures les plus élémentaires des données (la table de hachage, les arbres) et une poignée d'algorithmes de base à l'instar de Quicksort;
==> Je suis partagé. Franchement, un quicksort, on utilise celui qui marche mieux que ce qu'on pourrait faire, optimisé par de experts que nous ne serons jamais. D'un autre coté, c'est un bon exercice de style. De là à en faire un truc majeur à enseigner? Faut pas pousser mémé dans les orties.

le chiffrement à clé publique et le hachage cryptographique ;
==> C'est plus de la culture G qu'autre chose. Tout le monde n'en a pas l'usage. Mais en culture G, àa me parait important.

un langage de programmation de haut niveau ;
==> Urk? On utilise les outils qui correspondent à notre besoin. Le gars qui écrit des drivers pendant 40 ans, kennenaafout' du haut niveau(et c'est quelqu'un qui a toujours fait du haut niveau qui di ça).

un contrôle des versions.
==> C'est un métier complet(celui de mon chef). Il est important d'avoir un vernis.

En bref : c'est bien gentil, mais le gars a bien ciblé sur un certain profil de besoins. Le sien, en fait. Il y a des gens, en dehors de la routine, du test et du contrôle des versions, qui n'ont pas besoin de tout ça.
5  0 
Avatar de Luckyluke34
Membre émérite https://www.developpez.com
Le 22/09/2015 à 13:15
L'auteur ne décrit pas les pratiques indispensables en programmation mais les idées qui ont fait la preuve indiscutable de leur utilité. En d'autres termes, chaque développeur n'a pas forcément besoin de savoir les implémenter, mais elles jouent un rôle important dans la discipline qu'est le génie logiciel.

Ceci dit, sa liste est un fourre-tout complètement subjectif et sans cohérence particulière, et d'ailleurs si on demande à 10 programmeurs ils répondront 10 choses différentes. Le nombre illimité d'items dans la liste fait qu'on ne pense pas forcément avec logique à ce qu'on répond.
4  0 
Avatar de DonQuiche
Expert confirmé https://www.developpez.com
Le 22/09/2015 à 13:53
Citation Envoyé par Népomucène Voir le message
Maintenant les transactions c'est facile à apprendre.
Le concept lui-même est simple mais dès que tu abordes les niveaux d'isolation, les transactions imbriquées, la granularité du verrouillage ou la gestion d'un rollback côté code, tu te retrouves vite face à une armada de problèmes dont certains sont parmi les plus ardus à maîtriser en programmation.

Citation Envoyé par Luckyluke34 Voir le message
Ceci dit, sa liste est un fourre-tout complètement subjectif et sans cohérence particulière, et d'ailleurs si on demande à 10 programmeurs ils répondront 10 choses différentes.
D'abord ce sera forcément fourre-tout vu la nature de l'exercice. Ensuite une liste entièrement consensuelle sera par définition acceptée par la plupart, même si tous voudront y ajouter des éléments non-consensuels.

Pour ma part je ne retirerais qu'Unix. Le reste me semble effectivement être essentiel.

Citation Envoyé par gstratege Voir le message
les transactions de base de données ; -> je connais pas (grave ?)

le chiffrement à clé publique et le hachage cryptographique ; -> non plus (grave ?)
Si tu travailles avec un SGBD il est indispensable que tu connaisses au plus vite les transactions, sans quoi il y a de bonnes chances que ton code corrompe la base.

Pour le chiffrement à clé publique, fais simplement en sorte de t'y intéresser le jour où tu rencontreras l'un des deux cas suivants :
* Contrôle d'identité sans que le contrôlé ne doive dévoiler son mot de passe (comme les certificats de sites web ou la signature du fabricant d'une application).
* Établissement d'une discussion chiffrée sans mot de passe commun (comme la poignée de main en https).
4  0 
Avatar de souviron34
Expert éminent sénior https://www.developpez.com
Le 23/09/2015 à 19:53
Tout à fait d'accord avec el_slapper (ça t'etonnes ?)

Il semble qu'il y ait une légère baisse, mais il y a quelques années, tous les premiers trimestres on avait droit à des interventions (en particulier sur C et algos) sur les grands nombres et les bibliothèques associées,, Et il m'a fallu X posts (et Z blastages) pour faire comprendre que dans le vrai monde, à part la crypto (et sans doute l'adressage sur plus de 64 bits), ça servait pas à grand chose..

Mais, comme je l'avais soupçonné à l'époque et ce cher monsieur confirme, chez certains universitaires/profs, ça semble un incontournable.. Qui rend déraisonnable une foultitude de choses de calculs.. (et de place dans des BD), sans parler de l'absence de signification...

Bref, me semble que l'histoire de la Grande Convergence des années 60-70-80 (Fortran/C, ftp, Unix, X11, Motif, HTML, WWW) et le point de rupture milieu des années 90 et aujourdhui avec les modes et les déifications successives (TDD, Agile, objet, cloud, Big Data..) et les buzzwords seraient de base plus instructives..

De même qu'une base d'assembleur (savoir comment ça marche au coeur), que donc quel que soit l'outil, finalement ça se résume à des instructions élémentaires en série et des JMP..

Une sensibilisation forcenée aux utilisateurs (interface ou pas), une autre à KISS, et une autre enfin à penser long terme, me semblerait de base..

Enfin un enseignement profond d'humilité et de doute me semble indispensable, vu que la philo et le reste ne sont quasi plus enseignés,,,

D'ailleurs ce monsieur omet l'architecture, et les méthodologies, au minimum Waterfall.. L'info c'est pas que de la technique.... Et si les gens se souvenaient un peu plus des exemples par exemple de ponts ou aqueducs romains, ou même des maisons du XIX, qui , sans outils informatiques, tiennent encore 200 ou 2000 ans après, peut-être réfléchiraient-ils à 2 fois avant de foncer tête baissée sur la première mode venue, et le "jetable"..
4  0 
Avatar de B150922
Futur Membre du Club https://www.developpez.com
Le 22/09/2015 à 14:38
Et bien je fait partie des gens qui peuvent dire qu'ils ont apprit tout ça et savent le pratiquer. J'ai fait deux CV dans ma vie, le premier qui mettait ces points en avant et un second qui était dans lequel j'insistait plus sur mes expériences en terme de mot clé: langages, librairies, outils. Vous savez, C#, Entity Framework, ASP.NET MVC, WebAPI, MVVM et tout ces mots magiques qui font passer votre CV au dessus de pile. Les mêmes mots magiques existent pour Java, C++ et d'autres langages... La liste n'est pas exhaustive.

Je vous le donne en mille, c'est bien ce second CV et principalement les mot clés qui intéressent les entreprises à mon grand regret. En plus de 10 ans de carrière on m'a posé des questions lors d'interviews sur tout ces mot clés et jamais personne ne s'est intéressé ou ne m'a posé des questions sur la gestion des sources, les tests, le chiffrement, Unix et sa philosophie, les transactions, l'un ou l'autre algorithme... oui on m'a vaguement demandé si je connaissait sans plus de question ou d'intéret.

Je suis d'accord avec ce professeur mais j'ai plus vraiment d'espoir.
3  0 
Avatar de tp1024
Membre habitué https://www.developpez.com
Le 22/09/2015 à 11:40
Citation Envoyé par gstratege Voir le message
Unix et sa philosophie correspondante ; -> si c'est manipuler un peu de ligne de commande sous Ubuntu alors oui je connais

Je crois qu'il veut dire, si je me base sur l'idée de génie qui fit le sucés de UNIX, d’après mes profs, c est qu'avec Unix, tout est vu/manipulable comme un fichier.
Le disque dur, une partition, la mémoire, un socket... tout est un fichier.
2  0 
Avatar de fatbob
Membre confirmé https://www.developpez.com
Le 23/09/2015 à 13:34
Citation Envoyé par B150922 Voir le message
En plus de 10 ans de carrière [...] jamais personne ne s'est intéressé ou ne m'a posé des questions sur la gestion des sources, les tests, le chiffrement, Unix et sa philosophie, les transactions, l'un ou l'autre algorithme... .
D'après mon expérience et celle de quelques potes qui commencent à avoir pondu pas mal de code et architecturé quelques applications... dans le domaine du logiciel, la qualité est trop souvent un détail insignifiant. La plupart des décideurs que j'ai pu rencontrer n'y connaissent finalement pas grand chose en dehors de quelques termes qui font bien en business loto.
On préfère embaucher un type avec un ou deux ans d'expérience qu'on pourra payer avec des queues de cerises qu'un développeur chevronné.
2  0 
Avatar de damien27000
Membre régulier https://www.developpez.com
Le 24/09/2015 à 21:06
Valable pour de l'informatique de gestion.
Le développeur bas-niveau/industrielle n'a pas les mêmes besoins.

Et dans ce cas je pense que la maitrise des algos de tris comme QuickSort n'est pas réellement nécessaire.
La maitrise des SGBD/SQL est amplement suffisante (et la notion d'algo de tri se recoupe avec l'utilisation d'index...).
2  0 
Avatar de frederion
Nouveau Candidat au Club https://www.developpez.com
Le 30/09/2015 à 21:11
Vous citées Mr Lemire, bien des techniques de programmation, mais ce que me semble le plus important est la phase d'analyse et de modélisation du programme.
On vois bien trop souvent des projets qui partent dans tous les sens, ou qui ont des oublis de fonctionnalité qui deviennent des programmes non maintenable ou instable après production.
3  1