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 »

zupervaca

 
Cita de: "Mars Attacks"
Cita de: "zupervaca"¿cuantos de vosotros podeis programar en c++ sin la programacion orientada a objetos?
Puessssss...


#include <iostream.h>

int main() {
printf("Adiós, mundo cruel\n");
}



No ha sido tan difícil ;)
veamos, C++ tiene una entrada global main como C, pero printf no es de C++ aunque sea soportado, printf es de C, para imprimir valores en la consola en C++ se usa el cout, ademas ese codigo daria un warning, se te ha olvidado poner el return <_<

¿os dais cuenta que la filosofia del c++ es la programacion orientada a objetos y vosotros estais diciendo que en c++ se puede programar sin la programacion orientada a objetos?

CoLSoN2

 ¿Soy el único al que le da un poco igual cuestiones tan absurdas como si C++ sin POO no existe, si los tipos básicos son clases o a qué huele un template? Primero porque no es el lugar, y ya se ha escrito más sobre estas mamarrachadas que sobre lo que trataba originalmente el thread, y segundo porque es algo totalmente inútil. ¿Os va hacer mejor programadores o ayudar a terminar antes un proyecto llegar a una conclusión final sobre el tema? Por cierto, que viendo como se desarrolla la discusión veo que nadie va a cambiar de opinión por mucha gente tenga en contra y por  mucha argumentos válidos se le den en contra de su postura, así que ¿por qué no lo dejamos ya?
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

 Informacion sacada de: http://es.wikipedia.org/wiki/POO

Citar
Polimorfismo: Las referencias y las colecciones de objetos pueden contener objetos de diferentes tipos, y la
invocación de un comportamiento en una referencia producirá el comportamiento correcto para el tipo real del objeto
referenciado. Cuando esto ocurre en "tiempo de ejecución", esta última característica se llama asignación tardía o
asignación dinámica. Algunos lenguajes proporcionan medios más estáticos (en "tiempo de compilación") de
polimorfismo, tales como las plantillas y la sobrecarga de operadores de C++.

Las plantillas de C++ estan dentro del polimorfismo de la programacion orientada a objetos

Citar
La programación orientada a objetos tomó posición como la metodología de programación dominante a mediados de los
años ochenta, en gran parte debido a la influencia de C++, una extensión del lenguaje de programación C.
El C++ usa la programacion orientada a objetos

Citar
Las características de orientación a objetos fueron agregadas a muchos lenguajes existentes durante ese tiempo,
incluyendo Ada, BASIC, Lisp, Pascal, y otros.
La programacion orientada a objetos es totalmente independiente del lenguaje


Conclusion: Si C++ usa la programacion orientada a objetos y esta ultima es totalmente independiente de el, la afirmacion de que el C++ no puede existir sin la programacion orientada a objetos, pero la programacion orientada a objetos puede exitir sin el C++ ES CIERTA.

Flint

 Definitivamente este tipo no tiene remedio. O no sabe leer, o no quiere hacerlo; coge textos y saca conclusiones de ellos totalmente equivocadas, en definitiva, escribe sin fundamento alguno. Y encima parece que se considera toda una autoridad, de hecho, es una autoridad, pero diciendo tonterías. Le digan lo que le digan (y aún aportando ideas y código de un libro tan reconocido por su calidad como lo es Effective C++), él sigue a su rollo, sin tener ni idea y soltando estupideces una detrás de otra. Tampoco me extraña, si ha llegado a decir que un registro es una variable...

Vamos, que por mi parte, definitivamente, ceso de intervenir en discusiones como ésta: es más razonable hablar con un primate que con este tipo.

Saludos.

dryaner

 bueno sobre este tema en particular del que se esta hablando (que nada tiene que ver con el tema del hilo) os comento mi punto de vista.

Yo "naci" en la programacion con java (bueno si descontamos el basic y esas cosas que uno se mira cuando era un criajo) y la poo, entendi el sistema muy rapidamente y java me parecio muy facil de usar, aun las cosas "complicadas" se entendian facilmente y eran "limpias" para el programador. Me tire entre 3 y 4 años solo tocando java, y de buenas a primeras tuve que hacer cosas en c++ y os puedo asegurar que las pase canutas para enterarme algo, y eso que al principio lo vi facil porque sintacticamente o como se diga era muy similar a java y las estructuras basicas tambien, peeeeroooo, pasado el primer contacto aparentemente sencillo, llego la hora de profundizar y me encontre con los graciosos punteros (grrr)  y los accesos a memoria  (asco), por no hablaros de los templates  (nooo) y empece a saber lo que era sufrir realmente programando, porque yo de todo eso me olvidaba completamente en java.

