Ceci est une ancienne révision du document !
Programmation
Outils généraux
Documentation hors ligne
- Documentation des logiciels et composants installés dans Ubuntu accessibles dans /usr/share/doc
- Devhelp : Consultation hors ligne de documentation principalement sur le développement GTK+ et GNOME.
- zeal : Consultation hors ligne de documentation sur plus de 190 langages de programmation. Site de zeal
Outils de gestion de version (Versionning)
Les outils de gestion de version permettent la synchronisation facile des équipes de développement, ils sont même quasiment indispensables quand il s'agit de travailler en équipes dispersées à travers le monde.
Système centralisé : Basé sur le modèle client serveur, le gestionnaire doit posséder une connexion au serveur pour effectuer des modifications sur la branche principale (commit). Il est possible d'avoir une copie locale qui permet de travailler en mode déconnecté, mais qui devra être synchronisée avec le serveur.
- CVS : Gestionnaire de versions plus ancien (ancêtre de SVN)
- CVS_Server : Tutoriel sur la création d'un serveur CVS
- Subversion - Gestionnaire de versions (aussi appelé SVN)
- Trac - Environnement de suivi de projet technique basé sur Subversion
Système distribué : Basé sur le modèle d'égal à égal, chaque machine est responsable de sa partie. Tant que l'on travaille sur sa partie, il n'est pas nécessaire d'avoir une connexion. Par contre pour se synchroniser avec une branche extérieure, il est nécessaire d'avoir un accès à cette branche.
- git - Gestionnaire de versions créé par Linus Torvalds et très répandu.
- hg_mercurial - Gestionnaire de versions distribuées
Outils de comparaison de fichiers
- diff - outil de comparaison de fichiers et de création de patchs.
- sdiff - outil de comparaison de fichiers côte à côte.
- meld - outil graphique qui compare vos fichiers et dossiers.
- tkdiff - outil graphique (interface X11) de comparaison de fichiers.
- xxdiff - outil graphique (interface X11) de comparaison de fichiers et de dossiers. (Paquet non disponible sur Ubuntu 20.042).)
- kompare - outil graphique de comparaison de fichiers et dossiers.
- vimdiff - outil de comparaison de fichiers.
- gvimdiff - outil graphique de comparaison de fichiers.
- kdiff3 - outil graphique de comparaison et de merge (fusionnement) de fichiers et dossiers.
- diffmerge - outil graphique de comparaison et de merge (fusionnement).
UML
XML
IDE (Environnement de Développement Intégré)
Les IDE sont les principaux outils des développeurs. Ils bénéficient d'une page de documentation dédiée.
Éditeur de texte
Une alternative à l'utilisation d'un IDE est l'emploi d'un éditeur de texte et d'outils complémentaires individuels.
Système
- Script shell - Introduction au script shell
Langages généralistes
Python
- kiki : un outil pour tester et apprendre les expressions rationnelles de Python.
- idle : un éditeur facile à prendre en main.
- RUR-PLE : un environnement d'apprentissage de la programmation Python de manière amusante, en programmant un robot.
- Livres : Livres "Apprendre à programmer avec Python" de Gérard Swinnen sous licence Creative Commons
- IPython - Shell pour Python amélioré.
- Eric - Environnement de développement intégré adapté à la programmation Python et Ruby.
- SPE - Comment installer l'éditeur Python SPE.
- WingIDE - Environnement de développement professionnel dédié au développement de projets en Python.
- gEcrit http://gecrit.sourceforge.net/ - Nouvel IDE pour Python. (n'est plus en développement)
- Spyder - Scientific PYthon Development EnviRonment
Java
- Java - Comment installer le support Sun Java (JRE) (installation, exécution des « .jar » et plugin de Mozilla Firefox) ?
- JBuilder 2005 - Comment installer l'environnement de développement intégré Borland JBuilder 2005 ?
- Tutoriel sur les bases de Java : Apprenez à programmer en Java sur OpenClassrooms.
- eclipse - Comment installer l'IDE Eclipse pour java
- IntelliJ IDEA - énormément complet, gestion Git intégré, et terminal inclus
Ruby
- Arcadia IDE - IDE en TCL/TK et dédié à ruby, possède un débogueur. Accessible depuis gem ou sur rubyforge
- Ruby on Rails : Rails est un framework open-source d'une grande qualité destiné aux développements d'applications et services web en Ruby.
Rust
Une excellente vidéo de présentation de Rust : Underscore_ - Pourquoi les devs réécrivent tout avec ce language ?.
C et C++
Voir la page GCC, le jeu de compilateurs GNU
Cours (fr):
- Le C++ facile (sur OpenClassrooms)
Nous vous invitons à consulter le support programmation C mis à votre disposition :
- Qt-Creator - l'IDE par excellence pour développer en Qt : débogueur, auto-complétion, facilité de prise en main…
Pascal
Microsoft .NET / C# / VB .NET
Pour programmer en C# ou VB.NET sur GNU/Linux, la solution actuellement conseillée est .NET, plateforme gratuite, open source et multiplateforme.
Le framework Mono, une implémentation libre de la plateforme de développement Microsoft .NET, est toujours disponible mais il est aujourd'hui dépassé, puisqu'il correspond à la version 4.x de .NET.
Langages et pseudo-langages spécialisés
Bases de données
Le langage SQL avec un noyau de commandes commun à MySQL, MariaDB, SQLite, PostgreSQL et aussi certaines bases propriétaires.
En pseudo langage, il y a les ORM tel que, pour le PHP : Doctrine, Eloquent…
Web
Le développement web, création de pages internet et de script PHP, etc.
Maquettage de site avec un logiciel de mockup
Un logiciel de mockup est un outil bien pratique qu’il faut compter dans sa toolbox au moment de se lancer dans un projet de création de site web. C’est ce type de logiciel qui va vous permettre de concevoir les maquettes fonctionnelles ou wireframes des pages de votre site.
- Balsamiq : outil payant mais vraiment facile à prendre en main (Page en anglais expliquant comment l'installer avec Wine)
- Pencil Evolution : outil gratuit
Création d'animations pour le web
- SVG : création d'animations SVG
- HTML5 - JavaScript (AJAX-JQuery)
Mise en ligne du site
Voir le portail FTP.
Vérification du rendu des sites créés
Voir le portail navigateur.
Systèmes de gestion de contenu (CMS)
Voir le portail CMS
Serveurs de développement web
- XAMPP : un serveur web de développement facile
- RubyOnRails: Rails est un framework de développement d'applications web basé sur le concept Modèle-Vue-Controleur (MVC).
- voir aussi le portail sur les applications réseaux et serveurs.
Transformation C/C++ (ou autres ) vers javascript / html
Description du processus :
- compiler code (c++ par exemple ) vers LLVM. Des compilateurs : llvm-gcc, clang, …
- Compiler le code LLVM vers javascript
- llvm js backend (à vérifier)
HTML5 implémente les websockets, et une plage mémoire pour des applications web.
Google_Native_Client est un logiciel de sandbox qui permet l'exécution de code natif x86 dans un environnement confiné et contrôlé par un navigateur web. (source : Wikipédia)
Le compilateur Js_of_ocaml propose une compilation presque complète depuis l'OCaml vers le JavaScript. Tous les navigateurs récents sont compatibles.
HTML / XHTML / CSS
Le WYSIWYG est le fait de voir directement ce que l'on édite au format final, c'est-à-dire que ce que vous éditez ressemble fortement au résultat final publié.
- Seamonkey, éditeur HTML (Composer) et navigateur web ensemble;
- BlueGriffon, éditeur HTML supportant les plus récentes technologies Web (HTML5, CSS3), avec des add-ons pour des fonctions de base payants ;
- Dreamweaver, éditeur HTML payant, s'installe parfaitement avec Wine.
- LibreOffice Writer, permet de créer des pages html simples et rapidement ;
- w3c-markup-validator, validateur HTML ;
- Komodo Edit, éditeur (HTML, CSS, RUBY, PYTHON…) simple et performant ;
- Sublime-Text éditeur léger reconnaissant 44 langages de programmation et permet l'ajout de fonctionnalités avec des plugins
PHP
PHP3) est un langage orienté CGI très utilisé pour les serveurs web.
Serveur
Éditeur
Tous les IDE orientés Web prennent en charge le PHP.
C'est par exemple le cas de :
- Bluefish : éditeur syntaxique orienté PHP (interface GTK+).
Framework
- Symfony : un des frameworks les plus répandus
- Laravel : basé sur Symfony, complet et plus facile d'utilisation, très populaire pour le développement d'applications web complètes
- Lumen : basé sur Laravel mais simplifié et beaucoup plus léger, idéal pour de petits projets
- CakePHP : plus ancien que Laravel, mais encore bien maintenu et utilisé
- Jelix : framework PHP français assez léger et assez simple d'utilisation
- Zend Framework : ancien framework longtemps propriétaire, libéré en 2019
- PEAR : framework historique (plutôt une collection de bibliothèques, qui ont longtemps été intégrées aux paquets de PHP dans les distributions)
- CodeIgniter : un framework très léger et plus facile à prendre en main que Symphony et ZenFramework.
- FuelPHP : un successeur pour CodeIgniter ? (voir l'article de Novius labs)
Dépôts
- Composer : gestionnaire de paquets et de dépendances.
NodeJs
Basé sur JavaScript nodejs est un environnement d'exécution exécuté coté serveur.
Le développement d'applications
Cette partie concerne aussi bien la simple compilation, la programmation de petits programmes que la création de programmes ambitieux !
Compiler un programme
- Compilation - Indique comment installer les compilateurs C, C++, Java, Fortran, Pascal et Ocaml.
Création de paquets .deb
Les paquets .deb sont les "installeurs" de programmes d'Ubuntu, ces pages vous expliquent comment les créer.
Internationaliser un programme
Voir le tutoriel Comment internationaliser un logiciel libre ?.
Développement Android
- Ubuntu-make : Projet pour rendre plus simple la configuration d'un environnement de développement pour Android.
Android Studio
- Android Studio: Atelier logiciel d'applications natives Android proposé par Google
Voir aussi
Développement de jeux vidéo
Voir la page Développement de jeux vidéo
Logiciels et utilitaires (par langages)
Les outils de base de données
- DbVisualizer - Outil générique de connexion aux bases de données
Cross compilation Linux - Windows
MingW32 - Cross Compilateur permettant le développement sous Linux d'applications C à exécuter sous Windows
Calcul formel
Virtualisation
Les outils présentés ici sont utilisés pour virtualiser un environnement tel qui peut l'être dans les applications client/serveur.
- docker - utilise le noyau de l’hôte pour virtualiser des services ou des applications dans des conteneurs.
- vagrant - utilise virtualbox ou VMware pour émuler une "box" (l'image d'une machine pré-paramétré) Vagrant
Autres
- sdl - une bibliothèque permettant de réaliser des fenêtres, elle possède d'autres modules tel que l'image, le son, les polices d'écriture via freetype2.
- fmod - Comment utiliser la fmod en C/C++ ?
- programmation sur livecd - Comment programmer sur un live CD ?
Les outils d'analyse et d'optimisation du code
Voir la page analyseur de code static
Reverse engineering
Si vous pratiquez le reverse engineering
- java_decompileur_project, Observer du code JAVA par décompilation.
Ressources
Liens externes
- www.developpez.com : le site propose de nombreux tutoriels de programmation à la fois sur les langages Web et les langages applicatifs.
- devdocs.io : propose les documentations en anglais de nombreux languages tel que HTML, PHP, C, C++…
Pages concernant la programmation
- a2ps
- Adobe AIR
- AlgoBox
- Alice - Programmation visuelle
- AnalyseSi
- Android
- Android
- ant
- Apprentissage C/C++ sur GNU/Linux
- Aptana Studio
- Aspiration de sites avec httrack
- Atom
- Bazaar
- Bazaar Explorer
- Bluefish
- BlueGriffon
- BlueJ
- Bookmarklet : Des Marques pages Scriptés
- Bruno
- Bugzilla
- C#
- Caml Light
- Cas particuliers d'empaquetage
- cgit
- Checkinstall : Créer facilement un paquet debian (*.deb) à partir des sources
- Code::Blocks
- Comment créer des paquets ?
- Comment demander l'inclusion d'un nouveau paquet dans Ubuntu ?
- Comment demander la mise à jour d'un paquet dans Ubuntu ?
- Comment internationaliser un logiciel libre?
- Comment programmer des applications en PYTHON sur son téléphone Nokia
- Comment tester les versions de développement d'Ubuntu
- Comment utiliser Git pour développer le noyau Ubuntu ?
- Comment utiliser MingW[32|64] pour faire des exécutables Windows ?
- Compilation croisée (cross-compiling) pour architecture arm
- Compilation sous Ubuntu
- Compiler son noyau
- Composer
- Cours sur Python
- Création de jeux vidéo libres
- Créer des interfaces graphiques avec Tkinter
- Créer ses diagrammes UML avec Umbrello
- Créer un environnement complet pour Netbeans
- Créer un jeu de couleurs pour Gedit
- Créer une loupe Unity
- CUDA
- CVS : utilisation en tant que client
- Cygwin : utiliser des applications GNU/Linux depuis Windows
- DarkMoon Cybersecurity: utilisez un GNU/Cygwin portable pour Pentester sous Windows
- DarkMoon: utilisez un GNU/Linux/Cygwin portable sous Windows
- DbVisualizer
- Doxygen
- Débuggage avec gdb
- Démarrer un projet Web avec Symfony
- EiffelStudio : Environnement de développement intégré Complet
- Emacs : le couteau Suisse du développeur
- Eric (IDE)
- Etoys - Programmation visuelle libre
- FLTK : Fast Light ToolKit
- Fortran
- Free Pascal
- Gambas, le Visual Basic™ libre, mais en mieux !
- Gaol : NOT Just Another Interval Library
- Gazebo
- GCC, le jeu de compilateurs GNU
- GDL : GNU Data Language
- Geany
- GHex
- Git
- Glade : la ligne de code ouvre les fenêtres
- Glade2script
- GNOME Builder
- Go
- Gource
- Greasemonkey - Développer la puissance du web
- Groovy & Grails
- GSL : GNU Scientific Library
- Gtkmm
- gtkradiant (Radiant): Création de carte 3D
- Gui Scripts - Des logiciels pour automatiser vos machines
- Gvim
- IDE (Environnement de Développement Intégré)
- IDE : DrScheme
- IDE : Eclipse
- IDE : Eclipse Installer
- IDE : Eclipse
- IEs4Linux
- Initiation au Shell
- Initiation au XHTML
- Installer et configurer Borland JBuilder 2005 Foundation
- Installer MPICH2 avec Intel Fortran
- Installer Scratux en PPA
- Installer un serveur d'applications Zope sur Ubuntu
- Installer un validateur (x)html
- IntelliJ IDEA
- Introduction aux scripts shell
- ipython
- Irrlicht : moteur 3D libre
- Java
- Java Oracle®
- jEdit
- Jupyter
- Kate
- KDevelop
- Kiki, un outil de test et d'apprentissage Python
- Komodo Edit
- Langage de programmation Common Lisp
- Langage de programmation IronPython
- Langage de programmation Python
- Language Server Protocol (LSP)
- Launchpad
- Lazarus
- Les analyseurs de code statique
- Les systèmes de gestion de base de données (SGBD)
- Les éditeurs de texte
- libNMEAParser
- Linotte
- Liste des applications d'UML
- Logiciels sous linux
- Make
- MapServer
- Matplotlib
- Maven
- Meld : comparaison graphique de fichiers
- Mercurial ( ou hg )
- MiniConda
- Mise en place d'un serveur CVS
- Mono, implémentation libre de Microsoft® .NET™
- MonoDevelop : Un IDE pour Mono/.NET
- MSPGCC4
- Neovim
- Netbeans
- NetRadiant
- Node.js
- Objective Caml
- Ogre 3D
- Open CASCADE
- Open Outcast
- OpenCOBOL
- OpenCV
- OpenGL et GLX
- OpenJDK, l'implémentation libre de Java
- Oracle JDK
- Oracle™ Database
- Participer au développement d'Ubuntu
- Pharo
- PHPBrew
- phpGroupWare
- PICkit2
- PO4A : PO for Anything
- PostgreSQL
- Powershell
- Processing : langage de programmation de rendu 2D/3D interactif
- Programmer en Ada avec Ubuntu
- Projet de développement de scripts : comment l'utiliser
- Projet de développement de scripts : comment participer
- Prolog
- Présentation
- Pure Data
- PyCharm
- PyCharm
- PyQt
- Python et les environnements virtuels
- pyUSB
- QDevelop
- Qt
- Qt Creator
- Radrails
- Rails (ou Ruby on Rails dit aussi RoR)
- RapidSVN
- Redmine
- Ren’Py
- Ruby
- SciTE, Scintilla Text Editor
- SCOL
- Scratch - La programmation visuelle
- SDL : Simple DirectMedia Layer
- SFML : Simple and Fast Multimedia Library
- SHC : compilateur de script shell
- Simulateur robotique Player/Stage
- SIP pour PYTHON
- SmartEiffel : Compilateur Eiffel GNU
- SonarQube
- Sous-système Windows pour Linux : Ubuntu sur Windows
- Soya 3D
- Spyder / spyderlib
- Squeak
- Stylish : Styliser le Web !
- Subclipse
- Sublime Text
- Subversion
- Subversive
- SWIG
- Symfony
- Symfony
- Tcl/Tk
- Tiger : un langage de programmation
- Tupi
- TurtleArt - Programmation visuelle libre
- Tutoriel : programmer une extension GNOME Shell
- Ubuntu Make
- UPX : the Ultimate Packer for eXecutables
- Vala : Un langage de programmation pour GNOME
- Valgrind
- Vi IMproved
- VMware vRealize Operations
- Wingware Python IDE
- wxWidgets - programmation d'interface multiplate-formes
- XAMPP : un serveur LAMPP (Apache + MariaDB + PHP + Perl) complet tout prêt
- Xlogo
- Yasm
- Zed
- Zend Framework
- Zenitor 3 ou Zenity Generator 3
- ZeroMQ (ØMQ)
Contributeurs : Fabien26, Phossele, darkjam, Tinato, FrancoisA30.
