MIT a publié le plus fort dans l'histoire du langage de programmation informatique scientifique? équipe fondatrice exclusive pour répondre à 11 questions

Plus tôt ce mois-ci, avec la sortie de la version 1.0 de la confirmation du message, un nommé « Julia » langage de programmation dynamique haute performance maximisé cercle d'amis et de la nuit GitHub.

Carte | Julia Logo (Source: site officiel de Julia)

La raison pour laquelle la nouvelle version du langage de programmation de la raison d'inquiétude à travers le monde de l'intelligence artificielle de qui est le plus important La vitesse de la langue C, Ruby flexible et polyvalent ensemble sans précédent de Python, support de traitement parallèle, facile à apprendre et à utiliser, en particulier pour les calculs scientifiques et d'ingénierie.

Plus tôt, sur la liste des langages de programmation TOIBE 8 Janvier de cette année, Julia a rapidement grimpé à Le premier 50 . Selon l'équipe de développement de la déclaration Julia, sept algorithme de test de base, Julia Python 20 fois plus rapide que, 100 fois plus rapide que R, Matlab 93 fois plus rapide que . Il y a de plus en plus de gens croient, Julia va devenir le futur langage de programmation grand public.

Figure Shu au cours des trois derniers mois, Julia a augmenté trois places dans le classement RedMonk, classé 36 (Source: RedMonk)

La montée en puissance de Julia, avec le goulot d'étranglement actuel dans le développement de l'expérience du langage de programmation est étroitement liée à: intelligence artificielle, en particulier avec la montée de l'apprentissage de la machine, dans le monde réel calcul des exigences de vitesse et de performance sont devenus plus sophistiqués, langages de programmation en raison de leurs propres limites difficiles en prenant en compte, par exemple, at-il dit, Avant Julia est née, beaucoup de gens ont dû composer avec les mêmes plusieurs fois de programme : Le premier à utiliser ce langage Python ou R pour développer un algorithme et de tracer ces langues, utilisez C ++ ou Java réécrire le programme pour améliorer les performances de traitement informatique.

Pause à travers ce goulot d'étranglement ne fait aucun doute, il y a deux directions, l'une est optimisée en fonction des langages de programmation existants, le second est « la révolution à la fin » - spécialement mis au point une nouvelle langue. Ces derniers coûts naturellement plus élevés.

Les développeurs ont choisi Julia évidemment cette dernière, mais leurs ambitions ne sont pas petites: Julia est spécialement conçu pour les mathématiques de base en cours d'exécution rapide, ce qui est le plus de données scientifiques de base, telles que l'algèbre linéaire et l'expression de la matrice.

Sa naissance remonte à 2009. À ce moment-là, il est basé sur les langages de programmation existants « sous », Massachusetts Institute of Technology a lancé un nouveau programme de développement du langage de programmation, à 2012, lorsque le plan des résultats initiaux, qui est maintenant Julia.

Carte | Julia Massachusetts Institute of Technology Laboratory (Source: site officiel laboratoire Julia)

