Quina diferència hi ha entre C # i Java? Per què no s’utilitza C # per a la programació de màquines?


Resposta 1:

La diferència entre Java i C # és Calamansi / Calamondin i un Orange. Està bé, doncs, què vol dir realment?

Doncs vol dir que ambdues llengües pertanyen a la mateixa família, és a dir, totes dues són llenguatges funcionals orientats a objectes i impurs, però hi ha moltes diferències entre elles que les separen.

Per tant, comencem des del principi:

  1. C # es va originar amb la idea de desenvolupar el ja impressionant C ++ per a Microsoft. Si bé Java es va fer amb la idea d’abast a tot tipus de dispositius, és a dir, la portabilitat. # És un llenguatge més complex que Java. Els conceptes modernitzats i nous estan presents en C # en comparació amb Java. Alguns exemples són delegats, sobrecàrrega d’operadors i propietats (getters & establidors).

Així, fins i tot després de tant, per què no s’utilitza C # a Machine Learning. En primer lloc, és molt més específic per a les plataformes Microsoft, d'altres, amb pocs algorismes / biblioteques d'aprenentatge automàtic. Però la cosa és que no s’utilitza principalment perquè és difícil que els principiants també l’utilitzin.

Per què s’utilitzen més MATLAB, Python i R?

MATLAB és excel·lent per representar i treballar amb matrius. Com a tal, crec que és un excel·lent llenguatge o plataforma a l’hora de pujar a l’àlgebra lineal d’un determinat mètode. Crec que és adequat per aprendre sobre algoritmes tant superficialment com per primera vegada i profundament quan intenteu descobrir alguna cosa o aprofundir en aquest mètode. Per exemple, és popular als cursos universitaris per a principiants.

R és un punt de treball per a l'anàlisi estadística i per extensió d'aprenentatge de màquines. Es parla molt de la corba d’aprenentatge, realment no veia el problema. És la plataforma que s'utilitza per comprendre i explorar les vostres dades mitjançant mètodes i gràfics estadístics. Té un gran nombre d’algorismes d’aprenentatge automàtic i implementacions avançades també escrites pels desenvolupadors de l’algorisme.

Tot i que Python és un llenguatge de programació i script amb finalitats més generals, està guanyant popularitat entre els científics de dades i els enginyers de Machine Learning. A diferència de R o MATLAB, els idiomes de processament de dades i d’informàtica científica no s’incorporen al llenguatge en si mateix, però biblioteques com NumPy, SciPy i Pandas ofereixen funcionalitats equivalents en una sintaxi discutiblement més apropable. Les biblioteques especialitzades en aprenentatge automàtic com ara scikit-learning, Theano i TensorFlow us ofereixen la possibilitat de formar una varietat de models d'aprenentatge automàtic, que poden utilitzar infraestructura informàtica distribuïda. La majoria del codi crític per al rendiment d’aquestes biblioteques s’escriu normalment en C / C ++ o fins i tot en Fortran, amb els paquets Python servits com a embolcalls o API (el mateix passa amb molts paquets R). Però l’avantatge més gran és que l’ecosistema Python fa que sigui realment fàcil un conjunt de productes o serveis complexos d’extrem a extrem, com una aplicació web que utilitza Django o Flask, o una aplicació d’escriptori que utilitza PyQt, o fins i tot un agent robòtic autònom. utilitzant ROS.

B ... B ... Però es fa servir Java i la família C en aquestes coses?

Java és el llenguatge escollit per l'enginyer de programari per la seva implementació neta i coherent de la programació orientada a objectes i la independència de la plataforma mitjançant JVM. Sacrifica la brevetat i la flexibilitat per a la claredat i la fiabilitat, cosa que el fa popular per implementar sistemes crítics de programari empresarial. Per tal de mantenir el mateix nivell de fiabilitat i evitar escriure interfícies desordenades, les empreses que han estat utilitzant Java poden preferir que s’adapti a les seves necessitats d’aprenentatge automàtic. A més de biblioteques i eines útils per a l'anàlisi i el prototipat (per exemple, Weka), hi ha algunes opcions excel·lents per crear sistemes d'aprenentatge distribuïts a gran escala a Java, com ara Spark + MLlib, Mahout, H2O i Deeplearning4j. Aquestes biblioteques / marcs funcionen bé amb sistemes de processament i emmagatzematge de dades estàndard de la indústria com Hadoop / HDFS, facilitant la seva integració.

C / C ++ és ideal per a programari de baix nivell, com ara components del sistema operatiu i protocols de xarxa on la velocitat computacional i l'eficiència de la memòria són extremadament crítics. Per aquests mateixos motius, també és una elecció popular per implementar els processos de l'aprenentatge automàtic. No obstant això, la seva manca d’abstencions idiomàtiques per al processament de dades i l’augment de les despeses generals per a la gestió de la memòria poden fer que sigui inadequat per a principiants i pesant per desenvolupar sistemes complets de punta a punta.


Resposta 2:

Tot el nucli ML funciona amb àlgebra matricial i s’implementen en biblioteques BLAS en C i en muntatge. Aquests codis semblen lletjos i pirates i no molesta sempre que donin un màxim rendiment.

Per a persones que fan aprenentatge automàtic, a un nivell superior, també tenen algoritmes disponibles com paquets de R o paquets de Python Sci ...

Per tant, les persones, naturalment, es basen en allò disponible, que s’utilitza àmpliament. Això és. No estem escrivint programes d'aplicacions, dibuixem widgets i ens preocupem per les barres de desplaçament. Ni la gent utilitza Java ... nosaltres fem servir R, python principalment.

C # és la versió de microsoft de Java. MS sap quina importància és tenir els desenvolupadors al seu costat.