Registrarse

¿Qué lenguaje de programación debería aprender primero?

Estado
Cerrado para nuevas respuestas.

PkPower

Webmaster
Miembro del equipo
Webmaster
Lo q más busco en un lenguaje de prog. es que me sirva luego para otras plataformas como por ejemplo videoconsolas, smartphones, etc. Es decir, que merezca la pena invertir mi tiempo en aprenderlo bien. Como conocimientos previos tengo PHP.

Estás son algunas alternativas que las veo interesantes pero no logro decidirme:
- C
- Java
- Python
- Ruby
- C++

También me atrae Visual C# (de Visual Studio)

¿Qué debería de aprender (podéis proponer nuevos)?
 
@The_Doctor te recomendaría encarecidamene pascal (?)
A ver, yo también empecé con PHP, luego aprendi algo de ruby para RPGmaker y después aprendí python, que es el lenguaje que uso actualmente. Todos esos lenguajes están bastante presentes en todo tipo de proyectos, personalmente no me gusta mucho ruby, java es muy recomendable, sobretodo para aplicaciones android; para consolas desconozco que usan la verdad XD

Si tienes las ganas suficientes puedes empezar intentandolo con C++, que es el más potente de todos esos al ser compilado, para que te hagas una idea, C++ corre 10 veces más rapido que python.
Aunque por experiencia personal yo recomiendo python, muy flexible, sencillo y multiplataforma XD

Esto está desarrollado en python:
http://whackahack.com/foro/t-26876/pokemon-essentials-trainer-editor-en-desarrollo
Y me parece que cosarara también había publicado un editor de mapas para ROM's desarrollado en python.
 

Akuma no Atama

Usuario mítico
A ver, por tiempos de aprendizaje y no revolverte cuando escribas en un idioma u otro, primero, te recomiendo este orden:
C, C++, C#, Java, Phyton y Ruby.
Con esto, Java lo aprenderás rapidísimo.
Preocúpate más por generar una lógica eficaz que aprender muchos lenguajes, ya que si tu lógica es excelente, para pasar de un idioma a otro solo necesitaras aprenderte los códigos y su estructura.
 

cosarara97

Dejad de cambiar de nick
Miembro de honor
Yo opino lo siguiente:
- Java es horrible, y no lo necesitas (a no ser que vayas a trabajar en algún sitio donde lo usen, vaya). C# es ridículamente parecido a Java.
- C++ es horrible pero por ahora es la única opción real en ciertos campos (cuando se necesita código máquina con OOP y demases ej. motores de juego 3D). Están apareciendo cosas cómo Rust (de Mozilla) y Go (de Google), pero aún son poco maduros (aunque se pueden usar perfectamente).
- Python es genial. Te permite desarrollar cosas en mucho menos tiempo que en Java o C++, por ejemplo, por su dinamismo. La desventaja que esto conlleva es que no hay modo de comprobar los errores de tipo sin ejecutar al momento de compilación. Ruby cae en el mismo saco.
- C es de bajo nivel, pero a la vez muy simple y mucho más fácil de aprender que C++.

Para empezar yo te recomiendo que uses Python. Vas a poder llevar tus proyectos a cabo rápidamente, y por el camino podrás aprender gran variedad de conceptos que también puedes usar en otros lenguajes.

En general, una vez sabes python aprender otros lenguajes imperativos es muy fácil. Bajar al nivel de C y C++ y encontrarte con la gestión de memoria, pointers y segfaults puede ser un golpe un poco duro, pero una vez superado no es tanto.

(Nota: he escrito este mensaje un poco tarde. Buenas noches.)
 

Tsuna-Sawada

Décimo jefe Vongola
para mi el primer lenguaje de programacion que debes aprender deberia seria java ya que muchos apartos hoy en dia utilizan esa plataforma (EJ: Android) y ademas es facil de aprender.
 

Beelzenef

C# developer
A mí siempre me han recomendado Python, aunque después me he derivado un poco por Ruby...
No es que tenga mucha experiencia, pero creo que muchos coincidimos ya ^^

seeU!
 

