Recomendadme un libro de C

Yo creo que es mejor dejar esto como esta, cada uno defiende lo que gusta y ya esta, coco cerrado para lo demás.

En esta vida a de haber de todo, programadores de C, de java, de .NET de lo que quieras asi que mejor no discutir porque ya se han visto palabras mayores por aqui.
Yo creo que es mejor dejar esto como esta, cada uno defiende lo que gusta y ya esta, coco cerrado para lo demás.


Es que las cosas no son así.... no se defiende lo que uno usa. Hay que defender lo bueno se use o no. Yo prefería C# a ObjC hasta que realmente estudié ObjC a fondo. Obviamente dejé de aprender el primero y continué con el segundo.

La mayor parte del tiempo yo programo en bash porque hace lo que necesito; no lo he defendido aquí porque bash es un lenguaje de scripting para hacks rápidos. Sin embargo si pasamos a palabras mayores uso C y ObjC, he argumentado por qué ambos lenguajes son MEJORES que C# y nadie nos ha explicado lo contrario. Solo se nos ha dicho que:

* C# es estandar (algo que no me dice mucho... tanto C y ObjC lo son. sh tambien es estándar del IEEE pero ahora no tengo a mano la referencia)
* C# será algo algún día (lo que me hace ver que reconoceis que a dia de hoy es el juguete de unos cuantos)
* Que no tenemos ni idea porque C# tiene muchas cosas que luego hemos demostrado que otros lenguajes tienen.
* Que los punteros son dificiles cuando realmente solo contienen direcciones de memoria y permiten hacer cosas que no son posibles sin ellos (como late-binding).
* Que hay vida más allá 'del pingüino' cuando la portabilidad no es solo entre SOs si no entre arquitecturas también; pero esta la perdonamos.
* etc etc

Y encima quieres justificar que cada uno defiende lo que usa... yo defiendo lo que es bueno tecnológicamente y soluciona problemas reales. Los punteros no son un problema para los programadores; eso se soluciona con libros y programando.

Saludos.Ferdy
Se puede usar Late-binding en C# no se muy bien como porque no se que es, pero parece ser que es usando reflection.

y sí, se puede usar punteros en C#.
¿quien ha dicho lo contrario?
Valeeeeeee dejemoslo estar ferdy q te gusta mucho estas cosas :P.
Oie Ferdy, unas preguntillas que quería hacerte desde hace un tiempo, aunque no son exactamente sobre esto...

1. ObjC ofrece más velocidad respecto a C ó C++?
2. Qué APIS multiplataforma existen para ObjC? Cocoa es multiplataforma y libre? Por lo que he visto no existe binding de GTK para Obj-C.
3. Una vez me dijiste que preferías ObjC a C++ porque ObjC era una forma limpia de añadir objetos a C, y C++ era un lenguaje distinto. Pero técnicamente, ¿por qué?
4. ¿Crees que es más rápido programar en C/ObjC que en .NET?

Hace tiempo estuve mirando una página de GNU, auq si no recuerdo mal tenía un API (no me acuerdo ahora de cómo se llama) y sacaban el ejemplo de una aplicación que realizó una empresa de videojuegos con Obj-C más la susodicha API, y sacaban ejemplos todo el rato de lo rápido que era desarrollar. Pero es que no sé si realmente es tan rápido desarrollar, es tan rápido al ejecutar, y es una programación tan clara como para dejar a C,C++, Mono/.NET de lado.

Cenkiu!

Un saludo!
1. ObjC ofrece más velocidad respecto a C ó C++?


Aunque no he hecho pruebas exhaustivas debe estar más cercano a C++ que a C.

2. Qué APIS multiplataforma existen para ObjC? Cocoa es multiplataforma y libre?


Cocoa realmente es NextStep; así que digamos que tres varias APIs:

OpenStep
Cocoa (OSX)
GNUStep

Las tres comparten las clases básicas que son las que cualquiera puede necesitar. La libre es obviamente GNUStep jeje.

3. Una vez me dijiste que preferías ObjC a C++ porque ObjC era una forma limpia de añadir objetos a C, y C++ era un lenguaje distinto. Pero técnicamente, ¿por qué?


