Débuter en programmation web

Pour un non débutant en programmation

a marqué ce sujet comme résolu.

Salut à tous,

en ce moment j'aimerais vraiment à apprendre à faire de beaux sites web interactif mais je ne sais pas trop comment me lancer, quel langage je devrais apprendre quel framework je devrait utiliser tous ces trucs un peu obscurs.

Bien sûr je ne pense pas que vous pouvez être capable de m'aider sans un petit récapitulatif de mes compétences donc le voilà :

  • Je suis un programmeur assez expérimenté et qui se plais bien avec le couple C/C++

  • J'ai des bases en python mais elles sont assez poussiéreuses (je l'utilise rarement)

  • J'ai récemment appris le paradigme fonctionnel avec Haskell et j'aimerais continuer dans cette voie mais je sais pas si c'est top pour débuter (Haskell n'a pas l'air d'avoir une grande communauté).

  • J'ai des bases en HTML/CSS

  • Je connais un peu près le fonctionnement de TCP/IP (appris avec ce tuto d'openclassroom).

Pour continuer sur la voie du fonctionnel il me semble que javascript implemente en partie ce paradigme mais ce langage m'a l'air d'être un gros bordel, sinon peu être un dialecte lisp ?

En tous cas j'espère que vous pourrez m'aider et je vous remercie d'avance pour vos réponses.

+0 -0

Salut !

Vu ce dont tu parles, tu sembles t'intéresser à la programmation back-end et non front-end ? En front-end, tu n'as pas le choix, c'est Javascript. Il y a quelques languages comme Typescript qui peuvent être compilé en JS, mais tu n'en as pas besoin si tu débutes.

Pour la programmation back-end, par contre, tu as bien plus de choix. Selon moi, les deux choix les plus accessibles sont Python ou PHP. Ce dernier peut être utilisé sans framework, vu qu'il a été conçu pour le web. C'est pas bien compliqué, chaque fichier .php contient de l'HTML avec des bouts de PHP encadré dans <?php et ?>. C'est la méthode la plus simple pour réaliser un site dynamique, mais c'est très rapidement très moche à lire. C'est pour cela qu'il y a des micro frameworks type slim. Ce genre de framework existe pour la plupart des languages, sinatra pour ruby, flask pour Python, express pour Node (dans ce cas c'est un peu différent, de par la nature async de Node), etc.

J'ai fais pas mal de PHP mais je suis allé cherché ailleurs par énervement du language (pourquoi ->, pourquoi <?php ?). Je suis passé par Node mais le côté async everywhere m'a bloqué (jeu de mot, you got it ? :) ), on n'a pas moyen de faire un truc simple sans callbacks. Je viens d'arriver sur Python il y a quelques mois et je préfère largement, pour plusieurs raisons (language pas limité au web, async si on le souhaite, multithreading/multiprocessing super facile à faire). Bref, là je parle plus du language en général que par rapport au web.

Conclusion time : je te conseille Python avec un micro framework type flask ou bottle mais tout est très subjectif.

Quand tu parles de beaux sites interactifs, tu entends comme zds par exemple? Parce que tu as pleins de possibilités qui s'ouvrent à toi: utiliser Django pour faire tes sites en python, apprendre le JavaScript pour utiliser des frameworks puissants comme meteor, angularJs, et bien d'autres. Tu peux aussi apprendre le PHP pour le côté serveur même si je te le déconseille fortement parce que je trouve que le PHP est un langage qui commence à être déprécié. Tu as a peut être tout ce que tu veux comme technologie pour faire des sites web aujourd'hui. T'as un langage que t'aimerais vraiment utiliser?

Coucou \o/

J'ai un profil similaire au tiens. Du coup, je te dis ce que j'ai choisi.

J'ai pris un VPS d'OVH à 3€ environ par mois. Mais j'aurais très bien pu le faire en local sur ma machine.

L'avantage, c'est de pouvoir toucher à toutes les technologies. C'est à dire que c'est "mon serveur", si j'ai envie d'essayer de faire mon site avec Haskell, par besoin de contacter l'hébergeur, je le fais point barre …

Pour commencer, j'ai fais un site en C et essayer un peu le C++ grâce aux CGI puis Fast-CGI. Avec Apache puis nginx. Ce qu'aucun hébergeur presque ne m'aurait laissé essayer.

Coté front, je me débrouillais déjà en HTML/CSS mais ça dérouille un peu. Je me suis surtout amuser avec JS et le SVG. Pour l'instant, je me forme à jQuery (qui a pas l'air si compliqué au final).

Désormais, dès que j'aurais le temps, j'essayerais node.js et le dev Web avec Python et le framework Django.

JS est un peu bordélique comme langage certes ; mais il mérite qu'on s'y intéresse.

@tleb : Merci pour ton retour. Pour pouvoir essayer autant de technologie, tu le fais en local ou sur un serveur ?

PS: A coté de ça, j'ai essayé beaucoup (vraiment beaucoup) de choses sur ce VPS. Ce qui m'a fait comprendre pas mal de principes sur le réseau même si j'ai encore des lacunes.

