lunes, 6 de febrero de 2017

Bitcoin Mininig: Caso Venezuela

Butterfly Labs, Avalon, KnC, AntMiner s9, Spondoolies, IceDrill, Alydian, CoinTerra… ¿te suenan varios de estos nombres? Entonces probablemente estás pensando en invertir tu dinero en la famosa minería Bitcoin. Quizás hayas escuchado historias sobre las primeras personas que minaron bitcoins y ahora tienen el equivalente a miles de dólares en la criptomoneda,  o quizá sepas de personas que hoy en día tienen mineros generando grandes ganancias en bitcoin. ¡¿Eh?! 
¿Ya tenías abierta la página de KnC para ordenar un dispositivo minero?

En efecto, las monedas criptográficas, como el Bitcoin, se generan usando ciertos algoritmos, y para conseguirlas, así como para gestionar las transacciones, se necesita potencia de proceso. Poner a tu ordenador a trabajar para crear nuevos bloques y aprobar transacciones es lo que se conoce como minar Bitcoins. Si añades un Block, te lo quedas para tí la comisión de 12,5 BTC.

Hoy  1 BTC = US $ 1013   WOW!!!!!


¿Cómo funciona Bitcoin?

Las monedas virtuales criptográficas no son algo nuevo. Los primeros algoritmos datan de 1985.
Básicamente, consisten en largas cadenas de números encriptados que se ajustan a un algoritmo, que es el que dice qué códigos son monedas válidas, y cuales no.
Bitcoin nació en 2009, y marcó un antes y un después por su condición de moneda descentralizada. No depende de un servidor, un banco, o un país para regular su valor. En cierto modo, es la primera moneda democrática, porque son sus usuarios los que establecen las reglas y el tipo de cambio.

Conceptos básicos

Tal como hemos comentado, cada bitcoin es un código encriptado que se asocia a una dirección de bitcoin, perteneciente a una persona. La dirección de bitcoin indica quién posee la moneda, pues el concepto es el mismo que el dinero en metálico: la posesión es anónima, el dueño es quien la tiene en su poder en cada momento.
Las direcciones de bitcoin se guardan en monederos, que pertenecen a personas físicas.
Cuando dos usuarios hacen una transacción de bitcoins (cambian divisas, pagan o cobran con la moneda) dicha operación no es válida hasta que la validen los usuarios de la red P2P de Bitcoin, compuesta por otros usuarios, y por mineros.

Las transacciones se agrupan en bloques y requieren complejos cálculos matemáticos para procesarse, una potencia de cálculo que aportan los mineros. Como recompensa a su trabajo, cada 10 minutos se genera un nuevo bloque con un nuevo bitcoin sin dueño, que se lo reparten los mineros que han participado en la creación del bloque.
En efecto, nuevos bitcoins se van generando cada cierto tiempo, así es como crece el mercado. Sólo podrán existir un máximo de 21 millones de Bitcoins, pero se tardarán años en llegar a esa cifra.
Como cada vez hay más mineros, cada vez toca a menos el reparto, por eso se permite que una parte de las transacciones, una especie de “propina” o tasa, vaya a los mineros. Este tasa la elige el que paga, y como más alta sea, más rápido procesan tus transacciones.
En efecto, un transacción debe ser procesada dentro de un bloque, y esa operación debe ser aprobada por otros mineros y usuarios que estén en la red (lo hace el software de Bitcoin instalado).
Sólo cuando la mayoría de los usuarios dan por buena una transacción, se considera válida. Lo normal es esperar a que se generen 6 o 7 bloques, alrededor de una hora, para que un pago o un cobro en bitcoins se considere válido.
Mediante las claves públicas y privadas de los implicados se cambia la dirección de bitcoin, para indicar el nuevo dueño de cada moneda.

Ventajas e inconvenientes

Como puedes ver, Bitcoin y otras monedas equivalentes no necesitan un organismo controlador para regularse. Son los propios usuarios de la red Bitcoin los que deciden si una transacción, o una nueva moneda, es o no válida.
Las monedas no están asociadas a nombres, sólo a claves encriptadas, así que los pagos son anónimos.
Al mismo tiempo, todas las transacciones quedan registradas en la cadena de bloques y son públicas, así que es fácil detectar a los que intentan estafar.
Puesto que las transacciones y monedas se aprueban combinando los cálculos de miles de ordenadores de la red P2P, es muy complicado hackear o falsear transacciones, porque nadie tiene la potencia de proceso suficiente para superar a todos estos miles de ordenadores “honestos” trabajando juntos.
Seguro que te estarás preguntado, ante la ausencia de un organismo regulador, ¿cómo se establece el valor del Bitcoin? Pues depende del número de usuarios de la red P2P de Bitcoin, y su actividad. Si hay muchos usuarios, mineros y transacciones, el valor sube.

¿Se gana dinero minando Bitcoins?

Este resumen del funcionamiento de las monedas criptográficas en general, y el Bitcoin en particular, nos permite entender lo que es la minería de monedas, y cómo funciona.
Tienes que ejecutar un software que te conecta a la red P2P de la moneda. A cambio de parte de la potencia de proceso de tu ordenador, recibes un pago en esa moneda, equivalente a la potencia que suministres, ya sea cuando se genera un bloque nuevo, o a través de una tasa en las transacciones.
Sin embargo debes sopesar el gasto en electricidad, un gasto físico de las componentes de tu equipo, y una reducción de su rendimiento mientras está minando.
¿Es rentable minar monedas? Pues siendo sinceros, con un ordenador doméstico, no. Ten en cuenta que la minería se puso se moda hace tres o cuatro años, y mucha gente comenzó a conectar equipos en paralelo y varias tarjetas gráficas y CPU.


