PDA

Ver la versión completa : Programacion en C/C++



Daxter
10/11/2003, 22:24
Vamo' a ve, ya estoi aki incordiando de nuevo. Leiendo diferentes posts del foro me han entrao unas ganas tremendas de aprender a programar. Esta tarde le e consultao a mi profe de infor y me a dixo ke pille una buena base de c y luego ir tirando. Pero es que yo de programacion no tengo npi por eso os hago algunas preguntillas a los entendidos en el tema:

+Que se puede hacer con c?
+Que es programacion basado en objetos o algo asi?
+Con c se pueden hacer aplicaciones para windows?

ala ai lo dejo para ke me exeis una manilla. dw

Wave
10/11/2003, 22:28
1- de todo
2- Es dificil de explicar, pero para simplificar es programacion que se basa en tratar las estructuras como objetos que pueden hacer cosas entre si... y mas...
3-Si

Hokutoy
10/11/2003, 22:43
Aunque desconozco totalmente el tema si te recomiendo que antes de comprarte algun libro de "PROGRAMACION EN C/C++ para newbes" que al final resulta que has de saber un webo y medio de C para pasar del capitulo 2 :p busques por inet (google) tutoriales y programas de practica, que ademas de haber muchos, los hay en castellano.

Saludos

Miki-chan
10/11/2003, 23:08
en esta web www.tayuda.com tienen un manual de C muy básico pero que está muy bien para empezar. ;)

race8086
10/11/2003, 23:12
consejo -> empieza por PASCAL.
Te ayudará a disciplinarte con el 'C'.

Veilkrand
10/11/2003, 23:43
Originalmente anunciado por race8086
consejo -> empieza por PASCAL.
Te ayudará a disciplinarte con el 'C'.
JEJE CONSEJO --> NO aprendas PASCAL. sorry race :)
Que te hayan hecho estudiar Pascal en tu ingeniería, no significa que sea lo mejor. Que mejor para disciplinarse en C, que aprender C :D

mortimor
10/11/2003, 23:55
No aprendas Pascal, perderas el tiempo (y eso que yo lo aprendi de pequeño).

Puedes enfrentarte al C directamente, con un buen libro, como "Programacion en C" (es un clasico y enseña lo mas basico, siempre con ejemplos). C++, es versatil y potente, tambien es un **** lio; me encanta (es orientacion a objetos pura y dura). Para windows... (ahora es cuando me cuelgan) utiliza C++ con Win32 (las MFCs hacen la vida mas facil a los que no tienen ni idea y dan mucho trabajo hecho, pero programas poco)

La programacion a objetos es toda una filosofia. Yo la sigo desde hace tiempo y desde mi punto de vista es lo mejor (en terminos de ingenieria). La sigo hasta el punto de estar modificando en demasia el codigo para aproximarme en C (encapsulacion en GP32, jejeje).

En conclusion: leete el libro de antes y luego busca uno de C++ (no te valdra para GP32).

Diabloman
10/11/2003, 23:59
el pascal es un buen punto de partida para aprender programacion por muchas razones que no vienen a cuento, pero estoi de acuerdo que lo mejor si quieres aprender c es empezar directamente por c.

Al principio te resultara mas complicado, pero sabes que todo lo q estas aprendiendo te es util de verdad y desde el primer momento veras resultados.

leete un par de manuales por la red para hacerte una idea y despues buscate algun libro que empiece en un nivel basico, pero que profundice mas que los manuales que hay por internet.

tomalo con calma,sobretodo al principio si no has programado antes, q es mejor programar una hora cada dia que un dia a la semana 7 horas jeje, te lo digo por experiencia. y haz muchos programas de ejemplo xq lo que siempre se dice es que a aprender se aprende programando.

Espero que haber ayudado, suerte:)

Daxter
11/11/2003, 00:02
oki, gracias a todos por vuestra ayuda, e estado buscando y e encontrado 1 serie de libros (4) :

-Programacion en c/c++
-Programacion orientada a objetos, c++
-Visual c
-Visual c 2