Kaktus

Miembro insignia
Miembro insignia
Pues la verdad yo trabajo con Visual Basic, lo llevo aceptable y he aprendido en poco tiempo, aún así te recomiendo python, que a mi parecer es mas complejo de entender lo cual implica mas funciones, eso si, va mucho mas lento que otros lenguajes.

Te recomiendo Python
 

Jack Johnson

Hoenn Adventures Dev
Colaborador
Empieza por C y ves introduciéndote poco a poco a otros lenguajes, por ejemplo, Visual Basic. Ese tiene más ventajas con Windows.
 

Dockun

Veterano reencarnado
Python. Sin duda. Fácil de aprender, sencillo de usar, versátil, con multitud de posibilidades para llevar a cabo tus proyectos. Sin punteros ni horribles gestiones de memoria (al menos creo que en C puedes gestionar la memoria, en vez gestionarla únicamente el lenguaje por si solito independientemente de que sea lo que quieres o no...), Python es lo que buscas, así de simple.
 

Cheve

MoonLover~
Miembro de honor
para mi el primer lenguaje de programacion que debes aprender deberia seria java ya que muchos apartos hoy en dia utilizan esa plataforma (EJ: Android) y ademas es facil de aprender.
¿Que android no usaba "Android"? xD
Los celulares dejaron de usar sistemas Java desde 2009 aproximadamente. (Quizás meto la pata y android tiene base en Java).

Llendo al tema, y citando a mi buen amigo @Karimsahaya,

"Preocúpate más por generar una lógica eficaz que aprender muchos lenguajes, ya que si tu lógica es excelente, para pasar de un idioma a otro solo necesitaras aprenderte los códigos y su estructura."

Para ésto es que en las Universidades primero te enseñan Pascal, luego tu ves en que te quieres especializar, pero bueno. Ten en cuenta que no es algo tan sencillo como aprender a hacer Scripts, incluso se te paga por tener los conocimientos que quieres aprender.

Salu2!
 

Dockun

Veterano reencarnado
Para ésto es que en las Universidades primero te enseñan Pascal, luego tu ves en que te quieres especializar, pero bueno.
Desde la experiencia voy a opinar sobre esto: Pascal es útil para aprender lo básico de programación estructurada, es una sintaxis que requiere muchísimo orden y desde luego aprendes a detectar errores... Pero una vez te sales de lo básico se queda cojo en demasiadas cosas. No solo el lenguaje es terriblemente arbitrario con los errores en códigos más avanzados (bien podría inicializar las variables a los valores que le de la real gana al compilador en vez avisar al programador que las variables están mal inicializadas, un error que en un código de a lo mejor 2000 líneas es bastante difícil de localizar, sobre todo cuando el fallo en la ejecución puede no parecer tener relación alguna con eso), sino que el lenguaje es ridículamente cerrado para cualquier tipo de proyecto medianamente avanzado.

Enseñar Pascal en primero en las universidades me parece un error, sobre todo porque en si no existe una educación en programación más allá de cuatro indicaciones de sintaxis y a tomar por saco. Ni se enseña a desarrollar lógica, ni nada, por experiencia lo único que aprendes es precisamente lo que dije antes: Orden en el código y detección de errores. ¿Un año aprendiendo eso? No. Lo que hacen la universidades enseñando Pascal es equivalente a tirar un año de clases de Programación por la borda. Y aquí acaban mis quejas sobre la educación en España, resumiendo: No le recomiendo empezar por Pascal xD

Y empezar por Pascal, sobre todo cuando lo quiere hacer por hobby, es bastante desaconsejable en mi opinión.
 
Última edición:

cosarara97

Dejad de cambiar de nick
Miembro de honor
Desde la experiencia voy a opinar sobre esto: Pascal es útil para aprender lo básico de programación estructurada, es una sintaxis que requiere muchísimo orden y desde luego aprendes a detectar errores... Pero una vez te sales de lo básico se queda cojo en demasiadas cosas. No solo el lenguaje es terriblemente arbitrario con los errores en códigos más avanzados (bien podría inicializar las variables a los valores que le de la real gana al compilador en vez avisar al programador que las variables están mal inicializadas, un error que en un código de a lo mejor 2000 líneas es bastante difícil de localizar, sobre todo cuando el fallo en la ejecución puede no parecer tener relación alguna con eso), sino que el lenguaje es ridículamente cerrado para cualquier tipo de proyecto medianamente avanzado.

