IDE
IDE
See also Python#IDE
KDevelop
- KDevelop - A cross-platform IDE for C, C++, Python, QML/JavaScript and PHP
CodeLite
- CodeLite - an open source, free, cross platform IDE specialized in C, C++, PHP and JavaScript (mainly for backend developers using Node.js) programming languages which runs best on all major Platforms ( OSX, Windows and Linux )
TKE
- TKE - a full-featured source code editor with a minimalist UI.This editor is primarily written for programmers and contains support for many programming languages, syntax highlighting, optional built-in Vim support, multi-cursor/selection support, plugin support and many other features. The the feature list below for more details. [1]
Code::Blocks
- Code::Blocks - a free C, C++ and Fortran IDE built to meet the most demanding needs of its users. It is designed to be very extensible and fully configurable.Finally, an IDE with all the features you need, having a consistent look, feel and operation across platforms.Built around a plugin framework, Code::Blocks can be extended with plugins. Any kind of functionality can be added by installing/coding a plugin. For instance, compiling and debugging functionality is already provided by plugins!
Simple Teaching Assistant
Symbol Flux
ideU
ChangeOver
- ChangeOver - Powerful yet simple IDEOne file. No install. No setup. It just works! [3]
Light Table
Lamdu
- Lamdu - aims to create a next-generation live programming environment that radically improves the programming experience.
Theia
- Theia - an extensible platform to develop multi-language Cloud & Desktop IDEs with state-of-the-art web technologies
juCi++
- https://gitlab.com/eidheim/jucipp - one of the first IDEs to utilize libclang for improved C/C++ tooling. The integrated C/C++ support has since then improved steadily, and support for other languages has been made possible through the language server protocol. The main goals of juCi++ is effective resource usage, stability, and ease of use. Instead of relying on 3rd party addons, features expected in an IDE is instead integrated directly into juCi++. For effective development, juCi++ is primarily written for Unix/Linux systems. However, Windows users can use juCi++ through POSIX compatibility layers such as MSYS2.
Anjuta
- Anjuta - Features a number of advanced programming facilities including project management, application wizard, interactive debugger, source editor, version control, GUI designer, profiler and many more tools. Focuses on providing simple and usable user interface, yet powerful for efficient development. It supports the following programming languages: C, C++, Java, Javascript, Python, Vala
GNOME Builder
- https://en.wikipedia.org/wiki/GNOME_Builder - a general purpose integrated development environment (IDE) for the GNOME platform, primarily designed to aid in writing GNOME-based applications. It was initially released on March 24, 2015. The application's tagline is "A toolsmith for GNOME-based applications".
RStudio
- RStudio - an integrated development environment (IDE) for R and Python. It includes a console, syntax-highlighting editor that supports direct code execution, and tools for plotting, history, debugging, and workspace management. RStudio is available in open source and commercial editions and runs on the desktop (Windows, Mac, and Linux).
- https://en.wikipedia.org/wiki/RStudio - an integrated development environment for R, a programming language for statistical computing and graphics. It is available in two formats: RStudio Desktop is a regular desktop application while RStudio Server runs on a remote server and allows accessing RStudio using a web browser.
- https://github.com/rstudio/plumber - allows you to create a web API by merely decorating your existing R source code with roxygen2-like comments. Take a look at an example.
Computational notebooks
to sort with Maths#Software, Computing#Runtime, Organising#Lab notebook
- https://en.wikipedia.org/wiki/Notebook_interface - or computational notebook is a virtual notebook environment used for literate programming, a method of writing computer programs. Some notebooks are WYSIWYG environments including executable calculations embedded in formatted documents; others separate calculations and text into separate sections. Notebooks share some goals and features with spreadsheets and word processors but go beyond their limited data models. Modular notebooks may connect to a variety of computational back ends, called "kernels". Notebook interfaces are widely used for statistics, data science, machine learning, and computer algebra.
Notebooks are traditionally used in the sciences as electronic lab notebooks to document research procedures, data, calculations, and findings. Notebooks track methodology to make it easier to reproduce results and calculations with different data sets. In education, the notebook interface provides a digital learning environment, particularly for the teaching of computational thinking. Their utility for combining text with code makes them unique in the realm of education. Digital notebooks are sometimes used for presentations as an alternative to PowerPoint and other presentation software, as they allow for the execution of code inside the notebook environment. Due to their ability to display data visually and retrieve data from different sources by modifying code, notebooks are also entering the realm of business intelligence software.
- https://github.com/executablebooks - an international collaboration to build open source tools that facilitate publishing computational narratives using the Jupyter ecosystem.
- The Executable Books Project - the team documentation for the ExecutableBooksProject, an international collaboration to build open source tools that facilitate publishing computational narratives using the Jupyter ecosystem
We are a community who steward:
- Jupyter Book: Build beautiful, publication-quality books and documents from computational material like Jupyter Notebooks.
- MyST Markdown: An extended Markdown format designed for the future of technical communication and publication.
As well as many other tools for parsing, headless execution of Jupyter Notebooks (caching and in the browser), popular sphinx extensions (e.g. copy-button, sphinx-design, sphinx-thebe), and many scientific templates for writing journal articles and presentations.
- Ecosystem of tools - There are several major tools that we have developed, or are contributing to, as a part of this project. This page describes a few major components.
IPython / Jupyter
- IPython - provides a rich architecture for interactive computing with:
- A powerful interactive shell.
- A kernel for Jupyter.
- Support for interactive data visualization and use of GUI toolkits.
- Flexible, embeddable interpreters to load into your own projects.
- Easy to use, high performance tools for parallel computing.
- LWN.net: Advanced computing with IPython - [5]
- Project Jupyter - exists to develop open-source software, open-standards, and services for interactive computing across dozens of programming languages.
- https://en.wikipedia.org/wiki/Project_Jupyter - a project to develop open-source software, open standards, and services for interactive computing across multiple programming languages. It was spun off from IPython in 2014 by Fernando Pérez and Brian Granger. Project Jupyter's name is a reference to the three core programming languages supported by Jupyter, which are Julia, Python and R. Its name and logo are an homage to Galileo's discovery of the moons of Jupiter, as documented in notebooks attributed to Galileo. Project Jupyter has developed and supported the interactive computing products Jupyter Notebook, JupyterHub, and JupyterLab. Jupyter is financially sponsored by NumFOCUS.
- Project Jupyter Documentation - a large umbrella project that covers many different software offerings and tools, including the popular Jupyter Notebook and JupyterLab web-based notebook authoring and editing applications. The Jupyter project and its subprojects all center around providing tools (and standards) for interactive computing with computational notebooks.
- https://wiki.archlinux.org/title/Jupyter - a project which produces browser-based interactive environments for programming, mathematics, and data science. It supports a number of languages via plugins ("kernels"), such as Python, Ruby, Haskell, R, Scala, Julia and Kotlin. JupyterLab is "Jupyter’s Next-Generation Notebook Interface", while Jupyter Notebook is the original.
- Jupyter/IPython Notebook Quick Start Guide - a brief step-by-step tutorial on installing and running Jupyter (IPython) notebooks on local computer for new users who have no familiarity with python. Briefly, if someone gave you a notebook to run and you don’t know what a notebook is, this document is for you. Jupyter Notebook App (formerly IPython Notebook) is an application running inside the browser. This guide describes how to install and use Jupyter Notebook App as normal desktop application, without using any remote server.
- Jupyter Notebook - The Classic Notebook Interface. The Jupyter Notebook is the original web application for creating and sharing computational documents. It offers a simple, streamlined, document-centric experience.
- JupyterHub - brings the power of notebooks to groups of users. It gives users access to computational environments and resources without burdening the users with installation and maintenance tasks. Users - including students, researchers, and data scientists - can get their work done in their own workspaces on shared resources which can be managed efficiently by system administrators. JupyterHub runs in the cloud or on your own hardware, and makes it possible to serve a pre-configured data science environment to any user in the world. It is customizable and scalable, and is suitable for small and large teams, academic courses, and large-scale infrastructure.
- JupyterLab - a highly extensible, feature-rich notebook authoring application and editing environment, and is a part of Project Jupyter, a large umbrella project centered around the goal of providing tools (and standards) for interactive computing with computational notebooks. A computational notebook is a shareable document that combines computer code, plain language descriptions, data, rich visualizations like 3D models, charts, graphs and figures, and interactive controls. A notebook, along with an editor like JupyterLab, provides a fast interactive environment for prototyping and explaining code, exploring and visualizing data, and sharing ideas with others. JupyterLab is a sibling to other notebook authoring applications under the Project Jupyter umbrella, like Jupyter Notebook and Jupyter Desktop. JupyterLab offers a more advanced, feature rich, customizable experience compared to Jupyter Notebook.
- nbviewer - A simple way to share Jupyter Notebooks
- BeakerX - a collection of kernels and extensions to the Jupyter interactive computing environment. It provides JVM support, interactive plots, tables, forms, publishing, and more.
- Binder - Have a repository full of Jupyter notebooks? With Binder, open those notebooks in an executable environment, making your code immediately reproducible by anyone, anywhere.
- Zero-to-Binder — The Turing Way - In this chapter, we will create a Binder project from scratch: we will first make a repository on GitHub and then launch in on mybinder.org. Sections where you are expected to complete a task are denoted by three traffic light 🚦 emojis. Some steps give you the option of Python, Julia or R - click on the tab of your preferred language.
- GESIS Notebooks - a free and hosted instance of BinderHub, that is part of the mybinder.org Federation, for running Jupyter Notebooks requiring no installation. We aim to enable you to get started quickly with your research ideas, prototyping your data science projects, or learning to program languages such as R, Python or Julia.
- PAWS - Wikitech - a service that hosts Jupyter notebooks for use by Wikimedia's contributors. PAWS users can launch, publish, and fork notebooks without having to install Jupyter on a local computer. Users only need a Wikimedia SUL and an internet connected web-browser to use the service. PAWS makes it easier for volunteers along the spectrum to work in technical spaces and make contributions to Wikimedia's technical projects.
- Jupyter Book - Build beautiful, publication-quality books and documents from computational content. [6]
Knitr
- knitr - Elegant, flexible, and fast dynamic report generation with R
- R: Knitr - The R package knitr is a general-purpose literate programming engine, with lightweight API's designed to give users full control of the output without heavy coding work. It combines many features into one package with slight tweaks motivated from my everyday use of Sweave.
- knitr in a knutshell - a really important tool for reproducible research. You create documents that are a mixture of text and code; when processed through knitr, the code is replaced by the results and/or figures produced. Note: people are moving from R Markdown to Quarto, so maybe stop reading this and go look at Quarto.
Quarto
- Quarto - An open-source scientific and technical publishing system using Pandoc. Author using Jupyter notebooks or with plain text markdown in your favorite editor. Create dynamic content with Python, R, Julia, and Observable. Publish reproducible, production quality articles, presentations, dashboards, websites, blogs, and books in HTML, PDF, MS Word, ePub, and more. Share knowledge and insights organization-wide by publishing to Posit Connect, Confluence, or other publishing systems. Write using Pandoc markdown, including equations, citations, crossrefs, figure panels, callouts, advanced layout, and more. Analyze. Share. Reproduce. You have a story to tell with data—tell it with Quarto.
- https://github.com/quarto-dev/quarto-cli - an open-source scientific and technical publishing system built on Pandoc. Quarto documents are authored using markdown, an easy to write plain text format.
In addition to the core capabilities of Pandoc, Quarto includes:
- Embedding code and output from Python, R, Julia, and JavaScript via integration with Jupyter, Knitr, and Observable.
- A variety of extensions to Pandoc markdown useful for technical writing including cross-references, sub-figures, layout panels, hoverable citations and footnotes, callouts, and more.
- A project system for rendering groups of documents at once, sharing options across documents, and producing aggregate output like websites and books.
- Authoring using a wide variety of editors and notebooks including JupyterLab, RStudio, and VS Code.
- A visual markdown editor that provides a productive writing interface for composing long-form documents.
- https://github.com/quarto-dev/quarto-nvim - provides tools for working on Quarto manuscripts in Neovim
- https://github.com/jmbuhr/quarto-nvim-kickstarter - Companion to https://github.com/quarto-dev/quarto-nvim
Pluto.jl
- Pluto.jl - interactive Julia programming environment. A Pluto notebook is made up of small blocks of Julia code (cells) and together they form a reactive notebook. When you change a variable, Pluto automatically re-runs the cells that refer to it. Cells can even be placed in arbitrary order - intelligent syntax analysis figures out the dependencies between them and takes care of execution. Cells can contain arbitrary Julia code, and you can use external libraries. There are no code rewrites or wrappers, Pluto just looks at your code once before evaluation.
- https://github.com/fonsp/Pluto.jl
SageMath
- SageMath - a free open-source mathematics software system licensed under the GPL. It builds on top of many existing open-source packages: NumPy, SciPy, matplotlib, Sympy, Maxima, GAP, FLINT, R and many more. Access their combined power through a common, Python-based language or directly via interfaces or wrappers. Mission: Creating a viable free open source alternative to Magma, Maple, Mathematica and Matlab.
Iodide
- Iodide - Create, share, collaborate, and reproduce powerful reports and visualizations with tools you already know.
- Iodide: an experimental tool for scientific communication and exploration on the web – Mozilla Hacks - Jupyter
Observable
- Observable - Data visualization platform. Accelerate how you build and share data visualizations by using Observable to turn your most complex data sets into actionable insights.