C/Visual C - Comparativa

   
Vista:

Comparativa

Publicado por maia (1 intervención) el 21/10/2007 11:44:19
Hola,
Me gustaría pedir ayuda a la gente que realmente trabaja con C.
Una compañera y yo estamos teminando nuestro proyecto de fin de carrera.
El proyecto intenta ser una comparativa entre varios lenguajes de programación.
Creemos que para poder realizar correctamente la comparativa no basta con matizar las diferencias teoricas. Creemos que es necesario saber con los beneficios y problemas con los que se ha encontrado el que haya trabajado con el.
Si no os supone mucha molestia, me podrias explicar ¿porque habeis elegido C como medio de trabajo o como lenguaje de programación predilecto?

Muchisimas gracias a todos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Comparativa

Publicado por Nayumi Orama (53 intervenciones) el 22/10/2007 09:37:14
Ahí va mi granito de arena.

Mi primer trabajo, allá por 1990 fue como programador de sistemas pseudorobóticos. Contábamos con MSDos 6.20 y 1 Mb de memoria ram en el mejor de los casos. Necésitábamos hacer que el pc controlara una serie de sistemas con motores paso a paso y capturara información de un montón de sondas y sensores. Obviamente, el único lenguaje que podía hacer eso era C. Trábajámamos con Turbo C 2.0 de Borland.

Desde entonces me he dedicado ha trabajar con este tipo de sistemas, evolucionando en prestaciones y capacidades. Y siempre en C y C++. Con la llegada de los microprocesadores programables, hemos podido descargar al pc de trabajo haciendo equipos más pequeños y fiables, pero siempre programados en C.

En los últimos años nos hemos abierto al mercado de internet ofreciendo nuestras aplicaciones de control sobre internet y seguimos con C ( C# ). El periodo de aprendizaje ha sido muy rápido.

Ventajas de C: a parte de lo ya sabido de rápidez de ejecución, optimización de los recursos de máquinas, etc, etc, etc.... para mi la mayor ventaja es que exije ser muy meticuloso con los pequeños detalles. Esto, que a priori puede parecer una desventaja, consigue que los programadores esten muy centrados en los posibles fallos y errores que puedan producirse en su código, con lo que la calidad del producto final está fuera de toda duda. Obviamente, para que los programadores puedan hacer bien su trabajo, es imprescindible que tengan un buen análisis hecho, que les permita concentrarse en escribir un código de calidad.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Comparativa

Publicado por fernando.gomez (1604 intervenciones) el 23/10/2007 04:06:00
Después de oir historias como estas casi hasta me avergüenzo de que yo comencé a programar con IDEs como VC6... ya todo suavecito...

No sé que hubiera sido de mí programando con TC...

:-)

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Comparativa

Publicado por fernando.gomez (1604 intervenciones) el 23/10/2007 04:33:00
Yo no trabajo con C, sino con C++, que son lenguajes completamente distintos y muchas veces se comete el error de mezclarlos.

Empleo C++ por varias razones.

