He "aprendido" C y ahora qué ?

Iniciado por mavicadi, 19 Agosto 2013, 03:13 AM

0 Miembros y 2 Visitantes están viendo este tema.

mavicadi

Hola a todos, en el último semestre he aprobado la asignatura de programación en C y resulta que me ha gustado. Ahora, lo que no sé es como seguir avanzando.

En clase hemos dado hasta los registros y buscando un poco he encontrado várias opciones. Por ejemplo, estructura de datos, programación de sistemas operativos y gestión de memoria.

No sé exactamente por donde seguir y con vuestra experiencia me gustaría que me indicaséis que camino seguir ahora y si me podéis decir también la importancia del tema os agradecería.

Por último y solo como curiosidad, hay mercado laboral para programadores en C?

Un saludo.

kaltorak

#1
Hola mavicadi

Yo te aconsejaría que continuaras aprendiendo C++, el lenguaje C esta muy bien como base pero hoy en día pocas empresas lo usan.

Es una pena por que a mi personalmente me encanta C, odio la programación orientada a objetos pero si de verdad quieres hacer algo en este mundo debes aprender C++, cosa que no te costara mucho si sabes C, pues como seguro conoces C++ contiene todas la instrucciones de C.

Otro lenguaje que podridas aprender y que al conocer C no te costra mucho, pues es una evolución del C++, es Java con el cual podrás desarrollar de aplicaciones móviles y de la web

Un saludo
kaltorak




Alien-Z

#2
Estoy de acuerdo con kaltorak, hoy en dia en pocos sitios te van a pedir que programes con lenguajes estructurados como C, y no solo eso, si quieres hacer aplicaciones complejas vas a necesitar mucho menos tiempo y esfuerzo utilizando un lenguaje que siga el paradigma orientado a objetos que con uno estructurado.

C++ o Java:

Aqui hay que señalar que, aunque Java esté basado en C++, no se pueden realizar aplicaciones del mismo nivel debido a que Java no utiliza un compilador sino un compilador interpretado junto a una máquina virtual. Esto es, cuando compilas con Java no se crean ejecutables sino unos ficheros intermedios de formato .java con instrucciones especiales que son leídas por la máquina virtual y ejecutadas una a una. Esto tiene sus ventajas y sus inconvenientes pero lo que más destaca:

1- Multiplataforma: Puedes ejecutar cualquier aplicación creada con Java en cualquier dispositivo ya sea un PC, un móvil, una consola, etc. siempre y cuando tengas instalada la máquina virtual de Java en ese aparato. C++ también es multiplataforma por supuesto, la diferencia es que no sirve el mismo ejecutable para cualquier dispositivo, es decir: Si quieres el programa para un MAC debes llevarte el código fuente al MAC y compilarlo ahi, y el ejecutable que has obtenido solo servirá para MAC's; si lo quieres para una distribución de Linux deberás llevarte el código fuente a esa distribución y compilarlo en ella.

De ahi que cuando quieres bajarte un programa de internet te dice "Selecciona el sistema operativo", porque aunque se haya desarrollado con un lenguaje multiplataforma, hay que lanzar el ejecutable específico para ese SO, cosa que no pasa con Java ya que los bytecodes (el código intermedio obtenido tras compilar) se puede ejecutar en cualquier plataforma, la gran pega es que tienes que tener instalada obligatoriamente la máquina virtual (a diferencia de C++ que no depende de ninguna aplicación).

2- Con Java no se pueden hacer grandes aplicaciones por lo comentado anteriormente: no se crean ejecutables, sino bytecodes, eso hace que al ejecutar las instrucciones de una en una se consuman muchos recursos. Nunca vas a ver un videojuego para PS3 o XBOX360 hechos en Java ni tampoco te van a pedir en un banco o una base militar una aplicación desarrollada con este lenguaje (donde la eficiencia y la seguridad son imprescidibles, esto da mucho que hablar, porque java tiene varios fallos de seguridad irremediables); sin embargo como es más rápido y sencillo el desarrollo en él (por tanto se necesita menor inversión), muchas empresas suelen sacrificar eficiencia por disminuir los costes.

¿Entonces Java o C++?: Yo siempre me he inclinado hacia el gremio de C++, nunca he sido muy amigo de Java pero en la universidad nos obligaron a programar con él una temporada, y ya que aprendí a usarlo he seguido haciendo aplicaciones sencillas por si algún día fuera a necesitarlo. Pero si quieres ser un programador de 10 te sugiero que aprendas los dos lenguajes, uno te va a ser más útil (o sencillo de usar) que el otro dependiendo del proyecto.

Otra opción es C#, la ideó Microsoft como "fusión" entre Java y C++, pero no tiene ni las ventajas de uno ni las de otro, es más bien una cosa mediocre con características de ambos lenguajes; aunque quizá otros compañeros del foro que hayan trabajado más tiempo con él puedan darte opiniones más completas.

Un saludo.

amchacon