Básicamente C++ siempre fue pensado como un lenguaje nuevo y saber C no ayuda mucho para programar en C++. De hecho yo programo en C y no tengo ni puñetera idea de C++ aparte de las cosas 'muy básicas'. Sin embargo ObjC empezó como una librería+preprocesador sobre C aunque luego fue creciendo y creciendo y se convirtió en un 'super-estándar' (es decir un estándar sobre otro existente).

4. ¿Crees que es más rápido programar en C/ObjC que en .NET?


Eso depende más de ti que del lenguaje :)

Sobre que si el código es claro... pues realmente depende también mucho de ti. Pero ObjC tiene algunas 'particularidades' que lo hacen a mi modo de ver, más claro.

Saludos.Ferdy
Muchas gracias por todas las respuestas!

La página que estuve visitando era la de GNUStep, sí. La verdad que muy bonitas las ventanas no quedan... XD. Queda mucho mejor Cocoa, GTK2 ó Qt... :S. Y como Cocoa no es libre, pues... ajo y agua. Bastante lerdín soy ya como para ponerme a aprender algo con lo que no estoy de acuerdo (ó lo que es lo mismo, no es soft libre.). Sí, puedes criticarme por esto ;).

Básicamente C++ siempre fue pensado como un lenguaje nuevo y saber C no ayuda mucho para programar en C++. De hecho yo programo en C y no tengo ni puñetera idea de C++ aparte de las cosas 'muy básicas'. Sin embargo ObjC empezó como una librería+preprocesador sobre C aunque luego fue creciendo y creciendo y se convirtió en un 'super-estándar' (es decir un estándar sobre otro existente).
Chí, esto sí que lo sabía. A lo que me refiero es... a la hora de programar... ¿qué ventajas te ofrece? Es más sencillo, más claro, tardas menos, tiene cosas que C/C++ no tienen...

Eso depende más de ti que del lenguaje
Mmm... pero precisamente lo que se alega con .NET es que se programa muy rápido, no? Qeu si conectar a una base de datos es sencillo, y tal y cual...

Ains... qué interechante esto de la programación. A vé si poquito a poco afianzo mis conocimientos de C/C++ y vamos avanzando...

Muchas gracias por todo.

Un saludo!
La verdad que muy bonitas las ventanas no quedan...


Eso no depende del lenguaje... ¿ quién te dijo que no puedes hacer la interfaz en GTK+ (en C) y el resto en ObjC ?

¿qué ventajas te ofrece? Es más sencillo, más claro, tardas menos, tiene cosas que C/C++ no tienen...


Si lees un poco más arriba verás que puedes utilizar un AutoreleasePool (por ejemplo). Además de poder utilizar toda la potencia de C + orientación a objetos de forma simple.

Mmm... pero precisamente lo que se alega con .NET es que se programa muy rápido, no? Qeu si conectar a una base de datos es sencillo, y tal y cual...


¿ En C es dificil ? Eso de que se programa muy rápido... si lees mi mensaje de más arriba verás mi opinión.

A vé si poquito a poco afianzo mis conocimientos de C/C++ y vamos avanzando...


La única forma es programando jeje

Saludos.Ferdy
Y menos mal que dije que hasta donde yo se Java no tenia reflexión, que si lo llego a afirmar...
En cualquier caso disculpas.

Ferdy escribió:* C# es estandar (algo que no me dice mucho... tanto C y ObjC lo son. sh tambien es estándar del IEEE pero ahora no tengo a mano la referencia)

Eso es para contrarrestar la inercia "es de MS"
* C# será algo algún día (lo que me hace ver que reconoceis que a dia de hoy es el juguete de unos cuantos)

Como lo fue C++ en sus inicios, y fíjate que peazo juguete

* Que no tenemos ni idea porque C# tiene muchas cosas que luego hemos demostrado que otros lenguajes tienen.

Nadie dijo que nadie tuviera idea, simplemente se dijo que tiene ventajas. Que a ti te gusta programar a pelo controlando la memoria. Cojonudo. A mi la verdad en un programa de contabilidad me la trae al pairo que un listado tarde un segundo más o menos.
Y yo también soy fanático de C++ y los punteros, no los encuentro difíciles. Pero un recolector de basura es una gran ayuda, como ya dije, en ciertos ámbitos. Si tu te quieres sentir mejor porque no te gusta y programas en consola y haces debug con el GDB a pelo, pues vale, eres un machote.

* Que los punteros son dificiles cuando realmente solo contienen direcciones de memoria y permiten hacer cosas que no son posibles sin ellos (como late-binding).

