¿Cuál es el mejor camino a seguir en el largo plazo:C, Objective C, o C++?[cerrado]

StackOverflow https://stackoverflow.com/questions/109937

  •  02-07-2019
  •  | 
  •  

Pregunta

Una cosa que realmente he tenido la intención de volver a la programación en C++, pero no estoy seguro de si debo volver a la de C++ (que he básicos de la consola de conocimientos de programación) o debo buscar en C o C Objetivo?Estoy buscando en el largo plazo, así como la facilidad de codificación, tales como los buenos editores, compiladores, etc, así como de lo que sería la forma más rápida de ponerse en marcha y funcionando.

Para ir junto con eso, con lo que el software que usted sugiere para el trabajo con una propuesta de lenguaje?

[EDITAR]

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 el momento, sólo estoy mirando a comenzar con uno de estos tres idiomas, ya sea para la inversión a largo plazo y de trabajo, o como un punto de saltar a algo más.

¿Fue útil?

Solución

Realmente se puede hablar sólo de C y C++.El aprendizaje no estaría mal, si por la única razón de que tanto el legado código está en C y C++.

Puro C es a menudo la única opción para los sistemas operativos, desarrollo de controlador, o incorporado entornos de desarrollo.Otros usos incluyen veces cuando el rendimiento es muy crítica, donde quieres estar como "cercanas" a los componentes internos de la máquina como sea posible.Nunca realmente duele saber C debido a que estas aplicaciones de esto parece que no va a desaparecer pronto.C es también la "lingua franca" para un montón de *nix aplicaciones.Así que si usted desea contribuir a una gran cantidad de proyectos de código abierto (apache/svn/cvs/etc), saber C sería un requisito.

C++, en mi experiencia, se utiliza cuando se desea estar "cerca de la máquina", como cuando la codificación de C, pero a usted le gusta la opción de incluir a los niveles superiores de abstracción a través de algunos programación orientada a objetos.C++'s importante de la fuerza (y la mayor debilidad) es que su multi-paradigma.Se le da casi todas las cosas que puede hacer en C además de un montón de características Orientadas a Objetos.Por ejemplo, usted podría reutilizar un montón de super-optimizado el código C según sea necesario, mientras que la creación de clases, haciendo herencia/polimorfismo-tanto "objeto-orientedness" como usted desea.Incluso hay maneras de lanzar en algunas de programación funcional en la mezcla de...

C++ es a menudo criticado como tratando de hacer muchas cosas para mucha gente.Como un intento de hacer de todo, dicen los críticos, no es muy bueno en cualquier cosa.C++ utiliza para ser la "lingua franca" para aplicaciones de escritorio, pero en Java y .Net realmente han tenido una gran cantidad de usuarios de la Empresa de distancia.Aún así, muchas de las aplicaciones que la atención tanto sobre el rendimiento y el uso de la enorme cantidad de adicionales, útiles, generalmente de buena-suficiente-para-tu-a los efectos de características sólo están disponibles en C++ C++.

Otros consejos

Si usted está trabajando principalmente en Windows, te sugiero que C++.Microsoft está poniendo un montón de trabajo detrás de la nueva C++/CLI y el nativo compilador de C++.Con la nueva TR1 y C++0X adiciones, muchos de los problemas que han existido en el pasado se están abordando.

Yo diría - elige cualquier idioma que te gusta y quédate con él por un tiempo.En el ínterin se centran en los algoritmos.Estos son los bloques de construcción de los programas.La lengua es sólo un idioma.

