¿Por qué Java es la lengua franca en tantas instituciones? [cerrado]


22

EDITAR: Esta pregunta al principio parece estar afectando a Java, y supongo que en este punto es un poco. Sin embargo, el punto más importante que estoy tratando de aclarar es por qué se elige un solo idioma como el único fin, todo será una solución a todos los problemas. Java es el que se usa, así que ese es el que tuve que superar aquí, pero no estoy intencionalmente arrancando Java uno nuevo :)

No me gusta Java en la mayoría de los entornos académicos. No estoy diciendo que el lenguaje en sí sea malo: tiene varios aspectos extremadamente deseables, lo más importante es la capacidad de ejecutarse sin recompilación en la mayoría de las plataformas. No tiene nada de malo usar el idioma para su próxima aplicación ^ TM. (No es algo que haría personalmente, pero eso es más porque tengo menos experiencia con él, en lugar de que su diseño sea pobre)

Creo que es un desperdicio que los cursos de CS de alto nivel se enseñen utilizando Java como lenguaje. Demasiados de mis compañeros no pueden programar nada, porque no saben cómo trabajar en un mundo no recolectado. No entienden fundamentalmente las máquinas para las que están programando. Cuando alguien puede trabajar fuera de un mundo de recolección de basura, puede trabajar dentro de uno, pero no al revés. GC es una herramienta, no una muleta. Pero la forma en que se usa para enseñar a los estudiantes de informática es como una muleta.

La informática no debe enseñar un conjunto completo de cursos adaptados a un solo idioma. Los estudiantes parten con la idea de que todo buen diseño es un diseño idiomático de Java, y que el Diseño Orientado a Objetos es la ÚNICA FORMA QUE ES LA ÚNICA MANERA QUE SE PUEDEN HACER. Otros idiomas, al menos uno de ellos que no sea un idioma recolectado como basura, deben usarse en la enseñanza, para que el graduado comprenda mejor las máquinas.

Es una vergüenza que alguien con un doctorado en CS de una institución respetada no pueda programar su salida de una bolsa de papel.

Lo que es peor, es que cuando hablo con esos profesores de CS que realmente entienden cómo funcionan las cosas, comparten sentimientos como este, que estamos perjudicando a nuestros estudiantes al hacer todo en Java. (Tenga en cuenta que lo anterior sería lo mismo si lo reemplazara con cualquier otro idioma, generalmente el problema es usar un solo idioma, no el propio Java)

En total, siento que ya no puedo respetar ningún tipo de título, cuando no puedo ver a los que están a mi alrededor capaces de salir de problemas de fizzbuzz.

¿Por qué / cómo llegó a ser así?


99
No te preocupes Dale a Oracle media oportunidad y remediarán la situación :) Sus demandas contra Android y Apache son solo el comienzo de alejar a los desarrolladores. Enseño en una institución que ha tomado lo anterior como una señal para comenzar a enseñar Python, en previsión del mercado futuro.
SamGoody

3
¿A qué entorno académico te refieres? No sé de ninguna manera dónde se espera que los estudiantes de CSci aprendan solo un idioma. (La última vez que estuve en la escuela, podría haber superado C y Scheme, creo, si escogiera su especialidad y sus clases con cuidado, pero estaría usando al menos dos idiomas diferentes.)
David Thornley el

16
¿Puedes explicar cómo funciona tu caché L1? ¿Se puede diseñar una ALU? ¿Puedes explicar las ecuaciones de Maxwell? ¿Qué pasa con las propiedades termodinámicas de su placa base? ¿Podría construir una unidad USB? ¿REALMENTE sabes cómo funciona tu computadora? ¿O elegiste un nivel de abstracción apropiado para tus intereses y pasaste de allí?
MetricSystem

55
Porque decidir que necesita comprender la administración de memoria para "comprender fundamentalmente las máquinas para las que está programando" es un nivel completamente arbitrario en el que detenerse. Si no es necesario comprender los problemas que le interesan, su tiempo a menudo se dedica mejor a estudiar lo que le interesa (ya que nadie tiene suficiente tiempo para aprenderlo todo). Y cualquier argumento que presente sobre por qué los programadores de Java necesitan aprender a administrar la memoria podría extenderse infinitamente hasta que todos necesiten conocer la física atómica para "comprender" algo.
MetricSystem

77
Además, si alguien tiene un argumento de hombre de paja aquí eres tú, dado que nunca he oído hablar de un solo programa de CS que solo presente Java como lenguaje de programación.
MetricSystem