Los dos primeros son los que me interesan osea ke si eso me ire directamente al c y luego a los objetillos. mirare la editorial i me ire a la tienda de al lao de mi casa a ver si se lo puedo encargar.

pues lo dixo, gracias a todos :D

chemaris
11/11/2003, 00:22
u, creo que esto tb me sirve a mi tb quiero empezar en la uni estan con pascal auqnue yo elegi ingles tecnico y no doy programacion quiero empezar directamente en c
seguire vuestros consejos

UN SALUDo

zebra_mussel
11/11/2003, 00:40
Originalmente anunciado por Daxter
oki, gracias a todos por vuestra ayuda, e estado buscando y e encontrado 1 serie de libros (4) :

-Programacion en c/c++
-Programacion orientada a objetos, c++
-Visual c
-Visual c 2

Los dos primeros son los que me interesan osea ke si eso me ire directamente al c y luego a los objetillos. mirare la editorial i me ire a la tienda de al lao de mi casa a ver si se lo puedo encargar.



Una cosilla: yo te recomendaría que en vez de C++ pillases algo de Java. Creo que es más fácil de aprender. Una vez que tengas claros los conceptos de Objetos te será muy sencillo adaptarte a cualquier otro lenguaje del estilo como puede ser C++.

Otra: Un libro de C que te recomiendan en todos lados es:
"El Lenguaje de Programación C" de B.W. Kernighan y D.M. Ritchie

Saludos.

Zheo
11/11/2003, 00:57
C++ No es POO pura y dura. De hecho no fue diseñado así.

PASCAL es bueno para aprender programación estructurada, porque no crea vicios y además es parecido al psudo-código.

Para aprender POO no hace falta Java. Te pillas un buen libro de POO y estamos :)

De empezar empieza por c++, si lo que tienes pensado es aprenderlo. De todas maneras para aprender C++ vas a tener que estudiar antes lo que es un bucle, o una estructura condicional, así que te da lo mismo.

La POO es un paradigma de programación, se basa en que el componente principal de todo programa son los objetos. Un objeto es un ente que tiene unos atributos (características propias del objeto) y unas operaciónes que puedes realizar con él.
Por ejemplo imagina un objeto punto, que tiene como características sus coordenadas en el espacio (por ejemplo) y como operacion, pues moverlo en el espacio.
Puedes tener muchos puntos en el espacio, pero todos tienen esas características en común (coordenadas y la operación de moverlos por el espacio)

A partír de esta definición básica se abre un mundo.


Un saludo.

Veilkrand
11/11/2003, 01:23
Originalmente anunciado por Zheo

La POO es un paradigma de programación, se basa en que el componente principal de todo programa son los objetos. Un objeto es un ente que tiene unos atributos (características propias del objeto) y unas operaciónes que puedes realizar con él.
Anda macho que tas lucio... Ya hay que tener ganas de liarla XD

Zheo
11/11/2003, 01:59
Espero que con el ejemplo las cosas quedaran más claras :P :P

Fiera_SouL
11/11/2003, 02:07
Para los que busqueis documentacion al respecto.

Buscad en la mula "ebook spanish" o "ebook español" hay cantidad de manuales y documentacion al respecto.

Yo ya he gastado un huevo de papel imprimiendo :rolleyes:

Un saludo.

Fiera_SouL

dmartin
11/11/2003, 13:51
Solo comentar que pedagogimente hablando, el C puro y duo no es lo más aconsejable.
En un principio para asentar las "bases de los fundamentos de la programación" lo más aconsejable es algo como el basic , pues sus contrucciones son más intuitivas. Una vez que se aprenda a realizar algoritmos pasar a C no va a resultar demasiado complejo, y entonces ya nos podemos meter a fondo con lladas a funciones, procedimientos , arrays etc etc
De todos modos esto no significa que empezar desde 0 con el C no se pueda, todo depende de las capacidades de la persona.

Zheo
11/11/2003, 13:58
pues no, el basic crea vicios como el GOTO, y es mucho mejor. al menos didácticamente hablando. el PASCAL.