El software

Para minar necesitas un software que se conecta a la red P2P. Los programas más populares son CGMiner y BFGMiner, pero funcionan con comandos. Más cómodo de usar es EasyMiner. Puedes descargarlos desde Bitcoin Mining. Otro muy popular es el software oficial Bitcoin Core.
Tal como hemos comentado, si minas en solitario pueden pasar meses antes de que ganes un sólo bitcoin. Lo más práctico es unirse a un grupo de minado o mining pools.
Se trata de dejar el software en funcionamiento para que trabaje a su ritmo. Los bitcoins que ganes se guardarán en el monedero que asignes.

Wallet: Los monederos

Un monedero no es más que un programa que guardar tus bitcoins. Ten en cuenta que pueden ser robados por virus, troyanos, o hackers. Protégelos con dobles contraseñas, haz copias de seguridad y  guárdalos en ordenadores que no estén conectados a Internet.


Las monedas criptográficas son una fascinante tecnología, que está dando sus primeros pasos, en países con falta de transparencia son indispensables: Ver casos de China, Argentina y Venezuela. Algunos auguran que cambiarán la Economía, como el email cambió el correo tradicional o la propia Internet, las comunicaciones. Otros están convencidos de que los gobiernos las pondrán freno, o intentarán controlarlas.













Venezuela: Con los Chaburros todo es Ilegal:


Fue desmantelada  en  Venezuela  una “mina” de bitcoin, en donde la moneda virtual se cotizaba a dólar paralelo, por lo que se presume delitos como legitimación de capitales, contrabando y asociación para delinquir y de fraude cambiario. Este sería el primer caso en Venezuela registrado bajo dicha modalidad.
Según el portal Surbitcoin en Venezuela se ha movilizado mediante este método 62 millones 493 mil 538 bolívares. La moneda se cotiza a 461,005 bolívares para la compra y a Bs. 474 a la venta, en promedio por cada Bitcoin cambiado la empresa ganaría Bs 12.995.
Dos hombres identificados como Joel Augusto Padrón Celis (31) y José Eleazar Perales González (46) resultaron detenidos por presuntos ilícitos electrónicos el pasado lunes 14 de marzo en dos sitos diferentes, localizados en la Zona Industrial de Valencia en operativo coordinado por el Servicio Bolivariano de Inteligencia (Sebin) Carabobo, según reseñó El Carabobeño.
Padrón habría sido detenido en un local situado en la avenida Henry Ford, adyacente al Consejo Legislativo de Carabobo y Perales en la Urbanización Industrial Carabobo, cercano a la planta de Coca-cola, detalló el comisario jefe del Sebin Carabobo, José Meléndez
El funcionario explicó que la alerta habría sido suministrada por personal del servicio eléctrico nacional (Corpoelec), quienes luego de visitar la zona por sus altísimos niveles de consumo encontraron sospechosa la naturaleza de los establecimientos en cuestión. “Cuando hacen sus mediciones observan que hay unas máquinas, tipo servidores, que están instaladas sistemáticamente en dichos espacios. La razón social de los comercios no se correspondían a la actividad que estaban  realizando”, aclaró.
Meléndez explicó que los encargados de los comercios alegaron ser una empresa de creación de software. Tras analizarse los equipos se determinó que se trataban de “minas” generadores de una moneda virtual denominada Bitcoin.  “Al pedírseles la documentación de la maquinaria se constató que carecían de sus respectivos manifiestos de importación. Bajo la presunción de contrabando de mercancía se procedió a la aprehensión. Actualmente la investigación se dirige hacia la comercialización del Bitcoin en el país”, puntualizó. Se incautaron 41 unidades ASIC miners y cuatro laptops.
El comisario detalló que los sujetos permanecerán recluidos en la sede del Sebin, situado en la calle 180-A de la urbanización Santa Ana, Naguanagua. La fiscalía segunda del Estado Carabobo fue notificada del procedimiento.

viernes, 16 de diciembre de 2016

Bitcoin : La moneda virtual

Bitcoin (signo: BitcoinSign.svg; abr.: BTC, XBT)3 es una criptodivisa concebida en 2009. El término se aplica también al protocolo y a la red P2P que lo sustenta y de forma común se denomina como una moneda digital. Generalmente se usa «Bitcoin» para referirse a la red o al protocolo y «bitcoin» (plural: «bitcoines») para referirse a las unidades monetarias.

Ver en este enlace : ¿Qué es el Bitcoin?

Noviembre 1, 2008 Satoshi Nakamoto publica el paper: "Bitcoin: A peer to peer Electronic Cash System"



1BTC = US $ 1023
Bitcoin se caracteriza por ser descentralizado, es decir, no está respaldado por ningún gobierno ni depende de la confianza en un emisor central. Por el contrario, utiliza un sistema de prueba de trabajo para impedir el doble gasto y alcanzar el consenso entre todos los nodos que integran la red intercambiando información sobre una red no confiable y potencialmente comprometida (resuelve el problema de los generales bizantinos). De igual forma, las transacciones no necesitan de intermediarios y el protocolo es código abierto.