+1 -0

Et pour le fonctionnement du dev back-end plus généralement : on a des routes et la bonne est exécuté en fonction de l'URL et la méthode. Pour un site classique, tu auras uniquement besoin des méthodes GET (retourne une page à l'utilisateur, sous à l'aide d'un template qu'on render en lui passant des paramètres, en python c'est souvent jinja2 qui est utilisé) et POST (pour les formulaires). Par contre, il faut gérer les sessions, la sécurité (XSS, CSRF, injection en BDD, etc), l'authentification, la bdd, les messages flashs, etc.

@ache : j'ai un peu de mal à voir pourquoi tout faire sur un serveur, si c'est du dev. Je fais tout en local (sur un chromebook passé sous linux, mais bref) et j'installe tout en local. Si c'est Windows le problème, direction VM ou Docker. J'ai un Pi avec ports 80, 22 et 8080 ouverts pour pouvoir mettre en ligne (uniquement pour les sites perso).

Pour ce qui est de Node et Javascript, j'aime plutôt bien la syntaxe, mais l’obsession pour les callbacks m'a enervé. Une fois qu'on est dans un event, il n'y a pas besoin d'avoir de callbacks vu qu'on ne bloque déjà plus toute la loop, et donc je ne comprends pas pourquoi en mettre partout.

J'ai fais le changement Node->Python quand j'ai voulu faire un script Twitter. En Node, toute la lib repose sur des callbacks, on en a des dizaines imbriqués alors que le script suis un court linéaire. Alors qu'en Python, hop, 40 lignes, c'était fait, pas de callbacks inutiles à répétition. J'ai ensuite essayé Python pour le web, et les decorators sont un vrais plus par rapport à des frameworks web PHP type slim. On déclare nos routes avec, on limite l'accès à une URL, on check le token CSRF, etc.

Merci pour vos réponses, maintenant je comprends mieux la différence entre back-end et front-end.

Quand tu parles de beaux sites interactifs, tu entends comme zds par exemple?

GouleFutée

Oui c'est ça, j'aimerais bien donner une interface web à mes applications et essais réussis

T'as un langage que t'aimerais vraiment utiliser?

GouleFutée

Pas un langage particulier mais j'aimerais bien continuer sur le paradigme fonctionnel qui me plaît vraiment.

Et par rapport au dev je peux le faire sur mon pc quotidien où il vaut mieux en avoir un autre ?

+0 -0

Salut,

Haskell a une communauté moins grande que celle de PHP mais franchement j'ai jamais été gêné par ça. Surtout qu'en général les petites communautés sont beaucoup plus soudées. Quand je vais sur #haskell sur IRC tout le monde est super sympa et m'aide patiemment.

Pour le back-end, tu en a déjà entendu parler probablement mais tu peux utiliser le framework Yesod.

Quant au front-end, si tu veux rester avec du fonctionnel, tu peux jeter un coup d'œil à Elm ou Purescript. Je ne les ai jamais essayés par contre, donc je sais pas si c'est bien.

EDIT: Par contre utiliser deux langages fonctionnels pour le back et le front-end, ça peut être marrant mais ça fait un peu aficionado du fonctionnel :lol:

En tout cas j'ai testé CoffeeScript qui a quelques features fonctionnelles (pas trop strict non plus, style Python) et j'ai trouvé ça assez sympa.

+0 -0

Tu parles du paradigme fonctionnel, sans être plus précis; je t'invite sérieusement à jeter un coup d'œil à ocsigen, autant pour le front-end que pour le back-end, pour le coup. Et c'est très formateur.

La dernière fois que je me suis servi de Yesod, c'était la catastrophe à l'installation, avec des gros conflits de dépendance assez décourageants. Ça s'est certainement amélioré depuis, mais à vrai dire je ne considère vraiment pas Yesod comme étant la solution idéale pour faire de web, surtout si l'on en a pas l'habitude, et n'est pas particulièrement intéressant au niveau purement formatif. Tu peux t'intéresser à happstack.

Au contraire de @felko, je te déconseille vivement d'utiliser Elm pour autre chose que pour cela est fait: faire du FRP. C'est vraiment très mauvais pour construire du Web sémantique. De fait, je te déconseille d'utiliser autre chose que JavaScript en front-end, surtout depuis ES6 (en dehors de ce que Ocsigen propose, pour le coup). Pour aller plus loin, je te déconseille de faire de la programmation front-end. La plupart des choses dont tu peux avoir réellement besoin seront faisables en CSS.

Salut dab,

C'est un peu hors sujet mais normalement si tu installes dans une sandbox, il n'y a aucun problème de dépendances.

Sinon pour Elm, comme je l'ai dit, je ne l'ai pas testé. Mais il m'avait semblé que c'était au moins partiellement fait pour le front-end, comme semble l'indiquer le premier code d'exemple sur lequel on tombe sue la page d'accueil de Elm.

