Do you know Julia?
mob604756fb8908 2021-07-20 04:36:37

author ：OSC- Director of the ,OSC- Darwin

source ： Open source in China （oschina2013）

If you need to reprint, please indicate the above information

Julia 1.0 More than a week has passed since the official version was released , Official expression 1.0 Version has accumulated ten years of effort of ambitious programmers .Julia It can be seen as a programming language that integrates the strengths of many experts , At the time of the first public release, the development team had identified their requirements ：

We want an open source language with a free license , At the same time C Speed and Ruby Flexible . We want an identity language , It's like Lisp This is a real macro , Also like Matlab Such simple and familiar mathematical symbols . We want a door like Python It can also be used for general purpose programming , image R Just as easy to count , image Perl Just as naturally for string processing , image Matlab As powerful as linear algebra , image shell A language that's good at gluing programs together . It's easy to learn , But it can make the harsh *** Fall in love with it . We want it to be interactive , It's compileable .

Programming language rankings are available every month , The top 10 common Java,JavaScript,Python,PHP and C＃ etc. , No wonder . But in RedMonk In the language rankings of , Open source programming language Julia Success has caught everyone's attention , Four consecutive quarters of growth （52,40,39,36）, This quarter successfully rose to 36 position .

meanwhile ,Julia The developers of are in Reddit I was involved in AMA（Ask me Anything） Your Q & A activities . Jeff Benzanson,Stefan Karpinski,Alan Edelman,Viral B. Shah and Keno Fischer Answers the community's questions about the language creation , Some questions about growth , And revealed some inside information .

Let's first introduce Julia Participate in this Reddit AMA The main members of the event .

*** Jeff Bezanson(JeffBezanson)**： Programming language enthusiasts , Focus on julia Subtypes of (subtyping)、 Assignment (dispatch) And type inference systems (type inference systems). Give Way Jeff Completed a doctorate at MIT （ About Julia)） It's a relationship with Julia dependent issue(#8839), For the issue The repair of this problem depends on 2015 Year and Julia 0.4 Release together . He was in Alan My last startup Interactive Supercomputing Yes Viral and Alan.

*** Stefan Karpinski(StefanKarpinski)**： Studying computer science and technology at the University of California, Santa Barbara , Use mathematical technology to analyze the network traffic of computer .Stefan yes Julia Authors of most of the contents of the standard library , It's also Julia Package manager Pkg The main designer of each of the three iterations of .

*** Alan Edelman(AlanEdelman)**：Alan Professor of mathematics at MIT and a member of the computer science and artificial intelligence lab , He is also Julia Chief scientist of the company ,Alan Not only like to explain what is Julia, I also like Julia It looks so simple and special .

*** Viral Shah(ViralBShah)**：Viral On 2007 He got a degree at the University of California, Santa Barbara CS Professional doctorate , But then 2009 I came back to India in 1947 （ At the same time, I started to participate in Julia Development of ）, Worked with Nandan Nilekani Together for the Indian government Aadhaar Project work . He has also co authored “ Restart India (Rebooting India)” This book .

*** Keno Fischer(loladiro)**：Keno Participate in Julia I worked as an exchange student at a small high school in eastern Maryland , Continue to develop Julia At the same time , He also studied at Harvard University , And got a master's degree in Physics . He is Julia Compiler key parts and many popular Julia The author of the package .


Q1： For a variety of reasons , It's very difficult to develop a language from scratch , One of them is how to be forced to make design decisions without expecting the results many years later . So in hindsight , What's the best and worst decision you've made ？


As you said , It's very difficult to develop a language from scratch , It's also something we've spent years developing “ experimental ” 0.x One of the main reasons for the release . About a year or so , We will collect experience about what works and doesn't work , And then make major changes —— Sometimes a lot of changes happen . We've been doing this 7 A cycle , Until we think we can really deal with the problem .

The best decision is for Julia Developed multiple dispatch (multiple dispatch), And use multiple dispatch as the programming paradigm . In the first short term , The goal is not clear , Features like multiple methods and external dispatch look cool , But we don't know how powerful it is , And how useful it can be to us .

The worst decision was to make all the text on the terminal bold Thank goodness , We have now solved this problem .


occasionally , I'm surprised that seemingly tiny features can change the way language is used .

