8
votes

Qu'est-ce que c'est dans la bibliothèque standard de Java que Python manque?

J'entends que la bibliothèque standard Java est plus grande que celle de Python. Cela me rend curieux de ce qui manque à Python?


6 commentaires

Corba est probablement la chose la plus inutile qui fait partie de la bibliothèque standard de Java - personne ne l'utilise plus, mais il est trop tard pour la supprimer à cause des normes de compatibilité en retard de Java. Cela aurait été préférable d'être une bibliothèque externe. C'est l'org.omg. * Forfaits dans Java.sun.com /javase/6/docs/api/overview-summary.html


@Tshepang OMG pourrait supporter Oh mon Dieu! ou groupe de gestion de l'objet: P Quoi qu'il en soit, si je me souviens bien, Java dépend toujours d'un courtier d'objet externe, non?


@Esko, j'ai effectivement travaillé sur de nouvelles choses de Corba, pas si longtemps (2 ans ou plus) et je suis très heureux que cela soit encore inclus. Bien que cela ne vous dérange pas si c'était un paquet supplémentaire optionnel (mais maintenu).


@fortran ce n'est pas si étrange. Personne dans son esprit ou son esprit n'utiliserait Corba pour la communication inter-java. Vous l'utiliseriez que s'il n'y avait absolument aucun autre choix n'importe où n'importe où.


@fortran j'ai aussi une mémoire faible, que Java interne utilise Corba pour quelque chose, mais je ne suis pas totalement sûr de cela. BTW, voici un bel article sur pourquoi CORBA a échoué: file d'attente.acm.org/detail. CFM? ID = 1142044


@Esko Nice article, j'ai déjà eu l'intuition de certaines des causes était liée à la complexité :-)


4 Réponses :


4
votes

Python vient aussi avec des piles incluses ... Le seul endroit où j'ai senti Python manquant est une bonne boîte à outils de Gui (non, TK ne se compare pas à Swing XD).


1 commentaires

@Matt, pygtk ne fait pas partie de STDLIB.



3
votes

Python manque une implémentation XML robuste (avec support complet XSLT et XPath). Le Python STDLIB compte quelques implémentations décentes pour travailler avec XML (DOM Parser, Sax Parser et un générateur d'arbres appelé Elementtree), mais plus avancé XML nécessite une bibliothèque tierce partie. J'ai utilisé 4xslt et reportez-vous maintenant à LXML lorsque j'ai besoin de faire du vrai travail XML en Python.


2 commentaires

Je serais d'accord avec cela et ajoutez cela dans une note connexe que la mise en œuvre du savon n'est pas forte. Cependant, il existe de bons forfaits tiers (gratuits) qui ramassent le relais. Et souvent ceux qui finissent dans le cadre de la norme Lib.


Le dom analyseur (si vous voulez dire xml.dom.dom.minidom ) est pas bon du tout. Si vous voulez analyser un document Elementtree est la seule chose décente dans la bibliothèque standard.



8
votes

Le seul défaut de python IMHO est que Python manque une véritable méthode canonique de déploiement. (Oui, il y a de bons là-bas, mais rien qui est vraiment solide de roche).

qui peut entraver son adoption dans certains environnements d'entreprise.


1 commentaires

L'emballage et le déploiement ont des besoins énormes d'aide. Il y en a avec une vision en avant - espérons qu'ils réussissent.



6
votes

Java fournit de nombreuses implémentations variées d'interfaces pour les types de base. Java a une arrayliste et une liste à double liaison et une liste à double liaison, tandis que Python a une liste. Java inclut plusieurs implémentations de carte telles que Treemap ou LinkedHashMap , tandis que Python colle généralement à la mise en œuvre unique de la DIC. Un Dictionnaire commandé a été proposé fait maintenant partie de Python 3.1, mais en général, Java a un ensemble plus riche de collections et de classes de base.

En défense de Python, toutefois, la nécessité de classes de base et d'interfaces plus rigoureusement définies est beaucoup moins nécessaire avec l'approche dactylographiée dynamiquement (où les interfaces sont souvent acceptées implicitement).


6 commentaires

N'oubliez pas non plus les collections de la concurrence de la concurrence de Java dans le paquet Java.Util.ContCurrent.


Je dirais que d'avoir une seule mise en œuvre des types de collecte de base est un effet secondaire de les supporter comme des types intégrés avec sucre de syntaxe autour ... Cordialement, je préfère avoir juste un type de dictionnaire et pouvoir utiliser {} pour le constructeur que d'avoir trois ou quatre types et d'utiliser une syntaxe plus verbeuse (même pour les listes).


Il existe également des langues dont la syntaxe est tellement flexible, que les types de bibliothèques ressemblent s'ils étaient des types intégrés. Par exemple Scala.


Avec l'introduction de Classes de base abstraites De nombreuses structures de données ont quelque chose de similaire à une interface formelle. Généralement, Python n'a pas ajouté des structures de données basées sur la théorie des algorithmes, mais a tenté de rendre les structures de données de base aussi bonnes que possible, puis a ajouté lentement plus de structures pour les cas où les structures existantes ne fonctionnent vraiment pas, en fonction de l'idée qu'un puits - La structure générale tant étendue bat souvent une structure plus spécifique moins utilisée.


@fortran, c'est bien tant qu'elles sont de la manière dont il est implémenté se produit de coïncider avec votre cas d'utilisation exacte. Certes, beaucoup de temps, cela n'a pas d'importance - mais lorsque vous avez affaire à (dis) énormes listes, il est agréable de pouvoir choisir la mise en œuvre plus efficace pour votre cas d'utilisation (ajout / énumérer / rechercher / etc.)


@Basic j'ai parlé de la commodité d'avoir une syntaxe littérale pour les constructeurs, mais la beauté de la typing de canard est que vous pouvez toujours utiliser différentes implémentations de listes et de dictionnaires tant qu'ils prennent en charge les méthodes Get / Set et Itération et elles seront ( ou devrait être si le code qui les utilise ne fait pas de chèques de type fort) indiscernables :)