En tant que programmeur, si vous n’avez jamais entendu parler de Stackoverflow, vous feriez mieux d’y réfléchir. C’est l’un des livres de programmation que les programmeurs ont le plus besoin de lire (en fait, il suffit de laisser celui-ci pour les livres de programmation !). ):
(La page d’accueil que Jun a fortement insérée, la photo ci-dessus est une parodie, certains internautes ne l’avaient pas compris avant, surtout pour dis-le) Pour les programmeurs qui n’ont pas encore lu le livre, il est temps d’en acheter un. Si vous hésitez encore, jetez un œil à cet article pour comprendre pourquoi vous ne pouvez pas vous passer de StackOverflow. La sagesse de poser des questions Quand vous posez une question technique, le fait d’obtenir une réponse utile dépend souvent de la manière dont vous posez la question et faites un suivi. —— Eric S. Raymond Parfois, une description claire d’un problème, surtout un problème technique, n’est pas aussi simple qu’il n’y paraît. Poser des questions a toujours été une science, mais malheureusement beaucoup de gens ne s’en rendent pas compte ou n’y prêtent pas assez attention. Ou bien, certains qui posent la question ne demandent pas du tout d’aide. Nous trouverons donc toutes sortes de questions auxquelles les gens ne peuvent pas répondre ou ne veulent pas répondre : Problème de régex Java ? Qu’est-ce que le temps de réponse SLA ? Quelle est la différence entre les classes ATL et l’héritage général des classes ? Pour éviter que le problème ci-dessus ne soit fermé ou modifié, mettez une photo ici pour vivre ce problème :
On peut trouver beaucoup de ces questions dans les questions sans réponse sur SegmentFault, donc beaucoup de gens n’ont évidemment pas la sagesse ou l’attitude pour poser des questions. Raymond et Rick Moen ont écrit un essai classique sur la façon de poser des questions, The Smart Way (http://www.catb.org/~esr/faqs/smart-questions.html#translations), qui a été traduit en plusieurs langues, largement diffusé et disponible en édition chinoise ici. Stackoverflow et Segmentfalut proposent également des suggestions pour poser des questions : Centre d’aide > Questions Comment demander Comment poser une bonne question ? Quelles questions sont les bienvenues Il y a trop de questions classiques sur Stackoverflow, et nous pouvons apprendre à poser des questions et à communiquer avec les répondants. Lorsque vous vous habituez à lire des questions sur StackOverflow, vous les imiterez inconsciemment en posant des questions, évitant ainsi de poser des questions sans réfléchir. Voici quelques-unes des questions les plus importantes auxquelles prêter attention lors de la pose : Posez une question à laquelle le moteur de recherche n’a pas de réponse satisfaisante (Google a au moins quatre pages). Posez des questions que vous ne pouvez pas résoudre seul et que vous avez déjà beaucoup essayées Essayez de décrire le problème aussi clairement que possible : bonne typographie, code, alertes d’erreur, images, etc Rendez vos questions utiles aux autres Il devrait y avoir une réponse définitive à la question, et il ne devrait pas y avoir trop de subjectivité Différents schémas Souvent, nous espérons trouver une solution, mais sur Stackoverflow, il y a souvent des gains inattendus. Vous pouvez voir différentes solutions à un problème, y compris des comparaisons de ces solutions. Supposons que vous vouliez maintenant savoir comment appeler une commande externe en Python, comme ls -l, pour imprimer un article sous un répertoire. Cherchez sur Google la commande d’appel système en python, et la première est une question liée sur stackoverflow : appeler une commande externe en Python. (http://stackoverflow.com/questio ... l-command-in-python) (des problèmes techniques Google, en gros des problèmes liés à StackOverflow, seront affichés). Ensuite, sous cette question, quelqu’un résume plusieurs façons d’invoquer des commandes externes : os.system() os.popen() subprocess.popen() subprocess.call() subprocess.run() Et chaque méthode est également introduite, vous pouvez choisir celle qui convient à votre scénario d’application. Un autre exemple est la question : comment vérifier si un fichier existe en utilisant Python ? (http://stackoverflow.com/questio ... exists-using-python), qui décrit différentes méthodes en Python pour vérifier la présence d’un fichier. Utilisation des outils Il existe de nombreux outils puissants qui peuvent nous aider à mieux étudier les problèmes : vous connaissez peut-être l’outil de débogage gdb, vous connaissez peut-être le module de surveillance timeit de Python, mais vous ne connaissez pas les outils que vous ne connaissez pas. Bien souvent, lorsque nous connaissons un outil, nous avons l’impression de nous rencontrer trop tard. Cependant, les outils que vous aimez sont toujours très difficiles à trouver. Sur Stackoverflow, il peut y avoir de bons outils dans chaque question, réponse ou commentaire, et vous aurez toujours une chance de trouver les meilleurs qui restent en arrière. Voici une liste de quelques-uns des excellents outils que j’ai trouvés : Truss/Strace : Suit les appels système et les signaux reçus lors de l’exécution d’un processus, Strace peut suivre les appels système générés par un processus, y compris les paramètres, les valeurs de retour et le temps d’exécution. (D’après la question : pourquoi lire des lignes de stdin est-il beaucoup plus lent en C++ qu’en Python ?) vprof : Un outil visuel qui analyse les caractéristiques des programmes Python, telles que l’exécution, l’utilisation de la mémoire, etc. (D’après la question : Comment peut-on profiler un Python ?) Regex 101 : Un assistant en ligne pour les expressions régulières qui peut vous aider à comprendre la signification des expressions régulières, à déboguer les expressions régulières et à réaliser des expériences simples. (Extrait du numéro : Apprendre les expressions normales) Voici un exemple simple de Regex 101 :
Le processus de réflexion Bien souvent, lorsque nous rencontrons un problème, nous n’avons aucun moyen de commencer et nous ne savons pas dans quelle direction penser. Mais avec stackoverflow, nous pouvons facilement trouver la solution précise, et parfois même savoir ce que les autres pensent face à ce problème. Disons que vous souhaitez utiliser un décorateur pour accomplir une tâche en ajoutant avant et après la chaîne retournée par la fonction say ci-dessous, et que vous pensez à définir say comme ceci. @makebold @makeitalic définitivement dire() : retour « Bonjour » Chaque appel pour dire bonjour est un jour. Mais comment implémenter le maquillage et le maquillage est un problème. Sur Stackoverflow, il y a de gros taureaux qui vous donnent la réponse directement et vous envoient un lien vers la documentation des décorateurs. Mais il y a aussi des Daniels qui vous parleront en détail de leur processus de réflexion et de leur compréhension des décorateurs, afin que vous puissiez comprendre en profondeur le mécanisme du décorateur. En réponse à la question ci-dessus, il y a une réponse qui a reçu plus de 3 000 likes, vous indiquant comment résoudre le problème étape par étape. Tout d’abord, dites-nous quelles sont les caractéristiques des fonctions en python : Les fonctions sont des objets Une fonction peut être attribuée à une variable Une fonction peut être définie dans une autre fonction Une fonction peut en retourner une autre fonction Vous pouvez passer des fonctions comme paramètres Ensuite, commencez à expliquer ce qu’est un décorateur : c’est en réalité un encapsulateur, qui nous permet d’exécuter d’autres codes avant et après avoir exécuté la fonction originale sans la modifier. Un prototype simple de décorateur est réalisé à la main, suivi de l’introduction de la syntaxe décoratrice en Python. Enfin, quelques usages avancés des décorateurs sont listés, notamment la transmission des paramètres aux décorateurs. Lisez la réponse en entier, vous aurez sans aucun doute une compréhension plus approfondie du décorateur et comprendrez le processus de réflexion pour le comprendre. Ainsi, en suivant cette voie de pensée, vous pouvez vous-même déduire comment utiliser les décorateurs. Angles morts possibles Lorsque vous n’avez pas de questions à poser, vous pouvez aussi visiter stackoverflow de temps en temps, parcourir certaines questions avec plus de votes, et voir ce que d’autres ont répondu. Dans cette vaste base de connaissances, vous découvrirez très probablement certains de vos angles morts cognitifs et découvrirez du contenu auquel vous n’avez jamais prêté attention. J’ai trouvé quelques questions intéressantes, telles que : Imprimer dans un terminal avec des couleurs en utilisant Python ? Qu’est-ce qu’une métaclasse en Python ? Quel est votre raccourci le plus productif avec Vim ? J’ai préparé ici une liste de questions Python de haute qualité pour référence fréquente. Je regrette que nous nous soyons rencontrés trop tard Alors, comment trouver StackOverflow, deux suggestions : Décrivez le problème précisément en anglais Google Tant que vous n’êtes pas la première personne à rencontrer un problème technique, vous trouverez probablement le même problème ou un problème similaire sur StackOverflow. Rencontrez-vous bientôt, tombez amoureux de Stackoverflow très tôt, et vous verrez que la vie est si confortable.
|