Bitcoin es un proyecto innovador en constante evolución y cambio. Si bien los desarrolladores recomiendan investigar cómo funcionan previo a invertir en ellos o abrir una cartera para utilizarlos, también consideran que tiene la capacidad de cambiar el mundo en términos económicos.

Bitcoin, la moneda que está cambiando el mundo.

Bitcoin es una moneda, como el euro o el dólar estadounidense, que sirve para intercambiar bienes y servicios. Sin embargo, a diferencia de otras monedas, Bitcoin es una divisa electrónica que presenta novedosas características y destaca por su eficiencia, seguridad y facilidad de intercambio.
Su mayor diferencia frente al resto de monedas, se trata de una moneda descentralizada, por lo que nadie la controla. Bitcoin no tiene un emisor central como los dólares o los euros, la criptomoneda es producida por las personas y empresas de alrededor del mundo dedicando gran cantidad de recursos a la minería.
Si ya sabes qué es bitcoin y lo que tú buscas es directamente comprar bitcoins, aquí tienes una entrada de la web que lo explica. Vamos allá con la guía.

En esta guía aprenderás.

A elegir entre los diferentes tipos de wallets de Bitcoin ( ver mas en este enlace ) que existen, a poder explicar cómo funciona Bitcoin, sus distintos típos de direcciones, además de tener a vuestra disposición una página de preguntas frecuentes y un blog de Bitcoin donde de forma periódica, se van comentando los últimos acontecimientos de la moneda virtual más famosa.

Beneficios y ventajas de Bitcoin

En la actualidad, es la moneda digital más usada de todo el mundo y hay buenas razones por las cuales se está haciendo cada vez más popular. Tanto usuarios particulares como vendedores y propietarios de negocios encuentran en Bitcoin importantes ventajas que les han llevado a adoptar este sistema.





Proof of Work. Prueba de trabajo para tener consenso


Bitcoin podría operar perfectamente sin prueba de trabajo, siempre que todos los participantes fueran perfectamente honestos y altruistas. La prueba de trabajo es un método para establecer un consenso entre un número de personas interesadas, ninguna de las cuales está subordinada a otra, y existen incentivos considerables para resistirse a dicho consenso.

Antes de que un bloque nuevo sea generado, puede que haya muchos pagos pululando por la red sin existir respuesta objetiva acerca de qué pagos deberían ser validados. Algunos podrían ser inválidos, así que todos deben ser comprobados. Algunos pueden no incluir una tasa de transacción, así que debe decidirse si dejar a estos gorrones pasar, o si ignorarlos. Finalmente, podría haber un conjunto de 2 o más pagos que no pueden ser válidos simultáneamente. Por ejemplo, si alguien intenta gastar los mismos bitcoines en dos transacciones que aún no han sido confirmadas, habría que tomar una decisión sobre qué pago permitir.

De este modo, para un conjunto de pagos dado, pueden existir muchos bloques posibles que pueden construirse con ellos, ninguno de los cuales es objetivamente el más correcto. Tampoco habrá necesariamente un acuerdo acerca de qué resultado es preferible, porque los distintos bloques posibles benefician a distintas personas. Primeramente, está el beneficio que surge de generar un bloque en forma de nuevos bitcoines. Esto es necesario porque, si no existiera, habría muy poco incentivo para hacer la contabilidad para empezar. Con esta recompensa, cada minero naturalmente prefiere que el nuevo bloque sea su propuesta, y no la de cualquier otro.

Además puede haber comportamientos malintencionados. Por ejemplo un minero podría negarse a validar las transacciones procedentes de su enemigo, o podría mostrarse más o menos altruista con las tarifas por transacción que aceptará. Podría incluso proponerse estafar a alguien mediante el doble gasto: él mandaría un pago a la víctima a cambio de un bien determinado, pero solo confirmaría otro pago que hace a una cartera de su propiedad y que está en conflicto con el primero; esto invalidaría el primer pago, y acabaría quedándose con un bien por el que no ha pagado.

Para evitar que se hagan manipulaciones interesadas Bitcoin añade requerimientos extra al protocolo que incrementan enormemente el coste de la deserción. Los bloques se generan aleatoriamente mediante un cálculo muy difícil, que requiere muchos recursos computacionales, y solo se propone un único bloque a la vez. Es anunciado y verificado por la mayoría de otros nodos (lo cual es fácil verificando los hashes). Cuando un bloque ha sido propuesto, los mineros tienen la opción de continuar buscando un bloque alternativo que les sea más favorable, o aceptar la propuesta (dar por verificado) y luego pasar a buscar el siguiente. Alguien que acepta el último bloque propuesto entiende que está siguiendo un proceso de consenso natural y que, si tiene la suerte de generar el siguiente bloque, será probablemente aceptado por las mismas razones que él aceptó el anterior. Por el otro lado, la opción de esperar e intentar encontrar un bloque más favorable para él es muy arriesgada, porque entonces tendría que convencer a un número suficiente de mineros de que podrá establecer un nuevo consenso, para que le sigan.

La regla general es que el primer bloque minado nunca es egoísta, porque nadie puede planear ser el primero en resolverlo. Uno solo puede ser el primero con suerte. Cualquiera que se desmarque de ese bloque levantará sospechas, porque tiene que rechazar una alternativa perfectamente válida y supuestamente altruista, y convencer a los demás de que hagan lo mismo; algo nada fácil de hacer.