1. Es el lenguaje estándar para hacer aplicaciones en Windows. Hay que comer y pagar cuentas, así que hay que saber lo que te pide el mercado. Y el mercado te pide C++ (aunque en los últimos años C# ha ido ganando fuerza).

2. Es un lenguaje que te permite agregar diferentes capas de abstracción a diferentes niveles. Por su naturaleza orientada a objetos te permite crear estas capas, y encapsular funcionalidad en distintos niveles. En una capa presento la información al usuario a través de una GUI, en otra capa solo manejo las reglas de negocio y la validación y manipulación de datos, en una capa más abajo me encargo de obtener los datos desde mi fuente (sea un archivo, una base de datos, etc) y si aún quiero, puedo crear otra capa que trabaje directamente con el Hardware. Ningún otro lenguaje te provée de esta facilidad. C es un lenguaje de bajo nivel (muchos dicen que es ensamblador con funciones), pero difícilmente llegarás a estructurar una aplicación de esta forma. ¿Las ventajas? Si le muevo a una capa, es garantía de que no fastidio alguna capa más abajo.

3. C++ es multiparadigma: programación estructurada, programación orientada a objetos y programación genérica. No existe otro lenguaje así. C es estríctamente estructurado, Java solamente orientado a objetos (el hecho de que tenga "genéricos" no lo convierte en lenguaje de programación genérica, no cumple los requisitos), C# es orientado a objetos y en la versión 2 también incorpora programación genérica, pero no la estructurada, Delphi es estructurada y orientada a objetos, y VB... bueno, es VB. Claro que es un arma de doble filo, sobre todo para quienes no saben aprovechar las características de los tres paradigmas.

4. C++ es portable y estandarizado. Llevó mucho tiempo, sudor y sangre, pero lo es. Hay un comité encargado de estudiar y (en su caso) incorporar las ideas de empresas, programadores, académicos y de todos los interesados. De esta forma (y aunque lleve mucho tiempo conciliar posiciones), todos quedan contentos. A diferencia de Java, que depende de una empresa que puede hacer lo que le de la gana. El mejor ejemplo de esto quizás es C#, donde vemos que en la versión 3 y 3.5 Microsoft hizo lo que le dio la gana y con la incorporación de LINQ está haciendo un desbarajuste horrible del lenguaje.

5. Debido a que puedes trabajar a bajo nivel, directamente con el SO o con el hardware mismo, es extremadamente rápido y eficiente. A diferencia de Java que corre sobre una máquina virtual lo cuál ralentiza mucho los tiempos de ejecución, o de C# que se compila a un lenguaje intermedio (MSIL) para después compilarse a código nativo (perdiendo tiempo de proceso), además de que se necesita un "framework" de más de 50MB de tamaño. Y eso por no mencionar a VB o Delphi, que están basados en COM.

6. El lenguaje te permite tomar las decisiones que quieras, aún a costa de que éstas sean erróneas. Esto también es un arma de doble filo, ya que permite al programador experto poder hacer comunicación entre procesos y manipulación libre de la memoria para obtener mejores resultados... mientras que permite al programador inexperto poder hacer que su máquina explote.

7. Una de las cosas que se critica de C++ es que no tiene una librería estándar "moderna", por ejemplo, con GUIs, a diferencia de Java o C#. Sin embargo, la cantidad de librerías escritas es tan grande (MFC, WTL para Windows, KDE, GNOME para Unix, Cocoa para Mac, e inclusive algunas portátiles como Qt) que hace de este punto algo totalmente irrelevante. Además, las librerías fueron diseñadas así ex profeso, debido al requisito de la portabilidad (por ejemplo, una GUI la podría soportar una PC normal, pero no necesariamente otros dispositivos como una Palm).

8. La compatibilidad con la Interfaz Binaria de Aplicación (ABI, Application Binary Interface) de C hace que la interoperabilidad entre estos dos lenguajes sea extraordinariamente eficaz (de ahí que muchos piensen que C y C++ son lo mismo, o que simplemente C es un subconjunto de C++). Y como todos los sistemas operativos de hoy en día están escritos en C, pues eso hace que C++ pueda interactuar directamente con los SOs de forma prácticamente transparente.

Bueno, estas son algunas de las razones que puedo pensar al momento. Te recomendaría que revisaras algunos sitios informativos como en.wikipedia.org/wiki/C++ para mayor información sobre las capacidades del lenguaje. Sobre su futuro, escribí esto hace unos meses, quizás te sirva:
http://kithkanan-programacionencpp.blogspot.com/2007/03/editorial-el-futuro-de-c-y-win32.html

Saludos.

P.D. También yo soy bastante necio, y probablemente muera de hambre en unas décadas, porque seguiré programando en C++. Pero moriré feliz.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar