Que conseillez-vous à un vrai débutant en développement Web ?

a marqué ce sujet comme résolu.

@Emeric @entwanne je crois qu’on c’est mal compris. A aucun moment je critique Python et Django. C’est juste l’impression que j’ai quand je vois quelqu’un en parler.

Sur le sujet je n’ai pas grand chose à dire mis à part ce que j’ai déjà dit plus haut, php = facilité (ressources/aide/docs/tutos).

J’ai commencé avec Ruby il y a plusieurs années et en dehors de mon livre j’ai eu très peu d’aide. C’est vraiment frustrant (c’était il y a ~10 ans)

Sur le sujet je n’ai pas grand chose à dire mis à part ce que j’ai déjà dit plus haut, php = facilité (ressources/aide/docs/tutos).

#VK

Comme ma réponse était plutôt imposante, j’ai préféré synthétiser tout cela dans un billet.

Je suis tombé sur ce sujet via le billet d’entwanne et wow, ça part vite en vrille et beaucoup de bêtises dites ici et là. D’habitude, je passe assez peu dans cette section et surtout dans des sujets comme celui-ci parce que ce genre de discussions m’emmerdent au plus haut point.

Mais quand même… Calme les gens. Surtout si, en défendant vos positions, vous en venez à dire des sottises de ce genre :

Exactement ce que j’ai écrit, Symphonie et autre consort deviennent de moins en moins utilisé, mais Prestashop et WordPress de plus en plus.

Alors que des frameworks en PHP comme Laravel connaissent un succès certain, comme Django et d’autres. Oui, PHP a des inconvénients – beaucoup trop, selon certains – mais il n’est pas plus dur ou plus facile à apprendre que Python, C ou que sais-je. Certaines personnes auront plus d’aisance que d’autres. Un débutant n’en est pas un autre. Prenez un peu de recul sur vos positions respectives.

C’est quelque chose de très subjectif, oubliez pas. C’est une question d’affinité.

+2 -0

Mouais pas fan de ce que tu as pu écrire.

Surtout la partie "Un environnement pas si facile". Car que je sache aujourd’hui il suffit de télécharger une archive, la décompresser, l’ajouter a la variable d’env PATH et taper php -S localhost:8080 et on peut dev en php.

Un hello world ce résume a

1
2
3
<?php
  echo "Hello World!";
?>

Alors que en Ruby par exemple un hello world c’est plutôt :

1
2
3
4
5
6
7
require 'rack'

app = Proc.new do |env|
    ['200', {'Content-Type' => 'text/html'}, ['Hello World.']]
end

Rack::Handler::WEBrick.run app

Maintenant va expliquer a un débutant ce qu’est le content-type, ce que veux dire ce 200, va lui expliquer ce qu’est un block au premier chapitre, ou une classe ou une gem.

Et sortir de faux arguments du style "Ruby on Rails te parraitra magique au début" c’est complètement stupide car tu remplaces "Ruby On Rails" par "Laravel" et ça marche aussi sauf que cette fois c’est le PHP que tu flattes.

Un hello world en Ruby, c’est

1
puts 'Hello World'

Désolé, mais ce que tu dit est de la désinformation, le débutant ne vas surtout pas utiliser Rack, non mais ho !

Ensuite, tu lui montre sinatra si tu ne veux pas lui montrer Rails immédiatement, mais tu ne lui montre pas Rack.

Les rares fois ou j’ai du utiliser Rack, c’est pour des middleware, et désolé, c’est pas le débutant qui vas en faire.

1
2
3
4
5
require 'sinatra'

get '/' do
  'Hello World'
end

Mais quand tu en arrive la, tu lui as déjà expliquer les librairies et les gems.

+1 -0

Maintenant va expliquer a un débutant ce qu’est le content-type, ce que veux dire ce 200, va lui expliquer ce qu’est un block au premier chapitre, ou une classe ou une gem.

#VK

Justement, un développeur web (même débutant) devrait savoir qu’il s’agit d’un serveur répondant à une requête HTTP. Que sa réponse doit contenir un code de statut et différentes en-têtes.

