› Foros › PC › Software libre
bpeople escribió:Curso de programación de C/C++ de Fco. Javier Ceballos
bpeople escribió:El de Ritchie que dice Raharu es un "must read".
PERO SERÁ SACRÍLEGO!Fox escribió:POR FAVOR señores, ha dicho uno basico, no uno para avanzados, el del sr ceballos es una MIERDA,xD, asi de claro, anda que el tio tiene arte, te lia mucho, hasta mi cuñado que es programador profesional me dijo que era malisimo el libro, tuve que comprarme otro para aprender.
Y .NET es hoy por hoy lo mejorcito
The fflush() function conforms to ISO/IEC 9899:1990 (``ISO C89'')
Rurouni escribió:Fué mi primer libro de C++. Tengo la primera edición... brutal, el más didáctico en castellano. Lo explica muy muy bien.
Rurouni escribió:Por cieto, tiene dos libros sobre C/C++: el que ha citado bpeople, que curiosamente SÓLO enseña C, pero al ser la misma base para C++... y el segundo que es exclusivamente de C++.
Hiper-recomendados los dos. Que decir que forman parte desde hace tiempo de mi biblioteca particular.
.NET tiene un potencial que te cagas, y facilita el desarrollo de aplicaciones que no te lo puedes ni creer. No sabes lo fácil que resulta hacer un acceso a una BD y hacer un binding de esos datos a controles.
Por no hablar de otras lindezas como Web Services o tener un framework común para desarrollar aplicaciones de escritorio y dispositivos móviles (PDAs, SsmartPhones)
FuckingFreaky escribió:Y de C++... vale, lo puedes considerar un lenguaje distinto, pero... ¿es malo? ¿qué le falla? Lo digo porque últimamente oigo multitud de comentarios en que parece que C++ es una auténtica basura y que no sirve para nada ó siempre hay mejores opciones... ¿tan malo es?
FuckingFreaky escribió:Siento el offtopic... Por cierto ¿alguien puede recordarme qué parte estaba patentada de .NET?
Una ventaja era que podias usar el mismo lenguaje para todo pero eso ya se podía hacer. Con java o con C mismo.
De facto solo hay una IDE. SharpDevelop y MonoDevelop tienen muuuuucho tiempo de retraso (y mira que sharpdevelop esta avanzado)
Guarradas varias y código spaghetti lo puedes hacer con todos los lenguajes.
zheo escribió:Con el DataBind me estoy refiriendo a que con hacer una asignación enlazas algo a un DataGrid (por poner un ejemplo) una vez que lo has sacado de la BD con ADO.NET que es bastante fácil.
Al hablar de desarrollo en dispositivos móviles me refiero a que programas usando una interfaz similar, lo que es una ventaja. Claro que en PDAs y demás existían entornos de desarrollo y APIS aparte
Por cierto, estoy hablando de PDAs con el compacFramework, si quieres hacer aplicaciones para PPC y PALM normal que tengas que hacer una capa intermedia ya que estos últimos no implementan el CF.
No no, la ventaja es que aquí puedes mezclar lenguajes, que no es lo mismo. Eso no lo puedes hacer a no ser que te metas en otros berenjenales (COM y cosas así)
Hombre, es que estaría cojonudo que los mismos que proporcionan la plataforma no te dieran un entorno de desarrollo como dios manda. Es como si te hecho en cara que no hay versión de Windows de Anjuta... :S
.NET es lo que es y para lo que es: una plataforma de MS (léase orientada a Windows) para desarrollar aplicaciones de forma más fácil.
SickBoy escribió:Entonces ¿en que quedamos? Si proporcionas una API común proporcionas una API común. Lo que no puedes es coger y decir que proporcionas una API común para tus productos porque entonces no es una API común. Es que TU API es coherente. Es algo que debería darse por supuesto. No veo la innovación por ninguna parte.
SickBoy escribió:Esta es una de las partes que menos me convence de .NET. Principalmente porque sigue la misma filosofía de desarrollo que muchas de sus aplicaciones: "Tu tira pa'lante que otro se va a comer la mierda". Mezclamos leguajes, mezclamos presentación con datos, mezclamos lo que haga falta con tal de que salga algo que se vea rápidamente. Luego el monstruo que salga lo va a depurar el tato.
SickBoy escribió:- Mezclar lenguajes es una marranada desde el punto de vista de estilo. Porque ahora me vas a decir que es más legible un programa escrito en Python, Perl, C, C# y Java que uno en C++
SickBoy escribió:Repito. Es una trampa y como tal la veo. ¿Salio Anjuta junto a C y a la vez que C? ¿Cuantas IDE hay para C? ¿Está C ligado a alguna IDE, toolkit, etc...?
SickBoy escribió: - Lo de la facilidad de uso también lo veo un poco relativo. Tiene lo de los controles de presentación que dices y tal pero vamos... tampoco me parece la panacea. Que son funciones que, en cualquier plataforma con una sencillez de uso media te programas en un plisplas. Vamos que si esa es toda la facilidad que me dan...
SickBoy escribió: - Solo tengo una plataforma para desarrollar. Eso me parece una enorme desventaja.
SickBoy escribió:- Es un "cásate con nosotros de por vida" y no quiero casarme con nadie que no sea mi novia. . Todo son facilidades para entrar y todo son barreras de salida. Cuando se evalua un producto la facilidad para dejar de usarlo también es importante.
SickBoy escribió:Y con todo esto sigo sin ver las enormes ventajas. No se, me parece uno más en la vorágine. En lugar de mejorar lo ya existente que tenemos que competir de verdad nos creamos un juego nuevo para así ir ganando. Solo veo eso.
zheo escribió:No estoy hablando de una API, sino de un mismo modelo de programación y un mismo entorno para todo. Tampoco digo que sea una gran innovación, simplemente es un paso en la dirección correcta.
Estas pensando en singular. En un grupo de desarrollo sería bastante factible tener diferentes modulos en diferentes lenguajes según la utilidad de ellos. No digo que debería ser una premisa de cara al diseño, pero es una opción más, nadie te obliga.
Y por ejemplo usar las extensiones administradas de C++ para aplicar un Facade a un módulo en C/C++ y así poder utilizarlo en un proyecto bajo .NET es bastante útil (aunque hay punteros por todas partes )
Yo lo veo más como un diseño mucho mejor y más cómodo. MFC también tenía asistentes, Intellisense y un editor, pero sólamente el paso de mensajes era un coñazo. Ahora es simplemente haciendo una asignación de una función a un evento.
¿Y qué API no lo es?
Pues yo precisamente veo lo contrario: eso es una mejora sobre todo lo que había antes en Windows. Es mucho más cómodo y rápido de programar.
SickBoy escribió:Que es la tendencia cierto pero de ahi a que sea correcto... No estoy yo tan convencido. Cada cosa tiene sus distintas necesidades y no se si será lo más indicado unificar plataformas distintas. Siempre decimos eso de "un operativo para cada necesidad" o un "lenguaje para cada necesidad" ¿no? Sencillamente creo que no existe ese idílico entorno que sirva para todo y que funcione bien. Siempre hay unas restricciones por las que no estoy dispuesto a pasar como por ejemplo el "todo es mio". Si seguimos así solo habría un fabricante.
SickBoy escribió:Al contrario. Estoy pensando en un grupo amplio con una relativa libertad y sigo viendo una locura. No consigo ver un proyecto en el que cada módulo sea de su padre y de su madre y luego, por ejemplo, el encargado de un modulo se ponga de baja.
SickBoy escribió:Lo dicho nadie te obliga pero es un arma de reducción de costes de doble filo. Si, al principio puedes meter toda la mierda que quieras y tardas poco (por eso se usará) pero cuando lleves un tiempo la cosa se pondrá fea. Es lo de siempre. En lugar de ayudar a que se hagan las cosas como deben de hacerse se permite hacer lo que le salga a uno de los pies. Además es la típica cosa que se va volviendo una gran bola de nieve. Según vas metiendo más lenguajes volver atrás va siendo imposible.
SickBoy escribió:Joer. Es que vaya ejemplo. Si programabas MFC a pelo sinceramente eres un machote . Jamás pude con ello ni asistentes ni leches. Aquello era un infierno.
SickBoy escribió:Mira en ese sentido veo a QT o a GTK por ejemplo mucho más preparados para una huida a gran escala. Aunque es un potencial que nadie ha utilizado de momento. Por ejemplo porque los archivos generados con su constructor de interfaces son unos XML legibles a pelo que parseados correctamente podrían ser transformados para hacer una interfaz de cualquier cosa (ahora mismo no recuerdo los de VS ni si proporcionan alguna herramienta para la migración pero me suena que no y ahora mismo no tengo tiempo para comprobarlo). Digo potencialmente porque que yo sepa nadie ha tenido necesidad de hacerlo. Además si cambias de plataforma de servidor aunque no de toolkit la migración es muuuucho más fácil desde el punto de vista de las ventanas.
SickBoy escribió:Supongo que si todo el espectro es Windows evidentemente mejora lo que había pero mirando más ampliamente sigo diciendo que no había necesidad de cambiar todo el bloque. Se necesitaba una mejora de interfaces de programación pero junto con ella nos meten muchas más cosas que hay que tragar.
SickBoy escribió:P.D. : Joer, el que busque un libro de programación en C se va a cagar
FuckingFreaky escribió:Jejeje! SickBoy... eso nos pasa a muchos... cuánto más hay que estudiar, más te conectas ó pierdes el tiempo. Es una curiosa relación...
FuckingFreaky escribió:Supongo que por una parte .NET se utilizará mucho para desarrollar aplicaciones rápidamente, que al fin y al cabo es lo que interesa a las empresas... como pasaba ya con VB.
FuckingFreaky escribió:Pero igual que tú... tampoco me convence demasiado a la larga eso de que se mezclen muchos lenguajes. Es un arma de doble filo.
Que yo sepa no, pero sería algo interesante como proyecto.FuckingFreaky escribió:Por preguntar... .NET no puede pasar de su lenguaje intermedio generado primeramente a través de VB.NET, por ejemplo, a C#, no?
FuckingFreaky escribió:Además... es una cosa que no me cuadra. Esto se basa sobre una máquina virtual, pero se supone que es para dispositivos móviles. Y digo yo... con estos dispositivos de recursos limitados... no se ganaría más con lenguajes compilados? Ya que son limitados en potencia, ¿por qué hacerles cargar con una máquina que siempre será más lenta que un compilado? Pregunto, porque creo que tb se lleva haciendo con Java, y no entiendo mucho por qué, por ese motivo. Tirar de recursos en un HW en el que no sobran...
FuckingFreaky escribió:Por cierto, C# es sólo para .NET, verdad? Es decir... no se puede programar compilado con él... no?
Hombre ya. Me refería a que es la misma manera de pensar en las empresas. La cosa es sacar el trabajo en el menor tiempo posible. La calidad de programación y demás, son secundarios. Por eso utiliza mucho VB, y por eso (que por supuesto es mejor que VB) se utilizará .NET.zheo escribió:Hombre, la verdad es que es un poco mejor que con VB
Ya, pero el caso es que alguien que sepa C++ debe saber esas cosas, por ejemplo. En cambio con .NET un tío que programe en VB.NET no tiene por qué saber C#. Al final, con proyectos grandes, se puede armar mucho pifostio, creo yo. Si estuviera lo que he dicho de poder pasar del código intermedio de .NET a cualquiera de los soportados, ya lo vería de otra forma. Así, cada uno programaría cómo más le gustara, y si dado un momento alguien quiere ese código generado por otro lenguaje, en el que él está acostumbrado, lo tendría. Desde luego, creo que eso sí sería un salto de calidad importante.zheo escribió:Os ha dao fuerte con eso. Es una ventaja. Claro que es un arma de doble filo. Y los punteros. Y los punteros a función. Y la herencia.
Jeje, la verdad que si supiera y tuviera tiempo, me molaría lo de crear un módulo para pasar de un lenguaje a otro en Mono/.NET y un compilador para C#. He visto casi nada de ejemplos de C#, pero si no recuerdo mal era orientado a eventos tb, no? Es mejor, no tiene nada que ver, ó... cómo lo definirías respecto a C y C++?zheo escribió:cita de FuckingFreaky:
Por cierto, C# es sólo para .NET, verdad? Es decir... no se puede programar compilado con él... no?
Nop, aunque otro proyecto puede ser perfectamente un compilador para C#, ya que el lenguaje está estandarizado.
FuckingFreaky escribió:Sobre los móviles... sí, ya había pensado en eso; que con distinto hardware, mejor desarrollar para una MV. La pregunta que me digo (piensa que yo acabo de empezar con esto de la programación) es... esa MV se tendrá que compilar para ese hardware específico, no? Entonces... si ya se tiene un compilador, no se puede aprovechar para aplicaciones compiladas y programar eso en C/C++ por ejemplo?
Si en algún momento hicieran un lenguaje superior a los demás, es decir, superior de verdad (no como C#) obviamente sustituirá en gran parte a C/C++ y ganará mucha portabilidad en poco tiempo.
Fox, con lo del código... tú puedes crear una clase derivada y tal, pero a lo que me refiero es... alguien programa algo en VB.NET; ¿tú puedes ver ese código en C#? Se hace bien la conversión? Todo esto viene por lo que comentamos de que sería un lío que cada uno programara en un lenguaje, y que si luego se te marcha el tío que programaba en tal lenguaje... tuvieras que seguir igual. Total, si vas a poder tener el proyecto en el lenguaje que tú quieras, pasarlo de uno a otro, etc etc... sería la hostia.
Aparte, aunque las ideas sean buenas lo que nunca me va a convencer es la política de MS. Lo hacen multiplataforma para windows
no dan especificaciones de Windows Forms y cosas así... es un juego sucio, como siempre.
¿cómo puede gustaros tanto un lenguaje tan poco portable actualmente?
Por lo que me ha comentado Fox existen traductores de C#a VB.NET y viceversa. Supongo que al pasar todo por CIL, pues con más o menos esfuerzo se pueden hacer ese tipo de cosas.No no puedes verlo en C# al menos de forma directa. Lo puedes ver en IL, si Fox dice que hay traductores yo no los conozco, pero en teoría se podría hacer, otra cosa es cómo quede el código
Ya, pero la cosa es no perder el tiempo en rehacer de nuevo el módulo, ó igual no tener que seguir por la misma linea, con el mismo lenguaje, que anteriormente. Por eso me parecerái interesante la idea de poder cambiar de un lenguaje a otro. Pero vamos, que esto es como una mejora, porque es otra cosa que creo que ni C ni C++ pueden hacer.Si un tío se programa un módulo en un lenguaje y se va, la empresa o bien contrata a otro que sepa programar en ese lenguaje para que continue el módulo, o bien rehace el módulo en otro lenguaje según le interese y punto. Que pasa, ¿que si a una empresa que hace un programa en VB se le van los programadores quiebra? Pues esto igual y en cualquier ámbito, no sólo en el empresarial.
Por eso me parece mucho mejor mono que realmente sí se esfuerza en ser multiplataforma. Si MS vende algo como el "boom" de la multiplataformidad y luego resulta que hay incompatibilidades... dónde está la mejora?Es que un lenguaje no es multiplataforma. Un lenguaje define unas reglas y punto. Es luego responsabilidad del que quiera implementar un compilador a una cierta máquina. Lo mismo en el caso de Windows. MS centra sus esfuerzos en su sistema, lo que es lógico. O vosotros os pondríais a mejorar el Windows Forms por que si.
Pues eso... De todas formas, de las cosas que más les estaba costando al equipo de Mono era implementar Windows Forms. Podrás opinar lo que qiueras, pero yo no lo veo como nada más que una triquiñuela más de MS para imponerse "de facto", como lo hace con sus formatos.Lo que no esperes es que te den el código para que lo mires.
El recolector de basura es una ayuda de programación de la ostia y en ciertos entornos simplifica de una manera brutal el tiempo de desarrollo. En C++ tendrías que currártelo tú con smart pointers, que ya tendrías que currártelo tú y además no sería lo mismo.
/* Código normal */
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
/*
* Aqui puedes mandar los objetos que quieras al AutoreleasePool
* mandandoles el mensaje 'autorelease'
*/
[something autorelease];
/* Aunque puedes seguir usando retain/release como los programadores de verdad */
[pool release];
/* Código normal otra vez */
Porque también hay mundo después del pingüino, y si has tenido que programar en win32, en MFC, lo comparas con Windows Forms y aún así no eres capaz de ver la mejora brutal que hay en el desarrollo, entonces no merece la pena discutir.