Daxter
11/11/2003, 14:09
pos bueno, ya me e exo con un libro de estos, por lo ke veo esta bastante interesante, ademas vienen 2 cds con ejemplos tal i kual osea ke kreo ke e escogido bien. :D saludos a todos i gracias x vuestros consejos, seguire al tanto del post.

Daxter
11/11/2003, 14:12
x cierto, alguna web de c?

Dyoser
11/11/2003, 15:40
Para aprender desde lo mas basico empieza con esta.
http://c.conclase.net/
Es muy buena y esta muy bien explicado. Em piezas con C y luego sigue con C++

Salu2

mortimor
11/11/2003, 18:20
Mirar, estamos hablando de como empezar a programar con vistas a utilizar C y C++, asi que... dejaros de correciones didacticas y ser mas pragmaticos. Primero se puede empezar por C para coger conceptos de programacion, e incluso puede que le sirva al chico para lo que el pretende sin utilizar C++, y luego se pasa a la OO.

Ya se que C++ no aparecio como un lenguaje orientado a objetos, pero se a adaptado a la perfeccion (aunque admita muchas licencias, que por cierto son para hacerlo mas potente). C++ es orientado a objetos y permite la aplicacion de conceptos tan fundamentales como herencia, polimorfismo y encapsulacion. Si se quiere explorar la orientacion a objetos con todas sus posibilidades es correcto (no digo perfecto, si los vicios que permite son malos) y es de los pocos que permite herencia multiple (para aprobechar esto hay que saber mucho, no es para neofitos en diseño).

Java esta muy bien pero, esta es la eterna discusion, es menos eficiente (por decirlo de alguna manera).

Por favor Zheo, ahorra los conceptos tecnicos a los novatos que no son de recibo y confunden bastante. El resto creo que ya sabemos las diferentes definiciones de Objeto, yo me quedo con la de Booch (Instancia de una clase. Se define por sus tres caracteristicas fundamentales: Identidad, Funcionalidad, Estado. Mas o menos, que me perdonen los puristas, que ahora no tengo a mano la definicion exacta).

Zheo
11/11/2003, 19:02
Si empiezas en C para luego pasar a C++ para eso es mejor empezar directamente en C++. Para empezar de cero a programar en C++ vas a tener que dar programación estructurada igual que en C.
Otra cosa es que quieras empezar en C porque es lo que vas a usar (por ejemplo en la GP32) y luego además aprendas C++

Di una explicación de objeto porque Daxter preguntó qué es programación orientada a objetos. Y digo yo que para explicar ese paradigma de programación habrá saber qué demonios es un objeto digo yo :)
De todos modos si lo defines como instancia de una clase, tienes que explicar de igual manera qué es una clase, y no se si será peor el remedio que la enfermedad ;)

Por último hay que diferenciar entre saber programar y saber escribir un programa en un lenguaje, que como sabrás son cosas distintas. Así que lo didáctico no creo que sobre.

Un saludo.

mortimor
11/11/2003, 22:03
Si, tienes razon Zheo. Lo del C y C++... vale, hasta cierto punto los principios son parecidos, pero yo me referia a la hora de adquirir conceptos basicos y probarlos (bucles, condicionales, selecciones, memoria dinamica,...) que el C solo esta bien.

Es cierto que hay profesores y autores que casi recomiendan empezar por un lenguaje OO si lo que se pretende a priori es desarrollar con OO ya que se evitan vicios de la programacion estructurada y conceptos erronios.

Vale, ahora me voy a cenar y despues os pongo un par de ejemplos claritos de clases y objetos con las cosas llamadas por su nombre.

mortimor
11/11/2003, 23:14
A ver.

Primero presentaremos la OO como un paradigma de desarrollo del software (no de programacion unicamente) y ahora se nos presenta otro problema, ¿que es un paradigma de desarrollo del software?. Como ya he dicho este no es el camino, ya que hay mucha gente que se perderia y no es plan ponernos a explicarlo todo desde cero. Asi que me voy a dejar de pamplinas.

A grandes rasgos dire que la Orientacion a Objetos es una forma de plantear la solucion de problemas logicos o de ingenieria utilizando como ejemplo el mundo que nos rodea. Con ella se pretende representar un problema real de una forma natural, si queremos hacer un programa que simule el comportamiento de un coche, ¿por qué tratar al coche como A y no como el Coche A?.

