Banque de liens

Ressources, tutoriels, etc...

a marqué ce sujet comme résolu.

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
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 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
Perl 6
4) Le langage Python
5) Les langages OCaml et Caml
6) Le langage Haskell
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
8) Développement de systèmes d’exploitation
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
Git
12) Conception, design patterns
Programmation Orientée Objets
Structure du projet et du code source
Entity Component System
13) La famille Lisp
14) Le langage Erlang
15) Mac, IOs, Objective C, swift
16) Electronique, hardware
17) SQL
18) PHP
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."
+19 -0
  • 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.

Algue-Rythme

Je serais d'avis de le supprimer carrément, d'autant plus qu'entre C++03 et C++11 (et maintenant C++14), c'est un véritable gouffre qui les sépare, et apprendre le C++03 aujourd'hui, en dehors de certains cas spécifiques, me semble inutile. Par contre, les liens sur C++11/14 sont bons à prendre.

Sinon, pour contribuer, quelques liens sur l'ECS, tous illustrés en C++. Ah non ils y sont déjà, toutes mes confuses.

Je ne supprimerais pas les liens sur les cours de C++ anciens.
D’abord parce que j'aurais l'impression de brûler un livre, et c'est assez désagréable. Cette liste sera autant une boîte à outil qu'une sorte d'archives de ce qui se fait de bien (c'est ambitieux, je sais).
Ensuite parce que le cours sus-mentionné, bien qu'étant déjà dépassé à l'époque de mon apprentissage (2011) a tout de même joué un rôle déterminant dans celui-ci.
A mon avis il reste intéressant, à condition de le lire prudemment et en gardant à l'esprit que le paradigme présenté est vieux, et en sachant le compléter avec les bonnes sources plus récentes (le lien mis juste en dessous convient bien, comme je l'indique d'ailleurs).
Et enfin, je pense qu'une approche historique reste pédagogiquement intéressante, puisqu'elle permet au débutant de retracer l'évolution de la pensée humaine et des techniques en même temps que le langage lui même (plus pertinent que des solutions "catapultées" d'on ne sait où sans comprendre leurs raisons d'être).
Mewtow aurait sûrement des choses à en redire (puisqu'il semble être notre spécialiste local de ce genre de question) mais ça nous mènerait bien loin.
L'important étant de ne surtout pas induire le débutant en erreur, en lui montrant bien les raisons qui ont poussé à déprécier ces méthodes de programmation et en lui proposant les solutions adaptées universellement reconnues.

+5 -4

Ne confondez pas la pédagogie avec le contenu. C'est Loic J. (sur dvpz ou flc++) je crois qui avait écrit un truc assez important que j'avais retenu dans un coin de ma tête. En substance (i.e. plus de 10ans après, de mémoire, et avec mes mots), cela donnait :

  • les bonnes ressources par de mauvais pédagogues ne font pas de mal, et tendent à être ignorées
  • les mauvaises ressources par de mauvais pédagogues tendent aussi à être ignorées (fort heureusement)
  • les mauvaises ressources par de bons pédagogues sont les plus sournoises : elles restent, se propagent et font des dégâts. Ce sont les pires de toutes.

Si vous voulez savoir pourquoi ce qui était à la mode à un moment a été déprécié, donner ces ressources aux apprenants sans les guider au fur et à mesure pour leur dire pourquoi on ne procède plus de la façon enseignée alors n'est pas la bonne approche. Le débutant seul cherche rarement à se lancer sur le chemin de l'histoire des techniques. Mieux vaudrait une sous-catégorie old school C++ (pour ceux qui veulent programmer comme papy).

Au sujet du C++, la FAQ C++ de dvpz est une références des plus poussée sur le C++. Et en plus elle est en français. A noter aussi la nouvelle FAQ sur isocpp (qui fusionne la FAQ C++ lite et quelques autres).

Pour vim, il manque au moins vim.wikia (et vim awesome est loin d'avoir un référencement au point -> à chaque fois que j'essaie d'enregistrer un de mes plugins (qu'il soit sur goocle-code ou même sur github), c'est en vain…)

PS: donner un lien vers un truc illégal n'est peut-être pas un délit, mais ce n'est en tout cas pas du tout respectueux des auteurs qui ont choisi un autre moyen de distribution.

Parfois il y a des bons livres et certains membres ont déjà commencé à demandé des livres sur divers domaines. De plus, parfois ce sont des articles de recherches qui peuvent être intéressant pour apprendre une structure de données en particulier (je pense aux langages fonctionnellement). Il ne serait pas intéressant de faire un topic qui englobe le tout ? Ou bien séparer quand c'est gratuit/payant. Mais quid des articles de recherche alors ?

Tout est bon à prendre.

En revanche je pense qu'il serait pertinent de séparer les livres et leurs critiques (moins nombreux que les liens, mais avec une foultitude d'avis, de commentaires) et la banque de liens, pour éviter de trop encombrer. Tu peux inaugurer le topic si tu t'en sens le courage ;)

Bonsoir,

C++Next a fermé depuis mai 2014 il me semble.. On peut encore trouver les articles sur WebArchives.

Sinon :

  • CppCon 2014 Videos : Un nombre impressionnant de présentations de qualité sur divers sujets plus ou moins avancés en C++ moderne.

  • 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.

  • 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é.

  • maintainablecode

  • To be continued…

J'oublie certainement pas mal de lien et essayerai de maintenir cette liste à jour.

Pour le swift :

  • SWIFT Code - Un site français où l'on peut apprendre les bases du swift

Ça fait très longtemps qu'il n'a pas été mise à jour

A près, il y a la doc et le livre sortie sur Ibooks Store qui parle sur Swift

Pour le dev sur IOS:

Pour l'objective-c :

Pour Cocoa/CocoaTouch :

  • Custom Controls - Un site où l'on retrouve des très bon exemple de customisation.

Aujourd'hui j'ai découvert ces notes de cours : http://web.engr.illinois.edu/~jeffe/teaching/algorithms/ . Selon un ami, c'est 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).

Aujourd'hui j'ai découvert ces notes de cours : http://web.engr.illinois.edu/~jeffe/teaching/algorithms/ . Selon un ami, c'est 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).

Saroupille

Ça de l'air super (j'ai feuilleté un ptit peu), faut pas avoir peur de la lecture par contre :P

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