Otra gran dificultad para mi fueron las librerias, java es por si solo un lenguaje muy completo y estructurado, puedo hacer muchas cosas directamente, no se si me explico, en cambio c++ es un lenguaje vacio, lo abarca todo....pero basicamente es nada, sus librerias base para mi eran una basura, no permitian nada, tenias que hacerlo tu todo a saco, y despues habia variantes a puñados, salen librerias nuevas a espuertas de forma que me senti a la vez agobiado y falto de recursos (vaya impotentente total)....y encima no tenia string.

con esto digo que el que dice que se aprende c++ en 2 semanas que no se que lenguaje empleaba el antes para poder pasarse a este tan facilmente, porque en 2 dias puedes aprenderte la sintaxis pero el resto jaja.

Y bueno con c a secas ni os imaginais, era incapaz de programar asi, a mi me quitan mis clases y mis objetitos y me pierdo.

pues eso que llevo un año trasteando en el c++ y me siento verde verde, tardo siglos en hacer algo que con java lo hago 10 veces mas rapido, auqnue reconozco que java esta mas "limitado" que c++ en muchos aspectos y sobre todo que es mas lento.

...y sobre el que dice que no se puede meter se puede pasar un int a un metodo que pida object se ve que no a programado mucho en java porque se puede (aunque no a lo bruto).

sobre lo de la inversa de la cadena de caracteres, lo que me he quedado intrigado es con eso de emplear el caracter de fin de cadena, ¿como haceis eso? utilizas ese caracter de temporal y yasta?

ethernet

Cita de: "CoLSoN2"¿Soy el único al que le da un poco igual cuestiones tan absurdas como si C++ sin POO no existe, si los tipos básicos son clases o a qué huele un template? Primero porque no es el lugar, y ya se ha escrito más sobre estas mamarrachadas que sobre lo que trataba originalmente el thread, y segundo porque es algo totalmente inútil. ¿Os va hacer mejor programadores o ayudar a terminar antes un proyecto llegar a una conclusión final sobre el tema? Por cierto, que viendo como se desarrolla la discusión veo que nadie va a cambiar de opinión por mucha gente tenga en contra y por  mucha argumentos válidos se le den en contra de su postura, así que ¿por qué no lo dejamos ya?
levantemos el corazón, lo tenemos levantado hacia el señor, en verdad es justo y necesario...

zupervaca

 vale abandono, entonces desde ahora tendre en cuenta vuestras afirmaciones que las expongo a continuacion:

- c++ es un lenguaje que no hace falta programar con programacion orientada a objetos ya que esta no es su filosofia base
- los templates no usan polimorfismo parametrico, wikipedia miente
- las excepciones no crean objetos en tiempo de ejecucion, son magicos
- este codigo no es el mas optimo para el examen de pyro ya que falla por algun lado aunque no se indique cual
#include <string.h>
#include <conio.h>
#include <stdio.h>

void StringInv( char *psz )
{
char *pszE = psz;
while( *pszE != '<!--POST BOX-->' ) pszE++;
pszE--;
while( psz < pszE )
{
*psz ^= *pszE;
*pszE ^= *psz;
*psz ^= *pszE;
psz++;
pszE--;
}
}

void main()
{
char *psz = new char[10];
memcpy( psz, "Hola mundo", 10 );
psz[10] = '<!--POST BOX-->';

printf( psz );
printf( "\n" );
getch();
StringInv( psz );
printf( psz );
getch();
}

- la metodologia de la programacion no importa nunca, lo que importa es el lenguaje
- es imposible aprender programacion orientada a objetos si no lo haces con un lenguaje
- la programacion orientada a objetos es cosa de c++ y sin el no puede existir, pero el c++ puede existir sin programacion orientada a objetos
- los templates y excepciones no tiene nada que ver con la programacion orientada a objetos ya que los primeros no usan poliformismo parametrico y los segundos no crean objetos en tiempo de ejecucion ya que son magicos
- los tipos de datos no se consideran como clases, la web del curso de c++ que puse miente
- El printf pertenece a c++ y no ha c
- Es preferible usar c++ como un c "un poco mas listo"
- Los usuarios de stratos siempre dicen la verdad aunque no indiquen links para demostrarlo, zupervaca dice mentiras ya que aunque ponga links a paginas webs, estas tambien mienten y falsean la verdad

editado:
conclusiones: nunca lleves la contraria a X usuario de stratos ya que no dira nada, pero sabe insultar que da gusto

bueno, espero que ahora se termine el tema de una vez

editado2: no cambio de de pryo ya que el mensaje de vicente no tendria sentido

Jikan

 

      El tema de invertir la cadena, etc, NO era un examen de Pyro.  

Vicente

