Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] Duda antes de trabajar en C y q no aparece en ningun sitio

Estas en el tema de Duda antes de trabajar en C y q no aparece en ningun sitio en el foro de C/C++ en Foros del Web. Cuando empiezas a trabajar con C++ de Visual Studio, es como si empezaras de 0 es decir, como si fuera una hoja en blanco y ...
  #1 (permalink)  
Antiguo 26/01/2013, 11:59
Avatar de boronix  
Fecha de Ingreso: enero-2013
Ubicación: España
Mensajes: 17
Antigüedad: 11 años, 3 meses
Puntos: 0
Información Duda antes de trabajar en C y q no aparece en ningun sitio

Cuando empiezas a trabajar con C++ de Visual Studio, es como si empezaras de 0 es decir, como si fuera una hoja en blanco y escribes todo lo q te viene a la mente. O por el contrario es como un puzzle complejo, q para q te salgan las cosas tienes q añadir librerias, datos,... etc.

Al principio creia q era como una hoja, pero con el tiempo creo q es como un puzzle porq cuando pones int, printf, scanf, tú no defines printf, scanf, eso te viene inlcuido en el programa.

Necesito la opinion de un experto para poder enterderlo y soldar las bases. Muchisimas gracias.
  #2 (permalink)  
Antiguo 26/01/2013, 14:33
Avatar de L3m0n  
Fecha de Ingreso: diciembre-2011
Mensajes: 219
Antigüedad: 12 años, 4 meses
Puntos: 46
Respuesta: Duda antes de trabajar en C y q no aparece en ningun sitio

Buenas, vamos a ver, programar en si es una hoja en blanco, pero si fuera una hoja en blanco todos programaríamos en binario o en ASM. Así que para ahorrar tiempo se crean abstracciones sobre la maquina, una de las primeras abstracciones es el lenguaje C, que en su principio no era mas que un ensamblador portable.

Tu hablas de librerias, pero eso no deja de ser una hoja en blanco, si yo ahora cojo un papel y un lapiz y me pongo a escribir lo que quiera, es eso un puzzle porque no he sido yo quien ha creado ese lapiz/papel? Personalmente no lo creo.

De hecho estas librerias las ha hecho alguien, no han aparecido ahí por arte de magia, de hecho podríamos hacer nuestras propias librerias para sustituir a las ya existentes, pero que sentido tendria?


En resumen, que el hecho de que existan librerias no creo que haga que un programa deje de ser una hoja en blanco, cuando vas a empezar un programa, puedes acabar haciendo lo que te salga de las narices(segun el nivel que tengas) así que yo opino que es solo una hoja en blanco en la que plasmamos nuestro conocimiento(que bonito xDDD)


Saludos
  #3 (permalink)  
Antiguo 26/01/2013, 15:59
Avatar de boronix  
Fecha de Ingreso: enero-2013
Ubicación: España
Mensajes: 17
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Duda antes de trabajar en C y q no aparece en ningun sitio

Muchas gracias L3m0n, la pregunta era un poco absurda pero tenia q saberlo por alguien q sabe del tema porq yo solo ahora mismo no sacaria nada. Aprender de cero. Muchisimas gracias.
  #4 (permalink)  
Antiguo 26/01/2013, 16:32
 
Fecha de Ingreso: julio-2012
Mensajes: 375
Antigüedad: 11 años, 9 meses
Puntos: 28
Respuesta: Duda antes de trabajar en C y q no aparece en ningun sitio

La idea es no reiventar la rueda.

Si hay algo que ya esté inventado, pues lo utilizas y es trabajo y esfuerzo que te ahorra (además problamente este ya testeado y sin bugs).
  #5 (permalink)  
Antiguo 31/01/2013, 09:07
Avatar de CapacProg  
Fecha de Ingreso: marzo-2010
Ubicación: Lima - Perú
Mensajes: 324
Antigüedad: 14 años, 1 mes
Puntos: 71
Respuesta: Duda antes de trabajar en C y q no aparece en ningun sitio

