Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Ganar Dinero,siendo Un Programador De Videojuegos

Iniciado por Guirone, 08 de Diciembre de 2005, 04:28:31 PM

« anterior - próximo »

Flint

 Creo que Jare lo ha explicado perfectamente antes: si no llevas un buen tiempo con C++, "haces cosas". Algo muy diferente es programar y pensar utilizando la filosofía de C++. Si en una empresa te dicen que hagas algo rápido en un lenguaje nuevo para ti, lo haces y punto. Otra cosa es que el resultado final sea una muestra de "conocimiento profundo" de dicho lenguaje (que, evidentemente, no lo será).

CoLSoN2

Cita de: "zupervaca"
en mi opinion, un programador debe saber ante todo metodologia, el lenguaje realmente no importa nunca
Tanto como que no importa.. realmente "metodología de la programación" es poco más que algoritmia (y POO, si me aprietas), sin embargo para hacer un programa que funcione bien, si usas C++ deberás tener una amplia experiencia en manejo de memoria, que si tienes un background de PHP, Java o similares, no tendrás. Otro ejemplo es Python. Si no estás familiarizado con cómo funciona el lenguaje internamente y sus puntos fuertes y flacos, harás las cosas "igual que en C++", cuando ciertas cosas son verdaderos performance killers en Python que en C++ son lo más normal del mundo, y como workaround se usan ciertas prácticas que en C++ parecerían absurdas.

