2009-06-28 15 views
6

Estaba leyendo this thread y me preguntaba si es más fácil convertirse en un experto en Java que en uno de C++. ¿Es porque es muy fácil escribir código incorrecto en C++ mientras que en Java tiene menos flexibilidad (gestión de memoria, por ejemplo) que le impide escribir horrores de código? ¿O es porque C++ es inherentemente más difícil de aprender y dominar? ¿Has encontrado un estudio que distingue y caracteriza los codificadores C++ vs Java vs C# etc.?¿Qué se necesita para convertirse en un experto en Java?

+9

SO definición de experto en Java: debe obtener 1000 votos por favor sobre las respuestas etiquetadas "java" ;-) –

+0

La mayoría de las veces que he recibido eran 13 votos positivos, ¡y eso es bastante difícil de hacer, creo! Todavía me considero "experto" en algunas áreas al menos. Se trata de lo que he usado más (y más recientemente). –

+0

@Mark: No en una sola pregunta. Se requiere una suma total de 1000 votaciones ascendentes sobre respuestas a preguntas wiki no comunitarias de una etiqueta específica para obtener la insignia experta de esa etiqueta. Por cierto, es solo la definición de SO que no es exactamente lo mismo que en el mundo real;) –

Respuesta

10

¿Qué se necesita? Como cualquier cosa, años de práctica e innumerables errores.

Y aun así, su experiencia estará en un puñado de áreas en las que haya resuelto dominios problemáticos particulares una y otra vez; es decir, islas de experiencia. Middleware y/o frameworks? Enhebrado & concurrencia? ¿Tal vez aplicaciones Swing/GUI Java? O aplicaciones web ...

Java ha crecido hasta tal punto que nadie puede ser un experto en TODO lo que es Java: mire cuántos paquetes se han agregado entre 1.4 y 1.6 y esto debería ser obvio. Aunque tienes muchachos que se acercan demasiado (me viene a la mente Johsua Bloch ...).

Editar: Si esto se trata de reclutadores y recursos humanos ... haga caso omiso de todas las palabras de moda, años mínimos y "experto en" y simplemente obtenga una entrevista telefónica con el equipo que desea contratar. Necesita averiguar por el técnico qué es exactamente lo que está buscando porque casi todos los reclutadores y agencias de reclutamiento son COMPLETAMENTE SIN AMORTIGUADOR.

+0

a menudo es útil ir a cualquier sitio de la compañía/web2.0, ir a la página de sus trabajos y si tienen una vacante para el programador senior/asistente de java, léala y en wiki/google cualquier tecnología o "palabras de moda" que mencionen y mira si es algo que debes aprender. – Victor

+0

Tenía la impresión de que Josh Bloch era un tipo básico de Java, y probablemente no utiliza la gran mayoría de las bibliotecas. –

+0

Es cierto. Pero apuesto a que al menos es consciente de ellos, junto con muchos de los marcos IVC y otras cosas agradables que han evolucionado a partir del estándar Java. – hythlodayr

16

Con pocas excepciones, cada vez que escucho a alguien decir que es un "experto" en un idioma, generalmente los tomo con un grano de sal. No importa en qué idioma, los mejores programadores saben que siempre tienen algo que aprender, ya sea de un veterano experimentado o de un niño recién salido de la universidad.

+0

De acuerdo. Pero, ¿cómo respondes a los reclutadores idiotas y a las personas de recursos humanos que insisten en que respondas su tasa de 1-10 en preguntas de habilidad X? –

+1

Ninguna mención en mi diccionario que "experto" significa nada más que aprender. Además, usted toma una excepción al uso de lo que usted dice que es un término ficticio, sin embargo, su nombre de usuario aquí es "Gandalf". Eso es un poco irónico, ¿no crees? – Glenn

+2

Ahh, los reclutadores. Dígales lo que quieren escuchar, para que pueda llegar a la entrevista real. Tuve muchos meses de dudas cuando (después de un paréntesis de un año) comencé mi búsqueda de trabajo hace algunos años. Y esto se debió principalmente a los reclutadores y entrevistadores. Uno pensaría que la gente consideraría años de experiencia y habilidad para resolver problemas, pero se topará con entrevistas horribles y con personas que esperan tener un conocimiento de certificación preempaquetado. – hythlodayr