Si has aprendido/dominado uno es sólo una cuestión de algunas semanas para cambiar a algo diferente, especialmente si usted se queda en la misma familia de lenguas (por ejemplo,C, C++, Objective C, Java, C#, etc..)

Si usted piensa que Apple va a dominar el mundo algún día, Objetivo C.

De momento creo que el iPhone de Cacao de desarrollo es en donde está.Así, Obj-C, personalmente.

Usted puede hacer caso omiso de cualquier respuesta que no se pregunte que es lo que en realidad va a estar haciendo.Sin esa información, la respuesta es incorrecta, engañosa o simplemente irrelevante.

Mi opinión:

De las tres opciones que usted ha mostrado, su mejor apuesta inicial es probablemente C.Una vez que usted sepa C, tienen una manija en sus peculiaridades y son competentes en él, el aprendizaje de C++ u Objective-C más probable es que sea bastante trivial.(Su más puntos que habrá en la orientación a objetos lado del mundo.)

Por el momento, Objective-C se utiliza con más frecuencia en Mac, pero hay algunos que se olvidan de que GNU existen herramientas para Objective-C, y que se apoya en GNUStep así.(El actual Mac OS X está basado en gran medida en el antiguo NextSTEP, de los cuales GNUStep es más o menos un clon.) La cosa acerca de Objective-C, sin embargo, es que no es ampliamente utilizado fuera de esas dos ambientes -- lo que es algo de un estrecho medio ambiente.(Y con Obj-C, como el de cualquier otro moderno OO idioma, vas a pasar mucho más tiempo de aprendizaje en el marco de las clases de la real subyacente sintaxis/reglas léxicas.)

Soy ante todo un C# developer.Que paga mis facturas, y lo hace muy bien.C# no estaba en su lista, y sospecho que yo sé por qué:Suena como que usted está buscando para estar más cerca del metal, menos abstracta de distancia.Yo entiendo eso, y creo que es la mejor opción para el largo plazo, el crecimiento de la carrera.Empecé con incontables abstracciones entre mi código y la caja (primera profesional con Java, VB6, entonces .NET), y como resultado, ahora estoy trabajando duro en mi tiempo libre a jugar a "ponerse al día" con el resto del mundo, actualmente estoy yendo a través de la K&R libro.Es cierto, yo no tengo necesidad profesional para conseguir que cerca del metal, pero me siento una necesidad personal de entender la máquina como mejor puedo.

(Además, irónicamente, estoy buscando en conseguir de nuevo en el Cacao de desarrollo a través de Objective-C.Yo solía jugar en ella años atrás, y creo que estoy en mejor posición para "conseguir" que ahora ...Yo, personalmente, siento que la presciencia de C va a tener que mudarse a Objective-C, mucho más fácil, más suave, y me hacen menos probable que introducir desastroso de la memoria relacionados con errores en mi código!)

Al final del día, creo que tener la pre-existentes en el conocimiento de C (mientras que no era, obviamente, necesario para mí!) es una Cosa Muy Buena, y probablemente hace que el movimiento a otros idiomas a lo largo del tiempo (que se hacer, a menos que usted haga OS, el conductor o incrustados de trabajo) es más fácil y más suave.No estoy diciendo "no se puede vivir sin ella," estoy diciendo que se basa en la forma en que su pregunta fue formulada de la ...Creo que es la respuesta correcta para ese escenario.

Miro a su pregunta de forma ligeramente diferente, y en última instancia sería sugieren que aprender Objective-C.Tengo un par de razones para esto.

Uno, Obj-C tiene una manera muy diferente de ver el modelo OO como generalmente implementados en lenguajes como C++.Obj-C se basa en Smalltalk y, como tal, todas las "llamadas de método" se implementan como los mensajes enviados al objeto adecuado.Debido a este programador han sido capaces de ampliar esto en algo muy interesante, y bastante potente, técnicas.Parte de la razón de aprender un nuevo idioma siempre debe ser para ampliar su visión de cómo las cosas pueden funcionar -- Obj-C, que tiene mucho más potencial que C o C++ en este sentido.

Dos, Obj-C, en el Mac, al menos, tiene una muy poderoso marco detrás de él con un excelente conjunto de herramientas.C y C++ en realidad no tienen el mismo marco de cohesión en cualquier plataforma, a pesar de que Microsoft probablemente se compara en su aplicación.Trabajando con el Cacao fue suficiente para convencerme de que Obj-C es un gran lenguaje.La biblioteca está muy bien pensado y me pone celoso de los que llegan a trabajar con él en un día-a-día.

Tres, Obj-C es un superconjunto de C, de modo que el aprendizaje que usted ya esté familiarizado con la sintaxis de C.También, la biblioteca Estándar de C es bastante anémico y se puede aprender muy rápidamente.C++ es un poco mejor, lo que con el impulso que están disponibles, pero el impulso está en ninguna parte cerca tan cohesionado como el Cacao.

En última instancia, usted necesita decidir cuáles son sus prioridades.Si usted sólo está buscando aprender algo nuevo ir con Obj-C.

Depende de lo que estás haciendo.Si tuviera que elegir uno, me gustaría decir que C++.Es más de la cruz-plataforma de Obj-C y menos de un dolor de C.Pero si estás haciendo Mac de programación, usted quiere saber Objective-C.Si usted está haciendo cualquier incrustado de programación o de cualquier kernel hacking, quizás quieras utilizar C.

Hay una razón de por qué no ir con C++ y va con C o C Objetivo en su lugar?C++ tiene hoy en día por mucho, la más amplia comunidad, la más grande base de código existente, y es el mejor destacados de los tres.Si usted no piensa que eso sea cierto, por favor aclarar (en serio, estoy muy interesado).

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

Empezar con C, entonces tal vez ampliar sus conocimientos en C++ si usted necesita la orientación a objetos.Objetivo C es una pequeña cosa como en el caso de Apple Script que sólo los desarrolladores de Apple han oído hablar alguna vez de (si alguna), no llegará lejos con ese idioma (sin ofender a los fans de ese idioma).

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

Con respecto a la respuesta de Loren Segal, lo que quieres hacer no importa cuando usted quiere elegir entre C y C++.Es sólo una cuestión de preferencia.Ambos tienen las bibliotecas para todo (desde bibliotecas de C++ son a menudo sólo orientado a objetos contenedores de bibliotecas C), ambos tienen una enorme comunidad, estable IDEs de programación y compiladores.

Intel está invirtiendo mucho en bibliotecas de C++ para la ejecución en contra de sus procesadores.Desde Intel parece estar dominando el procesador de la PC del mundo últimamente, parece una opción decente.

C puro es un bien básico que no importa qué otro lenguaje de programación, a continuación, se centra en.Objective-C, en particular, es solo lo básico de C código con smalltalk ideas espolvoreado por encima.Aunque C++ ventures lejos de C todavía lo es, en mi opinión, claro que C es el idioma más útil saber.En Objective-C que a menudo caen en C.En Ruby, Python, Erlang y un sinnúmero de otros idiomas que también a menudo en C modo.Es también un idioma que usted puede contar siempre en ser capaz de utilizar en cada equipo que te toque.

Así que es mi opinión personal de que todo programador debe saber C.Al menos un poco.

Hace poco me enteré de objective-C (porque yo empezamos a jugar con el Cacao) después de haber sido un desarrollador de C++ para 10 años o así.

Encontré la experiencia de aprendizaje de objective-C, además de C++ extremadamente instructiva, aunque probablemente no me voy a utilizar objective-C para cualquier proyecto real.

Ambos objective-C y C++ agregar una capa de la programación orientada a objetos en la parte superior de la C.Pero ellos lo hacen en casi completamente opuestas maneras.Parece que cada vez que C++ hecho una decisión de diseño, objective-C hizo la elección opuesta.Por ejemplo, C++ utiliza estáticos, mientras que objective-C, usa tipado dinámico.O, (reciente) objective-C utiliza la recolección de basura que C++ no.

Esto realmente me hizo comprender los conceptos de la programación orientada a objetos y el diseño de las opciones que participan con él en una manera mucho mejor.

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top