|
Nikko_Bertoa
|
 |
« Respuesta #15 en: Mayo 16, 2008, 12:20:39 » |
|
(1) Nunca dije q no te dejara usar macros ni las cosas q me quejo de C. C++ no es un lenguaje aparte, conserva todo lo de C, absolutamente todo
(2) Otro error, si vos quitas todas esas cosas un codigo en C no puede ser compilado en el compilador de C++, por lo tanto eso seria un desastre pq habria q hacer todo de nuevo.
(3) C++ no tiene mas de una forma de hacer lo mismo, es completamente falso. Define es infinitamente distinto de declarar macros como funciones inline.
Dame el ejemplo que quieras de dos veces hacer lo mismo y te lo refuto
Y Hombre-Gris, sobre lo q dijiste del libro de Stroustrup, creo q esta mal, lo lei hace un rato tanto a la introduccion como a los capitulos de diseño y hace hincapie a la programacion orientada a objetos como manera de pensar y resolver los problemas, y de reutilizacion del codigo. TUve la materia ingenieria del software y el libro q seguiamos decia exactamente lo mismo, es del autor Hallote
|
|
|
|
|
En línea
|
|
|
|
|
david
|
 |
« Respuesta #16 en: Mayo 16, 2008, 09:40:34 » |
|
(2) Otro error, si vos quitas todas esas cosas un codigo en C no puede ser compilado en el compilador de C++, por lo tanto eso seria un desastre pq habria q hacer todo de nuevo.
No entendi lo que quisiste decir en el punto 2  Problema sencillo: Quiero tener un numero constante para usar en mi programa Solución: Creo una constante con mi lenguaje de programación. En C: #define MAX 5En C++: puedo usar la forma de C, porque el compilador me lo permite, ó puedo hacer const int MAX = 5;Repito: Para mi, que C++ haya mantenido compatibilidad con C es una decision que en este momento (2008) no se tendría que seguir manteniendo. Saludos!
|
|
|
|
|
En línea
|
|
|
|
psycho_mantis
Usuario
Desconectado
Mensajes: 96
|
 |
« Respuesta #17 en: Mayo 16, 2008, 09:54:28 » |
|
Problema sencillo: Quiero tener un numero constante para usar en mi programa Solución: Creo una constante con mi lenguaje de programación. En C: #define MAX 5 En C++: puedo usar la forma de C, porque el compilador me lo permite, ó puedo hacer const int MAX = 5;
Tengo entendido que una constante definida con #define (valga la redudancia translingüal  ) se va a reemplazar directamente en el código cuando pase por el preprocesador. Es decir que no ocupará espacio en la pila cuando el programa se esté ejecutando. Por lo tanto seria mas eficiente en terminos de memoria. Ahora, usar una constante const, te permitiria acceeder a ella a traves de namespaces y nombre ded clases, lo que clarificaría mas el código. Saludos
|
|
|
|
|
En línea
|
Para encontrar a Dios, hay que buscar su firma en la perfección matemática del Universo
|
|
|
|
david
|
 |
« Respuesta #18 en: Mayo 16, 2008, 10:07:46 » |
|
Yo entiendo las ventajas y desventajas de usar un #define vs un const. Pero este tipo de cosas donde uno puede "elegir" que usar son las que me hacen pensar que C++ tiene mas features que los que debería tener.
|
|
|
|
|
En línea
|
|
|
|
El Hombre Gris
Usuario
Desconectado
Mensajes: 130
True Believer
|
 |