Ejemplo, en C++: (el método size() es un simple return de un atributo de array)
Citar
[...]
for (int i=0; ido(i);
[...]
mientras que en Python sería mucho más eficiente:
Citar
size = array.size()
do = obj.do
for i in range(size): do(i)
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

zupervaca

 por lo que veo el mayor problema de los programadores es el manejo de memoria y su administracion y no entiendo el por que, toda mi vida he tenido que administrar yo mismo la memoria y nunca ha sido un problema

Citar
size = array.size()
do = obj.do
for i in range(size): do(i)
lo unico que veo que cambia es la sintaxis ya que las primeras variables que indicas en python ya lo optimiza el compilador de c++ o incluso podrias hacerlo tu a mano si quisieras, ese for es identico al de c-sharp, basic y demas similares

Flint

 Totalmente de acuerdo con CoLSoN.

Por ejemplo, si trabajas en una empresa utilizando C y te encargan un proyecto para dentro de un mes en C++, lo harás. Pero el aplicativo final distará mucho de ser una muestra aplicada de la filosofía de C++. Utilizarás constructos específicos de C++, desde luego, pero en un mes no habrás cambiado tu mentalidad estructurada por una orientada a objetos. A la hora de resolver los problemas, seguirás pensando en C y, por lo tanto, no seguirás una correcta filosofía de POO, incurriendo en penalizaciones en la organización del código, rendimiento...

Y si vinieras de Java en lugar de C, te encontrarías con el problema de la gestión de memoria, que no es trivial precisamente.

En ambos casos, aplicarías la metodología a la que estás acostumbrado, sin tener en cuenta que, en ocasiones, diferentes lenguajes proponen diferentes metodologías y sin tener en cuenta tampoco las particularidades del nuevo lenguaje (que sí importan). Por eso, la frase típica de que "lo importante es saber programar, los lenguajes los aprendes en dos días" siempre la cojo con pinzas, y más si hablamos de C++.

zupervaca

 creo que si tu metodologia esta anticuada debes actualizarte, tengas o no que aprender un nuevo lenguaje de programacion

Flint

Cita de: "zupervaca"creo que si tu metodologia esta anticuada debes actualizarte, tengas o no que aprender un nuevo lenguaje de programacion
:blink:  

CoLSoN2

Cita de: "zupervaca"lo unico que veo que cambia es la sintaxis ya que las primeras variables que indicas en python ya lo optimiza el compilador de c++ o incluso podrias hacerlo tu a mano si quisieras, ese for es identico al de c-sharp, basic y demas similares
Evidentemente la sintaxis cambia, eso se ve a primera vista, lo que quería mostrar con el ejemplo (realmente debería haberlo dicho) es que en Python cada vez que llamas a un método de un objeto éste debe buscarse en una tabla, pues pueden añadirse métodos y propiedados en tiempo de ejecución, por lo que si vas a hacer obj.metodo() diez mil veces en un bucle, es mucho más óptimo asignar ese método a una variable (foo = obj.metodo) y luego llamarlo através de esa variable (foo()) para ahorrarte 10.000 búsquedas, que se dice pronto.
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

zupervaca

 
Cita de: "Flint"
Cita de: "zupervaca"creo que si tu metodologia esta anticuada debes actualizarte, tengas o no que aprender un nuevo lenguaje de programacion
:blink:
intentare explicarme mejor, la programacion orientada a objetos puede existir sin c++, pero el c++ no puede existir sin la programacion orientada a objetos, con lo que si no sabes programacion orientada a objetos no tiene sentido ponerte a aprender c++, por eso digo que si tu metodologia de programacion esta anticuada debes actualizarte, con lo que el programador de c de esa empresa no seguira pensando en c cuando programe en c++ si sabe programacion orientada a objetos

Cita de: "CoLSoN2"
Cita de: "zupervaca"lo unico que veo que cambia es la sintaxis ya que las primeras variables que indicas en python ya lo optimiza el compilador de c++ o incluso podrias hacerlo tu a mano si quisieras, ese for es identico al de c-sharp, basic y demas similares
Evidentemente la sintaxis cambia, eso se ve a primera vista, lo que quería mostrar con el ejemplo (realmente debería haberlo dicho) es que en Python cada vez que llamas a un método de un objeto éste debe buscarse en una tabla, pues pueden añadirse métodos y propiedados en tiempo de ejecución, por lo que si vas a hacer obj.metodo() diez mil veces en un bucle, es mucho más óptimo asignar ese método a una variable (foo = obj.metodo) y luego llamarlo através de esa variable (foo()) para ahorrarte 10.000 búsquedas, que se dice pronto.
de acuerdo ahora entiendo lo que querias decir, no obstante cuando estas aprendiendo el lenguaje debes aprender su funcionamiento, si python realiza una busqueda ya que sus tablas son dinamicas debe estar escrito en algun sitio como en el libro o documento que te estas leyendo para aprender el lenguaje

senior wapo

 
Cita de: "zupervaca"intentare explicarme mejor, la programacion orientada a objetos puede existir sin c++, pero el c++ no puede existir sin la programacion orientada a objetos, con lo que si no sabes programacion orientada a objetos no tiene sentido ponerte a aprender c++
Si hombre, si, aquí ya nos conocemos todos, pero aun así: macho, que C++ es algo más que objetos. Ahí tienes las excepciones y templates, por ejemplo. 0% POO, pero son C++.

Francamente, a este hilo le sobran mogollón de páginas, aunque si algo bueno ha tenido es que ha picado a Jare para que postee más. Con suerte se vicia y arrastra a alguien más  (twist)

Flint

 
Cita de: "zupervaca"intentare explicarme mejor, la programacion orientada a objetos puede existir sin c++, pero el c++ no puede existir sin la programacion orientada a objetos, con lo que si no sabes programacion orientada a objetos no tiene sentido ponerte a aprender c++

Como ha dicho senior wapo, C++ puede vivir perfectamente sin orientación a objetos, gracias a la TMP.

Por cierto, ¿cómo se actualiza un programador que no utiliza metodología POO sin programar en un lenguaje orientado a objetos? Porque digo yo que un programador no conoce realmente una metología hasta que no programa aplicaciones reales que hagan uso de ella.

No es mi intención seguir posteando constantemente, y menos ahora que veo que el tema del post estaba relacionado con ganar dinero como programador de videojuegos, pero es que se dicen algunas cosas...

zupervaca

 
Cita de: "senior wapo"Si hombre, si, aquí ya nos conocemos todos, pero aun así: macho, que C++ es algo más que objetos. Ahí tienes las excepciones y templates, por ejemplo. 0% POO, pero son C++.
los templates no son 0% programacion orientada a objetos, sacado de wikipedia: "Las plantillas son el mecanismo de C++ para implantar el paradigma de la Programación genérica. Permiten que una clase o función trabaje con tipos de datos abstractos, especificándose más adelante cuales son los que se quieren usar. Por ejemplo, es posible construir un vector genérico que pueda contener cualquier tipo de estructura de datos. De esta forma se pueden declarar objetos de la clase de este vector que contengan enteros, flotantes, polígonos, figuras, fichas de personal, etc"
por lo visto ya se ha hablado de abstaccion y de objetos en esa definicion ademas las excepciones devuelven objetos creados en tiempo de ejecucion, vaya eso es programacion orientada a objetos, la proxima vez antes de hablar informate mejor

Cita de: "Flint"
Por cierto, ¿cómo se actualiza un programador que no utiliza metodología POO sin programar en un lenguaje orientado a objetos? Porque digo yo que un programador no conoce realmente una metología hasta que no programa aplicaciones reales que hagan uso de ella.
te paso una web, me imagino que habra miles de ellas http://www.monografias.com/trabajos/objeto...s/objetos.shtml

senior wapo

 Las templates no representan POO,  se pueden usar con 0% POO. La abstracción no necesita POO, y las excepciones C++, aunque devuelvan un objeto no son en si mismas POO. Tu comentario sobre infórmate antes de hablar resulta cómico.

template<class T>
inline T& max(T& a, T& b)
{ return a > b ? a : b; }
template<class T>
inline T& min(T& a, T& b)
{ return a < b ? a : b; }


Ahí tienes un ejemplo de templates y abstracción que no tienen nada que ver con POO (lo uso para doubles,floats, ints ). La palabra "class" es semántica de C++ no implica que se usen necesariamente clases.

Fin de mi intervención en este hilo.

Flint

 
Cita de: "zupervaca"
Cita de: "senior wapo"Si hombre, si, aquí ya nos conocemos todos, pero aun así: macho, que C++ es algo más que objetos. Ahí tienes las excepciones y templates, por ejemplo. 0% POO, pero son C++.
los templates no son 0% programacion orientada a objetos, sacado de wikipedia: "Las plantillas son el mecanismo de C++ para implantar el paradigma de la Programación genérica. Permiten que una clase o función trabaje con tipos de datos abstractos, especificándose más adelante cuales son los que se quieren usar. Por ejemplo, es posible construir un vector genérico que pueda contener cualquier tipo de estructura de datos. De esta forma se pueden declarar objetos de la clase de este vector que contengan enteros, flotantes, polígonos, figuras, fichas de personal, etc"
por lo visto ya se ha hablado de abstaccion y de objetos en esa definicion ademas las excepciones devuelven objetos creados en tiempo de ejecucion, vaya eso es programacion orientada a objetos, la proxima vez antes de hablar informate mejor

Cita de: "Flint"
Por cierto, ¿cómo se actualiza un programador que no utiliza metodología POO sin programar en un lenguaje orientado a objetos? Porque digo yo que un programador no conoce realmente una metología hasta que no programa aplicaciones reales que hagan uso de ella.
te paso una web, me imagino que habra miles de ellas http://www.monografias.com/trabajos/objeto...s/objetos.shtml

Si lees atentamente lo que he escrito, verás que el enlace que das no viene a cuento. Lee bien antes de escribir.

Sobre la TMP, te recomiendo que leas el ítem 48 de Effective C++ (3ª edición) (y de paso te puedes leer el primero también, en el que Meyers define C++ como una federación de lenguajes, e incluye Template C++ independientemente de Object-Oriented C++). Un ejemplo extraído del capítulo, en el que la POO brilla por su ausencia:

template<unsigned n>
struct Factorial
{
enum{value  = n*Factorial<n-1>::value};
};

zupervaca

 
Cita de: "senior wapo"Las templates no representan POO,  se pueden usar con 0% POO. La abstracción no necesita POO, y las excepciones C++, aunque devuelvan un objeto no son en si mismas POO. Tu comentario sobre infórmate antes de hablar resulta cómico.

template<class T>
inline T& max(T& a, T& b)
{ return a > b ? a : b; }
template<class T>
inline T& min(T& a, T& b)
{ return a < b ? a : b; }


Ahí tienes un ejemplo de templates y abstracción que no tienen nada que ver con POO (lo uso para doubles,floats, ints ). La palabra "class" es semántica de C++ no implica que se usen necesariamente clases.

Fin de mi intervención en este hilo.
los doubles, floats e ints son tratados como clases en c++, un ejemplo: int i = (int)10.5f; las conversiones solo se pueden realizar entre objetos, que quede oculto al programador y no se puedan redifinir no significa que no sean clases, con lo que te sigo diciendo lo mismo antes, informate
las excepciones necesitan crear objetos con lo que se necesita la programacion orientada a objetos, con lo que volvemos al principio el c++ no puede existir sin la programacion orientada a objetos

Cita de: "Flint"
¿cómo se actualiza un programador que no utiliza metodología POO sin programar en un lenguaje orientado a objetos?
Si lees atentamente lo que he escrito, verás que el enlace que das no viene a cuento. Lee bien antes de escribir.
esa web que te he puesto te permite aprender programacion orientada a objetos sin especificar un lenguaje de programacion, y eso es lo que preguntabas

sés

Cita de: "zupervaca"los doubles, floats e ints son tratados como clases en c++
Es muy tarde, me voy a jugar al WoW.
Soy indeciso... ¿o no?






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.