La fortaleza de la firma realizada por la red Bitcoin es directamente proporcional al poder computacional total de todos los mineros. Cuanto mayor sea más difícil será (más poder computacional) cambiar la cadena de consenso.En esto se basa el protocolo de consenso de bitcoin, el cual puede manejar fallos bizantinos.

Si queremos cambiar un bloque de la cadena, cada bloque que viene después de ese bloque tiene que ser rehasheado y rehacer el trabajo. Esto hace que sea esencialmente imposible modificar un bloque.
Críticas

    Concentración del poder de creación de bloques: La especialización del proceso de minado, para hacerlo rentable, está provocando que el poder para crear bloques se esté centralizando en aquellos que emplean economías de escala para competir y que además estas entidades no tienen por qué tener muchos BTC's por lo que pueden no estar involucradas en el buen funcionamiento de la red. Este es el origen del uso de protocolos de consenso por prueba de participación. . Otra solución sería usar algoritmos por prueba de trabajo resistentes a tecnologías ASIC por ejemplo basándose en gastar recursos de almacenamiento en lugar de en recursos de CPU.
    Despilfarro de recursos en la minería: La cantidad de trabajo computacional que hoy día se gasta en el proceso de minería es extraordinario. Se critica del algoritmo de consenso de Bitcoin que todo ese trabajo que se realiza no se malgaste inútilmente reintentando hasta conseguir un valor hash con ciertas propiedades. Se podría aprovechar los cálculos para obtener algún beneficio para la sociedad. Se diría que tendríamos un algoritmo de prueba de trabajo útil (en inglés proof of useful work). Por ejemplo el algoritmo de consenso de Primecoin (buscan primos con ciertas características) y de Permacoin (basado en almacenamiento distribuido de información).

Rendimiento computacional de la minería

Dificultad relativa de minería, Nota  la escala es logarítmica.

Las estrategias para la extracción (en inglés, mining) de bitcoines se han ido perfeccionando progresivamente. En los primeros meses de funcionamiento de la red era posible extraer en solitario con una CPU estándar y obtener un bloque y sus  BTC asociados con una frecuencia relativamente alta. Posteriormente, la aparición de software de minería adaptado a tarjetas gráficas, mucho más eficiente, desplazó completamente a las CPUs. La minería por GPUs se fue profesionalizando, con grandes instalaciones en países con energía barata, configuraciones personalizadas con uso generalizado de overclocking y sistemas especiales de refrigeración. Con el aumento sostenido de la dificultad, los mineros comenzaron a organizarse en grupos independientes (en inglés, pools) para extraer de manera colectiva,45 desplazando así a los mineros en solitario que podían tardar meses o incluso años en encontrar un bloque de manera individual. El propietario del pool se lleva una comisión por encontrar un bloque. Los pools también compiten entre ellos para intentar atraer al mayor número de mineros.

Durante el año 2013 se inició la distribución de FPGAs y ASICs para extraer bitcoines de manera más eficiente. Si con la minería con CPUs y tarjetas gráficas, el coste de explotación provenía fundamentalmente del gasto energético, la comercialización de equipos especializados de bajo consumo está desplazando las inversiones de los mineros hacia hardware más sofisticado, e indirectamente hacia la investigación necesaria para el desarrollo de estos productos.

En enero de 2016, la dificultad alcanzó por primera vez el valor de 100 000 millones, superando también por primera vez una potencia de procesamiento de 1 exa-hash por segundo 48 (1 000 000 000 000 000 000 de hashes por segundo).

Entre enero de 2010 y febrero de 2016 la potencia de procesamiento se ha multiplicado por 150 000 millones.

Bitcoin Trading & Brokers

Si lo deseas donarme un tip,  esta es mi Bitcoin address:

 1GnewnbBPRe38SzySo32amxiq2pj8SBmsq



Conoce mas acerca del Bitcoin 

jueves, 15 de diciembre de 2016

Tablas de Verdad

Leyes lógicas

Leyes de Identidad
p v F ≡ p
p ^ F ≡ F
p v V ≡ V
p ^ V ≡ p

Leyes de Complementación
p v ~p ≡ V
p ^ ~p ≡ F
Leyes de Idempotencia
p v p ≡ p
p ^ p ≡ p
Leyes Conmutativas
p v q ≡ q v p
p ^ q ≡ q ^ p
Leyes Asociativas
p v (q v r) ≡ (p v q) v r
p ^ (q ^ r) ≡ (p ^ q) ^ r
Leyes Distributivas
p v (q ^ r) ≡ (p v q) ^ (p v r)
p ^ (q v r) ≡ (p ^ q) v (p ^ r)
Leyes de Morgan
~ (p v q) ≡ ~ p v ~ q
~ (p ^ q) ≡ ~ p ^ ~ q
Ley de Involución
~ ~ p ≡ p
Leyes de Absorción
p v (p ^ q) ≡ p
p ^ (p v q) ≡ p
Equivalencias del condicional
  • p --> q ≡ ~ p v q
  • p --> F ≡ ~p
  • V--> q ≡ q
  • p --> V ≡ V
  • F --> q ≡ V
  • p --> p ≡ V
  • ~p --> p ≡ p
  • p --> ~ p ≡ ~ p
  • (p ^ q) --> r ≡ (p --> r) v (q --> r)
  • (p v q) --> r ≡ (p --> r) ^ (q --> r)
  • p --> (q ^ r) ≡ (p --> q) ^ (p --> r)
  • p --> (q v r) ≡ (p --> q) v (p --> r)