¿Quién ha dicho lo contrario? Ah, y con referencias también puedes hacer ligadura dinámica, al menos en C++.
Eso si, con punteros te reconozco que queda mejor ;)


* Que hay vida más allá 'del pingüino' cuando la portabilidad no es solo entre SOs si no entre arquitecturas también;
Yo no se si MS vende .NET como multiplataforma, lo que si se es que simplifica mucho el desarrollo en Windows.
Eso está fuera "del pingüino" a ver si lo pillamos ahora.


PD: He estado mirando lo de Java, no me había fijado en que tiene reflexión porque sólo he trabajado -muy poco- con J2ME en donde es prácticamente inexistente. Reitero mis disculpas, pero tampoco hice una afirmación categórica.
Como lo fue C++ en sus inicios, y fíjate que peazo juguete


¿Y por qué iba a seguir el mismo camino?

Si tu te quieres sentir mejor porque no te gusta y programas en consola y haces debug con el GDB a pelo, pues vale, eres un machote.


*sniff* *sniff* ¿huelo complejos?

Yo no se si MS vende .NET como multiplataforma, lo que si se es que simplifica mucho el desarrollo en Windows.
Eso está fuera "del pingüino" a ver si lo pillamos ahora.


A ti te suena eso de que hay máquinas que no son PCs ¿verdad? Es que tienes un curioso concepto de la portabilidad...

Está claro que C# sirve para que no programadores sean capaces de programar... como con Java. Verlo de otra forma es querer engañarse.

Saludos.Ferdy
Y porque tiene que coger otro camino diferente ferdy? no puede ser bueno?

Otras cosas que no sean pc, que yo sepa mono esta portado en x86, x86_64, sparc, PPC y s390.


Un saludo.

PD:hace 3 dias salio el nuevo mono con soporte para late-binding(que por cierto, que es?)
Ferdy escribió:*sniff* *sniff* ¿huelo complejos?

Si, complejo de superioridad infundado. ¿Te suena? Pues debería:
Está claro que C# sirve para que no programadores sean capaces de programar... como con Java. Verlo de otra forma es querer engañarse.

Gracias, oh machote de la programación, que me has iluminado. Tanto me has convencido que voy a dejar de programar el movil en J2ME y voy a hacerlo en ensamblador. [+risas]

hace 3 dias salio el nuevo mono con soporte para late-binding(que por cierto, que es?)

Un sinónimo de ligadura dinámica. Digamos que puedes hacer que los objetos de diferente manera llamando al mismo método, dependiendo del tipo del objeto. El ejemplo típico es una clase base abstracta Figura que define operaciones (por ejemplo calcularArea() ). De esa clase derivan varios hijos, como FiguraCuadrado, FiguraCírculo, etc, cada una implementa una operación. La ligadura dinámica permite que dada una figura y llamando al método calcularArea(), en tiempo de ejecución podamos distinguir entre un círculo, o un cuadrado, y llamar a su método correspondiente.


Edito, que se me olvidó:
A ti te suena eso de que hay máquinas que no son PCs ¿verdad? Es que tienes un curioso concepto de la portabilidad...

Si me dices dónde defendí yo que C# / .NET es portable te ganarás un minipunto. Y te doy otro cuando veas el mensaje en el que digo que .NET es una ventaja para el desarrollo en Windows ( este últimpo es prácticamente de bonus)
Y porque tiene que coger otro camino diferente ferdy? no puede ser bueno?


No lo se, yo no me la juego a predecir el futuro.

Otras cosas que no sean pc, que yo sepa mono esta portado en x86, x86_64, sparc, PPC y s390.


Estas cosas van con 'sistema operativo' Y 'hardware'. Es decir:

