# Is it possible to use different programming languages within a single Pluto.jl notebook?

**URL:** <https://discourse.julialang.org/t/is-it-possible-to-use-different-programming-languages-within-a-single-pluto-jl-notebook/79008>\
**Category:** Pluto\
**Tags:** question\
**Created:** [April 4, 2022, 2:40pm UTC](https://discourse.julialang.org/t/is-it-possible-to-use-different-programming-languages-within-a-single-pluto-jl-notebook/79008 "2022-04-04T14:40:06Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Hashir\_Omer](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/hashir_omer/32/35193_2.png) [@Hashir\_Omer](https://discourse.julialang.org/u/Hashir_Omer)\
**Post date:** [April 4, 2022, 2:40pm UTC](https://discourse.julialang.org/t/is-it-possible-to-use-different-programming-languages-within-a-single-pluto-jl-notebook/79008/1 "2022-04-04T14:40:06Z")

</div>

I recently discovered Pluto and I prefer working with it over Jupyter notebooks if I am only using julia. However, sometimes I have to use Python as well for some of the packages. The [SOS polyglot](https://vatlab.github.io/sos-docs/index.html#content) notebook is an extension of jupyter notebooks which allows just that, different cells can execute commands written in multiple languages which I have found to be extremely productive because I can choose the right tool for the job without context switching.

Is it something that is possible with Pluto notebooks or on the roadmap?

---

<div class="post-metadata">

**Author:** ![Oscar\_Smith](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oscar_smith/32/25343_2.png) [@Oscar\_Smith](https://discourse.julialang.org/u/Oscar_Smith)\
**Post date:** [April 4, 2022, 3:10pm UTC](https://discourse.julialang.org/t/is-it-possible-to-use-different-programming-languages-within-a-single-pluto-jl-notebook/79008/2 "2022-04-04T15:10:16Z")

</div>

It isn’t. The key feature of Pluto (dependency resolution) relies on the way Julia allows for easy introspection.

---

<div class="post-metadata">

**Author:** ![nilshg](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nilshg/32/2283_2.png) [@nilshg](https://discourse.julialang.org/u/nilshg)\
**Post date:** [April 4, 2022, 4:49pm UTC](https://discourse.julialang.org/t/is-it-possible-to-use-different-programming-languages-within-a-single-pluto-jl-notebook/79008/3 "2022-04-04T16:49:27Z")

</div>

You can of course use python and R through PyCall (or PythonCall) and RCall, although sometimes care needs to be taken to ensure they don’t break reactivity. I specifically recall RCall macros not working some time ago, but it think this has since been fixed.

---

<div class="post-metadata">

**Author:** ![Pangoraw](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pangoraw/32/24719_2.png) [@Pangoraw](https://discourse.julialang.org/u/Pangoraw)\
**Post date:** [April 4, 2022, 7:34pm UTC](https://discourse.julialang.org/t/is-it-possible-to-use-different-programming-languages-within-a-single-pluto-jl-notebook/79008/4 "2022-04-04T19:34:54Z")

</div>

Pluto should be able to use the extensive language interoperability of Julia (altough this does not always work smoothly as @nilshg said). With some work it is also possible to make other language reactive by performing a syntactic analysis (see the [Reactive Python](https://fonsp-disorganised-mess.netlify.app/reactive%20python.html) notebook from Fons and a demo [here](https://julialang.zulipchat.com/#narrow/stream/257776-Pluto.2Ejl-development/topic/Reactive.20python!)). The biggest issue then becomes to find libraries where the reactive programming paradigm applies (no mutations allowed) and python may not be the best language for this.
