2008-09-08 9 views
5

El primer idioma que aprendí fue PHP, pero recientemente recogí Python. Como estos son todos los idiomas de "alto nivel", los he encontrado un poco difíciles de aprender. También intenté aprender Objective-C pero me di por vencido.¿Qué idioma debo aprender como un puente hacia C (y derivadas)

Así que, ¿qué idioma debo aprender a tender un puente entre Python a C

+2

¿Qué pasa con ellos era difícil de recoger? –

+0

Si buscas C con objetos, no uses Objective-C. La sintaxis es incorrecta. En cambio, prueba C++. La sintaxis es muy similar a Java (a propósito). –

Respuesta

15

No está claro por qué necesita una lengua puente. ¿Por qué no empiezas a trabajar con C directamente? C es un lenguaje muy simple en sí mismo. Creo que la parte más difícil para C learner es punteros y todo lo demás relacionado con la gestión de la memoria. También C lang está orientado a la programación estructurada, por lo que deberá aprender a implementar estructuras de datos y algoritmos sin bondad OOP. En realidad, tu pregunta es bastante difícil, por lo general la gente va de niveles bajos a niveles altos y puedo entender la frustración de aquellos que van en otra dirección.

0

Siento tu dolor, también aprendí PHP primero y estoy tratando de aprender C++, no es fácil, y estoy realmente luchando, han pasado 2 años desde que comencé en C++ y aún el alcance de lo que Lo que puedo hacer es cout, cin y math.

Si alguien lee esto y se pregunta por dónde empezar, START LOWER.

7

El mejor lugar para comenzar a aprender C es el libro "The C Programming Language" de Kernighan and Ritchie.

Reconocerá muchas cosas de PHP, y se sorprenderá de lo mucho que PHP (y Perl, Python, etc.) hacen por usted.

Ah, y usted también necesitará un compilador de C, pero supongo que ya lo sabía.

1

Aprender cualquier idioma lleva tiempo, siempre me aseguro de tener un objetivo mensurable; Me propuse un objetivo, luego comencé a aprender el idioma para lograr este objetivo, en lugar de tratar de aprender cada rincón del lenguaje y la sintaxis.

C no es fácil, los punteros pueden ser difíciles de comprender si no viene de ensamblador. Primero aprendí C++, luego adapté C a mi repertorio, pero comencé con el ensamblador x86 y 68000.

0

Java podría ser una buena opción aquí, lo creas o no. Está fuertemente basado en C/C++, por lo que si puede obtener la sintaxis y el tipado fuerte, la selección de C podría ser más fácil. El beneficio es que puede aprender la sintaxis de nivel inferior sin tener que aprender punteros (ya que la memoria se maneja para usted como en Python y PHP). Sin embargo, aprenderá un concepto similar ... referencias (u objetos en general).

Además, está fuertemente orientado a objetos, por lo que puede ser difícil aprender sobre eso si aún no se ha ocupado de OOP .... podría ser mejor que solo busque C, como otros sugirieron, pero es una opción

1

Python está tan cerca de C como de lo que va a obtener. De hecho, es una envoltura muy delgada alrededor de C en muchos lugares. Sin embargo, C requiere que sepa un poco más sobre cómo funciona la computadora en un nivel bajo. Por lo tanto, puede beneficiarse probando un lenguaje ensamblador.

LC-3 es un lenguaje de ensamblaje simple con una máquina simulada.

Alternativamente, podría intentar jugar con un intérprete C interactivo como CINT.

Finalmente, esforzándose y leyendo K & El libro de R suele ser el mejor enfoque.

1

Olvídese de Java: no lo acercará a C (ya ha demostrado que no tiene problemas para aprender una nueva sintaxis).

O lee K & R o ve uno más abajo: aprende sobre la máquina. La única parte difícil de C es la administración de punteros y memoria (que está estrechamente relacionada con los punteros, pero también tiene algo que ver con cómo se llaman las funciones). Aprender un lenguaje (simple, tal vez incluso "falso") debería ayudarte aquí.

Luego, comience a leer en la biblioteca estándar proporcionada por C. Será su pan de cada día.

Oh: otro consejo! Si realmente hace quiere hacer un puente, intente FORTH. Me ayudó a entrar en punteros. Además, el uso de la API Win32 de Visual Basic 6.0 puede enseñarle algunas cosas sobre los punteros;)

1

C es un puente sobre sí mismo.

K & R es el único libro de lenguaje de programación se puede leer de una sentada y casi nunca recogerlo de nuevo ...

