2009-04-05 15 views
21

Soy un desarrollador competente de C++. Comprendo y uso el polimorfismo, las plantillas, el STL y tengo una comprensión sólida de cómo funcionan las transmisiones. Para todos los propósitos prácticos, no he hecho ningún desarrollo de Java. Estoy seguro de que algunos de ustedes estuvieron en una situación similar en un momento en que tuvieron que aprender Java. ¿Cuánto tiempo te tomó convertirte en un programador de Java competente?Conociendo C++, ¿cuánto tiempo lleva aprender Java?

Respuesta

19

Creo que aprender el idioma no es difícil. De hecho, solía ser un desarrollador de C++ a tiempo completo, y en algún momento comencé a escribir código Java. Pero la cuestión es que no recuerdo haber aprendido nunca Java, así que supongo que lo imaginé como fui. He estado haciendo Java a tiempo completo desde hace mucho tiempo.

Si está familiarizado con C++, es posible que desee leer una lista de las principales diferencias (por ejemplo, todo está vinculado dinámicamente) y luego comenzar a practicar en un entorno (simplemente descargue Eclipse). Las pequeñas diferencias son lo principal a lo que tendrías que adaptarte.

Ahora que Java es compatible con los genéricos, uno de los mayores problemas de conmutación ha desaparecido. La herencia múltiple, aunque no es compatible, no es un gran problema si te acostumbras a las interfaces, y de hecho tener interfaces en lugar de clases abstractas con funciones virtuales puras (PVF) mejora la legibilidad.

Para mí, Java es una versión amigable y agradable de Sandboxed de C++. No tengo que preocuparme por las fallas de protección general (GPF), no tengo que preocuparme por las pérdidas de memoria, no tengo que preocuparme por meterme con los punteros. Sin embargo, no dejes que eso te confunda, todavía hay muchas oportunidades para fastidiar de verdad, y en ocasiones son incluso más desagradables de detectar.

Solo da el salto. Si tienes el instinto, no debería ser un problema.

+4

PVF = Función virtual pura. y GPF = ?? –

+1

@Comptrol: fallas de protección general en Windows. – Uri

8

Fui en la dirección opuesta. Comenzó con Java, luego se movió a C y C++. Para mi propia experiencia personal, era mucho más fácil aprender Java que C/C++ (especialmente C++).

Java de muchas maneras pretende ser C++ con muchas de las partes indefinidas e innecesariamente complicadas eliminadas o simplificadas. En mi humilde opinión, tuvo un gran éxito con ese objetivo. Como resultado, es un lenguaje muy fácil de aprender y usar. Especialmente para alguien que esté familiarizado con C++.

El tiempo real que tomará depende en gran medida de la persona que esté aprendiendo el idioma. Sin embargo, creo que es seguro decir que tomará menos tiempo para ser competente en Java que en C++.

+0

Si vas a rechazar una respuesta a una pregunta subjetiva, al menos deberías dejar un comentario que indique por qué – JaredPar

+0

Escucha, escucha. Soy una respuesta informativa a una pregunta, aunque la pregunta sea subjetiva, merece un voto positivo o no. –

8

No debería ser tan malo. La sintaxis y las clases deberían ser muy fáciles de entender. Hay algunas diferencias, pero ninguna de ellas es demasiado desafiante.

La parte más difícil es más sobre aprender los paquetes, ya que esos serán diferentes. Construido en clases y funciones de Java, y luego para usar Java de manera práctica, necesitará aprender J2EE o lo que sea que realmente esté usando. La última parte probablemente le tomará más tiempo que el idioma en sí.

+0

Los paquetes de lejos son el aspecto más difícil de aprender Java +1 – ojblass

1

Conozco C++, y tuve que trabajar con Java una vez y lo recogí en 2 semanas. Por supuesto, hubo bastantes sorpresas pero es fácil.

+0

Exactamente lo mismo para mí, ¡después de dos semanas ya estaba funcionando! – MissT

0

Creo que hay dos enfoques para el significado del término "programador de Java competente". Si se trata de lexemas, sintaxis y términos de OOP, comencé a comprender completamente Java antes de 2 (dos) días de aprendizaje. Pero en primer lugar se sentirá encantado por la imposibilidad de disparar su propia pierna;) Pero si se trata de un sistema de clase embebido (es decir, paquetes), referencias de API, consejos y trucos y etc., se tarda aproximadamente medio año en siéntete amigable con Java. Creo.

0

También aprendí primero C++ y luego Java. Me llevó mucho menos tiempo ya que ya estaba familiarizado con los conceptos de OOPS. En la fase inicial de aprendizaje, estaba realmente contento con los nuevos conceptos en Jave como el recolector de basura. Remití The Complete Reference de Herbert Schildt y me ayudó a obtener la sintaxis rápidamente.

2

En 1995, cuando lo hice, tardé medio día en ponerme cómodo con las herramientas y las ideas básicas, un día o dos para obtener el idioma, una semana para obtener las partes más oscuras del idioma (había menos de ellos en ese momento) y un mes para obtener las bibliotecas (había MUCHO menos de ellas en ese momento).