Cita de: "dryaner"...y sobre el que dice que no se puede meter se puede pasar un int a un metodo que pida object se ve que no a programado mucho en java porque se puede (aunque no a lo bruto).
Tienes que wrapearlo en un Integer (en la JDK 1.5 han añadido boxing y unboxing automático para los int y otros tipos por valor, pero hasta esa JDK te toca a ti hacerlo a manita). Los tipos por valor son cosas raras que están fuera de la jerarquía de objetos en Java. Yo en C++ pensaba que era igual (pero no opinio porque ni idea). En C# un Int32 es una estructura (usa boxing y unboxing automático también para cuando debe comportarse como un tipo por referencia).

Un saludo,

Vicente

er_willy

 el offtopic es nuestro señor y los flames su profeta.  ALELUYA!!!!



Mars Attacks

 
Cita de: "zupervaca"- Es preferible usar c++ como un c "un poco mas listo"
¿Quién ha dicho eso? ¿Por qué sientes tanto placer en tergiversar las afirmaciones ajenas?
La frase que yo he puesto es que cuando YO he usado C++ para algo, casi siempre ha sido como un C en el que puedo declarar variables a la altura del código donde me rote y cosas por el estilo.

Ah, y g++ no me dio ningún warning en la compilación del código anterior.

Si lo prefieres:


int main(){
int a=1;
return a;
}


Te pongo el return y todo, para que no te quejes. Ahora díme que no compila en C++ porque no pertenece al lenguaje.

Jare

Cita de: "zupervaca"
char *psz = new char[10];
memcpy( psz, "Hola mundo", 10 );
psz[10] = 0; // he cambiado lo de '<!--POST BOX-->';
Eso es un suspenso. ;-)

zupervaca

 sin entrar en conflictos, leer el post viendo que no critico a nadie

CitarTu no puedes decirle "numero.ConvertToString();", ni nada, porque no tiene ni propiedades ni metodos
mi forma de ver un int es que tiene los operadores sobrecargados, de hay que se puedan usar ++, --, etc ademas de ser una clase sellada con lo que no puede ser derivada en ningun momento

CitarAh, y g++ no me dio ningún warning en la compilación del código anterior
deberia de dartelo ya que no es correcto declarar una funcion int y no devolver un valor, normalmente cuando no se indica un valor el compilador pone uno por defecto, de hay que salga un warning, sobre el codigo que has puesto sigo diciendo que un int es una clase con lo que si se compilaria perfectamente en un compilador de c++

CitarEso es un suspenso. ;-)
me imagino que sera por el '<!--POST BOX-->', lo pone este foro cuando se encuentra con un barra 0, en mi post original explicaba que debia de ser sustituido por el barra 0, me gusta poner mas barra 0 ya que asi si por algun casual el codigo es compilado en una plataforma que no usa null o cero para indicar el final de un string funcione sin tener que adaptar el codigo, si es por el memcpy, es necesario ya que no se puede modificar una cadena declarada de esta forma: char *psz = "Hola mundo", este es uno de los motivos por el que me gusta que una funcion nunca modifique el buffer de entrada que se la pasa

Jare

 Citando la referencia de C++:

"C++ supports three kinds of object types:
Fundamental types are built into the language (such as int, float, or double). Instances of these fundamental types are often called "variables."
Derived types are new types derived from built-in types.
Class types are new types created by combining existing types. These are discussed in Classes, Structures, and Unions."

Citarme imagino que sera por el '<!--POST BOX-->', lo pone este foro cuando se encuentra con un barra 0, en mi post original explicaba que debia de ser sustituido por el barra 0, me gusta poner mas barra 0 ya que asi si por algun casual el codigo es compilado en una plataforma que no usa null o cero para indicar el final de un string funcione sin tener que adaptar el codigo, si es por el memcpy, es necesario ya que no se puede modificar una cadena declarada de esta forma: char *psz = "Hola mundo", este es uno de los motivos por el que me gusta que una funcion nunca modifique el buffer de entrada que se la pasa
Si, ya se que el barra cero no le sienta bien al foro. ;-)

Las cadenas de C y C++ por definicion van terminadas con un barra cero, y si la plataforma por casualidad no usa un cero binario para eso, el compilador se lo tiene que currar para que *p = 0 meta un terminador. Lo mismo con el puntero NULL.

El memcpy() es bueno usarlo para copiar bloques de memoria, aunque para tratamiento de cadenas en general el strncpy() resulta más claro. Pero la declaracion podria haber sido
char asz[] = "Hola Mundo";
que es C++ perfectamente legal, y no te obliga a contar cuantos caracteres tiene la cadena que quieres asignar.

El suspenso es porque reservas 10 caracteres y luego asignas en la posición número 11. :) Durante una hipotética entrevista también podría preguntar cual es el bug implícito en escribir "printf(psz);", pero de verdad que, aparte de ilustrar los diferentes niveles de conocimiento que se le pueden exigir a un programador en una entrevista,  coincido en que el thread ya se ha ido de madre y que quien quiera continuar, lo haga en programación. :)






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.