Salut à tous !
J’aimerais partager avec vous cette banque de liens mise au point sur le cousin de ZdS : PdP. Quelques problèmes ayant affectés ce dernier, j’essaie de préserver les contenus intéressants et de m’assurer qu’ils gardent la même visibilité.
Tout les documents, de n’importe quelle nature, touchant de près ou de loin à l’informatique, sont la bienvenue. Il y a déjà ici un contenu assez conséquent qui ne manquera pas de satisfaire la plupart des requêtes. Je vous invite également à proposer les vôtres, avec ou sans commentaires. Je tâcherais de maintenir la liste à jour. Si des liens sont morts, signalez le moi.
Topics et sites similaires
- Become a Programmer, Motherfucker : une banque de liens assez connue, et très complète (plus que nous).
- List of freely available programming books : une liste très complète
- https://github.com/bayandin/awesome-awesomeness : encore plein de liens, par catégories.
- All videos recorded by IRILL : de nombreuses vidéo-conférences
- Learn X in Y minutes : de nombreux langages représentés, dont certain pour lesquels les sources sont rares.
Sommaire :
- 1) Le langage C++
- 2) Le langage Ruby
- 3) Le langage Perl
- 4) Le langage Python
- 5) Les langages OCaml et Caml
- 6) Le langage Haskell
- 7) L’algorithmique
- 8) Développement de systèmes d’exploitation
- 9) Sécurité informatique
- 10) ASM et langage machine
- 11) Librairies, outils
- 12) Conception, design patterns
- 13) La famille Lisp
- 14) Le langage Erlang
- 15) Mac, IOs, Objective C, swift
- 16) Électronique, hardware
- 17) SQL
- 18) PHP
- 19) Clojure
1) Le langage C++
Cours, tutoriels et articles sur le C++ :
- Advanced C++ Lessons : notions pointues abordées, telles que la meta-programmation template, et divers cours d’un niveau avancé pour exploiter correctement les possibilités du C++ (gestion personnalisée de la mémoire, références, constantes, etc… ). Il permet de mieux comprendre les fonctionnements internes du langage, et donne de bons conseils.
- C++ Tutorial : très complet, mais aucune structure cohérente. Il s’agit en effet d’un immense répertoire de codes sources commentés illustrant chacun des aspects du langage, ou presque. A réserver au développeur qui maîtrise déjà le C++, mais qui souhaite retrouver très vite comment utiliser telle ou telle fonctionnalité spécifique.
- C++ Annotations : un excellent cours très régulièrement mis à jour, qui prend en compte C++11. Un moyen très pratique de retrouver des informations sur les nouveautés de C++11.
- LearnCpp : un cours très complet sur certains points, tels que la surcharge des opérateurs par exemple (tous les opérateurs surchargeables du langage sont couvert).
- cplusplus : le tutoriel du site célèbre par la richesse de sa documentation sur la librairie standard.
- Guru of the Week : Ensemble d’articles sous la forme de questions et réponses écris par Herb Sutter, Les sujets traités sont très divers mais sont souvent accessibles à tout niveau : les réponses apportés à un problème sont souvent découpées en niveau de complexité. Les articles ont servit de base à sa série de livres Exceptionnal C++.
- Notes de Stepanov sur la programmation : Je ne sais pas si ça doit aller ici où dans la banque de livres. Un pdf de note de Stepanov, Je ne l’ai pas lu en entier encore, cependant les parties que j’ai lu sont très instructives, que ce soit les éléments techniques ou les explications de la bibliothèque standard et de sa logique, ou de ce qu’elles auraient du et devraient être (Stepanov étant un, si ce n’est le, initiateur d’un partie de la bibliothèque standard, en particulier la partie conteneur, itérateurs et algorithmes).
- CppCon 2014 Videos : Un nombre impressionnant de présentations de qualité sur divers sujets plus ou moins avancés en C++ moderne.
- cprograming : beaucoup de ressources précises et à jour.
Documentations de la librairie standard sur le C++ :
- Standard Template Library Programmer’s Guide : la référence ultime de la STL originelle de sgi. Tout y est expliqué en détail, et parfois appuyé par des exemples.
- cplusplus : une référence mondialement connue, très complète, bien expliquée, qui prend en compte C++11 et distingue les différentes versions du langage dans la documentation proposée. A la fois efficace et sérieux.
- C++ reference : une excellente référence, qui se veut universelle, traduite (partiellement) dans plusieurs langues. Très complète et précise (et prenant en compte C++11), elle propose plusieurs implémentations de certains algorithmes de l’en-tête
algorithm
, et illustre son propos avec de nombreux exemples. - Visual Studio : la documentation de l’implémentation de la librairie standard, par Microsoft. Indispensable à ceux qui codent sous VC++, elle peut également servir aux autres.
- Apache C++ Standard Library Reference Guide : une autre référence solide, un peu moins étoffée que les précédentes cependant. Elle ne prend pas C++11 en compte.
- ericniebler.com : Principalement des articles sur l’utilisation des ranges en avec la future STL de C++1z et/ou boost::rangev3
- Video Series: Efficient Programming with Components, code : Un ensemble d’une vingtaine de vidéos adressées à un publique large réalisées par l’auteur de la STL (Alexander Stepanov). Ce cours a une approche particulièrement atypique et mène à se poser des questions simples et néanmoins fondamentales sur le développement en général.
Autres
- The C++ Standards Committee : pour les masochistes, ou passionnés.
- Le site web officiel du C++ : oui oui, maintenant il y en a un. Pas tant pour disposer de doc ou de tutoriels que pour suivre son évolution.
- C++0xCompilerSupport : j’ignore si c’est à jour, ça semble l’être, et c’est toujours utile. Mais j’ai peur que ce lien ne dure qu’un temps.
- La doc de GCC : ça ne servira qu’à ceux qui utilisent GCC, évidemment.
- Data Structures and Algorithms with Object-Oriented Design Patterns in C++ : un cours très complet d’un point de vue algorithmique, qui propose des implémentations en C++. Cependant la conception OO est parfois très critiquable.
- FaQ Parashift : FaQ très complète sur le langage, si ce n’est la plus complète. Elle reste plus orienté technique qu’utilisation.
- FaQ C++11 de Stroustrup : FaQ orientée vers la nouvelle norme du C++11 écrite par Bjarn Stroustrup. Outre des réponses techniques, elle contient quelques éléments d’histoires de fonctionnalités.
- FaQ template de Comeau : FaQ orienté template, elle est très technique mais la seule (à ma connaissance) à aborder certains points des template du C++.
- FaQ de IsoCPP : une très bonne FaQ, à caractère "officiel".
- FaQ de Développez : une des plus complètes en français.
- Andrzej’s C++ blog : Articles sur des techniques plus ou moins avancée en C++11 et C++14
- cpp-thruths : "A C++ BLOG ON INTERMEDIATE TO ADVANCED TOPICS IN C++ PROGRAMMING LANGUAGE FEATURES, STANDARDS, IDIOMS, DESIGN PATTERNS, AND OBJECT-ORIENTED PROGRAMMING IN GENERAL." Au final beaucoup de choses autour de la programmation fonctionnelle en C++ à l’aide des lambdas C++14
- Simplify C++! : Un nouveau blog (2015) avec déjà quelques articles de qualité.
C++ old school
- Le cours de Christian Casteyde : un cours exploitant l’ancienne approche, très controversée à présent, qui consistait à enseigner le C en tout premier lieu. Bien que s’appuyant sur C++98, et ayant tendance à donner de mauvaises habitudes (C with classes), il constitue tout de même une référence très complète pour un débutant.
Informatique graphique 3D (C++)
2) Le langage Ruby
Ruby
- Ruby en vingt minutes : un tutoriel pour apprendre les bases de Ruby.
- Try Ruby : un shell Ruby pour apprendre les bases du langage.
- Passer d’un autre langage à Ruby.
- Ruby Koans.
- Ruby Essentials : un autre tutoriel sur Ruby.
- Ruby Programming language : wikibooks pour apprendre le langage.
- Ruby learning : un tutoriel relativement complet sur Ruby.
- Qt Ruby tutoriel : tutoriel sur le binding Ruby de Qt.
- Ruby/Gtk : tutoriel sur le binding Ruby de Gtk.
- Ruby source : site regroupant des articles sur le monde Ruby (Ruby, Rails, Sinatra, Linux, etc.).
- Référence zenspider : une référence rapide pour les experts et pour les débutants.
- C extensions cheat sheet : principales fonctions de l’API C de Ruby.
Ruby on Rails
- guides.rubyonrails.org : Guides officiels ; indispensables pour débuter et progresser.
- Ruby on Rails tutorial : un tutoriel assez complet sur le développement d’applications web avec Ruby on Rails gratuit et en français.
- Rails for Zombies : une formation gratuite sur le framework. Les screencasts ont été réalisés à la sortie de Rails 3.0 ; tout n’est plus forcément à jour.
- Railscasts.com : screencasts en anglais sur Ruby et Rails.
- Le cours de Wikiversity : un cours de bonne qualité.
Sinatra
3) Le langage Perl
- Le cours de Sylvain Lhullier qui est souvent cité chez les francophones.
- Modern Perl, un livre qu’on peut consulter en ligne.
- CPAN, l’indispensable.
- Dans les agrégateurs de blogs : http://blogs.perl.org/, Planet Perl ou Perlsphere
- Une traduction française des différents tutoriels et doc officiels
Perl 6
- La documentation : http://doc.perl6.org/
- Les Synopsis et les Apocalypses : http://design.perl6.org/
- Perl 6 Maven, un site qui propose une série de petit tutos : http://perl6maven.com/
- Le canal IRC #perl6 sur irc.freenode.net (voir http://perl6.org/community/irc)
- Le Perl6 advent Calendar, un calendrier de l’avent présentant chaque jour un nouveau tutoriel : https://perl6advent.wordpress.com/
4) Le langage Python
- http://resrc.io/list/4/pycrumbs/
- http://webcourse.cs.technion.ac.il/236501/Winter2012-2013/en/ho_Python%20-%20reading.html
- Sam&Max : d’excellents articles sur de nombreux points de Python, les pièges à éviter, les bons conseils, ce qui pose problème aux débutants, ou encore des écrits adressés même aux experts, on trouve de tout, rédigé avec humour de façon claire et précise.
- opensource en Python
- Apprendre à programmer avec Python 3 de Gérard Swinnen : le lien pour le livre se trouve dans le bas de la page (licence by-nc-sa) en format pdf ou odt. Très gros livre, très complet avec beaucoup d’exercice, personnellement, je le recommande.
5) Les langages OCaml et Caml
- Le site d’OCaml parce qu’il faut au moins ça.
- Une version PDF de Le Langage Caml : ce n’est pas la dernière version du langage, mais on y trouve une bonne explication des concepts de base de la programmation fonctionnelle, ainsi que pas mal d’exemples d’applications.
- Une Introduction à Objective Caml qui est plus récente celle là, et claire.
- try OCaml : pour se faire une idée du langage.
- OCaml Forge : pointe vers tout un tas de projets en OCaml.
- Real World OCaml: un livre qu’il est bien
- http://typeocaml.com/2014/11/06/magic-of-thunk/ : Ce sont des exemples de codes, souvent des structures de données algorithmiques en Ocaml. C’est bien fait, clair et concis.
6) Le langage Haskell
- Pour commencer, le Haskell Wiki constitue un bon point de départ pour se familiariser avec l’écosystème Haskell.
- Le Learn You a Haskell for Great Good est une référence…
- … ainsi que sa version française.
- Le Real World Haskell qui est l’autre référence souvent citée.
- Le Wikibook Haskell peut être utile sur certaines notions un peu tricky du langage.
- try Haskell qui peut être intéressant pour donner une petite idée du langage, sans avoir à installer GHC.
- School of Haskell qui contient quelques articles intéressants pour les débutants et et les « intermédiaires ».
- Bien évidemment, /r/haskell qui centralise plein de choses intéressantes.
- CS240h: notes de cours
- Parallel and Concurrent Programming in Haskell: un livre qu’il est bien
- Category Theory: petite introduction, sur le wikibook (où y’a plein d’autres trucs intéressants)
- Category Theory bis: encore quelques slides
- Typeclassopedia: présentation des typeclass d’Haskell
- Planet Haskell: agrégateur de blogs
- The Monad Reader: regroupement d’articles
- Hoogle: moteur de recherche
7) L’algorithmique
Exercices d’algorithmique :
- France IOI : plus de 500 exercices répartis par niveau de difficulté croissante, avec des corrections détaillées. Il constitue un très bon entraînement en mesure de mener les débutants jusqu’à un niveau respectable.
- Prologin : des exercices assez simples dans l’ensemble, certains représentant tout de même un défi intéressant.
- La plate-forme d’entraînement des USACO : des exercices dont la difficulté ne constitue pas tant de trouver un algorithme efficace que de savoir le coder. Un très bon moyen de s’entraîner à coder vite de manière efficace et facilement débogable.
- Projet Euler : des problèmes mêlant mathématiques et algorithmique, pour lesquels une réflexion sur les deux domaines est indispensable à la résolution du problème dans les temps.
- Sphere Online Judge : une immense banque de problèmes en tout genre, de niveaux très variés.
- UVa Online Judge : près de 30 000 problèmes, dont certain d’un niveau avancé (archives du SWERC des finales ACM-ICPC).
- AIO : archives des concours de sélection aux IOI de l’Australie.
- CodeChef : autre banque de problèmes qui organise régulièrement des concours.
Concours
- USACO : concours de sélection aux IOI des USA, réparti en trois niveaux : le Bronze ouvert à tout le monde, et l’Argent et l’Or, sur invitation (suite à de bons résultats). Ils s’étendent de Novembre à Avril, et approchent la soixantaine de problèmes sur l’année.
- Google code Jam : concours de programmation organisé par round successifs.
- TopCoder : un autre de site de concours d’algorithmique mondialement connu, de haut niveau.
- Codeforces : même remarque que ci-dessus !
Cours d’algorithmique
- Cours de Topcoder : de bons cours variés, écrits par des spécialistes.
- Cours de l’ENS de Lyon
- Shortest Path : un article sympa sur les plus courts chemins.
- http://www.enseignement.polytechnique.fr/informatique/profs/Luc.Maranget/421/poly/ : quelques cours de Polytechnique.
- Red Blob Game : de très bons cours (les meilleurs que j’ai vu) sur des sujets comme les grilles hexagonales, la génération de cartes, le pathfinding, etc…
- Algorithms, Etc. by Jeff Erickson : l’un des documents les plus pédagogique que l’on puisse trouver sur le sujet. Le PDF au complet fait plus de 1200 pages. Ca regroupe aussi bien de l’algorithmique que la théorie des modèle de calculs (machine de Turing, automates)
8) Développement de systèmes d’exploitation
- http://wiki.osdev.org/Main_Page
- http://www.nondot.org/sabre/os/articles
- http://a.michelizza.free.fr/pmwiki.php?n=TutoOS.TutoOS [en français]
- http://sos.enix.org/fr/PagePrincipale [en français]
- http://kos.enix.org/ [en français]
- http://www.oldlinux.org/ [pour étudier les premières versions de linux]
- http://www.kernel.org/ [le site du noyau linux]
- https://www.kernel.org/pub/linux/kernel/Historic/ [pour télécharger le code source des premières versions de linux]
- The Linux Documentation Project - The Linux Kernel : plus théorique.
9) Sécurité informatique
- http://pentest.cryptocity.net/ : des cours vidéos d’université pour étudiant débutants en sécurité informatique touchants pas mal d’aspects du sujet.
- http://www.opensecuritytraining.info/ : pareil qu’au dessus mais les cours vont plus en profondeur et proposent des parcours d’apprentissage.
- http://www.overthewire.org/ : un site hébergeant plusieurs wargames, chacun ayant un thème différent, plutôt destinés aux débutants (quoi que ca peut se corser dans les derniers éxos).
- http://www.wechall.net/ : un autre site de wargames, jamais essayé, j’aime pas trop leur site.
- https://www.hackthissite.org/ : un site d’apprentissage d’exploitation de failles web avec des exercices pas top mais des exercices réalistes plutôt sympas.
- http://captf.com/ : regroupe des exercices de CTFs (qualifications ou finales) qui ont eu lieu à travers le monde dans différentes conférences, parfois accompagnés de writeups.
- http://smashthestack.org/ : encore plus de wargames mais ceux de ce site sont vraiment pas mal pour un apprentissage "difficile" de l’exploitation de binaires.
- http://www.exploit-exercises.com/ : encore, s’entrainer sur des exploits connus mais cette fois le support sont des VMs qu’on installe chez sois, cependant je ne suis vraiment pas fan des exercices de ce site.
- http://blog.g0tmi1k.com/2011/03/vulnerable-by-design.html?m=0 : une banque de liens vers des sites de wargames, de CTFs et des VMs exploitables. Beaucoup de contenu et ce blog contient beaucoup de ressources et writeups plutôt sympas.
- http://pentesterlab.com/ : encore un site proposant des cours et exercices d’exploitation de failles web, pas trop mal. C’est une série d’exercices pratiques fournis sous forme d’iSO à mettre dans une VM et à exploiter directement avec un guide fourni pour se guider au travers de petits cas pratiques.
- http://www.root-me.org/ : mon site préféré ! Il ne contient que des exercices mais dans presque tous les domaines de sécurité, avec des exercices de tous genres et de toutes formes que j’ai vraiment beaucoup aimé. Et tout ca en francais livré avec une communauté (forum + irc) plutôt agréable et compétente, un régal !
- http://www.bases-hacking.org/ : un site francais qui se base sur le livre "Hacking the art of exploitation" mais sur un site web et en francais, pas trop mal pour débuter.
- N-NP : N-PN est un site communautaire de White Hat Hacking (selon leurs propres termes).
10) ASM et langage machine
- Assemblers and loaders, par david solomon : Ce document explique comment créer un traducteur ASM -> binaire, plus communément nommé assembleur. Il explique aussi comment fonctionnent les loaders, les parties d’un OS qui chargent un programme en mémoire et l’initialisent convenablement.
11) Librairies, outils
Vision par ordinateur OpenCV
Vim
- Pour ceux qui s’intéressent aux plugins pour
vim
: Learn Vimscript the Hard Way - Vim Awesome: quand on cherche un plugin
- A Vim Tutorial and Primer: tuto sur l’utilisation de vim
Et bien sûr : vim.wikia
Git
- Pro Git
- Think Like (a) Git: explique le fonctionnement de git
12) Conception, design patterns
Programmation Orientée Objets
- Une Interview d’Alan Kay
- objectmentor – où vous trouverez tous les articles quasi-fondateurs d’Uncle Bob (Robert C. Martin).
- d’ailleurs, une liste des blogs du monsieur.
- OO Tips
- Le blog de Bertran Meyer
- le blog d’Emmanuel Deloget
- Game programing patterns : design patterns appliqués aux jeux vidéos
Structure du projet et du code source
Entity Component System
- Designing A Game That Uses An Entity System : un bon Wiki qui non seulement présente des articles mais donne tout un tas d’autres liens. Écrit par un (ancien ?) concepteur de MMOG.
- Entity Systems are the future of MMOG development : série d’articles sur ECS, par le même auteur que le wiki ci-dessus.
- Understanding Component-Entity-Systems
- Passez à l’ Entity System !
- Comment structurer un jeu en C++ : un lien qui pointe vers le-site-dont-il-ne-faut-pas-dire-le-nom, mais qui est néanmoins très intéressant parce qu’on y comprend que la méthode traditionnelle de l’héritage à gogo n’est pas efficace, au contraire de l’Entity System.
- Classe générique : ou comment faire pour, à partir d’une seule classe, construire des personnages aux caractéristiques très différentes.
- Tom Davies - Entity Systems : un lien intéressant puisqu’il détaille plusieurs méthodes pour mettre en place un ECS.
- Je créé mon jeu vidéo : une série d’articles sur l’ECS en français tirée de LinuxFr.
13) La famille Lisp
- Practical Common Lisp: très bon livre pour découvrir le langage, à condition de savoir programmer
- Successful Lisp: un autre livre
- On Lisp: encore un livre, beaucoup de chapitres sur les macros
- Learn Lisp The Hard Way: très incomplet mais très ambitieux, à suivre
- Articulate Common Lisp: introduction rapide au langage, ce qu’il faut installer pour bien commencer…
- CLiki: le wiki
- Common Lisp HyperSpec: la spécification du langage
- l1sp.org: quand on cherche quelque chose dans la spec
14) Le langage Erlang
- Learn You Some Erlang For Great Good
- Erlang in Anger: pas pour les débutants
- Erlang Bookmarks: ressources (tuto, livres, vidéos…) concernant Erlang
15) Mac, IOs, Objective C, swift
- Objc.io
- Ray Wenderlich - Un très bon site (en anglais) pour le crée des jeux vidéo sur IOS
- NSHipster
- Custom Controls - Un site où l’on retrouve des très bon exemple de customisation.
- http://www.swiftcode.fr
16) Electronique, hardware
17) SQL
- Optimisations SQL : http://sqlpro.developpez.com/cours/optimiser/
18) PHP
- Les bonnes manières en PHP : http://eilgin.github.io/php-the-right-way
19) Clojure
- Clojure for the Brave and True : un cours qui met l’accent sur la pratique : "To stay motivated and learn efficiently, you need to actually write code and build executables."
+20
-0