Lo mismo sucede cuando deseas aprender cualquier otro lenguaje, lo mejor es informarse y leer la documentación comenzando con un hola mundo. Y luego vas investigando sobre las diferentes bibliotecas y sus funciones.
__________________
%
El mejor guerrero no es el que triunfa siempre sino el que vuelve sin miedo a la batalla.
%
  #6 (permalink)  
Antiguo 01/02/2013, 05:38
Avatar de dontexplain  
Fecha de Ingreso: junio-2012
Mensajes: 536
Antigüedad: 11 años, 10 meses
Puntos: 127
Respuesta: Duda antes de trabajar en C y q no aparece en ningun sitio

C es una implementación de alto nivel de ensamblador. Prácticamente toda la lógica ( o casi toda) es lógica numérica que es procesada por la misma CPU. Las operaciones lógicas de una CPU tradicional no se reducen a operaciones matemáticas simples, hay operaciones matemáticas extendidas, para E/S, binarias, etc. Todo lo que puede realizarse en C es meramente una forma abreviada de realizar esas mismas operaciones de bajo nivel.

Por ejemplo, si escribes este código

Código C:
Ver original
  1. double a = 999.0;
  2. double b = a/3;

El compilador lo traduce automáticamente a
Código ensamblador:
Ver original
  1. movsd       xmm0,mmword ptr ds:[0C85868h]  
  2.  movsd       mmword ptr [a],xmm0
  3.  movsd       xmm0,mmword ptr [a]  
  4.  divsd       xmm0,mmword ptr ds:[0C85858h]  
  5.  movsd       mmword ptr [b],xmm0

Lo primero y más notable es el uso de regístros XMM de 16 bytes en lugar de los tradicionales eax, ebx, ecx de apenas 4 bytes donde una variable double de 8 bytes no tendría sitio. Luego, en lugar de usar la operación div de la CPU para realizar la división convencional si fuera un entero usa obligadamente divsd que no hace más que una operación de división entre números de punto flotante de doble precisión, o sea, entre números de 8 a 16 bytes usando los regístros XMM de 16 bytes o cualquier otro de 8 bytes para almacenar el resultado. Luego usa movsd en lugar de un mov tradicional para mover tal entero a un regístro.

Finalmente almacena el resultado en la RAM convencional pero como un puntero mmword de 8 bytes, ya que es tontería usar un doubleword de 16 bytes (xmmword ptr) si una variable double ocupa 8 bytes.

Entonces queda como:

1. Usa registros de 16 bytes en lugar de registros de 4 porque double ocupa 8 bytes y un registro de una CPU tiene un máximo de 4 bytes.
2. Usa las operaciones de la CPU para mover datos (movsd), dividir números (divsd) en lugar de los tradicionales mov y div.
3. Usa punteros especiales y tipos de datos distintos a los comunes como byte, word o dword o qword por los propios de XMM que son mmword y xmmword.

Todo se reduce a operaciones matemáticas más o menos elementales.

Cuando escribes int y respondiendo a tu pregunta, por supuesto, son tipos simulados.

int es un entero de 4 bytes. char es un entero de 1 byte. La CPU no maneja tipos de datos, sólo maneja números, los tipos se refieren al espacio que ocupan en la memoria, y ahí se refieren como byte, word, dword ó qword. Cuando almacenas una variable char es una forma breve de decir una variable de 1 byte, luego, en cualquier caso, siempre almacenará números, y en cualquier caso esos números no son más que máscaras de bits.

Un saludo.
__________________
21añero.
HTML/CSS, PHP, JS/jQuery, Mysql; NodeJS/Socket.io (& V8); C++ ; Python (wxpy); Ensamblador.
Músico (clarinetista/pianista) y compositor

Última edición por dontexplain; 01/02/2013 a las 05:50
  #7 (permalink)  
Antiguo 02/02/2013, 21:22
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 4 meses
Puntos: 94
Respuesta: Duda antes de trabajar en C y q no aparece en ningun sitio

Muy buena explicacion. Saludos

Etiquetas: int, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:48.