At the first JuliaCon After the conference *** In the Marathon ,Tim Holy And I implemented a function called generator (generated functions) The function of （ The stage function at that time staged functions）, It's basically a hook back into the compiler , Allows you to generate code based on the type of parameter .

I want it for my C++ package （ Basically allow julia act as CC++ REPL Role ）, and Tim Hopefully it will speed up the array . Now , It's no longer used for arrays , Because the compiler has been improved enough to make it unnecessary , But it is Cassette.jl The basis of , This is a common nonstandard (non-standard) Implementation framework —— We plan to use it for everything from debugging to automatic differentiation (Automatic Differentiation) All the content of the framework .

Q2： Generally speaking , The thankless work of open source developers has not been appreciated . therefore , First of all, thank you for Julia Efforts paid ！ My question is ： Many years ago , I feel Julia Has a strong fighting capacity —— replace R and Python As a language for data science . But recently I feel that the momentum has slowed down . Do you agree with me , If so , What do you think you need to do to rekindle this passion ？


I'm not going to use it like I used to “ fighting ” To describe us and R or Python The relationship between . We talk to people like PyCall.jl and RCall.jl Such integration , And the use of Jupyter notebooks Develop together , Good compatibility with them . I think each has enough space .

About Data Science , Compared with other digital applications , I admit that Julia It's really a little behind . but 1.0 edition , We've tried to do a lot of underlying work to change it . Use 1.0 edition , Our compiler supports high performance missing values