Il devrait savoir que ce n’est pas un script exécuté à chaque requête, et écrivant sur la sortie standard.

Bonjour,

J’arrive du billet d’humeur d’Antoine.

Moi aussi j’ai débuté le PHP en tant qu’amateur en 2005. Avec le recul c’est clair que PHP a plein de défauts et d’incohérences, mais tous les langages en ont si on cherche bien. ET quand on est débutant on ne les remarque pas toutes, on s’en rend compte en gagnant de l’expérience et par comparaison avec ce que font les autres.

Malgré son côté langage de bricolo, le gros avantage de PHP par rapport aux autres reste quand même qu’il a été conçu spécifiquement pour le web depuis le début. Donc si on veut faire du web, c’est probablement le meilleur choix pour avoir un truc basique qui fonctionne rapidement sans trop de priste de tête. Pas de routing global, pas d’injection de dépendance, pas d’ORM, pas de moteur de template, même pas besoin de savoir comment fonctionne le protocole HTTP dans les détails…

Alors certes, c’est pas du très bon code parce qu’on mélange joyeusement SQL, PHP et HTML dans les mêmes fichiers; mais ça permet de débuter rapidement; et quand on est débutant, avoir un résultat qui marche assez vite, c’est motivant et ça donne envie de continuer. Les problématiques de sécurité et de maintenabilité, avec les bons frameworks qui y ont réfléchi, ça viendra en son temps.
Fatalement, tout le monde doit passer par la phase code pourri et pas sécurisé, ça fait partie de l’apprentissage. Perso je l’ai appris à la dure en me faisant pirater mon jeu PHP en 2007, mais au début mieux vaut ne pas tout balancer d’un coup, ça fait trop.

Pour l’anecdote, j’ai appris JavaScript avant PHP et la première utilisation que j’en ai vue, c’est faire une highscore pour un petit jeu en js. Mon tout premier script a été le suivant ! (Ne le faites surtout pas chez vous)

1
2
3
4
5
<?php
$fp = fopen($_GET['file']);
fwrite($fp, $_GET['data']);
fclose($fp);
?>

Par contre, tu as fait le mauvais choix en optant pour EasyPHP à l’époque. J’ai béni le jour où je suis tombé sur WAMP. EasyPHP 1.8 n’a jamais fonctionné chez moi sur XP.

Maintneant, si on passe au niveau suivant, les frameworks, je crois que Django, Rails et Symfony font jeu plus ou moins égal, ce n’est plus qu’une question d’affinités. ON peut aussi y adjoindre Node.js. Même Spring Boot n’est plus si loin finalement…

Pour la seconde petite histoire, le jour où j’avais voulu essayer ruby, je l’ai désinstallé aussi vite; pages blanches inexpliquables, et rien de très clair pour régler mon problème rapidement; et leur bordel de green threads qui fait qu’un read bloque tout le monde, ça m’a saoulé.

Je dois reconnaître que python ont drôlement bien fait leur truc. Python n’est juste pas mon langage d’adoption parce que j’ai été bercé à Java, du coup le snake case m’horipile, tout comme l’indentation qui fait partie de la syntaxe; j’aime pas trop leur doc non plus, je la trouve moins pratique que la javadoc, ou la doc de PHP qui a l’avantage d’avoir une page dédiée par fonction ou classe (et donc on trouve très rapidement ce qu’on cherche, extrêmement indispensable vu l’ordre des paramètres parfois aléatoire d’une fonction à l’autre).

Et dans la catégorie défauts de python, je trouve toujours bizarre que x.y ne soit pas pareil que x[’y’] quand c’est la même chose en PHP, JavaScript, lua et tant d’autres… de même que except à la place de catch… ou True/False/None en majuscule… question d’habitude et probablement d’affinité sans doute.

+0 -0

je trouve toujours bizarre que x.y ne soit pas pareil que x[’y’] quand c’est la même chose en PHP, JavaScript

QuentinC

Coucou.

