Outils pour utilisateurs

Outils du site


issue99:c_c

Table des matières

1

Over the course of time, I’ve picked up a lot of rudimentary skills in various programming languages. Some of them I chose to deepen, and others have stagnated. The largest problem I often run into is deciding what to program, and in what language. If you’re like me, and in need of some challenging exercises to work through, skip to part two. If you’re still trying to learn a language, stick with me. Learning a language There are various ways to learn a language - buy a book, take a course, or follow a tutorial online. However, some options can be expensive, or simply difficult to accomplish, as it removes the explanation factor of why one method is better than another (for example). Instead, here is a short list of online sites that offer free courses. Depending on what you want to learn, you may need to browse each in turn. Code Academy http://www.codecademy.com/ learn The site offers a relatively small list of courses (though they keep expanding). However, they offer an interactive set of exercises that you can work through straight from the browser. As such, if you’re trying to learn a language that they offer, I would recommend starting there. Khan Academy - https://www.khanacademy.org/computing/computer-programming This site follows the more traditional online university system - you watch a video with an explanation, and then do quizzes/exercises after each video. Currently their offering is mainly focused around JavaScript and HTML. They do, however, offer many other (non-programming) courses as well. Coursera - https://www.coursera.org/ The offering here is typically segments or complete videos from actual university courses. They offer a good deal of options, but some of the videos can be out of date. If you’re looking to get into the more abstract discussions on programming or programming languages in general, this may be a good spot to start.

Au fil du temps, j'ai acquis un grand nombre de compétences rudimentaires dans divers langages de programmation. Certaines que j'ai choisi d'approfondir, et d'autres qui stagnent. Le plus grand problème que je rencontre souvent est de décider quoi programmer, et en quel langage. Si vous êtes comme moi, à la recherche de quelques exercices difficiles pour vous entraîner, passez à la deuxième partie. Si vous êtes encore en train d'apprendre un langage, restez avec moi.

Apprendre un langage

Il y a différentes façons d'apprendre un langage : acheter un livre, prendre des cours ou suivre un tutoriel en ligne. Cependant, certaines peuvent être coûteuses ou tout simplement difficiles à réaliser, car elles n'expliquent pas pourquoi une méthode est meilleure qu'une autre (par exemple). À la place, voici une courte liste des sites en ligne qui offrent des cours gratuits. Selon ce que vous voulez apprendre, vous pourrez avoir besoin de les parcourir tour à tour.

Code Academy http://www.codecademy.com/apprendre Ce site offre une relativement petite liste de cours (qui s'étoffe régulièrement). Cependant, ils offrent un ensemble interactif d'exercices que vous pouvez faire directement à partir du navigateur. Ainsi, si vous essayez d'apprendre un langage qu'ils proposent, je recommande de commencer par là.

Khan Academy - https://www.khanacademy.org/computing/computer-programming Ce site suit le système universitaire en ligne plus traditionnel : vous regardez une vidéo avec une explication, puis vous faites des quiz/exercices après chaque vidéo. Actuellement leur offre est principalement axée autour de JavaScript et HTML. Cependant, ils offrent également de nombreux autres cours (autre que la programmation).

Coursera - https://www.coursera.org/ L'offre est ici typiquement des morceaux ou des vidéos complètes de cours universitaires réels. Ils proposent pas mal d'options, mais certaines vidéos sont obsolètes. Si vous cherchez à entrer dans les discussions plus abstraites sur la programmation ou les langages de programmation en général, celui-ci peut être un bon endroit pour commencer.

2

There are, of course, other options out there. However, I have actively tried each of these offerings, and come to see each of their strengths. If you’re looking for a programming language not listed, my suggestion is to check the language’s homepage. Most offer some sort of introduction or tutorial. I’ve learned a language - now what? Once you’ve learned a language, it’s time to put it into use. If you have ideas for programs, then that’s great. Sometimes, however, you won’t have a specific need to fill, or problem to fix. At times like that, I like to fall back to some form of programming challenge. This way, I improve my understanding and knowledge - and sometimes, you’ll end up with a reusable library of functions. Or, better yet, you’ll have an idea for a program yourself. Two of my favourite offerings are as follows: Project Euler - https://projecteuler.net/ This site offers a massive number of math-related challenges. They are typically difficult questions that could not be reasonably answered with a calculator and patience - instead, the quickest solution is to write a program to test solutions until finding the correct one. If you absolutely loathe mathematics, or, after reading some questions, you feel Project Euler isn’t for you, then move on to my next suggestions. The major benefit to Project Euler is simply the fact that it is language agnostic - so long as you can calculate in a language, you can do the challenges. Some languages (such as Python) offer helpful mathematics functions, but if you keep track of your functions in a library, you shouldn’t be repeating yourself too often.

Il existe bien sûr d'autres options. Cependant, j'ai activement essayé chacune de ces offres et étudié chacun de leurs points forts. Si vous êtes à la recherche d'un langage de programmation qui n'y figure pas, ma suggestion est de vérifier le site Web du langage. La plupart proposent une sorte d'introduction ou de tutoriel.

J'ai appris un langage, et maintenant ?

Une fois que vous avez appris un langage, il est temps de le mettre en pratique. Si vous avez des idées de programmes, alors c'est génial. Parfois, cependant, vous n'avez pas de besoin spécifique à combler, ou de problème à résoudre. Dans ces moments-là, j'aime revenir à un quelconque défi de programmation. De cette façon, j'améliore ma compréhension et mes connaissances, et parfois, vous vous retrouverez avec une bibliothèque de fonctions réutilisables. Ou, mieux encore, vous aurez une idée pour votre propre programme. Voici deux de des offres que je préfère :