« Respuesta #19 en: Mayo 16, 2008, 10:47:28 » |
|
Bueno, anoche me olvide de chequear el libro de Stroustrup, así que busque en la web. Acá tenemos al papá de C++ explicandonos que es C++: C++ is a general-purpose programming language with a bias towards systems programming that: * is a better C * supports data abstraction * supports object-oriented programming * supports generic programming By "systems programming", I mean programming the kind of tasks traditionally associated with the operating system and fundamental tools. This includes the operating system kernel, device drivers, system utilities, networking, word processing tools, compilers, some kinds of graphics and GUI, database systems, games engines, CAD/CAM, telecommunications systems, etc. This kind of work is strongly represented among current C++ users. For example, see my "applications" page: http://www.research.att.com/~bs/applications.html. Esto sacado de una presentación reciente de la próxima versión de C++ a salir este año o el próximo (aka C++0x). A continuación Stroustrup dice que los objetivos del lenguaje C++ son los mismos ahora y antes. C++ no busca desligarse en ningun momento de su antecesor, el lenguaje C. (1) Nunca dije q no te dejara usar macros ni las cosas q me quejo de C. C++ no es un lenguaje aparte, conserva todo lo de C, absolutamente todo
(2) Otro error, si vos quitas todas esas cosas un codigo en C no puede ser compilado en el compilador de C++, por lo tanto eso seria un desastre pq habria q hacer todo de nuevo. Estas equivocado. C y C++ no son enteramente compatibles. Para usar código C desde C++ tenés que usar la directiva extern "C" { .. }. Y otro punto importante es que en C++ no deberías usar las librerías de C directamente, o sea, no deberías usar #include <stdio.h> sino #include <cstdio> http://en.wikipedia.org/wiki/Compatibility_of_C_and_C%2B%2BY Hombre-Gris, sobre lo q dijiste del libro de Stroustrup, creo q esta mal, lo lei hace un rato tanto a la introduccion como a los capitulos de diseño y hace hincapie a la programacion orientada a objetos como manera de pensar y resolver los problemas, y de reutilizacion del codigo. TUve la materia ingenieria del software y el libro q seguiamos decia exactamente lo mismo, es del autor Hallote
Aún no pude releer el libro, pero no puedo imaginarme que Stroustrup cometa un error como el de prometer el santo grial de la programación sabiendo que el entorno académico se lo comería vivo. Además, siguiendo sus exposiciones sobre el C++0x, reconozco que más que nada es un tipo pragmático, más preocupado por elaborar las herramientas adecuadas para trabajar con objetos que preocuparse por las metodologías. Es más, C++ tiene grandes falencias en los features de programación genérica que dificultan la reutilización, entre otras cosas. C++0x promete incluir features para facilitar la reusabilidad de la programación genérica. ¿Qué carrera estas cursando? Realmente deberían usar una bibliografía más adecuada (busque el autor que decís pero no lo encontré). La promesa de reusabilidad en la sola aplicación del paradigma de objetos es una promesa vacía. Preguntenle a cualquier con experiencia de campo, empezando por david, que sé debe haber cruzado con más de un ejemplo de "OOP gone wrong". Incluso podríamos preguntarle a los que usaron J2ME a ver que opinan.
|
|
|
|
|
En línea
|
|
|
|
|
Nikko_Bertoa
|
 |
« Respuesta #20 en: Mayo 16, 2008, 11:32:18 » |
|
Di mal el autor, el libro es "An integrated Approach to Software Engineering" de Pankaj Jalote
Estoy cursando licenciatura en ciencias de la computacion en la Facultad de matematica, astronomia y fisica, aca en Cordoba capital. Creo que la bibliografia que dan es muy adecuada, ademas de q la facultad es publica, los profesores son gente muy requerida en tooodo el mundo, mayoritariamente egresados de aca. No se si la conoceran pero si conoces la competencia de ACM que se realiza todos los años en la UBA de resolucion de problemas logicos y matematicos mediante programacion, es muy probable q la conozcas. Bueno mi facultad salio 1era y tercera de Argentina( yo en el equipo que salio 3ero) y de sudamerica salimos 2dos y nosotros 5tos. Los pibes que salieron 2dos de sudamerica se fueron a Canada hace 1 mes y salieron 42 de 100.
Y creo que deberias releer la introduccion de Stroustrup donde dice que compilando C con el compilador de C++ (ademas de las librerias con c antepuesto que me decis) unicamente te pueden saltar warnings sobre requerimientos que impone C++, como casteo explicito. Si queres podes leer lo mismo en Thinking in C++ de Bruce Eckel, depues te busco la pagina exacta.
Saludos
|
|
|
|
|
En línea
|
|
|
|
El Hombre Gris
Usuario
Desconectado
Mensajes: 130
True Believer
|
 |