Plus précisément, Julia projet par le professeur du MIT Alan Edelman  Leadership, le créateur de plusieurs autres clés, y compris Jeff Bezanson ( « Julia » tire son nom d'un ancien projet Bezanson est), Stefan Karpinski et Viral Shah . Ses résultats les plus critiques de développement proviennent de laboratoire Julia au MIT, il y a plus de 700 bénévoles ont participé à la version 1.0 de la production.

« Nous voulions développer un langage de programmation open source, nous espérons que cette langue a le même taux de langage C, la même flexibilité de R linguistique, comme il y a du même (homoiconicité), il existe des caractéristiques qui ont de vraies langues macro comme Lisp, mais il y a trop facile à comprendre, comme Matlab, est la notation mathématique familière. nous voulons qu'il soit aussi facile à utiliser comme Python, comme la langue de R appliquée aux statistiques, de même que la gestion des chaînes Perl, le traitement de l'algèbre linéaire aussi puissant que Matlab, comme commande DOS comme de bonnes procédures de liaison. cela semble regarder facile à apprendre, mais qui veulent faire des pirates heureux de répondre à c'est pas une question simple. nous voulons que ce soit interactif et peut être compilé « dans le » pourquoi nous avons créé Julia " cet article, l'équipe Julia donc ils ont développé pour expliquer la langue de l'intention originale.

Figure Shu virale Shah (Source: DT Jun)

Viral Shah avait également dit: « Si vous êtes un mathématicien, scientifique ou un ingénieur, vous pouvez choisir une langue de taux rapide, tel que C ++ ou Java, ou tout et facile à apprendre la langue, comme Matlab, R, ou Python, nous avons donc créé cette rapide et pratique la langue Julia. « maintenant, il est devenu le chef de la direction de la société Julia Computing, la société est engagée à aider d'autres entreprises utilisent la langue Julia.

Bien sûr, Julia arrivée, en plus de gens se sentent le développement rapide de l'industrie informatique, l'innovation rapide, il a également soulevé une nouvelle question à tout le monde: Je ne veux vraiment pas apprendre cette nouvelle langue . Cette question sera très important, en tant que co-fondateur de Paul Graham Y-Combinator dit: « Quand vous pouvez choisir le langage de programmation que vous voulez utiliser, ne pas utiliser la plupart de ce genre serait une erreur. »

récemment, DT juin interview exclusive avec les membres des quatre mentionnés ci-dessus fondateurs équipe de développement Julia . Julia peut devenir un langage de programmation grand public, et que ce soit l'apprentissage vaut, répondre à de nombreuses questions sur Julia, peut-être vous de l'équipe fondatrice trouvé la réponse.

Figure Shu Alan Edelman (Source: Massachusetts Institute of Technology site officiel)

Tout d'abord, il semble que l'équipe, la langue de base de l'innovation Julia ce qui est?

Basé sur le développement d'une langue envoi multiple (Multiple expédition). Dans la première période, nous ne sommes pas à 100 pour cent sûr comment le faire. Multi-méthode et apparence de planification externes cool, mais nous ne savons pas combien utile et puissant qu'ils ont.

L'accent sur les caractéristiques de répartition multiples a changé la façon dont nous programmation la programmation de langue . C'est une chose très étrange, parce que quand les gens demandent: « Qu'est-ce qui est si grande expédition multiple? » Est-ce difficile de répondre a spécifiquement tel ou tel endroit, mais une fois que vous vous habituez à cette fonction, il est difficile de revenir.

En plus de haute performance, Julia il y a quelques traits distinctifs. Par exemple, Julia peut accéder à une gamme particulièrement large de la pile de programmation . Vous pouvez utiliser avec de bons bits de performances et d'octets (voir le code assembleur), mais peut aussi gérer des fonctions d'ordre supérieur, conception de macros, programmation orientée objet, qui peuvent tous être condensé bien ensemble. Ces couches peuvent être facilement décollée . Pour accomplir différentes tâches, les gens ont souvent besoin de convertir la langue. Julia programmeur différentes techniques et styles pour des tâches différentes peuvent être utilisées, mais il peut utiliser la même langue (Julia).

En second lieu, le processus de développement de Julia, dans quelle partie du plus d'énergie? Quelle est la norme à suivre?

Conception et figure sur le fonctionnement interne toujours plus de temps.  

La clé est de développer une bonne conception de langage de programmation un ensemble de simples primitives puissantes peuvent bien fonctionner, la définition de ces primitives la plupart des fonctionnalités requises. Au début du développement du langage, en ajoutant beaucoup de la structure « intégrée » semble être une bonne idée, mais lors de l'optimisation du compilateur écrivains, ces structures peut conduire à beaucoup de problèmes. La langue écrite est une bibliothèque standard de langage lui-même est propice à la performance (à long terme), peut également fournir une précieuse expérience dans l'utilisation de la langue, et ces expériences peuvent être réinjectée dans le langage de conception. Lorsque trop lentement lorsqu'une fonction est exécutée, nous verrons un chèque qui peut améliorer le compilateur de faire fonctionner courir plus vite. Donc, encore une fois, nous ne pouvons pas seulement améliorer cette fonction, vous pouvez résoudre une série de problèmes similaires.

Trois, Julia exactement comment atteindre en même temps avec une simple vitesse d'exécution, langage C, Python, et R comme la langue des bibliothèques d'analyse des données de soutien?

Comme la question précédente, La simplicité provient d'un petit nombre de primitives soigneusement sélectionnés. collecte des ordures automatique (un des outils de gestion de mémoire de l'ordinateur) sur la disponibilité de la langue est aussi une grande contribution Ceci est dans le domaine de langage de programmation est le consensus depuis longtemps.

Pour améliorer la vitesse, nous avons étudié tous les facteurs qui ralentissent les langues les plus dynamiques, et d'examiner soigneusement les facteurs qui peuvent être éliminés . Par exemple, les langages dynamiques permettent généralement des champs d'objets et éléments du tableau de tout type de la valeur stockée. Cependant, des études montrent que même dans ces langues, des tableaux homogènes et champ a le type constant est également très courant. Par conséquent, Julia a profité de cette conception est plus facile d'ajouter des restrictions sur le type et le jeu par défaut de type d'utilisation unifié dans toutes les situations possibles.

Quatre, Julia actuellement déclarée comme langue rapide et C. Mais si si vite dans tous les cas? Ou quand seulement le traitement des données et C aussi vite? Et comment les langues compatibles grand public actuels tels que Python, C, etc.?  