Equivalencias del Bicondicional
  • p <--> q ≡ (p --> q) ^ (q --> p)
  • p <--> V ≡ p
  • p <--> F ≡ ~ p
  • p <--> p ≡ V
  • p <--> ~ p ≡ F
  • ~ (p <--> q) ≡ ~ p <--> q
  • ~ (p <--> q) ≡ p <--> ~ q 

Conectivos

Conector Operación Significado
~ Negación No es cierto
^ Conjunción Y
v Disyunción Ó
--> Implicación Si..Entonces..
<--> Doble implicación ..Si y solo si..
v
-
Disyunción exclusiva O..o..

Tablas de la verdad

Negación
p ~p
V F
F V

Conjunción
p q p^q
V V V
V F F
F V F
F F F

Disyunción
p q pvq
V V V
V F V
F V V
F F F

Implicación
p q p-->q
V V V
V F F
F V V
F F V

Doble implicación
p q p<-->q
V V V
V F F
F V F
F F V

Disyunción exclusiva
p q p v
_
q
V V V
V F F
F V F
F F V


Demostrar: [(~p v q) ^ ~(p ^ q)] --> r ≡ p v r

[(~p v q) ^ ~(p ^ q)] --> r ≡ p v r Ley Condicional
~ [(~p v q) ^ ~(p ^ q)] v r ≡ p v r Ley de Morgan
~ [(~p v q) ^ (~p v ~ q)] v r ≡ p v r Ley de Morgan
[~ (~p v q) v ~ (~p v ~ q)] v r ≡ p v r Ley de Morgan y Involución
[ (p ^~q) v (p ^ q)] v r ≡ p v r Ley Distributiva
[ p ^ (~q v q)] v r ≡ p v r Ley de Complementación
[ p ^ V] v r ≡ p v r Ley de Identidad
p v r ≡ p v r



Make this truth table for P v (Q & R) <-> (P v Q) & (P v R)

|P|Q|R|~Q|Q&R|Pv(Q&R)|PvQ|PvR|(PvQ)&(PvR)|Pv(Q&R)<->(PvQ)&(PvR)|
|T|T|T| F| T |  T    | T | T |     T     |        T            |
|T|T|F| F| F |  T    | T | T |     T     |        T            |
|T|F|T| T| F |  T    | T | T |     T     |        T            |
|T|F|F| T| F |  T    | T | T |     T     |        T            |
|F|T|T| F| T |  T    | T | T |     T     |        T            |
|F|T|F| F| F |  F    | T | F |     F     |        T            |
|F|F|T| T| F |  F    | F | T |     F     |        T            |
|F|F|F| T| F |  F    | F | F |     F     |        T            |

The proposition is proved because there are only T's in the last 
column.

Therefore we can replace the biconditional symbol <->, by the
stronger equivalence symbol <=> and write

P v (Q & R) <=> (P v Q) & (P v R)
 
 
 


Enlace Ejercicios de Lógica

Ejercicios de Lógica

Soluciones Examenes

Symbolic Logic Richmond H. Thomasson 



miércoles, 14 de diciembre de 2016

Modelo OSI de Red

Modelo OSI

Pila de capas o niveles del modelo de redes OSI (Open System Interconnection).

El modelo de interconexión de sistemas abiertos (ISO/IEC 7498-1), más conocido como “modelo OSI”, (en inglés, Open System Interconnection) es un modelo de referencia para los protocolos de la red de arquitectura en capas, creado en el año 1980 por la Organización Internacional de Normalización (ISO, International Organization for Standardization). Se ha publicado desde 1983 por la Unión Internacional de Telecomunicaciones (UIT) y, desde 1984, la Organización Internacional de Normalización (ISO) también lo publicó con estándar. Su desarrollo comenzó en 1977.


Modelo de 7 capas.


El problema de trasladar información entre computadores se divide en siete problemas más pequeños y de tratamiento más simple en el modelo de referencia OSI. Cada uno de los siete problemas más pequeños está representado por su propia capa en el modelo. Las siete capas del modelo de referencia OSI son:

Capa 7: La capa de aplicación  
Capa 6: La capa de presentación  
Capa 5: La capa de sesión
Capa 4: La capa de transporte
Capa 3: La capa de red
Capa 2: La capa de enlace de datos
Capa 1: La capa física

Durante el transcurso de este semestre veremos las capas, comenzando por la Capa 1 y estudiando el modeloOSI capa por capa. Al estudiar una por una las capas del modelo de referencia OSI, comprenderá de qué manera los paquetes de datos viajan a través de una red y qué dispositivos operan en cada capa a medida que los paquetes de datos las atraviesan. Como resultado, comprenderá cómo diagnosticar las fallas cuando se presenten problemas de red, especialmente durante el flujo de paquetes de datos.






Arquitectura Cliente Servidor


La arquitectura cliente-servidor es un modelo de aplicación distribuida en el que las tareas se reparten entre los proveedores de recursos o servicios, llamados servidores, y los demandantes, llamados clientes. Un cliente realiza peticiones a otro programa, el servidor, quien le da respuesta. Esta idea también se puede aplicar a programas que se ejecutan sobre una sola computadora, aunque es más ventajosa en un sistema operativo multiusuario distribuido a través de una red de computadoras.