1
2
3
4
5
const coucou = {0: 'foo'}
coucou[0]
> "foo"
coucou.0
> Uncaught SyntaxError
+0 -0

Pas de routing global, pas d’injection de dépendance, pas d’ORM, pas de moteur de template, même pas besoin de savoir comment fonctionne le protocole HTTP dans les détails…

QuentinC

Et tu considères ça comme des avantages ?

Quand je vois les sujets sur les forums PHP, de tous les gens qui cherchent à modifier leur .htaccess pour mettre en place des réécritures d’URL, je me dis qu’on en est loin.

Le gros inconvénient de PHP est qu’il a été conçu spécifiquement pour le web. Il n’est donc pas possible (en tout cas rien ne l’enseigne de cette manière) d’apprendre PHP en dehors de cet environnement web si complexe.

Je ne vois pas comment un débutant, qui ne sait pas encore manier le langage qu’il est en train d’apprendre, pourrait s’y retrouver dans ce contexte.

Ce serait comme enseigner le Python en axant l’apprentissage sur la CGI, personne ne fait ça.

David93 a posté sa question il y a une semaine, il a eu 29 réponses, et dans le lot, il y avait quelques questions qui étaient essentielles pour l’orienter, mais il n’a pas donné signe de vie depuis une semaine… Pas sû r qu’il ait lu toutes les réponses.

La question posée par Ricotoam est essentielle : David93 a-t-il des connaissances en développement en général. Je pense que la réponse est non… mais je n’en sais rien. On va quand même prendre comme hypothèse que David93 n’a pas de connaissance en programmation.

Dans ce cas, David93 a 2 options :

-1- il apprend d’abord la programmation hors-Web, il apprend des notions d’algorithmes, de base de données, mais tout ça hors Web. Si il faut absolument donner un nom de langage, je vais suggérer Python. Et dans un an ou plus, après avoir réalisé un truc qui fonctionne hors-web (étape indispensable), il peut commencer à attaquer la programmation Web.

-2- il saute cette étape sur la programmation hors-web, et il attaque directement la programmation Web. Mais dans ce cas, il ne sera jamais programmeur, il saura au final utiliser des outils comme WordPress / CSS / HTML (comme d’autres savent utiliser Photoshop ou PowerPoint).

C’est l’avis d’un non-professionnel, avec probablement des approximations. Mais je suis assez convaincu que le passage ou non par le développement hors-web permet de définir 2 profils très différents.

Ce que dit elegance est du gros, gros n’importe quoi, les bêtises qu’on entend habituellement et auxquelles j’ai même plus la force de répondre.

C’est l’avis d’un professionnel.

+1 -0

Pour le point 2 je suis d’accord. Sinon il me semble que tout le monde se concentre à se battre sur tel ou tel langage alors que ça n’a aucune importance pour un débutant. S’il n’a jamais codé, commencer par du PHP est la pire chose à faire (tout le monde s’y accorde de ce que j’ai lu), s’il a déjà fait c’est une première passerelle plus simple (mais pas propre) pour s’initier au web. Ensuite, de toute façon, il faudra passer sur des choses plus complexe et plus riche pour tout un tas de raisons évoquées (sécurité, propreté…) et les grands framework n’ont aucune foutu importance si ce n’est les préférences de chacun.

C’est comme la guéguerre entre console. Il n’y en a pas une meilleure que l’autre. Sauf qu’une fois qu’on a un PC, on peut faire les deux.

Et tu considères ça comme des avantages ?

Pas à mon niveau quand ça fait 15 ans que j’ai commencé la programmation en ado amateur. Mais pour un débutant, je pense que c’en est, si.

Multiplier les couches, c’est très bien pour séparer les ddomaines, faire du code plus lisible et maintenable. Mais je ne crois pas que débuter immédiatement avec toute cette compexité soit une bonne chose pour commencer. Pour moi c’est le meilleur moyen de se planter. Je trouve qu’il vaut mieux commencer par des choses simples, et évoluer en même temps que ses outils.