1

Mi sugerencia es conseguir una buena C-libro que es relevante para lo que quiere que hacer. Estoy de acuerdo en que K & R se considera "El libro" en C, pero me pareció que "Programación de sistemas UNIX" de Kay A. Robbins y Steven Robbins era más práctico y práctico. El libro está lleno de fragmentos de código breves y limpios que puede escribir, compilar y probar en solo unos minutos cada uno.

Hay una vista previa en http://books.google.com/books?id=tdsZHyH9bQEC&printsec=frontcover (Hiperenlaces no funcionó.)

0

Creo que C++ es un buen "puente" para C supe C++ primero en la Universidad, y ya que está basado en C que' Aprenderá muchos de los mismos conceptos, quizás más notablemente, punteros, pero también Diseño orientado a objetos. OO se puede aplicar a todo tipo de idiomas modernos, por lo que vale la pena aprender.

Después de aprender C++, encontré que no era demasiado difícil detectar las diferencias entre C++ y C según fuera necesario (por ejemplo, cuando trabajaba en dispositivos que no admitían C++).

5

En general, estoy de acuerdo con la mayoría de los demás: no hay realmente un buen lenguaje escalonado.

Sin embargo, es útil comprender lo difícil que es aprender C, lo que puede ayudarlo a comprender lo que le está dificultando.

yo diría que lo que sería difícil en C para alguien que viene de PHP sería:

  • Punteros y gestión de memoria IC
    Este es más o menos la razón por la que está aprendiendo imaginar, así que no hay manera de evitarlo. Aprender idiomas de tipo de ensamblaje de nivel inferior puede hacer esto más fácil, pero C es probablemente un puente para hacer eso, y no al revés.
  • Falta de estructuras de datos integradas
    PHP y co tienen tipos de cadenas nativas y cosas útiles como tablas hash integradas, que no es el caso en C. En C, una cadena es solo una matriz de caracteres, lo que significa que tendrá que trabajar mucho más, o mirar seriamente las bibliotecas que agregan las funciones a las que está acostumbrado.
  • La falta de bibliotecas integradas
    Los lenguajes como PHP hoy en día casi siempre vienen con montones de bibliotecas para cosas como conexiones de bases de datos, manipulación de imágenes y montones de otras cosas. En C, este no es el caso aparte de una biblioteca estándar muy delgada que gira principalmente en torno a la lectura de archivos, la escritura y la manipulación básica de cadenas. Casi siempre hay buenas opciones disponibles para cubrir estas necesidades, pero debe incluirlas usted mismo.
  • Idoneidad para tareas de alto nivel
    Si intenta implementar el mismo tipo de aplicación en C que en PHP, le resultará muy lento. Generar una página web, por ejemplo, no es algo para lo que C sea adecuada, así que si estás tratando de hacerlo, te resultará muy lento.
  • Preprocesador y compilación
    La mayoría de los idiomas en estos días no tienen un preprocesador, y si vienes de PHP, el ciclo de compilación parecerá doloroso. Ambas son compensaciones de rendimiento de alguna manera: los lenguajes de scripting compensan la eficiencia del desarrollador, mientras que C prefiere el rendimiento.

Estoy seguro de que hay más que no me vienen a la mente en este momento. La moraleja de la historia es que tratar de entender lo que estás encontrando difícil en C puede ayudarte a continuar. Si intenta generar páginas web con él, intente hacer algo de nivel inferior. Si te faltan tablas hash, intenta escribir las tuyas o encuentra una biblioteca. Si está luchando con punteros, quédese con él :)

0

intente aprender un idioma con el que se sienta cómodo, pruebe el enfoque diferente y los conceptos básicos.

0

Los idiomas son fáciles de aprender (especialmente uno como C) ... la parte difícil es aprender las bibliotecas y/o el estilo de codificación del idioma. Por ejemplo, conozco C++ bastante bien, pero la mayoría de los códigos C/C++ que veo me confunden porque las convenciones de nomenclatura son muy diferentes a las que trabajo a diario.

De todos modos, creo que lo que estoy tratando de decir es que no se preocupe demasiado por la sintaxis, concéntrese en la biblioteca de dicho idioma. Esto no es específico de C, puedes decir lo mismo sobre C#, vb.net, java y casi todos los demás idiomas que existen.

0

Pascal! Su sintaxis es lo suficientemente cerrada, pero aún así es necesario que haga un poco de administración de la memoria, pero no es tan difícil para los principiantes.

Cuestiones relacionadas