Respuestas:


30

Este no es un problema de Java, es un problema de enseñanza. No saber programar no es una falla de idiomas, es culpa de los estudiantes. Lo mismo ocurre con todos sus problemas, GC, conocimiento básico de la máquina, cómo funcionan las cosas "bajo el capó", por así decirlo.

Su mayor queja sobre la recolección de basura me arroja un poco. A menos que esté haciendo la recolección de basura C o C ++, generalmente es muy bueno y no es un problema. ¿Prefieres que todos aprendan asamblea? Los lenguajes de nivel superior que son estrictos son muy útiles para la enseñanza. Le brinda la flexibilidad de bibliotecas, paquetes y otros detalles cuando lo necesita, sin ninguno de los confusos "azúcar" del lenguaje presentes en la mayoría de los otros lenguajes de nivel superior (PHP, Ruby, Python, Perl).


55
No estoy diciendo que los idiomas de nivel superior no deberían enseñarse. Pero estoy diciendo que también se debe enseñar algo de nivel inferior (del orden de C o Fortran o algún otro lenguaje de programación de sistemas). (Ir por debajo de C es menos útil porque debajo de ese nivel todo lo que aprenda allí será específico para una arquitectura de máquina única). No estoy diciendo que todos los graduados de CS deberían ser grandes programadores de bajo nivel. Pero estoy diciendo que si se enfrentan a un problema de bajo nivel, no deben farfullar y morir, como parecen hacer todos los estudiantes a mi alrededor.
Billy ONeal

3
@Billy: Ir más abajo que tu nivel de aprendizaje inicial es difícil. Me encuentro mirando el código C ++ / C y divirtiéndome un poco . No esperes milagros, pero tampoco esperes ángeles. Los programadores necesitan tener impulso, ya que carecen de "chisporrotear y morir" rápidamente, sin importar el nivel del problema.
Josh K

55
@ Josh: Bastante justo, pero la exposición formal de la OMI a al menos otro entorno de programación debería ser una necesidad para obtener un título de CS. El título no dice "Entiendo Java", dice "Entiendo CS". Los dos no son lo mismo, y no puede lograr una comprensión completa de CS utilizando Java (o, en realidad, cualquier lenguaje) solo. (Por cierto, +1)
Billy ONeal

2
@JoshK: Una incapacidad para depurar a niveles bajos y una capacidad muy reducida para razonar adecuadamente sobre las implicaciones del código que escriben.
Mason Wheeler

1
Conozco programadores que solo aprendieron Java y están asustados por C ++ o C porque tienen que usar punteros. No sé si alguien que no puede programar con punteros puede considerarse un verdadero programador: después de todo, todas las computadoras y tiempos de ejecución modernos todavía se basan en una arquitectura básica que involucra registros, memoria principal, pila, montón. Por lo tanto, prefiero programar en Java en lugar de en C ++ (definitivamente es más fácil hacer las cosas si no tiene que preocuparse por la administración de la memoria), pero estoy de acuerdo en que la enseñanza definitivamente no debe limitarse a Java.
Giorgio

12

¿Las universidades realmente están haciendo esto? ¿O es solo una percepción que las personas obtienen cuando obtienen un mal candidato para una entrevista de trabajo?

Obtuve mi título de CS hace 4 años y aunque Java se usó en las clases de introducción, no se enfatizó particularmente después de eso. Fuera de mi cabeza, los cursos básicos requeridos requieren que aprendas Java, C, C ++, SML (lenguaje de programación funcional), ensamblaje, matlab y CAST (lenguaje de descripción de circuito). Esto no tiene en cuenta todos los cursos de CS teóricos y matemáticos y, por supuesto, la media docena de cursos de CS optativos que te habrían expuesto a un montón más. Al hablar con amigos en varias universidades diferentes, no parecía que lo que estaban haciendo fuera muy diferente.

Si hay universidades que solo enseñan Java, entonces eso es realmente una tragedia. No porque Java sea malo, sino porque es solo una de las muchas herramientas que debería estar disponible para un programador. Un desarrollador que solo conoce Java es equivalente a un carpintero que solo sabe cómo usar un martillo. Sin embargo, me cuesta creer que ese sea realmente el caso, al menos para las universidades respetadas. Sospecho que esto es solo la percepción de ver malos candidatos y culpar a la escuela por la incompetencia de los candidatos en lugar de la falta de impulso / motivación / curiosidad / profesionalismo / etc. del candidato.