Ahora supongo que las herramientas y el lenguaje básico tomarán tanto tiempo, un par de semanas o un mes para las partes oscuras del idioma (depende de qué partes golpee y cuándo). Las bibliotecas básicas serán de un mes a dos meses (java.lang, java.util y algunas otras). Las bibliotecas de clases restantes 6 meses para siempre dependiendo de lo que necesita aprender y la frecuencia con la que se actualizan :-)

4

Si ya es un programador competente (especialmente en C++), entonces Java no tarda mucho en aprender en absoluto.Los libros que recomendaría (en orden) para cualquier persona que quiera aprender Java son:

Es posible que usted zip a través cabeza primero de Java en vez rápidamente, dada su experiencia. Por esa razón, te sugiero que lo consultes en la biblioteca y lo revises antes de pasar a Pensar en Java.

Consulte también Sun Java Tutorials.

0

Tengo el fondo C++. Recoger Java me llevó unos días, el lenguaje parece muy simple, al menos su base. Todavía consulto a mi gurú de Java, google un poco, pero generalmente se trata de explorar API y bibliotecas estándar. Java tiene algunas molestias, pero debería detectar la mayoría de ellas de manera fácil y rápida.

Me recomendaron Thinking in Java (hay un libro electrónico gratis), pero nunca fue lo suficientemente persistente como para leerlo. No escribo código de ciencia espacial en Java y, para hacerlo, mis habilidades son suficientes.

Habiendo dicho eso, sería bueno tener un mejor conocimiento formal del idioma. En este momento estoy pensando en estudiar para SCJP, que parece una forma sensata de aprender, además de que obtendrás un certificado de programación bien reconocido una vez que lo pases (he oído que no vale mucho, pero igual puede ser una motivación ...).

También puedes probar Java Black Belt - las respuestas frecuentemente me sorprenden. Después de tomar algunas pruebas, me pregunto cómo compilarán mis programas, lo que sugiere que probablemente no soy el programador Java más competente :)

0

¿Cómo definirías competente?Por mi dinero, los programadores Java más profesionales (como lo hacen por dinero) nunca llegan a ser competentes.

0

Empecé desde C++ y aprendí C# /. NET. Eso no tomó mucho tiempo. Como C# /. NET se desarrolló muy cerca de Java (utilizaron muchas de las técnicas básicas de Java como GC, clases de referencia, JIT, ...) Creo que no es tan difícil aprender Java.

0

En la actualidad, un lenguaje de programación obtiene gran parte de su poder de sus bibliotecas y modismos aceptados.

Si bien toma relativamente poco tiempo aprender el lenguaje Java, aprender a utilizar las bibliotecas disponibles (colecciones, io, etc.) con eficacia probablemente tomará mucho más tiempo.

4

Como escribió Tom Hawtin, la cuestión clave es cómo se define competente.

Podrá aprender el idioma con bastante facilidad, pero serán las expresiones idiomáticas y las bibliotecas las que tendrá que aprender. Y existen bastantes diferencias entre los nichos en los que trabaja (por ejemplo, integrado o empresarial) y entre bibliotecas que supuestamente resuelven los mismos problemas. Aquí hay algunos ejemplos:

  1. En aplicaciones comerciales/empresariales, generalmente trabaja con bases de datos. No se puede tener:

    • llanura JDBC
    • SQL mapeador (iBatis), envoltura alrededor prolijo y repetitivo JDBC
    • solución ORM (Hibernate), con una filosofía de su propio
  2. con las interfaces de usuario de escritorio, tiene dos plataformas de la competencia:

    • swing, una parte de JRE
    • SWT/JFace, desde Eclispe fundación, originado por IBM, con el apoyo de la interfaz de usuario nativa
  3. marcos web son demasiado numerosos para mencionarlos, con diferentes ideas de lo que representa la configuración, estructura de carpetas/paquete de interfaz de usuario, etc.

  4. DI (inyección de dependencia) es común en aplicaciones comerciales, ya sea por marcos de terceros como Spring o como parte del estándar EJB3. Pero, no creo que se use alguna vez en la configuración incrustada.

Sería justo decir que esto es sólo una punta del iceberg.

1

Me gustaría ir de seis a ocho semanas.

0

No debe tomar más de un día o dos para aprender el idioma, pero es posible que tenga que pasar unas semanas en la biblioteca de la clase: cómo usar colecciones, el paquete concurreny, reflexión, registro, swing/awt , proxies dinámicos, MBeans, etc.

0

aprendí C++ a los 15 años y me convertí en un programador de software profesional. Pero cuando busqué trabajo solo había trabajo disponible para desarrolladores de Java. Pensé que era difícil cambiar mi idioma. Así que solo para probarlo. Descargué el compilador de Java y solo por diversión escribí un código y descubrí que no es muy diferente de C++. . y solo después de 6 horas de investigación y aprendizaje, me convertí en un desarrollador de Java.así que es muy fácil cambiar entre C++ y java.

Cuestiones relacionadas