@ache : j'ai un peu de mal à voir pourquoi tout faire sur un serveur, si c'est du dev. Je fais tout en local (sur un chromebook passé sous linux, mais bref) et j'installe tout en local. Si c'est Windows le problème, direction VM ou Docker. J'ai un Pi avec ports 80, 22 et 8080 ouverts pour pouvoir mettre en ligne (uniquement pour les sites perso).

tleb

Alors j'ai pzd dis qu'il devait obligatoirement utiliser un serveur. J'ai dis que j'ai pris un serveur et que je ne l'ai pas regretté. De toute façon, toute la partie de test et développement se fait en local comme tu dis.

C'est vrai que la Raspberry Pi est également une solution qui peut être très intéressante !

+1 -0

C'est un peu hors sujet mais normalement si tu installes dans une sandbox, il n'y a aucun problème de dépendances.

Justement pas à l'époque ou je m'en étais servi, il y avait des problèmes d'interdépendances au sein de Yesod.

Sinon pour Elm, comme je l'ai dit, je ne l'ai pas testé. Mais il m'avait semblé que c'était au moins partiellement fait pour le front-end, comme semble l'indiquer le premier code d'exemple sur lequel on tombe sue la page d'accueil de Elm.

Oui, c'est totalement fait pour du front-end et ça marche très bien pour faire des petits jeux. Mais tu peux regarder le code source généré sur les pages d'exemple, c'est tout sauf ce qu'il faut faire quand l'on veut faire du Web sémantique. (Ce que je trouve très rigolo vu comment le langage se vend)

Salut, merci de vos réponses :)

Tu parles du paradigme fonctionnel, sans être plus précis; je t'invite sérieusement à jeter un coup d'œil à ocsigen, autant pour le front-end que pour le back-end, pour le coup. Et c'est très formateur.

dab

Ocsigen est très intéressant et à l'air bien documenté.

La dernière fois que je me suis servi de Yesod, c'était la catastrophe à l'installation, avec des gros conflits de dépendance assez décourageants. Ça s'est certainement amélioré depuis, mais à vrai dire je ne considère vraiment pas Yesod comme étant la solution idéale pour faire de web, surtout si l'on en a pas l'habitude, et n'est pas particulièrement intéressant au niveau purement formatif.

dab

C'est exactement ce que je craignait.

Du coup maintenant soit je me lance sur OCalm avec Ocsigen ou sur Python avec je ne sais quel framework.

+0 -0

Je crois qu'il faut surtout se demander ce que tu veux faire. S'il s'agit de Web traditionnel, que tu pars pourras utiliser pour de vrais projets, alors immédiatement Python avec Django. Si c'est toujours pour t'amuser avec du Web, il y a toujours Flask et des projets équivalents. Si tu veux faire du Web sémantique mais sans t'en rendre fondamentalement compte, alors Ocsigen est pour toi.

Exactement oui. S'il ne s'agit que d'une page personnelle, d'un blog, etc. Flask est très adapté.

Je profite du coup de juste dire qu'à mon avis, à l'état actuel, aucun langage purement fonctionnel n'est adapté pour faire du Web de façon agréable. Je pense ici par exemple à Haskell, où tu pourras assez souvent te retrouver à vouloir faire un Prelude.head d'une liste vide. Mais il y a plein de cas analogues.

Juste qu'est ce que le web sémantique ? J'ai lu la page de Wikipédia mais j'ai pas vraiment cerné le truc.

Sinon je pense que je vais commencer à m'amuser avec Flask pour m’habituer et que je verrais d'autres langages/framework plus tard. (sauf si c'est une mauvaise idée mais je ne pense pas)

+0 -0

Pas mal pour Elixir si certain l'on essayer je veux bien leurs avis.

Du coup là j'essaye Flask avec le Quickstart officiel, si certain d'entre vous connaisse de bons tutoriels ne hésiter pas à vous manifester. :)

+0 -0

Pour répondre vite fait:

  • "Pourquoi <?php" : Parce qu'il s'agit des "processing instructions" de XML, rendant le fichier (x)HTML parfaitement valide, même si PHP n'est pas installé sur le poste.

  • "Pourquoi ->": parce que le . sert à la concaténation, donc $this.param serait ambigu: est-ce la concaténation de $this et de la constante param, ou l'attribut param de $this?

+0 -0

Xenos, ne t'inquiète pas, je connais bien le language et je l'ai utilisé pendant longtemps. Sauf que :

  • la norme est maintenant aux templates. Ça fait du code moche et difficile à maintenir d'avoir de la logique et des données (ce qu'il y a à afficher) en mêlées ensemble. Pas obligé d'utiliser du MVC, mais rien que séparer le HTML du PHP ça aide.
  • c'est vrai que c'est très commun comme symbole le point pour de la concaténation. Vu comment PHP est laxiste sur les opérations, je ne comprends pas pourquoi il n'utilise pas le + pour additionner deux strings. "foo" + "bar" === 0. Logique. Et deux symboles difficiles à accéder pour appeler une propriété ou une méthode sur une instance, ce n'est pas très logique.
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte