# Julia from the perspective of a pythonista

**URL:** <https://discourse.julialang.org/t/julia-from-the-perspective-of-a-pythonista/55956>\
**Category:** General Usage\
**Tags:** feedback\
**Created:** [February 24, 2021, 7:45pm UTC](https://discourse.julialang.org/t/julia-from-the-perspective-of-a-pythonista/55956 "2021-02-24T19:45:59Z")\
**Posts on this page:** 20\
**Page:** 5

<div class="post-metadata">

**Author:** ![lmiq](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lmiq/32/18314_2.png) [@lmiq](https://discourse.julialang.org/u/lmiq)\
**Post date:** [February 25, 2021, 7:05pm UTC](https://discourse.julialang.org/t/julia-from-the-perspective-of-a-pythonista/55956/81 "2021-02-25T19:05:04Z")

</div>

> [@ggggggggg](#):
>
> Honestly, I feel like python gets too much credit here.

Python is the most popular language now, and that gives it a huge leverage relative to anything else. And there are efforts (numba, pypy, etc) that are solving many of the performance problems. So I do think that someone with a couple of years of python experience will more and more be comfortable where they are.

If numba and others were mature as they are now when I first started playing with Python, perhaps I would have dedicated more time to it and would not start learning Julia at all (it took me a while, even coming from Fortran). Now I don’t want to leave because simply I like the Julia syntax better, I like multiple-dispatch, the expressiveness, Revise is fantastic, distributing packages to students or everyone else is a piece of cake, and my programs turn out to be faster than what I was able to do with Fortran (which tells more about how crappy I was writing Fortran, perhaps), because writing, optimizing and testing programs in Julia for performance is much more fun. And I was able to learn a lot about computer programming in general by learning Julia.

In the long term it is likely that most of the problems of every language will be solved, languages will be highly inter-operable, and people will chose one or another for the syntax, paradigms, and expressiveness. Those are somewhat subjective, but Julia is in a good position there, in my opinion.

---

<div class="post-metadata">

**Author:** ![dariush-bahrami](https://avatars.discourse-cdn.com/v4/letter/d/f1d935/32.png) [@dariush-bahrami](https://discourse.julialang.org/u/dariush-bahrami)\
**Post date:** [February 25, 2021, 7:07pm UTC](https://discourse.julialang.org/t/julia-from-the-perspective-of-a-pythonista/55956/82 "2021-02-25T19:07:47Z")

</div>

> [@ggggggggg](#):
>
> It is easy to end up with python installs that have serious usability problems. I regularly have 5-20 time to first being able to type in ipython.

no it is not, if you are using linux or macos you have python beforehand so you do not need do anything to type in python. if you are using windows (like me) installing python in windows is very straightforward.  
if you want to use scientific packages just install anaconda and that’s it, you do not need do anything else.

> [@ggggggggg](#):
>
> I regularly (many times in the past few years) have issues where matplotlib is nearly unresponsive or hard freezes my terminal.

I am using matplotlib for 3 years and not, even one, time this not happened to me.

> [@ggggggggg](#):
>
> Honestly, I feel like python gets too much credit here.

Python credit is not something we give it. If Python is so popular, it’s because of the efforts of so many people who have been working for it for thirty years.

---

<div class="post-metadata">

**Author:** ![Mason](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mason/32/2423_2.png) [@Mason](https://discourse.julialang.org/u/Mason)\
**Post date:** [February 25, 2021, 7:11pm UTC](https://discourse.julialang.org/t/julia-from-the-perspective-of-a-pythonista/55956/83 "2021-02-25T19:11:32Z")

</div>

> [@oxinabox](#):
>
> [ModellingToolkit.jl](https://github.com/SciML/ModelingToolkit.jl) is the answer that I am sorry no one gave you.
> 
> Its a bit confusing, because it looks like a highly domain specific tool, especially in its docs.  
> But it is actually a general purpose CAS. Does all of your [simplify](https://mtk.sciml.ai/dev/tutorials/symbolic_functions/#Simplification-and-Substitution-1) and [Symbolic Differentiation](https://mtk.sciml.ai/dev/tutorials/symbolic_functions/#Derivatives-1) that you would want from a CAS.  
> Not just ODE modelling stuff.  
> Soon that confusion will be resolved as the general CAS parts of it is being moved to its own package, leaving ModellingToolkit to be just the domain specific frontend

Just a note in case there’s any confusion caused by this, ModelingToolkit.jl (and Symbolics.jl) are not reliable replacements for SymPy in every context. They are pretty young projects and can simplify far fewer expressions than SymPy (e.g. integration).

However, SymbolicUtils.jl, the library that those are built on at least at the present seems like a very good foundation for building up symbolic ecosystems, but it’ll take time. ModelingToolkit.jl is a great and poweful package that can do some things that SymPy can’t do, but part of the reason it’s docs are so domain specific is that it just doesn’t have the huge wealth of rules available to it that SymPy has and so won’t be able to simplify as many expressions. It’s main advantages are domain specific advantages.

---

<div class="post-metadata">

**Author:** ![lmiq](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lmiq/32/18314_2.png) [@lmiq](https://discourse.julialang.org/u/lmiq)\
**Post date:** [February 25, 2021, 7:11pm UTC](https://discourse.julialang.org/t/julia-from-the-perspective-of-a-pythonista/55956/84 "2021-02-25T19:11:35Z")

</div>

> [@dariush-bahrami](#):
>
> no it is not, if you are using linux or macos you have python beforehand so you do not need do anything to type in python.

Well, that is not completely true. Recently I spent a whole afternoon trying to use PyPy to run a code, because of bizarre issues with configuration files, conda environments, and I don’t know what else. I was quite impressed by how good was PyPy in accelerating the code, but the installation experience was horrible. Of course, for someone that already knows how to solve all the problems or configure things, none of those are actual problems. But that is what Mason said, when you know how to do stuff, the problems stop being problems.

---

<div class="post-metadata">

**Author:** ![carstenbauer](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/carstenbauer/32/4981_2.png) [@carstenbauer](https://discourse.julialang.org/u/carstenbauer)\
**Post date:** [February 25, 2021, 7:13pm UTC](https://discourse.julialang.org/t/julia-from-the-perspective-of-a-pythonista/55956/85 "2021-02-25T19:13:49Z")

</div>

> [@dariush-bahrami](#):
>
> if you are using linux or macos you have python beforehand so you do not need do anything

Isn’t macOS shipping the old python 2.7 by default?

---

<div class="post-metadata">

**Author:** ![dariush-bahrami](https://avatars.discourse-cdn.com/v4/letter/d/f1d935/32.png) [@dariush-bahrami](https://discourse.julialang.org/u/dariush-bahrami)\
**Post date:** [February 25, 2021, 7:16pm UTC](https://discourse.julialang.org/t/julia-from-the-perspective-of-a-pythonista/55956/86 "2021-02-25T19:16:12Z")

</div>

> [@lmiq](#):
>
> Well, that is not completely true. Recently I spent a whole afternoon trying to use PyPy to run a code, because of bizarre issues with configuration files, conda environments, and I don’t know what else.

Official Python implementation is CPython and your problem with pypy, jython, brython, iron-python or micropython does not relate to the subject. this projects are not maintained very well like official CPython even a lot of the C packages, which is a huge share, can not be used in this implementations.

---

<div class="post-metadata">

**Author:** ![DNF](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dnf/32/10191_2.png) [@DNF](https://discourse.julialang.org/u/DNF)\
**Post date:** [February 25, 2021, 7:16pm UTC](https://discourse.julialang.org/t/julia-from-the-perspective-of-a-pythonista/55956/87 "2021-02-25T19:16:42Z")

</div>

> [@dariush-bahrami](#):
>
> just install anaconda and that’s it

I always struggle more with getting Anaconda up than Julia. Julia is super-straightforward. You just prefer what you’re used to.

> [@dariush-bahrami](#):
>
> Python credit is not something we give it.

_Of course_ it is.

---

<div class="post-metadata">

**Author:** ![dariush-bahrami](https://avatars.discourse-cdn.com/v4/letter/d/f1d935/32.png) [@dariush-bahrami](https://discourse.julialang.org/u/dariush-bahrami)\
**Post date:** [February 25, 2021, 7:17pm UTC](https://discourse.julialang.org/t/julia-from-the-perspective-of-a-pythonista/55956/88 "2021-02-25T19:17:10Z")

</div>

> [@carstenbauer](#):
>
> Isn’t macOS shipping the old python 2.7 by default?

yes

---

<div class="post-metadata">

**Author:** ![SadeghPouriyan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sadeghpouriyan/32/22293_2.png) [@SadeghPouriyan](https://discourse.julialang.org/u/SadeghPouriyan)\
**Post date:** [February 25, 2021, 7:18pm UTC](https://discourse.julialang.org/t/julia-from-the-perspective-of-a-pythonista/55956/89 "2021-02-25T19:18:43Z")

</div>

> [@Mason](#):
>
> Once you get familiar with a tool, and you come to understand it’s deficiencies and find workarounds for those deficiences, they stop bothering you as much.

What you said here is the resistance or passiveness of a community against developing new features and enduring the problems they face as discussed before. If a deficiency bothers, it’s better to work on it, try to solve it and share it. This makes open source community powerful against closed source. Also a community includes beginners to experts, anyone can contribute, so if most of a community have this perspective to their problems, their product would someday be obsolete or outdated. What you said in general was not a productive feature for a community.

---

<div class="post-metadata">

**Author:** ![Mason](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mason/32/2423_2.png) [@Mason](https://discourse.julialang.org/u/Mason)\
**Post date:** [February 25, 2021, 7:23pm UTC](https://discourse.julialang.org/t/julia-from-the-perspective-of-a-pythonista/55956/90 "2021-02-25T19:23:01Z")

</div>

> [@SadeghPouriyan](#):
>
> What you said in general was not a productive feature for a community.

I’m not saying it’s a good thing or a bad thing. I’m saying it’s a psychological fact that as we get used to things that are uncomfortable, we cease to recognize them as uncomfortable.

---

<div class="post-metadata">

**Author:** ![dariush-bahrami](https://avatars.discourse-cdn.com/v4/letter/d/f1d935/32.png) [@dariush-bahrami](https://discourse.julialang.org/u/dariush-bahrami)\
**Post date:** [February 25, 2021, 7:23pm UTC](https://discourse.julialang.org/t/julia-from-the-perspective-of-a-pythonista/55956/91 "2021-02-25T19:23:41Z")

</div>

> [@SadeghPouriyan](#):
>
> If a deficiency bothers, it’s better to work on it, try to solve it and share it. This makes open source community powerful against closed source.

I agree, What gives a programming language its character is its community, not its syntax or performance. All problems can be fixed with a healthy community, as Python did.

---

<div class="post-metadata">

**Author:** ![lmiq](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lmiq/32/18314_2.png) [@lmiq](https://discourse.julialang.org/u/lmiq)\
**Post date:** [February 25, 2021, 7:29pm UTC](https://discourse.julialang.org/t/julia-from-the-perspective-of-a-pythonista/55956/92 "2021-02-25T19:29:20Z")

</div>

> [@dariush-bahrami](#):
>
> Official Python implementation is CPython and your problem with pypy, jython, brython, iron-python or micropython does not relate to the subject

My problem was with conda, something about its environments, about my terminal not being configured to it. I felt like trying to use gfortran in Windows. I do not know if Conda is official or not.

But your answer just illustrates the same thing you somewhat implied in previous posts concerning the Julia manual, the Julia IDE, or others: that people that are comfortable with one thing tend to attribute the problems others experience to their fault, third-parties fault, etc. The thing is that you are used to one tool, that is fine, you will be more comfortable with that tool because you know how to deal with the weakness of that tool.

We could start and endless similar discussion on operating systems, text editors, linux distributions, etc.

---

<div class="post-metadata">

**Author:** ![dariush-bahrami](https://avatars.discourse-cdn.com/v4/letter/d/f1d935/32.png) [@dariush-bahrami](https://discourse.julialang.org/u/dariush-bahrami)\
**Post date:** [February 25, 2021, 7:33pm UTC](https://discourse.julialang.org/t/julia-from-the-perspective-of-a-pythonista/55956/93 "2021-02-25T19:33:31Z")

</div>

> [@lmiq](#):
>
> people that are comfortable with one thing tend to attribute the problems others experience to their fault

I am feeling this right now

---

<div class="post-metadata">

**Author:** ![SadeghPouriyan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sadeghpouriyan/32/22293_2.png) [@SadeghPouriyan](https://discourse.julialang.org/u/SadeghPouriyan)\
**Post date:** [February 25, 2021, 7:35pm UTC](https://discourse.julialang.org/t/julia-from-the-perspective-of-a-pythonista/55956/94 "2021-02-25T19:35:30Z")

</div>

> [@Mason](#):
>
> it’s a psychological fact that as we get used to things that are uncomfortable, we cease to recognize them as uncomfortable.

I agree with this. But in this context when you (in general) are free to choose any language to code in and you choose to use to deficiencies, you finally make a passive community where problems won’t handle.  
However, this feature is not true among python community, because they handled lots of problems in years of their activity.

---

<div class="post-metadata">

**Author:** ![carstenbauer](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/carstenbauer/32/4981_2.png) [@carstenbauer](https://discourse.julialang.org/u/carstenbauer)\
**Post date:** [February 25, 2021, 7:35pm UTC](https://discourse.julialang.org/t/julia-from-the-perspective-of-a-pythonista/55956/95 "2021-02-25T19:35:57Z")

</div>

> [@SadeghPouriyan](#):
>
> What you said here is the resistance or passiveness of a community against developing new features and enduring the problems they face as discussed before. If a deficiency bothers, it’s better to work on it, try to solve it and share it. This makes open source community powerful against closed source. Also a community includes beginners to experts, anyone can contribute, so if most of a community have this perspective to their problems, their product would someday be obsolete or outdated. What you said in general was not a productive feature for a community.

IMO, you seem to overly interpret and generalise things here to the Julia community which, correct me if I’m wrong, you don’t know very well. I don’t know anyone in our community that is against developing new features or addressing problems mentioned in this thread (such as time-to-first-plot for example). Quite the contrary. Perhaps you find the current state of the language, in comparison to Python, not good enough. That’s unfortunate. But let me tell you that lots of people, often in there free time, are improving these pain points from Julia version to Julia version and there has been significant progress. Will we ever reach the snappy Python feeling when you power up your IDE? I don’t know. But I don’t like that you just seem to claim that we as a community are passive and don’t care.

---

<div class="post-metadata">

**Author:** ![DNF](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dnf/32/10191_2.png) [@DNF](https://discourse.julialang.org/u/DNF)\
**Post date:** [February 25, 2021, 7:42pm UTC](https://discourse.julialang.org/t/julia-from-the-perspective-of-a-pythonista/55956/96 "2021-02-25T19:42:46Z")

</div>

> [@SadeghPouriyan](#):
>
> However, this feature is not true among python community, because they handled lots of problems in years of their activity.

You can’t be serious. What about it’s slowness and lack of proper multithreading? What about the bad numerical/linear algebra syntax? What about performance and much functionality being limited to builtin types?

This is exactly the sort of weaknesses in python that is dismissed by those who are used to working around it.

This effect concerns all languages to a greater or smaller degree, and certainly python as well.

---

<div class="post-metadata">

**Author:** ![mbauman](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mbauman/32/31082_2.png) [@mbauman](https://discourse.julialang.org/u/mbauman)\
**Post date:** [February 25, 2021, 7:45pm UTC](https://discourse.julialang.org/t/julia-from-the-perspective-of-a-pythonista/55956/97 "2021-02-25T19:45:34Z")

</div>

Let’s slow this down a bit. Discourse recently added a “slow mode;” this seems like a good time to try it out. Please take time to consider your replies as you won’t be able to post for a little while afterwards.

This isn’t a venue for bashing on either Python or Julia or either community. Constructive commentary is always welcome.

---

<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:** [February 25, 2021, 7:46pm UTC](https://discourse.julialang.org/t/julia-from-the-perspective-of-a-pythonista/55956/98 "2021-02-25T19:46:25Z")

</div>

Fully agree with Carsten here - anyone interested in this should just spend a few days working in Julia 1.0 with the then-current version of Atom/Juno, and then move to 1.6RC1 with the current version of Juno or the VSCode extension.

Or if you don’t want to do this just read Lyndon’s recent blog post: [Julia 1.6: what has changed since Julia 1.0?](https://www.oxinabox.net/2021/02/13/Julia-1.6-what-has-changed-since-1.0.html) which gives an excellent overview. In my opinion the rate of improvements is quite stunning, and if anything seems to me as someone who’s been around since 0.3 to be picking up.

But ultimately this discussion is becoming a bit fruitless I fear, it started with some well-made points, many of which are well known to the Julia community (latency, lack of documentation, gaps in the ecosystem) and are actively worked on. It’s always helpful to hear from newcomers because - as has also been established now - experienced users can easily forget about the pain points, but as the blog post above hopefully makes clear, despite (maybe) appearances in this thread, there is active work on all of these fronts.

Finally, generalizations about either the Python or the Julia community, or even the languages themselves, are unlikely to really help anyone. It’s usually best to be clear about one’s own requirements and then evaluate concrete strengths and weaknesses of languages against those.

---

<div class="post-metadata">

**Author:** ![ggggggggg](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ggggggggg/32/265_2.png) [@ggggggggg](https://discourse.julialang.org/u/ggggggggg)\
**Post date:** [February 25, 2021, 8:00pm UTC](https://discourse.julialang.org/t/julia-from-the-perspective-of-a-pythonista/55956/99 "2021-02-25T20:00:34Z")

</div>

> [@dariush-bahrami](#):
>
> no it is not, if you are using linux or macos you have python beforehand so you do not need do anything to type in python

Wow. Didn’t expect to be totally dismissed. Do you think I’m lying? Have you considered that my workflow is much different from yours and I possibly explore a different part of the parameter space?

Also using the package manager to handle python on Linux is a very bad idea I’ve learned. I now only use pip and virtual environments to avoid issues where the Ubuntu provided numpy is out out of date. Do you know that if you ‘pip list’ to see your dependency versions, that doesn’t actually reflect what will be loaded? If you’ve for example installed numpy via pip and apt, it will list the pip version but load the apt version.

Just from the last week I ran into this bug [https://github.com/ipython/ipython/issues/12740](https://github.com/ipython/ipython/issues/12740) and had to manually downgrade Jedi (related to autocomplete) to even start ipython. I’ve had many issues with Jesus, to the point where the first tab autocomplete upon launching ipython can take 20 seconds or so.

I guarantee you there are many warts in the python eco system. It’s still great, but there are many warts and I don’t appreciate being dismissed when your coming in here to point out warts in Julia.

---

<div class="post-metadata">

**Author:** ![SadeghPouriyan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sadeghpouriyan/32/22293_2.png) [@SadeghPouriyan](https://discourse.julialang.org/u/SadeghPouriyan)\
**Post date:** [February 25, 2021, 8:56pm UTC](https://discourse.julialang.org/t/julia-from-the-perspective-of-a-pythonista/55956/100 "2021-02-25T20:56:54Z")

</div>

> [@carstenbauer](#):
>
> But I don’t like that you just seem to claim that we as a community are passive and don’t care.

i was answering to @Mason statement about enduring what bothers and it was in general. It was mininterpreted that i was talking about julia community. I barely know julia developers but all of them were so considering and professional.

[Previous page](https://discourse.julialang.org/t/julia-from-the-perspective-of-a-pythonista/55956.md?page=4)

[Next page](https://discourse.julialang.org/t/julia-from-the-perspective-of-a-pythonista/55956.md?page=6)