2
Convenido. Me gradué hace unos años, y aunque la mayoría de mis clases se enseñaron usando Java, fue difícil graduarse sin tomar una clase que se enseñó usando C o C ++, y también tuvimos un curso de lenguaje de programación que enfatizaba el uso de Haskell .
mipadi

En mi grado, primero hicimos Pascal, luego Java como nuestro lenguaje OO. Sin embargo, en el segundo año pasado, al 90% de los profesores no les importaba el idioma que usabas. Algunos de nosotros usamos c / c ++ / ruby ​​/ C # / python / incluso haskell, pero la mayoría de las personas se quedaron con lo que sabían, java. Solo un puñado de cursos requiere el uso de ensamblaje / c / c ++, a saber, cosas como nuestro curso de gráficos 3D (opcional) que se aplica bastante c / c ++ para opengl. Y obviamente, el curso de sistemas básicos impuso el ensamblaje SPARC (porque estábamos trabajando intencionalmente y un nivel bajo). Sin embargo, escuché que se mudaron a python / c ++ en el primer año ...
Aren

11

Estoy realmente sorprendido de que esta sea la situación en muchas escuelas. Cuando obtuve mi título de CS, tuve una serie de cursos de idiomas que incluían todos los idiomas populares del día (esto fue hace casi 40 años): ensamblador (Univac 1108 y MIX), FORTRAN IV, SNOBOL4, COBOL, Lisp y Algol 68. No puedo imaginar que solo se enseñe un idioma. O cómo podría apreciar lo que los compiladores tenían que hacer sin haber escrito algunos programas ensambladores.

Usamos Algol y FORTRAN para la mayoría de los cursos de datos y algoritmos. Me hubiera gustado pasar más tiempo con Lisp; en cambio, solo tuvimos una introducción y ahora estoy tratando de volver a aprender algunos de los conceptos. Utilizamos SNOBOL4 para escribir analizadores sintácticos, y su coincidencia de patrones con retroceso creó una buena base para el trabajo posterior de las bibliotecas de expresiones regulares incluidas en muchos idiomas modernos.

Esta introducción a media docena de idiomas despertó un interés en mí que ha continuado desde entonces.


8

Para obtener la verdadera razón, tendrías que preguntar a las personas que dirigen esas instituciones (e incluso entonces, es posible que no te lo digan).

Varias razones posibles (y no estoy defendiendo ni acusando a nadie aquí, solo adivinando):

Puedes hacer cosas en Java

Java es un lenguaje de propósito general y, como tal, se puede utilizar para resolver muchos problemas.

Muchos profesores entienden Java

Es difícil enseñar un idioma que no entiendes

Java es popular

Lo que significa que hay muchos recursos de Java: libros, una comunidad activa, bibliotecas de códigos, etc.

Java es fácil

No tienes que entender muchas cosas de bajo nivel o teoría para hacer Java. Es posible que no lo haga bien , pero al menos puede hacer las cosas.

Java es dominante

Puede ejecutarlo en más o menos cualquier cosa.

Hay trabajos para programadores Java

Hay muchos trabajos que necesitan Java: se supone que los maestros están preparando a los estudiantes para el mundo real.

Hay tiempo limitado

En muchos cursos, no hay tiempo para enseñar múltiples idiomas, teorías, conceptos de bajo nivel, etc.

Es lo que quieren los estudiantes

Muchos estudiantes ya han oído hablar (e incluso han usado) Java. Les gusta porque les es familiar.


6

Eso es lo que pidió la industria. Había una escasez de desarrolladores de Java, por lo que las escuelas comenzaron a crearlos. Las empresas obtuvieron desarrolladores que pueden comenzar a trabajar tan pronto como cruzaron la puerta.

De todos modos, el idioma no importa. Podrían enseñar un lenguaje que no sea GC y seguir produciendo malos programadores. El uso de las escuelas de idiomas es un detalle de implementación. Las escuelas deben enseñar conceptos. Si este no es el caso, entonces es la escuela el problema, no el idioma con el que enseñan. El hecho de que alguien no sepa qué es un puntero no significa que no pueda ser un programador efectivo.

GC es el camino del futuro de todos modos.


44
No necesita saber qué es un puntero. Pero debe poder captar el concepto con relativa rapidez. No comprender los punteros, o conceptos similares a los punteros, indica falta de comprensión de la informática en su conjunto. No digo que todos los graduados de CS necesiten ser programadores increíbles de bajo nivel, pero digo que al menos deberían tener una comprensión conceptual de lo que sucede cuando reciben un título universitario de 4 años.
Billy ONeal