Je vois ça un peu comme te jeter tout nu dans la jungle: ça fait un peu beaucoup d’un coup de devoir apprendre en même temps à connaître ton environnement, à chasser, à se construire un abri et à se défendre; et tu as pourtant besoin de tout sinon tu es vite mort.

Ou, autre image: ça ne sert à rien d’acheter un marteau à deux têtes pour apprendre à planter un clou. Par contre le marteau à deux têtes t’aidera à devenir plus efficaces quand tu sauras bien planter des clous avec un marteau normal à une seule tête.

Cela dit, je ne suis pas encore convaincu que toutes les couches sont réellement utiles. Si je suis convaincu depuis longtemps par l’injection de dépendance et les moteurs de template, j’ai encore toujours l’impression que les ORM et leurs DQL sont plutôt superflus, sauf si tu es nul en SQL ou si tu penses devoir changer de DBMS vraiment souvent.

Le gros inconvénient de PHP est qu’il a été conçu spécifiquement pour le web. Il n’est donc pas possible (en tout cas rien ne l’enseigne de cette manière) d’apprendre PHP en dehors de cet environnement web si complexe.

C’est clair que PHp est fait pour le web et rien que le web. IL ne faut pas chercher à faire autre chose avec (certains ont essayé de faire de la GUI, mais c’était pas terrible).

C’est effectivement un inconvénient si le but c’est d’apprendre la programmation en général et si on ne sait pas trop ce qu’on veut faire; mais ici la question de base était, que conseillez-vous à un débutant en développement web. On sait ce qu’on veut faire et PHp est spécifiquement conçu pour, en ce sens c’est au contraire un avantage.

ON en revient à ces questions fondamentales qui n’ont pas eu de réponse: est-ce que l’auteur initial connaît déjà la programmation, et veut-il à terme faire autre chose que du web ou non ? Si les réponses sont non et oui, alors on est d’accord, PHp n’est pas un très bon choix. Au contraire de la majorité ici, j’ai supposé un oui à la première question.

Ce serait comme enseigner le Python en axant l’apprentissage sur la CGI, personne ne fait ça.

Forcément, personne ne fait ça… ou en tout cas on ne fait plus ça une fois qu’on a passé un certain niveau.

L’inconvénient que je vois à python, tout comme ruby, Node.js, tout sauf PHP en fait, c’est que non seulement tu débutes en apprenant un langage, mais en plus tu dois nécessairement apprendre un framework en même temps. Il ne faut pas s’étonner si ça paraît compliqué ! Si le but c’est de se faire un petit site perso, PHP convient largement, et on passe outre cette complexité. ON peut toujours monter en compétence plus tard.

Ah, et l’autre question bonus, tu fais comment pour héberger un site python, ruby ou Node.js ? Les hébergeurs traditionels comme OVH, Infomaniac, etc. ne font pas… En plus de devoir maîtriser ton langage et ton framework, tu as tout l’aspect serveur dédié et/ou cloud à connaître. C’est loin d’être simple tout ça… Le FTP c’est moyen-âgeux mais au moins c’est simple, on a rapidement quelque chose onlilne.

Dans un autre secteur, beaucoup disent qu’Angular c’est compliqué, pourquoi ? Une fois passé le super tuto qui t’explique comment faire un truc cool en 5 minutes, tu te retrouves perdu dans la jungle avec plein de notions que tu dois apprendre à maîtriser toutes en même temps si tu veux vraiment aller plus loin. JE crains qu’avec Django ou Rails, ça soit perçu pareil… ça le serait aussi avec Symfony d’ailleurs.

+0 -0

Ah, et l’autre question bonus, tu fais comment pour héberger un site python, ruby ou Node.js ? Les hébergeurs traditionels comme OVH, Infomaniac, etc. ne font pas…

Encore une fois, mais avec un lien cette fois ci ! https://www.heroku.com/

c’est que non seulement tu débutes en apprenant un langage, mais en plus tu dois nécessairement apprendre un framework en même temps

Tu apprend le langage, et ensuite une librairie pour faire du web, puis un framework.

Si tu me dit que http://www.sinatrarb.com/ c’est dur . . . Et même pour un débutant.