Veamos como definir el caso del coche en OO. Queremos representar un coche no lo llamaremos A o elemento A o 1. Un coche tiene varias caracteristicas que nos gustaria simular: color, marca, velocidad punta, potencia,... Lo que importa es cuales de estas caracteristicas nos importan para nuestra simulacion, que diremos que es para un juego de carreras. Nos centraremos en el color, la velocidad, la aceleracion y la posicion.

Definamos nuestro objeto COCHE, si objeto:

- Un COCHE, es un objeto que tiene un color, se mueve a una velocidad, acelera en una proporcion determinada y se encuentra en una posicion tambien determinada. Estos seran los atributos o propiedades de un objeto coche.

- Pero la velocidad se determina en funcion de la aceleracion y nuestras indicaciones. La posicion depende de la velocidad, la posicion anterior y nuestras indicaciones. Estas seran las funciones o metodos que determinaran el comportamiento de un objeto coche.

Pero pueden encontrar coches con diferentes colores, que van a diversas velocidades, ... bla, bla, bla. Coches diferentes. Se podria decir que todos estos coches tienen cualidades comunes y funcionalidades comunes, esto es: pertenecen a una CLASE.

En C++:

class Coche
{
int color; /*cada color tiene un numero asignado*/
int velocidad;
int aceleracion;
int pos_x;
int pos_y;

CalcularVelocidad(int boton); /*boton indica una tecla pulsada*/
CalcularPosicion(int boton);
}


Bien, definamos que es un OBJETO (mas o menos) coche: un objeto tiene unas propiedades (las que hemos dicho), tiene un estado (color=azul, velocidad=200K/h, aceleracion=15m/s^2,...) y una identidad (esto es lo que diferencia dos objetos que tienen las mismas propiedades y el mismo estado).

Esas son las tres cualidades de un objeto: propiedades (atributos y metodos), estado e identidad. (corregirme si me equivoco, que no lo tengo muy fresco).

Zheo
12/11/2003, 00:35
Un paradigma de programación no es tan dificil de describir, es básicamente un modelo de programación, es decir, una manera o un enfoque para hacer el programa.

La verdad es que a veces para describir las cosas nos complicamos mucho (yo el primero) :) A ver que os parece esta explicación lo menos técnica posible:
Nosotros vemos el mundo orientado a objetos: por la calle puedes ver pasar un Audi, un Renault o un Mercedes, pero tú piensas en ellos como Coches, y aunque tengan diferencias (tamaño, color marca...) tú los reconoces como un coche. A esta capacidad se le denomina abstracción: separar las cualidades diferentes de varios objetos para considerar las similitudes.
Por eso tenemos un concepto, por ejemplo, de una mesa, y éste concepto es el mismo, aunque veamos una mesa cuadrada, rectangular, de madera o metal, siempre pensamos en una 'mesa'

Pues ese es el enfoque que pretende la POO.
El concepto del objeto sería lo que en la programación se denomina clase -en este caso tendríamos la clase 'mesa'
Las diferentes instancias serían los objetos. Podemos tener varios objetos 'mesa' que serán de distintos colores, formas y tamaños, pero todos ellos tienen algo en común: son una mesa :) Con esto hemos realizado la abstracción de una 'mesa'.
Cada uno de las mesas son los objetos Son lo que realmente usaremos para programar, con lo que realmente interactuamos.
Esto también es así en la vida real: no vemos conceptos (clase) de coches por la calle, sino coches, objetos. El concepto de coche es algo que nosotros hemos creado, pero como tal no existe de forma tangible.

En el mundo real, los objetos pueden realizar acciones, por ejemplo una persona puede caminar, hablar o relacionarse con otras personas u otros objetos.
Siguiendo con el buen ejemplo de mortimor, imaginemos que una persona está en un coche. Son dos objetos distintos, pero si la persona pisa el acelerador, el coche responde acelerando. Es decir, el objeto 'persona' envía un mensaje al objeto 'coche' y éste realiza una acción.
En programación ocurre lo mismo, sustituye a la persona por el usuario del juego, y el acelerador por una tecla y ya lo tienes relacionado con la programación: un objeto 'jugador' enviaría un mensaje al objeto 'coche' para que el coche acelere. Fijaos que da igual que coche sea, todos los coches se pueden acelerar (sino vaya mierda de coche xD)

