2008-09-21 18 views
7

Una cosa que realmente he querido volver a entrar es la programación en C++, pero no estoy seguro de si debería volver a C++ (que tengo algunos conocimientos básicos de programación de la consola) o ¿debería mirar C o el objetivo C? Estoy buscando a largo plazo, así como la facilidad de codificación, como buenos editores, compiladores, etc., así como cuál sería el más rápido para configurar y ejecutar.¿Cuál es la mejor manera de ir en el largo plazo: C, objetivo C o C++?

Para ir junto con eso, ¿qué software sugerirías para trabajar con un lenguaje sugerido?

[EDIT]

Algunas personas mencionan que es difícil sugerir algo cuando no se sabe lo que estoy haciendo. No tengo ningún programa específico en mente en este momento, solo estoy buscando comenzar con uno de estos tres idiomas para inversión y trabajo a largo plazo o como punto de partida para otra cosa.

Respuesta

6

Realmente solo puedo hablar de C y C++. Aprender no sería malo, si es por la única razón de que hay tanto código heredado en C y C++.

Pure C suele ser la única opción para sistemas operativos, desarrollo de controladores o entornos de desarrollo integrados. Otros usos incluyen momentos en los que el rendimiento es muy crítico: donde desea estar lo más cerca posible de las partes internas de la máquina. Nunca está de más saber saber C porque estas aplicaciones no parecen desaparecer pronto. C también es la "lingua franca" para muchas aplicaciones * nix. Entonces, si quieres contribuir a muchos proyectos de código abierto (apache/svn/cvs/etc), conocer C sería un requisito.

C++, en mi experiencia, se usa cuando te gustaría estar "cerca de la máquina" como cuando codificas para C, pero te gustaría la opción de incluir niveles más altos de abstracción a través de algún OOP. La mayor fortaleza de C++ (y su mayor debilidad) es su multi-paradigma. Te proporciona casi todas las cosas que puedes hacer en C además de muchas características orientadas a objetos. Por ejemplo, puede reutilizar muchos códigos C súper optimizados según sea necesario al crear clases, haciendo herencia/polimorfismo, tanto "orientado a objetos" como desee. Incluso hay formas de incluir algo de programación funcional en la mezcla ...

C++ a menudo se critica por tratar de ser demasiadas cosas para demasiadas personas. Como un intento de hacer todo, dicen los críticos, no es muy bueno en una sola cosa. C++ solía ser la "lingua franca" para aplicaciones de escritorio, pero Java y .Net realmente han quitado a muchos usuarios de Enterprise. Aún así, muchas aplicaciones que se preocupan tanto por el rendimiento como por el uso de la gran cantidad de características adicionales, útiles y, en general, lo suficientemente buenas para sus propósitos, solo disponibles en C++, elegirán C++.

4

Si cree que Apple va a gobernar el mundo algún día, Objective C.

En este momento creo que el desarrollo del iPhone cacao es en donde está. Entonces, Obj-C, personalmente.

8

Si está trabajando principalmente en Windows, sugiero C++. Microsoft está poniendo mucho trabajo detrás del nuevo C++/CLI y el compilador nativo de C++. Con las nuevas incorporaciones de TR1 y C++ 0X, se están abordando muchos de los problemas que existieron en el pasado.

8

Yo diría que elija el idioma que desee y quédese con él por un tiempo. Mientras tanto, concéntrese en los algoritmos. Estos son los componentes básicos de los programas. El lenguaje es solo un lenguaje