Enseñar Pascal en primero en las universidades me parece un error, sobre todo porque en si no existe una educación en programación más allá de cuatro indicaciones de sintaxis y a tomar por saco. Ni se enseña a desarrollar lógica, ni nada, por experiencia lo único que aprendes es precisamente lo que dije antes: Orden en el código y detección de errores. ¿Un año aprendiendo eso? No. Lo que hacen la universidades enseñando Pascal es equivalente a tirar un año de clases de Programación por la borda. Y aquí acaban mis quejas sobre la educación en España, resumiendo: No le recomiendo empezar por Pascal xD

Y empezar por Pascal, sobre todo cuando lo quiere hacer por hobby, es bastante desaconsejable en mi opinión.
Por lo que sé, si estudias informática en la UPC, aquí en barcelona, empiezan enseñando Java, no pascal. De todos modos, creo que también es un error.

Y respondiendo a Cheve, Android no usa una máquina virtual java tradicional (ni j2me), usa Dalvik (una VM de google). Aún así, el modo corriente de generar bytecode para dalvik es programar en java con el SDK de android. Luego, los archivos class de java se convierten a ejecutables de dalvik, y se empaqueta todo en un paquete de android (APK, Android PacKage).
 

RedMort

Aprendiendo Decomp
Yo en la uni de ing. informatica empezamos con java, seguido de C.

Supongo que es lo mejor, pero vamos que ni idea
 

Akuma no Atama

Usuario mítico
Pues vuelvo a opinar en el tema, y con el mismo argumento; preocupate por obtener primero la lógica; y te dare un ejemplo. Estas haciendo un script de Skills que con las habilidades suben de nivel los skills y con skills suben de nivel las caracteristicas primarias del personaje (HP, PP y Mana); esto se puede hacer en python, C#, java, etc. pero de nada te sirve saber que quieres si no sabes como lograrlo.

Lo de menos es aprenderte las etiquetas y sus funciones, lo importante es aprender a crear una estructura lógica, fluida y funcional que que puedas explicar facilmente a alguien que no sabe programación (Cuando puedes explicar un script son usar palabras ni "//" es que realmente sabes) es por que el script usaste lógica y el otro lo único que tiene que hacer es intuir.

Tomando el ejemplo, primero tendrias que hacer un script enlistando las habilidades (De momento no hay que ponerles propiedades xD). Como segundo paso, necesitaras enlistar los skills y como tercero enlistar los primarios, todo por separado (recuerda, aún no ponemos propiedades).

Una ves enlistados, lo único que tienes que hacer es hacer que se modifiquen:

Este es un script de Esmeralda Z, en el ya estan más detallados los skills, por lo cual hay unos puntos extra que no entenderan como el "25f". Vital es donde esta el Hp y PP, skill es donde esta el ataque, ataque especial, etc.
public Skill GetSkill(int index) {
return skill[index];
}

public void ClearModifiers() {
for( int cnt = 0; cnt < vital.Length; cnt++ )
vital[cnt].ClearModifiers();

for( int cnt = 0; cnt < skill.Length; cnt++ )
skill[cnt].ClearModifiers();

SetupVitalModifiers();
SetupSkillModifiers();
}

private void SetupVitalModifiers() {
GetVital((int)VitalName.HP).AddModifier(new ModifyingAttribute(GetPrimaryAttribute((int)AttributeName.Hps), .5f));
GetVital((int)VitalName.PP).AddModifier(new ModifyingAttribute(GetPrimaryAttribute((int)AttributeName.Pps), 1));

}