Hay muchas más características asociadas a la POO pero esto es lo básico y lo podemos resumir así:
La POO pretende modelar un programa de la misma manera que vemos el mundo, es decir, como objetos que se relacionan unos con otros.
Por contra la programación estructurada modela el programa como una secuencia de acciones a realizar.

Bueno, además de mi rollo también os dejo esto: Un buen curso de C++ (http://www.gnacademy.org/text/cc/Tutorial/Spanish/)

Veilkrand
12/11/2003, 11:07
Originalmente anunciado por Zheo
Si empiezas en C para luego pasar a C++ para eso es mejor empezar directamente en C++.
AArgh, vaya rollo de thread!! Tio actualmente nadie programa en sòlo en C, ya que las simples líneas de comentario multiple como:
/* :P */
Ya son C++. La única diferencia real es programar en OO puro o estructurado...


Un paradigma de programación no es tan dificil de describir, es básicamente un modelo de programación, es decir, una manera o un enfoque para hacer el programa.
Aunque te parezca mentira la orientacìón a objetos va mucho más hayá de los 'programas' o la programación.


Originalmente anunciado por mortimor

Java esta muy bien pero, esta es la eterna discusion, es menos eficiente (por decirlo de alguna manera).
Jeje, ya ves que si puede ser eterna :). Sólo comentar que Java (y ahora .NET), tiene el lastre de la máquina virtual. Pero representa muchas ventajas... Además que más te dá si cada año los procesadores son un 30% más potentes al mismo precio?.
Saludos