C’est ce qui est appris dans pas mal de bootcamps dans paris pour apprendre la programmation, avant de passer par Rails.

Dans un autre secteur, beaucoup disent qu’Angular c’est compliqué, pourquoi ? Une fois passé le super tuto qui t’explique comment faire un truc cool en 5 minutes, tu te retrouves perdu dans la jungle avec plein de notions que tu dois apprendre à maîtriser toutes en même temps si tu veux vraiment aller plus loin. JE crains qu’avec Django ou Rails, ça soit perçu pareil… ça le serait aussi avec Symfony d’ailleurs.

C’est pour ca, que tu ne fonce pas sur un Django, mais sur un Flask, tu ne fonce pas sur Rails, mais sur Sinatra.

Tu maitrise le langage, puis les outils.

Mais Rails as un petit avantage, il fait beaucoup de choses pour le développeur, le débutant crois à de la magie, mais ne le déroute pas.

Django, faut un peu plus comprendre le fonctionnement général du web.

ps: Angular est perçu comme dur, car il y à plein de concepts pas forcément simple à apprendre.

-2- il saute cette étape sur la programmation hors-web, et il attaque directement la programmation Web. Mais dans ce cas, il ne sera jamais programmeur, il saura au final utiliser des outils comme WordPress / CSS / HTML (comme d’autres savent utiliser Photoshop ou PowerPoint).

elegance

Pourquoi ne serait-il jamais programmeur ?

Apprendre dans un environnement complexe, c’est certes plus lent, mais je ne vois pas pourquoi ça empêcherait d’en arriver aux mêmes fins.

L’inconvénient que je vois à python, tout comme ruby, Node.js, tout sauf PHP en fait, c’est que non seulement tu débutes en apprenant un langage, mais en plus tu dois nécessairement apprendre un framework en même temps. Il ne faut pas s’étonner si ça paraît compliqué ! Si le but c’est de se faire un petit site perso, PHP convient largement, et on passe outre cette complexité. ON peut toujours monter en compétence plus tard.

QuentinC

Non, tu ne dois pas nécessairement apprendre un framework en même temps, justement. Tout mon propos repose sur le fait qu’il ne faudrait pas apprendre les deux en même temps (contrairement à ce qu’impose le PHP, donc).

D’abord apprendre la programmation dans un environnement simple (terminal). Ensuite (quand c’est assimilé) s’orienter vers d’autres bibliothèques/frameworks (GUI, web, etc.) si le besoin ou l’envie se font ressentir.

On n’imagine pas non plus enseigner le Python en commençant par présenter des instructions pour instancier une fenêtre Qt.

PHP ne passe pas outre cette complexité, au contraire.

Ah, et l’autre question bonus, tu fais comment pour héberger un site python, ruby ou Node.js ? Les hébergeurs traditionels comme OVH, Infomaniac, etc. ne font pas… En plus de devoir maîtriser ton langage et ton framework, tu as tout l’aspect serveur dédié et/ou cloud à connaître. C’est loin d’être simple tout ça… Le FTP c’est moyen-âgeux mais au moins c’est simple, on a rapidement quelque chose onlilne.

QuentinC

OVH Kimsufi, Online Scaleway, ou autres.

OVH Kimsufi, Online Scaleway, ou autres.

C’est bien ce que je disais, ça te rajoute l’administration de serveur à apprendre. C’est pas forcément si simple qu’il n’y paraît si on prend en compte la sécurité et la sauvegarde des données (que les hébergeurs font mais que tu dois te démerder de faire sur ton KS)

ET si tu optes pour le cloud chez Amazon ou autre, je suppose que c’est aussi tout un écosystème à maîtriser (je ne l’ai encore jamais fait donc peut-être que je me trompe)

Non, tu ne dois pas nécessairement apprendre un framework en même temps, justement. Tout mon propos repose sur le fait qu’il ne faudrait pas apprendre les deux en même temps (contrairement à ce qu’impose le PHP, donc).