Algunos ejemplos de aplicaciones computacionales que usen el modelo cliente-servidor son el Correo electrónico, un Servidor de impresión y la World Wide Web


En esta arquitectura la capacidad de proceso está repartida entre los clientes y los servidores, aunque son más importantes las ventajas de tipo organizativo debidas a la centralización de la gestión de la información y la separación de responsabilidades, lo que facilita y clarifica el diseño del sistema.

La separación entre cliente y servidor es una separación de tipo lógico, donde el servidor no se ejecuta necesariamente sobre una sola máquina ni es necesariamente un sólo programa. Los tipos específicos de servidores incluyen los servidores web, los servidores de archivo, los servidores del correo, etc. Mientras que sus propósitos varían de unos servicios a otros, la arquitectura básica seguirá siendo la misma.

Una disposición muy común son los sistemas multicapa en los que el servidor se descompone en diferentes programas que pueden ser ejecutados por diferentes computadoras aumentando así el grado de distribución del sistema.

La red cliente-servidor es una red de comunicaciones en la cual los clientes están conectados a un servidor, en el que se centralizan los diversos recursos y aplicaciones con que se cuenta; y que los pone a disposición de los clientes cada vez que estos son solicitados. Esto significa que todas las gestiones que se realizan se concentran en el servidor, de manera que en él se disponen los requerimientos provenientes de los clientes que tienen prioridad, los archivos que son de uso público y los que son de uso restringido, los archivos que son de sólo lectura y los que, por el contrario, pueden ser modificados, etc. Este tipo de red puede utilizarse conjuntamente en caso de que se esté utilizando en una red mixta.


El lenguaje de programación Pascal

Lenguaje de Programación Pascal, llamado así en honor del matemático y filósofo francés BlaisePascal.
El Lenguaje Pascal es un lenguaje strongly typed.


  Breve historia del lenguaje Pascal


    El lenguaje de programación Pascal es un lenguaje de alto nivel y propósito general (aplicable a una gran cantidad de aplicaciones diversas) desarrollado por el profesor suizo Niklaus Wirth (Instituto Tecnológico de Zurich, Suiza). El propósito de Wirth era crear un lenguaje para la enseñanza de técnicas de programación a estudiantes universitarios. Pero a medida que pasaban los años, Pascal se iba convirtiendo en un estándar en el mundo de la programación.

    Una versión preliminar del lenguaje apareció en 1968 y el primer compilador totalmente completo apareció a finales de 1970. Desde entonces, muchos compiladores han sido construídos y están disponibles para diferentes máquinas. Durante muchos años, el libro Pascal User Manual and Report , publicado por Wirth y Kathleen Jensen en 1974, ha servido de facto como estándar de todas las versiones.

    Las diferentes versiones ofrecían iterpretaciones ligeramente diferentes que impedían la compatibilidad entre ellas. Por estas razones, diferentes proyectos se iniciaron para producir una definición estándar del lenguaje y culminaron en dos estándar: uno de la Internacional Standard Organization (ISO) en 1982 y otro por un comité conjunto del American National Standards Institute (ANSI) y del Institute of Electrical and Electronics Engineers (IEEE). Estas dos versiones o definiciones se conocen como ISO Pascal y ANSI/IEEE Pascal, y difieren en algunos aspectos no especialmente significativos. Sin embargo, una versión no estándar se ha popularizado considerablemente: Turbo Pascal (marca registrada por Borland International, Inc.). Esta versión ha contribuido en gran medida a la popularización del lenguaje Pascal.



    PASCAL es un lenguaje relativamente moderno, desarrollado por Niklaus Wirth
( Turing award 1984 ) y su grupo de Zurich en 1971. Se trata de un lenguaje de propósito general, esto quiere decir que se puede emplear para construir todo tipo de aplicaciones. En la práctica también quiere decir que se trata de un lenguaje no diseñado para desarrollar ningún tipo específico de aplicaciones. Pero el PASCAL es especialmente útil para algo: para la enseñanza de buenos modos de programación. El PASCAL es hoy en día el lenguaje más usado para la enseñanza de la programación por varios motivos:



    - Posee unas reglas sencillas de sintaxis.



    - Es un lenguaje muy estructurado.



    - Realiza una comprobación exhaustiva de tipos de datos




    El hecho de que tenga una estructuración muy marcada permite que los programas sean fáciles de leer e interpretar, y facilita la escritura de programas del modo que hoy en día se estima correcto.

    El compilador de PASCAL es relativamente sencillo de realizar, por lo que se ha extendido a muchos tipos de plataformas, desde los ordenadores personales a los grandes ordenadores corporativos. Cuando una aplicación se escribe en PASCAL estandard puede compilarse en cualquier máquina en la que exista compilador de PASCAL, que son la mayoría.

Programa HelloWord en lenguaje Pascal


Program HeloWord(Input,Output);
Begin
 Writeln("Hello World!!!!!!!!");
End.





LISP: Manipulación de Listas

Especificado originalmente en 1958 por John McCarthy y sus colaboradores en el Instituto Tecnológico de Massachusetts, el Lisp es el segundo más viejo lenguaje de programación de alto nivel de extenso uso hoy en día; solamente el FORTRAN es más viejo.