private void SetupSkillModifiers() {

GetSkill((int)SkillName.Hps).AddModifier(new ModifyingAttribute(GetPrimaryAttribute((int)AttributeName.HealPoints), .25f));
GetSkill((int)SkillName.Pps).AddModifier(new ModifyingAttribute(GetPrimaryAttribute((int)AttributeName.PunchPoints), .25f));
GetSkill((int)SkillName.Atk).AddModifier(new ModifyingAttribute(GetPrimaryAttribute((int)AttributeName.AttackPoints), .25f));

Y así sucesivamente con las 6 skills. Yo creo que la forma en la que lo he redactado es perfectamente entendible solo con leerla sin saber programación a fondo; de eso se trata la lógica, que puedas hacer exactamente lo mismo en cualquier idioma mientras conozcas sus etiquetas y su funcionamiento (En este caso, solo en cualquier idioma POO/OOP).

Yo personalmente amo los POO/OOP y te recomendaría entrases en ellos, específicamente en C#, que es mi favorito; pero bueno, cada quien sus gusto x3

PD: Este script sirve que para subir lentamente los skills de los pokemon cuando le das proteína, ya que la proteína no afecta directo al ataque, si no que a los puntos de ataque, entonces, 6 proteínas aumentarían 2 puntos de ataque con la lógica usada en pokemon, y cuando se llega al limite de puntos de ataque, no puedes subir el ataque de modo artificial. Tomenlo como una micro actu de esmeralda Z
 

enanogm

Usuario antiguo de Wah
en argentina, en general no siempre, se comienza con Pascal
razon? cito de un profesor: "Pascal está orientado a la enseñanza, por eso tenes que poner cosas como begin, end, etc" y unos diez minutos mas de cosas de pascal que lo demuestran...
despues seguimos con C, pero no solo aprendemos el lenguaje, lo que difiere la universidad de un curso de programacion es la teoria ¿que teoría? la teoria de los paradigmas de programacion, la evolucion de los mismos, la evolucion de algunos lenguajes, mucha historia de los creadores de dichos lenguajes, "filosofia" de la programacion y muchos, muchisimos, conceptos de buenas practicas, buen diseño, buen analisis, planteo de soluciones, documentacion, etc etc etc
(esto lo digo un poco en defensa de Cheve jaja, pero sin animos de ofender ni contradecir, solo aclarar)

bueno, luego seguimos con Java, para dar paso a un nuevo paradigma: Programacion Orientada a Objetos (C es programacion Estructurada). Nos enseñan la diferencia (que es ABISMAL) de programar con objetos a programaar orientado a objetos

con esas herramientas, aprender otros lenguajes es facilisimo

ahora, contestando la pregunta inicial del tema:
-Java es una buena opcion para empezar: es legible pero ademas tambien es expresivo. Es multiplataforma, siempre y cuando tengas la JVM instalada. Aunque en los ultimos años no se usa tanto como antes. lo interesante es la version JEE, ya que los objetos que diseñas son distribuidos, y las aplicaciones las corres en servidores! es interesante
-C# ha gando terreno ultimamente. parece interesante, nunca lo utilice, pero en sintaxis es parecido a java.
-C es un lenguaje excelente para aprender y es muy potente, pero como dije, es programacion estructurada
-Python parece una opcion recontrare-recomendable. hice un curso de introduccion al lenguaje en la universidad pero como estaba cursando base de datos, tenia solo SQL en la cabeza jaja. obviamente, es un lenguaje interpretado (al igual que java) por lo que no tiene la performance (ojo, en velocidad) que C++. éste ultimo, por cierto, es bastante mas complicado de aprender. es un lenguaje muy potente, compilado y OO, pero es jodido.

en fin, espero haber ayudado

saludos!
 

cosarara97

Dejad de cambiar de nick
Miembro de honor
Karimsahaya:
Si lo indentas quizá entendamos algo ;) :
Código:
public Skill GetSkill(int index) {
        return skill[index];
}

public void ClearModifiers() {
        for( int cnt = 0; cnt < vital.Length; cnt++ )
                vital[cnt].ClearModifiers();

        for( int cnt = 0; cnt < skill.Length; cnt++ )
                skill[cnt].ClearModifiers();

        SetupVitalModifiers();
        SetupSkillModifiers();
}