Solaris/SPARC - soportado
Linux/PPC - soportado
Linux/x86 - soportado
Linux/x86_64 - soportado
[...]
------------------------------
*/alpha - no soportado
*/arm - no soportado
*/mips - no soportado
VMS/* - no soportado
Tru64/alpha - no soportado
[...]

Para todos esos que he nombrado existen compiladores ANSI C.

PD:hace 3 dias salio el nuevo mono con soporte para late-binding(que por cierto, que es?)


Ejemplo rápido:

[ $ ~ ] cat late.c
#include <stdio.h>

void something(char *s)
{
        printf("SOMETHING: %s\n",s);
}

void otherthing(char *s)
{
        printf("OTHERTHING: %s\n",s);
}

int main(int argc,char *argv[])
{
        void (*f)(char *);
        int method;

        if (argc != 3)
        {
                printf("Error: please use: %s method string\n" \
                        "\twhere 'method' is either 0 or 1\n\t" \
                        "'string' is whatever you want\n",argv[0]);
                return 1;
        }
       
        method = atoi(argv[1]);
       
        f = ( method ? otherthing : something );

        f(argv[2]);

        return 0;
}
[ $ ~ ] make late
cc     late.c   -o late
[ $ ~ ] ./late 0 "write something here"
SOMETHING: write something here
[ $ ~ ] ./late 1 "write some other thing here"
OTHERTHING: write some other thing here


enjoy.

---------------------------------------------

Si, complejo de superioridad infundado. ¿Te suena? Pues debería:


¿ Por qué cuando no teneis razón y os dais cuenta de cosas que no sabiais siempre salís con el complejo de superioridad ?

Si me dices dónde defendí yo que C# / .NET es portable te ganarás un minipunto. Y te doy otro cuando veas el mensaje en el que digo que .NET es una ventaja para el desarrollo en Windows ( este últimpo es prácticamente de bonus)


¿ Te suena de qué va este foro no ? Si a un reproche sobre portabilidad respondes que "hay vida más allá del pingüino" no se me ocurre pensar en Windows precisamente... quizá porque no es software libre... me refería a otros Unix libres.

Saludos.Ferdy
¿Un puntero a una función se considera late-binding? Yo creía que se hablaba de late-binding en conjunción con herencia (funciones virtuales en C++, por ejemplo)
Ferdy escribió:¿ Te suena de qué va este foro no ? Si a un reproche sobre portabilidad respondes que "hay vida más allá del pingüino" no se me ocurre pensar en Windows precisamente... quizá porque no es software libre... me refería a otros Unix libres.

Saludos.Ferdy


Y yo pensando que hablaba con gente capaz de extrapolar y que sabe lo que significa off-topic.
En fin, te lo clarifico: estaba hablando de Windows, y la conversación ya llevaba tiempo, con eso me refiero a "más allá del pinguino" y con eso meto en el saco a linux / FreeBSD y similares.

Espero que nadie se tome esto último como un ataque a linux o FreeBSD, porque no lo es.

¿Un puntero a una función se considera late-binding? Yo creía que se hablaba de late-binding en conjunción con herencia (funciones virtuales en C++, por ejemplo)

Es donde mejor se demuestra, pero si te fijas el ejemplo de Ferdy cumple la pseudo definición que dije arriba cambiando método por función. De hecho las funciones virtuales de C++ son punteros a función. Los delegados de C# también... etc.
¿Un puntero a una función se considera late-binding? Yo creía que se hablaba de late-binding en conjunción con herencia (funciones virtuales en C++, por ejemplo)


Se dice que los FP permiten usar late-binding en C. Por otro lado sería estúpido que un lenguaje con herencia no soporte late-binding...

Saludos.Ferdy

-----------------------------

En fin, te lo clarifico: estaba hablando de Windows, y la conversación ya llevaba tiempo, con eso me refiero a "más allá del pinguino" y con eso meto en el saco a linux / FreeBSD y similares.


eeeeeeeeeeeeeek

Y yo que pensaba que hablaba con gente que sabe de lo que habla. Linux, FreeBSD y similares... ahí tambien metes a los VMS, ¿verdad?

Saludos.Ferdy
Linux, FreeBSD y similares... ahí tambien metes a los VMS, ¿verdad?
Saludos.Ferdy


No se si te pillo, ¿lo dices por mezclar las licencias de ambos sistemas operativos o va por alguna otra razón que se me escapa¨?

¿ Por qué cuando no teneis razón y os dais cuenta de cosas que no sabiais siempre salís con el complejo de superioridad ?

No si todavía creeras que me estás iluminando acerca de que Java y C# es para noobs y que los que usan C C++ y ObjC son los elite. [qmparto]
Además que el primero que empezó con los complejos fuiste tú. Tu también aprendiste algo en este post, así que menos lobos.
No se si te pillo, ¿lo dices por mezclar las licencias de ambos sistemas operativos o va por alguna otra razón que se me escapa¨?


Hombre... pues que Linux y los unix libres los puedes meter en el mismo saco. Pero no se yo qué puede tener en común VMS con ellos...
Me parece que soy el unico al que el tema multi arquitectura le importa poco. Yo como ya dije gano dinero programando para Windows y estoy investiando dicho tema en linux, lo demas por ahora me es igual ya que no tengo maquinas con esas arquitecturas.

Un saludo.
Ferdy escribió:VMS con ellos...

A ver, ¿quien ha hablado de VMS? Tú.
Si lo que quieres es que te diga que no tengo ni idea de lo que es eso -una búsqueda rápida por el google me dice que un SO libre sobre plataformas Alpha y VAX- pues no tengo nigún problema.

Sin embargo el hecho de que tú saques este tema, sigas incidiendo en él cuando no viene a cuento -y cuando te considero lo bastante inteligente para haberte dado cuenta ya de por donde va mi comentario- sólo me hace pensar que quiere lucirte o bien tocar los pies. Pues vale.


Me parece que soy el unico al que el tema multi arquitectura le importa poco

Ni me lo digas. Se empeñan en rebatírmelo cuando ni lo he defendido ni proclamado. :P
Solo te digo que para mi un "no pingüino" me suena no solo a Windows si no a otros muchos sistemas. Mucho más interesantes que windows desde el punto de vista tecnológico por cierto...

PD: VMS no es libre. Pero es cierto que el nombre (OpenVMS) induce a error

----------------

Si os da igual que un lenguaje sea portable a mi no me quita el sueño. Pero eso es simplemente algo más en contra de un lenguaje que no ha hecho más que nacer

Saludos.Ferdy
Ferdy, no podemos esperar que un lenguaje creado por MS sea para muchas arquitecturas ya que windows es solo de x86.

El equipo de mono ya esta trabajando en ese tema, es todo cuestion de paciencia.
.NET en mi opinión NUNCA triunfará fuera de las plataformas de MS, de ninguna de las maneras, y por mucho que se lo proponga Icaza, exáctamente lo mismo que pasa con todas las implementaciones de Java fuera de la de Sun. Cuando alguna de las "otras" implementaciones llegue a conseguir el 10% de funcionalidad de la original, ya se encargará la original de cambiar algo fundamental.

Que yo sepa lo único que está estandarizado es C# (corregidme si me equivoco), pero la plataforma en general NO. Aparte la gran mayoría de las cosas están patentadas. Es decir, 99% no usable en otro sitio que no sea Windows.

La gran diferencia entre Java y .NET (hablando como VM's) es que el desarrollador principal da implementaciones para al menos las arquitecturas y SO's más usados, y el segundo sólo para el suyo, con lo que de multiplataforma nada (aunque Java tampoco sea build once, run anywhere).

Resumiendo, .NET es exclusívamente bueno para Windows, y sólamente para que los que trabajaban con Visual Basic, ahora utilicen .NET. Es decir, para hacer aplicaciones chapuzas y rápidas, sin molestarse en nada.

Lo que sí que es increíble es la burrada de millones que se han gastado, y se están gastando en marketing para esto. Regalo de PDA's, literatura, ordenadores, etc.
Churly escribió:Que yo sepa lo único que está estandarizado es C# (corregidme si me equivoco), pero la plataforma en general NO. Aparte la gran mayoría de las cosas están patentadas. Es decir, 99% no usable en otro sitio que no sea Windows.


Esta estandarizado las partes esenciales de .NET, JIT, CIL y esas cosas, o sea, lo necesario para hacer una plataforma .NET en linux :)
Que yo sepa lo único que está estandarizado es C# (corregidme si me equivoco), pero la plataforma en general NO. Aparte la gran mayoría de las cosas están patentadas. Es decir, 99% no usable en otro sitio que no sea Windows.

IL también lo está, y me parece que la funcionalidad básica de la plataforma (es decir no windows forms ni ADO.NET ni cosas así) también está estandarizado, aunque de esto no estoy comletamente seguro.

Resumiendo, .NET es exclusívamente bueno para Windows, y sólamente para que los que trabajaban con Visual Basic, ahora utilicen .NET.


Es decir, para hacer aplicaciones chapuzas y rápidas, sin molestarse en nada.
Si tú lo dices... [maszz]
Una aplicación bien diseñada siempre será una buena aplicación. Si además obtienes la mitad de las cosas ya hechas no tienes que reinventar nada. Chapuzas varias las puedes hacer con cualquier lenguaje, aunque VB te lo ponga más fácil. Si te pones así con Python puedes hacer auténticas chapuzas al no tener tipado en funciones...
Y ya puestos,¿ lo que programaban en Visual C++ y ahora lo hacen con .NET, cómo los encasillas? ;)
O sea, lo necesario para ejecutar una aplicación en consola que sólo haga el "Hola mundo" ;)

Volviendo a hablar de lenguajes, si hay uno del futuro, probablemente sea D, tengo que informarme de cual es su estado actual. ObjC no lo he tocado, posíblemente sea mi entretenimiento del verano.

zheo escribió:Y ya puestos,¿ lo que programaban en Visual C++ y ahora lo hacen con .NET, cómo los encasillas? ;)


Muy pocos hay de esos (no conozco a ninguno que haya migrado, ni que piense hacerlo, y conozco muchos desarrollando bajo Windows).

Algún remoto buen programador de VB habrá, no te digo que no, pero es un lenguaje OC primordialmente (orientado a la chapuza).
"Churly" escribió:Lo que sí que es increíble es la burrada de millones que se han gastado, y se están gastando en marketing para esto. Regalo de PDA's, literatura, ordenadores, etc.


Creo que es así porque el mayor valor que tiene la plataforma windows son sus aplicaciones. Una buena plataforma de desarrollo es muy importante para que eso siga siendo así, y se quieren asegurar de ello. De hecho, a medida que se van cayendo cosas de Longhorn cada vez me parece que tiene más lógica este razonamiento.

Resumiendo, .NET es exclusívamente bueno para Windows, y sólamente para que los que trabajaban con Visual Basic, ahora utilicen .NET. Es decir, para hacer aplicaciones chapuzas y rápidas, sin molestarse en nada.


En esto estoy completamente de acuerdo con zheo. No veo porqué van a tener que salir de ahí aplicaciones chapuceras necesariamente.
Yo no he visto muchos de Visual C++, los que conozco han pasado a C# porque les gusta mas.

Aplicaciones chapuzas? Entonces Banesto es uan chapuza por usar .NET y muchos bancos mas tambien, aparte de diversas empresas donde usan .NET.


Cada lenguaje es bueno para algo en concreto y .NET para aplicaciones graficas y webservices se lleva por lo menos para mi la palma.
Bueno, he revisionado el video de de Icaza en la UOC:
http://www.uoc.edu/dt/esp/deicaza0904.html (para descargarlo)

La verdad es que hay argumentos bastante convincentes.

Para mí el más provechoso es eso de que realmente por lo que la gente utiliza Windows es por sus aplicaciones. Que a pesar de ser una plataforma miserable, hay miles de aplicaciones para todo porque es fácil desarrollarlas. Ésto nos puede mejor ó peor. Podemos rechazar aplicaciones "chapuza", pero también podemos asumir que nos guste ó no, .NET va a ser la plataforma de desarrollo del futuro para Windows. Con Mono tenemos la oportunidad de competir. Es una oportunidad para comerle terreno a MS y favorecer la transición a sistemas libres.
Un ejemplo que da es de la ciudad de Munich, que en corto tiempo decidió pasar sus ordenadores a SuSE Linux y se encontraron con que no sé qué programa que utilizaban para gestionar bastante cosillas de la ciudad... no iba a correr en SuSE. Solución: el programa estaba basado en ASP, así que cogieron SuSE, cogieron Mono y tachánnn. Los tíos que desarrollaban la aplicación lo siguieron haciendo sin tener ni puta idea siquiera de cómo era eso de Linux...

No sé, ya digo que se puede estar totalmente en contra del planteamiento de .NET, se puede considerar una chapuza, pero no sé si es rebatible el hecho de que va a ser la plataforma de desarrollo más extendida para el sistema más extendido del mundo. Y, nos guste ó no, creo que es bueno competir con eso, y ahroa se tiene la opotunidad. Como digo, no hablo del planteamiento, que a cada uno le parecerá mejor ó peor, sino del pragmatismo que supone.

D, ¿el nuevo C/C++? ¿Esa cosa con recolector de basura?XDDD. Sin acritud, Ferdy ;).
La verdad que no conozco demasiado sobre D. Si no me equivoco está aún en desarrollo, y no sé qué plazos se han marcado para terminarlo, y si realmente será una evolución tal. De todas formas, si es un estándar, siempre podrá portarse a Mono, para quien quiera. Quien no quiera va a poder seguir usando C, C++, ObjC, Python a pelo, D, ó lo que quiera... Aquí nadie obliga a nadie a usar una u otra cosa. Es solamente una posibilidad más, que nos guste ó no, ya se está tomando con fuerza.

Sobre lo de la multiplataformidad... pues sí, seguramente sea uno de los puntos débiles de Mono. También hay que pensar para lo que está destinado Mono, que es un enfoque a aplicaciones de usuario. Nada de programar kernels, ni rutinas a bajo nivel, ni eso... No. Está pensado para hacer aplicaciones funcionales y gráficas de forma rápida y sencilla. Y para este mercado lo que cuenta es Windows, Linux y MacOS. Uséase... PPC y x86. No voy a negar que sería muy interesante soportar todo el resto... claro que sí, pero bastante hay que hacer ya. No creo que sea lo prioritario una vez que el 99.5% de los interesados en esto está cubierto.

Un saludo!
Comunidad EOL > PC > Software libre > Recomendadme un libro de C

Hay que ver como se transgiversan los hilos... [sati]
Tergiversar, tergiversar... :P!

La verdad que deberíamos abrir otro post... aunque con tanto en este, no sé...

¿Alguien me puede comentar algo más sobre D?

¿Algún punetero (.NETero :P) puede decirme si en C#es posible desactivar de algún modo el recolector de basura para ganar rendimiento?

Y a modo de resumen... para mí, me gustaría que me quedaran claras estas cosas:
1. ¿Qué cosas cosas puede hacer C,C++,Obj-C que no puede hacer C#?
2. Y viceversa?

Gracias!

Un saludooo!
FuckingFreaky escribió:Y a modo de resumen... para mí, me gustaría que me quedaran claras estas cosas:
1. ¿Qué cosas puede hacer C,C++,Obj-C que no puede hacer C#?
2. Y viceversa?


Si las bases no me fallan, en todos se pueden tomar decisiones e iterar... la respuesta es ¿nada? :-p
FuckingFreaky escribió:¿Algún punetero (.NETero :P) puede decirme si en C#es posible desactivar de algún modo el recolector de basura para ganar rendimiento?

Hasta donde yo se no puedes. Todo el código generado en C# es manejado y compilado JIT. Básicamente toda la biblioteca de clases está formada en torno a eso, así que...
Oki doki!

Otra preguntita que se me había olvidado...

Como todo esto se basa en el CIL... ¿se podría crear un compilador de CIL a máquina y por tanto poder tener lo que es .NET como compilado? Es por curiosidad...

Un saludo!
FuckingFreaky escribió:Oki doki!

Otra preguntita que se me había olvidado...

Como todo esto se basa en el CIL... ¿se podría crear un compilador de CIL a máquina y por tanto poder tener lo que es .NET como compilado? Es por curiosidad...

Un saludo!

Si, de hecho eso hace el compilador JIT, compila las partes de código según las necesita y las guarda en memoria para posterior uso.
Y si mal no recuerdo he leído que se puede compilar el código en la instalación para mejorar la ejecución, aunque no tengo muchos datos (y supongo que se referirá sólo al código de tu proyecto, no a toda la plataforma .NET xD )
Mmmm... yo lo que vi en el video de de Icaza es que puedes precompilar partes de tu código, pero claro, eos significa precompilarlo para la máquina virtual, no para arquitecturas.

Es que sería interesante, creo yo, poder hacer aplicaciones compiladas, y tal... poder pasar aplicaciones compiladas a .NET y viceversa, en función de las necesidades. Aunque bueno, pensándolo bien no sé si es un poco tontería, porque es ir totalmente contra toda la base de .NET/Mono, que es la máquina virtual...

Cenkiu! Salu2!
FuckingFreaky escribió:Mmmm... yo lo que vi en el video de de Icaza es que puedes precompilar partes de tu código, pero claro, eos significa precompilarlo para la máquina virtual, no para arquitecturas.

Es q precompilado para la máquina virtual es la "compilación normal" de .NET y mono :P ¿no?
Tendré que volver a ver la confe de Icaza, que ya no me acuerdo :S
1. ¿Qué cosas puede hacer C,C++,Obj-C que no puede hacer C#?


Que recuerde rápidamente:

* inline ASM
* Usar el AutoreleasePool allí donde quieras (ObjC)
* Acceso a más librerías libres

Saludos.Ferdy
Ferdy escribió:* inline ASM

No exactamente desde el lenguaje pero casi xD
http://www.codeproject.com/csharp/Inline_ASM_for_C_.asp

Ferdy escribió:* Acceso a más librerías libres

¿Ah, pero eso está definido en el estándar del lenguaje? [sati]
Ferdy se basa en que C, C++ y ObjC tienen mas rendimiento y es cierto, pero eso es para programas que lo necesiten porque YO he hecho programas GRANDES en C# y van igual de rapido que van los programas graficos hechos con otros lenguajes pero sois muy tikismikis.
De hecho para estos casos el inline ASM no es muy útil. Está claro que para hacer demomaking el C# no es. Claro según parece si no sabes C o C++ no sabes programar, o directamente la gente asume que si usas estos lenguajes no tienes ni idea de programar, o C/C++ es complicado, y da la casualidad de no siempre es así.
No exactamente desde el lenguaje pero casi xD
http://www.codeproject.com/csharp/Inline_ASM_for_C_.asp


eeeeeeeeeeeeek

Pues entonces pierde toda la gracia... aunque realmente no lo sabía. De hecho me parece raro que pueda interpretar ASM en línea la máquina virtual jeje...

¿Ah, pero eso está definido en el estándar del lenguaje?


La pregunta era:

1. ¿Qué cosas puede hacer C,C++,Obj-C que no puede hacer C#?


¿Preguntó alguien por el estándar? Es objetivo que hay infinidad más de librerías para usar y como yo no trato de adivinar el futuro y lo que me importa es la capacidad de HOY, pues así se lo digo: tienes muchas más librerías libres disponibles y además, casi todas son muy portables.

Claro según parece si no sabes C o C++ no sabes programar, o directamente la gente asume que si usas estos lenguajes no tienes ni idea de programar, o C/C++ es complicado, y da la casualidad de no siempre es así.


Mmmm me preocupa que veas tantos fantasmas donde no los hay. Lo que yo he dicho es que C# permite que gente que no sabe programar o que programa 'a la puzzle' haga cositas y le paguen como si fuera un programador.

¿acaso dije que el programar C# directamente te convertía en un 'mal programador'?

Lo que está claro es que no creo que haya muchos programadores que no sepan C... no tiene mucho sentido.

------------------

Aunque creo que tenemos un conflicto de términos: programar =~ desarrollar pero programar != desarrollar ... y parte de la culpa la tenemos muchos al equiparar ambos términos cuando hay una GRAN diferencia.

Objetivamente no creo que haya desarrolladores que no sepan C. Sin embargo habrá muchos programadores que no tengan ni idea de C.

Saludos.Ferdy
Mmm yo se C ya que lo aprendi para tener una base y ahora programo en C#, sobre librerias, pues en C# hay muchas externas, tambien esta claro que hay muuuuchas menos que para C o C++, pero tambien tiene muuuuuuuuuucho menos tiempo :)
Ferdy escribió:¿Preguntó alguien por el estándar? Es objetivo que hay infinidad más de librerías para usar y como yo no trato de adivinar el futuro y lo que me importa es la capacidad de HOY, pues así se lo digo: tienes muchas más librerías libres disponibles y además, casi todas son muy portables.

Repito, hablamos de lo que puede hacer el lenguaje, porque hablando de bibliotecas estandarizadas del lenguaje, Java y C# se llevan la palma.

Mmmm me preocupa que veas tantos fantasmas donde no los hay. Lo que yo he dicho es que C# permite que gente que no sabe programar o que programa 'a la puzzle' haga cositas y le paguen como si fuera un programador.

A mi me preocupan las respuestas despectivas, que es como sonaron.

Lo que está claro es que no creo que haya muchos programadores que no sepan C... no tiene mucho sentido.

Si, si saben sólo C++ ;)

Aunque creo que tenemos un conflicto de términos: programar =~ desarrollar pero programar != desarrollar ... y parte de la culpa la tenemos muchos al equiparar ambos términos cuando hay una GRAN diferencia.

¿Y la diferencia es? A mi desarrollador simplemente me suena más profesional, y que puede hacer más cosas que un programador, diseño, por ejemplo.
94 respuestas
1, 2