Al igual que el FORTRAN, el Lisp ha cambiado mucho desde sus comienzos, y han existido un gran número de dialectos en su historia. Hoy, los dialectos Lisp de propósito general más ampliamente conocidos son el Common Lisp y el Scheme.

El Lisp fue creado originalmente como una notación matemática práctica para los programas de computadora, basada en el cálculo lambda de Alonzo Church. Se convirtió rápidamente en el lenguaje de programación favorito en la investigación de la inteligencia artificial (AI). Como uno de los primeros lenguajes de programación, el Lisp fue pionero en muchas ideas en ciencias de la computación, incluyendo las estructuras de datos de árbol, el manejo de almacenamiento automático, tipos dinámicos, y el compilador auto contenido.

El nombre LISP deriva del "LISt Processing" (Procesamiento de LIStas). Las listas encadenadas son una de las estructuras de datos importantes del Lisp, y el código fuente del Lisp en sí mismo está compuesto de listas. Como resultado, los programas de Lisp pueden manipular el código fuente como una estructura de datos, dando lugar a los macro sistemas que permiten a los programadores crear una nueva sintaxis de lenguajes de programación de dominio específico empotrados en el Lisp.

La intercambiabilidad del código y los datos también da a Lisp su instantáneamente reconocible sintaxis. Todo el código del programa es escrito como expresiones S, o listas entre paréntesis. Una llamada de función o una forma sintáctica es escrita como una lista, con la función o el nombre del operador en primer lugar, y los argumentos a continuación; por ejemplo, una función f que toma tres argumentos puede ser llamada usando (f x y z)


El Cálculo lambda


El cálculo lambda es un sistema formal diseñado para investigar la definición de función, la noción de aplicación de funciones y la recursión. Fue introducido por Alonzo Church y Stephen Kleene en la década de 1930; Church usó el cálculo lambda en 1936 para resolver el Entscheidungsproblem. Puede ser usado para definir de manera limpia y precisa qué es una "función computable". El interrogante de si dos expresiones del cálculo lambda son equivalentes no puede ser resuelto por un algoritmo general. Esta fue la primera pregunta, incluso antes que el problema de la parada, cuya indecidibilidad fue probada. El cálculo lambda tiene una gran influencia sobre los lenguajes funcionales, como Lisp, ML y Haskell.

Se puede considerar al cálculo lambda como el lenguaje universal de programación más pequeño. Consiste en una regla de transformación simple (sustitución de variables) y un esquema simple para definir funciones.

El cálculo lambda es universal porque cualquier función computable puede ser expresada y evaluada a través de él. Por lo tanto, es equivalente a las máquinas de Turing. Sin embargo, el cálculo lambda no hace énfasis en el uso de reglas de transformación y no considera las máquinas reales que pueden implementarlo. Se trata de una propuesta más cercana al software que al hardware.

Este artículo se enfocará sobre el cálculo lambda sin tipos, como fue diseñado originalmente por Church.




El lenguaje de programación C

 
Historia del Lenguaje C .



C es un lenguaje de programación creado en 1972 por Dennis M. Ritchie en los Laboratorios Bell como evolución del anterior lenguaje B, a su vez basado en BCPL. Al igual que B, es un lenguaje orientado a la implementación de Sistemas Operativos, concretamente Unix. C es apreciado por la eficiencia del código que produce y es el lenguaje de programación más popular para crear software de sistemas, aunque también se utiliza para crear aplicaciones.

Se trata de un lenguaje débilmente tipificado ( weakly typed ) de medio nivel pero con muchas características de bajo nivel. Dispone de las estructuras típicas de los lenguajes de alto nivel pero, a su vez, dispone de construcciones del lenguaje que permiten un control a muy bajo nivel. Los compiladores suelen ofrecer extensiones al lenguaje que posibilitan mezclar código en ensamblador con código C o acceder directamente a memoria o dispositivos periféricos.

La primera estandarización del lenguaje C fue en ANSI, con el estándar X3.159-1989. El lenguaje que define este estándar fue conocido vulgarmente como ANSI C. Posteriormente, en 1990, fue ratificado como estándar ISO (ISO/IEC 9899:1990). La adopción de este estándar es muy amplia por lo que, si los programas creados lo siguen, el código es portátil entre plataformas y/o arquitecturas.



Filosofía

Uno de los objetivos de diseño del lenguaje C es que sólo sean necesarias unas pocas instrucciones en lenguaje máquina para traducir cada elemento del lenguaje, sin que haga falta un soporte intenso en tiempo de ejecución. Es muy posible escribir C a bajo nivel de abstracción; de hecho, C se usó como intermediario entre diferentes lenguajes.

En parte a causa de ser de relativamente bajo nivel y de tener un modesto conjunto de características, se pueden desarrollar compiladores de C fácilmente. En consecuencia, el lenguaje C está disponible en un amplio abanico de plataformas (seguramente más que cualquier otro lenguaje). Además, a pesar de su naturaleza de bajo nivel, el lenguaje se desarrolló para incentivar la programación independiente de la máquina. Un programa escrito cumpliendo los estándares e intentando que sea portátil puede compilarse en muchos computadores.

C se desarrolló originalmente (conjuntamente con el sistema operativo Unix, con el que ha estado asociado mucho tiempo) por programadores para programadores. Sin embargo, ha alcanzado una popularidad enorme, y se ha usado en contextos muy alejados de la programación de sistemas, para la que se diseñó originalmente.
Historia