private void SetupVitalModifiers() {
        GetVital((int)VitalName.HP).AddModifier(new ModifyingAttribute(GetPrimaryAttribute((int)AttributeName.Hps), .5f));
        GetVital((int)VitalName.PP).AddModifier(new ModifyingAttribute(GetPrimaryAttribute((int)AttributeName.Pps), 1));

}

private void SetupSkillModifiers() {

        GetSkill((int)SkillName.Hps).AddModifier(new ModifyingAttribute(GetPrimaryAttribute((int)AttributeName.HealPoints), .25f));
        GetSkill((int)SkillName.Pps).AddModifier(new ModifyingAttribute(GetPrimaryAttribute((int)AttributeName.PunchPoints), .25f));
        GetSkill((int)SkillName.Atk).AddModifier(new ModifyingAttribute(GetPrimaryAttribute((int)AttributeName.AttackPoints), .25f));
De todos modos... creo que no soy el único que cree que esto no es para nada un ejemplo de buen código.
Obviamente, si uno conoce la sintaxis de Java, C# o algún lenguaje con sintaxis parecida, va a poder entender tu código a nivel lógico, igual que un ordenador. Pero, sin más contexto, entender la intención de este código es difícil de cojones.
Por qué tanta complicación para calcular los stats de un pokémon? (O personaje, o lo que sea)
Compara, esto:
Código:
GetSkill((int)SkillName.Atk).AddModifier(new ModifyingAttribute(GetPrimaryAttribute((int)AttributeName.AttackPoints), .25f));
Con esto (sacado de https://github.com/cosarara97/rock-tunnel/blob/master/r.py , que también es muy mejorable):
Código:
self.attack = self.calc_stat(self.base_attack)
Donde calc_stat es una función que no hace más que aplicar la formula de cálculo de stats de un pokémon de la primera generación (con algo de trampa, ya que no uso IVs ni EVs reales):
Código:
def calc_stat(self, base):
        floor = math.floor
        # Actual function is:
        # S = floor(floor((2 * B + I + E) * L / 100 + 5) * N)
        return floor((2 * base + 15 + self.level*2) * self.level / 100 + 5)
Supongo que tendrás razones para tratar dicho skill como un objecto con esos modificadores, pero hay que tener en cuenta que C# y Java son lenguajes que fomentan ese tipo de razonamiento.
Python, en cambio, es muy dinámico, de modo que permite simplificar mucho más el código.
 

Akuma no Atama

Usuario mítico
He escrito de ese modo el script por que no utilizo simplemente el calculo de nivel, tengo mis razones xD es que es algo un poco más complejo lo que estoy intentando lograr pero explicarlo por aquí es perdida de tiempo, vendrá en las actus de esmeralda z.

A parte, es más fácil aprender con códigos de ese tamaño que con los simples, por que con códigos así practicas más (Por eso decidí poner ese como ejemplo) y explique todo antes del script para que entendiesen.

Pero insisto, C# debería ser lenguaje objetivo si quieres dedicarte a desarrollo de videojuegos de AAA , pero para entenderlo mejor y que te sea fácil aprender, pasar primero por C y C++ (Que C++ ya es dirigido a objetos) y yo insisto en hacer ese proceso y no ir directamente a C# por el aprendizaje de lógica que adquieres con C y C++ (A parte, hay juegos comerciales que siguen programados en C++, pero la mayoría son base C#)
 

Akuma no Atama

Usuario mítico
[citation needed]
Yo más bien diría que es al revés. De hecho, que use C# solo conozco Unity.
Unity como plataforma para crear juegos (Que yo la uso y me parece bastante mejor que Cry engine y que Unreal que ya los he probado en sus ultimas versiones; solo que en unity no hay nada de ese calibre pre-programado, todo lo tienes que hacer tu, pero EXISTE LA ASSET STORE) es la unica que maneja C#, pero juegos a nivel comercial tengo entendido que varios titulos manejan C# por ser más simple y fluido que C++
 
Estado
Cerrado para nuevas respuestas.
Arriba