Oui, pour la plupart des cas d'utilisation, Julia peut et aussi vite que C . Cependant, des précautions doivent être prises pour éviter l'allocation de mémoire excessive, et de veiller à ce que le code est le type de stable. Julia offre une variété d'outils, les programmeurs ne ont pas besoin de dépenser trop d'effort que vous pouvez écrire aussi vite que la performance du code C.

L'appel C et Fortran sont locaux à Julia - même pas besoin de fournir compilateur. Vous pouvez exécuter le code suivant pour terminer l'appel:

julia >  ccall (: horloge, Int32, ())

2539697

De même, Cxx.jl Conversation téléphonique bibliothèques C, modèles, etc. très facilement. Nous pouvons appeler l'interface intégrée Python et R. à travers PyCall.jl et RCall.jl tels À son tour, Python et R pour appeler la langue Julia en appelant package PyJulia et RJulia. JavaCall.jl permet Julia d'appeler Java. Nous avons aussi un endroit propre et claire de l'interface de programmation intégrée, de sorte que toute autre langue est très facile à Invoke Julia.

Cinquièmement, les applications pratiques, Julia a été utilisé pour les véhicules autonomes, les robots et les imprimantes 3D, en plus largement utilisé dans la précision médicale, la réalité augmentée, la génomique et la gestion des risques. langue Alors Julia lui-même pour quelles applications? Y at-il une pratique d'équipe particulièrement optimiste quant à la direction de leur propre? Pourquoi?  

Nous sommes engagés à la construction d'une langue commune, la langue a une très bonne abstraction pour toutes les formes de calculs mathématiques. Nous voyons donc une variété d'applications de prospérer que de voir un paraphe dans toute application particulière nous fait enthousiasmés.

(Source: site officiel de Julia)

Sixième, Julia est actuellement la langue principale de l'informatique scientifique, y compris les développeurs qui téléchargent différents services de Google, Facebook et le Département américain de l'énergie. Avenir, Julia si elle étendra sa population cible pour une programmation plus orientée objet? Libéré après 1.0, il n'y a pas de gain de certains utilisateurs ou des commentaires?  

Le public cible de Julia au cours des dernières années, doublant tous les neuf mois. Nous pensons que l'envoi multiple, fonctions génériques et les caractéristiques linguistiques spécialisées pour la langue de l'utilisateur est soigneusement conçu.

Julia sur GitHub a reçu des contributions de plus de 700 développeurs. De nombreuses personnes ont contribué plus de 2000 paquets. Nous estimons qu'il ya environ 30 développeurs de base de la langue Julia lui-même contribué beaucoup de travail.

En ce qui concerne l'utilisateur, Julia téléchargements de plus de deux millions de fois. Comme un langage open source, il est difficile de convertir ce nombre au nombre d'utilisateurs réels. En outre, Julia Computing, nous voyons les utilisateurs de 700 universités et plus de 1000 entreprises dans le téléchargement ou l'utilisation Julia. Julia1.0 communauté linguistique très populaire poursuivra la stabilité à long terme Tout le monde est excité à ce sujet. Nous recevons aussi beaucoup de commentaires, il y a Chinois ont aussi en anglais. Pour 1.0, Avant d'envisager l'ajout de nouvelles fonctionnalités, nous allons nous concentrer sur la stabilité à long terme.

Sept équipes actuellement sur les plans de Julia pour l'application du projet commercial?  

Julia créateur de tous réunis ensemble pour former suivant le modèle open source entreprise Julia Computing. Les produits de Julia Computing ont été des centaines de milliers d'utilisateurs à télécharger, JuliaBox est largement utilisé dans l'enseignement de Julia.

De plus, Julia Computing fournit aux développeurs et soutien à la production pour de nombreuses entreprises, et de fournir une formation et des conseils aux utilisateurs du monde entier.

Huit, avec des projets d'écriture Julia, qui vous font sentir plus impressionné?

Le plus impressionnant ensemble sont les suivantes:

Pour les études d'optimisation mathématique JuMP:

https://github.com/JuliaOpt/JuMP.jl

Pour les équations différentielles DiffEq liées à:

Flux pour l'apprentissage de la machine:

Une autre Knet pour l'apprentissage de la machine (profondeur d'apprentissage) de:

https://github.com/denizyuret/Knet.jl

De plus, ces forfaits sont également utiles:

paquet Revise, vraiment génial, Tim Saint est un génie! :

https://github.com/timholy/Revise.jl

BenchmarkTools, un ensemble de test liés à la performance: https: //github.com/JuliaCI/BenchmarkTools.jl

package StaticArrays, ce qui est probablement une bibliothèque standard: https: //github.com/JuliaArrays/StaticArrays.jl

package UnicodePlots, la seule installation fiable dessin partout paquet: https: //github.com/Evizero/UnicodePlots.jl