C++ es el sucesor lógico de este, y aunque no lo orientes a objetos, tiene muchísimas más ventajas que su antecesor (entre ellas, la magnífica librería estándar, las referencias, las sobrecargas de funciones/operaciones...). Es mucho más potente y eficaz que C, aunque tiene un mayor nivel de abstracción, lo que hace que sea de más alto nivel que este.

Y por supuesto, cuando tengas un buen con C++. Podrías empezar con alguna librería multimedia (yo recomiendo SFML) y hacer algun juego de estos sencillos (Snake, Matamarcianos, Pong...).

Cuando oigo hablar de Java me da alergia, es una copia de C++ a la que le han truncado muchas cosas (ni punteros, ni operadores sobrecargadas, ni herencia múltiple...). Las pocas ventajas que ofrecen son a nivel de "prevención de errores" (como la comprobación de límites de array en tiempo de ejecución).

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

do-while

¡Buenas!

Si todavía no has estudiado nada sobre punteros, memoria dinámica y estructuras de datos sigue con C.

Una vez que te sepas todo eso al dedillo sigue, como ya te han dicho, con C++ o Java (por ejemplo...)

¡Saludos!

Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.
- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!

mavicadi

Bueno, como en otros posts que he comentado, empiezo pidiendo perdón por no dar las gracias antes pero he estado sin tiempo y prácticamente no he usado internet desde el verano, pero he vuelto!!

Gracias a los comentarios y los tendré en cuenta. Definitivamente quiero aprender C++, ya que java ya lo he usado un poco en la universidad y de C++ nunca he hecho nada.


Cita de: do-while en 19 Agosto 2013, 18:39 PM
¡Buenas!

Si todavía no has estudiado nada sobre punteros, memoria dinámica y estructuras de datos sigue con C.

Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.

Ahora mismo ando haciendo cosas en la universidad con punteros y memoria dinámica, aunque todavía no lo domino del todo, al principio cuesta jaja.


Una cosa, vosotros para aprender C++, memoria dinamica y punteros habéis leído algún libro o fue mediante busquedas en internet.
Si alguno ha usado algún libro y le ha ayudado mucho me gustaría que me lo recomendase.

Saludos!

eferion

Cita de: amchacon en 19 Agosto 2013, 18:38 PM
Cuando oigo hablar de Java me da alergia, es una copia de C++ a la que le han truncado muchas cosas (ni punteros, ni operadores sobrecargadas, ni herencia múltiple...). Las pocas ventajas que ofrecen son a nivel de "prevención de errores" (como la comprobación de límites de array en tiempo de ejecución).

A mi me suele dar alergia ver herencias múltiples XDDDD

Muchas veces pienso que se debe a que mucha gente usa la herencia múltiple sin ningún tipo de motivo... simplemente por desconocimiento o dejadez prefieren montar una herencia múltiple aunque sea innecesaria.

Además la herencia múltiple puede dar problemas si se usa sin control... como la herencia en diamante... aunque bien pensado todo en c y c++ puede dar problemas si se usa sin control XDD

daryo

CitarRobert B.K. Dewar y Edmond Schonberg, dos eminencias de la universidad de New York, consideran que la mediocridad de los nuevos ingenieros está directamente relacionada con la enseñanza de Java como primer lenguaje de programación.
:P
http//www.vivalinux.com.ar/biz/java-malo-para-estudiantes.html
buenas

Mitsu

A mí me sigue causando gracia oír que Java es "lento". Esto viene desde hace muchos años.

Cuando Java nació al rededor del año 1995, el hardware era demasiado limitado. Un módulo de 1MB costaba $30 y un procesador a 120mhz costaba casi $1000. En pocas palabras, si querías obtener 1GB de memoria ram, tendrías que pagar $30.000, pero en esa época las placas no soportaban esa cantidad.

Era la época del desarrollo de aplicaciones escritorio y los rivales eran 3: Java, C y C++. Los primeros benchmarks fueron desastrozos para Java, las aplicaciones en este lenguaje se ejecutaban entre 30-40 veces más lento que C y C++. Esto fue hace 14 años.

Hoy en día la JVM ha evolucionado significativamente, integrando tecnología de compiladores JIT, y esto mejorará mucho más con Java 8, al integrar JRockit por defecto, que es mucho mejor que Hotspot actual.

Bjarne Stroustrup dijo:

Citar
Hay sólo dos tipos de lenguajes de programación: aquellos de los que la gente siempre se queja... y aquellos que nadie usa.

De hecho, en los últimos Benchmakrs, Java siempre obtiene resultados muy positivos.

Solo me queda decir, que decir que Java es malo, es la excusa del programador mediocre.

daryo

#9
CitarSolo me queda decir, que decir que Java es malo, es la excusa del programador mediocre.

nunca mensione nada de la velocidad solo dije que era un mal lenguaje para iniciarse en la programacion.y en lo personal no lo recomendaria para nada


PD: ni para que desviar mas el tema es una opinion personal nada mas
buenas