« Respuesta #21 en: Mayo 16, 2008, 01:00:48 » |
|
Di mal el autor, el libro es "An integrated Approach to Software Engineering" de Pankaj Jalote
Estoy cursando licenciatura en ciencias de la computacion en la Facultad de matematica, astronomia y fisica, aca en Cordoba capital. Creo que la bibliografia que dan es muy adecuada, ademas de q la facultad es publica, los profesores son gente muy requerida en tooodo el mundo, mayoritariamente egresados de aca. No se si la conoceran pero si conoces la competencia de ACM que se realiza todos los años en la UBA de resolucion de problemas logicos y matematicos mediante programacion, es muy probable q la conozcas. Bueno mi facultad salio 1era y tercera de Argentina( yo en el equipo que salio 3ero) y de sudamerica salimos 2dos y nosotros 5tos. Los pibes que salieron 2dos de sudamerica se fueron a Canada hace 1 mes y salieron 42 de 100. Qué extraño, acá en cs de la computación de la UBA nunca tuve un profesor que me mandara a aprender algo que así, no digo que no haya nadie que piense así por acá pero no estaría bien visto que alguien prometiera a sus alumnos que usando OOP van a generar código reusable, es una fantasía utópica y sesgada. Para algo vemos todas las putas técnicas algorítmicas y las metodologías de diseño primero, y después se en enfocan en el ADOO (optativamente). Disculpame pero creo que tal vez estás mal interpretando lo que te enseñan. ¿Estás seguro que te enseñan que el OOP fortalece la reusabilidad? Sobre ACM, conozco la competencia, sinceramente no me impresiona, puede generar una buena impresión en un CV pero un portfolio bien armado le pasa el trapo. Además quiero restringirme de hablar sobre ACM porque tengo una opinión bastante subjetiva sobre esa asociación y su falsa política open source. Nada por debajo de Google me impresiona. Nota al margen: tenía entendido que el equipo de la UBA había salido primero en latinoamérica en el último ACM. Y creo que deberias releer la introduccion de Stroustrup donde dice que compilando C con el compilador de C++ (ademas de las librerias con c antepuesto que me decis) unicamente te pueden saltar warnings sobre requerimientos que impone C++, como casteo explicito.
Prometo leerlo hoy mismo. Disculpen, hace mucho no toco el C++ pero si mal no recuerdo había unas cuantas cosas de C que no compilaban en C++, como el casteo implicito de punteros a void. De todas maneras, código C no debería usarse directamente como código C++.
|
|
|
|
|
En línea
|
|
|
|
psycho_mantis
Usuario
Desconectado
Mensajes: 96
|
 |
« Respuesta #22 en: Mayo 16, 2008, 02:21:27 » |
|
Pero este tipo de cosas donde uno puede "elegir" que usar son las que me hacen pensar que C++ tiene mas features que los que debería tener.
Bueno, es que justamente esa es una de las características mas visibles de C++, que te da mucha flexibilidad. C++ es asi. Saludos
|
|
|
|
|
En línea
|
Para encontrar a Dios, hay que buscar su firma en la perfección matemática del Universo
|
|
|
|
|
El Hombre Gris
Usuario
Desconectado
Mensajes: 130
True Believer
|
 |
« Respuesta #24 en: Mayo 16, 2008, 03:04:34 » |
|
Yo entiendo las ventajas y desventajas de usar un #define vs un const. Pero este tipo de cosas donde uno puede "elegir" que usar son las que me hacen pensar que C++ tiene mas features que los que debería tener.
Offtopic: david, ¿conoces el lenguaje D? http://www.digitalmars.com/d/
|
|
|
|
|
En línea
|
|
|
|
|
tulsi
|
 |