1
CS no se trata de programación.
Javier

1
@Javier: ¿Cómo es que CS no se trata de programación? Claro que existe esa rama de CS, "Ciencias de la Computación Teórica", que no se trata de programación, sino que en su mayor parte se trata de programación.
Billy ONeal

1
@Billy ONeal: la definición de Wikipedia es un poco larga, pero la parte que más se acerca a la programación es "el estudio de técnicas prácticas para su implementación". es decir, no se trata de la implementación (programación) sino de estudiar las técnicas de implementación (algoritmos, estructuras, lenguajes, etc.)
Javier

1
@Javier: Creo que "el estudio de la programación" y "la acción de la programación" son lo mismo. Después de todo, el código se lee con mucha más frecuencia de lo que se escribe. Pero eso no viene al caso: cuando recibes un título de CS, lo que terminarás haciendo es programar.
Billy ONeal

4

Pereza y lucro. Java atrae a la mayoría de las personas el 80% del camino, con el 20% del esfuerzo. Sin embargo, esto a menudo produce codificadores de vudú "mono ver mono hacer" que no tienen una comprensión profunda de lo que está sucediendo y no pueden profundizar más que las herramientas de alto nivel.

Enseñar C / C ++ correctamente es difícil. Incluso cuando se hace bien, bastantes no entenderán completamente los conceptos de bajo nivel como los punteros (hay estudios sobre esto). Además, no parece inmediatamente relevante en el mercado laboral.


2
Pero si comprende los punteros, puede comprender las referencias mucho más fácilmente.
Michael K

3

Principalmente estoy de acuerdo, pero hasta cierto punto.

Si va a enseñar CS cource centrado en estructuras de datos o algoritmos. Obtener la mayoría de las cosas innecesarias fuera del camino es algo bueno. No quiere que los estudiantes lidien con cosas de bajo nivel cuando aprenden conceptos de alto nivel.

Por otro lado, también se deben enseñar cosas de bajo nivel. Solo para que tengamos más programadores versátiles.


No estoy hablando de un solo curso. Para un solo curso, está bien. Para un plan de estudios completo, no lo es.
Billy ONeal

3

Como siempre, se trata de lo que quieres enseñar y de cuánto tiempo tienes para hacerlo.

Hacer cosas en Java significa que no tienes que lidiar con punteros extraviados y free / malloc. Eso significa muchos menos errores difíciles de encontrar.

Esto no significa que no deba aprender sobre la máquina subyacente, que debe ser buena en el comercio, sino que quizás deba elegir la herramienta adecuada para el trabajo. Los algoritmos de alto nivel quizás no sean el mejor tema para el curso de ensamblador.


Para un curso de introducción a la programación o un curso de estructuras de datos, Java está bien. Sin embargo, no es para un plan de estudios completo de 4 años.
Billy ONeal

@Porra. Convenido. Solo menciono que el uso de Java le compra algunas cosas de las que no tiene que preocuparse. Debería aprender los conceptos básicos en otros cursos sin Java.

2

¿Es demasiado pedir que se les enseñe algo sobre cómo funcionan realmente las computadoras ? No tiene sentido para mí que cualquier resumen de un curso de CS no incluya algo de sistemas operativos y arquitectura de computadoras. No estoy diciendo que deba poder diseñar una computadora en el reverso de un sobre, pero una descripción general pone todos los idiomas en perspectiva. Quiero decir, ¡Java se ejecuta en una máquina virtual!


1
¿ Existen buenos programas de informática que no incluyan un curso de SO y un curso de organización de computadoras?
mipadi

¡Ciertamente espero que no!
Michael K

0

Honestamente, no creo que debas perder el respeto por todos los títulos y, especialmente, no CS porque el único idioma que se enseña es Java.

Cualquier comp decente. El estudiante de ciencias comprende que su título de CS no es más que una hoja de papel y que el conocimiento real provendrá de proyectos personales y estudios personales. Me gustaría pensar que los buenos estudiantes saben que necesitan saber C y aprender cómo hacer las cosas en Linux / Unix y aprender a NO tener la mano en los lenguajes modernos.


-1

No veo un problema con el uso de Java. El mayor problema (como mencionó) es cuando las universidades enseñan la programación imperativa como la mejor y única forma de resolver todos sus problemas. Esto está muy lejos de la verdad. Por ejemplo, en lugar de usar tres lenguajes imperativos (o incluso el peor idioma) para tres cursos diferentes, deberían usar tres paradigmas de programación diferentes. Un ejemplo es Java (imperativo), Prolog (declarativo) y Haskell (funcional).