Zheo
12/11/2003, 11:34
Los comentarios /*...*/ son de C Los que son de C++ son los comentarios de una línea. (//...) :P


Aunque te parezca mentira la orientacìón a objetos va mucho más hayá de los 'programas' o la programación.
Bueno, no puedo hablar de eso porque no conozco ningún ejemplo concreto (tal vez bases de datos?).
De todas maneras si estamos hablando de 'paradigma de programación' está claro que nos referimos a aplicar OO a programación.

Gracias a la regla de los procesadores más rápidos cada año y la memoria a menor precio tenemos esos programas que nos gustan tanto, lentos y que apenas comen recursos, por ejemplo el mPlayer.
Dime por ejemplo para que sirve el código administrado de .NET si total es sólo para plataformas windows.
Que bonito va a ser tener que actualizar el ordenata cuando salga el longhorn...

Por otro lado esa pérdida de rendimiento puede que no puedas permitírtelo en según qué aplicaciones, por ejemplo juegos.

Un saludo

Veilkrand
12/11/2003, 11:59
Originalmente anunciado por Zheo
Bueno, no puedo hablar de eso porque no conozco ningún ejemplo concreto (tal vez bases de datos?).
La OO ante todo es una filosofía para explicar muchos conceptos. Se trata de describir el mundo, los objetos que viven en el, y su relación e iteracción entre ellos. Que se utiliza recurrentemente para el diseño y análisis, ya sea bases de datos o gestión interna de una compañía. Otra cosa es que exista la programación orientada a objetos POO...


Por otro lado esa pérdida de rendimiento puede que no puedas permitírtelo en según qué aplicaciones, por ejemplo juegos.
Me refiero que lo que ahora parece un derroche de rendimiento, en unos días merece la pena por otras ventajas. Desde luego con un procesador de hace 10 años te hecharías las manos a la cabeza, y te negarías en rotundo a hacer un juego del 3 en raya en java que consume tantos recursos como el Street Fighter.
Pero una vez superado el handicap de memoria y potencia, ya merece la pena hacer cualquier cosa, sea un juego serio o una aplicación para un banco. Cómo, creo yo ocurre actualmente. Mirad las Palm, los java servlets, la GBA(tienes varios ports de java y VM), etc... Yo desde luego pienso que es el futuro.
Saludos

Veilkrand
12/11/2003, 12:06
Originalmente anunciado por Zheo
Dime por ejemplo para que sirve el código administrado de .NET si total es sólo para plataformas windows.
Eso no es del todo cierto, es de momento para plataformas Windows porque la plataforma de Microsoft es Windows :p. Sin embargo sólo bastaría con crear una máquina virtual .NET para la nueva plataforma...
Una ventaja que tiene el .NET frente a Java, es que a diferencia de Java tu puedes trabajar en .NET con cualquier lenguaje de programación (que cumpla los estándares de OO), y exista un compilador claro. De hecho si tu quieres te puedes hacer tu propio lenguaje para .NET

Zheo
12/11/2003, 13:39
Me parece bien que exista la OO en otros contextos, pero en este estamos hablando únicamente de programación y a eso me refiero.

A mi la regla de "como total hay potencia de cálculo" no me convence. Si fuera así estaríamos usando ordenación burbuja en vez de quicksort o mergesort, total, porque tarde un poco más no pasa nada, dentro de dos años irá más rápido...
Y si te parece normal hacer un 3 en raya que requiera un ordenador que mueva el street figter... ***** entonces, ¿cuando vas a poder jugar a un street figther? ¿Cuando tengas un ordenador que mueva el quake?
Vamos que el java tiene muchas cualidades, pero no deja de ser un emulador y por tanto, más lento. Particularmente me fastidia bastante que un IDE (jGRASP) me tarde 10 segundos en cargar cuando uno nativo (Dev-C++) tarda 1.

Respecto a lo de .NET, me parece muy bien que tenga potencial, pero de momento sólo sirve para máquinas windows, aunque haya proyectos para otras plataformas. Vaya excusa lo de crear una MV para otra plataforma.
Acabamos antes haciendo una API común, como ya las hay, y compilando el mísmo código para cualquier plataforma, y ya lo tenemos: código portable y eficiente.

Además los proyectos de MV son ajenos a la empresa... pues vaya bien... al menos SUN tiene MV para varias plataformas.

Y si, puedes usar cualquier compilador para hacer .NET y hacer código que funcione en cualquier parte (bueno, en cualquier parte que tenga el framework .NET)
Pues vaya novedad, a mi me enseñaron que el paradigma COM se creó con esas premisas, pero bueno.
Lo peor es que habrá gente que pensará que es innovador y todo.

Vamos, que otra pijada de MS que como todo lo suyo tiene cosas buenas (pocas) malas (pocas) y orientado al monopilo (Muchas, C# es el ataque directo al Java de Sun).

Por cierto, ¿como es posible que el juego que has puesto en otro hilo no pueda usarlo con mi MV? No se supone que es Java (esto lo pregunto sin coñas, pensé que sólo se crea el .jar y está)
¿Hay alguna manera de poderlo rular?


Un saludo

Veilkrand
12/11/2003, 16:05
Originalmente anunciado por Zheo
Si fuera así estaríamos usando ordenación burbuja en vez de quicksort o mergesort, total, po...
Una cosa es hacer las cosas optimas, y otra la potencia de proceso...

[QUOTE]
Vamos que el java tiene muchas cualidades, pero no deja de ser un emulador y por tanto, más lento.

Buff, Java no es ningún emulador...



Vaya excusa lo de crear una MV para otra plataforma.
Acabamos antes haciendo una API común...

Java tiene una API común, y .NET también, no tiene nada que ver...



Pues vaya novedad, a mi me enseñaron que el paradigma COM se creó con esas premisas, pero bueno.
Lo peor es que habrá gente que pensará que es innovador y todo.
No se la gente, pero desde luego tú no es que tengas mucha idea... Comprate un libro.



Por cierto, ¿como es posible que el juego que has puesto en otro hilo no pueda usarlo con mi MV? No se supone que es Java (esto lo pregunto sin coñas, pensé que sólo se crea el .jar y está)
¿Hay alguna manera de poderlo rular?

Claro que es java, pero PalmOs sólo reconoce ficheros en formato propio, por lo que el Jar que contiene las clases y recursos está empaquetado en formato PDB. La forma de que lo pruebes en otra MV es que te pase los Jar originales...

No se, la verdad es que dices mucha tonterias, y yo ahora tengo poco tiempo. Te aconsejaría (si te interesa), que te compraras un buen libro de Java dónde te expliquen todos los conceptos...
Saludos

Zheo
12/11/2003, 17:16
Vaya, hay que explicarlo todo: :(

Ya se que Java no es un emulador, es interpretado, es una forma de hablar: En realidad estás interpretando código de una máquina en otra. Se parece bastante al intérprete de una emulación ¿no?

Claro que Java tiene una API común: es un mismo lenguaje para todas las máquinas!!!
Estaría cojonudo que un lenguaje que apuesta por la portabilidad, tuviera una API para cada máquina! Entonces donde estaría el beneficio.
Y .NET tiene una API común. Y la API win32 también, y las MFC también.... es igual para todos los windows. Pero sólo para windows...
Me refiero a una API común para todas las plataformas De manera que con el mísmo código (o con los mínimos cambios posibles) podamos compilar en varias plataformas código nativo.

Veilkrand
12/11/2003, 17:24
Zheo, de verdad, creo que tienes un buen cacao montado, comprate un libro para aprender si realmente te interesa el tema (en realidad se lo recomiendo a todo el mundo que le interese aprender sobre esto).
Java no emula nada, es el mismo bytecode en todas las plataformas.
Estoy viendo que mezclas SO y plataformas físicas(procesadores y sistemas).
Que tendrá que ver las APIs con las VM??

Zheo
12/11/2003, 17:41
Amos a ver:
el bytecode de Java idéntico en cualquier plataforma, vale.
¿sin embargo, qué hace la MV de Java de cualquier plataforma? Traduce el bytecode a código nativo. Es decir, interpreta un código para que funcione en otra máquina.


Windows tiene una API común para windows.
Java también para Java, pero gracias a las máquinas virtuales sirve para varias máquinas.
¿Sin embargo, has oído hablar de SDL? ;) Creo que el mismo código se compila en varias plataformas y máquinas distintas.


Y respecto a lo de mezclar APIs te lo pondré de otra manera:
si la tecnología .NET se extiende, y surgen MV .NET para linux y/o MAC, los programas realizados con la API .NET (que es para windows es principio) servirían para todos ellos.
Ya ves que la API y la MV están algo relacionados.

Veilkrand
12/11/2003, 17:50
Originalmente anunciado por Zheo
los programas realizados con la API .NET (que es para windows es principio) servirían para todos ellos.
Ya ves que la API y la MV están algo relacionados.
Buff, NO HAY API .NET, las API son de cada lenguaje de programación...
La verdad, me resulta bastante ridiculo que intentes convencer a la gente de lo inutil que es el Java o la plataforma .NET.
Para mi parte este thread ha terminado...

mortimor
12/11/2003, 18:28
J o d e r, me asombra la facilidad con la que hablas de temas en los que manifiestamente no has profundizado Zheo. Ejemplos:

- El paradigma objetal no es de programacion (unicamente).
- Java (en general, se ve que has oido y tal pero nada mas).
- .NET, no tienes ni **** idea, o eso me parece a mi. Pero eso le pasa a mucha gente, que creen que .NET tiene algo que ver con Java y las MV.

.NET no utiliza una maquina virtual, aunque si cuenta con un interprete de IL (lenguaje intermedio, que es un lenguaje estandar aceptado por ISO, de MS). IL es parecido al bytecode, en apariencia no en sustancia.

.Net ofrece muchas ventajas y yo destacaria (por ser la gran desconocida para los que no profundizan) el hecho de poder utilizar diferentes lenguajes de programacion en un mismo programa; si se pueden utilizar clases de Java en C++ o funciones de VBasic en c++ o en java.

.NET no es una API, cierto, pero contiene varias APIs para programar BBDDs, RPCs, interfaces windows. Y todas ellas funcionan en IL, osea en cualquier plataforma que tenga en entorno de ejecucion de .NET. ESto incluye todos los windows, xenix (el unix de Microsoft, algunos pensaban que era mitologico jajaja) y pronto (mas de lo que parece) Solaris, HPUX y Linux.

Por ultimo, recomendaria un par de libros: "Introduccion a C# y .Net" (de anaya, es baratito y hace una presentacion adecuada) y "Desarrollo de aplicaciones .NET" (estudio de la arquitectura de .NEt y sus APIs (ADO+, ASP+, WinFrames, ... COM+ si el COM esta incluido en .NET).

Zheo
12/11/2003, 18:31
Unas cosas:

Primero, yo no intento convencer a nadie, es mi opinion, basada en los conocimientos que tengo.

Segundo: No digo en ninguna parte que sean inútiles, digo que a mi no me convencen.


Mi error con lo de la API, aunque el API común de .NET lo dijiste tú, y a eso me remitía.
Vamos a ver si me explico:
lo que quiero decir es que un programa realizado en .NET funciona para cualquier plataforma de windows, y que por tanto, si se hicieran MV .NET para linux (por ejemplo) funcionarían en ella.
Eso está muy bien y tal, pero el esfuerzo de hacer esa MV no parte de la empresa, sino de gente ajena a ella, por el contrario eso no ocurre con Java.

Una cosa que acabo de leer, ¿para tí que un programa idéntico tarde más en ejecutarse en Java que en código nativo es hacer las cosas óptimas?
Lo dicho, Java puede ser bueno para algunas que cosas, pero a veces esa pérdida de proceso no se puede permitir ni siquiera comparándola con la ganancia en portavilidad.
¿Cuantos vjuegos comerciales hay en Java?

mortimor
12/11/2003, 18:38
Ah! y respecto al entorno de ejecucion en sistemas no windows, esta siendo desarrollado por MS.

Zheo
12/11/2003, 18:40
J o d e r y dale ¿Cuando dije yo que la POO era un paradigma unicamente de programación? Es que me toca las narices que luego digas que "ahorre conceptos técnicos a los novatos que confunden"

Respecto a Java te agradecería que me digas en que me he equivocado. Simplemente critico su bajo rendimiento, y nada más. Hay cosas para las que conviene y otras para las que no, como todos los lenguajes de programación.

Te acepto lo de .NET: no he leído mucho Sin embargo conocía lo del lenguaje intermedio, o código administrado como lo llama MS.
También sabía (y comento antes) el hecho de poder crear módulos en cualquier lenguaje y éstos puedan ser utilizados como parte de un programa realizado en un lenguaje distinto y que todo ello funcione en .NET. Sin embargo, como ya dije, algo parecido ocurre con los objetos COM, es decir que no es una idea nueva. Qué sea más cómoda de utilizar, es posible ahí ya no entro porque no lo se.

Efectivamente no soy un Guru ni de .NET ni de Java, pero si hablo de algo suele ser porque se un poco, sino me cierro la boca. Eso no quita, por supuesto, que tenga razón.

Un saludo.

mortimor
12/11/2003, 18:48
Estamos todos para aprender. Yo el primero, que no soy ningun experto. Aunque de .NET se algo, me ha tocado leer bastante en la carrera (ya que hice un trabajo, simultaneo al desarrollo de .NET, intentanto analizar sus puntos fuertes y debiles; yo que siempre fui linuxero....).

Por cierto, podriamos reiniciar la discusion que iniciase Zaxer sobre el interprete de 68K o sobre un recompilador dinamico de GBA. EStaria bien profundizar y ver si podemos sacar alguna conclusion.

Veilkrand
12/11/2003, 18:48
Zheo no tienes ni P*TA idea. :P

Zheo
12/11/2003, 18:55
mortimor, yo había oído que la "MV" .NET para linux era un proyecto aparte. Mis disculpas.
(fue muy doloroso estudiar el .NET siendo linuxero? ;) )

Veilkrand, el emoticono me descoloca un poco, ya que no se hasta qué punto estás de coña.
Pero aún así, no son formas. Una lástima.

Un saludo.

Daxter
12/11/2003, 19:12
wei un debate de programacion, ke emocion :D :D no esta mal crear este tipo de debates