Projet Euler - https://projecteuler.net/ Ce site offre une multitude de défis liés aux mathématiques. Ce sont des questions généralement difficiles qui ne peuvent pas être raisonnablement résolues avec une calculatrice et de la patience - à la place, la solution la plus rapide est d'écrire un programme pour tester des solutions jusqu'à trouver la bonne. Si vous détestez absolument les mathématiques, ou, après avoir lu quelques questions, vous sentez que Projet Euler n'est pas fait pour vous, passez alors aux suggestions suivantes. Le principal avantage de Projet Euler est tout simplement le fait qu'il est indépendant du langage, dès que vous pouvez calculer dans un langage, vous pouvez faire les défis. Certains langages (tels que Python) offrent des fonctions mathématiques utiles, mais si vous gardez une trace de vos fonctions dans une bibliothèque, vous ne devriez pas vous répéter trop souvent.

3

Exercism - http://exercism.io/ Exercism is a command-line tool, linked into a tiered library of exercises to be done in a variety of languages. The exercises don’t typically change between languages, but are good practice nonetheless. The way it works is by fetching the exercises, and then choosing a language to start with. You then get a README file, as well as a *_test file. The test file contains actual programmatic tests, to ensure that your answer is complete. If you’re never worked with tests before, I highly recommend Exercism as an introduction to tests. The actual submission is simple - if the test file clears without errors, and you’re happy with your file, you can submit it. It then appears on the Exercism site under your account’s name. Then other programmers can discuss it - where you may learn a new trick or two. You can, naturally, also check out other people’s submissions. If you later want to update your file, you can do so. It keeps track of your iterations, and each iteration has a separate discussion. And if you’re tired of having your code analyzed - you can mark a task as done, and close all discussions on it. Extra: Dev Docs Sometimes, you’ll be working on a program, and realize you don’t remember the exact format of a function, or if the built-in function actually exists. This is where you can either turn to a manpage, the language’s documentation, or http://devdocs.io. Devdocs.io is a site that offers a huge library of documentation on various languages. The site itself will let you save the library for offline access, meaning you shouldn’t ever be without documentation. However, as it’s an open source project, you can also install a completely local instance of the site. Submissions are also accepted, and as such the information is usually up to date, and expanding at a brisk pace. It also includes some documentation for tools (SASS, Bower, npm, etc.). Conclusion I hope this article is helpful for anyone who wants to learn to program, or anyone who feels they are stagnating at their current level. If you know of another great site, or an awesome set of challenges, please let me know! As always - suggestions, comments, or requests can be sent to me at lswest34+fcm@gmail.com.

Exercism - http://exercism.io/ Exercism est un outil en ligne de commande, lié à une bibliothèque d'exercices multi-niveaux à faire dans une variété de langages. Les exercices ne changent généralement pas entre les langages, mais permettent néanmoins un bon entraînement. Le fonctionnement est d'aller chercher les exercices, puis de choisir un langage pour commencer. Vous obtenez alors un fichier LISEZMOI (README), ainsi qu'un fichier *_test. Le fichier de test contient des tests programmatiques réels, afin de vous assurer que votre réponse est complète. Si vous n'avez jamais travaillé avec des tests auparavant, je recommande fortement Exercism comme une introduction aux tests. La remise effective est simple - si le fichier de test passe sans erreurs, et que vous êtes content de votre fichier, vous pouvez le soumettre. Il apparaît alors sur le site Exercism sous le nom de votre compte. Puis d'autres programmeurs peuvent le critiquer, et vous pouvez apprendre un nouveau truc ou deux. Naturellement, vous pouvez également vérifier ce que d'autres personnes ont rendu. Si vous souhaitez par la suite mettre à jour votre fichier, vous pouvez le faire. Il garde une trace de vos itérations et chaque itération comporte une discussion séparée. Et si vous êtes fatigué de voir votre code analysé, vous pouvez marquer une tâche comme terminée, et fermer toutes les discussions à son sujet.

Complément : Dev Docs Parfois, vous travaillez sur un programme et réalisez que vous ne vous rappelez pas du format exact d'une fonction, ou si la fonction intégrée existe réellement. Vous pouvez alors consulter une page de manuel, la documentation du langage, ou http://devdocs.io. Devdocs.io est un site qui propose une immense bibliothèque de documentation sur les différents langages. Le site lui-même vous permettra de sauvegarder la bibliothèque pour un accès hors ligne, ce qui signifie que vous ne devriez jamais être sans documentation. Et même, comme c'est un projet Open Source, vous pouvez aussi installer une instance complètement locale du site. Les soumissions sont également acceptées ; ainsi l'information est généralement à jour et l'expansion se fait à un rythme soutenu. Il comprend également de la documentation pour les outils (SASS, Bower, npm, etc.).

Conclusion

J'espère que cet article est utile pour tous ceux qui veulent apprendre à programmer ou toute personne qui sent qu'elle stagne à son niveau actuel. Si vous connaissez d'autres très bons sites, ou un ensemble impressionnant de défis, veuillez me les signaler ! Comme toujours, des suggestions, commentaires ou demandes peuvent être envoyées à lswest34+fcm@gmail.com.

issue99/c_c.txt · Dernière modification : 2015/08/04 14:33 de andre_domenech