Quelle est la différence entre C # et Java? Pourquoi le C # n'est-il pas utilisé pour la programmation machine?


Réponse 1:

La différence entre Java et C # est Calamansi / Calamondin et un Orange. Ok c'est génial alors qu'est-ce que cela signifie réellement?

Eh bien, cela signifie que les deux langages appartiennent à la même famille, c'est-à-dire que les deux sont des langages fonctionnels orientés objet et impurs, mais il y a encore suffisamment de différences entre eux qui les distinguent.

Commençons donc par le début:

  1. C # est né avec l'idée de développer le C ++ déjà génial pour Microsoft. Alors que Java a été créé avec l'idée d'atteindre toutes sortes d'appareils, c'est-à-dire la portabilité.C # est un langage plus complexe que Java.Des concepts modifiés et nouveaux sont présents en C # par rapport à Java.Certains exemples sont les délégués, la surcharge des opérateurs et les propriétés (getters & setters).

Donc, même après tant de raisons, le C # n'est pas utilisé dans le Machine Learning. Tout d'abord, il est beaucoup plus spécifique pour les plates-formes Microsoft, mais il a peu d'algorithmes / bibliothèques d'apprentissage automatique. Mais le fait est qu'il n'est pas utilisé principalement parce qu'il est difficile pour les débutants de l'utiliser également.

Pourquoi MATLAB, Python et R sont-ils plus utilisés?

MATLAB est excellent pour représenter et travailler avec des matrices. En tant que tel, je pense que c'est un excellent langage ou une plate-forme à utiliser pour grimper dans l'algèbre linéaire d'une méthode donnée. Je pense que cela convient à l'apprentissage des algorithmes à la fois superficiellement la première fois et profondément lorsque vous essayez de comprendre quelque chose ou d'approfondir la méthode. Par exemple, il est populaire dans les cours universitaires pour débutants.

R est un cheval de bataille pour l'analyse statistique et par extension l'apprentissage automatique. On parle beaucoup de la courbe d'apprentissage, je n'ai pas vraiment vu le problème. C'est la plate-forme à utiliser pour comprendre et explorer vos données à l'aide de méthodes statistiques et de graphiques. Il dispose d'un nombre énorme d'algorithmes d'apprentissage automatique et d'implémentations avancées également écrites par les développeurs de l'algorithme.

Même si Python est un langage de programmation et de script plus polyvalent, il gagne en popularité parmi les scientifiques des données et les ingénieurs de Machine Learning. Contrairement à R ou MATLAB, les idiomes de traitement des données et de calcul scientifique ne sont pas intégrés dans le langage lui-même, mais les bibliothèques comme NumPy, SciPy et Pandas offrent des fonctionnalités équivalentes dans une syntaxe sans doute plus accessible. Les bibliothèques d'apprentissage automatique spécialisées telles que scikit-learn, Theano et TensorFlow vous permettent de former une variété de modèles d'apprentissage automatique, en utilisant potentiellement une infrastructure informatique distribuée. La plupart du code critique pour ces bibliothèques est toujours généralement écrit en C / C ++ ou même Fortran, les packages Python servant de wrappers ou d'API (il en va de même pour de nombreux packages R). Mais le plus grand avantage est que l'écosystème Python facilite vraiment la mise en place d'un produit ou service de bout en bout complexe, comme une application Web utilisant Django ou Flask, ou une application de bureau utilisant PyQt, ou même un agent robotique autonome en utilisant ROS.

B ... B ... Mais Java et la famille C sont-ils utilisés dans de telles choses?

Java est le langage de choix de l'ingénieur logiciel en raison de sa mise en œuvre propre et cohérente de la programmation orientée objet et de l'indépendance de la plate-forme à l'aide des JVM. Il sacrifie la brièveté et la flexibilité pour la clarté et la fiabilité, ce qui le rend populaire pour la mise en œuvre de systèmes logiciels d'entreprise critiques. Afin de maintenir ce même niveau de fiabilité et d'éviter d'écrire des interfaces désordonnées, les entreprises qui utilisent Java peuvent préférer s'y tenir pour leurs besoins d'apprentissage automatique. Outre les bibliothèques et les outils utiles pour l'analyse et le prototypage (par exemple Weka), il existe d'excellentes options pour créer des systèmes d'apprentissage distribués à grande échelle en Java, tels que Spark + MLlib, Mahout, H2O et Deeplearning4j. Ces bibliothèques / frameworks fonctionnent bien avec les systèmes de traitement et de stockage de données standard de l'industrie tels que Hadoop / HDFS, ce qui les rend plus faciles à intégrer.

C / C ++ est idéal pour les logiciels de bas niveau tels que les composants du système d'exploitation et les protocoles de mise en réseau où la vitesse de calcul et l'efficacité de la mémoire sont extrêmement critiques. Pour ces mêmes raisons, c'est également un choix populaire pour implémenter les tripes des procédures de Machine Learning. Cependant, son manque d'abstractions idiomatiques pour le traitement des données et les frais supplémentaires pour la gestion de la mémoire peuvent le rendre inapproprié pour les débutants et contraignant pour le développement de systèmes complets de bout en bout.


Réponse 2:

Tous les noyaux ML sont alimentés par l'algèbre matricielle et ils sont implémentés dans les bibliothèques BLAS en C et assemblage. Ces codes ont l'air moche et hacky et aucun ne dérange tant qu'ils donnent des performances optimales.

Pour les gens qui font de l'apprentissage automatique, à un niveau supérieur, ils ont également des algorithmes disponibles sous forme de packages R ou de packages de kit python Sci…

Donc, naturellement, les gens s'appuient sur ce qui est disponible, largement utilisé. C'est ça. Nous n'écrivons pas de programmes d'application, ne dessinons pas de widgets et ne nous inquiétons pas des barres de défilement. Les gens n'utilisent pas non plus Java… nous utilisons principalement R, python.

C # est une version Microsoft de Java. MS sait combien il est important d'avoir des développeurs à leurs côtés.