En cuanto a por qué sucede esto, creo que es una combinación de (1) política: los presidentes no son de mente abierta o tienen beneficios / patrocinadores personales, y (2) pereza: los profesores fueron una vez estudiantes y enseñan lo que saben o les gusta.


-1

Colegio Calvin en Grand Rapids Mi. Una vez que cambiaron de Java a Python para clases introductorias de programación, el profesor, incrédulo, mencionó a un grupo de nosotros cerca del final de su semestre: "Muchos de ellos pueden programar, es increíble". Su asombro contrastaba con las experiencias anteriores con Java. Esto no hace que Java sea un mal lenguaje, solo difícil de aprender desde cero. Yo diría lo mismo sobre C, C ++ o cualquier lenguaje que requiera un conocimiento íntimo de los esquemas o tipos de asignación de memoria.


1
Erm, Python requiere un conocimiento profundo de los tipos al igual que los otros idiomas que mencionaste.
Billy ONeal

Espero que los idiomas con intérpretes sean mucho más fáciles de aprender, ya que los estudiantes pueden obtener comentarios declaración por declaración en lugar de compilación por compilación.
Kevin Cline

@BillyONeal Me entendiste mal, el contexto fue la asignación de memoria en mi última oración. Todavía tengo que preocuparme por el tamaño o el # de elementos de un str () o dict () o tuple () o list () o set () ... solo los 'uso'.
Ben DeMott

@kevincline Gracias Kevin: esto era lo que estaba tratando de transmitir. A juzgar por los votos negativos, necesito trabajar en mis habilidades de comunicación;)
Ben DeMott

-2

Obtuve un título en ingeniería de sistemas informáticos, así que estudié ensamblaje, microprocesadores, VHDL, cuáles son las puertas lógicas y cómo crear un flip-flop a partir de ellas, estudié circuitos eléctricos, amplificadores operacionales, filtros de paso bajo, amplitud modulación, construyó un circuito en un laboratorio que sonaría como un teclado telefónico, en mal estado con un analizador lógico, tomó algunas clases de física. En el lado de Linux: antes recompilé un núcleo, escribí un pequeño controlador de dispositivo y un sistema de archivos de tareas.

Pero luego me di cuenta de que me gustan mucho más las cosas de alto nivel. Prefiero Python sobre C. Me gusta C # y me encanta el recolector de basura. Me gustan las matemáticas y los algoritmos y las estructuras de datos, pero no soy un fanático particular de los punteros: puedo meterme con ellos; Solo no quiero.

Entonces, piensas que la universidad debería enseñar más C, menos Java. Alguien más piensa que deberían enseñar todo en Scheme. Spolsky tomará ambos.

Sí, es cierto que un título universitario es simplemente una hoja de papel, pero "no dejes que la educación interfiera con tu educación". Siempre hay Wikipedia, Stack Overflow, Coursera.org, etc. Parece que las universidades tradicionales serán menos importantes.

Si pudiera hacer una licenciatura por todas partes, entonces habría ido a una escuela diferente, no habría estudiado ninguna de las cosas de ingeniería eléctrica, sino más bien Matemáticas, CS + en física y francés. Scratch French; Debería haber estudiado en el extranjero en Suiza y aprendí 5 idiomas naturales mientras lo hacía. También regresaría y encontraría a una persona que me convenció de que debo tomar una introducción a las clases de economía en la universidad para poder sobrevivir en el mundo real y golpearlo en la cabeza con mi colección de libros de Milton Friedman (los únicos libros sobre el tema de economía que leí que no apestan). Tampoco pagaría dinero por el libro Freakonomics 1 o un libro sobre el lenguaje Perl.

En retrospectiva, habría hecho muchas cosas de manera diferente. Todo lo que puedo hacer ahora, y te recomiendo esto, es elegir tu propia aventura: http://www.codinghorror.com/blog/2008/03/choosing-your-own-adventure.html

En retrospectiva, ya habría ganado 100 mil millones de dólares en el mercado de valores, y lo habría invertido en la investigación del cáncer, habría contratado científicos para eliminar los desechos plásticos del mundo; Habría donado suficiente dinero en efectivo a la campaña de Ron Paul para que la guerra en el Medio Oriente durara más de 3 años.

Reconoce ahora que nunca recuperarás tu tiempo, así que intenta gastarlo sabiamente.


Votantes, por favor explique.
Trabajo

-2

Hace unos años leí en alguna parte que, en el Reino Unido, se tomó la decisión de Java de atraer a más estudiantes a la programación. Aparentemente fue más fácil para el cerebro debido a la falta de punteros desagradables y administración de memoria, etc. Supongo que esta es la razón por la cual Python se está adoptando rápidamente como la nueva 'herramienta de aprendizaje'. Sería de la opinión de que tu curso típico de universidad no te convertirá en un programador. Todo lo que debe hacer es armarte con una cierta cantidad de conocimiento y prepararte para la programación. El día en que uno puede llamarse a sí mismo programador generalmente pasa bastante tiempo después de la universidad y cuando llega ese momento, los indicadores, la recolección de basura y los paradigmas de programación distintos de OOP no deberían ser un problema.


-2

¿Por qué se usa Java?

Tres razones:

  1. Java usa la sintaxis de estilo C. Muchos programadores están familiarizados con él, por lo que reduce la curva de aprendizaje.

  2. Se gastó dinero para comercializar Java como genial y moderno. Pero en comparación con el ceceo, Java está viviendo en la edad de piedra.

  3. La JVM JVM es lo mejor de Java que es legítimo, no solo el marketing publicitario. Aunque la JVM debe ser elogiada como una plataforma para ejecutar programas, no merece por sí misma la existencia del lenguaje Java. Teóricamente y prácticamente puedes compilar muchos lenguajes diferentes para la JVM.


1
Bienvenido. Parece que esta podría ser tu primera publicación para Stack Exchange Programmers. Consulte la página de preguntas frecuentes programmers.stackexchange.com/faq para obtener algunos consejos sobre reputación, preguntas y respuestas. Un punto clave es que las respuestas deben ser informativas, no provocativas. Si hace una afirmación como Java es la edad de piedra y Lisp es moderno, explique por qué. Muchos lectores pueden saber que Lisp se especificó en 1958 y es un poco más joven que FORTRAN. Si quiere decir que algo sobre Java que se comparte con FORTRAN o Algol impulsa su diseño y lo limita, descríbalo.
DesarrolladorDon

-3

Su pregunta respalda los hallazgos de otra persona que escribió un artículo diciendo que Java es tan genial pero no lo suficientemente pesado para la computación científica. Creo que debería usar Big Decimal con todas sus precisiones finas, NAN, etc. y seguir adelante.

Quiero vivir solo en un mundo automático de recolección de basura. Su aspecto más saludable, limpio, ordenado, estético, evita el desperdicio de dinero en gastos de salud, es más deseable, no tiene que etiquetar algo como no deseado, simplemente al desreferenciarlo o configurarlo como nulo o cuando me muevo fuera del alcance, el artículo se pone automáticamente etiquetado para recolección de basura ..

Ok, ahora solo estoy hablando de Java, pero sería más útil si esto también funciona en el escenario de basura real. Java es escribir una vez ejecutado en cualquier lugar, lo cual es lo suficientemente bueno para mí como para ser utilizado como idioma en las escuelas. No hay pérdidas de memoria y el gusto de los programadores felices que no quieren pasar tiempo etiquetando cada objeto que usan y dejan de usarlo es una buena lógica en nombre de Java.

Java tiene punteros, bueno, los llamamos referencias. String s1 = "Hola"; Cadena s2 = "Hola"; Cadena s3 = nueva Cadena ("Hola");

s1 y s2 apuntarán al mismo objeto String, que es por referencia s1 == s2, s1.equals (s3) pero s1 == s3 es falso porque s3 es un nuevo objeto de referencia; esta es la aritmética de referencias de Java e I entiendo todo esto, lo siento, no deseo ser etiquetado como alguien que no comprende las complejidades subyacentes de la aritmética de puntero de C o C ++.


2
Las referencias no son punteros. No puede usarlos aritméticamente, y no puede usarlos para reinterpretar una pieza de memoria a la que apuntan. Y, por supuesto, no importa cuánto quieras vivir en un mundo recolectado, el hecho es que el mundo no es un mundo recolectado. No estoy diciendo que Java sea un mal lenguaje, o que la gente no deba usar Java. Si te gusta, úsalo, hay cosas al respecto que son geniales. Simplemente creo que es inapropiado como lenguaje para principiantes porque oculta cosas que son esenciales para que los nuevos programadores entiendan.
Billy ONeal
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.