Je me suis peut-être mal exprimé, la question qu’il y avait derrière ce que je disais était la suivante: tu fais comment pour faire un site web en python ou en ruby sans framework ? Je précise: avec rien que la bibliothèque standard fournie de base avec le langage ? Node.js même sans express a déjà un petit quelque chose de prévu, mais pour les autres je doute qu’il faille commencer par le début absolu: soit on fait du CGI, soit on part des sockets (J’avoue que j’ai la flemme de chercher, il me semble avoir déjà vu aussi un petit quelque chose dans la lib de python)

Pour PHP, même si ce n’est pas d’une beauté et d’une efficacité exceptionnelle, tu fais déjà un bon bout avec du PHP brut. Même si c’est loin d’être une référence (très loin même), le jeu O-Game est à ce que je sache toujours en PHP, et même facebook a longtemps été en PHP classique (avant de passer à une version propriétaire super optimisée). Donc il ya déjà de quoi faire.

Donc si tu veux un site perso, s’attaquer au PHP me paraît être la suite relativement logique à s’installer un wordpress. Tout dépend d’où on vient, encore une fois; et l’auteur n’a pas été très clair.

+0 -1

C’est bien ce que je disais, ça te rajoute l’administration de serveur à apprendre. C’est pas forcément si simple qu’il n’y paraît si on prend en compte la sécurité et la sauvegarde des données (que les hébergeurs font mais que tu dois te démerder de faire sur ton KS)

QuentinC

Tout dépend de la solution envisagée.

Mais pareil, quand tu commences à vouloir déployer ton site grandeur nature, ça ne me paraît pas improbable d’exiger des connaissances pour gérer le serveur de production.

Je me suis peut-être mal exprimé, la question qu’il y avait derrière ce que je disais était la suivante: tu fais comment pour faire un site web en python ou en ruby sans framework ? Je précise: avec rien que la bibliothèque standard fournie de base avec le langage ? Node.js même sans express a déjà un petit quelque chose de prévu, mais pour les autres je doute qu’il faille commencer par le début absolu: soit on fait du CGI, soit on part des sockets (J’avoue que j’ai la flemme de chercher, il me semble avoir déjà vu aussi un petit quelque chose dans la lib de python)

QuentinC

La bibliothèque standard de Python permet de créer des serveurs HTTP, donc oui, c’est possible, mais pourquoi faire ça ?

Des frameworks bien foutus existent pour réaliser ces tâches, autant les utiliser !

Je disais juste que l’apprentissage d’un langage et d’un framework ne se feront pas en même temps.

Je précise: avec rien que la bibliothèque standard fournie de base avec le langage ?

En plus d’être pas pertinent comme critère, c’est possible, plus ou moins de n’importe quelle manière.https://docs.python.org/2/library/internet.html

C’est un peu ridicule de chercher à mettre un langage en avant par rapport à un autre en parlant d’expériences différentes et en faisant des affirmations au doigt mouillé sur ce qui devrait être bien pour un débutant. Peu importe le langage, il y a un moment où il faut bien mettre en place ton serveur http. A partir de ça t’as les préférences de chacun qui ressortent sur la façon de débuter avec ça.

Langage avec une lib standard bien complete ?

Bah Crystal est la joie des débutants alors \o/

1
2
3
4
5
6
7
8
9
require "http/server"

server = HTTP::Server.new(8080) do |context|
  context.response.content_type = "text/plain"
  context.response.print "Hello world, got #{context.request.path}!"
end

puts "Listening on http://127.0.0.1:8080"
server.listen

ps: Code récupérer de https://crystal-lang.org/ 100% lib standard

-.-

C’est bien ce que je disais, ça te rajoute l’administration de serveur à apprendre. C’est pas forcément si simple qu’il n’y paraît si on prend en compte la sécurité et la sauvegarde des données (que les hébergeurs font mais que tu dois te démerder de faire sur ton KS)

Tu lis ce que j’écrit?

Encore une fois, mais avec un lien cette fois ci ! https://www.heroku.com/

pps: Je ne conseil pas Crystal à un débutant, mais que pour souligné le caractère idiot de son dernier message

+0 -1
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