(, This is a Julia One of the appeals of the data science community , So I also hope users can make full use of it , Because it's a job that costs us a lot .

In terms of the package ecosystem , image Queryverse.jl Such metapackages (meta-packages) Start making sure that all the different functions are available in a unified package . also JuliaDB.jl, If you happen to have a very large data set , Think of it as pandas Distributed core alternatives for . For all that , In my submission Julia Our future is very bright , Especially now that the core language features are stable , We can focus more on the construction of the core ecosystem .

Q3： Do you think in the field of Scientific Computing Julia Can replace Python？

I'm studying machine learning , The main use of Python Development . I tried it a year ago Julia, And I love it , But the problem is that I'm Python A lot of energy and time have been invested in the ecological aspect of the reservoir （ I hate it, too MATLAB Operator for transpose ）. How are you going to persuade developers to switch to Julia Development ？ Are you going to sklearn and pytorch These popular libraries are ported to Julia.


I always remember Steve Martin A word of ：“ You are so good that people have to pay attention to you ”

In terms of ecosystems ,Julia The advantage of , Its library consists of pure Julia To write , Instead of using C perhaps C++. This brings us a lot of convenience . use Julia Flexible development , High performance libraries are very easy . therefore , We will catch up in terms of function .


Many years ago , I don't think many people will believe Julia The ecosystem of the package will develop to its present state . In many fields Julia The ecosystem is doing very well , Such as , Optimize , Differential equations , linear algebra , Numerical analysis, etc . This allows us to catch up with and surpass other ecosystems in a short time .

Julia Already there. OpenMP Style loop multithreading , We are ready to merge a pull request , Will be the task of M：N Mapping to hardware threads , This will enable Julia The thread system of and Go similar , But we will improve its computing performance instead of writing concurrent servers （ But you can do the same ）.

Q4： As a CS Professional students , Can you tell me how to study Julia Instead of any other language that is already widely used in the industry ？ What kind of projects should I use Julia？


What I can tell you is ,julia It gives you access to a wide range of programming languages . You can manipulate bits and bytes with good performance （ And look at the assembly code ）, And then you can do more advanced （ Relative to the bottom of assembly ） Programming , Macro and object-oriented design , They can all be put together . Developers often need to switch programming languages to accomplish different types of tasks ,Julia Programmers use different techniques and styles for different tasks , But keep developing in the same language .


Add up Jeff Bezanson Mentioned “ Look at assembly code ”
Of course , This is true in any compiled language , But in Julia It's very easy ：

You can see ,Julia It's totally different —— I never want to bother to see C Assembly code in , Because it's painful , But I've been watching Julia Assembly code , Because it's very readable , And I know a lot of other code is the same . It's both a learning tool , It's also a way to guide the whole ecosystem to achieve excellent performance .

**Q5：** Is there a plan for machine learning and AI Toolkits create a consistent environment ？ Maybe sklearn for Python such ？ So far ,Julia Our ecosystem is still scattered , Most packages are not compatible Julia 1.0
therefore ,Julia What's your roadmap , For the future of the project , How do you conceive ？


The community is very concerned about Julia Yes AI All reasonable uses of , But the point is not to create another framework , It's about making sure that Julia Can be used for machine learning . It almost boils down to two things ： For automatic differentiation (Automatic Differentiation) Provide good support , It also provides good support for native code generation on hardware accelerators （ Mainly GPU, But there are more and more TPU And all kinds of new things in the pipeline ）.

stay JuliaCon At the conference ,Jarrett Revels Announced Cassette.jl and Capstan.jl. With these packages , We have it now in the whole Julia On the application AD General method of operation .

CUDANative.jl And the related GPU The software package also provides us with GPU Up operation Julia General approach to applications , And the underlying refactoring can be easily positioned TPU And other dedicated processors . With all these projects in 1.0 The version is stable , We think Julia Has become a AI Language that researchers and users should pay attention to .

meanwhile , We have Mike Innes Developed Flux.jl and Deniz Yuret Developed Knet.jl , Both provide important AI function . The goal is to achieve frameless (Framework-less)AI. Just write it directly Julia Code , We can do differential operations on it , Paste it into the optimizer , stay GPU Up operation —— No need for a new programming model （ It's like writing a calculation diagram ）, Or reimplement the framework of all libraries .

Q6： When Julia Can handle matrix operations (matrix operations) when , Do you think people still need to buy Matlab license ？


It depends on what kind of development you're doing right now . According to my observation , More developers are legacy systems or C++ Migration , instead of Matlab. Especially if MatLab If it suits you very well , There's no reason to switch . If you're going to start a new project now ,Julia It might be a good choice , Of course, other languages can also be , for instance Python. But now there is no reason to choose MatLab It's time to start a new project .

Q7： First , I want to thank you for creating Julia Such an amazing project . To me, , It's a great experience to watch how this great language evolves . If it's convenient for you to answer , I have three questions ：

Can you describe your working days ？ How language developers do in their daily lives ？
for example ,Keno Become Julia What does the main compiler developer mean ？

Now? , On the desktop side , of Julia What's your next big decision ？ What do you think of this ？

except Julia outside , What's your favorite programming language ？


1. I don't think our workday is the same as any other developer's , The main difference may be how much communication is done in public . I usually spend the beginning of my day dealing with GitHub issue、 E-mail 、 Communication and so on . after , I usually have a long-term ongoing project （ The optimizer has been redesigned for most of the past six months to handle new iterative protocols , And support for new missing data ）, And some high priority errors that I need to deal with . Then there are all kinds of calls and meetings . for example , Thursday every week , We all have a process called "triage" The conference call , We're going to talk about the most urgent items we need to deal with here 、 What influenced the release of the new version , And often try to make decisions about things that are in trouble . These phone calls can be very intense （ I tried it for more than six hours ）.

2. There are a lot of design decisions to make every day , But I think the biggest area that's coming is multithreading . We are adding support for multithreaded scheduling co routines , And make the most of it , So we have to figure out all aspects of parallelism, memory and execution model .

3. I don't really have a favorite programming language , I think we can learn from each other in several languages . for example , I really want to build a limited memory ownership model （ Allow more active optimization in all cases ） Do something , and Rust Developers have obviously done a lot of thinking there . Of course, we can't completely copy their design , Because our users have different expectations , But I still hope we can do something .

Q8： say something Julia v2.0 Development plan of .

Keno Fischer：

v2.0 Will optimize the multithreading model , There will also be some amazing changes in analysis and debugging . besides ,v2.0 The main focus will be on the software packages needed to support the core language .Julia v2.0 The exact release date has yet to be determined , The approximate time will be arranged in 2020-2022 Between .

Q9： Why name a language Julia？

Viral B Shah：

Julia come from Jeff Bezanson What I'm talking about is an older project , And there's no meaning behind it


1.0 When it's released, the tweets we tweet will tell you everything .Julia From the United States, a famous chef and host Julia Child Name , We go through Julia Bring excellent programming technology to the majority of users , Just like she brings excellent cooking skills to the audience .

Please go to Reddit see ：

Please bring the original link to reprint ,thank
Similar articles