« Respuesta #25 en: Mayo 16, 2008, 04:09:35 » |
|
No sé por qué discuten tanto si ambos lenguajes son de lo más horrible
(tenía esa necesidad de decirlo, ahora sí: unleash hell!)
|
|
|
|
|
En línea
|
|
|
|
|
david
|
 |
« Respuesta #26 en: Mayo 16, 2008, 04:40:02 » |
|
Vi algo. Promete mucho, pero esta muy verde todavía, hace poco estaban migrando de librería base. Saludos!
|
|
|
|
|
En línea
|
|
|
|
|
|
|
Nikko_Bertoa
|
 |
« Respuesta #28 en: Mayo 16, 2008, 05:14:31 » |
|
@HombreGris: El de la UBA salio 3ero en latinoamerica y los del FaMAF 2dos, primero saliron unos brasucas y 4tos creo q tambien y 5tos nosotros No creo que te eleve mas el curriculum un buen portfolio, y no lo digo pq yo haya ido a ACM, pq personalmente no me atrae la idea de pensar problemas y codificarlos como se hace ahi. Pero a toda la gente q salio 1, 2 y 3 Google les ofrecio pasantias e IBM los contrato, algunos quisieron otros no.
Te en cuenta q toda la gente q fue a la competencia tiene un cerebro enorme y en emrepsas como IBM valoran eso pq un tipo super inteligente te puede romper un paradigma y/o crear cosas q a la empresa le da reditos increibles
|
|
|
|
|
En línea
|
|
|
|
El Hombre Gris
Usuario
Desconectado
Mensajes: 130
True Believer
|
 |
« Respuesta #29 en: Mayo 16, 2008, 05:41:54 » |
|
No sé por qué discuten tanto si ambos lenguajes son de lo más horrible
(tenía esa necesidad de decirlo, ahora sí: unleash hell!)
Casualmente, opino más o menos como vos. Y no somos solo dos los que piensan que el C/C++ apesta. El lenguaje viene cayendo cada vez más. Lo único que lo mantiene a flote al C es la construcción de sistemas operativos. Vi algo. Promete mucho, pero esta muy verde todavía, hace poco estaban migrando de librería base. Saludos! Igual el mercado del desarrollo informático se lo fagocito Java. Tira una piedra y seguro le pegas a un programador Java. Y el lenguaje que todos están mirándolo y frotándose las manos es ActionScript... y pensar que solo unos pocos años atrás nadie daba un mango partido al medio por un programador ActionScript. No creo que te eleve mas el curriculum un buen portfolio, y no lo digo pq yo haya ido a ACM, pq personalmente no me atrae la idea de pensar problemas y codificarlos como se hace ahi. Pero a toda la gente q salio 1, 2 y 3 Google les ofrecio pasantias e IBM los contrato, algunos quisieron otros no.
Te en cuenta q toda la gente q fue a la competencia tiene un cerebro enorme y en emrepsas como IBM valoran eso pq un tipo super inteligente te puede romper un paradigma y/o crear cosas q a la empresa le da reditos increibles
Rotundamente en desacuerdo con lo que decís. Casi 8 años de experiencia en el mercado me han enseñado ciertas cosas: * desconfiar rotundamente de los rockstar coders, son más peligrosos que los cowboy coders * las adquisiciones high profile de personal (a través de competencias con gran impacto mediatico, no al nivel de codear que es más bien algo interno de la comunidad) no son más que operaciones de marketing de las empresas * la inteligencia emocional es más importante que, o tan importante como, la inteligencia lógico-matemática * los cambios radicales no salen de las empresas (salvo que seas Google), más bien del ámbito universitario, y generalmente no produce réditos importantes a sus gestadores ---- Nota al pie: Google no da pasantías, en realidad otras empresas dan pasantías "en nombre de google", que en realidad no es más que una fachada para subcontratar code monkeys para hacer el trabajo sucio (esto lo sé por un conocido que fue a hacer una pasantía allá). Según me cuentan, Google es más bien una fraternidad de Stanford, o algo parecido a una secta, solo aceptan desarrolladores del mismo palo que ellos.
|
|
|
|
|
En línea
|
|
|
|
|