Si ha aprendido/dominado uno, solo es cuestión de algunas semanas cambiar a algo diferente, especialmente si permanece en la misma familia de idiomas (por ejemplo, C, C++, Objective C, Java, C# etc.)

-3

Si quiere centrarse sólo en el sistema operativo Windows, entonces le sugiero que empezar directamente con C# (.Net Framework)

+1

Aunque Mono es un número de versión detrás de Microsoft, en realidad están haciendo un muy buen trabajo. Es decir: C# también funciona muy bien en plataformas que no son de Windows. – Thomas

+1

Depende de lo que esté haciendo en el sistema operativo Windows. Todavía hay aplicaciones donde C# no sería apropiado. –

+0

No estoy seguro de por qué esto ha sido rechazado tan fuerte. Hay mucho que decir sobre un lenguaje basado en VM con recolección de basura. – pjc50

1

depende de lo que está haciendo. Si tuviera que elegir uno, diría C++. Es más multiplataforma que Obj-C y menos dolorosa que C. Pero si estás haciendo la programación de Mac, querrás saber Objective-C. Si está realizando alguna programación incrustada o cualquier piratería del kernel, probablemente desee utilizar C.

4

Puede ignorar cualquier respuesta que no le haya preguntado primero qué hará en realidad. Sin esa información, la respuesta es incorrecta, engañosa o simplemente irrelevante.

1

¿Hay alguna razón por la que no vaya con C++ y vaya con C u objetivo C en su lugar? C++ tiene hoy en día la comunidad más amplia, la base de código existente más grande, y se presenta mejor de los tres. Si no crees que sea cierto, aclara (en serio, estoy realmente interesado).

Además, C++ es el único compatible con MS en términos de .NET (si planea migrar a .NET un día, por supuesto).

0

Comience con C, entonces tal vez extienda su conocimiento a C++ si necesita orientación del objeto. Objective C es una cosa oscura como Apple Script de la que solo los desarrolladores de Apple han oído hablar (si existe), no llegarán lejos con ese lenguaje (sin ofender a los fanáticos de ese lenguaje).

C es bastante fácil de aprender (en comparación con C++) y tiene un buen conocimiento básico para cualquier otro idioma que desee aprender más adelante (especialmente C++).

En cuanto a la respuesta de Loren Segal, lo que quiere hacer no importa cuando quiere elegir entre C y C++. Es solo una cuestión de preferencia. Ambos tienen las bibliotecas para todo (dado que las librerías C++ a menudo son solo envoltorios orientados a objetos en torno a las bibliotecas C), ambos tienen una enorme comunidad, IDEs estables y compiladores.

1

Intel está invirtiendo mucho en bibliotecas C++ para ejecutar contra sus procesadores. Dado que Intel parece dominar el mundo de los procesadores de PC últimamente, parece una elección decente.

4

Mi opinión:

De las tres opciones que ha visualizado, su mejor apuesta inicial es probablemente C. Una vez que sabes C, tienen una manija en sus peculiaridades y son competentes en ella, el aprendizaje de C++ o Objetivo- C muy probablemente será bastante trivial. (Sus puntos más difíciles que habrá en el lado de la orientación a objetos del mundo.)

Por el momento, Objective-C se utiliza con mayor frecuencia en los Mac, pero hay algunos que se olvidan de que existen herramientas GNU para Objetivo- C, y eso también es compatible con GNUStep. (El actual Mac OS X se basa en gran medida en el antiguo NextSTEP, cuyo GNUStep es más o menos un clon). Lo que pasa con Objective-C, sin embargo, es que no se usa ampliamente fuera de esos dos entornos, por lo que es algo así como un ambiente estrecho. (Y con Obj-C, como casi cualquier otro lenguaje OO moderno, pasará mucho más tiempo aprendiendo las clases de marco que las reglas sintácticas/léxicas subyacentes).

Soy principalmente un desarrollador de C#. Eso paga mis cuentas, y lo hace muy bien. C# no estaba en su lista, y sospecho que sé por qué: parece que está buscando estar más cerca del metal, menos abstraído. Lo entiendo, y creo que es la opción correcta para el crecimiento profesional a largo plazo. Empecé con innumerables abstracciones entre mi código y la caja (primero profesionalmente con Java, luego VB6, luego .NET), y como resultado, ahora estoy trabajando duro en mi tiempo libre para jugar a "ponerme al día" con el resto del mundo - Actualmente estoy pasando por el K&R book.Es cierto que no tengo necesidad profesional de acercarme tanto al metal, pero siento la necesidad personal de comprender la máquina lo mejor que puedo.

(Además, irónicamente, estoy buscando volver al desarrollo de Cocoa a través de Objective-C. Solía ​​jugar con él hace años, y creo que estoy en una mejor posición para "conseguirlo" ahora ... . Personalmente, creo que la presciencia de C hará que mudarme a Objective-C sea mucho más fácil, más suave y menos probable que introduzca errores desastrosos relacionados con la memoria en mi código!)

Al final del día, creo Tener el conocimiento preexistente de C (¡aunque no era, obviamente, necesario para mí!) es algo muy bueno, y probablemente hace que mudarse a otros idiomas a lo largo del tiempo (lo que hará hacer, a menos que lo haga OS, conductor o trabajo incorporado) más fácil y más suave. No estoy diciendo "no se puede vivir sin eso", estoy diciendo que según la forma en que se formuló su pregunta ... creo que es la respuesta correcta para ese escenario.

0

Pure C es una buena base para tener, no importa en qué otro lenguaje de programación se enfoque. Objective-C, en particular, es solo un código C básico con ideas smalltalk salpicadas en la parte superior. A pesar de que C++ se aventura lejos de C, sigue siendo, en mi opinión, claro que C es el lenguaje más útil para saber. En Objective-C a menudo se despliega en C. En Ruby, Python, Erlang y un sinnúmero de otros idiomas, también suele pasar al modo C. También es un idioma que siempre se puede usar en todas las computadoras que toca.

Así que es mi opinión personal que cada programador realmente debería saber C. Al menos un poco.

3

Veo su pregunta de forma ligeramente diferente y, en última instancia, le sugiero que aprenda Objective-C. Tengo un par de razones para esto.

Uno, Obj-C tiene una forma muy diferente de mirar el modelo OO como su práctica general en lenguajes como C++. Obj-C se basa en Smalltalk y, como tal, todas las "llamadas a métodos" se implementan como mensajes enviados al objeto apropiado. Debido a que este programador ha podido extender esto en algunas técnicas muy interesantes y bastante poderosas. Parte de la razón de aprender un nuevo idioma siempre debe ser ampliar su visión de cómo pueden funcionar las cosas: Obj-C tiene mucho más potencial que C o C++ a este respecto.

Dos, Obj-C, en el Mac, al menos, tiene un marco muy potente detrás de él con un excelente conjunto de herramientas. C y C++ realmente no tienen el mismo marco cohesivo en ninguna plataforma, aunque Microsoft probablemente se acerque en su implementación. Solo trabajar con Cocoa fue suficiente para convencerme de que Obj-C es un gran lenguaje. La biblioteca está muy bien pensada y me pone celosa de los que trabajan día a día.

Tres, Obj-C es un superconjunto de C, por lo que al aprenderlo ya estará familiarizado con la sintaxis de C. Además, la biblioteca C Standard es bastante anémica y se puede aprender con bastante rapidez. C++ es un poco mejor, con el refuerzo disponible, pero el impulso no es tan cohesivo como el Cocoa.

En última instancia, debe decidir cuáles son sus prioridades. Si solo buscas aprender algo nuevo ve con Obj-C.

0

Recientemente aprendí el objetivo C (porque comencé a jugar con Cocoa) después de haber sido desarrollador de C++ durante 10 años más o menos.

me encontré con la experiencia de aprender Objective-C, además de C++ sumamente instructiva, a pesar de que probablemente no vuelva a utilizar Objective-C para cualquier proyecto real.

Tanto Objective-C y C++ añadir una capa de programación orientada a objetos en la parte superior de C. Pero lo hacen de maneras casi completamente opuestos.Parece que cada vez que C++ tomó una decisión de diseño, el objetivo C hizo la elección opuesta. Por ejemplo, C++ usa tipeo estático, mientras que Object-C usa tipado dinámico. O, (reciente) objetivo-C usa recolección de basura que C++ no tiene.

Esto realmente me hizo entender los conceptos de programación orientada a objetos y las elecciones de diseño involucradas con ello de una manera mucho mejor.

Cuestiones relacionadas