2

Una cosa a considerar es la cantidad de código fuente abierto que hay disponible para estudiar y aprender.

También hay bastante código abierto de código C++, pero generalmente Java es más sucinto y centrado, sin tener que lidiar con las diferencias de plataforma y varias bibliotecas diferentes.

Creo que Java es mucho más fácil de aprender porque así es como recomiendo mejorar y aprender. Leer el código Lea el JDK, lea la fuente de bibliotecas y marcos conocidos y respetados. Indague y vea cómo funciona.

2

La mejor manera es programar mucho en Java. Si no es el idioma que más utiliza en el trabajo, entonces debería ser el idioma que más utiliza en sus proyectos personales si desea convertirse en un experto (esto se aplica a cualquier idioma).

Algunos materiales de lectura que le ayudarán a:

En cuanto a la facilidad de aprendizaje, personalmente me fue mucho más fácil aprender Java que C++. Java definitivamente se benefició de la retrospectiva de sus desarrolladores.Pudieron principalmente mantener las cosas buenas de C++ y deshacerse de algunas de las cosas que hicieron que C++ fuera más difícil de aprender. Lograron hacer más difícil, pero de ninguna manera imposible, dispararse en el pie en Java que en C++, y el daño potencial también suele ser menor cuando lo hace.

¿Te has encontrado con un estudio que distingue y caracteriza C++ vs Java vs C# etc codificadores?

No conozco ningún estudio de este tipo, y ni siquiera voy a comenzar a especular. :)

0

Considera lo que quieres hacer.

Si desea trabajar con programas para Mac aprenda Objective-C. si desea trabajar con programas para Windows, aprender C# o C++. Si desea trabajar con servidores backends, aprenda Java.

Si quieres convertirte en un experto, debes practicar mucho y aprender aún más cosas. Puedo recomendar leer "Cómo ser un pirata informático" http://catb.org/esr/faqs/hacker-howto.html#why_this (el documento completo), ya que le dará muchas ideas y consejos sobre qué MÁS debe hacer.

Aprender un solo idioma es como pintar solo con pintura acrílica.

2

¿Usted se encontró con un estudio que distinguir y caracterizar C++ Java vs vs C#, etc codificadores?

solamente this one. lo siento.

+0

+1 - Wow. No tenía idea de que estaba tan bajo en la jerarquía. 8) – duffymo

+0

que nunca recogió en http://www.google.com/search?hl=es&q=jverd+goat+site%3Ahttp%3A%2F%2Fforums.sun.com? –

+1

Me recuerda una broma: ¿Por qué la mayoría de los programadores de Java usan anteojos? Porque no tienen C#! – akarnokd

0

O es porque C++ es sólo inherentemente más difícil de aprender y dominar?

Yo diría que este es el motivo principal. C++ es un lenguaje mucho más complejo con muchas características que pueden ser difíciles de entender, especialmente en la forma en que interactúan.

Por supuesto, el lenguaje en sí mismo no lo es todo: Java tiene una API estándar mucho más grande y marcos estándar de facto, que se esperaría que supiera un "experto".

0

ser un "experto" en un idioma no significa mucho, por ejemplo decir que eres un experto en C++ pero que has programado toda tu carrera en Linux, ¿contratarías a un tipo para hacer un programa Win32 o lo harías? ¿llevas a alguien que no es necesariamente un experto pero que tiene experiencia con Win32 y sus peculiaridades?

1

Creo que en la industria hay significados ligeramente diferentes para los expertos en Java y C++. Por lo general, la experiencia de Java implica experiencia con algún conjunto de API (como J2EE), o un conjunto de marcos, o con un servidor de aplicaciones específico. Parece que un conjunto más pequeño de empresas que lo utilizan solo utilizan Java central, por lo que a menudo miden la experiencia en función de la cantidad de API que puede afirmar conocer. A menudo, las empresas que usan C++ lo están utilizando por razones de velocidad y están escribiendo mucho más de su código desde cero, por lo que pueden estar más interesados ​​en la experiencia del lenguaje central.

Dicho esto, creo que Java es mucho más sencillo, pero su enorme conjunto de bibliotecas y frameworks es muy complejo. C++ es difícil porque, básicamente, estás aprendiendo tres lenguajes: procedimental, orientado a objetos y meta-programación de plantillas.

1

En mi opinión, el problema con C y C++ que se inventaron en los años 60 . Java llegó más tarde y aprendió mucho de los errores, malas prácticas y soluciones cuestionables que se ven a menudo en C/C++. Después de 2001 cuando apareció C#, diría que observamos una especie de coevolución de estos dos idiomas. Aprendieron unos de otros y aprendieron de C/C++ y, por primera vez en la historia, ¡de los propios usuarios!

En mi caso, para responder a su pregunta, tuve que decidir aprender C++ o Delphi hace 12 años. Me resultó complicado y tedioso usar C++ en ese momento. Desde entonces, me mudé a Java hace un par de años mientras rastreaba las grandezas de C#. Tan general, solo toma tiempo hacerse experto en uno u otro idioma. Me evaluaría a mí mismo como un programador experimentado, ya que el significado de la palabra "experto" está muy bien definido en tdwtf, y espero que nunca me sea aplicable. EN MI HUMILDE OPINIÓN.

Creo que la mejor manera de comparar codificadores de varios idiomas es hacerlo usted mismo, ya que creo que cada argumento sobre el tema es subjetivo.

corregirme si me equivoco sobre las fechas.
quizás no sea la primera vez, pero leer artículos de las características emergentes y emergentes de estos idiomas me hace sentir así.

Para la comparación me encontré con estas referencias hace un tiempo:

comparacion de Características de loslenguajes de programación Java y C#, Mayo de 2003

aunque está en español y se limitó a la muestras de código

Comparing Object-Oriented Features of Delphi, C++, C# and Java

para una otra, la comparación más diversa sobre el tema.

Y también hay un 'anuncio' de MS tratando de convencer a cambiar a C# (o en C++, ya que está disponible en VS largo):

C# para programadores de Java (Allen Jones & Adam Freeman , Microsoft Press, 2002)

O si quieres un estudio 'independiente':

de Java a C#: un desarrollador de Guía (Heng Ngee Mok, Addison Wesley, 2003)

+0

Olvidé mencionar que en http://channel9.msdn.com hay cientos de excelentes videos sobre el tema de programación, y muy a menudo hacen comparaciones con otros idiomas en las conversaciones. – akarnokd

+0

por nota al pie # 1: C - 1972; C++: el desarrollo comenzó en 1979 como "C con clases", se convirtió en C++ en 1983. – Dan

+0

@Dan: Gracias. Debería haber revisado la Wikipedia yo mismo antes de publicarla. – akarnokd

0

Se podría decir que se necesitan 10 años para ser un experto en el lenguaje. Como tal, digo que es igual de fácil ser un experto en Java o C++.

Ser un experto requiere diferentes habilidades. Java tiene a su disposición un conjunto confuso de cientos de proyectos de código abierto de uso común. Ser un experto en Java significa tener una buena comprensión de muchos de estos extras. p.ej. Java EE, Spring, Hibernate y muchos más.

1

La mayor parte de esto se aplica a muchos otros idiomas:

Como siempre necesita mucha experiencia para ser un experto en Java.Y si crees que has ganado suficiente experiencia, aprende más.

Java tiene una API rica y potente, tiene sentido tener conocimiento de ella, si quieres convertirte en un experto.

Debería aprender a codificar limpio y mantenible, a ser un buen programador.

Aprenda también conceptos en diferentes idiomas, que java no tiene (por ejemplo, cierres). Puede aprender mucho sobre una tecnología/lenguaje de programación si sabe cosas que no puede.

Conozca los conceptos de la máquina virtual, el compilador de zona activa y el colector de basura generacional que utiliza Java.

Y si alcanzó un nivel de conocimiento, que cree que no puede aprender más, no es un experto. Siempre hay más que saber, y los verdaderos expertos lo saben.

Cuestiones relacionadas