El desarrollo inicial de C se llevó a cabo en los Laboratorios Bell de AT&T entre 1969 y 1973; según Ritchie, el periodo más creativo tuvo lugar en 1972. Se le dio el nombre "C" porque muchas de sus características fueron tomadas de un lenguaje anterior llamado "B".

Hay muchas leyendas acerca del origen de C y el Sistema de Operación con el que está íntimamente relacionado, Unix. Algunas de ellas son:

El desarrollo de C fue el resultado del deseo de los programadores de jugar con Space Travel. Habían estado jugando en el mainframe de su compañía, pero debido a su poca capacidad de proceso y al tener que soportar 100 usuarios, Thompson y Ritchie no tenían suficiente control sobre la nave para evitar colisiones con los asteroides.

Por ese motivo decidieron portar el juego a un PDP-7 de la oficina que no se utilizaba; pero esa máquina no tenía sistema operativo, así que decidieron escribir uno. Finalmente decidieron portar el sistema operativo del PDP-11 que había en su oficina, pero era muy costoso, pues todo el código estaba escrito en lenguaje ensamblador.

Entonces decidieron usar un lenguaje de alto nivel y portátil para que el sistema operativo se pudiera portar fácilmente de un ordenador a otro. Consideraron usar B, pero carecía de las funcionalidades necesarias para aprovechar algunas características avanzadas del PDP-11. Entonces empezaron a crear un nuevo lenguaje, C.

La justificación para obtener el ordenador original que se usó para desarrollar Unix fue crear un sistema que automatizase el archivo de patentes. La versión original de Unix se desarrolló en lenguaje ensamblador. Más tarde, el lenguaje C se desarrolló para poder reescribir el sistema operativo.

En 1973, el lenguaje C se había vuelto tan potente que la mayor parte del kernel Unix, originalmente escrito en el lenguaje ensamblador PDP-11/20, fue reescrita en C. Éste fue uno de los primeros núcleos de sistema operativo implementados en un lenguaje distinto al ensamblador. (Algunos casos anteriores son el sistema Multics, escrito en PL/I, y Master Control Program para el B5000 de Burroughs, escrito en ALGOL en 1961).




El C de Kernighan y Ritchie

En 1978, Ritchie y Brian Kernighan publicaron la primera edición de El lenguaje de programación C, también conocido como La biblia de C. Este libro fue durante años la especificación informal del lenguaje. El lenguaje descrito en este libro recibe habitualmente el nombre de "el C de Kernighan y Ritchie" o simplemente "K&R C" (La segunda edición del libro cubre el estándar ANSI C, descrito más abajo.)

Kernighan y Ritchie introdujeron las siguientes características al lenguaje:

    El tipo de datos struct.
    El tipo de datos long int.
    El tipo de datos unsigned int.
    Los operadores (=+ y =-) fueron sustituidos por (+= y -=) para eliminar la ambigüedad sintáctica de expresiones como (i=-10), que se podría interpretar bien como (i =- 10) o bien como (i = -10).

El C de Kernighan y Ritchie es el subconjunto más básico del lenguaje que un compilador debe de soportar. Durante muchos años, incluso tras la introducción del ANSI C, fue considerado "el mínimo común denominador" en el que los programadores debían programar cuando deseaban que sus programas fueran transportables, pues no todos los compiladores soportaban completamente ANSI, y el código razonablemente bien escrito en K&R C es también código ANSI C válido.

En estas primeras versiones de C, las únicas funciones que necesitaban ser declaradas si se usaban antes de la definición de la función eran las que retornaban valores no enteros. Es decir, se presuponía que una función que se usaba sin declaración previa (prototipo) devolvería un entero.
Variantes

Desde el inicio del lenguaje han surgido varias ramas de evolución que han generado varios lenguajes:

    Objective-C es un primer intento de proporcionar soporte para la programación orientada a objetos en C, de escasa difusión, pero actualmente usado en Mac OS X y GNUstep.
    C++ (pronunciado C Plus Plus) diseñado por Bjarne Stroustrup fue el segundo intento de proporcionar orientación a objetos a C y es la variante más difundida y aceptada. Esta versión combina la flexibilidad y el acceso de bajo nivel de C con las características de la programación orientada a objetos como abstracción, encapsulación y ocultación.

También se han creado numerosos lenguajes inspirados en la sintaxis de C, pero que no son compatibles con él:

    Java, que une una sintaxis inspirada en la del C++ con una orientación a objetos más similar a la de Smalltalk y Objective C.
    JavaScript, un lenguaje de scripting creado en Netscape e inspirado en la sintaxis de Java diseñado para dar a las páginas web mayor interactividad. A la versión estandarizada se la conoce como ECMAScript.
    C# (pronunciado C Sharp) es un lenguaje desarrollado por Microsoft derivado de C/C++ y Java.



El programa HelloWord escrito en lenguaje C

 
 
#include <stdio.h>

int main()
{
        printf("Hola mundo");
        return 0;
}
 
 

Para descargar

 
El programa HelloWord pdf
 
Software Testing Tools 
 
Software Tools
 
The C Programming language Kernighan-Ritchie 
 
lenguaje C
 
The C programming Language 
 
SoftwareTools  Swap