Figure Shu Julia équipe (Source: vccircle)

Neuf, Julia causant des développeurs en Chine dans beaucoup de discussions, mais certaines personnes pensent Julia elle-même pas de gros efforts de promotion, l'entreprise peut avoir un disque Julia sera utilisé sur des projets commerciaux, cet argument pour voir comment l'équipe ?  

Julia est une langue « populaire » est déterminé par le développement et vraiment comme la personne qui l'utilise développé. Peut-être à l'avenir quelques-unes des plus grandes entreprises vont l'utiliser - mais nous pensons que ce n'est pas une condition nécessaire à la réussite. Python, PHP, Perl, Ruby, Lua et d'autres langues ne sont pas motivées par une organisation. Au moins pour l'instant, il est développé par la communauté, qui est la raison pour laquelle il peut attirer les utilisateurs.

Dix, grande ambition de Julia, veulent intégrer les avantages de plusieurs langues, la pénurie contournée de places dans ces langues. Mais si nous pouvons apprendre une langue, mais aussi à son environnement d'apprentissage, l'environnement du marché et des scénarios d'application spécifiques, l'équipe actuelle croit Julia dans ces domaines existent aussi quelles sont les faiblesses? Quel est le plus grand défi de cette étape? La prochaine version du plan qui donnera la priorité à la résolution du problème?  

Récemment, nous avons été dans le sens de nos efforts est d'améliorer l'efficacité du compilateur.  

Développer une très abstraite et le calendrier de travail peut rapide de la langue sur une variété de matériel a mûri. Nous allons nous concentrer sur la stabilité des caractéristiques actuelles, mais aussi ajouté de nouvelles fonctionnalités.

Caractéristiques d'une considération principale est multi-thread. Bien que nous ayons déjà des capacités multi-threading aujourd'hui, mais il ne peut être combiné dans une bibliothèque et chaque code utilisateur peut être de manière parallèle (il y a très peu de langues cas). Intel Kiran Pamnany a émis une demande de tirage (demande de traction), nécessaire pour atteindre cet objectif. Nous allons aussi concentrer notre soutien GPU, Google TPU et une variété de nouveaux matériels. De plus, à l'avenir il y aura un grand nombre de personnes sont concernées sur les outils de développement.

XI équipe la langue de l'informatique scientifique le plus idéal est quoi?

Nous avons encore beaucoup de choses encore à faire. En termes de matériel, Les travaux sur le plus grand supercalculateur, le travail sur le GPU pour les applications scientifiques à grande échelle est essentielle. applications d'apprentissage de la machine sont le moteur du développement du matériel, ce qui apportera de nombreux défis pour les développeurs de logiciels. Fonctionne sur les processeurs ARM et périphériques embarqués pour le déploiement Julia est cruciale, parce que les algorithmes d'apprentissage machine sur l'Internet des applications Les choses sont de plus en plus commun.

Multithreading est actuellement un problème non résolu, il peut être une combinaison de cas d'utilisation scientifique toujours pas satisfaisante. Nous espérons que dans un avenir proche pour résoudre le problème, basé sur le compilateur Cilk de conception.

fournisseur électricité microcanal receveur global a été bloqué, et le service à la clientèle pour répondre aux piraté malveillants
Précédent
Ligue des Champions - Benzema a rompu le monde ardillon banc vague Bell + longue portée Real Madrid 3-1 Liverpool a remporté trois fois de suite
Prochain
La compression temporelle MIT caméras optiques ultra-rapides, des images sortent des pousses illimitées différentes de la même profondeur de scène
Shu Site historique | Hanyuan Huang Fu hôtel de ville, la ville de la double arche de neuf hsiang légendaire avec le nom de famille de généraux Xiao Ming septième jour
Atlas | « ou Yi Hai ans « timbres spéciaux émis
masse Salah tir Jiangong Van Dyck a cassé Dingsheng Ju, Liverpool 2-0 Wolves
Royce Sancho a battu deux passes Goetze, le Borussia a remporté le titre 2-1 Dott demi
Tensorflow tutoriel simple,
Wuhan City en 2019 sera plus de choses privées, au nom des membres attendent avec impatience les pouces vers le haut
Deux sessions du Congrès de l'Atlas Shu populaire municipal ont écouté attentivement le rapport de travail du gouvernement municipal
Epic vengeance! Les ingénieurs font pour punir le voleur boîte de vengeance Express avec la poudre flash et pulvérisation pue
Partager la charge industrie du trésor de se développer et devenir: société d'investissement européenne a poursuivi Chen pour les appels en contrefaçon de brevet
2 m thon géant lavé sur la plage d'un homme gros plomb spectateurs
Quanergy a rencontré des difficultés: les véhicules autonomes développement des affaires comme prévu